有人可以告诉我一个好的依赖矩阵是啥样的并说明原因吗?

Posted

技术标签:

【中文标题】有人可以告诉我一个好的依赖矩阵是啥样的并说明原因吗?【英文标题】:Can someone show me what a good dependency matrix looks like and specify why?有人可以告诉我一个好的依赖矩阵是什么样的并说明原因吗? 【发布时间】:2011-04-01 22:07:47 【问题描述】:

我想开始使用 DSM,但不知道如何开始。

一个好的依赖矩阵是什么样的,为什么?它是如何工作的?

【问题讨论】:

【参考方案1】:

在这篇博文Identify Code Structure Patterns with No Effort 中,解释了如何使用依赖结构矩阵来识别代码结构模式。截图是使用工具 NDepend 的Dependency Structure Matrix 完成的。以下是一些模式:

分层代码(没有循环的代码,绝对是 DSM 一眼就能看到的最酷的东西)

具有依赖循环的代码

高内聚/低耦合

饥饿的来电者

受欢迎的被叫者

相互耦合

数据对象

【讨论】:

这真的很有帮助。不幸的是,linked article 中的图像现在丢失了,并且在第一次 Wayback 捕获中已经丢失:web.archive.org/web/20110324091932/http://codebetter.com/… 我没有看到任何图像丢失,它们都在这里显示得很好? 嗨帕特里克,我指的是博客文章中丢失的图像:Identify Code Structure Patterns at a Glance。这里的图片没有提供完整的上下文,所以我希望从文章中找到更多信息。 另请参阅 Patrick 的新文章 blog.ndepend.com/…,其中包含许多相同的文本和图像,包括上面的一些图像。 (存档为web.archive.org/web/20191003234718/https://blog.ndepend.com/…)【参考方案2】:

Erik Dörnenburg gives the best description 我见过,包括一些很好的例子,说明图表的排列如何暴露结构问题。简要说明:

正如其他人所提到的,对角线上方的任何东西都表示一个循环,这基本上意味着您的边界是“模糊的”(不干净) 如果组件按层次结构分组,沿对角线的小正方形(嗯,下三角形)== 好 另一方面,加权重的行或列 == 可能的问题:要么 rows:您有一个许多其他人依赖的组件/组(可能它试图提供太多功能),或者 列:您有一个依赖于许多其他组件/组的组件/组(也许它试图自己处理所有事情,而不是委托)

【讨论】:

【参考方案3】:

以相同的顺序列出 X 轴和 Y 轴上的子系统。 对角标记一个“O”。依赖于自身的子系统不会 很有意义。垂直向下走矩阵。如果那个子系统 取决于匹配的水平子系统,标记一个X。

一个好的方法是重新排列子系统以显示可能的模式 导致良好的重构。

不过,我手边没有。对不起。

【讨论】:

【参考方案4】:

DSM 最有价值的功能之一是检测周期,例如项目或包之间的周期。一个循环显示在矩阵的右上角。 有关详细信息,请参阅此页面:http://docs.codehaus.org/display/SONAR/Dependency+Structure+Matrix

【讨论】:

以上是关于有人可以告诉我一个好的依赖矩阵是啥样的并说明原因吗?的主要内容,如果未能解决你的问题,请参考以下文章

这个 wcf 服务正在运行……那是啥样的绑定?哪个是默认绑定?有人解释吗?

它是啥样的 SQL? TODATE()、TOCHAR()、isdate 格式()

好的现代 c 代码是啥样的? [关闭]

addSubview 方法是啥样的?

Windows 进程的内存映射是啥样的?

Akinator 游戏背后的算法是啥样的?