1、第十章 软件质量管理,第三部分 软件项目管理,软件质量保证与评价,1 软件质量及其度量模型 2 软件的质量保证 3 软件的质量设计 4 软件能力成熟度模型CMM,(1)软件质量定义 与所确定的功能和性能需求的一致性 与所成文的开发标准的一致性 与所有专业开发的软件所期望的隐含特性的一致性,(2)软件质量度量模型,McCall质量度量模型 针对面向软件产品的运行、修正和转移的。ISO软件质量评价模型 分三层:高层(软件质量需求评价准则)中层(软件质量设计评价准则)低层(软件质量度量评价准则),2 软件的质量保证,(1)软件质量保证的定义 定义:质量保证是为保证产品和服务充分满足消费者要求的质量而
2、进行的有计划、有组织的活动。特性: A.是面向消费者的活动,是为了使产品实现用户要求的功能,站在用户立场上来掌握产品质量的。软件的质量保证就是向用户及社会提供满意的高质量的产品。 B.和一般的质量保证活动一样,是确保软件产品从诞生到消亡为止的所有阶段的质量的活动。即为了确定、达到和维护需要的软件质量而进行的所有有计划、有系统的管理活动。,(2)主要任务,为了提高软件的质量和软件的生产率,软件质量保证的主要任务大致可归结为8点。, 用户要求定义-需求分析,熟练掌握正确定义用户要求的技术 熟练使用和指导他人使用定义软件需求的支持工具 重视领导全体开发人员收集和积累有关用户业务领域的各种业务的资料和
3、技术技能。, 力争不重复劳动- 软件复用,考虑哪些既有软件可以复用 在开发过程中,随时考虑所生产软件的复用性。, 掌握开发新软件的方法,在开发新软件的过程中大力使用和推行软件工程学中所介绍的开发方法和工具。使用先进的开发技术:如结构化技术、面向对象技术使用数据库技术或网络化技术应用开发工具或环境改进开发过程, 组织外部力量协作的方法,一个软件自始至终由同一个软件开发单位来开发,也许是最理想的。但在现实中常常难以做到。 改善对外部协作部门的开发管理。必须明确规定进度管理、质量管理、交接检查、维护体制等各方面的要求,建立跟踪检查的体制。, 排除无效劳动,最大的无效劳动就是因需求规格说明有误、设计有
4、误而造成的返工。定量记录返工工作量,收集和分析返工劳动花费数据 较大的无效劳动是重复劳动,即相似的软件在几个地方同时开发 建立互相交流、信息往来通畅、具横向交流特征的信息流通网, 发挥每个开发者的能力,软件生产是人的智能生产活动,它依赖于人的能力和开发组织团队的能力。 开发者必须有学习各专业业务知识、生产技术和管理技术的能动性。 管理者或产品服务者要制定技术培训计划、技术水平标准,以及适用于将来需要的中长期技术培训计划。, 提高软件开发的工程能力,要想生产出高质量的软件产品必须有高水平的软件工程能力。 在软件开发环境或软件工具箱的支持下,运用先进的开发技术、工具和管理方法开发软件的能力。, 提
5、高计划和管理质量能力,项目开发初期计划阶段的项目计划评价 计划执行过程中及计划完成报告的评价 将评价、评审工作在工程实施之前就列入整个开发工程的工程计划中 提高软件开发项目管理的精确度,(3)质量保证与检验,其一是切实搞好开发阶段的管理,检查各开发阶段的质量保证活动开展得如何; 其二是预先防止软件差错给用户造成损失。 为了确保每个开发过程的质量,防止把软件差错传递到下一个过程,必须进行质量检验。,质量检验的原则,用户要求的是产品所具有的功能,这是“真质量”。靠质量检验,一般检查的是“真质量”的质量特性。 能靠质量检验的质量特性,即使全数检验,也只是代表产品的部分质量特性。 必须在各开发阶段对影
6、响产品质量的因素进行切实的管理,认真检查实施落实情况。,当开发阶段出现异常时,要从质量特性方面进行检验,看是否会给后续阶段带来影响。 虽然各开发阶段进展稳定,但由于工程能力不足,软件产品不能满足用户要求的质量。这时可通过检验对该产品做出评价,判断是否能向用户提供该产品。 要以一定的标准检验产品,根据产品的质量特性,检查各个过程的管理状态。,(4)软件质量保证体系,软件的质量保证活动,是涉及各个部门的部门间的活动。 例如,如果在用户处发现了软件故障,产品服务部门就应听取用户的意见,再由检查部门调查该产品的检验结果,进而还要调查软件实现过程的状况,并根据情况检查设计是否有误,不当之处加以改进,防止
7、再次发生问题。,为了顺利开展以上活动,事先明确部门间的质量保证业务,确立部门间的联合与协作的机构十分重要,这个机构就是质量保证体系。必须明确反馈途径。必须明确各部门的职责。必须确定保证系统运行的方法、工具、有关文档资料,以及系统管理的规程和标准。,必须明确决定是否可向下一阶段进展的评价项目和评价准则。必须不断地总结系统管理的经验教训,能够修改系统。制定质量保证计划,在计划中确定质量目标确定在每个阶段为达到总目标所应达到的要求确定进度安排确定所需人力、资源和成本等。,软件质量保证规程和技术准则,规定在项目的哪个阶段进行评审及如何评审; 规定在项目的哪个阶段应当产生哪些报告和计划; 规定产品各方面
8、测试应达到的水平。 在每次评审和测试中发现的错误如何修正;,描述希望得到的质量度量; 说明各种软件人员的职责,规定为了达到质量目标他们必须进行哪些活动。 建立在各阶段中执行质量评价的质量评价和质量检查系统有效运用质量信息的质量信息系统,并使其运行。,(5)质量保证的实施,软件质量保证的实施需要从纵向和横向两个方面展开。要求所有与软件生存期有关的人员都要参加要求对产品形成的全过程进行质量管理 这要求整个软件部门齐心协力,不断完善软件的开发环境。此外还需要与用户共同合作。,(6)质量目标与度量,为了开发高质量的软件,需要明确软件的功能,明确软件应达到什么样的质量标准,即质量目标。 为了达到这个目标
9、,在开发过程中的各个阶段进行检查和评价。 在做质量评价时,需要有对质量进行度量的准则和方法。 需要有在软件生存期中如何使用这些准则和方法的质量保证步骤,以及提高该项作业效率的工具,软件质量度量和保证的条件,适应性:适应各种用户、软件类型 易学性:不需要特殊技术,易掌握 可靠性:同个软件的评价结果一致 针对性:设计阶段就确立质量目标,在各个阶段实施落实。 客观性: 经济性:,质量保证活动的实施步骤:,Target:以用户要求和开发方针为依据,对质量需求准则、质量设计准则的各质量特性设定质量目标。 Plan:设定适合于被开发软件的评测检查项目(质量评价准则)。研讨实现质量目标的方法或手段。 Do:
10、制作高质量的规格说明和程序。在接受质量检查前先做自我检查。,Check:以Plan阶段设定的质量评价准则进行评价。计算结果用质量图的形式表示出来。比较评价结果的质量得分和质量目标,看其是否合格。 Action:对评价发现的问题进行改进活动,如果实现并达到了质量目标就转入下一个工程阶段。这样重复“Plan”到“Action”的过程,直到整个开发项目完成。,3 软件的质量设计,质量特性转换为软件的内部结构 在软件定义阶段,必须定义对软件的质量需求。即确定软件的质量特性及必需的评价准则,并定量地设定其必须达到的质量水平 在以后软件开发的每一阶段结束时,要算出评价的分数,然后与目标值加以对照,以评估在
11、这一阶段开发的软件质量是否达到要求。,为了实现规定的质量特性,就需要把这些质量特性转换为软件的内部结构的特性。 例如,软件质量需求中的“性能”,可以转换成软件内部结构中的构成元素,即每一个程序模块和物理数据各自应具有的性能特性。这些性能特性的累积就形成外部规格中的性能特性。,软件的结构特性与评价标准,结构特性 逻辑数据层次 评价标准 全部数据元素定义完毕所有层次的操作符定义完毕 结构特性 功能层次 评价标准全部功能元素定义完毕所有层次的操作符定义完毕,结构特性 逻辑数据与功能的对应关系 评价准则所有数据都与功能对应所有功能元素都与数据对应逻辑数据与功能的相互关系个数(局部),结构特性 物理数据
12、层次 评价准则全部数据元素定义完毕物理数据之间的所有指针定义完毕上述指针都具有层次性,结构特性 模块层次 评价准则所有模块定义完毕模块之间所有控制关系定义完毕上述关系都是标准过程调用形式各层次上的模块大小适当,结构特性 物理数据与模块的对应关系 评价准则 所有物理数据都与模块对应所有模块都与物理数据对应对应于一个物理数据的模块数(以一对一为好),结构特性 逻辑数据与物理数据的对应关系 评价准则所有逻辑数据都与物理数据对应对应于一个物理数据的逻辑数据数(以一对一为好),结构特性 功能与模块的对应关系 评价准则所有功能都与模块对应对应模块的功能个数(以一对 一为好),4 软件能力成熟度模型 Cap
13、ability Maturity Model -CMM,CMM是应美国联邦政府评估软件供应商的能力的要求,由美国卡内基梅隆大学Carnegie Mellon University (CMU)软件工程研究院Software Engineering Institute (SEI)推出的能力成熟度模型:将软件企业的生产能力划分为5个成熟度等级,等级愈高的企业,其软件过程的可见度愈好、软件过程的可控性愈高、产品性能的预见性以及软件项目的风险评估亦愈来愈准确。企业的生产能力以及产品质量也就愈来愈高;强调企业软件生产过程的持续改进,Capability Maturity Model (CMM),Level
14、 1 初始级,Level 2 可重复级,Level 5 优化级,Level 4 已管理级,Level 3 已定义级,专案 与混沌,配置管理 质量保证 分包管理 项目跟踪与监督 项目计划 需求管理,同行评价 组间协调 产品工程 集成式软件管理 培训程序 组织过程定义 组织过程关注,质量管理 定量过程管理,过程变更管理 技术变更管理 缺陷预防,Key Process Area 关键过程域,KPA 定义目标 承诺能力 行为检测执行的方法核查执行的方法,CMM,(1) 基本概念 软件过程人们用以开发和维护软件及其相关产品的一系列活动,包括软件工程活动和软件管理活动。 软件过程能力描述(开发组织或项目组
15、)通过执行其软件过程能够实现预期结果的程度。 软件过程性能表示(开发组织或项目组)遵循其软件过程所得到的实际结果。 软件过程成熟度 一个特定软件过程被明确和有效地定义、管理、测量和控制的程度。,(2)CMM标准共分五级:,一级:初始级。过程无序,进度、预算、功能、质量不可预测,企业一般不具备稳定的软件开发与维护的环境。常常在遇到问题的时候,就放弃原定的计划而只专注于编程与测试。 二级:可重复级。建立了管理软件项目的政策以及为贯彻执行这些政策而定的措施。基于以往的项目的经验来计划与管理新的项目。达到此级别的企业过程已制度化,有纪律,可重复。 三级:已定义级,即过程实现标准化。有关软件工程与管理工
16、程的一个特定的、面对整个企业的软件开发与维护的过程的文件将被制订出来。同时,这些过程是集成到一个协调的整体。这就称为企业的标准软件过程。,(2)CMM标准共分五级:,四级:已管理级。企业对产品与过程建立起定量的质量目标,同时在过程中加入规定得很清楚的连续的度量。作为企业的度量方案,要对所有项目的重要的过程活动进行生产率和质量的度量。软件产品因此具有可预期的高质量。达到该级的企业已实现过程定量化。 五级:最高级即优化级。整个企业将会把重点放在对过程进行不断的优化。企业会采取主动去找出过程的弱点与长处,以达到预防缺陷的目标。同时,分析有关过程的有效性的资料,作出对新技术的成本与收益的分析,以及提出
17、对过程进行修改的建议。达到该级的公司过程可自发地不断改进,防止同类缺陷二次出现。,CMM对企业的要求和帮助,基于CMM模型的软件成熟度实践要求 要求尽量采用更加规范的开发标准和方法; 使用更加科学和精确的度量手段; 选择更便于管理和使用的开发工具. 因此 造成了整个工程的可重构性、可分解性和最优化; 明确了整个项目中必要和不必要的工作; 明确了整个项目的风险,以及各个阶段进行评估的指标与应急措施,ISO9000与CMM的区别,ISO9000是通用的国际标准,适用于各类组织。 CMM是美国军方为评价软件供应商的质量水平,委托SEI开发的一个评价模型,只用于软件业。 CMM更详细,更专业。 ISO9000只建立了一个可接受水平,而CMM是一个具有五个水平的评估工具。 ISO9000聚焦于供应商和用户间的关系,而CMM更关注软件的开发过程。,CMM认证,CMM: 评审员由SEI认定授权 每隔两年重新评定一次资格 基本要求是: 至少年软件开发质量保证经验 至少两年软件项目管理经验 评估框架同ISO9000类似 结果报SEI 评定结果有五个等级,