写点什么

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

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

关注

评论

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

VMware vCenter Server 7.0U3v 下载 - 集中管理 vSphere 环境

sysin

esxi

HarmonyOS NEXT 中级开发笔记:基于ArkUI的减脂膳食应用界面实践

chengxujianke

HarmonyOS NEXT 中级开发笔记:ArkUI实现主题铃声应用

chengxujianke

Gemma 3n 新增音视频理解,可在手机运行;Gemini Live API 升级主动音视频,能记录关键事件和适时回应丨日报

声网

HarmonyOS NEXT 中级开发笔记:用ArkUI打造艺术展览类应用的实践

chengxujianke

HarmonyOS NEXT 中级开发笔记:ArkUI实现泊车助手UI布局

chengxujianke

HarmonyOS NEXT 中级开发笔记:ArkUI实现交通地图导航组件

chengxujianke

VMware ESXi 7.0U3v macOS Unlocker & OEM BIOS 2.7 标准版和厂商定制版

sysin

esxi

VMware vSphere 7.0 Update 3v 下载 - 数据中心虚拟化和云原生平台

sysin

esxi

HarmonyOS NEXT 中级开发笔记:ArkUI实现动态主题切换的艺术设计实践

chengxujianke

HarmonyOS NEXT 中级开发笔记:ArkUI实现外卖快递应用界面

chengxujianke

HarmonyOS NEXT 中级开发笔记:电器管家应用ArkTS实践

chengxujianke

HarmonyOS NEXT 中级开发笔记:马拉松赛事App的ArkUI实践

chengxujianke

Gemini 刚发布的「主动音频」和「主动视频」是什么?对谈 Project Astra 主管

声网

HarmonyOS NEXT 中级开发笔记:ArkUI实现电影票务应用界面

chengxujianke

HarmonyOS NEXT 中级开发笔记:ArkUI在汽车智驾类应用中的实践

chengxujianke

HarmonyOS NEXT 中级开发笔记:ArkUI实现棋类游戏界面交互

chengxujianke

HarmonyOS NEXT 中级开发笔记:ArkUI实现动态壁纸主题工具

chengxujianke

VMware ESXi 7.0U3v macOS Unlocker & OEM BIOS 2.7 集成网卡驱动和 NVMe 驱动 (集成驱动版)

sysin

esxi

HarmonyOS NEXT 中级开发笔记:ArkUI实现演唱会票务页面

chengxujianke

HarmonyOS NEXT 中级开发笔记:ArkUI在打车出行类应用的实践

chengxujianke

Arthas vmoption(查看和修改 JVM里诊断相关的option)

刘大猫

JVM 监控 Arthas 监控工具 vmoption

HarmonyOS NEXT 中级开发笔记:基于ArkUI的休闲棋盘游戏实现

chengxujianke

HarmonyOS NEXT 中级开发笔记:AI问答应用中的ArkUI实践

chengxujianke

什么是实时流数据?核心概念与应用场景解析

镜舟科技

数据采集 StarRocks 流批一体 OLAP 数据库 实时流数据

VMware ESXi 7.0 U3v 下载 - 领先的裸机 Hypervisor

sysin

esxi

HarmonyOS NEXT 中级开发笔记:基于ArkUI方舟开发框架的家庭菜谱应用实践

chengxujianke

HarmonyOS NEXT 中级开发笔记:电竞直播应用ArkUI实践

chengxujianke

HarmonyOS NEXT 中级开发笔记:ArkUI实现短剧播放器界面

chengxujianke

HarmonyOS NEXT 中级开发笔记:ArkUI实现智能家电控制界面

chengxujianke

Arthas jvm(查看当前JVM的信息)

刘大猫

人工智能 JVM 监控 Arthas 监控工具

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