CMMI基础知识扫盲
CMMI全称是Capability Maturity Model Integration,CMMI是个好东西来的,但行内人士对她的认识并不全面,甚至有种种的误解。尽管网上有很多CMMI相关介绍,但一般都是比较苦涩难懂的。本文将用生动通俗的语句,让大家初步看清楚CMMI的真面面孔。
CMMI是什么东西?
CMMI英文全称是Capability Maturity Model Integration,直接翻译就是能力成熟度模型,直接看这几个中文字,你还是没有办法搞清楚CMMI是什么东西的。
大家可能在网上见过很多《成功人士的七个习惯》(可能还有很多类似的名字)的文章吧?有人总结了成功人士的成功的原因,总结出他们的习惯,如果我们也能具备这些习惯,那么我们也很可能成为成功人士。类似的,CMMI可以看作是成功企业如何做好软件的一些习惯、做法、准则等的集合,是如何做好软件的最佳实践的集合。如果企业也能按照CMMI的要求做好,那么企业就很可能成为成功的企业。
CMMI里面所有的要求,都是来自于成功企业的最佳实践的,她的先进性我们不必怀疑,如果我们没有做好,那不是CMMI本身的问题,而是我们自己没有理解好或者是没有执行好的原因。
说到CMMI,就不可避免会提到另外3个字母SEI,SEI全称是Software Engineering Institute的全称,直译就是软件工程学院,是美国的一所大学,CMMI标准就是他们搞出来的。
CMMI目前最新版本是V1.2,如果你是现在才开始了解CMMI的,那么你完全没有必要去搞清楚V1.1与V1.2的差别,更加没有必要去比较CMM与CMMI的差别,直接了解CMMI V1.2就可以了,你只需要知道CMM是CMMI的前身,而CMMI V1.1虽然比CMM要新很多,但现在已经不用了。现在在互联网上还有很多比较CMM与CMMI的文章的,除非你很想了解或者你有很多时间,建议不必去看这些内容。
连续式 vs 阶段式
CMMI有两种表述方式:连续式与阶段式,两种方式只是从不同的角度来阐述CMMI,其实质上表达的内容是一致的。就好像我们做数据库设计的时候,可能会设计不同的视图来查看相同数据表的数据,只是角度不一样。
大家可能会问,好好的CMMI,为什么要搞两种表达方式呢?不怕把大家搞糊涂吗?
确实这两种方式把不少人给搞糊涂了,这是SEI的一个败笔。以前的CMM是只有阶段式的表达方式的,连续式是后来提出来的,SEI内部分成两派,一派支持连续式,一派支持阶段式,互不相让,最后达不成一致,就出来了现在这个样子,连续式与阶段式两者共存。
连续式其实更加能反应过程改进的本质,并且能更好地引导企业把过程改进做到实处,但连续式比较难以理解。阶段式是直接继承CMM的,大家都比较容易理解,而且阶段式有一个级别,在商业上更好宣传,但很容易导致企业为了过级而过级。
连续式和阶段式同时也是评估的两个不同角度,用连续式评估,企业会得到很多个PA的Level,用阶段式评估,企业会得到一个整体的Level。
对CMMI还不是很熟的人士,先了解这么多就可以了,以后再慢慢了解。
CMMI 1至5级简述
这里我们用比较容易理解的阶段式的角度,来描述一下CMMI的级别。
在模型中,所有软件组织的软件能力成熟度划分为5个等级——第1到第5级。数字越大,成熟度越高,高成熟度等级代表比较强的综合软件能力。
5个成熟度等级分别是:
第1级:初始级
第2级:受管理级
第3级:已定义级
第4级:定量管理级
第5级:持续优化级
CMMI的五个台阶(五个等级)
台阶一:CMMI一级,完成级。
在完成级水平上,企业对项目的目标与要做的努力很清晰,项目的目标得以实现。但是由于任务的完成带有很大的偶然性,企业无法保证在实施同类项目的时候仍然能够完成任务。企业在一级上的项目实施对实施人员有很大的依赖性。
台阶二:CMMI二级,管理级。
在管理级水平上,企业在项目实施上能够遵守既定的计划与流程,有资源准备,权责到人,对相关的项目实施人员有相应的培训,对整个流程有监测与控制,并与上级单位对项目与流程进行审查。企业在二级水平上体现了对项目的一系列的管理程序。这一系列的管理手段排除了企业在一级时完成任务的随机性,保证了企业的所有项目实施都会得到成功。
台阶三:CMMI三级,定义级。
在定义级水平上,企业不仅能够对项目的实施有一整套的管理措施,并保障项目的完成;而且,企业能够根据自身的特殊情况以及自己的标准流程,将这套管理体系与流程予以制度化这样,企业不仅能够在同类的项目上生到成功的实施,在不同类的项目上一样能够得到成功的实施。科学的管理成为企业的一种文化,企业的组织财富。
台阶四:CMMI四级,量化管理级。
在量化管理级水平上,企业的项目管理不仅形成了一种制度,而且要实现数字化的管理。对管理流程要做到量化与数字化。通过量化技术来实现流程的稳定性,实现管理的精度,降低项目实施在质量上的波动。
台阶五:CMMI五级,优化级。
在优化级水平上,企业的项目管理达到了最高的境界。企业不仅能够通过信息手段与数字化手段来实现对项目的管理,而且能够充分利用信息资料,对企业在项目实施的过程中可能出现的次品予以预防。能够主动地改善流程,运用新技术,实现流程的优化。
由上述的五个台阶我们可以看出,每一个台阶都是上面一阶台阶的基石。要上高层台阶必须首先踏上较低一层台阶。企业在实施CMMI的时候,路要一步一步地走。一般地讲,应该先从二级入手。在管理上下功夫。
第1级是不需要评估的,哪怕你们是手工作坊开发的软件公司,也可以说是CMMI1级。从2级开始到5级,SEI在每个级别都有详细的标准。
那怎样才算达到某个级别呢?
要通过高级别的评估,要满足这个级别以下所有级别的标准。
例如:
一个进行4级评估的企业,评估的时候首先是看是否达到2级要求,然后是3级要求,然后才是4级要求。
评估的时候,如果2级的标准达到,但3级的要求达不到,就算4级的要求达到了,也只能算2级。
每个级别又代表怎样的意思呢?下表简要地说明了1到5级的差异:
2级比较容易做到,要做到3级要做的事情多很多,一般来说建议2、3级一起来做。3级到4级跨度很大,要做到4级非常不容易。如果4级做得比较好,要做到5级难度不算很大。以下是各级难度的示意图:
过程域(PA)、目标(Goal)与实践(Practice)
CMMI2级到5级,每个级别都包含几个到十几个PA(Process Area),直接翻译就叫做:过程域。
PA简单地说就是要做好软件开发的某一个方面,如果要达到某个级别的要求,就要达到该级别所有PA的要求。一个PA包含几个Goal(目标),如果要达到某个PA的要求,就意味着要达到该PA每个Goal的要求。
每个Goal怎样才算达到要求呢?每个Goal又包含几个到十几个Practice(实践),如果这些Practice都做到了,就认为该Goal达到要求了。
级别、PA、Goal与Practice的关系示意图如下:
2级有7个PA,3级有11个PA,4级有2个PA,5级有2个PA,一共22个PA,Practice的总数量超过400个。如果要达到5级的要求,意味着必须满足这400多个Practice的要求。
评估办法
评估一个企业达到多少级别的要求,其实就是看相应的Practice是否达到要求。评估办法根据严谨的程度,分为以下办法:
SCAMPI C
SCAMPI B
SCAMPI A
SCAMPI A是最严谨的,进行正式评估的时候,必须采用该办法。下面我们简单体会一下SCAMPI A评估方法。
举一个日常的例子,比方说你今天中午吃了饭,但别人不知道,别人要判断你是不是吃了饭,用SCAMPI A的办法来判断的话,需要提供以下证据:
1)书面直接证据,能证明你吃了饭的书面的直接的证据。如果你去餐厅吃饭的,你的帐单就可以用来做直接证据,如果你在家做饭,那就麻烦,可能没有能留下直接书面证据了。
2)书面间接证据:比方说你在家做饭,之前去买菜了,你买菜的账单就可以作为间接书面证据。
3)访谈证据:如果别人问你,今天中午有没有吃饭,你能准确说出来,并且没有疑点,那就认为证据有效了,或者是如果你和别人吃饭,别人能说出跟你吃了饭,也认为证据有效了。
以上3方面的证据,第一个证据书面直接证据,是必须要有的,同时第2和第3类证据,至少要有一个。以上证据都具备,才能认为你吃了饭。
我想大家可能要“吐血”了,为了要证明吃了饭,居然要这样麻烦!当然吃饭只是一个例子,我们进行CMMI评估的时候,每一个Practice都需要提供这样的证据。
准备评估没有什么捷径,就是老老实实按照CMMI的要求去做,认真做好过程改进的工作,认真准备书面证据,访谈的时候就按照实际的做法老老实实的回答。
企业商业目标与CMMI
有一种业内普遍的误解,好像CMMI级别越高,项目的成本就越高。那么我们要问,为什么我们还要去追求高级别呢?企业到底为什么要去评估CMMI?
业内也有另外一种误解,CMMI是用来提高软件质量的。那么CMMI不用来加快软件开发进度,节省成本吗?软件开发从来就是质量、进度、成本的平衡,CMMI只关注一个方面吗?
公司的商业目标,简单地说两个字可以概括——“赚钱”!为了赚钱,我们有很多办法:
提高质量,我们的质量不需要很高,比竞争对手高就可以了。
加快进度,我们的进度也不需要很快,但至少要比竞争对手快。
减少成本,成本也不必减少很多,关键是能支持公司运作,能带来利润就可以了。
CMMI是为企业的商业目标服务的!既不是纯粹提高质量,也不是光增加公司的成本而不提高效益。CMMI是为了提高企业的生产力!
如果贵公司实施了CMMI,而没有提高生产力的话,改进是失败的,违背CMMI的初衷的。CMMI是个好东西,我们没有做好,并不是CMMI的错,是我们没有理解好或者是执行好。
要让CMMI切实为企业带来价值,难度很高,如何才能做到?这些内容可以写一本书。本文希望能澄清大家的一些思想误区,扫扫CMMI的文盲,为切实发挥CMMI的作用做好准备
CMMI基础知识扫盲的更多相关文章
- jQuery学习笔记 - 基础知识扫盲入门篇
jQuery学习笔记 - 基础知识扫盲入门篇 2013-06-16 18:42 by 全新时代, 11 阅读, 0 评论, 收藏, 编辑 1.为什么要使用jQuery? 提供了强大的功能函数解决浏览器 ...
- 音视频处理基础知识扫盲:数字视频YUV像素表示法以及视频帧和编解码概念介绍
专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt+moviepy音视频剪辑实战 专栏:PyQt入门学习 老猿Python博文目录 老猿学5G博文目录 一. ...
- mysql基础知识扫盲
本篇主要介绍关于mysql的一些非常基础的知识,为后面的sql优化做准备. 一:连接mysql 关于mysql的下载和安装我在这里就不说了,第一步我们要连接我们的mysql服务器,打开cmd命令切换到 ...
- 集合对象与自定义javabean对象接收数据库查询的数据 (基础知识扫盲)
一.集合对象(List,Map,数组)等对象接收数据库查询的记录,如果没有一条记录,就得到的内容为空的集合,不是null: 例如:List查不到记录得到的就是size=0的list 二.自定义的jav ...
- PCIe基础篇(一)、基础知识扫盲
1.PCIe:Peripheral Component interconnect Expess,外围组件接口互联,属于第三代IO总线,PCIe的传输速率指的是实际的有效传输速率,为RAW data(原 ...
- H265编码等级以及图像的基础知识
1. H265编码等级 H264编码profile & level控制 .H265编码初探 H265 profile H265 Profile & Level & Tier 介 ...
- .NET面试题系列[1] - .NET框架基础知识(1)
很明显,CLS是CTS的一个子集,而且是最小的子集. - 张子阳 .NET框架基础知识(1) 参考资料: http://www.tracefact.net/CLR-and-Framework/DotN ...
- RabbitMQ基础知识
RabbitMQ基础知识 一.背景 RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现.AMQP 的出现其实也是应了广大人民群众的需求,虽然 ...
- Java基础知识(壹)
写在前面的话 这篇博客,是很早之前自己的学习Java基础知识的,所记录的内容,仅仅是当时学习的一个总结随笔.现在分享出来,希望能帮助大家,如有不足的,希望大家支出. 后续会继续分享基础知识手记.希望能 ...
随机推荐
- Feign报错'xx.FeignClientSpecification', defined in null, could not be registered.
解决: 在application.yml中配置: spring: main: allow-bean-definition-overriding: true 参考:https://blog.csdn.n ...
- [转]理解Linux的性能
来源:http://www.linuxfly.org/post/114/ [转]理解Linux的性能 项目中常遇到需要对目前运行的系统进行效率分析,或碰到客户咨询如何优化系统的效率问题.更 ...
- Android笔记(十六) 简易计算器
实现功能: 简单计算器 布局及美化 采用LinearLayout嵌套LinearLayout实现布局. 要求 1. 按钮所有文字居于右下角 2. 按钮为白色,点击变成橘色 3. 显示屏文字居右显示并且 ...
- mysql的2种备份mysqldump 和 Xtrabackup
mysqldump备份方式 备份 mysqldump -uroot -p 数据库名 > 备份的文件名 恢复(先关闭数据库) mysql -uroot -p 数据库名 < 备份的文件名 Xt ...
- Python标准库3.4.3-webbrowser-21.1
21.1. webbrowser — Convenient Web-browser controller Source code: Lib/webbrowser.py 翻译:Z.F. The web ...
- 利用shell命令分析服务器日志
在没有专业日志分析系统的情况下,我们有时需要对日志进行简单的分析,下面列出一些常用的shell命令分析日志的方法,一定要收藏 1.查看有多少个ip访问 awk '{print $1}' log_f ...
- 软件测试_Loadrunner_性能测试_脚本优化_关联_手动关联
在写文章之前写一下自己的心路历程,录制脚本主要是上传图片并返回查询结果的过程.录制完脚本后发现函数中URl地址中有图片ID后台随机生成的32位随机数,并且每次上传图片id都会变化.我就上网搜索了一些解 ...
- linux个人常用命令【持续更新】
netstat -tnl 查看网络相关的端口情况 ps -A 查看所有进程的情况 cat /proc/cpuinfo| grep "physical id"| sort| uniq ...
- 2星|项立刚《5G时代》:资料堆砌和一些假想设想,信息浓度太低
“ 这是一本关于5G的书,但着眼点不是要说清楚5G的技术,因为解读5G技术的图书已经有很多,我自己也不是技术专家.本书是希望探讨在一个全新的网络体系下产业的发展与改变,以及5G对社会与经济的影响.P6 ...
- python easygui用法
一个简单的例子 在 EasyGui 中,所有的 GUI 互动均是通过简单的函数调用,下边一个简单的例子告诉你 EasyGui 确实很 Easy! import easygui as g import ...