CMMI

  1. 刻画了软件团队/组织从不成熟到成熟的每个阶段的特征 (也就是 roadmap)
  2. 等级 2 和等级 3 关注的是当前状态
  3. 等级 4 和等级 5 是根据结果 (未来) 来进行管理

等级一:初始级

开发相对混乱,依赖个人英雄主义,没有过程概念,救火文化盛行

  1. 软件组织对项目的目标与要做的努力很清晰,项目的目标可以实现。
  2. 由于任务的完成带有很大的偶然性,软件组织无法保证在实施同类项目时仍然能够完成任务,项目实施是否成功主要取决于实施人员。

等级二:已管理级

项目小组体现出项目管理的特征,有项目计划和跟踪、需求管理、配置管理等。

  1. 软件组织对项目有一系列管理程序,避免了软件组织完成任务的随机性,保证了软件组织实施项目的成功率。
  2. 软件组织在项目实施上能够遵守既定的计划与流程,有资源准备,权责到人,对项目相关的实施人员进行相应的培训,对整个流程进行监测与控制,并联合上级单位对项目与流程进行审查。
  3. 从 2 级升级到 3 级的原因:固化最佳实践,对小组而言是能够更快地学习其他的做法。

等级三:已定义级

公司层面有标准流程和相应的规范,每个项目小组可以基于此定义自己的过程,使得优秀的做法可以在公司内分享。

  1. 软件组织能够根据自己的特殊情况及自己的标准流程,将这套管理体系与流程予以制度化。
  2. 软件组织不仅能够在同类项目上成功,也可以在其他项目上成功。
  3. 科学管理成为软件组织的一种文化,成为软件组织的财富。

等级四:定量管理级

构建预测模型,以统计过程控制的手段来管理过程

  1. 软件组织的项目管理实现了数字化。
  2. 通过数字化技术来实现流程的稳定性,实现管理的精度,降低项目实施在质量上的波动。
  3. 在这个级别我们希望能够看到一个预测模型。

等级五:优化级

继续应用统计方法识别过程偏差,找到问题根源并消除,避免未来继续发生类似问题

  1. 软件组织能够充分利用信息资料,对软件项目在项目实施的过程中可能出现的次品予以预防。
  2. 能够主动地改善流程,运用新技术,实现流程的优化。

一些理解

  1. CMM/CMMI 不适用于软件开发的原因
    1. CMM/CMMI 并不是一种具体的软件过程或者软件开发方法
      1. CMM/CMMI 建立了一组有效地描述成熟软件组织特征的准则。
      2. CMMI 是过程改进模型而非软件过程或者软件过程模型:CMMI 指导软件过程改进,不指导开发。
      3. 按照 CMM/CMMI 模型的要求,一个软件组织应当定义使用本软件组织特点的软件过程,并且不断优化该过程,来更好地实现软件组织的商业目标
    2. CMM/CMMI 并不能作为检验软件过程优劣的标准:过程改进对不同企业的含义不一样,成熟度等级无法脱离企业环境直接横向比较。
    3. CMM/CMMI 与其他软件过程或者软件开发方法的比较是没有任何意义的。
  2. 一些误解:
    1. CMMI 模型需要适当裁剪以适应公司的实际情况:需要裁剪的是公司内部定义的组织级开发流程和开发规范。
    2. CMMI 模型太重了,不适合互联网时代的轻量级开发:这个说法的错误之处在于,不一定是 CMMI 重或者轻,而是,CMMI 根本就不是开发模型。
    3. CMMI 模型只适合大公司、大项目,不适合小项目:首先没人检验过;其次,项目的大小衡量本身也缺乏值得信赖的参考依据;最后,接受这种说法的人还是把 CMMI 当成是一种特殊的开发模型。
    4. CMMI 模型只适合需求不变或者很少变化的场合,不适合需求不确定,变化很多的场合:CMMI 不是开发模型,与需求变化与否无关,谈不上适应或者不适应。
  3. CMMI 不是过程优劣的标准,也不适合用作公司之间的能力比较,说法怎么样?对的,CMMI 本身是有评级。(美国国防部订单招标要求企业至少达到 CMMI 的 3 级。因为公司的能力需要绝对东西,也就是能力强,能力弱,而 CMMI 衡量的是相对的水平,CMMI 仅仅关注在本公司的目标下的等级
  4. 更多讨论:试论 CMM/CMMI 不适合在当前软件开发当中应用的原因

考试题

  1. 【2020-mid】请描述 CMMI 模型的 5 个等级的特征,并且解释为何 CMMI 模型不应该是敏捷方法的对立面:
    1. 五个等级的特征
      1. Initial 原始级别:开发相对混乱,依赖个人英雄主义,没有过程概念,救火文化盛行
      2. Managed 已管理级别:项目小组体现出项目管理的特征,有项目计划和跟踪、需求管理、配置管理等
      3. Defined 已定义级别:公司层面有标准流程和相应的规范,每个项目小组可以基于此定义自己的过程,使得优秀的做法可以在公司共享。
      4. Quantitatively Managed 定量管理级别:构建预测模型,已统计过程控制的手段来管理过程
      5. Optimizing 优化级:继续应用统计方法识别过程偏差,找到问题根源并消除,避免未来继续发生类似问题。
    2. 原因解释:
      1. CMMI 是过程改进模型,刻画了软件组织从不成熟到成熟的路线图。
      2. 大部分敏捷方法都是开发方法
      3. 因此两者是完全不同性质的事物,将两者对立是不合适的。