- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
CMMI和敏捷方法综合对比分析
CMMI和敏捷方法综合对比分析
摘要:随着软件市场竞争加剧,如何在短时间内低成本开发高质量的软件产品,日益受到软件企业重视。传统的过程改进方法大多是重量级的(如CMMI),中间过程过于繁琐。而作为一种新兴的轻型方法――敏捷方法开始备受关注。对重型方法的代表CMMI进行了介绍,引入敏捷方法,与之进行对比分析。通过分析发现,CMMI和敏捷方法并不冲突,两者的结合能够在软件过程改进中达到更好效果。阐述了二者结合应用方法。
关键词:CMMI;敏捷方法;过程改进
DOIDOI:10.11907/rjdk.1511479
中图分类号:TP301
文献标识码:A 文章编号:1672-7800(2016)004-0020-02
1CMMI模型
1.1CMMI起源
美国软件工程学会(SEI)在20世纪80年代启动了对软件承包商能力评估方法的研究,该项研究成果即软件成熟度模型(CMM)。为集成已开发出的众多模型,SEI又着手开发了一个新的集成能力模型―CMMI。与前者相比,CMMI赋予企业1-5的成熟度级别,充当过程改进的标尺,适应更广泛的工程领域。
1.2CMMI简介
CMMI模型内容包括过程域、目标、实践3部分。目标和实践均依赖于实践制度和机构的成熟度。对一个年轻机构而言,制度化意味着遵守所建立的计划和过程;而对于一个成熟而有先进过程的机构,制度化意味着使用统计和其它量化技术来控制过程。
CMMI级别依据目标是否满足和过程是否清晰,从未执行级到优化级划分为6级,且级别间的描述是递进的[1]。实施CMMI时,一般从第2级已执行级入手,通过管理,争取实现CMMI的最高级。
近年来,许多软件企业纷纷实施了CMMI管理模式。国内的东软、托普、华为等知名企业通过了CMMI的3级或4级评估。在美国,政府的工程项目大部分要求承包商具有一定的CMMI级别作为参与投标的资格,级别高的企业竞标优势明显。据SEI统计,用于软件项目上的CMMI投资,回报率在5至8倍之间。因此,CMMI对软件企业既意味着商机,也意味着利润。
1.3CMMI模型困境
CMMI模型强调管理控制,追求过程的可预测性和过程状态的可见性,这些特点导致CMMI将制作大量中间品,组织臃肿,办事低效,推行重型。由于过程中会建立大量文档,软件成本也大为提高。针对上述问题,迫切需要引入新的模型,敏捷方法应运而生。
2敏捷方法
2.1敏捷性发展
NagelRoger于1991年在《21stCenturyManufacturingEnterpriseStrategy》中首次提出敏捷性概念。“敏捷性是企业在不断变化和不可预测的竞争环境中发展壮大的一种能力[2]”。敏捷是动态地迎合变化的,制造企业可通过对技术、管理、劳动力的资源整合得到敏捷性[3]。
上世纪90年代中期,人们发现重型开发方法存在着官僚和形式化缺陷,很难应对软件开发中的“变化”问题。因此,人们提出了敏捷方法,其中最为常见的是增量迭代开发。这类方法的特征是强调灵活、阶段迭代、反馈和逐步逼近目标,它与传统重型方法的区别在于:
(1)敏捷方法是适应性的,而非预测性的。重型方法倾向于控制与计划性,一旦中间环节发生偏差,可能使过程失控。敏捷方法却恰恰相反,它欢迎变化,甚至为了变化而改变程序。
(2)敏捷方法强调以人为中心,提出软件开发应合乎人类本性,给开发者带来乐趣。
《敏捷软件开发宣言》的发布,第一次明确阐述了软件项目管理的敏捷思想。该宣言中的CAS(复杂自适应系统)理论认为,只有当主体运行在既稳定又不稳定的混沌边缘时,系统方能不断产生变异和新奇,这是软件系统获取进步的来源。
2.2敏捷方法概述
敏捷方法将开发任务分解成许多小的增量,进行最低限度的计划程式。每次迭代周期都包括了需求分析、设计、编写、单元测试、确认测试等完整的软件开发过程,从而最大限度地降低项目的总体风险。增量迭代开发过程如图1所示。
图1增量迭代式软件开发过程
敏捷团队一般是跨职能和自组织的,通常由5-9人组成,且都在一个开放的办公室里工作。每个敏捷团队都要有一名客户代表,他代表了利益相关者,并在开发过程中解答有关问题。团队成员要沟通,互相汇报团队进度。敏捷方法会应用持续集成、自动测试、单元测试、结对编程、代码重构等技术来提高软件质量和项目敏捷性。
2.3敏捷方法应用
传统观点认为敏捷方法仅适用于小型团队开发和非关键任务开发,但Jeffries(著名的极限编程开发员)表示,敏捷方法的实用性几乎不受限制。KenSchwaber,Scrum的创始人之一也指出,敏捷方法通过“scrumsofscrums”可以适应大型团队的开发[4]
原创力文档


文档评论(0)