【摘要】软件质量的好坏直接关系到用户的正常使用,更牵涉到软件的应用和发展,所以软件质量保证至关重要。采取了有效的方法保证软件质量后,必须对软件质量进行度量,这样才能确定软件质量是否达标。主要介绍了软件质量的重要性、概念及软件质量保证和度量的方法,国内外研究的现状,后总结全文并进行了展望。

  【关键词】软件质量;软件质量保证;保证方法

  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) 模型,都是软件过程改进的基本过程和方法,在此基础上,先进行问题的收集、归类、统计和原因分析,再进行问题排序、针对问题进行纠正、确定纠正措施等,形成一个自反馈系统便可实现持续过程的改进。