有人能告诉我一个好的依赖矩阵是什么样的,并说明原因吗?

时间:2010-08-20 23:31:02

标签: java matrix dependencies intellij-idea sonarqube

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

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

4 个答案:

答案 0 :(得分:11)

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

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

具有依赖性周期的代码
alt text

高内聚/低耦合


alt text

饥饿的来电者 alt text

受欢迎的Callee
alt text

相互耦合
alt text

数据对象
alt text

答案 1 :(得分:3)

Erik Dörnenburg gives the best description我见过,包括一些关于图表安排如何暴露结构性问题的好例子。简言之:

  • 正如其他人所提到的,对角线以上的任何东西都表示一个周期,这实质上意味着你的边界是“模糊的”(不干净)
  • 沿对角线的小方块(井,下三角形)==良好,如果组件按层次分组
  • 另一方面,重量级的行或列==可能的问题:要么
    • 行:你有一个很多其他人依赖的组件/组(也许它试图提供太多功能),或者
    • 专栏:你有一个依赖于很多其他人的组件/组(也许它试图自己处理所有事情,而不是委托)

答案 2 :(得分:1)

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

一个好的人重新安排子系统以显示可能的模式 导致良好的重构。

但是,我没有一个方便。遗憾。

答案 3 :(得分:1)

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