《软件架构理论与实践》 —3.2 软件架构的可视化建模方法

举报
华章计算机 发表于 2019/12/18 12:29:20 2019/12/18
【摘要】 本节书摘来自华章计算机《软件架构理论与实践》一书中第3章,第3.2.1节,作者是李必信 廖力 王璐璐 孔祥龙 周颖。

3.2 软件架构的可视化建模方法

3.2.1 基于图形可视化的建模方法

图形可视化是将软件架构按照图形的方式进行表达,强调便于利益相关者阅读、理解和交流,使之不会因图形过于复杂而难以把握软件架构的概况。

图形可视化方法可分为两类:正式图形表示和非正式图形表示。后者包括盒线图(Box-Line Diagram)、PowerPoint风格图形等,不具有严格的标准,较为随意,有一定的方便交流的作用。而正式图形表示需要有严格定义的结构,下面我们就从架构的三个基本要素(层次结构、组件关系和特性)来简单阐述软件架构的各种正式图形表示。

树形结构:树形结构是显示层次性软件架构的理想方式,简单易行。如图3-1所示的节点连接(node-link)表示。但是这种结构难以处理复杂的问题,鉴于当今软件的复杂层次关系,需要更完善的模型[4]。

image.png

树地图(TreeMap):这种结构是由Johnson和Schneiderman提出的[5],是展示整个软件层次架构的有效方法。这种技术的实质是一种空间填充方法,将层次信息作为嵌套的矩形集合显示。通常使用的是“花砖算法”(tiling algorithm),即对于每个层次,将相应的大盒子(box)分割为数个小盒子,这样迭代地进行水平和垂直分割,直至结束。在架构可视化方面,底层盒子往往用于表示方法,而组合盒子往往用于表示类。

改进的树地图:在树地图的基础上,有数种改进的架构可视化模型。文献[7]引入非正则形状(如泰森多边形、Voronoi)来代替矩形,以支持更多信息的显示。文献[8]研究了树地图中矩形的染色问题,以提高其表达能力。针对树地图主要显示的是软件架构的末端信息问题,文献[9]提出了圆形树地图,使用环来实现架构可视化,但是空间利用率不高。

冰块图(Icicle Plot):冰块图中每一行代表树的一个层次,并且按照其子节点的数量进行分割[10]。冰块图有助于理解结构化的关系,如包可以用树根表示,而类和方法可以用树元素表示。但是对于大型系统的层次化架构,这种可视化技术的扩展性和导航性存在问题[8]。

旭日图(Sunburst):这种模型最初由Stasko和Zhang提出,他们使用一个圆形或径向显示(而非矩形显示)来描述层次结构[11]。在这种图中层次结构呈放射状地与根铺设在中心,而更深层次则一步步远离这个中心。

与树地图相反但是与冰块图类似的是,旭日图的设计具有较好的弹性:图中元素的角度和颜色。研究结果表明,旭日图与树地图相比更易学习且更令人舒适[12]。

双曲树(Hyperbolic Tree):在本质上,使用双曲空间比使用欧几里得空间有更多的显示空间,这种技术就称为双曲树显示。这种结构最初是在文献[13]中提出的,从本质上讲,它在双曲平面上列出了统一的层次结构,并将结构映射到欧几里得空间。由此产生的层次结构平铺在一个圆形的显示区域,可能会辅以焦点和上下文技术(如鱼眼变形[14])。

双曲树能够带来一个更大的表示中心或集中区域,同时依然能够显示树的整体结构。当图过于庞大而无法有效呈现时,图中的节点可以聚在一起,并能够通过扩展来显示子树的结构。

在学术界和工业界都有许多可用的工具,以迎合利益相关者的各种需求[15-28]。在工业界,供应商开发了很多软件架构可视化商业工具,如Lattix、Enterprise Architect、NDepend、Klockwork Architect、IBM Rational Architect、Bauhaus 等。在学术界,研究团体也开发了大量的工具,如SHriMP、BugCrawler、DiffArchViz等。商业工具通常旨在被直接使用,而研究工具都是开源的,允许用户定制。


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。