AICon 上海站|90%日程已就绪,解锁Al未来! 了解详情
写点什么

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

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

关注

评论

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

Nocode 进阶 | 迎接 Amazon Honeycode,敲开 NoCode 开发大门(上)

亚马逊云科技 (Amazon Web Services)

人工智能 大前端

架构训练营模块三作业

TIEDPAG

架构训练营 模块三

架构实战营 外包学生管理系统的架构文档

💤 ZZzz💤

架构实战营

面试官让手写队列,差点挂了

bigsai

记一次Linux安全提权总结

网络安全学海

Linux 网络安全 信息安全 渗透测试 WEB安全

GitHub上下载量突破100000+阿里巴巴的这份开源项目如此牛逼

Java 编程 架构 面试 计算机

🏆(不要错过!)【CI/CD技术专题】「Jenkins实战系列」(4)总结归纳Jenkins的安装使用和配置流程介绍

码界西柚

maven jenkins git 学习 9月日更

学生管理系统架构设计

一叶知秋

#架构实战营

计算机网络学习笔记 概述

Regan Yue

计算机网络 9月日更 计网

NoSQL-MongoDB

hanaper

18.理智分析--人类离威胁还相当遥远

Databri_AI

人工智能

2022高频前端面试题汇总之React篇

buchila11

React

Java字节码技术学习笔记

风翱

Java 9月日更

什么是数据驱动

奔向架构师

数据治理 9月日更

Go 编码习惯

baiyutang

Go 语言 9月日更

NoCode 实战 | 零代码开发:轻松打造会议计划系统!

亚马逊云科技 (Amazon Web Services)

html

NoCode 实战 | 想要开发在线选课系统?何必那样大费周章!

亚马逊云科技 (Amazon Web Services)

html html5

9 个前端性能优化的最佳实践

devpoint

CSS CDN 9月日更

在线JSON转typescript工具

入门小站

工具

深入了解现代web浏览器(第四部分)

GKNick

NoCode 实战 | 零代码应用开发,轻松搞定任务跟踪管理难题(下)

亚马逊云科技 (Amazon Web Services)

Java 人工智能

名震Java界!字节跳动内部顶级数据结构刷题学习笔记根本停不下来

Java 程序员 架构 面试 计算机

人工智能计算中心,助力数字经济发展的算力“虫洞”

脑极体

linux之read命令

入门小站

工具

GitHub上120K Stars!被誉为国内第一的Java多线程PDF到底有什么魅力?

Java GitHub 程序员 面试 计算机

国内独家首发版本!龙蜥操作系统(Anolis OS) 8.4 正式发行!

OpenAnolis小助手

Linux centos 开源 开源社区

如何提高开会效率?

石云升

项目管理 管理 引航计划 内容合集 9月日更

设定Docker容器日志的大小和轮询规则

耳东@Erdong

Docker log 9月日更

数字人民币,支付机构的机会在哪?

CECBC

跨语言编程的探索 | 龙蜥技术

OpenAnolis小助手

Java c++ 开源社区

序列化与反序列化之Protostuff(一)

程序员架构进阶

架构 protobuf 9月日更 序列化与反序列化 protostuff

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