1、第9章软件质量与软件工程标准化2022-5-31第10章软件质量与软件工程标准化软件工程教研室本章主要内容:本章主要内容:1软件质量概念2软件质量保证3软件可靠性与复杂性4软件工程标准化5ISO 9000标准及质量认证教学目的及要求:教学目的及要求:1.掌握软件质量概念、质量保证、软件可靠性等基本理论知识。2.熟悉软件质量度量、建立软件质量保证体系和软件可靠性评价方法、步骤和策略。3.了解软件工程标准化和质量认证的基本知识。2022-5-31第10章软件质量与软件工程标准化软件工程教研室9.1 软件质量概念9.1.1 质量定义及特征指标 软件产品的质量实际上就是软件项目工作质量的反映。反映产品
2、或服务满足明确或隐含需求能力的特征和特性的总和。软件质量特性是用以描述和评价软件产品质量的一组属性。 1)功能特征:与一组功能及其指定性质有关的一组属性,这里的功能是满足明确或隐含的需求的那些功能。2)可靠性特征:与在规定的一段时间和条件下能维持其性能程度有关的一组属性。2022-5-31第10章软件质量与软件工程标准化软件工程教研室3)易用性特征:由一组规定或潜在的用户为使用软件所需作的努力和所作的评价有关的一组属性。4)效率特征:与在规定条件下软件的性能水平与所使用资源量之间关系有关的一组属性。5)可维护性特征:与进行指定的修改所需的努力有关的一组属性。6)可移植性特征:与软件从一个环境转
3、移到另一个环境的能力有关的一组属性。其中每一个质量特征都分别与若干子特征相对应。 2022-5-31第10章软件质量与软件工程标准化软件工程教研室9.1.2质量评价模型 人们通常用软件质量模型来描述影响软件质量的特性。已有多种软件质量的模型,它们共同的特点是把软件质量特性定义成分层模型。1)ISO1)ISO软件质量评价模型软件质量评价模型 按照ISOTC97SC7WG31985130N382,软件质量度量模型由三层组成。(1)高层(Toplevel):软件质量需求评价准则(SQRC)。(2)中层(Midlevel):软件质量设计评价准则(SQDC)。(3)低层(Lowlevel):软件质量度量
4、评价准则(SQMC)。2022-5-31第10章软件质量与软件工程标准化软件工程教研室ISO软件质量度量模型2022-5-31第10章软件质量与软件工程标准化软件工程教研室2)McCall软件质量评价模型 McCall等人于1979年提出的软件质量模型。其软件质量概念基于11个特性之上。而这11个特性分别面向软件产品的运行、修正、转移。它们与特性的关系如所示。 2022-5-31第10章软件质量与软件工程标准化软件工程教研室质量特性表正确性在预定环境下,软件满足设计规格说明及用户预期目标的程度,它要求软件没有错误。可靠性软件按照设计要求,在规定时间和条件下不出故障、持续运行的程度。效率为完成预
5、定功能,软件系统所需计算机资源的多少。完整性为了某一目的而保护数据免受偶然或有意的破坏、被改动或遗失的能力。可使用性对于一个软件系统,用户学习、使用软件及为程序准备输入和解释输出所需工作量的大小。可维护性为满足用户新的要求,或当环境发生了变化,或运行中发现了新的错误时对一个已投入运行的软件进行相应诊断和修改所需工作量的大小。可测试性调试软件以确保其能够执行预定功能所需工作量的大小。灵活性修改或改进一个已投入运行的软件所需工作量的大小。可移植性将一个软件系统从一个计算机系统或环境移植到另一个计算机系统或环境中运行时所需工作量的大小。可复用性一个软件(或软件的部件)能再次用于其他应用(该应用的功能
6、与此软件或软件部件的所完成的功能有联系)的程度。互连性又称相互操作性。连接一个软件和其他系统所需工作量的大小。如果这个软件要联网,或与其他系统通信,或要把其他系统纳入自己的控制之下,必须有系统间的接口,使之可以联结。2022-5-31第10章软件质量与软件工程标准化软件工程教研室质量要素的量化估计某质量要素矩阵M:1 2 Lm11 m12 m1L m21 m22 m2L . . . mn1 mn2 mnL 。加权者1加权者2加权者n准则准则准则niLjijijjmmxnW11)/(1则,第j个准则的权:某个质量要素的得分: Fq = a1 w1 + a2 w2 + + aL wLMij为代理第
7、i个打分员为第j个准则加的权。2022-5-31第10章软件质量与软件工程标准化软件工程教研室3)Boehm质量评价模型 1976年,Boehm等人提出了定量地评价软件质量的概念,并给出了60个质量量度公式,说明怎样用来评价软件质量。Boehm等认为,软件产品质量主要应从以下三个方面来评价:(1)软件的可使用性。(2)软件的可维护性。(3)软件的可移植性。2022-5-31第10章软件质量与软件工程标准化软件工程教研室Boehm等人提出的软件质量量度模型主要用途中间构造基本构造总 能 力可移植性可 使 用 性可 维 护 性可 靠 性效 率环境工程可测试性可理解性可修改性设备独立性完 整 性准
8、确 性一 致 性设备效率可存取性通 信 性结 构 性自描述性简 洁 性易 读 性可扩充性2022-5-31第10章软件质量与软件工程标准化软件工程教研室9.1.3 软件质量控制与质量保证 质量保证是为保证产品和服务充分满足用户要求的质量而进行的有计划、有组织的活动。总是围绕着质量保证过程和质量控制过程两方面。 1.软件质量控制(Software Quality Control,SQC)是为了保证每一件工作产品都满足对它的需求而应用于整个开发周期中的一系列的检测活动(代码走查、单元测试、集成测试、环境测试等),由开发人员负责。 2.软件质量保证(Software Quality Assuranc
9、e,SQA)是为保证产品和服务充分满足用户要求的质量而进行的有计划、有组织、有系统的管理活动(审查、复查和测试)。2022-5-31第10章软件质量与软件工程标准化软件工程教研室软件质量控制和软件质量保证的关系: 如果将软件的生产比喻成一条产品加工生产线的话,那SQA只负责生产线本身的质量保证,而不管生产线中单个产品的实际质量情况。SQA通过保证生产线的质量来间接保证软件产品的质量。而SQC不管生产线本身的质量,而只关注生产线中生产的产品在每一个阶段的质量是否符合预期的要求。 2022-5-31第10章软件质量与软件工程标准化软件工程教研室9.1.4 9.1.4 质量保证体系质量保证体系 软件
10、的质量保证活动,是涉及各个部门的活动,贯穿在软件生命周期的每个阶段。图10-5是软件质量保证体系的图例。在质量保证体系图上,各部门横向安排,而纵向则顺序列出在软件生命周期各阶段质量保证活动的工作。每项活动范围所涉及到的相关部门,质量管理部门的质量控制活动贯穿在每项工作中。并且在软件生命周期每个阶段结束之前,都用结束标准对该阶段生产出的软件配置成分进行严格的评审。2022-5-31第10章软件质量与软件工程标准化软件工程教研室项目计划技术信息质量信息用户信息市场信息环境信息计 划 评 审概要/详细设计设 计 评 审 质 量 保 证 活 动编程及测试项 目 质 量 评 审交付计划改进服务改进质 量
11、 保 证 体 系 完 善质 量 改 进 会 议检测改进技术改进图10-5 质量保证体系图例阶段经理计划管理组技术开发组质量管理组用户服务组计划设计实现确认维护2022-5-31第10章软件质量与软件工程标准化软件工程教研室9.2 软件可靠性与复杂性 9.2.1 可靠性 软件可靠性的含义是:软件系统在规定的时间间隔内,按照规定的条件,完成规定功能而不发生故障的概率。在这个定义中包含的随机变量是“时间间隔”。显然随着运行时间的增加,运行时遇到程序故障的概率也将增加,即可靠性随着时间间隔的加大而减小。2022-5-31第10章软件质量与软件工程标准化软件工程教研室9.2.2可靠性的评价指标1)可用性
12、 可用性指软件运行后在任一随机时刻需要执行规定任务或完成规定功能时,软件处于可使用状态的概率。可用性是对应用软件可靠性的综合(即综合各种运行环境以及完成各种任务和功能)度量。简而言之,就是系统完成特定功能的时间总量。2022-5-31第10章软件质量与软件工程标准化软件工程教研室2)初期故障率 初期故障率是指软件在初期故障期(一般以软件交付给用户后的三个月内为初期故障期)内单位时间的故障数。一般以每100小时的故障数为单位。可以用它来评价交付使用的软件质量与预测什么时候软件可靠性基本稳定。2022-5-31第10章软件质量与软件工程标准化软件工程教研室3)偶然故障率 指软件在偶然故障期(一般以
13、软件交付给用户后的四个月以后为偶然故障期)内单位时间的故障数。一般以每1000小时的故障数为单位,它反映了软件处于稳定状态下的质量。 4)平均失效前时间(MTTF) 或平均无故障时间MTTF (Mean Time To Failure)指软件在失效前正常工作的平均统计时间。是系统按照规格说明书的规定成功运行的平均时间,它主要取决于系统中潜伏的缺陷数目,因此和测试的关系十分密切。系统的可靠性越高,平均无故障时间越长。2022-5-31第10章软件质量与软件工程标准化软件工程教研室 指软件在相继两次失效之间正常工作的平均统计时间。 在实际使用时,MTBF通常是指当n很大时,系统第n次失效与第n+1
14、次失效之间的平均统计时间。对于失效率为常数和系统恢复正常时间很短的情况下,MTBF与MTTF几乎是相等的。国外一般民用软件的MTBF大体在1000小时左右。对于可靠性要求高的软件,则要求在100010000小时之间。5)平均失效间隔时间(MTBF)2022-5-31第10章软件质量与软件工程标准化软件工程教研室6)缺陷密度(FD) 指软件单位源代码中隐藏的缺陷数量。通常以每千行无注解源代码为一个单位。一般情况下,可以根据同类软件系统的早期版本估计FD的具体值。如果没有早期版本信息,也可以按照通常的统计结果来估计。典型的统计表明,在开发阶段,平均每千行源代码有5060个缺陷,交付后平均每千行源代
15、码有1518个缺陷。2022-5-31第10章软件质量与软件工程标准化软件工程教研室7)平均失效恢复时间(MTTR) 或平均维修时间MTTR (Mean Time to Repair),指软件失效后维修和重恢复正常工作所需的平均统计时间。对于软件,其失效恢复时间为排除故障或系统重新启动所用的时间,而不是对软件本身进行修改的时间(因为修改软件过程的时间常常无法确定)。 它取决于维护人员的技术水平和对系统的熟悉程度,也和系统的可维护性有重要关系。即系统的可维护性越好,平均维修时间越短。2022-5-31第10章软件质量与软件工程标准化软件工程教研室8)平均不工作时间(MTBD) 指软件系统平均不工
16、作时的间隔时间,MTBD一般比MTBF要长,它反映了系统的稳定性。9)平均操作错误时间(MTBHE) 指软件操作错误的平均间隔时间。它一般与软件的易操作性和操作人员的训练水平、因软件缺陷造成的不工作时间、因软件缺陷而损失的时间等有关。2022-5-31第10章软件质量与软件工程标准化软件工程教研室10)软件系统不工作时间均值(MDT) 指软件因系统故障不工作时间的平均值。11)初始错误个数(NC) 指在软件进行排错之前,估计出的软件中含 有 错误的个数。12)剩余错误个数(ND) 指在软件经过一段时间的排错之后,估计出软件中含有错误的个数 。2022-5-31第10章软件质量与软件工程标准化软
17、件工程教研室9.2.3 系统的稳态可用性计算 如果在一段时间里,软件系统故障停机时间分别为td,td2,td3正常运行时间分别为tul,tu2,tu3则系统的稳态可用性A为: A tui (tui+tdi) 如果引进系统平均无故障时间MTTF和系统平均维修时间MTTR的概念,那么,软件系统的稳态可用性可以表示A为: A MTTF(MTTF + MTTR) 100%由此可见,系统的可用性定义为系统保持正常运行时间的百分比。 2022-5-31第10章软件质量与软件工程标准化软件工程教研室 例如,假设某软件系统平均每六个月出现一次故障,将该软件恢复到正常工作状态平均需要 60 分钟。则该软件系统的
18、可用性为: 可用性 = 6*30*24*60(6*30*24*6060 分钟) 99.98% 2022-5-31第10章软件质量与软件工程标准化软件工程教研室为了直观地度量软件的可靠性,还可以采用“平均失效间隔时间”MTBF(Mean Time Between Failure)。具体来说,是指相邻两次故障之间的平均工作时间,也称为平均故障间隔。 MTBF MTTFMTTRMTBF值越大,无故障工作的时间越长,就越稳定可靠。 2022-5-31第10章软件质量与软件工程标准化软件工程教研室9.2.4 平均无故障时间(MTTF)的估算 指软件在失效前正常工作的平均统计时间,也称平均失效前时间。)(
19、)/)(/1ctttcttEEKIIEIEKMTTF(Et :测试之前程序中的缺陷总数;It :机器指令总数衡量的程序长度;:测试(包括调试)时间;Ed():在0时间内发现的错误总数;Ec():在0时间内改正的错误总数;E :在0时间后剩余的缺陷数。K为常数 2022-5-31第10章软件质量与软件工程标准化软件工程教研室测试之前程序中的缺陷总数Et进行估算 已交付产品中潜伏的缺陷数是一个十分重要的量值。它既直接标志软件的可靠程度,又是计算MTTF的重要参数。严格地说,人们无法精确计算这一数据。但是从统计学的角度上来看,可以通过下面两种方法来对Et进行估算。2022-5-31第10章软件质量与
20、软件工程标准化软件工程教研室1)植入故障法 在测试之前,由专人在程序中随机地植入Ns个错误,测试之后,根据测试小组发现的故障中原有的n个和植入的ns个,那么,用N来估计程序中原有的总故障数Et为:ssNnnN 植入故障法的基本假定是所用的测试方案发现植入错误和原有错误的概率相同。但是这种假设并不总是成立,因此有时计算结果有较大的偏差。2022-5-31第10章软件质量与软件工程标准化软件工程教研室2)分别测试法 设想由两个测试人员同时测试一个软件程序的两个副本。用T表示测试时间。在T0时,故障总数为B;T=T1时,测试员甲发现的故障数为B1;T=T1时,测试员乙发现的故障数为B2;T=T1时,
21、测试员甲、乙发现的相同故障数为Bc;则在统计的角度上,测试之前的故障总数:CBBBB120 为进一步求精,可以每隔一段时间进行一次并行测试,如果几次估算的结果相差不多,则可取其均值作为Et的结果估算值。 2022-5-31第10章软件质量与软件工程标准化软件工程教研室例:对一长度为72000条指令的程序进行测试,第1个月由A、B两名测试员独立测试。第1个月后,A发现并改正40个错误,使MTTF达到20h。而B发现32个错误,其中的8个A也发现了。以后由A单独继续测试这个程序。问:(1)刚开始测试时,程序原有错误共多少个?(2)为使MTTF达到360h,还必须改正多少个错误?解:(1)本题采用了
22、分别测试法,因此,可以估算出刚开始测试时程序中原有错误总数为:16040832E(2) 由于: 12072000)40(7200020KEK301202072000K则: 如果: )160(3072000360Ec那么: 153303607200016030360Ec(个) 所以,为了达到平均无故障时间360h,总共需改正153个错误,A测试员已经改正40个错误,还需再改正113个错误。2022-5-31第10章软件质量与软件工程标准化软件工程教研室9.2.5 复杂性 软件复杂性(complexity)是指程序的结构性、模块性、简明性、简洁性和可理解性的程度。 程序复杂性度量的参数主要有:规模
23、:程序指令条数或源程序行数;难度:与程序操作数和操作符有关的度量;结构:与程序分支数有关的度量;智能度:算法的难易程度。程序复杂性度量的方法主要有三种。2022-5-31第10章软件质量与软件工程标准化软件工程教研室1)代码行度量法 它是用程序代码行的多少来衡量程序的复杂性。 该方法的基本考虑是统计一个程序模块的源代码行数目,并以源代码行数做为程序复杂性的度量。若设每行代码的出错率为每100行源程序中可能有的错误数目,例如每行代码的出错率为1,则是指每 100行源程序中可能有一个错误。Lipow及其他研究者得出一个结论:对于少于100个语句的小程序,源代码行数与出错率是线性相关的。随着程序的增
24、大,出错率以非线性方式增长。 这是早期最简单的计算程序复杂性的量度。这种方法十分粗糙。因为对程序的数据结构和控制结构复杂的程序,其复杂程度肯定不同。2022-5-31第10章软件质量与软件工程标准化软件工程教研室2)McCabe度量法 又称环路复杂性度量,是一种基于程序控制流的复杂性度量方法。 计算环路复杂性的方法:在一个有向图G(程序图)中,环路的个数V(G)由以下公式给出: 其中,V(G)是有向图G中环路个数,m是图G中弧数,n是图G中结点数。 程序图:如果把程序流程图中每个处理符号都退化成一个结点,原来联结不同处理符号的流线变成连接不同结点的有向弧,这样得到的有向图就叫做程序图。2)(n
25、mGV2022-5-31第10章软件质量与软件工程标准化软件工程教研室 McCabe度量法示例:在右侧的程序图中,结点数n11,弧数m12,则有V(G)mn2 121123。即McCabe环路复杂度度量值为3 。它也可以看做由程序图中的有向弧所封闭的区域个数。 2022-5-31第10章软件质量与软件工程标准化软件工程教研室利用McCabe环路进行复杂度度量的4点说明:(1)环路复杂度取决于程序控制结构的复杂度。当程序的分支数目或循环数目增加时其复杂度也增加。环路复杂度与程序中覆盖的路径条数有关。(2)环路复杂度是可加的。例如,模块A的复杂度为3 ,模块B的复杂度为4,则模块A与模块B的复杂度
26、是7。(3)McCabe建议,对于复杂度超过10的程序,应分成几个小程序,以减少程序中的错误 。Walsh 用实例证实了这个建议的正确性 。他发现,在McCabe复杂度为10的附近,存在出错率的间断跃变。(4)McCabe环路复杂度隐含的前提是:错误与程序的判定加上例行子程序的调用数目成正比。而加工复杂性、数据结构、录入与打乱输入卡片的错误可以忽略不计。2022-5-31第10章软件质量与软件工程标准化软件工程教研室3)Halstead的软件科学 这种方法是根据程序中可执行代码行的操作符和操作数的数量来计算程序的复杂性。程序的操作符是有限的,其最大数目不会超过关键字的数目,而操作数的数目却随程
27、序规模的增大而增加,一般地操作符和操作数的量越大,程序结构也就越复杂。2022-5-31第10章软件质量与软件工程标准化软件工程教研室(1)程序长度,即预测的Halstead长度 令n1表示程序中不同运算符(包括保留字)的个数,令n2表示程序中不同运算对象的个数,令H表示“程序长度”,则有:Hn1log2n1 +n2log2n2 这里,H是程序长度的预测值,它不等于程序中语句个数。在定义中,运算符包括:算术运算符,赋值符(或:),数组操作符,逻辑运算符,分界符(,或;或:),子程序调用符,关系运算符括号运算符,循环操作符等。特别地,成对的运算符,例如“ BEGINEND ”、“ FORTO ”
28、、“REPEATUNTIL”、“WHILEDO”、“IFTHENELSE”、“()”等都当做单一运算符。运算对象:包括变量名和常数。2022-5-31第10章软件质量与软件工程标准化软件工程教研室(2)实际的Halstead长度设N1为程序中实际出现的运算符总个数,N2为程序中实际出现的运算对象总个数,N为实际的Halstead长度,则有:NN1+N2(3)程序的词汇表Halstead定义程序的词汇表为不同的运算符种类数和不同的运算对象种类数的总和。若令n为程序的词汇表,则有:nn1+n22022-5-31第10章软件质量与软件工程标准化软件工程教研室示例:一个用FORTRAN语言写出的交换排
29、序程序因此有:预测的词汇量Hn1log2n1+n2log2n210log210+7log27 52.87实际的词汇量NN1+N228+2250程序的词汇表nn1+n210+7172022-5-31第10章软件质量与软件工程标准化软件工程教研室(4)程序量V程序量V,可用下式算得V(N1+N2)log2(n1+n2)它表明了程序在“词汇上的复杂性”。其最小值为V*(2+n2*)log2(2+n2*)这里,2表明程序中至少有两个运算符:赋值符“:”和函数调用符“f()”,n2*表示输入输出变量个数。对于上面的例子,利用n1,N1,n2,N2,可以计算得:V(28+22)log2(10+7)204
30、等效的汇编语言程序的 V328。这说明汇编语言比FORTRAN语言需要更多的信息量(以bit表示)。2022-5-31第10章软件质量与软件工程标准化软件工程教研室(5)程序量比率(语言的抽象级别)LV*V或L(2n1)(n2N2)这里,N2n2log2n2。它表明了一个程序的最紧凑形式的程序量与实际程序量之比,反映了程序的效率。其倒数:D1L表明了实现算法的困难程度。有时,用L表达语言的抽象级别,即用L衡量在表达程序过程时的抽象程度。对于高级语言 ,它接近于1,对于低级语言,它在01之间。下面列出的是根据经验得出的一些常用语言的语言抽象级别。 语言语言L的平均值的平均值English Pro
31、se(英语散文)PL/1ALGOL68 FORTRANAssembler(汇编语言)2.16 1.532.121.140.882022-5-31第10章软件质量与软件工程标准化软件工程教研室(6)程序员工作量EEVL(7)程序的潜在错误Halstead度量可以用来预测程序中的错误。认为程序中可能存在的差错应与程序的容量成正比。因而预测公式为 B(N1+N2)log2(n1+n2)3000V3000B表示该程序的错误数。例如 ,一个程序对75个数据库项共访问1300次,对150个运算符共使用了1200次,那么预测该程序的错误数:B(1300+1200)log2(75+150)30006.5即预测
32、该程序中可能包含67个错误。2022-5-31第10章软件质量与软件工程标准化软件工程教研室Halstead度量是目前最好的度量方法。但它也有缺点:没有区别自己编的程序 与别人编的程序 。这是与实际经验相违背的。这时应将外部调用乘上一个大于 1的的常数Kf(应在15之间,它与文档资料的清晰度有关)。没有考虑非执行语句。补救办法:在统计n1、n2、N1、N2时,可以把非执行语句中出现的运算对象,运算符统计在内。在允许混合运算的语言中,每种运算符必须与它的运算对象相关。如果一种语言有整型、实型、双精度型三种不同类型的运算对象,则任何一种基本算术运算符(、)实际上代表了 4种运算符。如果语言中有 4
33、种不同类型的算术运算对象,那么每一种基本算术运算符实际上代表了种运算符。在计算时应考虑这种因数据类型而引起差异的情况。2022-5-31第10章软件质量与软件工程标准化软件工程教研室没有注意调用的深度。Halstead公式应当对调用子程序的不同深度区别对待。在计算嵌套调用的运算符和运算对象时,应乘上一个调用深度因子。这样可以增大嵌套调用时的错误预测率。没有把不同类型的运算对象 ,运算符与不同的错误 发生率联系起来,而是把它们同等看待。例如,对简单IF语句与WHILE语句就没有区别。实际上,WHILE语句复杂得多,错误发生率也相应地高一些。忽视了嵌套结构(嵌套的循环语句、嵌套IF语句、括号结构等
34、)。一般地,运算符的嵌套序列,总比具有相同数量的运算符和运算对象的非嵌套序列要复杂得多。解决的办法是对嵌套结果乘上一个嵌套因子。 2022-5-31第10章软件质量与软件工程标准化软件工程教研室9.2.6 提高软件可靠性的方法 提高和保证软件可靠性应贯穿整个软件生命周期,落实到软件生命周期中各阶段的每个环节。1)建立以可靠性为核心的质量管理体系;2)选择合适的软件开发方法;3)软件重用;4)使用开发管理工具;5)加强测试;6)引入模型化技术和容错设计技术。 2022-5-31第10章软件质量与软件工程标准化软件工程教研室9.3 软件工程标准化 9.3.19.3.1 软件工程标准化的意义 软件工
35、程的标准化会给软件工作带来许多好处,比如:提高软件的可靠性、可维护性和可移植性(这表明软件工程标准化可提高软件产品的质量),提高软件的生产率,提高软件人员的技术水平,减少差错和误解,有利于软件管理,有利于降低软件产品的成本和运行维护成本,有利于缩短软件开发周期。 2022-5-31第10章软件质量与软件工程标准化软件工程教研室软件工程标准的类型 软件工程标准的类型也是多方面的。软件标准化包括程序设计语言的标准化和软件过程的标准化。它可能包括:过程标准(如方法、技术、度量等)、产品标准(如需求、设计、部件、描述、计划、报告等)、专业标准(如职别、道德准则、认证、特许、课程等)以及记法标准(如术语
36、、表示法、语言等)等等 。2022-5-31第10章软件质量与软件工程标准化软件工程教研室9.3.2 软件工程标准化的层次 根据软件工程标准制定的机构和标准适用的范围有所不同,它可分为五个级别,即国际标准(ISO)、国家标准(GB)、行业标准(IEEE)、企业(机构)标准及项目(课题)标准。 2022-5-31第10章软件质量与软件工程标准化软件工程教研室9.3.3 我国的软件工程标准化工作 从1983年起,我国国家标准总局和原电子工业部主持成立了“计算机与信息处理标准化技术委员会”,已陆续制定和发布了20项国家标准。这些标准可分为4类: 1)基础标准:GB/T 11457-89 软件工程术语
37、 GB 1526-891(ISO 5807-1985)信息处理-数据流程图、程序流程图、系统结构图、程序网络图和系统资源图的文件编制符号及约定等; 2)开发标准:GB 8566-88 软件开发规范等;3)文档标准:GB 8567-88 计算机软件产品开发文件编制指南等; 4)管理标准:GB 12504-90 计算机软件质量保证计划规范等。2022-5-31第10章软件质量与软件工程标准化软件工程教研室9.3.4 ISO 9000标准及质量认证 ISO9000由ISO/TC176/SC1质量管理和质量保证技术委员会制定,ISO9000标准可帮助各种类型的组织实施并运行有效的质量管理体系。这种质量
38、管理体系给企业管理注入新的活力和生机,给世界贸易带来质量可信度,给质量管理提供评价的基础。通过ISO9000认证已经成为企业证明自己产品质量、工作质量的一种护照。 2022-5-31第10章软件质量与软件工程标准化软件工程教研室ISO 9000标准简介 ISO 9000族标准源自英国标准BS5750。国际标准化组织(ISO)于1987年产生了首版IS09000族标准,即ISO 9000:1987系列标准。它包括: ISO8402质量术语、ISO9000质量管理和质量保证标准选择和使用指南、ISO9001质量体系设计开发、生产、安装和服务的质量保证模式、ISO9002质量体系生产和安装的质量保证
39、模式、ISO9003质量体系最终检验和试验的质量保证模式、ISO9004质量管理和质量体系要素指南等6项国际标准,通称为ISO9000系列标准。2022-5-31第10章软件质量与软件工程标准化软件工程教研室ISO 9000系列标准内容ISO 9000ISO 9000系列标准的主体部分可以分为两组:系列标准的主体部分可以分为两组:1) 1) “需方对供方要求质量保证需方对供方要求质量保证”的标准的标准90019001900390032) 2) “供方建立质量保证体系供方建立质量保证体系”的标准的标准9004ISO 9000 9004ISO 9000 质质量管理和质量保证标准:选择和使用导则量管
40、理和质量保证标准:选择和使用导则 90019001、90029002和和90039003之间的区别在于其对象的工序范围不之间的区别在于其对象的工序范围不同。同。90019001范围最广,包括从设计直到售后服务。范围最广,包括从设计直到售后服务。90029002为为90019001的子集,而的子集,而90039003又是又是90029002的子集。的子集。 ISO 9000ISO 9000系列标准原本是为制造硬件产品而制定的标准,系列标准原本是为制造硬件产品而制定的标准,不能直接用于软件制作。曾试图将不能直接用于软件制作。曾试图将90019001改写用于软件开发方改写用于软件开发方面,但效果不佳
41、。后以面,但效果不佳。后以ISO 9000ISO 9000系列标准的追加形式,另行系列标准的追加形式,另行制定出制定出ISO 9000-3ISO 9000-3标准,成为标准,成为“使使90019001适用于软件开发、供适用于软件开发、供应及维护应及维护”的的“指南指南”。 2022-5-31第10章软件质量与软件工程标准化软件工程教研室9.3.5 质量认证 质量体系认证则是通过第三方机构,依据规定程序对提供产品,服务单位的质量管理出具书面保证(ISO质量管理体系认证合格证书),证明其符合ISO 9000标准规定要求所做出的评价。2022-5-31第10章软件质量与软件工程标准化软件工程教研室
42、贯彻执行并适时取得质量管理体系认证,将为企业带来有别于传统管理的优势和好处。1)使企业管理规范化、程序化、法制化;2)与国际先进管理接轨的质量管理模式,将增强员工质量意识,优化质量成本,减少质量损失,使产品或服务保持稳定和一致性。3)提高了企业自身素质,改善了企业形象和面貌;4)有利于国际间的经济合作和技术交流。 2022-5-31第10章软件质量与软件工程标准化软件工程教研室推行ISO9000的五个必不可少的过程 知识准备立法宣贯执行监督、改进(1) 企业原有质量体系识别、诊断;(2)任命管理者代表、组建ISO9000推行组织;(3)制订目标及激励措施;(4)各级人员接受必要的管理意识和质量
43、意识训练;(5)ISO9001标准知识培训;(6)质量体系文件编写(立法);(7)质量体系文件大面积宣传、培训、发布、试运行;内审员接受训练;(8)若干次内部质量体系审核;(9)在内审基础上的管理者评审;(10)质量管理体系完善和改进;2022-5-31第10章软件质量与软件工程标准化软件工程教研室申请质量认证应具备的条件 1)产品质量认证的条件 (1) 中国企业持有工商行政管理部门颁发的企业法人营业执照;外国企业持有有关机构的登记注册证明; (2) 产品符合中国国家标准、行业标准及其补充技术要求,或者符合国务院标准化行政主管部门确认的标准; (3) 产品质量稳定,能正常批量生产,并提供有关证
44、明材料; (4) 企业质量体系符合GBT19000ISO9000族标准或者外国申请人所在国等同采用ISO9000族标准及其补充要求。2022-5-31第10章软件质量与软件工程标准化软件工程教研室2)质量体系认证的条件(1) 持有有关登记注册证明;(2) 已按GBT19000ISO9000系列标准或其他国际公认的质量体系规范建立了文件化的质量体系。2022-5-31第10章软件质量与软件工程标准化软件工程教研室9.4 软件能力成熟度模型CMMn软件能力成熟度模型(Capability Maturity Model for Software,简称SW-CMM, 我国在很多场合下所说的CMM就是S
45、W-CMM),是一种用于评价软件承包能力并帮助其改善软件质量的方法,也就是评估软件能力与成熟度的一套标准,它侧重于软件开发过程的管理及工程能力的提高与评估。2022-5-31第10章软件质量与软件工程标准化软件工程教研室9.4.1 CMM级别nCMM把软件过程从无序到有序的进化过程分成5个阶段,并把这些阶段排序,形成5个逐层提高的等级。这5个等级定义了一个有序的尺度,用以测量软件开发组织的软件过程成熟度和评价其软件过程能力。开发的能力越强,开发组织的成熟度越高,等级越高。2022-5-31第10章软件质量与软件工程标准化软件工程教研室n其中五级是最高级,即优化级,达到该级的软件公司过程可自发地
46、不断改进,防止同类问题二次出现;n四级称为已管理级,达到该级的软件公司已实现过程的定量化;n三级为已定义级,即过程实现标准化;n二级为可重复级,达到该级的软件公司过程已制度化,有纪律,可重复;n一级为初始级,过程无序,进度、预算、功能和质量等方面不可预测。2022-5-31第10章软件质量与软件工程标准化软件工程教研室9.4.2 CMM的内部结构和进化过程2022-5-31第10章软件质量与软件工程标准化软件工程教研室表表9-4 关键过程域分类表关键过程域分类表过程分类 等级管理方面组织方面工程方面优化级技术改造(12)过程改造管理(10)缺陷防范(18)可管理级定量完成过程(19)软件质量管
47、理(13)已定义级集成软件管理(19)组间协调(17)组织过程聚焦(16)组织过程定义(11)培训程序(16)软件产品工程(20)同级评审(9)可重复级需求管理(12)软件项目策划(25)软件项目跟踪监控(24)项目子合同管理(22)软件质量保证(17)软件配置管理(21)初始级无序过程2022-5-31第10章软件质量与软件工程标准化软件工程教研室9.4.3 利用利用CMM进行成熟度评估进行成熟度评估nCMM有两个基本用途q软件过程评估的目的是确定一个开发组织的当前软件过程的状态,找出组织所面临的急需解决的与软件过程有关问题,进而有步骤地实施软件过程改进,使开发组织的软件过程能力不断提高。q
48、软件能力评价的目的是识别软件开发组织的能力。通过利用CMM模型确定评价结果后,就可以利用这些结果确定选择某一开发组织的风险。或者用来监控开发组织现有软件工作中软件过程的状态,进而提出应改进之处。2022-5-31第10章软件质量与软件工程标准化软件工程教研室9.4.4 CMM与ISO9000系列标准nCMM和ISO 9000系列标准都以全面质量管理为理论基础,都针对过程进行描述,二者在实质上是基本相同的,并且都强调过程控制、体系文档化、PDCA持续改进等。nISO9000标准可通用于各个行业、各种规模、各种性质的组织。nCMM则是专门针对软件行业设计的描述软件过程能力的模型,其标准描述、实施方
49、式、相关要求均非常适合软件产品的开发、生产流程,在软件项目的开发管理过程中更具有指导意义和实效效果。但只是属于美国软件开发标准。2022-5-31第10章软件质量与软件工程标准化软件工程教研室9.4.5 我国的软件评估体系SPCAn“软件过程及能力成熟度评估”(简称SPCA)是软件过程能力评估和软件能力成熟度评估的统称,是我国信息产业部会同国家认证认可监督委员会在研究了国际软件评估体制。n企业实施SPCA一般需进行七个阶段:标准培训、组织职能建立和文件体系完善、文件评审、差距分析、持续支持、中期评估、最终评估。n通过软件能力评估制度强化软件工程标准贯彻,带动软件过程方法的工具软件的开发与应用,
50、促进软件过程管理专业化、规范化,降低软件开发风险、增加软件企业的市场竞争力。2022-5-31第10章软件质量与软件工程标准化软件工程教研室2022-5-31第10章软件质量与软件工程标准化软件工程教研室2022-5-31第10章软件质量与软件工程标准化软件工程教研室小结 本章主要介绍了软件质量的特性、软件质量、软件可靠性和复杂性、软件工程标准化及质量认证等。 软件质量是软件工程活动追求的主要目标之一。追求产品的质量有两个主要目的,一是开发正确的产品,二是正确的开发产品。 软件可靠性表明了一个软件系统按照用户的要求和设计的目标,执行其功能的正确程度。软件的可靠性评价指标有很多种。软件复杂性是指