`
webcenterol
  • 浏览: 906897 次
文章分类
社区版块
存档分类
最新评论

【理想流】CMMI批判

 
阅读更多

CMMI这个模型的根本问题不在于模型本身是否成熟,而在于这一模型所牵连到的诸多困难通常很难克服,最终导致这一模型在实际应用中,大多时候的结局只能是形式大于内容。


CMMI的边界


CMMI起源于美国国防部,这一出身直接决定CMMI是为了解决大型项目中所遇到的问题来到这世上的,并最终导致CMMI成为一个庞大且复杂的方法论。


大方法论意味着其复杂度偏高,复杂度偏高也就意味着推行成本以及ROIReturnOnInvestment)为负的风险增高。


这世界上并不先验的存在着因为这是CMMI,所以实施他一定适合当前项目,一定可以获得正收益这样的因果。


即使不经过论证,单纯从哲学的角度出发,至少也可以说,一定情况下的项目实施CMMI是没有收益的。因为既然CMMI不是绝对真理,那就必然有它适合的地方,也有它不适合的地方。而这个问题似乎历来被人们所忽略,似乎也没有人试图去分析究竟什么样的情况下不适合实施CMMI


许多人是在盲目的谈流程会为项目带来好处,但却很少关注为什么流程会为项目带来好处。而一旦在这一点上迷失,不知道CMMI边界何在,那就会误以为流程可以解决所有问题,滥用流程也就成为一种必然。


个人以为,流程之所以能给项目带来好处,主要在于以下两点:

①设想一下,假设说一个团队只有一个人,那这时候,流程以及步骤就只有一个作用,避免某些事情被忘记,换句话说就是使历史经验得以累积。比如,不要这次记得做风险管理,下次却没做;不要这次做风险管理时考虑到了需求变更风险,下次却没考虑到。这个时候,流程以及模板即使需要,也不需要做的很细,反倒是对经验数据的记录成为重点。

②而一旦软件规模膨胀,小组成员也就必然增多,沟通路径也就必然变的繁杂,并最终导致软件行业著名的规模不经济(diseconomyofscale)现象。当沟通路径从一条变为N条的时候,沟通路径将变为n*(n-1)/2

在这样一种前提下,如果没有流程约束小组成员的行为,那么信息流乱窜,最终必然导致灾难性后果。换句话说,这种情形下,流程的一个作用是理顺信息流,并统一全体人员的方向。

CMMI中诸多过程域,从目的来看,翻来跳去也出不了这个范畴,比如风险管理的主要目的是前者。而需求管理等的主要目的是后者。至于配置管理等则是两者兼顾。


这里需要单独一提的是度量与分析。CMMI自身很大的一个目的是促使组织积累日常数据,并对组织行为是否异常进行监查及预测。也许有人认为这点不同于上文所提的①与②应被单列。但我个人认为实际能完成监察及预测的是与监察及预测相关的任务,而非定义了监察及预测相关步骤的流程。所以即使就度量及分析这样的过程域而言,流程所能起的作用仍是①与②。


也就是说,如果一个组织的问题不是出于以上两个原因,那么流程改善对增强组织的竞争力没有帮助。


这个结论很关键,这意味着如果你项目组当前的问题是由于沟通不畅或者有些步骤经常被遗忘,那么你需要改善流程。但如果问题是人的主动性乃至能力不够,那么虽然貌似和流程有一定关系,但却决不是流程所能解决的问题。


流程以外影响项目开销的因素还有很多,比如:需求分析师的能力,程序员的能力,人员流动性,团队凝聚力等。除此之外,需要特别提起的是创新能力。


前面曾经提到,CMMI的出身决定他更适用于大型项目。但除此之外,这一出身也决定了它的另一个特性。CMMI最终的目的是把项目质量控制到一定范围内,并持续改善,所以它专注于成熟度,专注于软件的质量。这对大型的军工性的项目无疑的是合适的。但对创新性项目却未必合适。举个极端的例子,在Google的搜索引擎来到这个世上后,也许CMMI能帮助这个搜索引擎持续稳定的运行,但却对他来到这世上毫无帮助。


很不幸的是,在国内,似乎有一种趋势,那就是CMMI是一剂灵药,适用于各种类型软件项目,适用于解决各种类型的问题。即使变更代码行数每个项目周期只有只有千行左右的项目,也要使用CMMI。这似乎从起点就错了,也是对什么是CMMI的边界认识不清楚所导致的必然结果。


CMMI的前提

实施CMMI是有前提的。


也就是说对满足某些前提的公司实施CMMI获得收益的可能性要远高于不满足某些前提的公司。


工程能力不同的公司,应用同样的CMMI流程,成本可能会相差数倍。


假如说需求变更流程有X,Y,Z四个步骤,总计流程成本是T。那么如果A公司需求分析能力比较高,所以后续需求变更的次数较少是N。那么这一环节的流程成本是N*T


如果B公司需求分析能力较差,需求变更次数是2N,那么这一环节的流程成本立刻变为2*N*T


因此可以说,如果一个公司在某些工程能力,比如:需求分析能力,分析和设计能力,相关平台经验,企业自身定义合适流程的能力等方面具备一定基础,那么再实施CMMI,获得收益的可能性也就更高。当企业寄希望用流程改善来提高企业的竞争力,但却欠缺定义合适流程的能力,那任何美好的期望恐怕也就仅只于期望而已。


在诸多前提中角色非常独特的是企业文化。企业文化之于CMMI便如润滑油之于齿轮。


CMMI实施的同时,大量的文档必然随之而产生,用于定义许多行为规范。而人类的语言先天是有局限的,所以佛家说一诠必生一遮,诠生遮生,随诠随遮。有些事不说还明白,愈说反而愈糊涂。也正因此世上甚至诞生了律师这一行业。


即使这些文档的作者都是极为优秀的人,由于语言的根本特性,这些文档中也难免会有模棱两可之处。更何况很多企业恐怕找不到如此之多,经验能力非常适合的人选,最终的结果必然是定义流程的文档会相对比较含混(或者说可执行性差)。


这种含混其实为日后的执行藏下了祸根。在好的企业文化下,各个小组一起往积极方向推动,事情尚有可为。在坏的企业文化下,SEPGPPQA和项目组间恐怕就会刀兵相向,永无宁日。纵然高层不必总是出面充当律师这一角色,所有利害相关者能够自己结束一场场争斗,内耗之下,竞争力提高恐怕也会成为一句空话。


此时回忆一下项目的特性也就特别有意义。


通常来讲,项目意味着是在限定时间和限定资源下完成特定任务。在指定背景下,流程开销增大,也就意味着设计,实现等方面的时间减少。一旦项目经理发现流程成本无法负担,那流程除了走向形式化,几乎是别无选择。


CMMI实施中的偶然和必然

从方法论的来源来看,必然是先有实践,而后对实践进行抽象,基于其相同部分,进行进一步的分析和归纳,最终形成方法论。所以方法论本身必然即是有限正确的又是不完备的。 因为CMMI要想成为一种标准,那他就必须忽略具体项目的个性,而基于共性。而又因为他是基于共性,那他也就不可能直接指导实践。


这世上从来也没有,也不会有一种方法论,是放之四海而皆准的。而象CMMI这种大型方法论,尤其需要不停在实践中调整,才可能对现实起正作用。这样决定最终成败的关键因素就变为这种调整究竟应该如何发生?调整的结果又到底怎样?


调整只能在应用的过程中发生,而不管应用CMMI或者其他方法论的,其根本目的是促成公司或项目组发生一些变换,进而在QCDQuality,Cost,Delivery)上取得一定收益。


关于如何促成一个公司发生改变,《从优秀到卓越》这本书里有一些很有趣的观点可供参照。

比如:

你不可能使一个拥有50000名多员工的公司去拥护一个全新的激进策略。

实现从优秀到卓越这种跨越的公司,往往开始的时候并不公开宣布他们的伟大目标。......逐渐领悟到他们采取的行动的伟大意义......

无论最终结果多么富有戏剧性,从优秀公司向卓越公司的转变从来不会突然降临。这里没有雄伟的规划,没有一了百了的创新,没有一个幸运的突变,更没有奇迹的瞬间。

可坚持到底的转变总是遵循一个能够预测的模式---从积累到突破。


而谈到无法实现这种跨越的公司时,作者又说:


他们不仅不通过飞轮逐圈旋转来积累动量,反而设法略过积累阶段直接跳跃到突破阶段。然后当他们面对令人失望的结果时,他们又摇摆不定翻来覆去地改变飞轮转动的方向。


作者想表现的观点可以说的更直白一些:成功的变革通常是一个由内向外的渐变的过程。而试图由外向内,进行突变,则大多失败。


这个观点符合辩证法的量变到质变规律,可以说是客观真理。


与此相对应,似乎实施CMMI就应该循着下面的过程来逐渐调整,逐步推进:


发现自己的问题,流程改善->确认是否获得收益->如果每次总能有所收益,那么证明路线是对的,可以进一步实施。


这样实施起来,由于已经取得收益,强行推行流程所带来的抵触情绪自然也就不存在。

但现实情形似乎正与此相反,而更像《从优秀到卓越》中描述的无法实现跨越的公司。

先确定什么时候通过,接下来咨询公司介入,管理层强行从上向下,由外向里推进......


CMMI过程域中有一项叫做风险管理,但当企业把CMMI本身作为一个项目进行推进时,往往它却总被无视。做新项目的时候,我们知道短时间内应用太多新技术会导致风险上升。而做一次CMMI,我们究竟需要导入多少新东西?很多时候CMMI并不仅仅是流程改善,为做需求管理可能要导入COCOMO,FP法乃至其他,为做度量分析,机构过程性能等可能又要导入某某模型......


倒不是说这些东西不好,只是如果仓促导入,那结局就必然吉凶未卜。


对此,我个人毫无根据的猜测是:逐步调整并应用CMMI这样的大型方法论是需要时间和金钱的。而这点似乎与中国软件行业所处的位置形成矛盾。即使明知道用五年时间,经由实践--理论-再实践-再理论的不停反复,最终可以取得成绩。真的有企业会这么做么?


按合理的方法耗时太久,即使达到2级或三级可能也需要三年或五年的时间。而这对许多怀着“一万年太久,只争朝夕”这样一种心情的人来讲,是不可接受的。


国内相当一部分企业实施CMMI,但无法取得收益,貌似是由一系列偶然因素所导致,比如:人员,比如资源,但实则不是。就好比两人对弈,每次落子,似乎结局都将因此而改变,但实际上最终结局通常早已经由棋手的棋力所决定,最终胜负不过是一系列偶然后的必然。


可以说,很多时候,当企业把目光转向那一张证书的时候,其实已经在深层次里埋下了形式化的种子,后续的不过是等着它什么时候发芽而已。


人件的作者曾经一针见血的指出:CMM的自相矛盾之处是:过程改进是好的,但是过程改进程序不是,或者说至少它们不经常是好的。诚哉斯言!


CMMI的副作用

也许我们可以这样来概括软件开发过程。先是用需求开发构造软件的概念,接下来把这一概念映射到程序模型并实现它。


而又由于软件的概念边界很多时候与人类社会宽泛接触,所以导致人类社会这一世上最复杂的系统中的种种不确定因素会很容易干扰到软件的概念,这种干扰再进一步传播,必然增加实现的复杂度。所以很多时候,构造数学库的程序,反倒比构造信息管理系统更为简单。


也正基于此,Brook在《人月神话》中指出:


所有软件活动包括根本任务----打造构成抽象软件实体的复杂概念结构,次要任务----使用编程语言表达这些抽象实体,在空间和时间限制内将它们映射成机器语言。

这是极端深刻的。


掉过头来讲如果软件的复杂度确实由此而起,那么流程就远不是一个较佳的应对方案。


与此相对应,反倒是《人件》中的观点更有创见。


曾经讲:决定战争胜利的是人,而不是物。同理推导,决定项目成败的是人而不是流程。


BillGates曾戏称:“如果有一天早晨醒来,微软被大火烧个精光,给我20名最优秀的员工,一切马上就可以重新开始。”如果中国企业真的只把这看为一句玩笑,而不去领悟其中的道理,那恐怕外包以及系统集成真就是一种宿命了。


CMMI极为不好的一个副作用就是他使人们不愿去正视上面所说的这类真实存在的问题,而更愿意等待流程来解决问题,等待问题自动消失。


虽然这并非CMMI本身的罪过,但现实中CMMI却真实的发挥着这样的作用。我不杀伯仁,伯仁却因我而死,所以这个黑锅CMMI是必须背一背的。


CMMI来头过大,许多人对其仰视的同时迷失自我。最终在其东风之下,在项目运作中流程至上也就大行其道。隐约间,凡是项目的问题都可以用流程来解决,凡事流程没解决的问题都是流程还不够好。


且举一例:

某软件项目组,发现Peerreview的效果不好,进一步分析后,发现其主要原因是一众参加者事前不学习材料,Review时三缄其口所致。考虑解决方案时,首先想到的是改善Review的流程。即先把Review拆分为两个阶段:Pre-review和正式Review。在这两个阶段都详细定义参与者的各种角色,同时要求参会者必须把自己Pre-review的结果登入数据库。


该项目组实行CMMI已有数年,迅速想到用流程来解决问题未尝不是CMMI泽惠。


诸如此类,凡是涉及到产生错误的地方,都试图定义一组流程来规定详细的步骤,进而约束项目组员的行为,恐怕不是只在某一家公司里存在。

这很可怕。


最终的结局,必然是所有的人都仿佛陷在茧里,毫无生气,做事形式化,生产效率低下。 当本质问题不解决的时候,就会有各种表象,针对每种表象定义规范,只会使规范成为一种负担。额外的负担越重的时候,也就越发无法专注于本应专注的实务,最终导致更多的问题产生。这简直就是一个恶性循环。


就上面的例子而言,本质上应该是管理问题,是人的问题,而非流程问题。打一个简单的比方,如果一个人在一小时内只能从井里打5桶水,在士气或技能没有提高的情形下,你即使多给他一个桶,那其实并不能让他变成每小时打6桶水。


Review这种事也是一个道理,如果一个人在当前的状态每次review能发现5个错误,在他的生产能力没有提高的情形下,无论你制定怎么样的流程,分成两次也罢,记录结果也罢,最终每次review他所能发现的错误仍然只能是5。(如果逼急了,也许数目上会从5变成10,但很可能其中5个没有任何意义。)


流程虽好,也能解决许多问题,但现实世界中并非所有问题都是流程问题。只可惜CMMI树大招风,宛如点石成金之术,也就只能被人四处滥用了。


结束语

记得许多年前,ISO刚兴起的时候,很多公司也是一窝蜂的去上ISO,可以想见,CMMI实施若干年后,如果中国的软件公司仍然无法取得突破,那么一旦有一个新的方法论出来,那么很多人的兴致十有八九会由CMMI转为其他。这来来去去的折腾起来,对咨询业到未必是什么坏事,对企业恐怕却会损伤根本,甚至坐失良机。


有句话曾经非常欣赏,碰巧对这里论述的问题也有些借鉴意义,稍做调整后,把它录在这里:

横尽虚空,山河大地无一可恃,而可恃唯我。

竖尽来劫,前古后今无一可据,可据者唯有当前。


1000个成功的企业中,隐藏于成功背后的东西可能各不相同,但他们却都成功了。模仿,学习不是不好,但如果忘记了“唯我”与“当前”四字,画虎不成反类犬就几乎就是种必然。


-----------------------------------------------------------------------------------------

理想流口号:创建超一流方法论,为培育超一流软件公司贡献力量。

理想流博客:http://blog.csdn.net/leezy_2000


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics