您好,欢迎访问三七文档
14.114.214.314.4软件可靠性14.514.6第14章软件质量评价和保证返回主目录第14章软件质量评价和保证14.114.1.1软件质量的定义软件质量是贯穿软件生存期的一个极为重要的问题,关于软件质量的定义有多种说法,从实际应用来说,软件质量定义如下:(1)与所确定的功能和性能需求的一致性。(2)与所成文的开发标准的一致性。(3)与所有专业开发的软件所期望的隐含特性的一致性。上述软件质量定义反映了以下3个方面的问题:(1)软件需求是度量软件质量的基础。不符合需求的软件就不具备质量。(2)专门的标准中定义了一些开发准则,用来指导软件人员用工程化的方法来开发软件。如果不遵守这些开发准则,软件质量就得不到保证。(3)往往会有一些隐含的需求没有明确地提出来。例如,软件应具备良好的可维护性。如果软件只满足那些精确定义了的需求而没有满足这些隐含的需求,软件质量也不能保证。软件质量是各种特性的复杂组合。它随着应用的不同而不同,随着用户提出的质量要求不同而不同。14.1.2软件质量的度量和评价一般说,影响软件质量的因素可以分为如下两大类:(1)可以直接度量的因素,如单位时间内千行代码(KLOC)中所产生的错误数。(2)只能间接度量的因素,如可用性或可维护性。在软件开发和维护过程中,为了定量地评价软件质量,必须对软件质量特性进行度量,以测定软件具有要求质量特性的程度。1976年,Boehm等人提出了定量评价软件质量的层次模型(见图14.1);1978年Walters和McCall提出了从软件质量要素、准则到度量的3个层次式的软件质量度量模型(见图14.2);G.Murine根据上述等人的工作,提出软件质量度量(SQM)技术(见图14.3),用来定量评价软件质量。图14.1Boehm软件质量度量模型设备独立性完整性准确性一致性设备效率可存取性通信性结构性准确性自描述性简洁性可扩充性可移植性可靠性效率环境工程可测试性可理解性可修改性易读性可使用性可维护性总能力图14.2McCall软件质量度量模型可训练性可操作性可跟踪性完整性容错性准确性一致性执行效率复杂性安全性工具性可审计性可用性简明性产品操作产品修改可扩充性模块性自描述性通用性简洁性硬件独立性软件独立性通信公用性数据公用性正确性可靠性效率完备性可维护性适应性可测试性可移植性可重用性互操作性产品适应14.1.3软件质量保证1.软件的质量保证就是向用户及社会提供满意的高质量的产品,确保软件产品从诞生到消亡为止的所有阶段的质量活动,即确定、达到和维护需要的软件质量而进行的所有有计划、有系统的管理活动。它包括的主要功能有:质量方针的制定;质量保证方针和质量保证标准的制定;质量保证体系的建立和管理;明确各阶段的质量保证工作;各阶段的质量评审;确保设计质量;重要质量问题的提出与分析;总结实现阶段的质量保证活动;整理面向用户的文档、说明书等;产品质量鉴定、质量保证系统鉴定;质量信息的收集、分析和使用。2.质量保证策略的发展大致可以分为以下3个阶段:(1)以检测为重。产品制成后才进行检测,这种检测只能判断产品的质量,不能提高产品质量。(2)以过程管理为重。把质量保证工作重点放在过程管理上,对制造过程的每一道工序都进行质量控制。(3)以新产品开发为重。许多产品的质量问题源于新产品的开发设计阶段,因此在产品开发设计阶段就应采取有力措施,以便消灭由于设计原因而产生的质量隐患。由上可知,软件质量保证应从项目计划和设计开始,直到投入使用和售后服务的软件生存期的每一阶段中的每一步骤。3.为了提高软件的质量,软件质量保证的任务大致可归结为以下几点:(1)正确定义用户要求:软件质量保证人员必须正确定义用户所要求的技术。必须十分重视领导全体开发人员收集和积累有关用户业务领域的各种业务资料和技术技能。(2)技术方法的应用:开发新软件的方法,最普遍公认的成功方法就是软件工程学的方法。标准化、设计方法论、工具化等都属此列。应当在开发新软件的过程中大力使用和推行软件工程学中所介绍的开发方法和工具。(3)提高软件开发的工程能力:只有高水平的软件工程能力才能生产出高质量的软件产品。因此须在软件开发环境或软件工具箱的支持下,运用先进的开发技术、工具和管理方法提高开发软件的能力。(4)软件的复用:利用已有的软件成果是提高软件质量和软件生产率的重要途径。不要只考虑如何开发新软件,首先应考虑哪些已有软件可以复用,并在开发过程中,随时考虑所生产软件的复用性。(5)发挥每个开发者的能力:软件生产是人的智能生产活动,它依赖于开发组织团队的能力。开发者必须有学习各专业业务知识、生产技术和管理技术的能动性。管理者或产品服务者要制定技术培训计划、技术水平标准,以及适用于将来需要的中长期技术培训计划。(6)组织外部力量协作:一个软件自始至终由一软件开发单位来开发也许是最理想的,在现实中难以做到。因此需要改善对外部协作部门的开发管理,必须明确规定进度管理、质量管理、交接检查和维护体制等各方面的要求,建立跟踪检查的体制。(7)排除无效劳动:最大的无效劳动是因需求说明有误、设计有误而造成的返工。定量记录返工工作量,收集和分析返工劳动花费的数据非常重要。另一种较大的无效劳动是重复劳动,即相似的软件在几个地方同时开发。这多是因项目开发计划不当,或者开发信息不流畅造成的。为此,要建立互相交流、信息往来通畅和具有横向交流特征的信息流通网。(8)提高计划和管理质量:对于大型软件项目来说,提高工程项目管理能力是极其重要的。必须重视项目开发初期计划阶段的项目计划评价、计划执行过程中及计划完成报告的评价将评价、评审工作在工程实施之前就列入整个开发工程的工程计划之中。4.软件质量必须在设计和实现过程中加以保证。如果工程能力不够,或者由于各种失误导致产生软件差错,其结果就会产生软件失效。为了确保每个开发过程的质量,防止把软件差错传递到下一个过程,必须进行质量检验。因此须在软件开发工程的各个阶段实施检验。检验的实施有实际运行检验(即白盒测试和黑盒测试)和鉴定两种形式,可在各开发阶段中结合起来使用。14.214.2.1McCallMcCall质量度量模型是McCall等人于1979年提出的软件质量模型,如图14.2所示。针对面向软件产品的运行、修正和转移,软件质量概念包括如下11个特性。1)(1)正确性:指软件满足设计说明及用户预期目标的程度。(2)可靠性:指软件按照设计要求,在规定时间和条件下不出故障,持续运行的程度。(3)效率:为了完成预定功能,软件系统所需的计算机资源和程序代码数量的程度。(4)完整性:对非授权人访问软件或数据行为的控制程度。(5)可用性:用户熟悉、使用及准备输入和解释输出所需工作量的大小。2)(1)可维护性:指找到并改正程序中的一个错误所需代价的程度。(2)可测试性:指测试软件以确保其能够执行预定功能所需工作量的程度。(3)适应性:指修改或改进一个已投入运行的软件所需工作量的程度。3)(1)可移植性:指将一个软件系统从一个计算机系统或环境移植到另一个计算机系统或环境中运行时所需的工作量。(2)可重用性:指一个软件(或软件的部件)能再次用于其他相关应用的程度。(3)可互操作性:指将一个系统耦合到另一个系统所需的工作量。通常,对以上各个质量特性直接进行度量是很困难的,在有些情况下甚至是不可能的。因此,McCall定义了一些评价准则,使用它们对反映质量特性的软件属性分级,以此来估计软件质量特性的值。软件属性一般分级范围从0(最低)~10(最高)。主要评价准则定义如下:(1)可跟踪性:指跟踪一个设计说明或一个实际程序部件返回到需求的能力(可追溯)。(2)完备性:指所需功能实现的程度。(3)一致性:指在整个软件开发项目中使用统一的设计和文档编制技术的程度。(4)安全性:指防止软件受到意外的或蓄意的存取、使用、修改及毁坏,或防止失密的程度。(5)容错性:是在系统出错时,能以某种预定方式,做出适当处理,得以继续执行和恢复系统的能力,它又称为健壮性。(6)准确性:指能达到的计算或控制精度,又称为精确性。(7)可审查性:指检查与标准是否符合的难易程度。(8)可操作性:指软件操作的难易程度。(9)可训练性:指软件使新用户使用该系统的辅助程度。(10)简洁性:在不复杂、可理解的方式下,定义和实现软件功能的程度。(11)简明性:又称可理解性,指软件易读的程度。(12)模块性:指软件系统内部接口达到的高内聚、低耦合的程度。(13)自描述性:对软件功能进行自身说明的程度。(14)通用性:指软件功能覆盖面宽广的程度。(15)可扩充性:指软件的体系结构、数据设计和过程设计的可扩充的程度。(16)硬件独立性:指不依赖于某个特定设备及计算机而能工作的程度。(17)通信共用性:指使用标准接口、协议和带宽的程度。(18)数据共用性:指使用标准数据结构和数据类型的程度。14.2.2ISO的软件质量评价模型按照ISO/TC97/SC7/WG3/1985-1-30/N382,软件质量度量模型由3层组成,如图14.3所示。高层是软件质量需求评价准则(SQRC)。中层是软件质量设计评价准则(SQDC)。低层是软件质量度量评价准则(SQMC)。ISO认为,应对高层和中层建立国际标准,在国际范围内推广软件质量管理(SQM)技术,而低层可由各使用单位视实际情况制定。ISO的3层次模型来自McCall等人的模型。高层、中层和低层分别对应于McCall模型中的特性、度量准则和度量。其中SQRC由8个元素组成。可追踪性完备性一致性准确性(精确性)容错性(键壮性)简单性(复杂性)简明性(可理解性)模块独立性通用性可扩充性自检性(工具性)自描述性执行效率存储效率存储控制存取审查操作性可训练性通信性软件系统独立性机器独立性通信共享性数据共享性SQDC正确性可靠性可维护性效率安全性灵活性可使用性互连性SQRCSQMC使用单位自行制定图14.3ISO的3层模型按1991年ISO发布的ISO/IEC9126质量特性国际标准,SQRC已降为6个。在这个标准中,3层次中的第一层称为质量特性,第二层称为质量子特性,第三层称为度量。14.3软件复杂性14.3.1软件度量的一个重要分支就是软件复杂性度量。对于软件复杂性,至今尚无一种公认的精确定义。软件复杂性与质量属性有着密切的关系,从某些方面反映了软件的可维护性、可靠性等质量要素。软件复杂性度量的参数很多,主要有如下几种:(1)规模:即总共的指令数,或源程序行数。(2)难度:通常由程序中出现的操作数的数目所决定的量来表示。(3)结构:通常用与程序结构有关的度量来表示。(4)智能度:即算法的难易程度。软件复杂性主要表现在程序的复杂性。程序的复杂性主要指模块内程序的复杂性,它直接关联到软件开发费用的多少、开发周期长短和软件内部潜伏错误的多少,同时它也是软件可理解性的另一种度量。减少程序复杂性,可提高软件的简单性和可理解性,并使软件开发费用减少,开发周期缩短,软件内部潜藏错误减少。为了度量程序复杂性,要求复杂性度量满足以下假设:(1)它可以用来计算任何一个程序的复杂性。(2)对于不合理的程序,例如对于长度动态增长的程序,或者对于原则上无法排错的程序,不应当使用它进行复杂性计算。(3)如果程序中指令条数、附加存储量及计算时间增多,不会减少程序的复杂性。14.3.21.代码行度量法度量程序的复杂性,最简单的方法就是统计程序的源代码行数。此方法的基本考虑是统计一个程序的源代码行数,并以源代码行数作为程序复杂性的度量。若设每行代码的出错率为每100行源程序中可能的错误数目,例如每行代码的出错率为1%,则是指每100行源程序中可能有一个错误。Thayer曾指出,程序出错率的估算范围是从0.04%~7%之间,即每100行源程序中可能存在0.04~7个错误。他还指出,每行代码的出错率与源程序行数之间不存在简单的线性关系。Lipow进一步指出,对小程序,每行代码的出错率为1.3%~1.8%;对于大程序,每行代码的出错率增加到2.7%~3.2%之间。但这只是考虑了程序的可执行部分,没有包括程
本文标题:软件质量评价和保证
链接地址:https://www.777doc.com/doc-3808215 .html