第四章 软件质量,主讲:吴建林,2017年11月5日星期日,2,提纲,4.1 软件质量概念4.2 软件质量特性4.3 软件质量度量4.4 软件质量管理4.5 软件质量保证,2017年11月5日星期日,3,4.1 软件质量概念,质量定义: 从最狭义上讲,质量可被定义为“无缺陷”但是,绝大多数以顾客为中心的企业对质量的定义远不止这些,他们是根据顾客满意来定义质量的 质量以顾客的需要为开始,以顾客满意为结束2017年11月5日星期日,4,4.1 软件质量概念,Motorola对于缺陷的定义:如果顾客不喜欢,那该产品就是有缺陷美国质量管理协会对于质量的定义:与一种产品或服务满足顾客需要的能力有关的各种特色和特征的总和软件质量天生符合上述含义,最初的定制式软件系统首先要求必须满足用户的需求2017年11月5日星期日,5,4.1 软件质量概念,软件质量的定义:ANSI/IEEE Std 729-1983定义软件质量为“与软件产品满足规定的和隐含的需求的能力有关的特征或特性的全体”M.J. Fisher 定义软件质量为“所有描述计算机软件优秀程度的特性的组合”2017年11月5日星期日,6,4.1 软件质量概念,为了评价软件质量,需要对软件是否满足功能要求、性能要求、符合文档规范标准的程度设计一些质量特性及其组合,作为在软件开发与维护中的判断软件质量的重要考虑因素。
如果上述质量特性及其组合在产品中得到了满足,则软件质量就是高的2017年11月5日星期日,7,4.1 软件质量概念,软件质量反映了以下三方面的问题:软件需求是度量软件质量的基础不符合需求的软件就不具备质量在各种标准中定义了一些开发准则,用来指导软件人员用工程化的方法来开发软件如果不遵守这些开发准则,软件质量就得不到保证往往会有一些隐含的需求(可维护性)没有明确提出来如果软件只满足那些精确定义了的需求而没有满足这些隐含的需求, 软件质量也得不到保证2017年11月5日星期日,8,4.1 软件质量概念,软件质量不仅仅是狭义上的软件没有缺陷,还应该包括:不断改进、提高内部顾客和外部顾客满意度;缩短产品开发周期与投放市场时间;降低质量成本等软件质量是全面质量的概念,面对日新月异的技术发展,如何不断创新以满足顾客快速变化的需求,是每个软件企业必须解决的重要课题2017年11月5日星期日,9,4.1 软件质量概念,全面质量管理(TQM)的理解:质量要从顾客的角度来看——质量始于顾客的需要,终于顾客的理解 质量不仅要反映在企业的产品上,而且要反映在企业的每一个行为上 质量需要全体员工同心协力——应使外部顾客和内部顾客都感到满意。
质量要求高质量的合作伙伴——包括高质量的供应商和销售商 质量方案不能够挽救劣质产品——一个质量运动并不能够补救产品缺陷 质量是可以得到改进的——要靠每一个人去不断地改进每一件事 质量改进有时需要数量上的飞跃——较大的改进必须有新的解决办法和更精明的工作的方式 质量并不导致成本上升——改进质量要求“一次性做好”,以减少补救、修正和重新设计的成本,更不 必说在顾客满意度方面有什么损失了 质量是必须的但可能还不够——尤其当所有的竞争者都将其质量提高到大致同一水平时2017年11月5日星期日,10,4.2 软件质量特性,软件质量是各种特性的复杂组合它随着应用的不同而不同,随着用户提出的质量要求不同而不同为了评价软件质量,必须定义软件质量特性,以及软件质量评价准则2017年11月5日星期日,11,4.2 软件质量特性,软件质量特性,反映了软件的本质讨论一个软件的质量,问题最终要归结到定义软件的质量特性定义一个软件的质量,就等价于为该软件定义一系列质量特性人们通常把影响软件质量的特性用软件质量模型来描述2017年11月5日星期日,12,4.2 软件质量特性,软件质量模型的共同特点就是将软件质量特性定义成分层模型;最基本的叫做基本质量特性,它可以由一些子质量特性定义和度量。
二次特性在必要时又可由它的一些子质量特性定义和度量1976年 Boehm质量模型1979年 McCall质量模型1985年 ISO质量模型,2017年11月5日星期日,13,4.2 软件质量特性,Boehm软件质量模型三个层次:软件质量要素、软件质量评价准则、软件质量度量,2017年11月5日星期日,14,4.2 软件质量特性,Boehm第一层:6个软件质量要素功能性:软件所实现的功能满足用户需求的程度.功能性反映了所开发的软件满足用户陈述或隐含的需求的程度,即用户要求的功能是否全部实现了可靠性:在规定的时间和条件下,软件所能维持其性能水平的程度可靠性对某些软件是重要的质量要求,它除了反映软件满足用户需求正常运行的程度外,还反映了在故障发生时能继续运行的程度2017年11月5日星期日,15,4.2 软件质量特性,易使用性:对于一个软件,用户学习、操作、准备输入和理解输出时,所做努力的程度易使用性反映了与用户的友善性,即用户在使用本软件时是否方便效率:在指定的条件下,用软件实现某种功能所需的计算机资源(包括时间)的有效程度效率反映了在完成功能要求时,有没有浪费资源,此外“资源”这个术语有比较广泛的含义,它包括了内存、外存的使用,通道能力及处理时间。
2017年11月5日星期日,16,4.2 软件质量特性,可维护性:在一个可运行软件中,为了满足用户需求、环境改变或软件错误发生时,进行相应修改所做的努力程度可维护性反映了在用户需求改变或软件环境发生变更时,对软件系统进行相应修改的容易程度 一个易于维护的软件系统也是一个易理解、易测试和易修改的软件,以便纠正或增加新的功能,或允许在不同软件环境上进行操作可移植性:从一个计算机系统或环境转移到另一个计算机系统或环境的容易程度2017年11月5日星期日,17,4.2 软件质量特性,Boehm第二层:22个软件质量评价准则精确性:在计算和输出时所需精度的软件属性;健壮性:在发生意外时,能继续执行和恢复系统的软件属性;安全性:防止软件受到意外或蓄意的存取、使用、修改、毁坏或泄密的软件属性;以及:通信有效性、处理有效性、设备有效性、可操作性、培训性、完备性、一致性、可追踪性、可见性、硬件系统无关性、软件系统无关性、可扩充性、公用性、模块性、清晰性、自描述性、简单性、结构性、产品文件完备性2017年11月5日星期日,18,4.2 软件质量特性,软件质量评价准则的一定组合将反映某一软件质量要素,软件质量要素与评价准则间的关系如下图,2017年11月5日星期日,19,4.2 软件质量特性,Boehm第三层:软件质量度量根据软件的需求分析、概要设计、详细设计、实现、组装测试、确认测试和维护与使用七个阶段,制定了针对每一个阶段的问卷表,以此实现软件开发过程的质量控制。
对于企业来说,不管是定制,还是外购软件后的二次开发,了解和监控软件开发过程每一个环节的进展情况、产品水平都是至关重要的,因为软件质量的高低,很大程度上取决于用户的参与程度2017年11月5日星期日,20,4.2 软件质量特性,应用Boehm模型进行软件质量评价要注意:对于不同类型的软件,系统软件、控制软件、管理软件、CAD软件、教育软件、网络软件及不同规模的软件,对于质量要求、评价准则、度量问题的侧重点有所不同应加以区别2017年11月5日星期日,21,4.2 软件质量特性,在需求分析、概要设计、详细设计及其实现阶段,主要评价软件需求是否完备,设计是否完全反映了需求以及编码是否简洁、清晰而且,每一个阶段都存在一份特定的度量工作表,它由特定的度量元素组成,根据度量元素的得分就可逐步得到度量准则及质量要素的得分,并在此基础上做出评价对软件各阶段都进行质量度量的根本目的是以此控制软件成本、开发进度,改善软件开发的效率和质量2017年11月5日星期日,22,4.2 软件质量特性,McCall质量模型也是三层次模型:11个面向软件产品的运行、修正、转移的反映软件质量的特性;用作评价规则的软件属性;观察软件质量的软件属性度量。
2017年11月5日星期日,23,4.2 软件质量特性,2017年11月5日星期日,24,4.2 软件质量特性,2017年11月5日星期日,25,4.2 软件质量特性,McCall质量模型的三层次框架,特性,评价准则,评价准则,评价准则,度量,度量,度量,,,,,,,面向管理观点的产品质量,决定产品质量的软件属性,定量化地度量软件属性,2017年11月5日星期日,26,4.2 软件质量特性,对各个质量特性的直接度量是很困难的,McCall定义了下列软件属性:可跟踪性、完备性、一致性、安全性、容错性、准确性、简单性、执行效率、存储效率、存取控制、存取审查、操作性、易训练性、简明性、模块独立性、自描述性、结构性、文档完备性、通用性、可扩充性、可修改性、自检性、机器独立性、软件系统独立性、通信共享性、I/O容量、I/O速率、通信性2017年11月5日星期日,27,4.2 软件质量特性,ISO质量模型由三层模型组成:高层:软件质量需求评价准则(SQRC)中层:软件质量设计评价准则(SQDC)底层:软件质量度量评价准则(SQMC)高层和中层建立国际标准,低层可由各使用单位视实际情况制定2017年11月5日星期日,28,4.2 软件质量特性,2017年11月5日星期日,29,4.2 软件质量特性,软件质量特性之间存在竞争,2017年11月5日星期日,30,4.3 软件质量度量,软件质量特性度量有两类:预测型和验收型。
预测度量是利用定量或定性的方法,估算软件质量的评价值,以得到软件质量的比较精确的估算值验收度量是在软件开发各阶段的检查点,对软件的要求质量进行确认性检查的具体评价值,它是对开发过程中的预测进行评价2017年11月5日星期日,31,4.3 软件质量度量,预测度量有两种第一种叫做尺度度量,这是一种定量度量它适用于一些能够直接度量的特性,例如,出错率定义为:错误数/KLOC/单位时间第二种叫做二元度量,这是一种定性度量它适用于一些只能间接度量的特性,例如,可使用性、灵活性等等2017年11月5日星期日,32,4.3 软件质量度量,尺度度量检查表,2017年11月5日星期日,33,4.3 软件质量度量,二元度量检查表,2017年11月5日星期日,34,4.3 软件质量度量,软件可靠性的度量:软件可靠性是软件在给定的时间间隔及给定的环境条件下,按设计要求,成功地运行程序的概率1)环境条件:Context, I/O Constraint(2)规定的时间:Run Time(3)规定的功能:功能的主次、失效的损失4)成功地运行:程序正确运行;错误恢复能力2017年11月5日星期日,35,4.3 软件质量度量,软件可靠性的主要指标:MTTF(Mean Time To Failure),MTBF(Mean Time Between Failure)MTTF:平均失效等待时间MTBF:平均失效间隔时间因此:必须通过不断地测试取得实测数据,才能根据测试结果构造可靠性模型,评价实际达到的可靠性。
2017年11月5日星期日,36,4.3 软件质量度量,软件可维护性度量:软件可维护性是指纠正软件系统出现的错误和缺陷,以及为满足新的要求进行修改、扩充或压缩的容易程度可维护性、可使用性、可靠性是衡量软件质量的主要质量特性,也是用户十分关心的几个方面软件的可维护性是软件开发阶段各个时期的关键目标2017年11月5日星期日,37,4.3 软件质量度量,七个特性来衡量程序的可维护性:,2017年11月5日星期日,38,4.3 软件质量度量,常用的度量一个可维护的程序的七种特性的方法就是 质量检查表:是用于测试程序中某些质量特性是否存在的一个问题清单(定性) 质量测试和质量标准:用于定量分析和评价程序的质量。