最新发布《数智时代的AI人才粮仓模型解读白皮书(2024版)》,立即领取! 了解详情
写点什么

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:244898
用户头像

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

关注

评论

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

2020南京国际工业互联网及工业通讯展览会

InfoQ_caf7dbb9aa8a

领域模型的定义

Braisdom

Java 领域驱动设计 ObjectiveSql

架构师训练营1期 - 第一周 - 食堂就餐卡系统设计

三板斧

极客大学架构师训练营

优选2020第十三届南京国际智慧停车展览会

InfoQ_caf7dbb9aa8a

StringBuilder 比 String 快?空嘴白牙的,证据呢!

小傅哥

面试 小傅哥 string StringBuilder StringBuffer

zabbix 4.x一键部署脚本

edd

展览工厂2020南京国际人工智能产品展览会

InfoQ_caf7dbb9aa8a

英特尔揭示智能边缘重大机遇,助推产业智能变革

E科讯

【API进阶之路】做OCR文字识别,谁说必须要有AI工程师?

华为云开发者联盟

API 文字识别 OCR

一代巨星的陨落!

小齐本齐

程序员 程序人生 职场

亚洲2020第十三届南京国际智慧新零售暨无人售货展览会

InfoQ_caf7dbb9aa8a

Golang领域模型-依赖倒置

奔奔奔跑

架构 微服务 领域驱动设计 DDD Go 语言

成为技术领导者-读书笔记

edd

大咖布道丨证券行业规模化敏捷和核心能力演进

华为云开发者联盟

产品 证券 大咖

第一周学习总结

饺子

快讯2020第十三届南京国际智慧工地装备展览会

InfoQ_caf7dbb9aa8a

java安全编码指南之:堆污染Heap pollution

程序那些事

Java java安全编码 java安全编码指南 堆污染

食堂就餐卡系统设计

熊桂平

系统设计 极客大学架构师训练营 UML

Servlet 知识点

陈靓-哲露

简直人生外挂,直接涨薪20K,跪谢这份性能调优实战指南

小Q

Java MySQL 架构 JVM 性能调优

架构师技术栈

elfkingw

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

尹斌

极客大学架构师训练营

mysql union子句排序问题

LSJ

开发 SQL语法

整合Micrometer与Prometheus & ElasticSearch

李欢颜

第一周学习架构方法总结

三板斧

快讯2020第十三届南京国际大数据产业博览会

InfoQ_caf7dbb9aa8a

架构师训练营1期第1周:架构方法 - 作业

piercebn

极客大学架构师训练营

听说你想进腾讯总部?这项黑科技你值得拥有!

腾讯云音视频

音视频

实战中学习浏览器工作原理 — HTML 解析与 CSS 计算

三钻

CSS 大前端 浏览器

Vitalik Buterin: 协作的好坏两面

安比实验室SECBIT

区块链 博弈论 协作

非传统的“易观”,和他的技术驱动之路

易观大数据

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