CMMI过程改善模型与软件开发
2014-08-30王烨东
王烨东
【摘 要】 随着我国从上世纪以来经济的高速发展,离岸软件开发行业也同样飞速的发展。由于地理文化的原因,对日外包从行业发展之初就占有较高的比例。但是随着近年来国际经济和形式的变化,越来越多的企业将目光转移到欧美,以平衡企业的发展方向。那么随着而来的是问题是如何摆脱以往小作坊式的开发模式并且提高项目管理效率,以此来增加新客户的信赖程度,能够更好的开拓欧美市场。那么这时就需要由美国知名大学和美国国防部共同开发研制的CMMI过程改善模型,将之来引入软件开发项目中,由此来帮助企业改善项目开发管理过程,让企业能够更好的得到发展。
【关键词】 CMMI 过程域 软件开发 外包
软件外包是一些发达国家的企业为了降低成本,提高自身核心领域的专注度而将部分非核心的软件项目通过外包的方式交付给人力资源成本相对较低的发展中国家,从而有效的降低企业的运营成本又能很好的满足自身的软件需求活动。
我国从上世纪九十年代初期开始介入这个行业领域以来,通过近二十多年的发展,已经有了长足的发展。其中软件外包产业发展比较成熟的地区有上海、深圳、大连等地。由于软件外包行业的性质所决定,所接受到的项目往往都是外国企业软件系统非核心的内容,由于技术含量较低从而导致没有任何技术竞争力和任何知识产权。
但随着日元的不断贬值和国际形势的发展,让因历史文化等原因对日软件出口占主导地位慢慢发生改变。据统计,从2012年以来,对欧美外包市场的增速达到年增长49%,超过对日外包的37%的增速。欧美的软件外包市场已经悄然成为我国企业开拓的新方向。
我们知道企业能够提供相应产品的质量保证是软件企业开拓离岸外包市场的敲门砖。比日本企业更注重软件项目管理能力的欧美企业,如何提高客户的信赖度和满意度,让能够从接手简单的软件开发及测试工作向参与设计承接及需求分析阶段介入,甚至能与承包商一起面对终端客户以获取项目,这些都是摆在我国外包企业面前的问题。
因此,诸如CMMI、ISO等欧美企业认可的国际专项认证,成为了企业研发能力和管理能力的标志。
什么是CMMI?
CMMI,即软件能力成熟度模型集成,由美国宾州匹兹堡卡耐基梅隆大学软件工程研究院于1986年开始开发,是卡耐基梅隆大学的服务标记。其主要的目的是帮助软件企业对软件开发工程过程进行有效的管理改进,增强自身的管理能力,从而能够更有效的开发出高品质的软件,以满足客户的需求。
一个系统或者产品的质量在很大程度上取决于开发与维护它的过程的质量,一个有效的过程将人员,工具和方法结合成一个有机的整体。人、技术、方法,即是过程。人员根据一种有效的方法使用相关技术便能够生产出高质量的产品。
一个完美的过程必须具有可用性的文档描述。这个过程描述是对一组活动的文档化表达,通过执行这些活动达成一个既定目标,该目标提供了一个过程的主要组件的操作定义。该文档包含完整精确并且可验证地详细描述了一个过程的需求设计和行为特征,同样确定这些规定是否得到满足的规程。不成熟的过程往往是由使用者和管理人员即兴创造,即使已经明确了一个过程,也没有得到严格地执行。在软件开发过程中,由于客户的需求和期望有时没有得到很好的理解,未能根据数据作出估算从而超出预算或者延期,最终常常导致为了赶进度而牺牲产品的功能和质量。相反成熟的过程必须按照已计划的过程开展工作活动,通过量化地理解和维护,能够持续及系统地改进。
CMMI的结构由五个成熟度等级以及与每个等级相关联的过程域组成。其中成熟度等级由初始级到管理级,通过不断的定义以及量化,最终到达持续优化级。而过程域指明一个领域内一组相关的活动,当这些活动全部完成时,就能够达到增强过程能力的一组目标。根据过程域的连续表达法,CMMI的过程能够分为过程管理、项目管理、工程、支持四大部分。分别包括有组织培训、风险管理、需求开发、配置管理等22个过程域。与过程域相对应则是特定目标。特定目标描述为满足一个过程域必须实施内容的特有属性,并将在评估中使用以帮助确定一个过程域是否得到满足。
在成熟度等级为1的时候,是没有任何过程域能到满足的。软件开发的过程通常是非正式和杂乱无章的,组织不能提供一个稳定的环境,项目的成功取决于组织中人的能力和英雄主义。
在成熟度等级为2的时候,软件开发过程中需求得到有效的管理,过程得到计划、执行、度量和控制,相关的关键组员的承诺得到建立,并在需要时能够修改。此时组织一般能够满足以下的过程域:需求管理、项目计划、项目监督与控制、供应商协议管理、度量与分析、过程与产品质量保证以及配置管理。
当一个组织的软件开发过程从2级提升到3级,当然过程必须比成熟度2级更加严格。项目使用的标准,过程描述和规程是从组织标准过程集裁剪得到的,以满足特定项目或组织单元的需求,并且使用对过程活动项目关系的理解和对过程、过程的工作产品、过程服务的质量,过程得到更加主动的管理。与之相关需要到达的过程域包括需求开发、技术方案、产品集成、验证、确认、组织过程中心、组织过程定义、集成项目管理、风险管理以及决策分析与决议。
成熟度3级和成熟度4级的关键区别在于过程绩效的可预测性。在成熟度4级中使用统计和其他量化方法控制过程绩效,而且过程绩效可以定量地得到预测。而在3级中过程只能定性地预测。度量和量化在成熟度等级4中是重中之重。组织需要建立质量和过程绩效的量化目标并作为管理过程的标准使用,量化目标以客户、最终用户、组织和过程实施者的需要为基础。以量化的术语理解质量和过程绩效,并在过程的整个生命周期中管理过程。质量和过程绩效度量都纳入到组织度量库中以支持将来做出有事实依据的决策。与成熟度4级所对应的过程域有组织过程绩效和量化项目管理两个过程域。
CMMI定义中最高等级5级中,过程关注与处理过程差异的一般诱因,并改变过程以改进过程绩效,从而实现已建立的量化的过程改进目标。基于对过程内在差异一般诱因的量化理解,过程得到持续地改进,通过改进和革新的技术改进持续地提高过程绩效,以此来建立组织过程改进的量化目标,不断地修改以反映变化的商业目标,并将其作为管理过程改进的准测。在这个等级中组织革新与部署以及诱因分析与决议都是必须满足的过程域。
当一个企业组织在日常的软件开发过程中,已经覆盖了上述22个过程域并且都能够从直接或者间接证据中满足所定义的目标时,便能够邀请如PIA等具备评审资质的咨询公司来对企业进行CMMI等级评估,最终有SEI机构颁发资质证书。
现在我们能够清楚的知道CMMI是过程改进的方法,是一种指南和路线图,并非是菜谱和设计图。整个过程改进从收集信息决定支持并确定策略到诊断当前的过程并识别要解决的问题到选择改进以商业需求为基础确立实施方式到实施所选的改进方案最终达到评价改进的效果和总结经验教训。其模型是循环而不断改进的过程。
国际知名项目管理专家Alistair Cockburn曾说过:我越是希望信任别人,就越容易忽视他们的缺点。有时候单纯信任别人非常重要,但更重要的是建立一个机制以确定在特定的前提下别人是否可以信任。
总之,到目前为止还没有定规出一种使用CMMI模型的最佳方式。CMMI模型的目标既不是对组织强制实行一系列实践活动,也不是作为证实一个人是否符合要求的标准来应用。只有正确使用CMMI才能根据组织的业务目标帮助我们确定组织内需要改革的领域,最终实现价值最大化。我们在软件开发过程中自然而然的能够做到可度量、可管理、自我优化,能够不断复制以往成功的经验。项目在不断执行过程中的先进经验和教训能够真正的固化到过程中,形成组织和项目的重要资产。
这就是CMMI对于软件开发的意思所在。
参考文献:
[1]CMMI+敏捷整合开发:更快改进性能的案例与实用技术.Paul E.McMahon(美),赵丽影,清华大学出版社.
[2]研发企业管理:思想、方法、流程和工具.林锐,彭韧,人民邮电出版社.
[3]适用于发展的能力成熟度整合模式(CMMI-DEV)1.2版.卡内基美隆大学软件工程学院.