《软件质量与质量保证精.ppt》由会员分享,可在线阅读,更多相关《软件质量与质量保证精.ppt(39页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、软件质量与质量保证软件质量与质量保证第1页,本讲稿共39页110.1 软件质量的概念软件质量的概念第2页,本讲稿共39页2软件质量的定义软件质量的定义(1)与所确定的功能和性能需求的一致性。与所确定的功能和性能需求的一致性。(2)与所成文的开发标准的一致性。与所成文的开发标准的一致性。(3)与所有专业开发的软件所期望的隐含特与所有专业开发的软件所期望的隐含特性的一致性。性的一致性。第3页,本讲稿共39页3影响软件质量的因素影响软件质量的因素(1)可以直接度量的因素,如单位时间内千可以直接度量的因素,如单位时间内千行代码(行代码(KLOC)中产生的错误数。)中产生的错误数。(2)只能间接度量的因
2、素,如可用性或可维只能间接度量的因素,如可用性或可维护性。护性。l在软件开发和维护的过程中,为了定量在软件开发和维护的过程中,为了定量地评价软件质量,必须对软件质量特性地评价软件质量,必须对软件质量特性进行度量,以测定软件具有要求质量特进行度量,以测定软件具有要求质量特性的程度。性的程度。第4页,本讲稿共39页4什么是软件质量保证什么是软件质量保证l软件的质量保证就是向用户及社会提供软件的质量保证就是向用户及社会提供满意的高质量的产品,确保软件产品从满意的高质量的产品,确保软件产品从诞生到消亡为止的所有阶段的质量的活诞生到消亡为止的所有阶段的质量的活动,即确定、达到和维护需要的软件质动,即确定
3、、达到和维护需要的软件质量而进行的所有有计划、有系统的管理量而进行的所有有计划、有系统的管理活动。活动。第5页,本讲稿共39页5质量保证的策略质量保证的策略(1)以检测为重。产品制成后才进行检测,以检测为重。产品制成后才进行检测,这种检测只能判断产品的质量,不能提这种检测只能判断产品的质量,不能提高产品质量。高产品质量。(2)以过程管理为重。把质量保证工作重点以过程管理为重。把质量保证工作重点放在过程管理上,对制造过程的每一道放在过程管理上,对制造过程的每一道工序都进行质量控制。工序都进行质量控制。(3)以新产品开发为重。以新产品开发为重。第6页,本讲稿共39页6质量保证的主要任务质量保证的主
4、要任务(1)正确定义用户要求。正确定义用户要求。(2)技术方法的应用。技术方法的应用。(3)提高软件开发的工程能力。提高软件开发的工程能力。(4)软件的复用。软件的复用。(5)发挥每个开发者的能力。发挥每个开发者的能力。(6)组织外部力量协作。组织外部力量协作。(7)排除无效劳动。最大的无效劳动是因需求规格排除无效劳动。最大的无效劳动是因需求规格说明有误、设计有误而造成的返工。说明有误、设计有误而造成的返工。(8)提高计划和管理质量。提高计划和管理质量。第7页,本讲稿共39页7质量保证与检验质量保证与检验l软件质量必须在设计和实现过程中加以软件质量必须在设计和实现过程中加以保证。保证。第8页,
5、本讲稿共39页810.2 质量度量模型质量度量模型第9页,本讲稿共39页9McCall质量度量模型质量度量模型第10页,本讲稿共39页10ISO的软件质量评价模型的软件质量评价模型第11页,本讲稿共39页1110.3 软件复杂性软件复杂性第12页,本讲稿共39页12软件复杂性的基本概念软件复杂性的基本概念(1)规模,即总共的指令数,或源程序行数。规模,即总共的指令数,或源程序行数。(2)难度,通常由程序中出现的操作数的数目所决定的难度,通常由程序中出现的操作数的数目所决定的量来表示。量来表示。(3)结构,通常用于程序结构有关的度量来表示。结构,通常用于程序结构有关的度量来表示。(4)智能度,即
6、算法的难易程度。智能度,即算法的难易程度。l软件复杂性主要表现在程序的复杂性。程序的复杂软件复杂性主要表现在程序的复杂性。程序的复杂性主要指模块内程序的复杂性。它直接关联到软件性主要指模块内程序的复杂性。它直接关联到软件开发费用的多少、开发周期长短和软件内部潜伏错开发费用的多少、开发周期长短和软件内部潜伏错误的多少。同时它也是软件可理解性的另一种度量。误的多少。同时它也是软件可理解性的另一种度量。第13页,本讲稿共39页13软件复杂性的度量方法软件复杂性的度量方法-代码行度量法代码行度量法l度量程序的复杂性,最简单的方法就是度量程序的复杂性,最简单的方法就是统计程序的源代码行数。此方法的基本统
7、计程序的源代码行数。此方法的基本考虑是统计一个程序的源代码行数,并考虑是统计一个程序的源代码行数,并以源代码行数作为程序复杂性的质量。以源代码行数作为程序复杂性的质量。第14页,本讲稿共39页14软件复杂性的度量方法软件复杂性的度量方法-McCabe度量法度量法lMcCabe度量法是由度量法是由ThomasMcCabe提出的一种基提出的一种基于程序控制流的复杂性度量方法。于程序控制流的复杂性度量方法。McCabe复杂性度复杂性度量又称环路度量。它认为程序的复杂性很大程度上取量又称环路度量。它认为程序的复杂性很大程度上取决于程序的复杂性。单一的顺序结构最为简单,循环决于程序的复杂性。单一的顺序结
8、构最为简单,循环和选择所构成的环路越多,程序就越复杂。这种方法和选择所构成的环路越多,程序就越复杂。这种方法以图论为工具,先画出程序图,然后用该图的环路数以图论为工具,先画出程序图,然后用该图的环路数作为程序复杂性的度量值。程序图是退化的程序流程作为程序复杂性的度量值。程序图是退化的程序流程图。也就是说,把程序流程图的每一个处理符号都退图。也就是说,把程序流程图的每一个处理符号都退化成一个结点,原来连接不同处理符号的流线变成连化成一个结点,原来连接不同处理符号的流线变成连接不同结点的有向弧,这样得到的有向图就叫做程序接不同结点的有向弧,这样得到的有向图就叫做程序图。图。第15页,本讲稿共39页
9、15软件复杂性的度量方法软件复杂性的度量方法-McCabe度量法度量法第16页,本讲稿共39页16软件复杂性的度量方法软件复杂性的度量方法-McCabe度量法度量法根据图论,在一个强连通的有向图根据图论,在一个强连通的有向图G中,环的个数中,环的个数V(G)由以下公式给出:由以下公式给出:V(G)=m-n+2pl其中,其中,V(G)是有向图是有向图G中环路数,中环路数,m是图是图G中弧数,中弧数,n是图是图G中结点数,中结点数,p是图是图G中强连通分量个数。在一个程序中,从程序图的入口点总能到达图中强连通分量个数。在一个程序中,从程序图的入口点总能到达图中任何一个结点,因此,程序总是连通的,但
10、不是强连通的。为了使图中任何一个结点,因此,程序总是连通的,但不是强连通的。为了使图成为强连通图,从图的入口点到出口点加一条用虚线表示的有向边,使成为强连通图,从图的入口点到出口点加一条用虚线表示的有向边,使图成为强连通图。这样就可以使用上式计算环路复杂性了。图成为强连通图。这样就可以使用上式计算环路复杂性了。l以图以图4-11所给出的例子示范,其中,结点数所给出的例子示范,其中,结点数n=6,弧数弧数m=9,p=1,则有,则有V(G=m-n+2p=9-6+2=5l即即McCabe环复杂度度量值为环复杂度度量值为5。这里选择的。这里选择的5个线形无关环路为个线形无关环路为(abefa),(be
11、b),(abea),(acfa),(abcfa),其他任何环路都是这其他任何环路都是这5个环路的线性组合。个环路的线性组合。第17页,本讲稿共39页17McCabe度量法的缺点度量法的缺点对于不同种类的控制流的复杂度不能区分。对于不同种类的控制流的复杂度不能区分。简单简单IF语句与循环语句的复杂性同等看待。语句与循环语句的复杂性同等看待。嵌套嵌套IF语句与简单语句与简单CASE的复杂性是一样的。的复杂性是一样的。模块间接口当成一个简单分支一样处理。模块间接口当成一个简单分支一样处理。一个具有一个具有1000行的顺序程序与一行语句的复杂性行的顺序程序与一行语句的复杂性相同。相同。l尽管尽管McC
12、abe复杂度度量法有许多缺点,但它容复杂度度量法有许多缺点,但它容易使用,而且在选择方案和估计排错费用等方面易使用,而且在选择方案和估计排错费用等方面都是很有效的。都是很有效的。第18页,本讲稿共39页1810.4 软件可靠性软件可靠性第19页,本讲稿共39页19软件可靠性定义软件可靠性定义l软件可靠性定义表明了一个程序按照用软件可靠性定义表明了一个程序按照用户的要求和设计的目标,执行其功能的户的要求和设计的目标,执行其功能的正确程度。一个可靠的程序应要求是正正确程度。一个可靠的程序应要求是正确的、完整的、一致的和健壮的。确的、完整的、一致的和健壮的。l即:在给定的时间内,程序按照规定的即:在
13、给定的时间内,程序按照规定的条件成功地运行的概率。条件成功地运行的概率。第20页,本讲稿共39页20软件可靠性定义的数学表达软件可靠性定义的数学表达l设设R(t)代表在时间代表在时间(0,t)之间的软件可靠性,之间的软件可靠性,PE代表事件代表事件E的概率,则软件可靠性可表示为:的概率,则软件可靠性可表示为:R(t)=P在时间在时间(0,t)内按规定条件运行成功内按规定条件运行成功l可靠性与软件内部的故障密切相关,如果软件在交可靠性与软件内部的故障密切相关,如果软件在交付使用时有遗留错误,则当出现某种组合时,就会付使用时有遗留错误,则当出现某种组合时,就会使程序在运行中失败。当残留错误的数量一
14、定时,使程序在运行中失败。当残留错误的数量一定时,程序的运行时间越长,则发生失效的机会就越多,程序的运行时间越长,则发生失效的机会就越多,可靠性也随之下降。设软件的故障率不随时间而变可靠性也随之下降。设软件的故障率不随时间而变化,则根据经典的可靠性理论。化,则根据经典的可靠性理论。R(t)可以表示为时间可以表示为时间与故障率的指数函数与故障率的指数函数R(t)=第21页,本讲稿共39页21软件可靠性指标软件可靠性指标l软件可靠性与可用性的定量指标,是指能够以数字软件可靠性与可用性的定量指标,是指能够以数字概念来描述可靠性的数学表达式中所使用的量。下概念来描述可靠性的数学表达式中所使用的量。下面
15、主要讨论常用指标平均失效等待时间面主要讨论常用指标平均失效等待时间MTTF与平与平均失效间隔时间均失效间隔时间MTBF。1.MTTF(MeanTimeToFailure)平均失效等待时间平均失效等待时间MTTF定义为:定义为:2.MTBF(MeanTimeBetmeenFailure)MTBF是平均失效间隔时间,它是指两次相继失效之是平均失效间隔时间,它是指两次相继失效之间的平均时间。间的平均时间。第22页,本讲稿共39页22软件可靠性模型软件可靠性模型-正比于遗留故障数的宏观模型正比于遗留故障数的宏观模型l程序的故障率与遗留错误的数量成正比,根据程程序的故障率与遗留错误的数量成正比,根据程序
16、中遗留错误的多少,就可以预测程序的可靠性。序中遗留错误的多少,就可以预测程序的可靠性。l设设t=程序的调试时间程序的调试时间ET=调试前的错误总数调试前的错误总数Ec(t)=在时间在时间(0,t)期间纠正的错误期间纠正的错误Er(t)=在时间在时间t时的遗留错误量时的遗留错误量IT=程序的长度或指令的总数程序的长度或指令的总数则则Er(t)=ET-Ec(t)用用除以上述等式两边,得到错除以上述等式两边,得到错误的规格化值误的规格化值第23页,本讲稿共39页23软件可靠性模型软件可靠性模型-正比于遗留故障数的宏观模型正比于遗留故障数的宏观模型其中因此有根据经典理论,得到:第24页,本讲稿共39页
17、24软件可靠性模型软件可靠性模型-平均失效等待时间平均失效等待时间l已知当故障率为独立于时间的常数时,已知当故障率为独立于时间的常数时,lMTTF=1/l即即ll为简化讨论,又在时间为简化讨论,又在时间0至至t期间的纠错率为常数,期间的纠错率为常数,且等于且等于,则,则ll所以,平均故障间隔时间的模型可简写为:所以,平均故障间隔时间的模型可简写为:l第25页,本讲稿共39页25软件可靠性模型软件可靠性模型-错误植入模型错误植入模型l这类模型的中心思想,是通过估计残留错误的数量,来确定程这类模型的中心思想,是通过估计残留错误的数量,来确定程序的可靠性。具体的作法是:测试之前先在程序中植入一批人序
18、的可靠性。具体的作法是:测试之前先在程序中植入一批人为的错误,在测试过程中分别统计出测试小组的原有错误和植为的错误,在测试过程中分别统计出测试小组的原有错误和植入错误,然后由下列计算式计算原有错误。入错误,然后由下列计算式计算原有错误。假设假设N=程序中原来残留的错误数;程序中原来残留的错误数;S=新植入程序的错误数;新植入程序的错误数;n=测试中发现的原有错误数;测试中发现的原有错误数;s=测试中发现的植入错误数测试中发现的植入错误数如果调试中对这两类错误具有同样的发现能力,则有如果调试中对这两类错误具有同样的发现能力,则有或或第26页,本讲稿共39页2610.5 软件评审软件评审第27页,
19、本讲稿共39页27软件评审软件评审l对软件工程来说,软件评审是一个对软件工程来说,软件评审是一个“过滤器过滤器”,在,在软件开发的各个阶段都要采用评审的方法,以发现软件开发的各个阶段都要采用评审的方法,以发现软件中的缺陷,然后加以改正。软件中的缺陷,然后加以改正。l把把“质量质量”理解为理解为“用户满意程度用户满意程度”。为使用户满意,。为使用户满意,有两个必要条件:有两个必要条件:(1)设计的规格说明书要符合用户的要求。设计的规格说明书要符合用户的要求。(2)程序要按照设计规格说明书所规定的情况正确执行。程序要按照设计规格说明书所规定的情况正确执行。第28页,本讲稿共39页28设计质量的评审
20、内容设计质量的评审内容(1)评价软件的规格说明是否合乎用户的要求评价软件的规格说明是否合乎用户的要求,即总体设计思想和设即总体设计思想和设计方针是否明确计方针是否明确;需求规格说明是否得到了用户或单位上级机需求规格说明是否得到了用户或单位上级机关的批准关的批准;需求规格说明与软件的概要设计计规格说明是否一需求规格说明与软件的概要设计计规格说明是否一致等?致等?(2)评审可靠性评审可靠性,即是否能避免输入异常(错误或超载等)、即是否能避免输入异常(错误或超载等)、硬件失效及软件失效所产生的失效,一旦发生应能及时硬件失效及软件失效所产生的失效,一旦发生应能及时采取代替或恢复手段采取代替或恢复手段。
21、(3)评审保密措施实现情况评审保密措施实现情况,即是否提供对使用系统资格进行检查即是否提供对使用系统资格进行检查;对特定数据的使用资格、特殊功能的使用资格进行检查,对特定数据的使用资格、特殊功能的使用资格进行检查,在查出有违反使用资格情况后,能否向系统管理人员报在查出有违反使用资格情况后,能否向系统管理人员报告有关信息;是否提供对系统内重要数据加密的功能等。告有关信息;是否提供对系统内重要数据加密的功能等。第29页,本讲稿共39页29设计质量的评审内容设计质量的评审内容(4)评审操作特性实施情况,即操作命令和操作信息评审操作特性实施情况,即操作命令和操作信息的恰当性,输入数据与输入控制语句的恰
22、当性;的恰当性,输入数据与输入控制语句的恰当性;输出数据的恰当性;应答时间的恰当性等。输出数据的恰当性;应答时间的恰当性等。(5)评审性能实现情况,即是否达到所规定性能的的目评审性能实现情况,即是否达到所规定性能的的目标值。标值。(6)评审软件是否具有可修改性、可扩充性、可互换评审软件是否具有可修改性、可扩充性、可互换性和可移植性。性和可移植性。(7)评审软件是否具有可测试性。评审软件是否具有可测试性。(8)评审软件是否具有复用性。评审软件是否具有复用性。第30页,本讲稿共39页30程序质量的评审内容程序质量的评审内容-软件的结构软件的结构(1)功能结构。在软件的各种结构中,功能结构是用户唯一
23、能见到的功能结构。在软件的各种结构中,功能结构是用户唯一能见到的结构。结构。l需要检查的项目有:需要检查的项目有:l数据结构:包括数据名和定义;构成该数据的数据项;数据结构:包括数据名和定义;构成该数据的数据项;数据与数据间的关系。数据与数据间的关系。l功能结构:包括功能名和定义;构成该功能的子功能;功能功能结构:包括功能名和定义;构成该功能的子功能;功能与子功能之间的关系。与子功能之间的关系。l数据结构和功能结构之间的对应关系:包括数据元素与功能元数据结构和功能结构之间的对应关系:包括数据元素与功能元素之间的对应关系;数据结构与功能结构的一致性。素之间的对应关系;数据结构与功能结构的一致性。
24、(2)功能的通用性。功能的通用性。(3)模块的层次。模块的层次。第31页,本讲稿共39页31程序质量的评审内容程序质量的评审内容-软件的结构软件的结构(4)模块结构。模块结构。l控制流结构:规定了处理模块与处理模块之间的流程关系。控制流结构:规定了处理模块与处理模块之间的流程关系。检查处理模块之间的控制转移关系与控制转移形式(调用方式)检查处理模块之间的控制转移关系与控制转移形式(调用方式)。l数据流结构:规定了数据模块是如何被处理模块进行加工的数据流结构:规定了数据模块是如何被处理模块进行加工的流程关系。检查处理模块与数据模块之间的对应关系;处理模流程关系。检查处理模块与数据模块之间的对应关
25、系;处理模块与数据模块与数据模块之间的存取关系,如建立、删除、查询、修改块之间的存取关系,如建立、删除、查询、修改等。等。l模块结构与功能结构之间的对应关系:包括功能结构模块结构与功能结构之间的对应关系:包括功能结构与控制流结构的对应关系;功能结构与数据流结构的对与控制流结构的对应关系;功能结构与数据流结构的对应关系;每个模块的定义应关系;每个模块的定义(包括功能、输入与输出数据)(包括功能、输入与输出数据)。(5)处理过程的结构。处理过程是最基本的加工逻辑过程。处理过程的结构。处理过程是最基本的加工逻辑过程。第32页,本讲稿共39页32程序质量的评审内容程序质量的评审内容-与运行环境的接口与
26、运行环境的接口(1)与硬件的接口。与硬件的接口。(2)与用户的接口。与用户的接口。l随着软件运行环境的变更,软件的规格随着软件运行环境的变更,软件的规格也在跟着不断地变更。运行环境变更时也在跟着不断地变更。运行环境变更时的影响范围,需要从以下三个方面来分的影响范围,需要从以下三个方面来分析:析:(1)与运行环境的接口。与运行环境的接口。(2)在每项设计工程规格内的影响。在每项设计工程规格内的影响。(3)在设计工程相互间的影响。在设计工程相互间的影响。第33页,本讲稿共39页3311.6 软件容错技术软件容错技术第34页,本讲稿共39页34软件容错技术软件容错技术l提高软件质量和可靠性的技术大致
27、分为提高软件质量和可靠性的技术大致分为两类,一类是避开错误(两类,一类是避开错误(fault-avoidance)技术,即在开发的过程中不)技术,即在开发的过程中不让差错潜入软件的技术;另一类是容错让差错潜入软件的技术;另一类是容错(fault-tolerance)技术,即对某些无法)技术,即对某些无法避开的差错,使其影响减少至最小的技避开的差错,使其影响减少至最小的技术。术。第35页,本讲稿共39页35容错软件定义容错软件定义(1)规定功能的软件,在一定程度上对自身错误的)规定功能的软件,在一定程度上对自身错误的作用(软件错误)具有屏蔽能力,则称此软件为作用(软件错误)具有屏蔽能力,则称此软
28、件为具有容错功能的软件,即容错软件。具有容错功能的软件,即容错软件。(2)规定功能的软件,在一定程度上能从错误状态自)规定功能的软件,在一定程度上能从错误状态自动恢复到正常状态,则称之为容错软件。动恢复到正常状态,则称之为容错软件。(3)规定功能的软件,在因错误而发生错误时,仍然)规定功能的软件,在因错误而发生错误时,仍然能在一定程度上完成预期的功能,则把该软件称为能在一定程度上完成预期的功能,则把该软件称为容错软件。容错软件。(4)规定功能的软件,在一定程度上具有容错能)规定功能的软件,在一定程度上具有容错能力,则称之为容错软件。力,则称之为容错软件。第36页,本讲稿共39页36容错的一般方
29、法容错的一般方法1、结构冗余、结构冗余(1)静静 态态 冗冗 余余。常常 用用 的的 有有:三三 模模 冗冗 余余 TMR(TripleModulerRedundancy)和多模冗余。)和多模冗余。(2)动态冗余。动态冗余的主要方式是多重模块待机储备,动态冗余。动态冗余的主要方式是多重模块待机储备,当系统检测到某工作模块出现错误时,就用一个备用当系统检测到某工作模块出现错误时,就用一个备用的模块来顶替它并重新运行。的模块来顶替它并重新运行。(3)混合冗余。它兼有静态冗余和动态冗余的长处。混合冗余。它兼有静态冗余和动态冗余的长处。第37页,本讲稿共39页37容错的一般方法容错的一般方法2、信息冗
30、余、信息冗余l为检测或纠正信息在运算或传输中的错误须外加为检测或纠正信息在运算或传输中的错误须外加一部分信息,这种现象称为信息冗余。一部分信息,这种现象称为信息冗余。3、时间冗余、时间冗余l时间冗余是指以重复执行指令(指令复执)或程序时间冗余是指以重复执行指令(指令复执)或程序(程序复算)来消除瞬时错误带来的影响。(程序复算)来消除瞬时错误带来的影响。4、冗余附加技术、冗余附加技术l冗余附加技术是指实现上述冗余技术所需的资源冗余附加技术是指实现上述冗余技术所需的资源和技术。和技术。第38页,本讲稿共39页38容错软件的设计过程容错软件的设计过程容错系统的设计过程包括以下设计步骤:容错系统的设计
31、过程包括以下设计步骤:(1)按设计任务要求进行常规设计,尽量保证设计的正确。)按设计任务要求进行常规设计,尽量保证设计的正确。按常规设计得到非容错结构,它是容错系统构成的基础。在结构冗余中,按常规设计得到非容错结构,它是容错系统构成的基础。在结构冗余中,不论是主模块还是备用模块的设计和实现,都要在费用许可的不论是主模块还是备用模块的设计和实现,都要在费用许可的条件下,条件下,用调试的方法尽可能提高可靠性。用调试的方法尽可能提高可靠性。(2)对可能出现的错误分类,确定实现容错的范围。)对可能出现的错误分类,确定实现容错的范围。对可能发生的错误进行正确的判断和分类,例如,对于硬件的瞬时错误,可以对
32、可能发生的错误进行正确的判断和分类,例如,对于硬件的瞬时错误,可以采用指令复执和程序复算;对于永久错误,则需要采用备份替换或者系统重采用指令复执和程序复算;对于永久错误,则需要采用备份替换或者系统重构。对于软件来说,只有最大限度地弄清错误和暴露的规律,才能正确地判构。对于软件来说,只有最大限度地弄清错误和暴露的规律,才能正确地判断和分类,实现成功的容错。断和分类,实现成功的容错。(3)按照)按照“成本成本效率效率”最优原则,选用某种冗余手段(结构、信息、最优原则,选用某种冗余手段(结构、信息、时间)来实现对各类错误的屏蔽。时间)来实现对各类错误的屏蔽。(4)分析或验证上述冗余结构的容错效果。如果效果没有达到预期的程度,则应重)分析或验证上述冗余结构的容错效果。如果效果没有达到预期的程度,则应重新进行冗余结构设计。如此反复,直到有一个满意的结果为止。新进行冗余结构设计。如此反复,直到有一个满意的结果为止。第39页,本讲稿共39页39