1、软件质量保证和管理 - Ch.3 软件质量工程体系,第2章 回顾,2.1 软件特点 2.2 软件过程过程模型, V模型的完整诠释,XP,阶段性开发模型 2.3 软件缺陷软件缺陷的产生,分类 2.4 软件质量软件质量需求的背景、内容,软件质量的定义、特性分析 2.5软件质量的内容软件产品、过程和商业环境质量,第 3章 软件质量工程体系,3.1 概述3.2 软件质量因素和指标3.3 软件质量模型分析3.4 软件质量工作层次3.5 软件质量成本3.6 软件质量标准和度量,3.1 概述,3.1.1系统工程学的思想3.1.2 软件质量工程体系的建立3.1.3 软件质量工程体系的构成3.1.4 软件质量工
2、程体系和管理体系的关系,3.1.1系统工程学的思想,系统工程学是为了研究多个子系统构成的整体系统所具有的多种不同目标的相互协调,以期系统功能的最优化、最大限度地发挥系统组成部分的能力而发展起来的一门科学。,3.1.2 软件质量工程体系的建立,建立和实施质量管理体系的方法,确定顾客和其他相关方的需求和期望;建立组织的质量方针和质量目标;确定实现质量目标必需的过程和职责;确定和提供实现质量目标必需的资源;规定测量每个过程的有效性和效率的方法;应用这些测量方法确定每个过程的有效性和效率;确定防止不合格并消除产生原因的措施;建立和应用持续改进质量管理体系的过程。,从系统工程的角度来描述质量管理体系,3
3、.1.3 软件质量工程体系的构成,3.1.4 软件质量工程体系和管理体系的关系,将软件质量视为一个系统,深入了解软件质量的构成和结构,建立软件质量的模型软件质量策划,如同项目计划,定义软件质量管理要实现的目标、范围和方法质量成本的分析,如何降低由低质量造成的成本软件质量风险的分析,如何避免质量风险软件质量度量,从而不断改进质量模型和方法手段,3.2 软件质量因素和指标,3.2.1 软件质量指标3.2.2 软件产品的质量因素3.2.3 软件过程的质量因素,3.2.1 软件质量指标,正确性:实现的功能达到设计规范,并满足用户需求的程度可靠性:规定的时间和条件下,仍能维持其性能水准的程度易用性:用户
4、掌握软件操作所要付出的时间及努力程度效率:软件执行某项功能所需电脑资源(含时间)的有效程度可维护性:当环境改变或软件发生错误时,执行修改或恢复所做努力的程度可移植性:从一个系统/环境移到另一系统/环境的容易程度,功能性和可用性的质量指标,功能性: 功能的正确性 功能的准确性 软件功能的完整性可用性: 可操作性 通用性 一致性,可靠性和性能的质量指标,可靠性: 系统自我恢复能力(Autonomy) 健壮性 系统的分布性 性能: 有效性(Efficiency) 安全管理/完整性 易存取性(System Accessibility),可维护性的质量指标,模块化(Modularity) 增强能力/灵活
5、性(Augment ability) 可测试性(Testability) 可追溯性(Traceability) 简单性 (Simplicity) 自我描述性(Self Descriptiveness) 系统兼容性(System Compatibility) 文档质量(Document Quality),可移植性的质量指标,独立性(Independence) 可重用性(reusability) 互操作性(Interoperability) 虚拟性 ( Virtuality) 一般性(Generality),3.2.2 软件产品的质量因素,3.2.3 软件过程的质量因素,项目计划过程:和客户的沟通
6、能力、软件产品特性定义的方法、项目计划策略、评审的流程、范围、方式和程度、协同工作流程、合同和用户管理流程和方法、文档编写、管理等的规范和流程项目设计过程:软件产品指标的定义和解释、设计流程、设计标准、协同工作流程、文档编写、管理等的规范和流程项目实施过程:变更控制流程、执行过程跟踪方法、流程和相适应的系统、缺陷处理流程、文档编写、管理等的规范和流程软件维护过程:变更控制流程、用户反馈、相应处理机制、回归测试流程软件商业环境过程:软件改进的策略、产品开发模式、市场定位、产品标准等,3.3 软件质量模型分析,3.3.1 软件质量模型3.3.2 模型评价和分析,3.3.1 软件质量模型,McCal
7、l 软件质量模型 (GE模型, 1977) 由11个指标构成,分为产品操作,产品修订和产品转移Boehm 模型 (1978) 基于很多特性和 19个标准ISO 9126 包括6个质量目标,每个质量目标有很多属性,McCall模型,软件质量FCM模型,ISO简化的软件质量模型,SQRC SQDC SQMC,3.3.2 模型评价和分析,3.4 软件质量工作层次,3.4.1 软件质量方针3.4.2 软件质量控制(SQC)3.4.3 软件质量保证(SQA)3.4.4 软件质量管理(SQM),就象汽车表盘上的仪器,可以了解行驶中的转速、速度、油量等。 汽车中的用户手册。 操作的誓学,教你如何驾车,软件质
8、量管理的4个层次,检查,初期阶段,通过检验保证产品的质量,符合规格的软件产品为合格品,不符合规格的产品为次品,次品不能出售。这个层次的特点是独立的质量工作,质量是质量部门的事,是检验员的事。检验产品只是判断产品质量,不检验工艺流程、设计、服务等,不能提高产品质量。 保证,质量目标通过软件开发部门来实现,开始定义软件质量目标、质量计划,保证软件开发流程合理性、流畅性和稳定性。 预防,软件质量以预防为主,以过程管理为重,把质量的保证工作重点放在过程管理上 完美,以客户为中心,全员参与,追求卓越。,3.4.1 软件质量方针,质量方针,是由组织的最高管理者正式发布的、该组织的质量宗旨、目标和质量方向,
9、并形成文件。质量方针是企业经营总方针的组成部分,是企业管理者对质量的指导思想和承诺。建立质量方针和质量目标为组织提供了关注的焦点,在一个质量管理体系中起着关键作用。质量方针应体现软件公司的组织目标、顾客的期望/需求和组织内部质量行为的准则,软件质量策划,3.4.2 软件质量控制,质量控制是一个设定标准(根据质量要求)、测量结果,判定是否达到了预期要求,对质量问题采取措施进行补救并防止再发生的过程,质量控制已不再仅仅是检验,而更多地倾向于确保生产出来的产品满足要求的过程控制。 统计过程控制的概念与实施方法 控制图,Statistical Process Control SPC,3.4.3 软件质
10、量保证,质量保证是质量管理的一部分,是为保护产品和服务充分满足消费者要求的质量而进行的有计划有组织的活动,致力于提供对满足质量要求的信任 。 内部质量保证是组织向自己的管理者提供信任;外部质量保证是组织向外部客户或其它方提供信任。复审(Review):用结束标准对该阶段生产出的软件配置成分进行严格的技术审查等活动;内审(Audit):检查组织内部是否遵守已有的模板、规则、流程等。,3.4.4 软件质量改进,质量改进是质量管理的一部分,是不断为改进软件开发过程、产品和服务的持续过程。同时,为确保有效性、效率或可追溯性,组织应注意识别需要改进的项目和关键质量要求,考虑改进所需的过程,以增强组织体系
11、、改进过程和产品并提高满足要求的能力。在质量改进工作中,有许多模型,包括PDCA模型、PEIS模型、6 Sigma模型的DMAIC、CMM模型、SPICE模型等。,IDEAL模型用于质量改进,3.5 软件质量成本,3.5.1 质量成本概念3.5.2 引入质量成本的意义3.5.3 劣质成本PONC和COPQ 3.5.4 软件的劣质成本,3.5.1质量成本,田口玄一:“所谓质量,是指产品上市后给社会带来的损失。” 费根堡姆主张把质量预防费用和检验费用与产品不合要求所造成的厂内损失和厂外损失一起加以考虑,并形成质量成本报告 ISO84021994:质量成本是为确保和保证满意的质量而发生的费用以及没有
12、达到满意的质量所造成损失的总和,即包括保证费用和损失费用。,质量成本的构成,质量成本质量保证成本损失成本 保证成本:为保证满意的质量而发生的费用损失成本:没有达到满意的质量所造成损失 质量成本质量预防成本评价成本失效成本 保证成本预防成本评价成本预防成本:预防产生质量问题(软件缺陷)的费用,是企业的计划性支出,专门用来确保在软件产品交付和服务的各个环节不出现失误。评价成本:是指在交付和服务环节上,为评定软件产品或服务是否符合质量要求而进行的试验、软件测试和质量评估等所必需的支出。失效成本:分为内部的和外部的,如果在软件发布之前发现质量问题,而要求重做、修改和问题分析所带来的成本属内部失效成本,
13、包括修正软件缺陷、回归测试等,以及因产品或服务不合要求导致的延误。,3.5.2 引入质量成本的意义,质量成本将质量与企业经济效益直接联系起来,质量得以货币语言来表达,质量语言和货币语言形成对话,从一个务虚的概念转换成一个务实的概念,使企业管理层对质量及其管理的意义和作用,有了新的认识,更容易树立质量至上的理念,进一步加大质量管理力度,使企业立于不败之地。这是质量成本对社会经济发展的重大贡献,“矿中黄金”理论,3.5.3 劣质成本PONC和COPQ,PONC,即“不符合要求的代价 (Price of Nonconformance)” 或称“劣质成本”,是指由于缺乏质量而造成的人力、财力、物力以及
14、时间成本的浪费。PONC是在“零缺陷”质量管理中,为了更有效地衡量质量成本而引入的一个重要概念。COPQ,即“不良成本 (Cost of Poor Quality)” 或称“劣质成本”的概念。COPQ指所有由过程、产品和服务中的质量缺陷引起的费用。COPQ则是“6西格玛(Six sigma)”质量管理中的一个重要概念,用于有效地衡量质量成本、质量改进过程在经营效益上的表现。,劣质成本的分类,故障成本,包括质量成本中的外部故障成本、内部故障成本,需采取返工、返修、纠正等补救措施所花费的成本。过程成本,包括非增值成本(非增值的预防成本和鉴定成本)、低效率过程成本(如多余的操作、重复的作业等)、机会
15、损失成本(指如果没有缺陷而就不会发生的费用等)。损失成本,包括顾客损失成本(指给顾客所造成的各种额外的费用及负担)、信誉损失成本。,3.5.4 软件的劣质成本,验证缺陷回退到原来位置/版本(Roll Back)代码完成后功能修改、测试用例修改缺陷报告质量低,往返几次,才能再现缺陷 回归测试和不断的重复测试 错误的开发环境或测试环境而返工. 为修正客户发现的问题,紧急发布程序补丁,软件劣质成本竟高达46%以上,有时高达60,质量成本 冰山,Put on hold Delay Overtime work to fix bugs Many duplicate tests Roll-back Impa
16、ct to morale Lost orders Missed business opportunities Lost credits & Brand,Billing error Cancelled projects Failure in running,Only Top-angle is seen by us ?,Did you see?,3.6 软件质量标准和度量,3.6.1 软件质量标准体系介绍3.6.2 软件质量度量的地位,3.6.1 软件质量标准体系介绍,从纵向看,分为产品质量管理标准和过程质量管理标准从横向看,分为通用标准和各个行业的质量标准从范围看,分为国际标准和国内标准,原理标
17、准,描述各个原理级的关键组织标准要素标准,原理标准中的各个要素的详细性能要求的标准,必须执行;指南和补充,为如何把原理或要素标准应用于特定场合而提供指导性的文件,标准体系空间,标准体系层次,软件产品质量标准体系,软件过程质量标准体系,3.6.2 软件质量度量的地位,项目质量度量是度量软件项目特征和项目执行的质量状态,包括项目的资源使用效率、项目性能、项目风险等。产品质量度量是度量软件产品的特性和质量属性,如软件产品的功能、复杂性、设计特征、性能和可靠性等。过程质量度量是度量软件开发和维护的改进过程,包括过程中某一时刻的状态(时间切面)、历史数据分析度量和未来变化预测的度量等。,采用定量软件工程,制定软件产品质量的度量准则,可以提高软件开发过程管理的可视性,降低劣质成本,提高软件产品的质量,小结,现代软件质量工程体系继承了全面质量管理思想,要求组织中每个人都承担质量的责任,将质量控制、保证和改进的流程融于整个的软件开发生命周期;软件质量工程体系,涵盖质量计划、质量风险管理、质量成本控制和质量计划的实施等内容。质量计划的制定又受质量文化影响、质量方针指导,通过对影响质量各种因素的分析,了解可能存在的质量风险,从而加以回避、控制。通过对软件产品、过程的测量和质量的度量,不断改进软件开发过程,以达到软件质量预先设定的目标 。,作业,第3章 1、3,Q & A,Thank You,