CMMI入门-通用目标的实施- GG3


如果我们说CMMI第二级是范围地把项目管理好,那么,第三级就是进行改进与提高效率。第二级的内容,主要是一些项目的先决条件与工作的举措,让项目可以高效完成与满足目标。第三级的要求其实非常简单:就是要养成一个收集经验、经典案例、最佳实践、过程数据、等等的习惯,并且经常参考自己的以及人家的经验,让自己的任务可以用最适合、最有效的途径来完成。

这个要求听起来不很复杂。如果我们要过级,这个通常不是一个问题,因为项目在满足第三级的集成项目管理这个过程域的时候,就一定会有部分的活动,被涉及到制定“定义过程”与收集经验的活动里。这样就很可能满足过级的要求了。只不过有时候只知道如何在项目实施IPM,但不知道如何在每一个小活动中实施GG3,也不一定明白为什么GG3可以帮助我们提高效能。

我们在这里,希望回答两个问题:

  • 如何在活动中实施GG3?
  • 如何体现GG3才能帮助提高过程效能?

但是我希望提醒大家一点:过级,不等于有效。如果要提高过程效率,我们收集经验的时候,不能只有收集的行为。在收集的过程中,脑子里应该想着这个资料、信息的价值:它有什么作用?有什么独特之处?适合哪些情况与应用?只有经过这类的思考与分析,并且把分析的结果与收集到的数据、工件放在一起,作为注解,才可以把这些空洞冷酷的资料与数据变成“经验”。只有把收集的数据的背景、特征、作用、应用情况、期待效果等等罗列清楚,人家将来参考的时候才能体现它的价值。

如果单单只是收集,建立数据库,这就是“形式”,是不能体现效能的。希望大家留意这一点。我会通过一个案例,讨论如何把这个通用实践应用到不同的活动,持续提高员工的技能与效率。但首先让我们了解CMMI 第三级的通用目标与实践,如下:

CMMI 第三级的通用目标与实践

GP3.1 建立与维护一个定义过程

目标是控制不同实施的差距。前设条件包括:

  • 有标准规程定义
  • 有适配准则

子实践:

  1. 从标准的规程选择适合活动的标准程序
  2. 按准则进行适配
  3. 确保程序的适配是按目标而进行的
  4. 用文档描述定义过程,并记录适配的过程
  5. 按需要修订定义过程的描述

GP3.2  积累与过程有关的经验

目标是收集与实施过程的信息、测量、测量值、新知识、改进建议等过程经验,存放到组织的过程资产库,以为将来策划、实施相同或相近的过程是参考之用。

子实践:

  1. 收集过程与产品的测量并存放在组织的测量库
  2. 提供有关的文件与工件,并存放在组织的过程资产库
  3. 文档记录得到的新知识,并存放在组织的过程资产库
  4. 提供有关组织过程资产的改进建议

检查单提升QA审核效能的案例

先让我们讨论为什么这两个通用实践可以帮助我们提高效率,优化过程。

就拿审核一个评审过程的检查单来讨论一下CMMI 的这两个实践如何帮助提高过程效率。我们从标准规程中拿到的检查单可能包括一系列的条款,比如:

  • 是否有预审?
  • 是否有干系人参与评审?
  • 评审会议进度是否合理?
  • 等等

我们通常就按这个检查单打勾。然后就计算这个审核的尊重度。事实上大家都知道这样没有太大的价值。

如果在无数次的操作之中,有一位QA认为这样的审核没有意义,就自己思考:为什么预审有帮助?就觉得,预审其实要让评委在评审会议之前把评审对象了解清楚,让会议时的沟通更充分透彻。那么,他就在“是否有预审?”这个条款底下,加了这么两个关注点:

  • 是否有预审?
  • 评委提交预审报告之后、会议之前是否对评审对象有认识?
  • 评委在会议过程是否关注自己预审报告中表达的问题?

这样一来,这位QA就要在评审会议之前访谈评委,工作量大增。同时也要参与评审,留意各位评委是否严肃地提出、讨论在预审中发现的问题。这样对QA的态度与观察能力也有一定的要求。但是这个方法可能真正可以识别有效的预审与形式的预审,从而导致更高的评审效率,降低评审的泄漏率。这位QA还可以把自己正常的与额外的工作量记录下来,也可以记录评审的效率。这些都是有用的测量数据。

有了这个经验,这位QA就在审核报告里说明增加的观察点,为什么要增加,并且说明增加的工作量,以及审核对过程透明度的提高,就是说,更能反映过程真正的状态。

如果这位QA认识到自己的经验是有价值的,就会要求把这个审核报告,包括里面的考虑,收集到组织的过程资产库里。这就符合CMMI 的GP3.2。

将来的QA,如果具备GP3.1的习惯,就会参考一些高效审核的报告,就可能发现对于深的关注、这样考虑的后果、也看到增加的工作量与技能要求。这位QA就可考虑需要审核的评审是否重要,这样的投入是后值得。如果评审对象是关键的,重要的,质量要求高的,这个投入可能不单是值得,还是必要的。这样的思考,就可以让将来的审核,一方面使用标准规程的检查单,一方面可以按实际情况进行一定的调整。这个调整,就是“适配”(通常称为裁剪)。当然这个适配最好事前跟EPG讨论好,得到他们的认同。这样的做法,以前记录的经验,就对将来的QA提供了价值。

GG3对EPG的要求

EPG的职责,就是不断优化组织的过程能力。如果QA与EPG的沟通是畅顺的,或是EPG也不断地参考资产库里的资料,EPG就能够不断有很多很好的实践案例。一年下来,就很可能有足够的资料,经过分析、整理,把标准规程进行优化。这样组织的规程就会不断地依据实际得到改进。CMMI 几年就有一个版本,就是这类的行为的结果。企业的规程版本更新,需要比CMMI 频繁,但也不能太频繁,造成对项目的干扰。最好是一年一次就大概适合了。

GG3对领导的要求

领导的职责,就是提供一个高效的环境与氛围。上面的场景,都是个别情况,不足以对企业有明显的帮助。如果没有领导的刻意鼓励、培养,连个别情况也是很难建立的。所以领导的职责很重要。这就是为什么领导也需要对过程管理有深刻的认识的原因。在中国的企业之中,领导认为这些细节都是基层的责任。这是一个大问题。这也是为什么ISO这么关注高层领导的实际参与,CMMI 的通用实践GP2.10要求领导了解过程操作的实际情况的理由。

值得收集的经验与信息

现在让我们谈什么经验、信息值得收集。

基本上,有价值的经验可以分为以下几种:

  • 操作的示范,如模板、检查单、经典文件之类的
  • 好的方法、工具
  • 过程性能的数据

经典示范

比如上面提到的,考虑如何能够提高标准检查单的作用,就是一个案例。又比如抽取需求,很多时候关键在于如何问什么问题?如何问问题?等等。这个我们如果有一些情况,抽取需求比较成功,我们就可以把发问的问题纪录下来,并且记录这些问题的发问与回答的背景、气氛、条件、等等因素。这些都是对不断积累经验有帮助的信息。

有时候我们看到一些员工,虽然没有使用不同的方法与工具,但是感觉上,或是数据显示他们的效率比较高。这就可能是一些值得收集的经验。当然,这个需要访谈,需要调查研究。就是说,需要有责任的人积极主动地做。但是要通用实践GP3.2 有效,就是需要养成一个追求效率的积极主动的习惯。

方法工具

至于方法与工具,就比较明显。以前知道测试人员不断使用新工具。可惜没有积累经验的体系,这些工具都因为员工流动而遗失了。如果我们能够具备GP3.2的习惯,就可以把这些工具收集,整理,让整个团队得益。

这里我介绍几个简单、典型的好方法。

一般通讯系统产品的现场安装都是启动之后,就测试能否实现功能。其实很多时候,一个产品就是基本能够与其他系统通讯,但还不稳定的情况下,测试功能将会时好时坏,让这个安装启动的时间段拉得很长。

一个简单的方法就是一个产品安装完了之后,不启动任何功能。只用一些脚本运动产品的通讯能力。就是说,不断发放与接受测试的信息,并且收集带宽、吞吐、兼容、等等性能,直到这些性能变得稳定与符合需求之后,才开始测试功能。

另外一个好方法就是评审方案与高层设计的时候,要求证明方案在满足每一个需求的进程步骤(walkthrough)。这样可以确保需求得到实施,也可以让参与评审的人员清楚明白方案与高层设计的思路,让他们能够把这些思路与依据传递给项目成员。

需求跟踪需要很大的工作量。有一个方法,就可以在各层的文件里,用一些特殊的符号,识别上游的依据。这样,就可以建立一个工具,把每一个文件里支撑的需求罗列出来,编制成为一个需求追踪表。只要每次文件变更,都把这些符号在变更的文件中处理好,就可以立刻自动更新这个需求追踪表了。

我希望提一点,在一些日常工作遇到的问题,可能是因为缺乏一些技能。希望大家能多观察一个活动所需要的技能,也是一个应该记录的信息。

这些方法都是让大家明白什么经验、资料可以收集而已。希望大家能在实际工作中发现更多有用的经验。

过程性能数据

数据是精确深入了解过程效能的必备条件,但不是一般了解的必备条件。数据的使用,也是我们的短板。这里谈一下基本的数据概念。我们收集经验案例的时候,最好都收集这个操作的工作量、规模、效能、与质量的数据。将来这些数据可以被统计到组织的过程能力之中,变成提升组织过程能力的依据。

数据有时候可以直接利用。通常是在策划一个活动时的参考。比如项目策划,如果我们知道一般的同类项目,策划、开发、验证等阶段的工作量分布与时间长度,就可以帮助把活动策划得更准确。

有时候,测量数可以利用到长远的过程改进方面。这个的要求更高,我只能在这里简单的谈一些基本简单的议素。

对于过程数据在过程改进的使用,有几个要点。首先,我们要知道,对过程定性的了解才是基本的。这个了解,就是的过程操作对目标的影响与作用的认识。这包括不同的因素对满足目标的意义与价值的不同,以及因素之间的相对重要性。这些都需要在没有测量数据之前就有一定的认识,然后才收集数据,进行分析,并精确地了解过程的效能。这样才有意义。

比如:我们要自己的产品得到客户的顺利验收,就有两个因素:一个是自己的系统测试要做到很低的泄漏率。第二个因素,就是需求要正确覆盖客户的验收要求。如果我们不知道第二个因素更重要,单单争取很低的泄漏率,就是发现了所有不符合的问题,并整改到符合自己的需求文档,如果这个文档内容与客户验收的不一致,我们精确地测量到泄漏率确实很低也没有用。

第二个使用测量的要点,就是我们要了解一个子过程在组织里的操作,需要考虑的不能只是平均值。我们还要考虑它的标准差,最好还包括分布特征:正态的,还是偏向一边的,等等。因为一个标准差很大的操作,虽然平均值比较好,也可以是一个非常不适当的选择。比如我们要选择一个供应商,其中一个的平均交付期是60天,但是标准差是30天。就是说,从30天到90天交付都有可能。另为一个的平均交付期是65天,但标准差是7天。就是说,机会高的交付就是58天到72天。在很多情况底下,65天的平均交付期,虽然比较长一点,但是反而是比较保险的。

过程改进,其实就是不断地先控制过程能力的标准差,然后提高它的平均值。这是EPG的使命,但是需要在已经把过程规范建立成制度的基础上,才能够做得到。

一些对组织过程能力的测量包括:不同估算方法的误差率,最佳的进度与质量的比例,团队人员与效率的比例等等,都是非常值得研究的概念。

有效实施GG3

在我们的工作中,应该不断有改进提高的机会。比如我们的项目策划、估算、WBS、等等的方法,项目的监控理念与方法,都有很大的提升空间。我们首先需要养成符合GG3的工作习惯。

我们不能从GG3得到好处的原因很多。缺乏积极主动地态度、目标驱动的工作方法都是原因。从对大部分的规程定义来看,一个可能的原因在于我们的“流程”概念,而不是“过程”概念。我们的项目规程定义,一般都是按产品类型(如基站、终端、控制器、网管、等等)、技术(软件、硬件、混合、等等)与项目的作用(如预研、新产品、大改、小改、等等)而制定了不同的生命周期。每一个生命周期,都是一串程序步骤。当然也包括谁负责在什么时候处理什么等等。但总体而言,是从头到尾,整个项目就是一个大“过程”,其中很难分辨出子过程与过程单元。这样我们就很难吸收一些零散的经验。

要能有效利用GG3,我们需要能把规程定义“模块化”。我们要有一大堆子过程。这后几个大生命周期模型,都基本上建立在这些过程模块上。这样,我们就很容易地吸收每一个小子过程的经验,并推广到任何使用它的生命周期模型上面了。组织的过程能力就会不断提高了。