论文部分内容阅读
随着软件系统规模的日益庞大和复杂性的不断增高,软件系统越来越难以理解和控制。近年来迅速发展的复杂网络理论为理解和控制大型软件系统提供了一个新的视角。研究表明,很多社会网络、生态网络、Internet、WWW等都具有明显的复杂网络特征,包括小世界现象,无标度现象等。通过将实际中的社会网络、生态网络等视为复杂网络,研究其结构特征,研究者们发现了很多这些网络的结构特征以及形成和演化的规律。这些研究对社会学、生物学、物理学的发展已经产生了一定的影响。
大型软件系统中也存在复杂网络现象。大型软件系统中存在大量不同粒度的单元,对这些软件单元以及它们之间的交互关系建模,由此形成的网络具有普遍的复杂网络现象。将复杂网络普遍具有的性质和规律应用于软件工程领域,从而研究软件系统的结构特征,可以更好地理解和控制软件系统。
本文研究了大型软件系统的网络模型,将复杂网络理论运用于软件度量与软件模块划分。主要工作如下:
(1)介绍复杂网络理论及其在软件中的应用。首先介绍网络的基本概念和特征,介绍几种基本的网络拓扑模型以及各种拓扑模型的性质,从而引出复杂网络的概念。然后介绍复杂网络的社团结构性质,社团结构是复杂网络最重要的结构特征,也是本文提出的新的软件模块划分方法的理论基础。综述社团结构划分算法的研究进展,并比较这些算法的性能和复杂度。
(2)提出一种新的基于复杂网络的大型软件系统结构分析方法。综述大型软件系统中复杂网络特征的研究现状,说明大型软件系统中复杂网络现象是普遍存在的。提出复杂网络结构与软件系统网络模型结构的四层对应关系,从而将将复杂网络的理论与软件系统有机地结合起来,可以更好地刻画和分析大型软件系统的结构特征。
(3)提出基于复杂网络的软件度量框架。介绍几种经典的软件度量模型。提出三层度量框架,即从元素级、模块级和网络级三个不同的层次研究软件系统的结构与性质。每层度量由网络的各种统计量构成。说明了这些度量值的计算方法。
(4)提出基于复杂网络的软件系统模块划分方法。概述软件系统模块划分在软件工程各领域中的应用,介绍了软件系统模块划分的研究进展。分析软件系统的结构,将复杂网络社团结构理论运用于软件系统模块划分,并考虑到软件系统规模大小的不同,实现三种不同的划分方法。对划分模块结构后的网络进行结点分类,从整体与个体两方面考察网络的结构特征。
(5)用工具JPAC对JDK系统进行试验和分析。定义符合Java语言的网络结构JSCG,开发了基于复杂网络的大型Java程序分析工具JPAC。介绍了JPAC的各模块和功能。以JDK的五个不同版本为例,分析大型软件系统中的复杂网络特征。发现JDK的五个版本的JSCG都是复杂网络,从而可从复杂网络的角度考察其结构特征。分析了JDK系统的三层度量,对JDK系统不同粒度的包用不同算法进行模块划分,并比较划分后的模块度与原模块度的不同。实验结果显示了JDK系统的元素级、模块级、网络级等不同层次的结构特征,说明了基于复杂网络的软件系统模块划分方法的可行性与优越性,验证了基于复杂网络的软件系统结构分析方法的有效性。