非常道之CMMI -- 简介(一)

来源:互联网 发布:手机淘宝10.0 编辑:程序博客网 时间:2024/04/30 20:05

"道可道,非常道" - 取自老子<<道德经>>
如果一个道理,原理是可以说明的,那它就不是一个不变的,适用于所有情况的"常道".
个人认为CMMI不是一个"常道",敏捷方法也不是一个"常道"

 

什么是CMMI?
CMMI全称是Capability Maturity Model Integration, 即软件能力成熟度模型集成模型,
是由美国国防部与卡内基-梅隆大学和美国国防工业协会共同开发和研制的。

CMMI是一个过程改进方法,这个方法提供给组织关于有效过程的关键元素的知识.

CMMI用于在项目,组织中指导过程改进.
CMMI可以帮助整合传统的按功能划分的组织,设立过程改进目标和优先级.
CMMI提供质量过程的指导.
CMMI提供一个评估当前过程的参考点.

 

为什么学习或使用CMMI?

在SEI CMMI-OVERVIEW 05中描述下列场景
场景一
"我宁愿快点得到个不正确的产品也不愿迟点得到这个产品,我们总可以在后来修正它" -- 一个高级软件经理
"I'd rather have it wrong than have it late. We can always fix it later". -- a senior software manager

在SEI CMMI-OVERVIEW 05版中上述场景被认为是组织能力不足的体现.实际上笔者认为那个软件经理的观点
是合理的. 很少有人能在产品开发尤其是新产品开发中一次做好. 同时如果想一次做好往往会导致软件项目
严重延迟或甚至开发不出产品. 即使采用迭代开发,每次迭代时也可以先拿到一个产品,即使产品有问题.
这个有问题的产品可以投入集成测试已验证大的方面有无问题.

场景二
"底线是时间.我的升职和涨薪都基于能否满足时间计划" - 一个程序管理经理
“The bottom line is schedule. My promotion and raises are based on meeting schedule first and foremost” – a program manager (government)

同样,在SEI CMMI-OVERVIEW 05版中上述场景也被认为是组织能力不足的体现.笔者认为该Program Manager只是
表明该经理特别关注时间计划.不过,笔者并不认为可以不关注质量.毕竟产品不满足需求还是会导致项目延迟.

在SEI CMMI-OVERVIEW 06中描述了过程失败的典型特征.
如:
 总是不能兑现承诺 : 延迟交付, 螺旋上升的费用
 Commitments consistent failure : Late delivery, Spiraling costs
 进度上没有管理性的预见 : 总是发生令人惊讶的事件
 No management visiblity : You're always being suprised.
 质量问题 : 太多的重做, 产品功能不工作, 交付后客户的抱怨
 Poor morale
 低落的士气
笔者认为这些特征最好叙述为项目失败的典型特征. 没有过程或没有好的过程不是造成项目失败的唯一因素.

在SEI CMMI-OVERVIEW 07中描述了下列益处说明学习和使用CMMI的原因.

时间表
 降低往返飞行时间 (波音公司)
 增加满足里程碑时间点概率从50%到95%
 ...
生产力的提高
质量的提高
提高投资回报
提高客户满意度

笔者认为,一这些益处仍然缺乏大量具体的数据和分析,二适于其它公司的未必适用于自己.

 

对CMMI的期望是?
个人认为
 1. 尽管CMMI不能对于不同情况提供所有的实践,但CMMI系统性的提供了大量实践(22个过程域).
 项目或组织可以选择或参考这些实践来指导工作.
 2. CMMI定义了能力级别和成熟度级别.并指出可以单过程域上提高能力级别.也可以系统的在多过程
 域上进行阶梯式的提升组织能力和成熟度. 这些可以作为项目或组织进行能力提升的重要指导方法.
 3. CMMI提供能力和成熟度评估. 这可以帮助组织衡量自身,发现弱点提供参考.
在学习CMMI的过程中
个人比较喜欢SEI CMMI-OVERVIEW 07中的一句话"All models are wrong, but some are useful"