李锡杰
摘要:文章对CMMI和敏捷的基本概念、管理思想、管理框架、基本内容、企业的应用情况等做了简单的介绍,重点介绍了当前热点的敏捷开发模式,为项目选用哪种方式提供了基本的信息。
中图分类号:TP3文献标识码:A文章编号:1672-3791(2012)04(a)-0000-00
1 CMMI
1.1 CMMI的基本概念和企业应用
CMMI(Capability Maturity Model Integration)即能力成熟度模型集成,CMMI认证是由美国软件工程学会(software engineering institute,简称SEI)制定的一套专门针对软件产品的质量管理和质量保证标准。
近年来,很多软件企业纷纷实施CMMI管理模式,不少企业如:东软,托普,华为等企业通过了三级或四级评估。
1.2 CMMI框架
CMMI模型是基于众多软件专家的实践经验,它把软件开发组织的能力成熟度分为5个可能的等级,4个过程类别及22个关键过程域(图一)。
所描述的5个成熟度等级中,每实现一次等级间的跨越,组织就致力于解决某一方面的问题。一个组织要达到某一个等级,必须满足该等级及其低等级的所有过程域。
1.3CMMI的应用
CMM/CMMI主要应用在两大方面:能力评估和过程改进。
1)能力评估
CMMI是基于政府评估软件承包商的软件能力发展而来的,有两种通用的评估方法:软件过程评估和软件能力评价。
软件过程评估:软件过程评估集中关注组织自身的软件过程,评估的成功取决于管理者和专业人员对组织软件过程改善的支持。
软件能力评价:软件能力评价集中关注识别在预算和进度要求范围内完成制造出高质量的软件产品的软件合同及相关风险。评价在审核的环境中进行,重点在于揭示组织实际执行软件过程的文档化的审核记录。
2)过程改进
软件过程改进是一个持续的、全员参与的过程。CMMI建立了一组有效地描述成熟软件组织特征的准则。该准则清晰地描述了软件过程的关键元素,并包括软件工程和管理方面的优秀实践。企业可以有选择地引用这些关键实践指导软件过程的开发和维护,以不断地改善组织软件过程,实现成本、进度、功能和产品质量等目标。
2 敏捷
2.1敏捷的概念和企业应用
敏捷开发(Agile development)是一种以人为核心、迭代、循序渐进的开发方法。在敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。
采用敏捷开发的企业:比如Google,IBM,爱立信,百度,腾讯,华为等。
2.2敏捷开发的价值观和12条原则:
敏捷的价值观:个人与交互重于开发过程与工具;可用的软件重于复杂的文档;寻求客户的合作重于对合同的谈判;对变化的响应重于始终遵循固定的计划。
敏捷的12条原则:
1)我们最优先要做的是通过尽早的、持续的交付有价值的软件来使客户满意;
2)即使到了开发的后期,也欢迎改变需求;
3)经常性的交付可以工作的软件,交付的间隔可以从几周到几个月,交付的时间间隔越短越好;
4)在整个项目开发期间,业务人员和开发人员必须天天都在一起工作;
5)围绕被激励起来的人个来构建项目。给他们提供所需要的环境和支持,并且信任他们能够完成工作;
6)在团队内部,最具有效果并且富有效率的传递信息的方法,就是面对面的交谈;
7)工作的软件是首要进度度量标准;
8)敏捷过程提可持续的开发速度;
9)不断地关注优秀的技能和好的设计会增强敏捷能力;
10)简单----使未完成的工作最大化的艺术----是根本的;
11)最好的构架、需求和设计出自与自组织的团队;
12)每隔一定时间,团队会在如何才能更有效地工作方面进行反省,然后相应地对自己的行为进行调整。
2.3敏捷实践
1)Test-Driven Development,测试驱动开发。它是敏捷开发的最重要的部分如果没有测试代码,就不能编写功能的实现代码。
2)Continuous Integration,持续集成:一次集成至少包括:获得所有源代码、编译源代码、运行所有测试,包括单元测试、功能测试等;确认编译和测试是否通过,发送报告。还包括代码分析、测试覆盖率分析等。
3)Refactoring,重构:在敏捷开发中,重构贯穿于整个开发流程,每一次开发者check in代码之前,都要对所写代码进行重构,让代码达到clean code that works。
4)Pair-Programming,结对编程:敏捷开发中,做任何事情都是Pair的,包括分析、写测试、写实现代码或者重构。
5)Stand up,站立会议:每天进行15-20分钟的会议。每个人都回答三个问题: 你昨天做了什么? 你今天要做什么?你遇到了哪些困难?
3结束语
CMMI是“重量级”的开发模式,强调“过程”的重要性,每个过程都有严格的输入和输出;敏捷强调团队和客户好合作及团队的自组织。在选用开发模式时可以根据公司的组织架构、环境背景及团队的情况,采取单一或组合开发模式。