CMMI与敏捷方法综合对比分析
代琳娜
【摘 要】摘 要:随着软件市场竞争加剧,如何在短时间内低成本开发高质量的软件产品,日益受到软件企业重视。传统的过程改进方法大多是重量级的(如CMMI),中间过程过于繁琐。而作为一种新兴的轻型方法——敏捷方法开始备受关注。对重型方法的代表CMMI进行了介绍,引入敏捷方法,与之进行对比分析。通过分析发现,CMMI和敏捷方法并不冲突,两者的结合能够在软件过程改进中达到更好效果。阐述了二者结合应用方法。 【期刊名称】软件导刊 【年(卷),期】2016(015)004 【总页数】2
【关键词】CMMI;敏捷方法;过程改进
1 CMMI模型
1.1 CMMI起源
美国软件工程学会(SEI)在20世纪80年代启动了对软件承包商能力评估方法的研究,该项研究成果即软件成熟度模型(CMM)。为集成已开发出的众多模型,SEI又着手开发了一个新的集成能力模型—CMMI。与前者相比,CMMI赋予企业1-5的成熟度级别,充当过程改进的标尺,适应更广泛的工程领域。 1.2 CMMI简介
CMMI模型内容包括过程域、目标、实践3部分。目标和实践均依赖于实践制度和机构的成熟度。对一个年轻机构而言,制度化意味着遵守所建立的计划和过程;而对于一个成熟而有先进过程的机构,制度化意味着使用统计和其它量
化技术来控制过程。
CMMI级别依据目标是否满足和过程是否清晰,从未执行级到优化级划分为6级,且级别间的描述是递进的[1]。实施CMMI时,一般从第2级已执行级入手,通过管理,争取实现CMMI的最高级。
近年来,许多软件企业纷纷实施了CMMI管理模式。国内的东软、托普、华为等知名企业通过了CMMI的3级或4级评估。在美国,政府的工程项目大部分要求承包商具有一定的CMMI级别作为参与投标的资格,级别高的企业竞标优势明显。据SEI统计,用于软件项目上的CMMI投资,回报率在5至8倍之间。因此,CMMI对软件企业既意味着商机,也意味着利润。 1.3 CMMI模型困境
CMMI模型强调管理控制,追求过程的可预测性和过程状态的可见性,这些特点导致CMMI将制作大量中间品,组织臃肿,办事低效,推行重型。由于过程中会建立大量文档,软件成本也大为提高。针对上述问题,迫切需要引入新的模型,敏捷方法应运而生。
2 敏捷方法
2.1 敏捷性发展 Nagel Roger
于
1991
年
在
《21st Century Manufacturing Enterprise Strategy》中首次提出敏捷性概念。“敏捷性是企业在不断变化和不可预测的竞争环境中发展壮大的一种能力[2]”。敏捷是动态地迎合变化的,制造企业可通过对技术、管理、劳动力的资源整合得到敏捷性[3]。
上世纪90年代中期,人们发现重型开发方法存在着官僚和形式化缺陷,很难
应对软件开发中的“变化”问题。因此,人们提出了敏捷方法,其中最为常见的是增量迭代开发。这类方法的特征是强调灵活、阶段迭代、反馈和逐步逼近目标,它与传统重型方法的区别在于:
(1)敏捷方法是适应性的,而非预测性的。重型方法倾向于控制与计划性,一旦中间环节发生偏差,可能使过程失控。敏捷方法却恰恰相反,它欢迎变化,甚至为了变化而改变程序。
(2)敏捷方法强调以人为中心,提出软件开发应合乎人类本性,给开发者带来乐趣。
《敏捷软件开发宣言》的发布,第一次明确阐述了软件项目管理的敏捷思想。该宣言中的CAS(复杂自适应系统)理论认为,只有当主体运行在既稳定又不稳定的混沌边缘时,系统方能不断产生变异和新奇,这是软件系统获取进步的来源。
2.2 敏捷方法概述
敏捷方法将开发任务分解成许多小的增量,进行最低限度的计划程式。每次迭代周期都包括了需求分析、设计、编写、单元测试、确认测试等完整的软件开发过程,从而最大限度地降低项目的总体风险。增量迭代开发过程如图1所示。 敏捷团队一般是跨职能和自组织的,通常由5-9人组成,且都在一个开放的办公室里工作。每个敏捷团队都要有一名客户代表,他代表了利益相关者,并在开发过程中解答有关问题。团队成员要沟通,互相汇报团队进度。敏捷方法会应用持续集成、自动测试、单元测试、结对编程、代码重构等技术来提高软件质量和项目敏捷性。 2.3 敏捷方法应用