APP下载

常用软件度量方法分析及比较

2015-06-24邵秀秀赵卫东邱会鲁等

软件导刊 2015年6期

邵秀秀 赵卫东 邱会鲁等

摘要:软件度量是对软件开发项目、过程及其产品进行数据定义、收集以及分析的量化过程。在度量的基础上,对数据进行综合分析,有利于对开发项目、过程及其产品加以理解、预测、评估、控制和改善。介绍了软件度量常用模型GQM,并对规模度量的功能点分析方法、成本度量的COCOMO模型、复杂性度量的环形复杂度理论和C&K方法以及顾客满意度要素进行了分析。

关键词:GQM;功能点分析方法;COCOMO;环形复杂度;C&K

DOIDOI:10.11907/rjdk.151129

中图分类号:TP301

文献标识码:A 文章编号

文章编号:16727800(2015)006002303

作者简介作者简介:邵秀秀(1988-),女,山东聊城人,山东科技大学信息科学与工程学院硕士研究生,研究方向为数据库与信息系统;赵卫东(1967-),男,山东泰安人,山东科技大学信息科学与工程学院副教授、硕士生导师,研究方向为软件工程、数据库;邱会鲁(1990-),男,山东济宁人,山东科技大学信息科学与工程学院硕士研究生,研究方向为数据库与信息系统;吕峰(1989-),男,山东青岛人,山东科技大学信息科学与工程学院硕士研究生,研究方向为数据库与信息系统。

1 GQM模型

GQM,即GoalQuestionMeasure,为软件度量最常见模型,其将度量结构分为3个层次,从高到低分别是:目标层、问题层、度量层[1]。三层逐步递进、逐步求精,将抽象级别较高的组织或项目目标与度量项实际收集的数据相关联,有利于尽快根据信息的需要和优先级决定度量并进行度量。针对软件规模、成本、复杂度、顾客满意度或其它方面的度量,都可依据此模型逐步完成度量过程。

GQM的主要步骤:①确定度量目标;②提出满足目标的问题;③确定回答问题所需要的度量[2]。GQM度量过程如图1所示。

2 规模度量方法

规模度量常用方法有功能点分析、代码估算、德尔菲法、用例点、对象点方法等。其中功能点分析方法是使用最多的一种规模度量方法。

功能点分析方法,即Function Point Analysis,是以系统的功能点来估算系统规模的一种常用方法,用功能点的数量来表示系统规模大小,而与实现语音及编程环境无关,在系统需求分析阶段即可发挥作用。

FPA有5项基本计数:①外部输入数(EI,external input);②外部输出数(EO,external output);③外部查询数(EQ,external query);④内部逻辑文件(ILF,internal logical file);⑤外部接口文件(EIF,external interface file)。功能点分析法的主要步骤如表1所示。

功能点分析法主要适用于估算出开发前软件项目的规模,以及有很多输入输出或文件应用的软件,与程序设计语言无关。由于功能点主要由经验来估算,不同的人针对同一系统可得出完全不同的数据,主观因素较多,因此虽然可估算系统规模,但常常不太准确。

3 成本度量方法

成本度量常用方法包括构造性成本模型、类比估算、细分估算、周期估算方法。构造性成本模型COCOMO(Constructive Cost Model)最早由B.W.Boehm[4]提出,它包括3个层次:①基本模型:用已估算出的代码行长度配以相应参数来估算开发需要的工作量;②中间模型:在基本模型的基础上增加项目、人员等影响因素数据来估算工作量;③详细模型:包含中间模型的各种特性,并考虑了软件开发过程中各步骤的影响。

一般来说,基本模型适合项目信息较少的估算,中间模型在需求确定后即可使用,详细模型在项目设计完成后可使用。

模型还提供了3种软件应用开发模式,根据软件不同应用领域划分:①组织式:泛指一些比较小或者不需要太多创新的项目,比如数据的处理等;②嵌入式:指软硬件环境被严格限制的项目,比如各种系统程序等;③分离式:介于组织式和嵌入式之间的类型,指各类实用程序,如编译器、分析器等。

3.1 COCOMO基本模型

公式:Effort=a*KLOCb Time=c*Effortd Person=Effort/Time

其中:Effort是所需的人力,如人/月、人/年等。a、b、c、d是参数,如表2所示。

(1)提供了3个层次的开发工作量估算模型:①应用系统组成模型:用于原型构建阶段;②早期设计模型:用于体系结构设计阶段;③后体系结构模型:用于完成体系结构设计之后的软件开发阶段。

(2)17个工作量乘数因子(Cost Drivers)。

4 复杂性度量方法

复杂性度量方法可以从面向结构的度量、面向对象的度量两个方面来分析。

4.1 结构化程序复杂性度量方法

结构化程序复杂性度量往往针对3个方面进行,即模块、结构及总体复杂性。作为程序复杂性度量的基础,模块的复杂性度量又分为程序长度和程序控制流度量。McCabe环形复杂度理论是常用的程序控制流度量方法[5]。

环形复杂度理论以图论为基础,通过程序的控制流图来获得程序的复杂度,定义如下:

M=V(G)=e-n+2p

其中,G为控制流图,V(G)是G中环形的数目,e是G中边的数目,n是节点个数,p是不相连部分的数量。

例:(1)根据代码画出控制流图,如图2。

(2)计算环形复杂度,可用3个数据表示:①流图中区域的数量;②流图中边的数量-流图中节点的数量+2;③流图中判定节点的数量+1。

因此,对应图2,例子中的环形复杂度V(G)=4。

4.2 面向对象软件复杂性度量

面向对象软件复杂性度量方法主要有C&K方法、MOOD方法等[6],C&K方法更为常见。C&K方法给出了6个面向对象设计和复杂性的度量因子:

(1)每类加权方法数(WMC),即Weighted Methods per Class,表示一个类的静态复杂度总和,设类C1,类中定义了方法Mi,,,Mn,令c1,,,,cn为这些方法的复杂度,则:

(2) 继承树深度(DIT),即Depth of Inheritance Tree,表示类继承树的最大深度。

(3) 每个类的孩子数(NOC),即Number Of Children,表示直接继承本类的孩子数目。

(4) 类耦合(CBO),即Coupling Between Object classes,表示和本类耦合的类数目。

(5) 类的响应(RFC),即Response For a Class,为本类方法及本类调用方法的数目和。

(6) 方法间内聚缺乏(LCOM),即Lack of Cohesion in Methods,为相似度为0的方法对减去相似度不为0的方法对的数量,该数目越大表示类的内聚越强。

C&K方法的6个度量因子能在一定程度说明面向对象软件的复杂性,但仍存在一定的缺陷,譬如:①针对WMC,未说明如何继承的情况;②针对DIT,定义有二义性,多继承情况考虑不全面;③针对NOC,未考虑间接继承孩子,得到的度量结果比较扭曲;④针对RFC,容易区分是否为本类方法,不易区分是否为系统函数;⑤针对CBO,根据多种情况进行判断;⑥针对LCOM,没有访问属性方法的百分比,度量有一定缺陷;⑦缺少对封装性的度量;⑧缺少对多态性的度量。

针对这些不足,使用时可以对每个度量进行改进,比如:①WMC将基类的公有、保护函数计入本类 ;②DIT可以将多个继承定义为单个继承的和;③NOC将间接继承的孩子考虑进来;④RFC不区分本类方法,只统计出所有被本类调用的方法;⑤CBO考虑多种情况的耦合,得到最终数目;⑥LCOM提出克服一些缺陷的定义;增加了对封装性、多态性的度量。

5 结语

本文针对不同的度量内容介绍了常用的度量方法,包括功能点分析方法、COCOMO模型、环形复杂度理论和C&K方法[7]以及GQM模型,这些方法可用于软件度量。此外,软件度量往往涉及多个学科或技术,在对其进行学术研究或实际应用时,应适当结合多领域技术,以促进度量目标实现。

参考文献:

[1]周宇,钱红兵.软件过程中的度量数据收集方法研究[J\].计算机应用研究,2005,22(1):12.

[2]王汝沛.软件度量指标研究及实现[J\].数字技术与应用,2012(3):8587.

[3]IFPUG( International Function Point Users Group).Function point counting practices manualrelease 4.2[R\].Westerville,2004.

[4]BOEHM B W.软件成本估算 COCOMO II 模型方法[M\].北京:机械工业出版社,2005.

[5]邓小鹏,邢春晓,蔡莲红.Web应用测试技术进展[J\].计算机研究与发展,2007(8):12731283.

[6]易彤.面向对象设计中软件度量学:回顾与热点[J].计算机应用研究,2011,28(2):427434.

[7]Measurement manual version 3.0 [Z\]. COSMIC Measurement Practices Committee,2007.

责任编辑(责任编辑:杜能钢)

英文摘要Abstract:Software measurement is a quantitative process of the date definition,collection and analysis of softwares development project,process and product.Based on the measurement,to make a comprehensive analysis of the measurement data,is good to understand,predict,evaluate,control and improve the project,process and its products.This paper mainly introduced the commonly used model of GQM,and analyzed the Function Point Analysis,Constructive Cost Model,the theory of McCabe,the method of C&K and Customer satisfaction factors.

英文关键词Key Words:GQM;Function Point Analysis;COCOMO;McCabe;C&K