IT项目管理第2页软件质量概述1软件质量度量2IT项目质量计划3IT项目质量保证4第06章软件项目质量管理5质量控制5第3页学习目标理解质量、项目质量管理的概念了解软件质量度量的概念和过程掌握软件质量的标准与质量计划的内容掌握软件质量的控制过程与活动熟悉软件质量体系第06章软件项目质量管理第4页HotTip质量是指一组固有特性满足要求的程度,指产品或服务满足规定或潜在需要的特征和特性的总和。软件质量体现在开发过程的质量和它所拥有的特征上,是各种特性的复杂组合。6.1软件质量概述第5页HotTip①质量的基本概念质量是反映实体(产品、过程或活动等)满足明确和隐含的需要能力和特性总和。所谓“实体”是指承载质量属性的具体事物。反映质量的实体包括产品、过程(服务)和活动(工作)3种质量本身的含义是指“实体”能够满足用户需求的能力和特性的总和。“明确的需求”一般是在具体产品交易合同中标明的,“隐含的需求”一般是需要通过市场或用户调查获得的。对于不同“实体”,质量的实质内容不同,即“实体”满足用户明确和隐含的需求在实质内容上也不同。6.1软件质量概述第6页HotTip质量特性是指产品或服务满足人们明确或隐含需求的能力、内在质量特性:主要是指产品的性能、特性、强度、精度等方面的质量特性。外在质量特性:主要是指产品外形、包装、装潢、色泽、味道等方面的特性。经济质量特性:主要是指产品的寿命、成本、价格、运营维护费用等方面的特性。商业质量特性:主要是指产品的保质期、保修期、售后服务水平等方面的特性。环保质量特性:主要是指产品或服务对于环境保护的贡献或对于环境造成的污染等方面的特性。6.1软件质量概述第7页HotTip②项目质量管理的概念项目质量管理的基本概念也包括:项目质量方针的确定、项目质量目标和质量责任的制定,项目质量体系的建设,以及为实现项目质量目标所开展的项目质量计划、项目质量控制和项目质量保障等一系列的项目质量管理工作。1.使顾客满意是质量管理的目的2.质量是干出来的不是检验出来的3.质量管理的责任是全体员工的4.质量管理的关键是不断地改进和提高6.1软件质量概述第8页HotTip③理解质量成本质量成本是指为了达到产品或服务质量要求而进行的全部工作所发生的所有成本。与质量相关的成本有如下几类:1.预防成本2.评估成本3.内部故障成本4.外部故障成本5.测量和测试设备成本6.1软件质量概述第9页HotTip二、软件质量①软件质量定义与软件产品满足规定的和隐含的需要的能力有关的特征或特性的组合。软件质量的特性是多方面的,但必须包括:与明确确定的功能和性能需求的一致性,能满足给定需要的特性之全体。与明确成文的开发标准的一致性。与所有专业开发的软件所期望的隐含的特性的一致性。顾客或用户认为能满足其综合期望的程度,软件的组合特性,它确定软件在使用中将满足顾客预期要求的程度。6.1软件质量概述第10页②软件质量的要素6.1软件质量概述第11页HotTip②软件质量的要素正确性:系统满足规格说明和用户的程度,即在预定环境下能正确地完成预期功能的程度。健壮性:在硬件发生故障、输入的数据无效或操作等意外环境下,系统能做出适当响应的程度。效率:为了完成预定的功能,系统需要的计算资源的多少。完整性:对未经授权的人使用软件或数据的企图,系统能够控制的程度。可用性:系统在完成预定应该完成的功能时令人满意的概率。风险性:按预定的成本和进度把系统开发出来,并且使用户感到满意。6.1软件质量概述第12页HotTip可理解性:理解和使用该系统的容易程度。可维修性:诊断和改正错误所需要的概率。灵活性:修改或改正在运行的系统需要的工作量的多少。可测试性:软件容易测试的程度。可移植性:软硬件环境迁移的工作量可重用性:在其他应用中该程序可以被再次使用的程度。可运行性:把该系统和另一个系统结合起来工作量的多少。6.1软件质量概述第13页HotTip③不同角度对质量的认识软件质量可以从三个不同的角度来看待:如何使用软件、使用效果如何、软件性能如何。对用户重要的属性:有效性灵活性完整性(安全性)互操作性可靠性健壮性可用性6.1软件质量概述第14页HotTip③不同角度对质量的认识对开发者重要的属性:可维护性可重用性可测试性属性的取舍6.1软件质量概述第15页决定质量的因素程序设计:程序系统:软件工程:程序程序员编程程序文档小组设计编程测试程序文档数据团队软件生命周期个人编程质量少数人协调把关团队项目管理水平软件内容人员规模工作范围决定质量的因素第16页HotTip三、IT项目的质量管理体系常见的IT企业遵循的质量标准体系ISO9000:2000标准体系CMM\CMMI国际标准ISO/IEC122076.1软件质量概述第17页2000版ISO9000族文件结构核心标准(4)名称说明ISO9000ISO9001ISO9004ISO19011质量管理体系-基本原则和术语质量管理体系-要求质量管理体系-业绩改进指南质量和环境审核指南ISO8402+ISO9000-1;替代了9002和9003;质量管理的八项管理原则指导内审和外审管理工作其它标准(1)ISO10012测量控制系统ISO10012-1~-2技术报告(6)ISO/TR10006ISO/TR10007ISO/TR10013ISO/TR10014ISO/TR10015ISO/TR10017项目管理指南技术状态管理指南质量管理体系文件指南质量经济性管理指南教育和培训指南统计技术指南ISO10006ISO10007ISO10013ISO10014ISO10015ISO10017小册子(2)12质量管理原理选择和使用指南小型企业的应用第18页ISO9001:2000版目录第19页19CMM全称是CapabilityMaturityModel即软件能力成熟度模型。CMMI全称是CapabilityMaturityModelIntegration,即软件能力成熟度模型集成。由美国国防部与卡内基-梅隆大学和美国国防工业协会共同开发和研制的,其目的是帮助软件企业对软件工程过程进行管理和改进,增强开发与改进能力,从而能按时地、不超预算地开发出高质量的软件。其所依据的想法是:只要集中精力持续努力去建立有效的软件工程过程的基础结构,不断进行管理的实践和过程的改进,就可以克服软件开发中的困难。CMM与CMMI第20页20CMMI是目前世界公认的软件产品进入国际市场的通行证,它不仅仅是对产品质量的认证,更是一种软件过程改善的途径。参与CMMI评估的博科负责人表示,通过CMMI的评估认证不是目标,它只是推动软件企业在产品的研发、生产、服务和管理上不断成熟和进步的手段,是一种持续提升和完善企业自身能力的过程。如果一家公司最终通过CMMI的评估认证,标志着该公司在质量管理的能力已经上升到一个新的高度。CMM与CMMI第21页21CMMI的本质是软件管理工程的一个部分。软件过程改善是当前软件管理工程的核心问题,50多年来计算机的发展使人们认识到要高效率、高质量和低成本地开发软件,必须改善软件生产过程。CMMI自出道以来,它所达到的目标就没有变过,第一个是质量,第二个是时间表,第三就是要用最低的成本。CMMI中过程区域分为四大类:过程管理、项目管理、工程以及支持。对于每个大类中的过程区域,又进一步分为基本的和高级的。软件工程用于软件系统的开发,主要集中在使用系统的·科学的·量化的方法来开发·运行·维护软件。CMM与CMMI第22页Level1初始级不一致的管理Level2可重复级项目管理Level3已定义级过程管理Level4已管理级能力管理Level5优化级变更管理可重复实践通用工程过程定量理解和控制持续改进实践软件CMM第23页CMMV1.1关键过程域等级关键过程域5优化缺陷预防技术变更管理过程变更管理4已管理定量过程管理软件质量管理3已定义组织过程焦点组织过程定义集成软件管理软件产品工程组间协调培训大纲同行评审2可重复软件需求管理软件项目策划软件计划跟踪软件分包管理软件质量保证软件配置管理第24页24各级别之间的差异第25页国际标准ISO/IEC12207文档编制配置管理质量保证验证过程确认过程联合评审审核过程问题解决管理过程基础设施改进过程培训过程获取过程供应过程开发过程运行过程维护过程基本过程(5)支持过程(8)组织过程(4)第26页ISO9001与CMM的关系最大的相似点:(1)“言所行、行所言”(2)强调管理、过程、规范化和文档化不同点:(1)CMM把焦点严格对准软件(2)ISO9001的范围包括:硬件、软件、流程性材料和服务两者之间的联系:(1)CMM2级与ISO9001强相关(2)CMM的每个关键过程域至少按某种解释与ISO9001弱相关第27页HotTip软件度量是对软件开发项目、过程及其产品进行数据定义、收集以及分析的持续性定量化过程,目的在于对此加以理解、预测、评估、控制和改善。度量取向是软件开发诸多事项的横断面,包括顾客满意度度量、质量度量、项目度量、以及品牌资产度量、知识产权价值度量等。度量取向要依靠事实、数据、原理、法则;其方法是测试、审核、调查;其工具是统计、图表、数字、模型;其标准是量化的指标。6.2软件质量的度量第28页HotTip一、软件度量的作用软件度量的效用有如下几个方面:理解:获取对项目、产品、过程和资源等要素的理解,选择和确定进行评估、预测、控制和改进的基线。预测:通过理解项目、产品、过程、资源等各要素之间的关系建立模型,由已知推算未知,预测未来发展的趋势,以合理地配置资源。评估:对软件开发的项目、产品和过程的实际状况进行评估,使软件开发的标准和结果都得到切实的评价,确认各要素对软件开发的影响程度。控制:分析软件开发的实绩和计划之间的偏差,发现问题点之所在,并根据调整后的计划实施控制。改善:根据量化信息和问题之所在,探讨提升软件项目、产品和过程的有效方式,实现高质量、高效率的软件开发。6.2软件质量的度量第29页HotTip软件开发主体及其度量内容6.2软件质量的度量角色度量内容经营者开发组织(1)顾客满意度;(2)收益;(3)风险;(4)绩效;(5)发布的缺陷的级别;(6)产品开发周期;(7)日程与作业量估算精度;(8)复用有效性;(9)计划与实际的成本管理者项目组(1)不同阶段的成本;(2)不同开发小组成员的生产率;(3)产品规模;(4)工作量分配;(5)需求状况;(6)测试用例合格率;(7)主要里程碑之间的估算期间与实际期间;(8)估算与实际的员工水平;(9)结合测试和系统测试检出的缺陷数目;(10)审查发现的缺陷数目;(11)缺陷状况;(12)需求稳定性;(13)计划和完成的任务数目作业者软件开发人员(1)工作量分配;(2)估算与实际的任务期间与工作量;(3)单体测试覆盖代码;(4)单体测试检出缺陷数目;(5)代码和设计的复杂性第30页HotTip二.软件度量的分类6.2软件质量的度量度量维度侧重点具体内容项目度量理解和控制当前项目的情况和状态;项目度量具有战术性意义,针对具体的项目进行。规模、成本、工作量、进度、生产力、风险、顾客满意度等产品度量侧重理解和控制当前产品的质量状况,用于对产品质量的预测和控制。以质量度量为中心,包括功能性、可靠性、易用性、效率性、可维护性、可移植性等过程度量理解和控制当前情况和状态,还包含了对过程的改善和未来过程的能力预测;过程度量具有战略性意义,在整个组织范围内进行。如成熟度、管理、生命周期、生产率、缺陷植入率等第31页HotTip三.软件度量软件度量过程的主要架构:开发一个度量过程并使其成为企业组织中标准软件过程的一部分;通过定制与整合各种过程资产来对项目及相关手续拟定过程计划;执行拟定的计划和相关手续来对项目进行过程的实施;当项目进一步成熟且度量需求发生改变时,对相关计划及手续进行改进以改善该过程。IEEE提供的软件度量列表(P153表6-4)6