1软件项目管理第七章软件项目质量管理SoftwareProjectQualityManagement清华大学计算机系殷人昆软件项目管理2一个成功的项目管理是在约定的时间、范围、预算的成本以及要求的质量下,达到或超过项目干系人的期望。由此可见,项目质量管理是项目管理的重要方面,它与绩效、成本、时间是项目成功的关键因素。项目质量管理是由质量方针、组织结构、项目过程中的活动以及相应的资源组成,包括整体管理职能的活动,这些活动确定质量的政策、目标、责任,并在质量体系中凭借质量计划编制、质量控制、质量保证和质量提高等措施履行质量的目标。软件项目管理37.1项目质量与质量模型7.2项目质量管理7.3项目质量计划的编制7.4项目质量保证7.5项目质量控制7.6质量保证体系7.7CMM的质量过程7.8软件验证和确认技术软件项目管理47.1项目质量与质量模型7.1.1项目质量的概念ISO8402-1994定义质量为“反映实体满足明确和隐含需求的能力的特性的总和”。其中,实体是“可以单独描述和研究的事物”,如产品,活动,过程,组织和体系等。明确需求是指在标准、规范、合同、技术要求和其他文件中明确规定的要求。隐含需求是指用户和社会对实体的期望,以及公认的不必明确的要求。软件项目管理5在项目范围内,质量管理的重要方面是通过项目管理把隐含需求转变成明确需求。DavidGarvin提出,“质量是一个复杂的多层面的概念”:从先验论角度看,质量是可以识别出来的,但不能明确定义的。从用户角度看,质量是对目标的满足程度。从制造角度看,质量是对规范的符合程度。从产品角度看,质量是产品的内在特征。从基于价值的角度看,质量依赖于顾客愿意出多少钱购买。软件项目管理6质量的两个主要特点:质量是综合的概念,它要求功能、成本、服务、环境、心理等诸方面都能满足用户的需要。质量是一个动态的、相对的、变化的、发展的概念,随着地域、时期、使用对象、社会环境、市场竞争的变化而被赋予不同的内容和要求,而且随着社会的进步及知识创新,其内涵和要求也是不断更新、丰富的。另外,质量还包括对项目过程的要求,如规定执行过程必须遵循的规范和标准等。软件项目管理77.1.2软件质量特性按照ISO8402-1994规定,软件质量是“对用户在功能和性能方面需求的满足,对规定的标准和规范的遵循,正规化软件某些公认的应该具有的本质”。包涵的含义有三:(1)用户的需求是软件质量评价的基础。(2)已经规定的标准和规范是软件开发的共同准则。(3)软件的某些要求虽然没有明确提出,但是业内公认和执行的,也应得到满足。软件项目管理8软件质量不是绝对的,而是相对的概念。软件质量概念需要建立在预先定义的需求的基础上,而预先定义的需求在很大程度上依赖于描述它们的人员。这些人员可能来自软件产品不同的开发环境,对软件质量有不同的理解,因此提出了关于软件产品的质量特性及其组合。如果这些质量特性及其组合都能在产品中得到满足,则这个软件产品质量就是高的。软件质量是各种特性的复杂组合。它随着应用的不同而不同,随着用户提出的质量要求不同而不同。软件项目管理97.1.3软件质量模型软件质量特性,反映了软件的本质。讨论一个软件的质量,归结到定义软件的质量特性。定义一个软件的质量,就等价于为该软件定义一系列质量特性。人们通常把影响软件质量的特性用软件质量模型来描述。软件质量特性定义成分层模型。最基本的叫做基本质量特性,它可以由一些子质量特性定义和度量。这些子特性在必要时又可由它的一些子特性定义和度量。软件项目管理101976年B.W.Boehm、T.R.Brown和M.Lipow首次提出软件质量模型,他们认为软件产品的质量基本上可以从下列3个方面来考虑:软件的可使用性、可维护性和可移植性。这些质量特性又可分为若干层次,对最低层次的质量子特性引入数量化的概念。1979年,McCall和Walters提出新的软件质量模型与度量,该模型得到公认和广泛的应用,并成为ISO质量模型及其他模型的基础。该模型提出软件的11个质量特性,集中分布在3个方面:软件产品的运行特性、修正特性和转移特性。软件项目管理11设备独立性自包含性正确性完备性健壮性一致性可计测性设备效率可存取性通信性自描述性结构化性简单性清晰性可扩充性软件质量可移植性可使用性可维护性人类工程可修改性可理解性可测试性可靠性效率Boehm质量模型软件项目管理12McCall质量模型可维护性(Maintainability)可测试性(Testability)灵活性(Flexibility)正确性(Correctness)可靠性(Reliability)可使用性(Usability)效率(Efficiency)完整性(Integrity)互连性(Interoperability)可移植性(Portability)复用性(Reusability)产品运行ProductOperationsProductRevitions产品修正ProductTransitions产品转移软件项目管理13ISO的软件质量评价模型按照1991年ISO发布的ISO/IEC9126质量特性国际标准,软件质量度量模型由三层组成软件质量特性软件质量子特性软件质量度量评价准则高层和中层建立国际标准,低层可由各使用单位视实际情况制定。软件项目管理14软件质量功能性可靠性可维护性效率可使用性可移植性适合性准确性互操作性依从性安全性成熟性容错性易恢复性易理解性易学习性易操作性时间特性资源特性易分析性稳定性易变更性易测试性易安装性易替换性适应性遵循性质量特性质量子特性质量度量准则使用单位自行规定ISO9126质量模型软件项目管理15可移植性可维护性效率可使用性可靠性功能性可移植性可维护性效率可使用性可靠性功能性其中,表示有利影响,表示不利影响。质量特性之间的竞争软件项目管理161994年对ISO/IEC9126开始进行修正,将原标准修订为两个序列标准:1.ISO/IEC9126《信息技术软件产品质量》,描述新的软件质量模型,分为4个部分:(1)质量模型(9126-1)(2)内部质量(9126-2)(3)外部质量(9126-3)(4)使用质量(9126-4)2.ISO/IEC14598《信息技术软件产品评价》,详细描述软件质量评价的方法,分为6个部分:软件项目管理17(1)概述(14598-1)(2)策划和管理(14598-2)(3)开发方过程(14598-3)(4)获取方过程(14598-4)(5)评价方过程(14598-5)(6)评价模块的文档(14598-6)修订版保留了6个质量特性,但明确了它们与内部度量和外部度量的关系,并解释了这些特性与使用质量之间的关系。修订版还给出了一个质量模型的规格说明,引入了使用质量。软件项目管理19内部质量和外部质量的质量模型外部质量是软件产品在规定条件下使用时,满足规定的和隐含的要求的程度。外部质量是从外部观点看软件产品的全部特性。内部质量是软件产品在规定条件下使用时,决定其满足规定的和隐含的要求的能力的产品属性的全体。内部质量是从内部的观点看软件产品的全部特性。在质量模型中有6个软件质量特性,这些特性按用户观点描述软件的外部质量,每个质量特性按开发者的观点又分解为子特性。软件项目管理20外部和内部质量的质量模型适合性正确性互用性保密性功能性符合性成熟性容错性恢复性可靠性符合性易理解性易学会性操作性吸引性易用性符合性时间特性资源利用效率符合性易分析性易变更性稳定性易测试性可维护性符合性适应性易安装性共存性可替换性可移植性符合性外部质量和内部质量功能性可靠性可使用性效率可维护性可移植性软件项目管理21使用质量的质量模型使用质量是软件产品在规定的使用环境中,规定的用户能实现规定目标的要求,并具有有效性、生产率、安全性和满意度的能力。使用质量是从软件所处的环境的观点,用软件在这个环境中的使用绩效来测量的,而不是依靠软件本身的特性来测量。有效性生产率满意度安全性使用质量软件项目管理22在生存期中各种质量特性的使用软件的生存期可以划分为三个大的阶段。在软件需求定义阶段定义软件的质量要求;在软件产品开发阶段要使得软件产品具有要求的质量;在软件运行和维护阶段要测量软件是否达到了用户的质量要求并维护软件的性能水平。用户质量要求可以用使用质量度量、外部质量度量表达,有时也可以用内部质量度量来表达。用这些度量表达的要求将作为产品确认的准则。软件项目管理257.2项目质量管理项目质量管理理论产生于1920年代,其主要目的是:最经济、最有效地开发、设计、生产用户最满意的产品和服务。质量管理的发展阶段:1.以产品为中心的质量检验合同及质量控制阶段(~1950年)7.2.1项目质量管理的概念检验统计质量控制质量保证质量管理全面质量管理软件项目管理262.以顾客为中心的质量保证阶段(1950年~1987年)3.强调持续改进的质量保证阶段(1987年~现在)4.全面质量管理阶段目前质量管理理论和实践的中心是针对过程的质量管理。主张在生产过程中保证质量,而不是在传统的生产过程结束后才发现质量问题,这就比产品质量检验控制更具有先期性和主动性。一般地,开发过程的质量直接影响可交付产品的质量,产品质量直接与生产过程有关。软件项目管理28软件在其开发过程中可以借用一般产品生产的质量管理基本思想。软件开发过程基本可以划分为几个阶段:需求分析、概要设计、详细设计、程序编码与单元测试、集成与测试、版本发行等。它们的质量形成过程同样涉及到各个部门及其相关人员,也涉及到生产企业内外相关人员和用户。因为产品的形成受到开发过程的影响,故对生产过程的质量因素分析必须基于过程进行。影响产品质量的因素很多。根据对质量影响大小来看,可分为偶然因素和异常因素。软件项目管理29偶然因素始终存在,对质量影响较小。异常因素对产品质量影响较大,应尽快找出,采取措施加以消除。根据来源不同,质量因素可分为5M1E:材料(Material)方法(Method)设备(Machine)操作人员(Man)测量(Measurement)环境(Environment)软件产品的质量因素可以参照5M1E进行来源分析,并着重于异常因素的来源分析。软件项目管理307.2.2全面质量管理ISO9000:2000对质量管理的定义是:“在质量方面指挥和控制组织的协调的活动”。因此,质量管理确定质量方针、目标和责任,指导和控制组织所有与质量有关的相互协调的活动。1950年代末,美国质量管理专家W.E.Deming和J.M.Juran等人提出了全面质量管理TQC(TotalQualityControl)的概念。通过多年实践,全面质量管理从以质量管理专业人员为核心进行质量管理,发展到管理者推动、组织各层次、各部门人员来学习和实施质量管理。软件项目管理311994年ISO8402标准将全面质量管理定义为TQM(TotalQualityManagement)。其描述为“一个组织以质量为中心,以全员参与为基础,目的在于通过让顾客满意和本组织所有成员及社会受益而达到长期成功的管理途径”。换言之,TQM就是运用质量管理的科学理论、技术、方法,建立起贯穿于产品质量形成全过程的质量保证体系,使企业全体职工树立质量观点,提高工作质量,经济地生产用户满足的产品。全面质量管理针对的是广义的质量,即产品质量和工作质量的综合。软件项目管理32工作质量是指与质量有关的各项工作,即保证产品质量的各种手段。从系统的观点来看,要获得高的产品质量,必须把重点放在工作质量上。工作质量保证了过程质量,过程质量直接影响了产品质量。全面质量管理的特点:(1)全过程的质量管理。产品质量有一个逐步形成的过程,因此要求事前控制生产过程的质量,保证一切环节的质量良好。(2)全员的质量管理。产品质量取决于全体员工对产品质量的认识,以及与产品质量有关