10

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

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

4

4 回答 4

11

在这篇博客文章《不费吹灰之力地识别代码结构模式》中,解释了如何使用依赖结构矩阵来识别代码结构模式。屏幕截图是使用工具 NDepend的依赖结构矩阵完成的。这里有一些模式:

分层代码(没有循环的代码,肯定是 DSM 可以一目了然的最酷的东西)
替代文字

具有依赖循环的代码
替代文字

高内聚/低耦合
替代文字

饥饿的来电者
替代文字

热门被叫方
替代文字

相互耦合
替代文字

数据对象
替代文字

于 2010-09-01T13:38:48.343 回答
3

Erik Dörnenburg 给出了我见过的最好的描述,包括一些很好的例子来说明图表的排列如何暴露结构问题。简要地:

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

按相同顺序列出 X 轴和 Y 轴上的子系统。对角标记一个“O”。依赖于自身的子系统没有多大意义。垂直向下走矩阵。如果该子系统依赖于匹配的水平子系统,则标记 X。

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

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

于 2010-08-20T23:44:29.843 回答
1

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

于 2010-08-21T09:48:05.697 回答