从实施CMM-3再看CMM—CMM学习心得

发表于:2008-03-27来源:作者:点击数: 标签:cmmCMM
CMM三级认证;在进行基于CMM过程改进过程中,自己对CMM有了一些心得、体会,总结如下希望大家指正。如果有意见请发邮件到: heqingemail@163.net CMM是优雅的 CMM将管理理论和软件实践紧密结合,但是整个结构又如此清晰完整;是一个完美的结构,这个结构是美的
CMM三级认证;在进行基于CMM过程改进过程中,自己对CMM有了一些心得、体会,总结如下希望大家指正。如果有意见请发邮件到: heqingemail@163.net
    CMM是优雅的
    CMM将管理理论和软件实践紧密结合,但是整个结构又如此清晰完整;是一个完美的结构,这个结构是美的,是一种强大、庄重的理论美。
    这个完美的分段式结构在CMMI中继续采用,并且更加精致和完善。
    CMM的结构主要包括如下几部分。

结构

说明

等级 CMM划分为五个等级,描述了每个等级的组织过程特征,每个等级代表一种组织的过程能力等级;指明了组织级过程改进的整体策略(关注于那些过程域)
关键过程域 每个等级包括几个过程域,说明了在一个等级中必要的过程;是一组学科或者逻辑上紧密联系的活动的集合
目标 每个过程域均有自己的目标,这些目标用于支持过程能力等级特征
关键实践 组成一个过程域的活动,从逻辑上描述了实现这个过程域目标必须或者推荐执行的活动;属于具体的操作指导
公共特性 关键实践按照公共特性被组织起来,这些公共特性反映了过程有效执行的特征

    除第一级外,CMM的每一级是按完全相同的结构构成的。每一个成熟度等级都是通过一些(2—7个)关键过程域(KPA)描述的,每一个关键过程域都规定了一些目标,过程必须吻合这些目标以满足这个关键过程域。这些关键过程域规定了一些重要领域,机构应该关注以使它的过程向成熟等级发展。从整体来说软件能力成熟度级别从低到高的变化代表了企业的生产活动由高风险低效率到高质量、高生产率的进展。 整个CMM模型通过等级、关键过程域、公共特性和过程改进理论联系起来;通过关键过程域、关键实践和具体实践联系起来,提供具体的说明和指导。
    下面对CMM结构的各个组成部分分别进行说明。
    CMM的等级划分
    Crosby(克罗斯比)最早在《质量是免费》中提出了管理过程等级的划分,也是为五级。
    CMM基于全面质量管理的理论,参照当时软件工程的实践将过程能力划分为五个等级,用于评估一个软件组织的过程成熟度。
    每个成熟度等级说明了组织软件开发过程的特征,如下:

等级

等级特征

等级一 没有一系列的准则来指导项目的执行,一个项目的结果主要取决于依靠编程组和项目负责人的能力,因此,其结果是难于预料的
等级二 有纪律的,可以重复以前项目的成功经验,实现部分的可视性
等级三 项目活动是标准和一致的,不同项目采用相同的标准,从而保持稳定的性能
等级四 对过程建立了度量,性能只在一定范围内变动,从而可以进行有效的预测
等级五 为了提高过程能力不断进行改进活动,并可以度量其结果
    过程能力描述如下:
管理内容
能力等级

项目管理

组织过程管理

定量管理

不断改进

等级一:初始        
等级二:可重复        
等级三:已定义        
等级四:定量管理        
等级五:不断改进        
    关键过程域(KPA) SEI根据实践经验确认关键的软件工程领域,这些过程域作为软件生产活动的关键部分被选择出来,是评价和形成过程能力的主要方面。
    可以将这些关键过程域归为三类:管理过程、组织过程、工程过程。其中管理过程包括项目管理的内容以及一些基础内容。

类别

过程域

管理过程

项目管理:需求管理、软件项目策划、软件项目跟踪和监督、软件子合同管理、
集成软件管理、组间协调、定量过程管理
支持:软件配置管理、软件质量保证
组织过程

组织过程焦点、组织过程定义、培训大纲、定量过程管理

技术变革管理、过程变更管理

工程过程 软件产品工程、同行评审、软件质量管理缺陷预防

    目标
    每个关键过程域包括两个或者四个的目标;这些目标用于描述这个关键过程域的意义和价值,是对过程进行评价和改进的标准;在某个等级上所有关键过程域的目标集合构成了这个等级的特征;每个目标均有一组关键实践用于实现这个目标,可以说目标是关键实践的选择依据,作为评估标准具有如下作用:
目标用来确定一个机构或项目组是否有效地执行了该KPA
    目标概述了该KPA包括的关键实践(KP)
    在为适应关键实践而采取选择时,目标能用来确定这种适应是否有效
    公共特性
    五个公共特性:方针、能力、活动、测量、验证
    这是企业管理的五个主要环节;一个好的管理要建立大政“方针”的明确承诺和要求、要提供必要的资源和“能力”,这样才能进行必要的“活动”,要“验证”活动被执行(类似于QA),要对活动进行“测量”保证了解活动的情况和质量(类似于QC)。


公共特性

中文

说明

CO 执行承诺 要怎样?
AB 能力 能做到吗?
AC 活动 做什么?
VE 验证 做了没有?
ME 测量 做的怎样?
    这些公共特性反映了一个过程被执行的各种要素,关键实践按照这样分类非常有利于具体的实施。 执行承诺:实施保证是企业为了建立和实施相应KPA所必须采取的行动,这些行动主要牵涉到企业范围的政策和高层管理的责任。
    能力:实施能力描述为了使某软件过程得以始终如一地执行的必须在项目或企业中存在的先决条件,是企业实施KPA的前提条件。企业必须采取措施,在满足了这些条件后,才有可能执行KPA的实践活动。实施能力关注于项目计划的实践;资源的配置;责任的布置与授权;以及各种有关的培训等,这些都是为了执行这个关键过程域的活动而对特定人以及作为整体的机构的能力开发起非常重要作用的事务。
    活动:实现某个关键过程域所必需的岗位、活动(按照计划或按照规程活动)、产品等。
    验证:监督管理过程的活动,一般包括高级管理者、项目经理、SQA的进度管理
    测量:说明这个过程活动的状态和质量的信息。
    关键实践 (KP)
    在关键过程域的目标之下,有一组相关联的关键实践(Key Practices),这些关键实践是评价一个组织过程能力的某种指示器,可以基本等价的说明过程能力。
    一个过程域的所有关键实践按照公共特性组织起来;这些关键实践一般情况下是达到目标所必要的;因为CMM是作为评估标准出现的,所以是“必要”的才能保证评估的标准。子实践和说明中,罗列了较多的推荐的最佳实践。
    关键实践的几个特点:
    描述了对有效执行和制度化该KPA起主要作用的从属活动和基础构造
    因为CMM是作为评估标准出现的,所以规定做什么,而不去规定如何实现
    实现该KPA的目标所允许做的实践活动
    基于过程模型(CMM)的改进
    CMM模型的过程改进价值
    过程改进是从全面质量管理理论中派生出来的;基础是建立稳定的过程、分析过程、改进过程;目标是增进过程效率和过程质量;通过过程度量的手段(统计过程控制),来量化过程、进行控制,进行预测。
CMM的框架结构具有双重属性。一方面,它是描述性的模型,这点可以从它对那些当一个企业处于某一个特定的能力成熟度级别时所要求具备的必不可少的各种特性的描述看出。另一方面,它又是指示性的模型,这点可以从它以详细的实践活动来说明一个正在执行政府大规模软件合同的企业在处于某一个特定的能力成熟度级别时的特征的表达方式看出来。 CMM这种双重属性的目的是要有意的使它处于一个适当的抽象程度,从而避免不适当地限制一个企业如何去改进它的软件过程。CMM只描述软件过程改进要进行哪些方面的行动,要满足那些目标,但却不指定具体怎样去做。尽管软件机构可以用不同的方式实现CMM。但是要将CMM的提出的特性与软件开发中现有的过程联系起来是相当困难的。我们在使用CMM时必须牢记这个特点:CMM只指明要做什么,但不规定如何去做。因此我们可以选用我们认为最适当的办法去完成所要求做的事。
过程模型集合了领域内必要实践、补充了最佳实践,并指明了改进的先后顺序。所以可以认为CMM对过程改进提供了足够的支持和帮助
    过程改进路径说明
    首先分析各个等级之间的差距和区别,然后明确向更高等级改进的主要方面,并结合CMM的关键过程域就可以得到过程改进的基本路径了。
    过程能力描述如下:
管理内容
能力等级

项目管理

组织过程管理

定量管理

不断改进

等级一:初始        
等级二:可重复        
等级三:已定义        
等级四:定量管理        
等级五:不断改进        
    从上图,可以发现各个等级之间的差距,差距汇总如下:

路径

说明

一级到二级 加强项目管理,实施支持过程
二级到三级 根据项目管理的经验,建立、稳定组织标准过程
三级到四级 在标准过程基础上建立针对性的度量体系;度量、稳定过程性能
四级到五级 根据度量的结果进行不断的改进
    可以看出为什么基于CMM的过程改进不能跨级进行,因为他们是依赖上一个等级的。尤其要避免的一种情况,就是跨域等级二,很多企业已开始就致力于组织级过程的建立,这个是比较危险的;软件生产主要还是一种项目,没有建立良好的项目管理基础,没有从项目中有效的积累经验,这样的改进容易失败。
    广泛实施,成功应用
    作为美国国防部(BOB)评估软件供应商的标准,作用显著。
    后来发现标准本身所明确的要求也是企业进行改进的良好指南。
    标准一旦可被确定,那么标准本身也就是进行改进的指南。
    作为过程改进的指南发挥更加广泛用途,影响深远。
    理解CMM需要注意以下问题 
    它仅指明该做什么,而没有指明如何做,它不是方法论,但我们在学习CMM时,可以从中学到分析问题的方法
    它仅指明该做的关键内容,仅描述软件过程的本质属性,而并非面面俱到。抓问题的主要方面的思想贯穿在整个CMM模型中
    软件过程是指软件工程过程、软件管理过程和软件组织过程三者的有机结合。软件工程过程是我们理解的常规的软件的需求分析、设计、编码、测试等过程;软件管理过程是指为使软件工程过程顺利进行而实施的管理活动的集合。上述两个过程是以软件工程组为主的活动。软件组织的过程是企业级的对软件的组织活动,是以企业为主的活动
    它是从软件过程的角度考虑问题,而并非关注软件开发工具,与框架软件生存周期无关,也与所采用的开发技术无关
    CMM为改善整个企业的软件过程提供了指南,而并非针对某个具体项目。CMM并不能保证在这个过程框架下,产品开发百分之百的成功。产品的成功是多种因素的组合,例如市场等因素
    CMM1.1是针对大型软件企业(500人以上)的,对小型的软件企业(50人以下)需要裁减
    CMM认为过程的不断改进基于许多小的、步骤的进化而不是革命性的创新
    基于CMM的过程改善投资力度大、周期长,而技术投资则可能在短期内有较快回报。单独依靠技术改进可能在短期内取得较快回报,但最终可能一无所获。

原文转自:http://www.ltesting.net