【摘要】软件质量的好坏直接关系到用户的正常使用,更牵涉到软件的应用和发展,所以软件质量保证至关重要。采取了有效的方法保证软件质量后,必须对软件质量进行度量,这样才能确定软件质量是否达标。主要介绍了软件质量的重要性、概念及软件质量保证和度量的方法,国内外研究的现状,最后总结全文并进行了展望。
【关键词】软件质量;软件质量保证;保证方法
1、引言
随着计算机应用的普及和深入,使得我们整个社会的经济体系,以至人们的日常生活的各个层面部对计算机,特别是对软件的依赖性越来越大。然而软件引起的故障越来越多。据统计80年代初软件引起的故障与硬件引起的故障比率约为1.1:1,而到了8O年代末,这一比率已上升为2.5:1。如今软件的质量问题日益突出,有些问题相当严重。由软件质量问题造成巨大经济损失,引发危害人的生命和社会安全事故的例子不胜枚举。2002年,存在缺陷的软件让美国经济损失了600亿美元,这相当于美国国内生产总值的0.6%。2003年的海湾战争中,因某个软件质量问题打乱了“爱国者”导弹雷达跟踪系统,使导弹发射后未能迎击对方的“飞毛腿”导弹,反而轰击了自己的军营,造成28名士兵丧生,98名受伤。2007年美国l2架F一16战机执行从夏威夷飞往日本的任务中,因电脑系统编码中犯了一个小错误,导致飞机上的全球定位系统纷纷失灵,有一架战机“折戟沉沙”。软件质量正牵动着经济和社会的命脉,忽视软件质量必将让我们付出更大的代价,受到更为严厉地惩罚。如何提高软件的质量已成为软件工程领域研究的一个重点。
2、软件质量的概念
软件质量目前有好多种定义。世界著名质量管理专家Juxan博上在他的经典著作《质量控制手册》中把质量定义为“产品在使用时能成功的适合用户目的的程度”。国际标准组织在质量特性国际标准ISO/IEC9126中定义软件质量为“与一个产品或服务是否能够满足其指定的或蕴含的需求有关的性质与特征的总和”。ISO的这一定义强调了软件的性质和特征,强调了这些性质和特征与软件的明确的和潜在的需求的吻合程度。MJ.Fisher将软件质量定义为:所有描述计算机优秀程度的特性的组合。即要得到高质鼍的软件产品就必须满足软件的各项精确定义的功能、性能要求,符合文档化的开发标准。而按照Ansi/IEEEstd1061—1992中的标准,软件质量定义为:与软件产品满足需求所规定的和隐含的能力有关的特征或特性的全体口。对软件企业而言,软件质量就是能够按时在预定的成本范围内,交付满足顾客需求的软件产品。具体来说就是软件质量在软件开发过程中应满足完整性、规范性和科学性;软件结构方面应满足可理解性、可测试维护性、易操作性和可重用性;软件功能与性能方面应满足需求覆盖性、正确性和健壮性。
3、软件质量保证的过程
软件质量保证SQA(Software Quality Assurance)是贯穿整个项目的基础活动,它包括:一种质量管理方法;有效的软件工程技术、方法和工具;在整个过程中采用正式技术评审:一种多层次的测试策略;对文档和文档修改的控制;保证软件开发遵从软件开发规程;度量和报告机制。软件质量保证根据用户要求,提供满足他们要求的一系列活动,这些活动贯穿于软件的开发过程,每个活动的能力水平是否达到产品所要求的水平则要通过软件质量度量来评价。软件质量保证的一般过程如图所示。
(1)SQA计划的制定。软件项日启动后,根据项目计划制定出相应的软件质量保证(SQA)计划,定义出各阶段的检查重点,标识出监控的对象,以及在每个阶段SQA的输出产品。
(2)SQA计划的监控和评市。编写完SQA计划后组织SQA计划的监控和评审,形成评审报告并通知受影响的组。对于阶段产品的监控通常是检查其阶段产品是否按计划按企业内部统一的规程规程完整输出。由于SQA对于阶段产品内容的正确性不负责检查,因而内容的正确性就由项目中的评审来完成。SQA参与评审的目的是为保证评审过程的有效性,如参与评市的人是否具备资格、被评审的对象是否每个部分都进行了评审、形成的验证报告是否给出了明确的结论等等。
(3)问题的解决。对于项目日常工作中发现的问题和SQA评审过程中发现的问题,SQA要对其进行跟踪,直至问题解决。在设计规格审查会议上发现的设计瑕疵,由项目负责人对设计规格进行更新,并由SQA进行跟踪,确保所有瑕疵在新的设计规格中得到正确解决。在项目组内可以解决的问题就在项目组内部解决;项目负责人无法解决的问题,或是在项目组中跟踪多次也未得到解决的问题,将问题上报给高层主管。
文提出PDCA(Planning,Do,Check,Action)环和IDEAL(Initiating,Diagnosing,Establishing,Acting,Leveraging)
模型,都是软件过程改进的基本过程和方法,在此基础上,先进行问题的收集、归类、统计和原因分析,再进行问题排序、针对问题进行纠正、确定纠正措施等,形成一个自反馈系统便可实现持续过程的改进。
4、软件质量保证的方法
软件质量保证的目的是为管理者提供软件项目正在使用的过程和正在构造的产品的适当的可视性。软件质量保证通常有两类方法:一种是以预防为主。通过标准化、过程管理等如CMM、ISO以控制质量缺陷为目的的事前控制;一种是以调试、测试、技术评审等以找出质量缺陷为目的的事后控制。以事后控制解决软件质量问题有一定的局限性,软件质量保证更重要的是事前控制。从技术层面上来说,软件质量保证方法又可以分为:框架级、方法级和技术级三种。框架级指导我们该做什么和结果是什么;技术级只解决具体的问题,如确定是黑盒还是白盒测试等;方法级则衔接框架级和技术级,是软件质量保障的强有力武器。
软件的质量保证应构筑以用户满意为中心,能防患于未然的质量保证体系。文提出影响软件质量的因素有人的因素、过程因素和技术因素,并提出基于CMM的软件质量管理与保证体系和基于IS09000的软件质量保证体系,在软件测试过程中通过精心设计软件测试用例来保证软件质量。
文提出通过以客户的质量需求为基础,在项目开发周期的各个检查点建立质量目标;接着定义各种质量度量来评价项目活动的结果是否达到质量目标;然后确定能够帮助实现各项质量目标的活动,并将这些活动集成到软件生命周期模型中去:最后执行已经确定的质量活动和评价质量目标是否达到,若未达到则采取修正行动等步骤来实现软件质量保证。
5、软件质量的度量
软件质量度量是指用于确定某一软件产品质量特性值的定量测量与度量方法。具体来说就是对软件开发项目、过程及其产品进行数据定义、收集以及分析的持续性定量化过程,目的在于对此加以理解、预测、评估、控制和改善。软件度量具有增加理解、管理软件项目、指导软件过程改善等作用。软件度量包括过程度量、产品度量和项目度量。通过软件度量可以改进软件开发过程,促进项目成功,从而开发出高质量的软件产品。
在文献中详细介绍了软件质量度量常用的McCall质量模型、Boehm质量模型、ISO9126软件质量模型这三种模型。文献提出软件质量度量方法为:在软件开发初期先定义软件质量需求,并根据应用环境为软件开发的各个阶段和其最终产品分别确定适当的度量元、质最子特性和合理的评估准则等为软件质量度量作准备;在数据收集过程中规定从数据收集点到度量评价的数据流程。确定有关数据的收集条件,并给出工具的使用说明及数据存放规程来实现软件质量度量;最后把预测的度量结果与直接度量结果进行比较来分析质量度量结果。
国外研究现状:美国的B.W.Boehm和R.Brown先后提出了三层次的质量度量模型:软件质量要素、准则、度量。随后G.Mruine提出了自己的软件质量度量SQM(Software
Quality Surement)技术,波音公司在软件开发过程中采用了SQM技术,日本的NEC公司开发出了自己的SQM工具,即SQMAT,并且在成本控制和进度安排方面取得了良好效果。而IEEE
Std 1061软件质量度量方法学提供了系统地进行软件质量度量的途径,包括建立某个软件系统的质量需求、标识、实现、分析并确认该软件的质量度量过程。马里兰大学的VictorBasili提出了一种丽向目标的度量方法,即GQM(Goal—Ques—tion—Metric)方法。这种度量方法首先建立一个目标(Goa1),之后将这个目标细化成一系列问题(Question),再定义回答这些问题所必需的数据(Metric),最后形成一棵GQM树。通过GQM树验证收集的数据是否可以回答定义的问题,若回答了所定义的问题是否就可以满足所定义的目标。在软件开发过程中,收集这些数据,通过对数据的分析来回答问题,并最终达到度量的目标。
6、总结与展望
软件质量保证提供了相应的方法来帮助提高软件质量,同时能够避免软件企业交付软件产品给客户后出现严重的质量问题。众所周知,软件质量保证是由一系列的活动组成的,而活动都是一个个的过程,通过分析过程、控制过程和改进过程,就能够将影响质量的所有活动和所有环节控制住,从而保证软件质量。因而,通过设计能够保证软件质量的方法对软件过程进行严格控制,来提高软件质量将是未来研究的主要趋势。通过软件质量度量,我们可以了解到过程中存在的问题,从而在发现问题的基础上,进一步针对问题来解决问题,进而对过程进行改进。在软件度量方面,对软件度量工具进行改进将可以大量减少数据收集的工作量,避免人力资源的浪费。
|