【IT168 技术文章】
CMMI是一套内部管理体系,是提升企业内部能力的一套管理流程。而在实施CMMI或者已经达到CMMI优异CMMI5的企业依然面临一些问题,这些问题主要在与客户的交流上,而这也是CMMI无法解决的问题,因为这是凭着经验、凭着技巧、同客户的素质等直接相关的。但CMMI无法解决吗,也许CMMI咨询师会说,不会,可以解决,你可以将你的经验和技巧等直接纳入资产库进行经验分享,这样面对不同的客户形成不同的流程,这样说当然有了一些基本的改变,但是,这并不能解决真正的问题,CMMI面对这些时,无奈了。
尽管许多企业达到了传说中的CMMI5,也收集了大量历史经验和数据,但在实际过程中却往往发现收集的数据很少能达到预期的作用(也就是CMMI4的预测),即使有作用,建立的能力基线范围却太宽,造成最后也是无法严格的控制,于是企业感叹大环境的无奈。但真的无法解决吗,不是,CMMI可以解决吗,不可以,因为CMMI并没有告诉你具体的做法,CMMI不可以解决吗,也不是,因为对于模型来说,任何都可以包括进来,所以才有了咨询师鼓吹的能够解决上述的问题。
如何解决?
首先应该分析问题出现在哪里,一般项目出现能力基线无用或过宽的原因主要在于项目中几个点,一个是需求点,一个是实施点,另外一个是售后服务点,中间过程一般不会出现太大问题。为什么是这几个点呢,因为这几个点通常在项目中有用户参与,而且是直接面对客户,与客户的沟通和交流则就是成了重点,获取的信息也通常决定了项目的成败情况。
CMMI可以解决需求问题吗?
不可以,如果说可以,那也是瞎说,那如何解决这个问题呢?这就要求在面对客户的时候,及时整理出一套调查表,更好的获取需求,你可以把这个说成是CMMI过程文档,但我更认为他是一种技术经验,而这种经验往往是很难用文档来定义的。但是,CMMI是非常有用的,因为从它的角度,你将客户进行分类,每一类进行调查的时候不要紧紧调查需求,而要调查客户的环境,客户的组织架构,客户的素质等等。在需求获取和确认的过程中建立一个快速反馈机制,要采用尽早提交给客户进行设计确认,以免在编码过程中浪费大量的时间。
但有一点,在整个项目过程中,需求是逐渐进化的,所以你一定要规划好版本,不要认为客户变了就麻烦,要变就让它变,但是在过程中调整的一切要让客户清楚,尽量获取客户的理解,如果闭门造车,或者面对客户没有提供任何资料,或者对方没有接口人,那最终这个项目很可能会是一个非常麻烦的结果。
所以在这里的建议是:
1.客户分类(CMMI角度)
2.接口人
3.确认和沟通计划
4.客户对版本的逐步验证
5. 采用什么技术来快速建立客户与开发人员的理解(此项最重要,纯技术要求)
CMMI的建议,将客户纳入建立能力基线,编制一个调查表,尽量多的调查项,然后建立其与需求过程的关系和预测模型。
CMMI面对实施的无奈?
由于客户的不成熟,导致实施阶段进度大大拉长,成本大大超支。这有两方面的原因,一方面是前期需求没有获取好;另外一方面是实施做的太差。那如何做好通常占投入成本30%甚至更多的实施,也许已经成为许多企业的心病,而这项最重要的阶段却恰好在CMMI中没有实践的指导。如何有效实施,首先要分析实施的目的。实施的目的就是为了让用户验收,用户在实施过程中通常很害怕验收,因为直接担负起责任,所以一定要给企业定心丸,这就是售后服务的承诺。
另外在实施过程中也同样需要较强的经验,因为许多人在实施过程中被搞得焦头烂额的时候还能保持清醒才是最重要的,而这个过程是需要规范的(也就是CMMI说的流程制度化,但是可笑CMMI却并没有给出详细的指导,所以这里制定的流程完全靠咨询师的经验,而这里却也是体现咨询水平的地方),微软的一些产品模式可以借鉴进入商业项目中,如果是关系项目,那搞定关系也许更容易,商业项目过程中最重要的是了解客户的想法并给予及时的服务,增加了客户认可度,实施也将容易的多,验收也会水到渠成。
CMMI建议,实施过程最好也要建立一套模型来控制成本支出,因为在这里往往需要大量的成本耗费,也许好多是不应该投入的,但却又是一定要投入的,所以这里的把握一定是流程款项把握。模型的参数主要包括客户环境、客户的素质、项目的预计周期、客户的认可程度(需要再进行权重的细分)、实施人员素质(建立能力需求分析,最重要的)等
对于CMMI并不能真正解决问题,而只能是给出解决问题的一种方法,真正解决问题的还是靠人,靠经验,而终极将经验融合才是CMMI,所以我们要明白CMMI真正能解决什么,哪些又是不能CMMI解决的。一个不包含客户的能力基线,永远都不会达到企业预期的要求,将客户纳入的能力基线,未必也能达到预期要求,却让企业朝着预期更紧了一步。