本文分析了CMM到CMMI的各级映射,指出了CMM与CMMI的差异之所在,讨论了CMM升级到CMMI所需做的各项工作及过渡方法。对实施CMM的各级软件组织顺利升级到CMMI有一定的借鉴作用。
自2001年下半年以来,国内软件企业掀起了一股CMM/CMMI(以下简称CMMI)的热潮,一些稍微有点规模的企业,纷纷通过了CMMI的评估,据说“明显地改善了软件质量,控制了项目成本”。加上政府的政策推动和媒体的炒作,软件企业不管时机是否成熟,不管自身实力是否具备,纷纷把实施CMMI作为企业的一项战略决策,投入巨资,来推行CMMI。一年内竟然有50余家软件企业先后通过了CMMI各级别的评估,似乎有一夜之间“千树万树梨花开”之势,笔者对此甚感忧虑,认为目前中国企业实施CMMI,面临着五个关键问题。
国内越来越多的企业正在实施或准备实施CMMI,笔者综合分析多家企业的CMMI实施状况,总结出CMMI实施中呈现的四大病症及建议对策,供正在或准备实施CMMI的企业参考。
一个企业是由多个团队及个人组成的,组织级的过程改进必然需要团队及个人行为的改变,要开发高质量的软件就要求开发软件的每个工程师都能高质量地完成工作。个人软件过程(PSP)和团队软件过程(TSP)就是专门设计来使个人和团队的工作优化及规范化的,通过让个人和团队使用些预定义的标准流程来建立可测量的目标,跟踪目标的完成情况,从而提高质量,与CMMI相结合,从而构建高绩效的团队,优化整个组织的流程。
入世后,软件企业的国际化进程也随之加快,一些大型软件企业完成CMM认证的同时,也为相当多的中小软件企业带来了希望,但他们在实施CMM的过程中,特别是在向CMM2前进时往往存在很多困惑和疑问。本文特别侧重对处于这一过程的软件企业碰到的各种疑难问题进行答疑解惑。
一直以来,软件产品与软件过程的分析与改进是软件企业最为关注的事情之一。作为项目/产品的开发人员,在整个软件开发过程中,从需求分析到系统构架,到编码、单元测试、联合测试,再到最终发布使用,如何把握软件过程中的质量、进度控制,将开发过程的每一部分控制在可预算范围内,主管人员往往通过经验和对人员的了解进行一个定性的分析以及结论,这样的结果往往造成企业缺乏有效的统计数据,对软件过程进行定量的分析和统计。
CMM 是针对大型项目和企业制定的。小项目和中小企业由于受到相应条件的限制,如组织结构、角色和关系、过程模式定义等,生搬硬套 CMM 框架只能给自己带来沉重的负担。可取的做法是把 CMM 作为一个参考,从 CMM 评估体系中汲取适合于自身发展的要素,提高软件开发和管理水平。
CMM 是 英文 Capability Maturity Model for Software -- “ 软件能力成熟度模型 ” 缩写 SW-CMM 的 简称。
为保证软件开发的有序、高效、高质和可控,曾尝试过各种方法,从实施ISO-9000标准认证到实施软件能力成熟度模型(CMM)评估,但是收效似乎不大。CMM是国际上公认的、最成熟、最有效的一种提高软件工程化水平的方法和标准。CMM模型划分为5个级别,共计18个关键过程域、52个目标、300多个关键实践。
公司内所有的任务都可以是项目。在公司中,有很多的任务就是项目,大到整个公司的经营,小到组织一次活动或会议,有很多人就是“项目经理”,因为他们计划、协调、执行,并为结果负责。
CMMI模型最有争议的要算是它的两种表现方式了—阶段型表现方式和连续型表现方式。阶段型以自己独特的方式展现了自己的魅力。它的最主要的特点是转换组织的“思维方式”。阶段型表现方式在每提高一个成熟度级别时,组织都要经历一次文化的转变。
软件项目管理是针对软件开发进行的项目管理,它既有项目管理的共性,也有其特殊性。它的特殊性主要表现在软件项目的开发过程及其项目的最终产品--软件产品上。
中国大约有7000多家软件企业,平均人员在30人,对于中小企业而言有没有必要通过CMM评估?无论是大企业还是中小型企业,取得CMM认证不是软件过程改进的目的。只要企业有一定的规范,而且这套规范是适合企业的软件开发过程的,那么就不一定非要进行正式CMM的CBA-IPI评估。
随着越来越多软件企业的目光瞄向海外,CMM评估也成了时髦。某某软件企业通过了CMM几级评估,仿佛成了身份的象征。据不完全统计,2001年国内通过CMM评估的软件企业只有十几家,2002年猛增到30多家;与此同时,对CMM的批评声也不绝于耳。有人直言不讳的质疑:“CMM在中国已经有些变味,会不会重蹈ISO9000认证的覆辙?”
随着越来越多的企业把目光瞄向海外市场,CMM评估也逐渐得到众多企业的重视与认可。某某企业通过了CMM几级评估,仿佛成为了身份的象征,据不完全统计2001年国内通过CMM二级及以上评估的企业只有十几家,2002年猛增到几十家。一个比较热门的话题:通过CMM评估就等于拿到了软件出口的通行证。那么二者之间究竟是“=”还是“≠”呢?
CMM的每个成熟级别由关键过程区域(KPA)组成,每个KPA确定一组相关活动。为了有效地进行这些活动,需要在整个软件开发过程中引入相关工具,帮助软件企业或开发团队实施CMM。一般来说,实施CMM需要以下主要工具:软件开发过程框架、需求管理工具、面向对象的分析设计工具、配置管理工具、变更管理工具和软件测试工具。