1995年,The Standish Group调查了全球352家软件组织的8000多个软件项目。调查结果表明:31%的项目在完成前被取消,浪费800多亿美元;53%的项目消耗了189%的预估成本,只有16%的小企业、9%的大企业按时交付了软件产品。
对2140个软件组织CMMI认证级别的调查结果
12年后,美国南加州大学的Barry Boehm教授对影响软件项目成功的主要风险因素进行调查,总共调查67人,这些人有平均27年软件企业软件、硬件、系统的工作经验。调查结果排出了影响软件项目成功的前十大风险,无一不和过程有关。
上述问题的存在,也严重制约着我国软件企业的国际竞争力的提升。同时,我国软件企业改进软件生产过程的效果并不理想。可以说,如果不解决过程的持续改进问题,我国的软件企业很难真正走向世界。
如何迈向高级别CMMI
高级别的过程能力意味组织可以在数据的基础上,定量控制所关注的过程属性,在过程稳定的基础上预测过程和过程产品的质量,并在统计管理的基础上解决引起过程波动的偶然因素,进行持续的过程改进。高成熟度的过程,需要在统计控制理论的基础上保证过程的稳定,并稳步提高过程的性能和能力。
目前在CMMI高级别的过程改进中,普遍存在以下误区:
1.以为做了很多度量,并经过很多人的评审,就达到了高级别。高级别过程改进的关键是做了度量正确的事情,并用正确的技术分析来解释这些度量的结果。所以我们必须等到有了足够准确的数据,才能尝试高级别的量化控制。
2.孤立量化的控制过程或者属性,而且不能对控制目标和结果做出合理的解释。度量或者量化控制都是管理的一种手段,而管理本身只是服务于组织的业务目标。所以,有些组织为度量而度量,为控制而控制。照本宣科地建立量化控制目标,一方面与组织的业务目标脱节,导致高层管理不能体会到过程改进的效果;另一方面使一些控制目标相互割裂孤立,不能形成有效的控制体系,无法对组织所关注的过程及其属性进行合理、全面的解释。
3.不能准确理解和建立过程性能模型。高成熟度级别的组织,由于关键过程已经稳定,所以可以在此基础上,建立过程和其下游过程相关属性的性能模型,以预测过程的下一步状态,进行合理的调整和更加准确的过程控制。性能模型应在统计分析技术的支持下建立。故成熟度越高的组织,其过程的可预测性就越好。
由此可见,实现高级别的过程改进,主要包括以下几个方面:
1.建立系统的过程数据库。这就要求期望冲击高级别过程改进的组织,必须认真做好CMMI3级的工作,建立组织内系统的过程数据库和资产库。我们有些已经实现CMMI3级的组织,过程数据散落在各个区域,缺乏通畅的渠道来支持数据的及时收集,导致数据的采信度低,度量分析也比较困难。
2.合理有效地建立过程性能基线,是实现高级别过程控制的重要基础。主要步骤如下:(1)确定过程量化目标:根据组织的业务目标,建立过程改进的目标和量化控制的过程及其属性目标。(2)选择数据构造数据样本:在目标确定后,收集活动执行的数据,构造数据样本。(3)度量数据样本,分析数据散布和波动的原因,改进并实时观测,确定改进的有效性,逐步达到期望的过程性能和能力。(4)确定过程稳定是否达到,从已观测分析的历史数据中,分析过程的相关总体统计量,建立过程性能基线,统计过程控制过程的稳定。
3.建立多层次、多维度的数据采集、分析和量化控制体系。CMMI4级的目的是统计控制过程的稳定,发现异常并及时纠正。所以当出现异常时,需要其下层和相关的数据支持。譬如项目数据异常时,我们需要分析其相关任务,甚至任务执行人的数据,才能发现真正的引发异常的原因。我们有很多的组织害怕异常,其原因一方面是对统计过程控制的意义缺乏正确的理解,另一方面就是没有足够的数据和正确的方法来分析异常的原因。事实上,虽然在统计控制原理中,异常是小概率事件,但对软件过程而言,由于其本身不是一个大批量生产的过程,异常其实是不可避免的,而且有些异常并非表示过程一定向着坏的方向发展。
对于CMMI5级的组织,更需要足够的相关数据,分析过程改进的机会,并在统计控制状态下进行改进。
CMMI5绝非终点
实现CMMI高级别的过程改进,是软件组织成熟的象征。但我们必须清醒地认识到,过程的改进必须一步一个脚印,循序渐进并且踏踏实实。否则,改进只是一纸证书,不可能给组织带来真正的回报,即便一时在竞标中获胜,也会因“内乱”而得不到真正的利益。建立畅通、有效的组织过程数据库,及时收集真实的项目和过程数据,并进行合理有效的度量分析,是高级别过程改进的基础。否则,高成熟度只是空中楼阁。
对于软件企业如何冲刺CMMI5级问题,笔者以为,冲刺意味着接近终点,CMMI5级绝非意味着过程改进的终点,而恰恰是组织可以在统计控制状态下,开始持续的过程改进。所以,希望本文可以对有意进行高级别改进的组织起到一点帮助。
不要曲解CMMI的本意
最近几年来软件外包在我国持续升温,全国很多软件园都以软件外包为主题,很多软件企业也把外包作为企业的主要利润增长点。
CMMI认证被认为是进入软件外包市场的敲门砖。为了拿到那张代表资格的CMMI证书,不少软件生产企业不惜数百万元的巨额投入。CMMI认证热潮可谓此起彼伏。这些企业把CMMI认证当作提升实力和走向世界的通行证。
但与CMMI认证热潮相对的是,有些软件企业的生产过程并没有得到真正改进。认证通过后,认证文档没有人看,CMMI模型对过程的要求没有人遵守,工期依然拖后,软件产品的质量问题仍然很严重。
这些企业都曲解了CMMI模型的本意。制定CMMI的根本目的是为了改进软件的生产过程,从而整体上提高组织的生产质量和效率。它不是软件企业走向世界的通行证,也不是企业实力的象征。如果企业不是以过程改进为目的进行CMMI认证,而把获得CMMI证书当作其终极目的,那么企业除了不能从根本上提升自身实力之外,还可能会因此误入歧途。
正如软件专家、UML之父Ivar Jacobson博士在访华期间提醒中国软件企业时所说:“要谨防CMMI陷阱。如果采用不良的软件过程,通过CMMI的级别越高,软件企业生产不合格软件的过程越有效率,而不是使企业开发出更好的软件。”