中国软件企业的CMM评估,一开始就充满了浮躁、做秀和功利的气息。整个CMM评估的过程,我们看到的是好大喜功的政府行业主管部门、一贯爱凑热闹的新闻媒体、有赚白不赚的中介机构、证书随身带的主任评估师和愿意花钱买吆喝的软件企业。CMM评估的这种浓厚的功利性,使得“Gaming the Assessment”成为软件企业上上下下的共识和“不宣之秘”。希望本文对国内软件业界正确对待CMM起到应有作用,不要像某些软件企业一样找个“证书随身带”、“一手交钱,一手交证”的主任评估师。毕竟,提高企业的核心竞争力是最重要的。
对大多数国内软件企业来说,CMM的实施还处于起步阶段,准备实施CMM2级的企业占绝大多数,因此,分析CMM2级实施过程中的问题,将有助于这些企业尽快找到适合本企业的实施方式。
CMM是Capability Maturity Model for Software的简称,中文叫“软件能力成熟度模型”,是对组织软件过程能力的描述。CMM的核心是把软件开发视为一个过程,并根据这一原则对软件开发和维护进行过程监控和研究,以使其更加科学化、标准化,使企业能够更好的实现商业目标。它侧重于软件过程开发的管理及软件工程能力的改进与评估,因此CMM被用作评价软件承包商能力并帮助组织改善软件过程质量,是目前国际上最流行、最实用的一种软件生产过程标准,成为当今企业从事规模软件生产不可缺少的一项内容。
这里很类似6Sigma里面的VOC到CTQ的转化过程。项目质量和过程性能目标不是凭空产生的,而来源于具体的商业目标,客户需求,组织目标等。如果根据组织和商业目标转化为项目的质量和过程性能目标,这就涉及到两个问题,一个是要确定出需要定义哪些质量和过程性能目标,一个是要确定出这些目标和优先级和权重。最适宜的工具SP1.1里面已经谈到就是采用QFD质量功能分解。
软件是将思想用某中形式表达出来的过程,它涉及的多是无形的东西,既看不到质,也看不到量,从而使项目管理的难度极大。软件开发是耗费资金的项目,但到底投入多少,能达到什么样的地步?都是未知数,从而使得其投资风险系数较大。
郑人杰教授是国内CMM领域的权威专家,他近日在赛柏公司举办的有关CMM研讨会上,针对目前软件企业的CMM热,提醒企业实施CMM不要一窝风,一定要根据自己的实际情况,从解决软件过程问题的需求出发。他同时指出,并不是任何企业都有必要实施CMM。 什么企业适合全面实施CMM?
许多软件企业在实施CMM过程中,都投入大量的人力、物力,公司领导更是亲自督阵,制定了各种奖惩制度,按理说,CMM实施应该是很顺利的,但在实际实施过程中还会出现各种问题。下面是结合公司CMM实施过程中的情况总结出的几个常见问题。
CMMI的全称为:Capability Maturity Model Integration,即能力成熟度模型集成。自从1994年SEI正式发布软件CMM以来,相继又开发出了系统工程、软件采购、人力资源管理以及集成产品和过程开发方面的多个能力成熟度模型。虽然这些模型在许多组织都得到了良好的应用,但对于一些大型软件企业来说,可能会出现需要同时采用多种模型来改进自己多方面过程能力的情况。
在国内,不少做过几年程序员,被同事、圈内的朋友公认为技术水平不错的人,在考虑自身职业发展的时候,可能会想当然的认为:“我可以做项目经理了,感觉做个项目经理也没啥特别难的”。但如果你真的有机会,去尝试带一个团队,哪怕是只有几个人的一个小TEAM的时候,你就会发现,你必须面对一系列的问题和麻烦,而这些事情的处理结果,基本上和个人技术水平无关。
CMMI的证书成了一个敲门砖,没有这个证书难以承担国外的项目,没有CMMI的证书就难以在国内一些项目的竞标中获胜,也无法获得政府的补助,于是很多公司都选择了要在短时间内获得CMMI证书。证书只是过程改进的附属物,而过程改进的实效才是其真正的价值。为了尽快拿到证书,企业往往忽略了实效,从形式上满足了模型的要求,但是从实质上却差的很远。
评估实践证明:在进行CMMI评估之前,制定一个正确的评估计划并将其文档化,确保有一个富有经验的、受过培训且具有适当资格的小组能被用来评估,为执行评估过程做准备,是十分必要的。
当前许多组织在实施CMM?模型时所面临的挑战是如何进行快速实施,他们最关心的问题是怎样在最短的时间内达到CMM2级水平。许多企业发出了这们的疑问:我们公司能在一年或更短的时间内完成CMM实施吗?
虽然近年来,商业信息化推动了我国商业企业的管理进步,提高了全行业的科技素质,然而,由于种种原因,商业信息化的成功项目所占比例并不太高,一个突出的问题是软件系统/产品的研发周期长、质量低、成本高、开发进度难以控制、系统修改与维护困难等。
做软件的人经常喜欢将软件开发活动比喻为建筑施工活动,同样以项目为核心,同样要设置项目经理,同样要了解用户需求,同样要做框架设计、同样要做详细设计、同样要进行具体的工程实现、同样要交付验收等,诸如此类,这两个行业在实施方面实在有着太多的相似之处。
在这一节中,考虑的则是做产品,在当今国际软件行业当中,CMM模型得到了广泛、成功的应用,但模型只定义了做什么,并未定义该如何做。按传统的CMM推行中摸索、实施、评估、改进等过程费时费力并且成本高昂。导致很多中小公司虽有实施CMM之心,而无实施CMM之力。反观人类历史上,每一次工具的有效运用都能带来生产率质的飞跃。同样,在当前软件业也迫切地需要有一套行之有效的工具来改变这种现状。
在典型的软件开发项目中,软件测试工作量往往占软件开发总工作量的40%以上,测试成本也要占到了开发总成本的30%到50%。不久前,软件测试工程师又名列十大IT业最有发展前途的职业之中。很显然,测试占据着软件开发过程中一个很重要的位置。