CMMI:走出研发混乱的指南针(作者:榆钱树上)
1、CMMI是什么?
CMMI(Capability Maturity Model Integration),即能力成熟度模型集成。是由美国国防部卡内基梅隆大学下的软件工程研究中心(SEI)以及美国国防工业协会共同开发的一套软件体系规范,主要用于指导软件开发过程的改进和软件开发能力的评估。通俗一点说,CMMI是一套指南、做事的一套方法论、改进质量的参考框架。我们参考它提供的方法,通过控制我们的项目管理过程,来达到提高软件质量的目的。2、CMMI的由来
1960s开始,“软件危机”出现,美国军方项目受此影响严重。
1983年,美国审计局的研究表明只有3%软件交付后可以使用,49%扔掉了,48%使用前需要返工。因此,美国国防部委托SEI研究解决方案,用于评估军方软件供应商的能力。
SEI对软件危机的研究表明,软件危机的主要问题不是技术,而是过程管理。
汉弗莱(Humphrey)借鉴了全面质量管理TQM的思想(还有休哈特、戴明、朱兰、克劳士比等质量大师的思想),提出了能力成熟度模型CMM。
1991年,SEI发布了第1个能力成熟度模型CMM 1.0,这是CMM的起源。CMM最初是为了解决软件问题的,因此又叫SW-CMM,以区别后来出现的其他能力成熟度模型。
从1991年至2018年,SEI总计迭代了13个版本,2018年3月SEI发布CMMI 2.0,这是当前的最新版本。
3、CMMI存在的目的?
CMMI过程改进的目的,就是写在CMMI文档封面的一句话:Improving processes for developing better products and services.(为开发更好的产品与服务而持续改进过程。)
4、CMMI的基本思想
- 过程改进不可能一蹴而就,而是一个长期的,甚至永无止境的过程。
- 持续改进——PDCA。
- 流程也有保鲜期——定期审视、更新流程。
- 开放、学习的心态。
5、CMMI级别
即CMMI成熟度级别。CMMI把开发组织的成熟度分为1-5级,每一级是一个层次,作为继续过程改进的基础。其中1-3级为低成熟度级别,4-5级为高成熟度级别,所以4级是一个门槛。
从CMMI 1级到CMMI 5级,成熟度级别的提升带来两个变化:风险和浪费减少,生产率和质量提升。从CMMI 1级到CMMI 3级,关注点从个人到项目团队,再到组织;从CMMI 3级到CMMI 5级,关注点从组织到项目团队,再回归个人。
这些成熟度级别按照逐步改进的原则排列,组织可以逐级提高其成熟度级别。以下是CMMI的五个成熟度级别:
可管理级别(Level 2 - Managed): 在可管理级别,组织已经实施了一套基本的项目管理过程,以确保项目在预算、时间和范围内完成。关键的项目管理活动,如计划、监控、配置管理和质量管理,得到了有效的执行。这个级别强调了过程的稳定性和一致性。
已定义级别(Level 3 - Defined): 在已定义级别,组织已经建立了一套标准化的过程,这些过程在整个组织内都得到了执行。过程定义和管理是系统化的,并且在项目间保持一致性。组织在此级别上强调过程改进和持续优化。
量化管理级别(Level 4 - Quantitatively Managed): 在量化管理级别,组织开始量化和测量其过程的性能,以便更好地管理和控制项目。组织使用统计方法来分析和改进过程,以确保过程的预测性和稳定性。
优化级别(Level 5 - Optimizing): 在优化级别,组织不断追求过程的卓越性和创新性。组织采用数据驱动的方法来持续改进过程,以满足不断变化的业务需求。组织在此级别上强调创新和持续改进。
每个成熟度级别都有一组相关的过程域和实践,组织需要满足这些实践的要求才能达到相应级别。逐步提高成熟度级别可以帮助组织提高过程能力,提高工作效率,降低风险,并更好地满足客户需求。选择适合组织需求和目标的成熟度级别是关键决策,通常需要根据组织的当前状态和未来发展计划来制定。
6、CMMI的22个核心过程域
CMMI V2.0 模型包含22个核心过程域,每个过程域都代表了组织在特定领域中进行过程改进的一种能力。以下是对每个核心过程域的详细介绍:沟通(Communication): 沟通是组织内部和外部成功协作的关键。在这个过程域中,组织需要建立和维护有效的沟通渠道,确保信息流动畅通、准确和及时。这包括了定义角色和责任、共享信息、管理沟通工具和渠道,以及处理沟通中的问题和误解。通过良好的沟通,组织能够提高协作和协调,确保项目和工作按计划进行。
风险与机会管理(Risk and Opportunity Management): 这个过程域关注如何识别、评估和管理风险,同时也强调如何识别和利用机会,以实现项目和组织的目标。风险管理包括风险识别、风险分析、风险计划和风险监控,而机会管理则强调机会识别、机会分析和机会利用。通过有效的风险与机会管理,组织可以更好地应对不确定性,减少项目失败的风险,并利用机会实现更好的绩效。
决策分析与决策(Decision Analysis and Decision-making): 在组织内部,决策是日常工作的核心。这个过程域涵盖了如何收集、分析数据和信息,以支持组织内的决策制定。它还关注如何确保决策与组织的战略目标一致,并采用合适的决策方法和工具。通过决策分析与决策,组织可以更明智地做出决策,从而更好地实现其使命和愿景。
供应商管理(Supplier Management): 供应商是组织成功的关键合作伙伴之一。在这个过程域中,组织需要有效地管理与供应商的合作关系,包括供应商选择、合同管理和供应商绩效监控。这包括确保供应商交付的产品和服务符合质量标准和合同要求。通过有效的供应商管理,组织可以降低合作风险,确保供应链的可靠性,并提供高质量的产品和服务。
质量与过程绩效(Quality and Process Performance): 该过程域涉及质量管理、过程绩效度量和改进。组织需要建立质量管理体系,确保产品和服务符合质量标准,并使用度量和分析来监控和改进过程绩效。这包括了质量计划、质量度量、问题分析和过程改进活动。通过不断提高质量和过程绩效,组织能够提供更好的产品和服务,满足客户的需求,降低成本,提高效率。
服务系统与工程(Service System and Engineering): 服务是许多组织的核心业务。这个过程域关注如何设计、开发和管理服务系统,以满足客户需求并提供高质量的服务。它包括了服务系统设计、服务流程管理、服务质量保证和服务改进。通过有效的服务系统与工程,组织可以提供卓越的服务,提高客户满意度,增加竞争力。
组织级过程焦点(Organizational Process Focus): 该过程域强调如何在组织层面上关注过程的改进和持续优化,以支持组织的战略目标。它包括了组织过程的规划、管理和改进,以确保过程对组织的成功至关重要。
组织级过程定义(Organizational Process Definition): 这个过程域涵盖了定义和维护组织级别的过程,以支持项目和产品开发。通过定义清晰的过程,组织能够确保一致性和质量标准的实施。
组织级过程聚焦(Organizational Process Focus): 这个过程域关注如何在组织内部确保过程的有效执行和管理,以达到一致性和质量标准。它强调过程的重要性,以支持组织的目标。
组织级过程改进(Organizational Process Improvement): 该过程域关注如何在组织内部进行过程改进活动,以提高效率、质量和绩效。通过不断改进过程,组织可以实现更好的业务结果。
组织级过程管理(Organizational Process Management): 这个过程域强调如何管理和维护组织级别的过程,以支持项目和产品开发。它包括了过程绩效度量、过程监控和过程改进。
项目管理(Project Management): 该过程域涵盖了项目计划、项目监控、资源管理和风险管理等项目管理活动。它关注如何规划、执行和监控项目,以确保项目按计划和预算顺利完成。
项目规划与监控(Project Planning and Monitoring): 这个过程域关注如何制定项目计划、监控项目进展,并管理项目资源。它是项目成功的基础,涵盖了项目计划、资源规划、项目进度跟踪和问题管理等活动。
项目监控与控制(Project Monitoring and Control): 该过程域涵盖了如何监控项目的性能、执行变更控制和采取纠正措施来保持项目在轨道上。它帮助组织及时发现和解决项目问题,确保项目按计划进行。
项目绩效与过程改进(Project Performance and Process Improvement): 这个过程域关注如何收集、分析项目和过程数据以实现绩效改进。它强调了绩效度量、数据分析和改进计划的重要性。
项目工作与工作管理(Project Work and Work Management): 该过程域涵盖了如何规划、执行和管理项目工作。它包括了工作分配、任务管理和工作执行等活动,确保项目按计划完成。
供应商项目管理(Supplier Project Management): 这个过程域涵盖了与供应商合作的方案,以确保供应商项目达到质量和性能标准。它包括了合同管理、供应商绩效监控和风险管理。
质量工作与工作管理(Quality Work and Work Management): 该过程域关注如何规划、执行和管理与质量相关的工作。它包括了质量计划、质量度量和问题解决等活动,以确保交付的产品和服务符合质量标准。
工程与管理支持(Engineering and Management Support): 这个过程域强调了如何提供工程和管理支持,以支持项目和产品开发。它包括了工程支持、管理支持和技术支持等活动,以确保项目的成功实施。
生产与服务交付(Product and Service Delivery): 该过程域关注如何交付产品和服务,以满足客户需求。它包括了产品交付、服务交付和客户满意度评估等活动,确保交付的产品和服务符合质量和性能标准。
环境工程与管理(Environment for Engineering and Management): 这个过程域关注如何创建和维护适宜于工程和管理的环境。它包括了资源管理、设施管理和工程环境支持等活动,以支持项目和产品开发。
改进的工作与工作管理(Improvement Work and Work Management): 该过程域强调了如何规划、执行和管理过程改进工作。它包括了过程改进计划、改进执行和效果评估等活动,以提高过程能力和绩效。
每个过程域都包括一组最佳实践和指南,有助于组织改进在特定领域的过程能力和成熟度。组织可以根据其需求和目标选择适合的过程域来进行过程改进。通过实施这些过程域,组织可以提高工作效率、质量和绩效,更好地满足客户需求,实现业务目标。
7、CMMI认证
如下引用自『人人都是产品经理』
国内学习和实践CMM/CMMI已有二十多年历史了,是CMMI最活跃的阵地(没有之一)。SEI数据显示,中国通过的CMMI评估总数已连续十年居世界第一。
2020年9月20日CMMI官网数据:中国已经通过CMMI认证(3年有效期内)的组织6509家(5级912家,4级70家,3级5511家,2级16家),不管是总数量还是高成熟度级别的数量都远超过美国和印度。
国人参加CMMI认证的热情令人咂舌!应了一句话——咱中国人不差钱。为什么会这样?与政府鼓励有很大关系。国务院2000年6月发表的《鼓励软件产业和集成电路产业发展的若干政策》第17条规定“对软件出口型企业CMM认证费用予以适当支持”。
多年以前北上广深、杭州、苏州等地政府就对CMMI 3-5级分别奖励30、40、50万(以抵扣税收方式),成都等地奖励70%退税抵扣,湖南、沈阳、烟台等地奖励50万。现在,各地政府仍然对CMMI认证给予税收奖励,只是对CMMI 3级这样的低级别已经没有奖励或奖励较少了。
通过CMMI 3级认证的公司和通过CMMI 5级认证的公司有很大差别吗?
实际上没有多大差别,能过3级的公司,基本上就能过5级。我任职过两家CMMI 5级的公司,第一家公司xx通信,确实在认真做过程改进,2010年通过CMMI 3级,2013年通过CMMI 4级,2020年通过CMMI 5级。第2家公司,2017年7月通过CMMI 3级(也就只有这个水平),很快2019年1月跳过CMMI 4级马不停蹄通过了CMMI 5级认证。
为什么能过?因为评估师的目标和公司的目标是一致的,都是要通过认证评估,否则评估师拿不到大部分认证费用(一般都是签包过合同)。按CMMI的规定,评估师和咨询师不能是同一个人,但是国内的情况,有几个是这样执行的?反正,我遇到的都是既当教练又当裁判,没有碰到认证不通过的情况。
8、CMMI和敏捷
如下引用自『人人都是产品经理』
CMMI更倾向于把人看成是产品开发生产线上的螺丝钉,是可以替换的,大部分工序既不需要高超的技能、也不需要多面手。CMMI的方法更适合制造业和传统IT行业,对个人的技能要求不高,对个人的纪律要求较高,适合大兵团作战,适合暴兵的人海战术。一个方阵过去,碾压一切障碍,不会为损失小兵停下脚步,甚至不会为更换统帅停下脚步。
而现在流行的敏捷更倾向于把人看成是单打独斗或小团队作战的特种兵,强调个人和小团队的能力,既需要高超的技能、也希望成员都是多面手。敏捷的方法更适合互联网行业,对个人的要求更高,适合小团队作战,适合重点突破斩首战术,适合敌后渗透。
CMMI和敏捷两种模型本身无所谓孰优孰劣,各有适合的行业和场景。当然,相比而言,CMMI对个人的要求更低一些,即使是平庸的人员在CMMI严密的流程管理下,也能够做出合格的产品。
所以,那些逃离CMMI拥抱敏捷的个人或团队,如果不是行业转换的话,在CMMI流程下做不好的个人和团队,在敏捷流程下很大可能更做不好,不关流程,只关乎人。笨蛋就是笨蛋,难道换了套衣服就变聪明了吗?只有那些在CMMI流程下能成功的个人和团队,在敏捷流程下将延续成功的战绩,甚至释放潜力,更加成功。
CMMI是持续改进的模型,在V1.3版本吸收了敏捷实践。从这个意义上理解,敏捷与CMMI并不是对立或矛盾的。
9、CMMI和IPD
CMMI是持续改进的模型,关注的是过程质量,更侧重执行层面,也就是我们常说的“把事情做正确”,并对如何执行的要求更细、更规范。IPD是集成产品开发,关注的是产品开发以及产品如何成功走向市场,IPD更侧重做正确的事情,强调决策的重要性。IPD的作用域覆盖公司各个业务职能部门,更强调各部门如何协同作战不成产品的商业成功,CMMi作用域更加聚焦软件研发,更加强调软件研发执行过程更加规范高效。参考资料
[1] CMMI-DEV 2.0
[2] 人人都是产品经理
[3] CMMI认证数据查询:https://sas.cmmiinstitute.com/pars/pars.aspx
————————————
原文作者:榆钱树上
转载自:软件研发质量与效率(公众号)
原文地址: https://mp.weixin.qq.com/s/KFysJpcZfOH57QVC3KrCeQ
声明:本文版权属于原作者,如有侵权,请联系删除。