接触CMMI有12年了,09年开始接触CMMI,跟着咨询老师给自己公司做CMMI认证,自己负责公司的测试相关流程体系的建设。到19年自己负责公司的体系建设,初次也是CMMI过级,不过这次只是为了过级,公司只拿了个证书,没什么实质的收获,自己倒是对CMMI重新学习了一遍。虽然个人又学了一些东西,但对公司很失望。
跨过年后,公司决定要做流程优化,这次是基于敏捷来做,并分析出不同的改进专题,完成一个推广一个,半年时间也有不少成效,例如建立了基于Scrum的内部软件研发流程、建立基于瀑布的交付项目的研发流程、建立了度量的方法和收集了度量数据、梳理了配置管理,并且几乎所有项目都按照迭代计划、每日站会、回顾会议的方式来开展工作。可惜后来自己工作调整,这块工作交给其他同事,该同事也没联系原来的咨询老师,做的东西后来基本作废,各部门又各搞各的,质量也一台糊涂,上线的产品在客户现场测试,被客户发现两百多个bug,真是极度失望。
闲言少叙,再回过头来说CMMI。CMMI针对软件研发提供了一套结构化的方法论,并提供最优的时间供使用者参考,这样既有方法又有示例,按照这套体系可以搭建出一套适合自己公司的可以落地的流程体系。不像PMP,几乎全是理论化的空中楼阁,学完PMP后非常失望,本来想学项目管理的,学完后发现按他们的讨论管项目,完全无法落地,花了半年的时间和几千块钱,最终也只是拿了一个证,对个人能力的提升远不如CMMI这一套来得多。
有人可能说现在都搞敏捷,不用CMMI那套沉重的流程体系了。说这话的人基本是不了解CMMI的本质。CMMI主要提供的是方法论,你按他的方法去做并有相关证据就行了。CMMI说要有需求管理,难道敏捷不做需求管理吗?只是实现的方式不同而已。CMMI说做任何事都要有计划,难道敏捷不用做计划? CMMI有验证和确认两个过域,翻译过来可以认为就是测试和验收,难道敏捷不用测试和验收?
本文主要讲解一下CMMI的理念,以及对22个过程域,每个过程域的特定实践,已经所有过程域需要满足的通用实践做出说明。
CMMI不同级别的区别则不在此文说明,那涉及CMMI过级的部分,我们要学到是CMMI的方法论和知识,而不是为了了解过级。
CMMI®(Capability Maturity Model® Integration,能力成熟度模型集成)模型系列是帮助组织改进其过程的最佳实践的集合。这些模型由来自产业界、政府以及软件工程研究所(Software Engineering Institute,SEI)的成员所组成的产品团队开发完成。
CMMI思想根植与一下思想、技术、方法
所以CMMI的过程域也会分为项目管理、过程管理、工程、支持
通用目标和通用实践是指所有过程域都需要满足的相同目标,都需要应用的相同实践。其实我觉得不仅仅是CMMI的过程域中使用,在生活中方方面面这些通用目标和通用实践都可以用到,而且应该要借用。
过程域的特定目标得到过程的支持,过程的支持通过输入转化为输出的工作产品来实现
执行过程域的特定实践,主要关注产生的工作产品和交付的服务,只要有结果就行,不用遵循规定的过程,实践做得好坏取决于实施该项工作的个人。
过程得到制度化为已管理的过程
从组织级层面建立方针,以计划并执行过程。此处组织级可以是公司级的,也可以使公司某个研发中心层面的。
应用到个人层面,可以理解为建立一个框架性的方针或政策。
建立计划,以执行过程。
应用到个人层面,则是万事都需要有计划。
提供充分的资源,以执行过程、开发工作产品并体统过程的服务。
确保计划所定义、执行过程所需的资源在必要时可用。
应用在个人层面也是一样,当组好计划后,就要为计划的实现准备充分的资源。
分派职责与职权。一方面是定义各活动负责角色的责任,另一方面也要分派对应的职权。
此通用实践的意义在于给定义好各种角色,所有角色有相应的职责,这样某人是哪个角色,相应的活动通过角色定义就可以定位到具体负责的人。
必要时,对执行的人员进行培训,确保基本执行所需的能力。方式可以使自学、自己找培训、提供在岗培训、辅导等。
对所选择的工作产品进行适当级别的控制,保证其寿命内的完整性。例如需求确定后要进行控制,不能随意更改,不同的产品控制级别不一样。有的更改时只需要有记录就行,而有的产品更改必须通过审批。
识别过程的相关干系人,并使之按计划参与。所谓的干系人,指得是跟活动利益相关的任何实体,可以包括个人、团队、管理层、客户、供方、最终用户、运行与支持人员、其他项目、以及政府监管机构等。
按照执行过程的计划,监督并控制过程,当出现偏差时,并采取适当的纠正措施
提供可信的保证,确保过程与所选的工作产品按照计划得到实施,并遵循过程描述、标准和流程。即有没有按照规定的方式做事。
与上级管理层一起对过程的活动、状态、结果进行评审,为管理层提供对过程的适当可视性,当发现问题时可以及时解决。
过程得到制度化为已定义的过程
建立并维护已定义的过程描述,组织应该定义标准的过程描述,而本实践是根据实际情况对组织的过程描述进行裁剪,使其妈祖项目的需要。
收集过程执行中的各种经验,包括工作产品、度量数据、经验教训与过程改进建议,形成组织过程资产,供计划执行相思过程的人员参考使用。
CMMI的内容有点多,本来想两篇写完,目前看准备写6篇,此是第一篇,后续项目管理、过程管理、工程、支持的过程域各一篇,CMMI模型表述方式一篇,自己应用落地的研发框架一篇
最近看了OKR,对照CMMI发现有共同之处
OKR分三层,目标、关键结果和关键行动,目标确定后关键结果支撑目标的实现,而关键行动确保关键结果的达成。
而CMMI的过程域也分为目标、实践和子实践,目标当然跟OKR的目标对应,而实践做到后就能确保目标可以达成,所以实践对用关键结果,而子实践则是确保实践的实现,这个就相当于行动确保OKR中的关键结果得以实现。
这个也是CMMI的精髓所在,目标确定后行动则根据子实践和实践行动就行了,实践落实好了目标就可以达成。