论文部分内容阅读
随着软件产业的迅速发展,软件系统的功能和结构日益复杂,如何有效地理解复杂软件系统的结构,理解其在生命周期里的变化规律,成为人们进行软件开发、再工程、维护和重构时关注的一个关键问题。
近年来复杂网络得到很多研究学者的关注。研究发现,包括生物学、社会学、物理学等在内的很多领域的复杂系统均表现出了复杂网络的特征。复杂网络是一种新的系统科学理论,为复杂系统构建网络模型,并研究其拓扑结构特征及这些特征的形成机制,从而揭示复杂表象背后不复杂的、规律性的一面。
复杂网络也就为人们研究复杂软件系统提供了一个新的手段。本文分别从复杂网络结构和演化模型两个方面着手进行研究:通过为大规模软件系统构造网络模型来研究软件系统的拓扑结构特征;通过建立演化模型来模拟软件系统结构的演化过程。主要工作如下:
(1)综述了复杂网络的基本概念及其在软件系统中的研究进展。首先介绍了软件系统结构研究的现状,说明为什么要引入复杂网络。然后概述了目前复杂网络研究的三个方面,并分别举例说明。接着详细介绍了复杂网络的基本概念,这是本文研究内容的背景知识和理论基础。最后,结合复杂网络研究的三个方面,总结了复杂网络在软件系统中的研究进展。
(2)提出了一种基于模块的软件演化模型。与已有的软件演化模型的出发点不同,该模型着眼于软件系统的模块结构。在网络演化时,新边选择连接节点的择优概率不是单纯地依赖节点度数的大小,还要考虑了节点所在模块:调整与新边的另一端节点在同一个模块的节点的被选择概率。本文改进了BA模型原有的择优概率,定义模块择优概率,考虑了实际软件系统的演化规律,再结合软件演化中渐进活动和反倒退活动的概念,建立了包含这两类活动四个部分的基于模块的软件演化模型,并在理论上证明了该模型的无标度特性。
(3)设计并实现了一个基于复杂网络的Java程序分析工具(JPAC)。JPAC工具具有三层的系统结构:数据分析层、数据运算层和用户界面层。本文详述了各个层次主要功能以及采用的技术。JPAC工具是对软件系统复杂网络结构及其演化规律进行研究的基础。
(4)验证了软件系统中的复杂网络现象。首先为Java程序构筑其网络表示:Java SCG。然后以JDK系统为例,用JPAC工具为大型Java程序构建复杂网络并统计其特征,发现软件系统网络结构的平均路径长度很小,而平均聚集系数较大,即具有小世界效应,同时其度分布也服从幂律分布,即具有无标度特性,从而验证了大规模软件系统中的复杂网络现象。
(5)对JDK系统的演化过程进行了模拟。首先给出了一个可行的参数估计方法,对基于模块的软件演化模型进行参数估计。然后使用JPAC工具对JDK系统的演化过程进行了模拟仿真,实验结果说明了基于模块的软件演化模型的有效性。