论文部分内容阅读
随着软件的规模在不断的增大,软件复杂度的不断提高,软件的结构也已经出现了多层次、多粒度、多集成方式的组织方法,若仅仅研究单一层次的软件网络并不能完整的体现软件的整体结构特性,因此需要新的分析方法对不同粒度软件结构进行研究。针对上述问题,本文将面向对象软件抽象成三种粒度的软件网络,通过分析不同粒度软件网络的网络特征来寻找软件结构所蕴含的规律。本文设计并实现了一个面向对象软件多粒度网络分析工具,该工具能够通过解析面向对象软件源代码,抽取出面向对象软件的包粒度、类粒度以及方法粒度三种不同层次的软件网络,并分别计算其网络特征值。针对三种不同粒度软件网络特征值进行分析,结果表明面向对象软件系统的三种粒度软件网络均具有复杂网络的“小世界、无尺度”的特性,包粒度与类粒度软件网络中节点出度分布幂指数要大于节点入度分布的幂指数,同时入度分布范围要大于出度分布范围,这体现出面向对象软件鼓励重用、减小模块复杂性的设计思想。三种粒度软件网络节点聚集系数-度相关均呈现向k-1直线靠拢的现象,这说明三个粒度软件网络都存在层级结构特征,这是面向对象软件模块化设计思想的体现。节点介数与度的相关性则出现了不同范围的划分。多粒度软件网络节点结构洞与度相关分布均符合幂率分布形式,节点紧密度的分析则出现了两种明显划分,三种粒度网络均有紧密度值非常小的节点存在,这些点的度值并不一定很小,这些是处于网络边缘的节点,而处于网络中心的节点,紧密度值较大而且随着度值的增大逐渐趋于稳定,这对研究软件模块之间的协作性进而分析软件结构特性有着重要意义。通过对面向对象软件多粒度软件网络的分析,能够更加完整深入的分析软件不同层次的结构特性,在软件的复杂性控制、研究软件设计思想对软件结构的影响等方面具有很大的现实意义。