CMMI和Scrum到底是什么关系

CMMI和Scrum,都用在件研发上面,两者到底是什么系?哪个比较好呢?

很多人可能都有过这个困惑,其实在真正了解了CMMI和Scrum,这个纠结本来是不存在的。

为了不卖关子,先抛出结论(网上有很多论述,从不同角度阐述两者的关系,这里的视角网上也有,不同的是用我自己的语言进行了重新描述),然后再来看看CMMI和Scrum都是什么鬼,在对两者框架的理解中理解和把握两者的关系。

结论:CMMI是世界观,Scrum是方法论

CMMI和Scrum之间,是世界观和方法论的关系:

  • CMMI对应What,指导人们“做对的事儿”,是道,用来解决项目管理的系统性问题;Scrum对应How,指导人们“把事儿做对”,是术,用来解决项目执行的具体操作方法问题。
  • CMMI定义了项目管理世界的总体结构,或者说项目管理世界的总体秩序,说明了在哪些方面应该获得关注,以及关注的程度与项目管理成熟程度之间的关系。
  • Scrum提供了可供CMMI中某些方面和任务落地的具体方法,如在需求管理、计划和跟踪、质量保证等方面提出了适合某些特定类型项目优秀实践,或者叫方法论。

通过框架模型理解CMMI(以CMMI V1.3为例)

CMMI全称是Capability Maturity Model Integration,即能力成熟度模型集成(也有称为:软件能力成熟度集成模型),它为组织提供了实现高效的项目过程所必需的基本元素,目的是帮助软件企业对软件工程过程进管理和改进。

一图胜过千言万语,先上一张CMMI架模型图:

解读CMMI的模型框架,首先要知道组成框架的基本要素。CMMI框架有如下三个基本要素完整勾勒:

  • 过程域:描述了做好项目要对哪些方面进行关注,CMMI V1.3定义了22个过程域,如项目计划,需求管理等。
  • 过程域分类:将所有过程域归类进四个大类,分别是工程管理类项目管理类过程类支持类。也就是做好项目需要关注的四个大的维度。
  • 成熟度级别:可以用来评估组织的项目管理成熟程度,以及牵引组织的改进方向。

通过将过程域放在过程域分类和成熟度等级矩阵的相应位置,展现完整的CMMI框架模型如下图所示。

CMMI是什么和不是什么?

上面的模型框架已经从最High Level的层面完整展示了CMMI的样貌,但是,我们一定要了解,CMMI中并未规定这些过程域所界定的管理方面和其内部的具体任务,到底应该用什么样的流程、方法和工具来具体落地。

因此,CMMI是一套项目管理过程框架,不是具体的项目管理和操作的流程和方法,指导项目管理要“做对的事儿”,而不具体涉及“如何把事儿作对”。因为不同组织有不同的文化,不同类型项目有其自身的特征,组织不同发展阶段有不同的管理诉求聚焦,这些都会影响具体的流程和方法。

CMMI从具体的方法论中跳出来,站在更高层面,回答了需要从哪些方面着手管理,仅仅回答了What,并未具体回答How,这正是框架的开放和包容之处,How的问题留给具体使用的组织,在框架指导下,根据自己的聚焦和需要,按需定制。

CMMI提供了做鞋的工具,你可以用她制作合脚的鞋子,而不需要你痛苦的削足适履,这正是CMMI的伟大之处。

通过开发型理解Scrum

先来看看百度百科上的Scrum定义:Scrum是迭代式增量软件开发过程,通常用于敏捷软件开发。Scrum包括了一系列实践和预定义角色的过程骨架。

还是老规矩,Scrum开发模型,上图:

 

解读一下上面的框架,可以概括为:

  • 3大角色:SM(引导者、教练和清障者)、PO、开发团队
  • 4大活动:Sprint计划会、Sprint评审会、Sprint回顾会、每日立会
  • 5大输出:Product Backlog、Sprint Backlog、可工作的软件、Sprint计划、燃尽图

以上的5大输出,对应到CMMI框架,可以区分为工程类输出和项目管理类输出:

  • 工程类输出:Product Backlog、Sprint Backlog、可工作的软件
  • 项目管理类输出:Sprint计划、燃尽图

Scrum是什么和不是什么?

看到了,无论定义中提到的“增量软件开发过程”,还是框架的具体构成,都能看出Scrum是一种具体的软件开发过程执行的方法论,界定了具体的组织结构、行动方法和输出物要求。除了Scrum,项目管理领域仍有其他方法,如XP、DevOps等,也都能够用来解决项目过程中的管理和执行问题。

因此,Scrum也好,还是其他如XP、DevOps也好,这些都是用来回答How的,告诉人们“把事儿做对”,都是具体的术,是解决某个或某些特定问题的,而不是项目管理的系统性问题

总结:CMMI是世界观,Scrum是方法论

重要的事情重复一遍,CMMI和Scrum之间,是世界观和方法论的关系:

  • CMMI对应What,指导人们“做对的事儿”,是道,用来解决项目管理的系统性问题;Scrum对应How,指导人们“把事儿做对”,是术,用来解决项目执行的具体操作问题。
  • CMMI定义了项目管理世界的总体结构,或者说项目管理世界的总体秩序,说明了在哪些方面应该获得关注,以及关注的程度与项目管理成熟程度之间的关系。
  • Scrum提供了可供CMMI中某些方面和任务落地的具体方法,如在需求管理、计划和跟踪、质量保证等方面提出了适合某些特定类型项目优秀实践,或者叫方法论。

Scrum只是CMMI可以应用的众多方法论中的一种,他针对某些过程域中的某些任务,提出了具体的操作方法。其他方法论可能针对其它过程域,或者针对相同过程域的不同操作方法。

打个比方,比如一个人要从北京到上海,有很多种具体方法,比如坐汽车、飞机、火车等等。CMMI描述了从北京到上海这个课题,Scrum在分析了各种综合要素的基础上提出的其中一种具体交通方式,仍有其他方式可选。

CMMI是框架,是开放的、包容的;Scrum是方法论,是个性化的,适用某些特定场景下解决某些具体问题的。比如其他方法论还有极限编程、精益看板方法、DevOps等等。这些方法论没有最好,只有最合适。

猜你喜欢

转载自blog.csdn.net/zhanglinneu/article/details/84337329