CMMI与敏捷开发的关系
CMMI回顾
在80年代早期,在SEI的资助下美国空军成立了一项研究来分析为什么许多软件合同都会超出工期和预算。他们的结论是:糟糕的过程。由此,产生了CMM&CMMI。能力成熟度模型CMMI是一个过程改进方法和模型,它为组织提供了实现高效的软件交付过程所必需的基本元素,关注通过切实改进过程域的成熟度,实现过程改进的目标。它可以用来指导一个项目、一个部门甚至整个组织的过程改进。CMMI能帮助我们整合以往各自为政的组织功能,建立过程改进的目标与优先级,指导我们进行质量改进,还提供了评价现有过程的参照点。
敏捷回顾
敏捷是一个高度协作的、演进的以及关注质量的软件开发方法,是一种允许快速业务变更的开发实践。敏捷的核心是敏捷的4个核心价值观和12条原则,外围则是满足不同团队需求的各种敏捷实践,敏捷的不同之处在于其更关注团队协作、关注质量、关注可工作的软件。敏捷来源于实践而不是理论。(CMMI认证)
在追求卓越的过程中,组织会尝试多种途经,采用不同的原则、方法及技术。一个对敏捷实践感兴趣的组织可能也会对PMI的OPM3、ISO或能力成熟度模型集成(CMMI)感兴趣,反之亦然,因为这些都是通向卓越的手段。CMMI与敏捷框架在很多方面能够和平共处,互相补充,甚至可能协同工作。
从本质上讲,
CMMI和Agile都是人们为了解决在软件生产过程中出现的质量低下、进度延迟、预算超支等问题,而产生的标准或过程改进的模型或方法实践,只是它们的关注点有所不同而已。CMMI和ISO关注为了实现组织软件生产目标,我们应该做什么?但却不关注如何做。而敏捷开发作为一个实践性方法,更关注怎么做。因此,在具体操作过程中,可以通过有效结合,能够使组织更快、更好地实现过程改进目标。(CMMI认证)
为了能够有效结合各种CMMI和敏捷开发,组织必须明确它们的区别和联系,以及每种方法的主要关注点。
如上表所示,
CMMI和敏捷开发的主要冲突来自于双方产生的环境、目标客户和团队文化要素,例如CMMI早期客户,主要关注大型项目、复杂系统、使命关键(Mission Critical)系统,而敏捷开发主要关注小项目、简单应用和灵活多变的系统;CMMI的假想市场和用户主要面向成熟市场,面向那些关注流程创新的企业,而敏捷开发主要关注在新兴市场和多变的市场环境;文化方面,CMMI强调流程和管理,而敏捷更强调高度信任的氛围中,被激励起来的个人之间的协作创新。
但在整体上,CMMI和敏捷开发能够很好地相互补充、相互支持。首先在关注点上CMMI关注组织级或企业级改进,关注回答项目应该做什么,而不是具体怎么做的方法,而敏捷开发则更关注项目级改进,关注项目具体怎么做的方法和最佳实践,这使双方在定位方面形成很好的相互补充的态势,一方面CMMI为敏捷提供组织级扩展的能力和必须的组织治理框架,便于组织级对敏捷最佳实践的推广和重用;另一方面,敏捷为CMMI提供了项目级的具体实践方法,确保团队在CMMI框架下能够快速响应,不断创新,持续交付价值。两者的有效结合,能够有效实现个人绩效向团队绩效、向组织绩效的转变过程。同时,也可以通过敏捷实践,规避CMMI实施过程中重文档、重流程的不良倾向,使CMMI实施时更加关注组织的实际价值、关注客户、关注创新。
文章来源东航信息部IT百分百