软件代码可视化技术探讨
摘 要:软件的可视化关注于静态的可视化,同时也关注软件产品,例如:源代码、可执行程序,数据,以及它们的属性(大小,复杂性,依赖)的动画。软件的可视化技术广泛应用于软件维护,逆向软件工程,软件再工程领域,在这些领域大量的复杂数据需要被理解,大量软件之间复杂的交互需要被自动分析。软件可视化技术对程序开发人员和维护人员增强对软件的理解有很大的帮助。本文主要针对软件代码的可视化进行了探讨。
关键词:软件可视化 软件维护 软件度量
1.引言
软件的可视化可以定义为软件产品的一个映射,包括软件到一个图形化的描述。我们之所以需要软件可视化本身是因为软件是不可见的,虽然我们可以把软件代码的文档以及产品说明书等纯文本看成是软件可视化最原始的类型,虽然这些纯文本也可以帮助程序员理解软件以及软件的功能,但是,根据软件可视化的定义,如果我们不把纯文本看成是图形化的描述,那么纯文本并不属于软件的可视化。很多先进的图形可视化技术提高了人们对软件的理解,包括提升抽象程度,减少信息的浏览量和浏览空间。图形化的描绘是否优于纯文本的描绘很少得到经验的证明,寻找这些证明也是不现实的,因为这依赖于描绘的方法和描绘的领域。有些经验的研究表明对于某些任务,图形可视化优于文本可视化,然而在某些领域,文本可视化可能更可取一些。很多研究者确信软件可视化的价值,特别是在软件维护,逆向软件工程,软件再工程领域,软件可视化对于增强对软件复杂数据和复杂交互的理解起到了关键作用。
软件可视化存在很多研究领域和研究主题,这些主题包括:可视化的语言,算法的动画,隐喻的可视化,度量的可视化,自动图形生成,以及识别可视化数据中重复模式的技术以降低可视化的复杂性。这些方面都和一个特定的可视化技术相关。很多来自软件工程领域的工作者由于问题的驱动,他们希望找到一种合适的可视化技术来解决那些问题。特别是来自软件维护,逆向软件工程,软件再工程领域的工作者,软件可视化问题被视为他们工作领域的一个中心问题。
2.软件可视化内容
软件的可视化包含了丰富的内容,从软件的抽象程度来划分的话主要可以分为程序可视化,算法可视化,可视化程序设计,示范程序设计,计算可视化等。
(1)程序可视化:主要是指程序代码或数据结构的静态或动态特征的可视化,包括代码结构的可视化。
(2)算法可视化:主要是指对软件功能高层次抽象的可视化。工作流和数据流图是算法可视化的一个例子。
(3)可视程序设计:主要是指在构造程序时,利用可视化的技术对程序开发进行规范说明。
(4)示范程序设计:主要是指通过用户演示实例来实现软件的规范说明,让用户满意开发的软件产品。
(4)计算可视化:主要是优化多处理机体系结构上的负载均衡和性能。
3. 软件可视化的概念模型
这一部分将介绍Roman和Cox提出的软件可视化概念模型,Roman和Cox提出了以下软件可视化相关的角色和方面:
软件工程师:需要被可视化的软件产品的开发人员。
动画设计师:映射软件产品为一个图形化描述的人员。
用户:使用图形化描述的人员。
领域:什么产品以及哪些方面将被可视化?
抽象:什么样的信息通过可视化被转变?
方法:如何构建可视化?
图形化描述:如何使用图形化的描述来转换信息?
集成者:集成可视化的信息到一个统一的视图。
任务:用户使用可视化完成什么样的任务?
媒介:在哪里展现可视化的内容?
Bassil和Keller针对软件可视化进行了一次相似的调查,主要调查了已经存在的软件可视化工具的功能,实用性和认知的方面(成本,可携带性,文档的质量等等)。他们调查的主要目标是已经存在的软件可视化工具在软件产业的应用(三分之二的被调查者来自于工业界,三分之一的调查者来自于学术界,而且被评价的软件可视化工具大多数都是商业产品)。
Whitley针对可视语言的经验评价进行了文献的调查,并且找到了支持或是反对这些语言的证据。
4. 软件可视化为一个城市
面向对象是一种广泛使用的软件开发模式,面向对象的软件结构清晰,方便维护和扩展。有一种方法将软件系统描述为一个三维的城市,软件中的类代表城市中建筑物,软件中的包代表街区。可以从软件中抽取软件度量的集合映射到城市可视化的属性上:类中方法的数量映射为建筑物的高度,属性的数量映射为建筑物地基的大小,代码行的数量映射为建筑物的颜色(从暗灰色到亮绿色)。实证研究表明通过将软件可视化为一个城市增强了程序开发人员和维护人员对软件结构和度量特征的理解。
5.软件可视化为一个网络
面向对象的软件是一个复杂的,交互的,多粒度的人工系统,软件与软件之间,软件内部类之间,方法之间存在着相互的调用和依赖关系,我们可以基于不同的粒度将软件可视化为一个网络。例如:我们可以将软件中的每一个类看成一个节点,如果一个类调用了另外一个类,我们就在它们之间建立一条边,这样我们就构建了一个基于类粒度的软件网络。基于此,我们同样可以建立基于属性,方法和包粒度的软件网络,实证研究同样表明通过将软件可视化为一个网络增强了程序开发人员和维护人员对软件结构和行为的理解。
6.结束语
软件可视化是一个流行的程序理解技术,广泛应用于软件维护,逆向软件工程和软件的演化分析。尽管广泛存在各种软件可视化的方法,但是缺少经验的评价,这对于工业界和学术界接受软件可视化技术是不利的。本文简单介绍了两种软件代码可视化的方法,对理解软件的结构、行为和统计特征有一定的帮助。
参考文献:
.计算机科学, 1997, 41
上一篇:软件再工程的深层研究与应用