OceanBase 开发者大会来啦!一起围观数据库前沿趋势!报名戳 了解详情
写点什么

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

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

关注

评论

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

架构训练营——模块2作业

圆心角

模块3作业 3

dwade

#架构实战营

【架构实战营】第3模块作业

swordman

架构实战营

模块三作业 - 消息队列系统架构设计文档

青鸟飞鱼

架构实战营

架构师实战营 模块三作业(基于自研集群 + MySQL 存储的消息队列系统架构设计文档)

好吃不贵

业务架构

挖矿探索一:狗狗币-mac普通电脑

程序员架构进阶

比特币 区块链 28天写作 5月日更

读写锁

wzh

Java 并发编程 并发 JUC

【LeetCode】制作 m 束花所需的最少天数Java题解

Albert

算法 LeetCode 5月日更

ARTS - week 8 补打卡

steve_lee

架构实战营-模块3-作业

笑春风

消息队列详细设计架构文档

Hesher

架构 MQ Architecture 消息队列 架构实战营

霸气!这份清华学霸整理的Java线程池笔记,2小时从入门到入坟

飞飞JAva

Java

优秀程序员都在注意的十个点

好好学习,天天向上

Java 设计模式 代码 技巧

自研集群 + MySQL 存储详细架构文档

@oo?金樱子

applet跨域访问安全性问题(java.security.AccessControlException:access denied)

xcbeyond

跨域 5月日更 疑难杂症

假如只剩下canvas标签

执鸢者

大前端 canvas

架构训练营模块3作业《消息队列架构设计文档》-江哲

江哲

架构实战训练营 - 模块三课后作业

Johnny

架构实战营

Spark中将DAG划分为Stage核心算法

五分钟学大数据

spark 5月日更

一文看懂 Go 的数据类型

Rayjun

Go 语言

前端百题斩[001]——typeof和instanceof

执鸢者

面试 大前端

MySQL索引原理浅析

逸少

MySQL 索引结构 索引

架构实战营 模块三:学习总结

👈

架构实战营

Semaphore

wzh

Java 并发 java工具类

第三课作业

杰语

架构实战营模块三作业

冷大大

作业 架构实战营 模块三

初识Golang之err概述

Kylin

Go 语言 5月日更

自研集群+MySQL架构设计文档模板

9527

架构实战营

用组合式创新模型做产品建模

石云升

组合式创新 5月日更 产品建模

HBase与Hadoop的关系

大数据技术指南

HBase 5月日更

9个国外最佳免费编程学习一站式网站,谁用谁知道!

北游学Java

Java c++ php JavaScript

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