《软件架构理论与实践》 —3.2 软件架构的可视化建模方法
3.2 软件架构的可视化建模方法
3.2.1 基于图形可视化的建模方法
图形可视化是将软件架构按照图形的方式进行表达,强调便于利益相关者阅读、理解和交流,使之不会因图形过于复杂而难以把握软件架构的概况。
图形可视化方法可分为两类:正式图形表示和非正式图形表示。后者包括盒线图(Box-Line Diagram)、PowerPoint风格图形等,不具有严格的标准,较为随意,有一定的方便交流的作用。而正式图形表示需要有严格定义的结构,下面我们就从架构的三个基本要素(层次结构、组件关系和特性)来简单阐述软件架构的各种正式图形表示。
树形结构:树形结构是显示层次性软件架构的理想方式,简单易行。如图3-1所示的节点连接(node-link)表示。但是这种结构难以处理复杂的问题,鉴于当今软件的复杂层次关系,需要更完善的模型[4]。
树地图(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等。商业工具通常旨在被直接使用,而研究工具都是开源的,允许用户定制。
- 点赞
- 收藏
- 关注作者
评论(0)