什么是CMMI的主题?不言而喻是过程管理。它要求团队忠实的遵循制定的过程,完成开发工作,同时在实践中不断学习,来完善这个过程。过程强调并保证开发相关活动中的沟通,以达到必要的透明度。这个沟通可以是在一个项目内的,也可能是项目之间的。通过建立有效的度量体系,支持过程改进,项目管理,及决策的要求。这些也是敏捷认同的理念。
和任何改进的目的一样,引入CMMI的最终受益者也必须是客户。单纯追逐通过成熟度的级别,往往会让你忘掉客户真正的期望、产品及项目的价值和公司的商业目标。
每家企业都有两个过程, 一个是书面的文档化的过程,一个是组织及项目里面实际执行的过程。很不幸的是,许多通过了CMMI三级甚至更高级别的企业,这两个过程是不一致的。如果不能保证制定的过程在组织日常工作中落地,CMMI的价值是不会实现的。我在指导企业做过程改进时常讲的一句话是—— 说到做到,做不到则不说。这句话看似简单,做起来却并不容易。
真正做到言行一致是需要在下面几个方面下大工夫:
1、建立可用符合项目特点,并具有一定灵活性的标准过程
组织标准过程的来源主要有两个:一个是组织内部的有效最佳实践。将这些实践纳入标准十分重要,它们代表企业自身的工程管理精华;另一个是可用的业界最佳实践及标准,本地化后纳入到标准过程中。如果要确保过程能在组织内部达到制度化、日常化的执行力度,在建立过程时,一定要考虑的企业当前的现状及约束条件。
2、建立机制,定期完善修改过程
过程执行者不能用过程中的缺陷作为不执行的借口,但他们都负有改进的责任,因为只有他们通过使用过程,真正知道过程的不足在那里。让组织过程在执行过程中不断完善就需要让过程改进制度化、日常化。我在国内做评估中,在一些企业看到过这样一种情况:所有的过程修改都是为评估触发。有些企业通过了三级,在做四级评估的时候,我看不到任何二、三级相关过程的完善修改记录。这就是说,在3年的时间里,这些过程没有变过,可是仔细评估过后,发现有很多改进机会。根据我的经验,没有改进(改动)过的过程,很有可能是没有在项目中真正被使用的。但我们一定要让这些完善工作简单,不麻烦!
用过程执行者熟悉的语言及方式描述过程。
很多企业喜欢用CMMI中的语言描述过程,造成很大的培训成本及沟通的障碍。一个过程看起来在任何一家企业都可以用,它往往是一个很难执行的过程。
3、建立机制,约束违反过程的情况发生
很多企业都建立了过程QA机制,在项目及组织中进行过程符合的稽核。如何建立企业内部有效的QA机制,至今仍然是个值得研究的课题。在很多企业中,不执行明确定义的过程是没有什么后果的。
结果导向,要让过程执行者看到过程的效果及过程改进的价值。
CMMI存在的基础大家相信这样的过程公理:产品的质量和用来开发这个产品的过程的质量有极大的关系。让过程执行者忠实执行组织定义的过程,需要让他们看到过程及过程改进的好处:看到质量的提升,看到效率的提升,看到客户的认可。只有让管理者及工程人员信服组织制定的过程是项目成功的重要保障,那么这些标准过程才会真正让大家接受。
过程管理中,要注意组织、项目、个人的平衡
如果这个天平太倾向于组织,会使得项目及个人缺少必要的灵活从而丧失动力。如果走到另一个极端,只考虑个体性、灵活性,则会给组织带来风险,失去学习的机会。从长远来讲也不能保证质量及生产效率的持续提升。
在导入CMMI时,国内企业犯得最常见的错误是将它当成一个过程、一个标准,而不是一个模型。看一看CMMI中的原话:“CMMI既不包括过程(process)也不包括程序流程(procedure)。”考虑到各类组织,各类项目的巨大差异,谁也无法制定一个涵盖所有企业、项目的标准过程,CMMI当然也不是这样一个标准过程。CMMI只是描述了有效过程的特征,给出了必须实现的目标以及实现这些目标建议做的事。
1.3 版本的CMMI开发模型包含了22个过程域,每个过程域由目标及相关实践活动组成。例如:过程域Verification (验证)中SG 2 (特定目标 2)和SP 2.3 (特定实践 2.3)定义如下:
SG 2:对选定工作产品的同级评审得到执行。
SP 2.3:分析与同级评审的准备、实施与结果相关的数据。
这里只是讲同行评审必须执行,建议在进行同行评审活动时,对评审活动及结果的数据进行分析。
为了实现这个目标,企业需要根据自己的实际情况,项目的质量要求及缺陷分析要求,从而制定对不同工作产品(如软件需求规格说明书、设计文档、代码、操作手册等)的评审方法及数据收集分析手段。
而对哪些产品进行评审,用什么样的评审方法?什么角色参加评审?收集哪些数据?从哪些角度进行分析?模型中没有标准要求,而是需要企业根据自己的场景,根据投入回报分析建立自己的同行评审过程,实现同行评审的目标。
CMMI是业界几十年软件工程、系统工程、硬件工程理论研究及应用实践的一个集合,它包含了通常改进组织过程的活动。将CMMI作为标准来用的后果是大量人力物力的浪费,在评估的名义下,做了很多没有价值的工作。CMMI的作者指出:模型不是被直接应用(applied)而是应该被贯彻实现的(implemented),真正理解了这个概念能够帮助你理解CMMI的核心。过程改进者在使用CMMI时,应该像工程人员及架构师使用工程模型一样,将它当成一个学习的工具,一个沟通的工具,一个汇集想法思路的手段。