仲恺农业技术学院计算机与电子工程学院15:10:2818.1软件质量概念8.2软件可靠性仲恺农业技术学院计算机与电子工程学院15:10:2828.1软件质量概念8.1.1软件质量的定义8.1.2软件质量特性8.1.3软件质量模型8.1.4软件质量的度量和评价仲恺农业技术学院计算机与电子工程学院15:10:2838.1.1软件质量的定义ANSI/IEEEStd729-1983定义软件质量为“与软件产品满足规定的和隐含的需求的能力有关的特征或特性的全体”。M.J.Fisher定义软件质量为“所有描述计算机软件优秀程度的特性的组合”。仲恺农业技术学院计算机与电子工程学院15:10:284软件质量的三个一致性:与所确定的功能和性能一致性,即需求一致性。与成文的开发标准一致性。与所有专业开发的软件所期望了隐含性的一致性。仲恺农业技术学院计算机与电子工程学院15:10:2858.1.2软件质量特性软件质量特性,反映了软件的本质。讨论一个软件的质量,问题最终要归结到定义软件的质量特性。定义一个软件的质量,就等价于为该软件定义一系列质量特性。人们通常把影响软件质量的特性用软件质量模型来描述。仲恺农业技术学院计算机与电子工程学院15:10:2868.1.3软件质量模型软件质量特性定义成分层模型最基本的叫做基本质量特性,它可以由一些子质量特性定义和度量。1976年Boehm质量模型1979年McCall质量模型1985年ISO质量模型仲恺农业技术学院计算机与电子工程学院15:10:287仲恺农业技术学院计算机与电子工程学院15:10:288ISO的软件质量评价模型按照ISO/TC97/SC7/WG3/1985-1-30/N382,软件质量度量模型由三层组成软件质量需求评价准则(SQRC)软件质量设计评价准则(SQDC)软件质量度量评价准则(SQMC)高层和中层建立国际标准,低层可由各使用单位视实际情况制定仲恺农业技术学院计算机与电子工程学院15:10:289仲恺农业技术学院计算机与电子工程学院15:10:28101991年ISO质量特性国际标准(ISO/IEC9126)质量特性:功能性、可靠性、可维护性、效率、可使用性、可移植性推荐21个子特性:适合性准确性互用性依从性安全性成熟性容错性可恢复性可理解性易学习性操作性时间特性资源特性可分析性稳定性可变更性可测试性可安装性可替换性适应性一致性仲恺农业技术学院计算机与电子工程学院15:10:2811McCall质量模型仲恺农业技术学院计算机与电子工程学院15:10:2812仲恺农业技术学院计算机与电子工程学院15:10:28138.2软件可靠性软件生存期与软件寿命的关系在软件工程中常用的定义软件可靠性定义测试中的可靠性分析测试精确度和测试覆盖度的评价仲恺农业技术学院计算机与电子工程学院15:10:2814软件生存期与软件寿命的关系一切有生命的东西都有一个“寿命”这个概念也可以延伸到对非生命产品的质量评价上来。例如一个电子产品的寿命就是指该产品从出厂直到丧失使用价值的持续时间。从软件工程的角度来说,软件产品的寿命是指软件的整个生存期。仲恺农业技术学院计算机与电子工程学院15:10:2815从软件用户的角度来看,更关心的是软件在交付使用后的情况如何。希望用一个指标平均失效间隔时间MTBF(MeanTimeBetweenFailure)来表明,在规定的要求和条件下,能在多大的程度上依赖这个软件来完成任务。我们把在使用期间软件能够正常工作的持续时间叫做软件的使用寿命。仲恺农业技术学院计算机与电子工程学院15:10:2816软件的使用寿命与输入环境有关。例如,有一个存在缺陷的编译程序,当用于学生做简单练习时,MTBF可能很长。而做一个大的课题时,由于程序连续出错,MTBF就会变得很短。MTBF可以看做是对软件可靠性做估计的样本数据,但不能看做是依据。仲恺农业技术学院计算机与电子工程学院15:10:2817“错误”这一术语。在没有特别加以说明的情况下,这是一个泛用的、模糊的概念。它指的可能是bug(设计中的差错)、fault(故障)、error(错误)、failure(失效)、crash(重大事故)、problem(疑问)等。在汉译中,这些术语的使用更加混乱。仲恺农业技术学院计算机与电子工程学院15:10:2818在软件工程中常用的定义故障(fault):软件的内在缺陷。这些缺陷可在生存期各个阶段被引入。错误(error):故障在一定的环境条件下的暴露,导致系统在运行中出现了不正常、不正确、不按规范执行的状态,称为软件出错。失效(failure):对错误不做任何修正和恢复,导致系统的输出不满足用户要求,称为软件的一次失效。仲恺农业技术学院计算机与电子工程学院15:10:2819以上定义的故障、错误和失效,分别代表了广义的“错误”在不同的条件下所对应的术语。它们可以理解为:设计者的失误─导致系统中留有错误的设计──缺陷或“故障”(fault),这些故障导致系统的错误执行──错误(error),由于错误导致系统的错误输出──失效(failure)。仲恺农业技术学院计算机与电子工程学院15:10:2820故障是物理地或静态地存在的失误、错误和失效都是系统的一种动态的转瞬即逝的现象软件发生失效标志着软件一次使用寿命的结束发生过失效的软件通常仍然是可用的。只有当软件频繁失效,或者公认已经“过时”了的时侯,软件才被废弃,意味着当前这一版本软件使用寿命的终结。仲恺农业技术学院计算机与电子工程学院15:10:2821软件故障产生原因支持软件工作的基本条件(除硬件外的操作系统、数据库管理系统、编译程序、微代码等)的缺陷软件设计不当加入了允许范围之外的输入仲恺农业技术学院计算机与电子工程学院15:10:2822软件可靠性的定义软件可靠性是软件在给定的时间间隔及给定的环境条件下,按设计要求,成功地运行程序的概率。环境条件─指的是软件的使用环境。无论是什么软件,如果不对它的使用环境加以限制,都是会失效的。这种失效的数据,不能用来度量软件的可靠性。仲恺农业技术学院计算机与电子工程学院15:10:2823规定的时间─在定义中,一般采用“运行时间”t作为时间的尺度。因具体要处理的问题是多种多样的其对应的输入环境是随机程序中相应程序路径的选取也是随机的软件的失效也是随机的应当把运行时间t当作随机变量来考虑。仲恺农业技术学院计算机与电子工程学院15:10:2824规定的功能─在考虑软件可靠性时,首先应当明确软件的功能是什么,哪些功能是主要的,哪些功能是次要的。一般从软件需求分析说明书和设计说明书中可以了解这些情况。由于功能不同,失效带来的损失就不一样。因此,还要明确哪些失效是致命的,哪些失效是非致命的,哪些又是容易修复的。此外,还要明确,怎样才算是完成了一个规定的功能。仲恺农业技术学院计算机与电子工程学院15:10:2825成功地运行程序─是指不仅程序能正确地运行,满足用户对它的功能要求,而且当程序一旦受到意外的伤害,或系统故障时,能尽快恢复,仍能正常地运行。仲恺农业技术学院计算机与电子工程学院15:10:2826测试中的可靠性分析在软件开发的过程中,利用测试的统计数据,估算软件的可靠性,以控制软件的质量是至关重要的。可以做如下分析:推测错误的产生频度,即推测错误产生的时间间隔(平均失效等待时间MTTF)推测残留在程序中的错误数ET评价测试的精确度和覆盖率仲恺农业技术学院计算机与电子工程学院15:10:2827推测错误的产生频度估算错误产生频度的一种方法是估算平均失效等待时间MTTF(MeanTimeToFailure)MTTF估算公式(Shooman模型)MTTF=IKEEtTTC(())仲恺农业技术学院计算机与电子工程学院15:10:2828EtEeTKt()()1故障累积指数曲线模型仲恺农业技术学院计算机与电子工程学院15:10:2829估算软件中故障总数ET的方法利用Shooman模型估算程序中原来错误总量ET—瞬间估算EttKEIEtIEttKEIEtICTTCTCTTCT()()()()11122211MTTFMTTF12仲恺农业技术学院计算机与电子工程学院15:10:2830解此方程组()()()()EtttEttEtEtEtTCCCC21211212()(())KIEttEEtTCTC111仲恺农业技术学院计算机与电子工程学院15:10:2831利用最小二乘法进行程序原有错误数ET及K的估算由失效率整理得若对程序进行若干次不同的功能测试,可得到一系列实验数据KEIEtITTcT()EtIEIKcTTT()仲恺农业技术学院计算机与电子工程学院15:10:2832Ec(ti),(ti),i=1,2,…,n令有1KaEIbEtItTTCiTiii,,(),()iiabin,,,,12仲恺农业技术学院计算机与电子工程学院15:10:2833用最小二乘法解此方程组,可解出a、b的估计值最后得到K,ET的估计值,KaEIbTT1仲恺农业技术学院计算机与电子工程学院15:10:2834利用植入故障法估算程序中原有故障总数ET─捕获-再捕获抽样法设Ns是在测试前人为地向程序中植入的故障数(称播种故障),ns是经过一段时间测试后发现的播种故障的数目,n是在测试中又发现的程序原有故障数。设测试用例发现植入故障和原有故障的能力相同,则程序中原有故障总数N(=ET)估算值为NNnnss仲恺农业技术学院计算机与电子工程学院15:10:2835Hyman分别测试法由两个测试员同时互相独立地测试同一程序的两个副本,用t表示测试时间,记t=0时,程序中原有故障总数是B0;t=t1时,测试员甲发现的故障总数是B1;测试员乙发现的故障总数是B2;其中两人发现的相同故障数目是bc;两人发现的不同故障数目是bi。仲恺农业技术学院计算机与电子工程学院15:10:2836在大程序测试时,头几个月两个测试员测试的结果应当比较接近,bi不是很大。这时有如果bi比较显著,应当每隔一段时间,由两个测试员再进行分别测试,分析测试结果,估算B0。如果bi减小,或几次估算值的结果相差不多,则B0作为原有错误总数的估算值。BBBbc012仲恺农业技术学院计算机与电子工程学院15:10:2837测试精确度和测试覆盖度的评价在软件测试过程中累积发现的故障数,可用带有平均值函数m(t)的非齐次泊松过程(NHPP)来描述:其中,N是在测试中可能发现的故障总数,b是故障发现率。当N一定时,b越大,在短期内发现的故障越多。mtNebt()1仲恺农业技术学院计算机与电子工程学院15:10:2838仲恺农业技术学院计算机与电子工程学院15:10:2839N可以认为是当测试时间无限延长时估计可能发现的故障总数。由于测试的不完全,在某些很难发现的故障未发现前就可能结束测试若程序中潜在的故障较少,则参数N的估计误差较大因此,只用测试中累积发现的故障数来评价测试是不够的。需要从测试的量的方面和质的方面,全面地评价测试。仲恺农业技术学院计算机与电子工程学院15:10:2840SPQL(SoftwareProductQualityLevel)用如下公式度量:SPQL=Ac×Cv其中,Ac(TestAccuracy)是测试的精确度,它反映了测试的质量;Cv(TestCoveragy)是测试的覆盖度,它反映了测试的数量。测试结束时软件产品质量水准仲恺农业技术学院计算机与电子工程学院15:10:2841测试质量的度量可以靠测试的故障捕捉率和遗漏率来衡量。测试数量的度量指标是执行的测试用例数、确认的程序路径数等等;仲恺农业技术学院计算机与电子工程学院15:10:2842测试精确度Ac表明在测试的过程中以多大的把握捕捉了软件中潜在的故障。测定Ac,需要预先植入播种故障,然后通过测试,根据播种故障的捕捉率来推测原有故障的捕获率。仲恺农业技术学院计算机