论文部分内容阅读
软件系统在我们的生活中发挥着越来越大作用,软件的规模和复杂程度随着其功能的日益强大而剧增。随着软件规模的增大,软件复杂性的不断提高,软件各组成部分之间的相互作用使得软件系统产生了作为整体而具备的新特点,这些特点就蕴藏在软件的结构之中。在软件体系结构方面,软件的结构已经出现了多种层次、不同粒度、多种集成方式的组织方法。在各种各样的系统之中,度量活动始终处于一个核心的地位。度量有助于了解系统的面貌,以便做出有助于提高系统性能的分析和改进。随着软件开发技术的发展和实际需求的变化,对于度量和分析方法提出了新的要求。传统的度量方法无法更有效对大规模软件结构进行度量。如何从多角度更好地理解和量化软件日益增长的复杂性,保证软件正确可靠的运行,不仅是软件工程领域的热点问题之一,也是它面临的一个严峻挑战。随着网络理论研究的深入进展,科学家们开始运用网络来研究自然界中的复杂系统,即复杂网络。复杂网络是指大量具有紧密联系和彼此间相互作用的单元所组成的网络。由于软件拥有不同的粒度(如函数、类、源代码文件、程序库、组件等),这些部分的关联和交互可以被用来定义一种网络拓扑,进而作为一种软件结构特性的模型来进行研究。近些年有人提出将研究复杂网络拓扑结构的思想应用到软件度量中,并进行了一些相关的研究。因此产生了软件网络的概念,有助于从全局的角度了解软件结构的基本性质和规律,进而反映出结构特征对系统质量的影响。近些年关于宏观拓扑特征方面的研究在不断完善该理论。首先,本文介绍了软件网络研究的背景和现状,并提出了本文的研究意义和主要研究内容。介绍了复杂网络的理论和度量分析方法,分析了目前国内外研究学者关于复杂网络理论在大规模软件结构研究中的应用现状以及从软件系统中抽取软件网络的过程,简要介绍了大型水电仿真软件Wemux和本文样本的选取原则。其次,提出了软件网络的多粒度即方法、类、包三种软件网络的粒度并以图示和说明的形式给出了软件网络多粒度的构建过程和表示形式。提出了多粒度软件网络度量和分析的方法,即在方法、类、包等三个粒度上对包括Wemux在内的软件网络进行度量并分析软件网络中存在的特征和规律。在给出通用软件网络拓扑的定义和度与度分布,聚集系数,介数、平均最短路径长度以及紧密度等概念的基础上对软件网络进行度量。结果说明:Wemux等软件网络的无向图的度和有向图的出-入度的度分布均存在幂律特性,在Wemux类和包层次上软件模块化的设计思想得到了很好的贯彻;度值较低的节点拥有的聚集系数较高,有更高的聚集效应,更倾向于与其他节点聚集在一起。无论哪种粒度的软件网络都拥有较高的群聚性。介数大的节点往往度值较小,Wemux软件设计和开发者充分考虑到了控制关键模块的复杂性。对于提出的介数求解算法,实验结果表明在包和类粒度网络上,计算时间是可以接受的。对紧密度的分析也说明了中心节点的度值往往较低,节点的紧密度并未随着度值的增加而明显增加等等。以东北大学嵌入式实验室开发的大型水电仿真软件Wemux作为实证验证了多粒度度量方法的有效性并结合软件系统分析了软件的相关特性和对软件开发和设计所具有的指导意义。第三,类是面向对象软件中最重要的数据结构,是类层次软件网络拓扑的基本节点。本文提出了层次和群落、交连度、同配性系数、改进结构洞等软件网络中新的概念来度量和分析版本演化及协作模块性结构度量和分析。提出了软件网络层次结构环形布局算法以达到显示直观的目的。通过度量和分析发现:群落节点数与路径长度存在显著相关性,Wemux和其它软件系统对某些关键节点的依赖程度随着软件规模增大到一定程度之后不再增强;同样交连度随着软件规模增大先减小,然后趋于平稳。同时在软件规模增大的过程中,群落中所有边的增速先是超过非群落节点间边的增速,然后速度趋近,此时模块间的耦合程度变化较小;平均最短路径长度与同配系数之间不存在显著线性相关性,但随着同配性系数的增加,平均最短路径呈降低趋势;改进的结构洞计算方法能够更好反映软件网络中节点的桥梁特征。它同度之间存在显著相关性,即符合幂律分布。以大型水电仿真软件Wemux作为实证,分析了其中的度量特征并结合具体的类模块,说明了度量的意义。第四,本文定义了软件网络中的节点波浪效应,在此基础上定义了节点负载、多重使用性和多重依靠性。节点负载是第一次在软件网络中引入来预测模块错误倾向,它广泛应用在其它各个领域的概念。以Wemux中的阀门类为例,给出了节点负载的具体计算过程。实验结果说明:节点负载(Load)的方法从软件网络的角度考虑到了类节点对其它节点的影响即波浪效应。给出了大规模软件节点负载分布图的分形盒维数的计算方法。通过对节点数不低于100的150种大规模软件来计算节点负载分析其中存在的规律。结果表明大规模软件的节点数和其节点负载分布图的分形盒维数之间不存在显著相关性,但软件的类型与其存在阈值区间关系。以Wemux为例分析了软件中某些类模块的节点负载并结合实际意义说明了节点负载所反映的重要特征。同样以Wemux和其它几种软件为实证,分析结果说明了类的多重使用性和多重依靠性能够很好地反映类的构造复杂度和它的结构缺陷。最后,本文实现了软件网络宏观拓扑特征度量和分析的平台。介绍了平台的总体架构设计,将存储和计算分开进行,分别由后台运算服务器和数据库服务器来完成,用户不会因运算复杂而花费大量时间等待。给出了数据库中主要的表结构设计,将特征值划分为总体特征值和个体特征值分别存储。另外还详细介绍了系统各模块关键问题的解决方法。