软件质量度量分析与研究

时间:2022-04-07 05:44:28

软件质量度量分析与研究

摘要:随着软件的复杂性日益增长, 软件开发的周期以及费用也日益增长,软件质量的保证与提高越来越成为了人们高度重视的问题。解释了软件质量的概念和质量模型的发展阶段,分析了软件质量度量的过程以及度量的验证与预测,提出了几种针对软件质量的度量方法,最后对软件质量的度量做了相关的展望。

关键词:软件质量;度量;质量度量模型;度量验证

中图分类号:TP311文献标识码:A文章编号:1009-3044(2010)18-5106-03

Analysis and Research of Software Quality Metrics

YU Wei-feng, HUANG Song

(Software Test and Evaluation Center for Military Training, Institute of Command Automation, PLA University of Science & Technolog, Nanjing 210007, China)

Abstract: As the complexity of software is increasing, the cycle of software development and cost are also increasing. And people have paid more and more attention to the question that how to assure and improve the software quality. This paper not only explains the definition of software quality and developing phases of quality model, but also analyses the process of software quality metrics and validation of quality metrics. At the same time, it introduces several methods of software quality metrics. Finally, related future trends of research in this field is listed.

Key words: software quality; metrics; quality metrics model; metrics validation

在过去几十年里,因为软件的质量问题而导致整个系统发生失效的事例屡见不鲜,进而给人类生命安全和环境造成了巨大的损失。20世纪80年代,美国有两个系统,耗资5600万美元的Univac联合航空订票系统和耗资2.17亿美元的高级后勤系统都因在交付使用后发现不满足要求而被迫进行重新研制[1];而在1996年6月,在阿丽亚娜5号火箭首次发射后不到一分钟的时间内,就因为软件故障问题致使火箭发生了爆炸,导致了巨大的经济损失和相应计划的延迟[2]。因此软件的质量问题已引起了人们的极度重视,软件质量的度量问题自然也得到重视。

由于计算机技术、数据融合技术、网络技术和通信技术的飞速发展,人们对软件性能及功能提出的要求也越来越高,度量软件质量已成为一个迫切需要解决的问题。如何通过选择合适的软件质量指标体系、确定软件质量的量化过程和方法来进行客观性地度量,对于评价软件的质量是关键的一步,进而对于减少软件失效的发生和提升软件的总体质量也是具有极其重要的意义。

1 对软件质量模型的认识

1.1 软件质量及定义

至今为止,软件质量还没有一个统一的、惟一的定义,不同的组织或应用可能会有不同的定义。ANSI/IEEE Std 729―1983定义软件质量为:与软件产品满足规定的和隐含的需求的能力有关的特征或特性的全体[3];M.J.Fisher给出的定义为:表征计算机软件卓越程度的所有属性的集合。由此可知,软件质量的优秀程度与反映软件各项功能、性能需求的特性及其组合紧密相关,如果针对软件本身设计出来的质量特性能够满足各种要求和反映软件质量需求,则说明软件产品的质量等级比较高。结合各种定义,软件质量反映了以下三个方面的问题:1) 显式的软件需求,包括用户方、交办方等提出来关于软件的功能需求、性能需求等,这是软件质量度量最基础的需求;2) 隐式的需求,在软件生命周期中其中有一部分需求并没有明确提出来,如可维护性等;3) 软件的整个开发过程还必须按照一定的方法,规范来进行,缺少这些,就无法指导软件开发人员的各种开发活动,开发秩序会变得杂乱无章,软件质量也就得不到一定的保证。

综上以上的定义和最新的研究可以将软件质量定义为:软件所具有的能够满足功能和性能需求、遵循一定的开发准则和规范以及符合隐含的一些规定需求的本质。

1.2 软件质量度量模型

软件度量工作自1958 年Rubey 和Hurtwick 首次提出软件度量学概念[4]至今,大体经历了三个阶段。1976 年,Boehm 等人从可移植性、可使用性、可维护性三个方面来定量的评价软件质量为第一阶段;第二阶段以1978 年McCa1l 等人从“产品运行、产品修正和产品转移”提出的质量度量模型即“质量要素――评价准则――度量”为标志。但是实践证明通过该模型不同缺陷的反馈信息可能相同,以致指标的制定及其定量的结果难以评价。随后,国际标准化组织(ISO)[5]于1985 年和1993 年先后提出了多项关于软件质量度量技术的工作报告,其提出的软件质量度量模型将软件度量工作带入了第3 个发展阶段。

通过对这三个模型的深入研究发现,这三个模型都着重分析了软件质量属性的影响因素,这些模型研究的对象主要是软件产品,即在软件质量属性和软件设计、编程的特性之间建立关联映射[6]。这些模型可以帮助加深对软件特性的研究,有利于分析和建立特定软件系统的质量特性及其特性组合。但是这些质量度量模型都存在一定的局限性,每个模型都是针对软件本身提出来的,通用性比较强,在应用到具体的软件系统评估中,并不能很好地反映软件所具有的特殊性。因此,如今很多模型都是根据自己的需求来开发建立的,虽然软件自身的性质给模型的确定带来了一定的困难,但是总的提升还是有的。文献[7]就指出了一种基于全局和局部质量标准的框架,降低了模型建立的难度; 文献[8]中指出了从领域报告问题、用户关键情况和用户满意度等级三个方面来寻找度量元,利用数据统计分析的方法加强了软件质量的管理。这些方法的开发和应用都为软件质量特性和模型的设计提供了很好的引用和借鉴。

2 软件质量的度量研究

2.1 软件质量度量过程

软件的度量过程主要可以分为五个步骤进行:1)确定软件的质量度量需求。这一步是软件质量度量最为前提和基础的一步,主要活动包括设计可能的质量因素集合,优化并确定这一因素集合和建立软件质量模型。2)确定软件质量度量元。这是软件度量过程较为关键的一步,度量元选取的好坏直接影响着质量评估的结果。首先在基于软件质量度量框架的基础之上,将质量特性分解成度量元;继而执行度量元的成本效益分析,根据其结果调整优化已选度量元集合。3)执行软件质量度量。包括定义度量数据收集过程并且收集数据、根据已有数据计算度量值等环节。需要注意的是,采集的数据应该基于正确定义的度量和模型,从而保证数据的正确性、准确性和精度;因此,在收集数据之前,应当设定数据采集的目标,并且定义有意义的问题[9]。4) 分析软件质量度量结果。通过分析比较收集的度量数据与目标值,发现两者之间的区别。确定那些不可接受的度量值,详细分析那些数值偏离关键值的度量元并依据分析结果重新设计软件质量度量。5)软件质量度量的验证。验证的目的就是为了证明通过软件产品和过程度量可以预测具体的软件质量因素值。验证的过程中,在运用相关的验证方法和标准的前提下,必须确定软件质量因素样本和度量样本,然后执行对度量的统计分析,检验度量的作用是否实现。整个具体过程如图1所示。

2.2 软件度量的验证与预测

软件度量的验证是软件度量领域另一个非常重要的话题,因为实际上软件度量的认同取决于软件度量是否能作为软件质量特性的预报器,如果能,度量验证的目的也就达到了[10]。

从软件产品度量验证实质来分析,具体反映了以下三个问题:1)软件产品度量必须量度本应该量度的内容,例如耦合度量量度耦合性等。2)软件产品度量和一些重要的外部度量存在关系,例如可维护性和可靠性的量度。3)软件产品度量能促进现有的度量水平的提升,这种提升意味着将会产生降低度量收集的复杂性以及提高预测错误的可能性等等优势。

在进行软件度量验证时,我们必须注意软件度量的外部验证和内部验证的区别,内部验证考虑同态,也就是说,做用户想要的度量。软件度量的外部验证考虑量度是否和软件品质属性(外部变量)有关系。文献[11]和文献[12]应用算法验证进行度量的外部验证,而Zuse等人采用的是所谓原子修正进行度量的外部验证,原子修正可以看作对顺利量表的必要条例。软件度量广泛使用的外部验证概念相对于外部特征是相互关系的考虑。文献[13]也从内部验证和外部验证的角度出发,提出了利用理论验证和经验验证相结合的方式来对已存在的五个有关面向对象设计的质量因素的度量集进行验证。软件组织可以利用这种方法尽早确定高风险的软件模块、构建设计和编程计划与方针以及进行系统级的预测。具体方法如图2所示。

最近的研究表明,验证软件产品度量的方法的质量越来越受到人们的关注。主要基于两个原因:1)应用于软件工程度量验证的一些一般实践在科学性方面令人难以接受;2)对于有效的工程管理和可靠合理的经验研究,有效的测试和验证是必须的。因此,必须对那些来出自于研究室的度量的有效性进行验证,才可能达到准确性和科学性。更需注意的重点是软件度量验证不只是一次的事,它是一个需要重复验证的连续过程。

2.3 软件质量度量方法与进展

2.3.1面向结构度量方法

较早出现的度量是建立在结构化程序设计和模块化思想基础上的,分析的对象包括程序的控制流图,实现中的操作复杂性,方法间的传递耦合和流程耦合等。其中影响比较大的有McCabe 提出的循环计数复杂度度量,直到今天历经改进,仍然被实践者所采纳。McCabe 1976年提出了环形复杂度(cyclomatic complexity)理论,该理论以图论为基础,通过分析程序的控制流图来获得程序的复杂度,为度量程序逻辑复杂性提供了一种很好的方法。

2.3.2 面向软件复用的度量

20世纪90年代后期,软件复用的研究兴起。复用的度量主要包括可复用性度量和复用度量[14]。可复用性度量主要用来判定一个构件的可复用性和质量,复用度量主要用于判定复用对生产率、质量和开发时间的作用,它可以在不同级别上进行度量,包括构件级、产品族级、项目级和机构级。目前面向复用的度量大致可分为以下4大类:经济模型类、成熟度模型、复用比率模型以及复用潜力度量模型。

2.3.3 面向对象度量方法

软件度量进一步作的开展主要在80、90年代,尤其是在90年代,软件度量的研究获得了空前的发展。1989年,Morris研究讨论了面向对象应用程序的度量,Bieman讨论了在面向对象条件下软件重用的度量问题。1993年中国台湾学者J-Y Chen和J-F Liu提出chen&liu方法[15],从操作性、复杂性、重用性、类的属性等八个方面去度量面向对象软件。1994 年Chidamber和Kemerer对面向对象度量提出了基于继承树的一套面向对象度量方法[16]被称为C&K度量方法,主要用来量度与对外部质量属性的影响有关的面向对象设计的复杂性[17]。1995年,brito等人针对面向对象属性提出的一套称之为MOOD的度量算法集[18],它从封装性、继承性、耦合性和多态性等四个方面给出了面向对象软件六个度量指标。1998年,Nesi和Querci提出了一种新的软件复杂度和大小度量方法[19]。

到了2000年,Arlene F提出一种预测点度量方法,这种方法基于对象和他们的特征,建立一种适合预测工作量和跟踪生产力的方法,核心是每类加权方法数(Weighted Methods per Class WMC)[20]。2001年,Victor和Daily提出了一种基于构件点的度量方法叫SPECTRE的方法[18],用于预测开发任务时间和模块规模。2003年,Washizaki等提出了一种可重用组件的度量方法,用于度量面向对象组件的易理解性和可重用性。同年,Hastings和Sajeev 介绍了一种新的Vector Size Measure(VSM)方法,用于在软件生命周期的早期度量软件规模,软件分类,软件开发结果等[21]。2005年Gyimothy等提出一种基于经验的面向对象度量方法,该方法能有效地实现对源码的bug预测度量。同年,Del Bianco 等采用经验断言的方法,扩展了功能点度量方法,并将其应用到面向对象度量中。

3 展望

毫无疑问,软件度量是提高软件品质的一个重要方法。只有通过软件度量,才能确定软件产品所具有的属性组合与所希望的符合程度。Dieter Rombach,曾在巴黎说到过(现在他在美国软件工程实验室(SEL)工作):我们现在不再是问我们是否应该度量,而是怎么样度量。尽管过去软件度量领域做了许多的研究,但还有许多问题未解决。

首先,目前还没有成熟的度量方法,大多度量方法适用性不强,且有些还存在着度量过程客观性差,度量结果不准确的问题;

其次,国际上还没有统一的软件度量标准,很多标准针对的范围比较小,并不能满足软件质量度量的整体要求。

将来,理论开发(对现实的假定)变得越来越重要,相关和归约分析需要考虑讨论度量比例,外部变量对软件度量验证确认是未来需要研究的课题。利用测量理论的公理有助于更好理解软件品质和成本估计后潜在的内容;同时,针对现有问题进行深入的研究和分析,探求符合需要的理论方法和开发工具将对未来度量领域的发展起到重要的促进作用。

4 结束语

软件质量度量作为一个很模糊和深奥的问题,已经成为软件开发者、使用者以及维护者必须做的一项基本性的工作。如何客观地和定量地说明、评价和度量开发产品的质量,如何以客观数据为基础,并与软件开发技术相结合,开发出高质量的软件产品,也已变得越来越重要。本文所提出的关于度量方面的内容及相关问题对于后续的研究具有一定指引意义,也是作者今后学习和研究的方向。

参考文献:

[1] 段云亭.介绍一种软件质量度量方法[J].信息系统工程,1991(1).

[2] Weyuker E J.Testing Component-Based Software: A Cautionary Tale[J].IEEE Software,1998(10).

[3] Pressman R S.软件工程――实践者的研究方法[M].北京:机械工业出版社,1999.

[4] BOEHM BROWN B W,KASPAR H.Characteristics of software quality.TRW serious of software technologyVol1[M].New York:North-Holland,1978.

[5] ISO/ IEC 9126-1.Software engineering-product quality: quality model[Z].2001.

[6] 郭英军,曾一,程全良,封卫.一种软件过程质量的度量方法[J].计算机工程与应用,2008(9).

[7] Khaddaj S,Horgan G.The Evaluation of Software Quality Factors in Very Large Information Systems[J].Electronic Journal of Information Systems Evaluation,2004,7(1).

[8] Chulani S,Ray B,Santhanam P,et al.Metrics for Managing Customer View of Software Quality[C].Proceedings of the Ninth International Software Metrics Symposium (METRICS’03)IEEE,2003.

[9] 程诺,万琳,张威.基于量化指标分析的软件质量度量方法[J].北京化工大学学报,2007,34.

[10] Report on the IEEE Standard for a Software Quality Metrics Methodology (Draft)P1601,with discussion of Metrics Validation[R].IEEE,1991.

[11] Martin S,Darrel I.Algebraic Validation of Software Metrics[C].Milano:Proceedings of the 3rd European Software Engineering Conference,1991.

[12] Martin S.Software Engineering Metrics-Volume I: Measures and Validations[M].McGraw Hill Book Company,International Series in Software Engineering,1993.

[13] Soni D,Shrivastava R,Kumar M.A Framework for Validation of Object-Oriented Design Metrics[J].International Journal of Computer Science and Information Security,2009,6(3).

[14] 梅宏,谢涛,袁望洪,等.青鸟构件库的构件度量[J].软件学报,2000(11).

[15] Chen J Y,Liu J F.A New Metric for Object-Oriented Design[J].Information and Software Technology,1993.

[16] Chidember R,Kemerer F.A Metrics suite for object-oriented design[C].Proceedings of the IEEE,1994.

[17] Da-wei E.The Software Complexity Model and Metrics for Object-Oriented[C].IEEE,2007.

[18] Vector D,Daily K.Software estimating at the task level-the specter approach,Project Control: Satisfying the Customer[C].Proceedings of ESCOM-SCOPE,2001.

[19] Nesi P,Querci T.Effort Estimating and Prediction of Object-Oriented Systems[J].J Systems and Software,1998.

[20] Minkiewicz A F.In Measuring Object Oriented Software with Predictive Object Points[C].PRICE Systems,2000.

[21] Hastings T,Sajeev A.A Vector-Based Approch to Software Size Measurement and Effort Estimation[J].IEEE trans Software Eng,2001.

上一篇:基于Cortex-M3核的μCOS-II移植与应用 下一篇:浅析校园网ARP攻击及对策