基于UML的软件复杂性度量方法和工具的研究
作者单位:重庆大学
学位级别:硕士
导师姓名:曾一
授予年度:2015年
学科分类:08[工学] 0835[工学-软件工程] 081202[工学-计算机软件与理论] 0812[工学-计算机科学与技术(可授工学、理学学位)]
摘 要:软件复杂性度量是软件度量的一个重要分支,准确全面的复杂性度量,可以帮助软件开发人员更好地理解软件,有助于开发人员更好地判断、决策以及管理软件开发过程,提高软件开发的效率;另一方面,可以通过改善软件的设计结构,提高软件的质量,使软件更加符合用户的需求。当前,面向对象技术已经成为主流的软件开发方法,UML建模技术已经广泛应用于面向对象软件开发过程中,但是比较全面、完善的复杂性度量方法还比较缺乏。基于这样的现状,本文提出了基于UML的软件复杂性度量方法。本文首先对软件度量、面向对象技术和UML模型的基础知识进行了介绍,对以往所提出的面向对象软件度量方法特别是四种经典的度量方法C&K量度组、Wei Li量度组、Lorenz&Kidd量度组、MOOD量度组进行了分析和总结,指明了其中存在的不足之处。比如只有MOOD对封装性和多态性进行了度量;而MOOD进行的度量都是针对系统级的,没有对单个类的度量;只有C&K量度组对内聚性提出了度量指标,其他方法均没有对内聚复杂性提出度量的指标;对于耦合性的度量,基本上都是定性的分析,对于耦合强度的考虑都比较少。在此基础上,本文将基于UML的软件复杂性分解为类的复杂性、封装复杂性、继承复杂性、多态复杂性、内聚复杂性和耦合复杂性,对影响它们的因素进行了分析,提出了相应的度量规则,其中类的复杂性度量用类的方法数量和属性数量反映;封装复杂性度量,用方法可见率和属性可见率反映;继承复杂性度量,用继承成员个数、方法重写个数、成员名重复数、继承路径距离和访问方式更改数等反映继承的复杂程度,然后给出度量公式;多态复杂性度量,在分析基于UML软件的特点的基础上,分为重载复杂性和重写复杂性进行度量;耦合复杂性度量,分为静态耦合性和动态耦合性进行度量,静态耦合性在UML类图中度量,主要考虑类与类之间的相互关系导致的耦合,如依赖、关联、聚合、组合、泛化、实现等,动态耦合性在时序图中度量,主要考虑类的实例对象之间的交互情况,用交互对象和交互信息的数量来反映动态耦合性。在对各个复杂性分量进行度量之后,本文确定了整体复杂性的组成成分并采用加权合成的方式得到了系统级的复杂性。本文在提出度量方法之后,根据方法形成了一个度量工具。同时,本文通过汽车租赁系统和图书馆管理系统两个实验模型对本文所提出的方法和工具进行了分析验证,实验结果表明,该方法能够较为准确地反映基于UML模型的面向对象软件的复杂程度。通过复杂性度量,可以让软件设计开发人员更好地理解软件,从而提高软件开发的效率和软件的质量。