We use cookies to improve your experience with our site.

一种针对大规模面向对象软件系统的复杂性度量指标混合集

A Hybrid Set of Complexity Metrics for Large-Scale Object-Oriented Software Systems

  • 摘要: 1.本文的创新点
    近年来,研究人员通过实验分析发现,面向对象软件系统的结构并不是随机和无序的,大多数都展现出“小世界”(较小的平均最短路径和较大的平均节点聚集系数)和“无尺度”(节点的度分布遵循幂率分布)的特性,超出了传统软件度量方法学的研究范围。在不同的层次、从不同的视角为软件开发人员提供一套软件复杂性及相关重要属性的度量指标集,是软件工程特别是软件度量研究面临的一个挑战性问题。通过学科交叉,从复杂系统和复杂网络的角度来重新审视软件,将其抽象为一类(人工)复杂网络进行研究,有助于科学、全面地认识和理解软件的本质特征,为量化软件的复杂性奠定基础。本文的创新点可归结为:
    (1) 以软件最基本的内在属性(耦合和内聚)为核心,提出了一个针对面向对象软件的层次型度量标度体系,将网络统计层、面向对象语境层和实现代码层的各种度量指标有机地串联起来,并在软件内部属性和外部结构特性之间建立起关联,为量化软件的结构信息、分析结构设计缺陷提供重要依据。
    (2) 针对由12个开源软件系统构成的数据样本,系统研究了跨层度量指标(特别是网络统计层指标和传统的CK和MOOD度量套件指标)间的相关性,发现软件网络中节点的出度可作为有缺陷倾向的类的直观指示符,辅助设计人员在设计的早期阶段分析和检测结构(主要是类级)的缺陷,并对设计质量进行评估。

    2.实现方法
    使用逆向工程方法分析程序源代码或UML类图,获得类和类之间关系的信息,然后构造软件网络拓扑(类抽象为节点,类之间的关系抽象为有向边)并可视化。针对实验软件系统的网络拓扑,编写实现算法或基于已有的开源软件计算各种度量指标。使用皮尔生相关性计算方法分析跨层度量指标的具体数据,得到不同指标之间的相关性系数,根据传统度量指标的正常取值范围,进一步研究有缺陷倾向的类在更抽象层次(网络模型)的直观判断方法。在此基础上,运用经验软件工程方法和原理,给出互联网环境下面向对象软件设计时分析和检测软件结构缺陷的一些建议性准则。

    3.结论及未来待解决的问题
    根据实验数据,在本文提出的混合指标集中,软件网络中节点的出度和对应软件系统中类的WMC(类的加权方法数)、LCOM(类的内聚缺乏度)、MCC(McCabe圈度量方法)和SLOC(源代码行)之间都存在明显的正相关性,说明一个类依赖的其它类越多(出度增加),其自身会变得越复杂(WMC、MCC和LCOM变大),同时内聚度会降低(LCOM变大)。上述结论说明,依据耦合和内聚属性,在面向对象软件不同的粒度层次上,存在比传统度量指标更直观的判断方法,用于分析有缺陷倾向的类;另一方面,网络层次的度量指标也能弥补传统度量指标的不足,在更抽象层次从整体和全局的角度提供一些统计数据。
    本文所研究的软件网络是类级的(类作为网络的节点),没有考虑包级和方法级的网络,进一步的研究工作是探索一种针对多粒度软件实体的一般性度量框架,研究并建立变粒度条件下更为完善的度量标度体系,并在更广的范围进行实践验证。

    4.实用价值或应用前景
    本文提出的混合指标集能从不同的层次和角度为软件质量的量化提供重要依据,同时辅助设计人员在设计的早期阶段快速分析和检测有缺陷倾向的类,从而为开发人员改进代码质量提供具体的指导。该混合指标集可实现为集成开发环境平台的插件或独立软件工具,用于实际的软件开发和遗留系统重构中,具有较好的实用前景。

     

    Abstract: Large-scale object-oriented (OO) software systems have recently been found to share global network characteristics such as small world and scale free, which go beyond the scope of traditional software measurement and assessment methodologies. To measure the complexity at various levels of granularity, namely graph, class (and object) and source code, we propose a hierarchical set of metrics in terms of coupling and cohesion --- the most important characteristics of software, and analyze a sample of 12 open-source OO software systems to empirically validate the set. Experimental results of the correlations between cross-level metrics indicate that the graph measures of our set complement traditional software metrics well from the viewpoint of network thinking, and provide more effective information about fault-prone classes in practice.

     

/

返回文章
返回