论文部分内容阅读
软件复杂性是软件质量的重要组成部分,其度量是软件度量的重要方面。当前,面向对象软件开发方法已经成为主流的软件开发方法但缺乏较为完善的面向对象软件复杂性度量方法。基于这样的现状,本文提出了面向对象软件复杂性度量方法的研究课题。本文将介绍软件度量基本理论及软件复杂性度量方法,以及度量方法评估准则。接着介绍面向对象方法的特性,以及此前已由其他学者提出的面向对象度量方法,对这些方法进行分析,并指出现有方法存在的不足之处,如C&K的DIT没有考虑所有继承路径、NOC没有考虑非直接子类、CBO没有考虑类间的耦合程度等。这些方法仅从面向对象的某些特性进行度量,不够全面。本文同时分析了面向对象度量与结构化度量的区别。在对传统软件复杂性度量方法、面向对象度量方法等进行分析的基础上,本文对面向对象软件复杂性进行分析,并提出复杂性分解的思想,将面向对象软件复杂性分解为类的复杂性、继承复杂性、多态复杂性、耦合复杂性和成员关系复杂性等多个复杂性分量。其中多态复杂性又可分解为强制多态、重载多态、参数多态和包含多态等复杂性。这些分量能较为全面地体现面向对象的特性。本文在分解的基础上分别为这些复杂性分量提出度量方法。其中,类的复杂性采用类所实现的成员的复杂性SIMC、类接口复杂性之和SCIC反映。继承复杂性可以通过继承图表示,由继承成员个数NIM、覆盖成员个数NOM、成员名重复数NRN、继承路径距离LIP和访问方式更改数NMA等几个方面反映,并采用加权合成的方式得到继承复杂性。多态复杂性可由四种类型的多态复杂性组合反映。类之间的耦合性可以通过耦合图表示,耦合复杂性可以通过耦合图中顶点间边的数量和耦合程度表示。类的成员关系使用伪二部图表示,成员关系复杂性由类成员间的交互程度表示。最后确定整体复杂性的组成成分并采用加权合成的方式得到面向对象软件的复杂性。为验证度量方法的有效性,本文随机选取3个VC++程序进行度量并对度量结果分析。结果表明本方法的度量结果与对这些程序复杂性的分析结果一致,从而从实际应用这个角度验证了该方法的合理性和可行性。