媒体监测和推荐平台

特别报道

当前位置:首页 > 特别报道 > 详细内容

CMM实施过程探讨

文/上海中标软件有限公司质量管理部  潘 瑾

一. 引言

软件产业已被许多国家所重视并置于战略高度加以发展,而目前我国软件产业却仍然发展缓慢。由于规模和技术能力的限制,我国软件生产企业从事的仍然是手工作坊式及小公司式的软件生产模式,缺乏软件工程的概念,不少软件企业处于自生自灭的状态。在这种情况下,软件企业承担大型软件工程的能力相对较弱,在国际市场上基本处于不利的竞争地位。导致这种现象的产生有一些深层次的原因,因此迫切需要探索一条适合我国软件产业发展的道路。

解决该问题的对策可以是通过国际认证取得参与国际竞争的通行证,改善企业管理,提高竞争能力。CMM(Capability Maturity Model,软件能力成熟度模型)通过对软件组织软件能力的评价、软件生产过程的评估及改进,提高开发软件产品的能力和质量,实现软件生产工程化。和邻邦印度相比,我国软件业和印度出口额差别还很大,在2003-2004财政年度,印度软件和IT服务的出口额达到了约122亿美元,中国2003年度的软件出口,据官方统计是20亿美元,只有印度的六分之一。导致这种差距的原因很多,就企业自身管理而言,我们比印度差的更多。从行业自身角度来看,印度软件行业导入CMM模型是成功的重要因素。通过CMM模式的管理,印度大幅度提高了其软件开发能力及软件产品的质量,保证了向美国和欧洲软件出口的高速增长。与此相比,我国的软件开发整体水平只是印度10年前的水平,软件生产方式普遍是手工作坊的软件生产过程,处于有章不循和无章可循的混沌状态。因此实施CMM是软件企业加强自身管理、摆脱困境的必经之路,是软件业与国际接轨的重要举措。

二. 模型各级别实施体会

CMM的实施给我们带来了新的管理理念,原来不懂得如何管理项目,对于项目预算、质量管理也缺少一个行之有效的方法,因此在项目执行过程中对于进展情况,软件产品质量如何从未有人明确知道。在与外国企业合作进行软件项目开发时,不能完全在一个高度上进行沟通,经常没有数据支持导致不清楚如何设定项目周期,不明确工作如何分配会更加科学。如今是高科技的年代,处在这样的情况下,我们的软件企业应如何立足?

从一个软件项目来讲,管理、技术和人永远是三个关键成功因素,缺少任何一个,都将不能形成有利的三角支撑,从而不能有利的支持软件项目的成功。从目前的现状来看,我们缺少的不是人,也不是技术,而恰恰是管理,如何科学的管理,才能开发出成功的软件,是摆在软件产业面前一个需要思考的问题。

当前全世界通用的质量管理体系,实际在理念上都是相通的。无论是ISO9001,还是CMM,还是6-Sigma,从理论上讲,都是想通过控制过程的质量从而实现产品质量的控制。而在这几个体系当中,CMM主要是针对软件开发过程提出的,把软件能力成熟度分成了5个级别,每一个级别都是在下面一个级别的基础上增加了新的要求。CMM所说的1级,实际上把没有任何管理和控制的企业,均被看成处在该级别上。

CMM2级的实施实际就是要具备基本的项目管理活动,如对项目的整个过程进行策划、对项目的进展情况进行跟踪、控制软件开发过程中产生的工作产品的版本、控制软件过程从而保证产品的质量、对客户提出的需求进行控制,尤其是需求的变更等。如果需要把软件外包生产,还要对分包方进行控制。实际上CMM2级实施的启动,难点在于思想的转变,需要打破以前的开发行为,而用一种新的开发模式来替代。往往由于开发人员不愿轻易改变自己的习惯, CMM2级的实施需要在一定的强制下完成。在这个过程当中,每个项目都要进行策划,明确开发过程中需要做什么、谁来做、什么时候做,明确每个任务的时间周期和成本,明确项目开发过程中可能会存在哪些风险,并把这些都记录下来,形成整个开发团队都需要遵从的开发计划。项目的实施过程中,为了统计项目进展情况,每个开发人员每周都要上交自己的报表,汇报任务的完成情况。对于工作产品版本的控制,也从杂乱无章的状态中摆脱出来,工作产品能够得到完整的保存,并保证在某个工作产品产生了变化后,和它有关的工作产品也会相应的变化,从而使所有工作产品之间保证一致性,这样至少能避免由于客户需求频繁变更引起的最终产品与客户要求不一致的问题。

通过CMM2级的实施,项目至少知道了需要的人力,大约需要多长时间,知道项目开发需要按照计划的步骤要求按部就班的实施。但是,对于工程过程,没有太多的关注,整个开发过程仍然可能比较随意,每个开发环节没有严格把关,产生的工作产品放行条件比较宽松,因此还不能完全保证工作产品的质量。因此到了CMM3级,在2级的基础上增加了对工程过程的要求和验证的要求。实施CMM3级初期制定的开发过程体系文件,主要是按照软件工程的要求,侧重于软件需求分析、设计、实现及测试等环节,并要求在每个开发阶段产生的工作产品都要进行评审和测试,对于如何进行评审和测试同时也制定了相应的流程。通常在没有实施CMM之前也曾经开展评审活动,但是在按照制CMM3级的要求制定评审流程后发现,以前的评审工作可能是低效的,评审会议经常持续数小时,但没有发现很多问题,评审会议经常发生争执,因此效果不好。而高效的评审会应该首先进行策划,安排好时间和评审角色,每个评审人员均有各自的侧重点,在评审会召开之前,每个评审人员均应进行个人审查,而真正的评审会议只是汇报个人审查时发现的问题而不讨论问题的解决方案,对于问题如何解决可以在会后和相关人员进行讨论,从而保证评审会议的有效性,节约了大家的时间。加入工程开发过程要求的同时,为了使项目的开发过程能得到更有效的能力保证,在组织级增加了培训的需求,对不具备相应的能力的项目相关人员,应该首先进行培训,在掌握了需要的技能之后才能上岗,可谓“磨刀不误砍柴功”。此时,在组织级也为保障体系的顺利实施,成立了SEPG(Software Engineering Process Group,软件工程过程组)小组,主要侧重与体系文件的编写和过程改进工作,并规划整个组织的过程体系建设。

在CMM3实施过程中就要有意识地收集相应的数据,如规模、工作量、缺陷、进度等,为将来的活动建立基础。 CMM4级及以上也是建立在数据基础上,设定质量目标,逐步统计出组织级的基线数据,只有掌握了这些数据,才能使我们分析缺陷的发展趋势,定位问题;能否判断新技术、新方法给我们带来的好处。从客观的角度出发做出各种决策和判断而非主观臆断,才能使我们更准确的掌握事物的本质,确保做出各种结论不违背客观规律,从而进一步实现过程持续改进的目的。

在CMM实施的几年中,感触最深的是思想的转变。在不知不觉中,CMM的理念已经逐渐融入日常的开发活动。开发人员已经形成了良好的习惯,如每周提交个人周报、对工作产品进行评审、按照规范流程提交源代码等。

经过几年CMM的实施工作,虽然变化是巨大的,但在实施过程中仍然还有不和谐的因素。尤其是很多意见集中于CMM实施延长了开发时间,一方面增加了项目管理的人力成本,另一方面在开发过程中需要编写开发文档而需要花费工时成本。因此CMM的实施与市场要求之间还存在一定的矛盾。我们应该关注体系执行的如何适应项目的需要,如何在管理和市场要求之间进行协调。

三. CMM实施过程中应该注意的问题

1. 理论和实践相结合

CMM每个级别的要求都是用KPA(Key Process Area,关键过程域)的形式给出,每个级别会在原有级别的基础上,增加相应的KPA,每个KPA提出具体的目标和实践要求。CMM是从国外引入的理念,实际上是引入的一种思想。我们应该掌握其精神实质,然后从我们的实际情况出发,考虑如何与我们的实践相适应。但从目前的执行情况看来,在很多理念的理解上,仍有偏差,一方面没有完全理解CMM的要求,一方面完全照搬CMM的要求,缺少灵活性,从而导致执行过程中感觉僵硬。

2. 培训的重要性

在CMM实施过程中,为了使大家能够更好的理解和执行,需要进行大量的培训。往往在培训过程中,更多的侧重于理论,与实践结合的仍不充分。因此导致虽然进行了培训,但在实际执行的时候,还会发现有很多不理解的地方。培训活动也应该作为长期坚持的工作,采用普及性培训和专题培训相结合的方式。

3. 形神兼备

要想保证实施的充分有效,则不能只在表面做文章。要做到“形神兼备”。体系要求什么就做什么是不够的,还要考虑内容的充分性。但目前的实施过程,我们发现,在很多地方还不能保证其充分性的要求,如项目开发中的工程过程文档内容。这样做的危害是花费了一定的时间,但缺远远达不到应有的效果,最终会导致怨声载道,增加了工作量,却没有充分体会到实施的好处。

4. 尊重客观规律

CMM实施应该是一步一个脚印的工作。曾有一个形象的比喻,一个还没有学会走路的孩子,怎么可能学会跑步?CMM也是如此,在执行CMM2级时,就像一个刚刚学会走路的孩子,而3级的要求就向在走路的基础上,要求学会跑步。不同的级别要求是需要时间的,在这个时间段主要是使基础更加牢固,从而逐渐向更高的要求迈进。从企业实际执行时间的数据统计分析数据可以显示,对于每个级别需要实施的时间,大约需要14至18个月。因此我们不能不顾事实而确定不切合实际的目标,而导致基础工作不扎实。

5. 人员的配合

在CMM实施过程中,尤其是刚刚开始的阶段,人员的选择是非常重要的一项工作。接受CMM理念和容易合作的项目经理,负责的质量保证人员,都是CMM实施的关键成功因素。选择好关键人员,很容易通过以点带面的形式使模型实施过程顺利和平稳。对于这个理念的接受,只有通过时间的磨砺而逐步成为大家的行为准则,决不是一蹴而就的过程。

6. 度量活动的开展

度量是CMM过程实施当中的一个难点,其实并不是因为度量工作本身的困难,而是我们以往的经验对度量活动比较陌生,不懂得如何收集、分析数据来为我们服务。在实施CMM过程中应该尽早启动度量工作,不仅仅是为了更高级别的实施活动做准备,而是需要尽早建立这种意识并不断积累数据。从商业目标出发通过规范的度量元定义、收集和分析过程,尽早确定关注的关键成功因素和关键过程,从而获取宝贵的历史数据,为将来的决策分析工作打下坚实基础。

不管怎样,我们都应充分掌握CMM的精髓和实质,并把这些理论融于实践,提供有企业特色的过程体系要求。