写点什么

IntelliJ IDEA 的 DSM 工具使架构可视化

  • 2008-02-20
  • 本文字数:812 字

    阅读完需:约 3 分钟

优良架构的一个重要特点就是通过组件分层使模块间的依赖流畅贯穿于整个架构。如何描述和维护组件间的依赖是一个常见却又很难解决的工作。UML 包图(package diagram)提供了描述这种依赖的方法,但是创建包图往往很耗费时间,甚至在反向工程时,获得一个直观的设计也需要很长的时间。此外,UML 也不能有效地进行修正,用它来维护大型且复杂的系统的依赖图,投资回报率往往很小。

依赖结构矩阵(Dependency Structure Matrices, DSM ),这一较新技术的出现填补了这个空白。DSM 是一个矩阵,其中每行是一个模块,列则在另一维度上显示一组同样的模块。每个单元格表示两个模块之间的交集,以及它们之间依赖的数目。不需要任何更多的信息,一个人通过典型的例子就能迅速且直观地看到漂亮的DSM 可视化图。

分层系统的DSM

严格分层系统的DSM

匆匆一瞥之后我们接着来看,每行代表分层架构中的一个包。这些行依次从1 到5 进行编号。列也依次编号为1 至5,分别表示与行同样的模块。在严格分层系统中,application 只依赖于model(37 次),model 只依赖于domain,等等。在分层系统中,上层(比如application)可以依赖于其下任何一层(比如util)。有了这种可视化图,只要代码编写违反了规则,可视化图就会立即反映出来。任何出现在右上方的依赖都表明违反了架构的意图。

IntelliJ 已经在新版本“Magnificent 7”中引入了新的 DSM 工具。不用考虑代码基线(codebase)的分层,不用手动整理 UML 图,IntelliJ 会自动从一个已存在的工程生成 DSM。像其它 DSM 工具一样,IntelliJ 能自动调整节点,使依赖显示在左下方。DSM 是交互式的,可以下钻到类级别:

在这个例子中,IntelliJ 的 DSM 工具表明,ReferenceStrength 在架构中,被其下层使用了 4 次。将 DSM 工具集成到 IDE 中非常方便。IDEA 能非常容易地显示出代码基线中的 4 次引用,使问题容易地被修复。在这种情况下,可以使用 IntelliJ 的重构工具把 ReferenceStrength 移到一个更高层次的包中。

2008-02-20 00:245242
用户头像

发布了 151 篇内容, 共 62.2 次阅读, 收获喜欢 18 次。

关注

评论

发布
暂无评论
发现更多内容

香港Web3盛会:HTX Ventures投资经理Gigi Cho确认出席Hack .Summit() 2024!

TechubNews

#Web3

软件测试经验分享丨零基础转行做测试开发,入职3个月后涨薪30%

测试人

软件测试

知识图谱数据处理流程是什么

悦数图数据库

知识图谱

Flink ML 的新特性解析与应用

Apache Flink

大数据 实时计算 flink 实战

一文带你了解容器探针

华为云开发者联盟

Kubernetes 后端 开发 华为云 华为云开发者联盟

大数据了解一下

小齐写代码

听 GPT 讲 client-go 源代码 (14)

fliter

软件测试简历秀软技能:轻松吸引HR的注意!

测试人

软件测试

等保测评师工资怎么样?有前途吗?

行云管家

等保 等级保护 等保测评师

简历秀软技能:轻松吸引HR的注意!

测吧(北京)科技有限公司

测试

2024年漳州本地有正规等保测评机构吗?在哪里?

行云管家

等保 等保测评 等保测评机构 漳州

春节期间消费行业收入大涨:企业如何抓住私域运营优化机会?

Geek_2d6073

使用git克隆仓库报错:Warning: Permanently added‘github.com’ to the .....(ssh )

百度搜索:蓝易云

git Linux 运维 报错 云服务器

查看服务器/IIS日志、log、访问信息基本方法

百度搜索:蓝易云

Linux 运维 windows IIS 云服务器

CDN与云计算技术的结合:专业视角下的深度融合

天翼云开发者社区

云计算 CDN 内容分发网络

云数据库实现架构与设计的构想

天翼云开发者社区

数据库 云计算 云数据库

如何在简历中展示软技能,吸引HR关注

霍格沃兹测试开发学社

测试人生 | 零基础转行做测试开发,入职3个月后涨薪30%

测吧(北京)科技有限公司

测试

如何实现零基础转行做测试开发,入职3个月后涨薪30%

霍格沃兹测试开发学社

TDengine 签约福州城建,助力智慧水务数据管理革新!

TDengine

tdengine 时序数据库

除了代码行数、工时,我们还有什么更科学的方式度量研发工作量?

思码逸研发效能

听 GPT 讲 client-go 源代码 (13)

fliter

4个为数据程序员量身打造的PyCharm插件

伤感汤姆布利柏

【Ubuntu20.04】安装gcc11 g++11, Ubuntu18.04

百度搜索:蓝易云

Linux ubuntu 运维 gcc11 g++11

怎样利用 AI 大模型,辅助研发管理与效能提升?

思码逸研发效能

IntelliJ IDEA的DSM工具使架构可视化_架构_Michael Bushe_InfoQ精选文章