2020 Google开发者大会重磅开幕 了解详情

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

2008 年 2 月 20 日

优良架构的一个重要特点就是通过组件分层使模块间的依赖流畅贯穿于整个架构。如何描述和维护组件间的依赖是一个常见却又很难解决的工作。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 年 2 月 20 日 00:24 3043
用户头像

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

关注

评论

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

2 期架构师训练营 - 第二周学习总结

Vicente

架构师训练营第 2 期

6.4Zookeeper与分布一致性架构

张荣召

6.6Doris分析案例(一): NoSQL案例

张荣召

week2- 作业二,学习总结-框架设计

极客大学 - 架构师训练营第一期 - 第六周作业

Black Eyed Peter

架构师训练营第一期

架構師訓練營第 1 期 - 第 06 周作業

Panda

架構師訓練營第 1 期

第六周总结

orchid9

架构师训练营第六周学习笔记

一马行千里

学习笔记 架构师训练营第 1 期

架构师训练营 1 期 - week06 - 总结

lucian

架构师训练营第 1 期

6.5搜索引擎的基本架构

张荣召

架构师训练营 第六周作业

haha

架构师一期

第二周学习总结

刘洋

架构师训练营第 2 期

Ubuntu常见问题解决方案与使用技巧

jiangling500

ubuntu

6.8Doris分析案例(三):扩容伸缩设计

张荣召

第二周作业-学习总结

jingx

简述CAP原理

orchid9

架构第六周总结

Geek_Gu

Week 2 :框架设计(学习总结)

shuyaxx

Here I come

Dreamer

架构设计-学习总结笔记

Xuenqlve

架构师训练营第一期 - 第六周课后作业

卖猪肉的大叔

「架构师训练营第 1 期」

架构师训练营1期-week06-作业

lucian

架构师训练营第 1 期

架构师训练营第一期 - 第六周学习总结

卖猪肉的大叔

「架构师训练营第 1 期」

6.7Doris分析案例(二):高可用和集群扩容设计

张荣召

11/1-第二周-总结

mk

心得

第六周学习心得

熊桂平

架构师训练营第 1 期

学习笔记--week06

张荣召

架构师训练营第一期 - week6

习习

架構師訓練營第 1 期 - 第 06 周總結

Panda

架構師訓練營第 1 期

6.3CAP原理与NoSQL数据库架构

张荣召

第二周课后练习

刘洋

架构师训练营第 2 期

微服务治理平台化探索

微服务治理平台化探索

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