有人可以向我展示一个好的依赖矩阵是什么样子并说明原因吗?

发布于 2024-09-15 04:18:06 字数 62 浏览 8 评论 0原文

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

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

I would like to start using DSM, but not sure how to get started.

What does a good dependency matrix look like and why? How does it work?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

嗼ふ静 2024-09-22 04:18:06

在这篇博文中毫不费力地识别代码结构模式 解释了如何使用依赖结构矩阵来识别代码结构模式。屏幕截图是使用 NDepend 工具的依赖结构矩阵完成的。以下是一些模式:

分层代码(没有循环的代码,当然是 DSM 可以一目了然地向您展示的最酷的东西)
alt text

具有依赖循环的代码
alt text

高内聚/低耦合
alt text

饥饿的来电
alt text

热门被呼叫者
alt text

相互耦合
alt text

数据对象
替代文字

On this blog post Identify Code Structure Patterns with No Effort it is explained how to use a Dependency Structure Matrix to identify Code Structure Patterns. The screenshots are done with the Dependency Structure Matrix of the tool NDepend. Here are a few patterns:

Layered code (code with no cycle, certainly the coolest thing that a DSM can show you at a glance)
alt text

Code with dependency cycles
alt text

High Cohesion / Low-Coupling
alt text

Hungry Caller
alt text

Popular Callee
alt text

Mutual Coupling
alt text

Data Object
alt text

朕就是辣么酷 2024-09-22 04:18:06

Erik Dörnenburg 给出了我见过的最好的描述,包括一些图表的排列如何揭示结构问题的好例子。简而言之:

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

Erik Dörnenburg gives the best description I've seen, including some good examples of how arrangements of the graph can expose structural issues. Briefly:

  • as others have mentioned, anything above the diagonal indicates a cycle, which essentially means that your boundaries are "fuzzy" (not clean)
  • smallish squares (well, lower triangles) along the diagonal == good, if the components are grouped according to hierarchy
  • on the other hand, heavily weighted rows or columns == possible issues: either
    • rows: you have a component/group that lots of others depend on (maybe it's trying to serve too many features), or
    • columns: you have a component/group that depends on lots of others (maybe it's trying to take care of everything itself, instead of delegating)
月牙弯弯 2024-09-22 04:18:06

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

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

不过我手边没有一个。对不起。

List the subsystems on the X and Y axis in the same order.
Mark an "O" diagonally. Subsystems depending on themselves doesn't
make much sense. Go vertically down the matrix. If that subsystem
depends on the matching horizontal subsystem, mark an X.

A good one rearranges the subsystems to show patterns that might
lead to a good refactoring.

I don't have one handy, though. Sorry.

月下客 2024-09-22 04:18:06

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

One of the most valuable feature of a DSM is to detect cycles, for example between projects or packages. A cycle is displayed in the top-right side of the matrix.
See this page for more details : http://docs.codehaus.org/display/SONAR/Dependency+Structure+Matrix

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文