发展中国的软件产业,提高我国信息产业特别是软件产业的标准化程度,一直是人们关注的一个问题。为此,无论是领导还是专家学者,对此问题大家都已经发表了许多很好的意见。但是我们觉得仍有一个问题尚未引起大家的足够重视,那就是如何提高软件生产过程的能力,及如何使软件生产过程本身标准化。过去我们往往只重视产品本身的标准化问题,却忽视了产品生产过程的标准化问题。
一、CMM成为发展软件产业的核心
软件生产能力成熟模型,即CMM(后更名为SW-CMM)模型就是目前国际上最流行也是最实用的一种软件生产过程标准,现已经得到了众多国家软件产业界的认可,成为当今从事规模型软件生产不可缺少的一项内容。
众所周知,如今我们正处在一个全球性竞争空前激烈的时代,其中信息系统对于各个企业以至企业集团的生存与发展都具有举足轻重的意义。这样一来,就对企业信息系统的开发提出了更加严格和苛刻的要求。例如要求所开发的信息系统更能满足企业战略决策的需要,其中包括缩短开发周期,提高开发效率,扩大实现发展战略的要素等。随之而来的是信息系统的多样化、复杂化,其中包括必须面对需求的多样化和复杂化,以及信息技术的迅速进步。所有这些都对信息系统的开发与管理提出了更高的要求。如何解决这些日益复杂的课题,结论只有一个,就是要实行软件开发生产组织的变革,实现软件开发的标准化,提高软件的生产效率,真正实现软件的工业化。所以,研究、讨论和实践CMM模型及其实现方法既十分必要,又合乎当今信息产业的发展潮流。
自70年代出现软件危机以来,学术界和企业界对软件工程环境、工具和技术的研究都倾注了大量的人力、财力和物力,多年来也取得了许多成果。但是不可否认的一个事实是软件开发与生产的效果却始终未如人意。以我国为例,近年来我国引进和自行开发的各种软件工具、开发环境等种类繁多,数量浩大,花费达到几十亿元。但由于各种原因,我国的软件开发特别是真正的生产能力依然很差,这显然是一个不争的事实。究其原因,一个不同于以往的概念逐渐被接受:一个企业的软件能力更取决于该企业的过程能力,特别是在软件开发和生产中的成熟度。一个业过程能力越是成熟,该企业的软件生产能力就越有保证。实际上技术或工具并不是第一位的。
二、CMM的核心内容
在CMM模型及其实践中,企业的过程能力被作为一项关键因素予以考虑。所谓过程能力,是指把企业从事软件开发和生产的过程本身透明化、规范化和运行的强制化。这样一来,就可以把软件开发及生产过程中成功或失败的经验教训变成今后可以借鉴和吸取的营养,大大加快软件生产的成熟程度提高。
为了加快软件企业成熟程度的提高,必须尽量利用已有的软件工程成果。在软件开发过程中,根据几十年软件工程的发展,一些关键的过程域(KPA)可以被识别出来,成为某些CMM模型方法中的衡量基准。利用过去软件工程发展的成果,侧重这些关键过程域的实施,将会有效地建立一个过程,加快软件企业成熟度的提升。
为了充分利用已往的软件工程成果,SW-CMM提供了一个基于过去所有软件工程成果的过程改善的框架。这个框架与软件生存周期无关,也与所采用的开发技术无关,根据这个框架开发企业内部具体的软件过程,可极大程度地提高企业按计划的时间和成本提交有质量保证的软件产品的能力。
三、CMM的使用
在软件开发与生产的过程中,是否采用CMM模型是一件至关重要的核心问题。一般而言,CMM模型根据过程能力逐渐成熟的概念,将CMM的实施分为了五级。从第二级起,每一级包含了不同的KPA,每个KPA都有明确的实施目标,并按公共属性类别定义相应的关键实施活动。以下是对这五个阶段的简要介绍:
(1)在企业中软件开发基本上处于早期的个人手工开发阶段,这个级别是起始级,没有什么特别要求,仅是一个进化起始点。
(2)初步形成软件开发与生产的规模化,按软件工程方式进行开发,并通过项目管理使部分结果成为可以重复使用的模块。
(3)在软件企业中,初步形成部门级的标准,并在部门内部进行培训。
(4)在软件企业中,把部门标准作为定量化管理的基础。
(5)在上述步骤的基础上,实现整个软件企业管理的最优化。第五级是进化的最高级。
从效果而言,在上述不同阶段,软件开发与生产的成熟程度给软件企业带来了完全不同的效果。从第一阶段到第五个阶段,软件开发与生产的计划精度越来越高,每单位工程的生产周期越来越短,每单位工程的成本越来越低。以Raytheon公司为例,该公司现有近400名软件开发人员。公司用了近五年的时间,将其成熟度从第一级提升到第三级,已经收到了明显的效果。为了提升到较高的级别,公司所花费的投资与五年来因成本降低所收到的效益之比为1∶8,直接生产效率提高了大约14倍。该公司所开发的产品在成熟度提升前每千条指令出错率约为0.31条,提升后仅为0.03条。
提高软件开发与生产的成熟度,可以使新技术的应用收到更好与更快的效果。这主要是因为基于CMM模型的软件成熟度实践要求尽量采用更加规范的开发标准和方法,使用更加科学和精确的度量方法,选择便于管理和使用的开发工具。所有这些,都造成了整个工程的可重构性、可分解性和最优化,从而进一步明确了整个项目中必要和不必要的工作,明确了整个项目的风险,以及各个阶段进行评估的指标与应急措施。此外CMM也不仅仅应用于软件开发组织内,它也可作为认证机构的认证工具和用户评测一个企业是否达到所要求的能力的依据。
四、CMM为我国发展软件产业提供一个机遇
根据美国卡内基·梅隆大学进行的调查研究报告,即使在美国真正达到后两个级别的软件企业也为数不多,所占比例不足5%,十分重视标准化的日本企业也不足10%。由此可见推行CMM任重而道远。另外,在这一具体问题上,目前我们与发达国家的差距还不算太大。这为我们在这一领域尽快赶上发达国家,并居于世界前列创造了一个机遇,为解决我国软件企业开发生产效率不高的老问题,进一步加快我国软件产业的发展找到了一个突破口。
由美国卡内基·梅隆大学软件工程研究所最先提出并取得研究成果的CMM模型理论及其应用,是从80年代中期开始的,90年代初正式发表了研究成果。目前这一成果已在北美、欧洲和日本等国家及地区得到了广泛应用,并成为事实上的软件过程改进的工业标准。
以我们的近邻日本和韩国为例,他们的若干大型信息技术骨干企业纷纷采纳了CMM模型及其相关标准。日本富士通公司已经根据CMM模型及其相关标准,自行发展了SDEM(Software Development Engineering Methodology)-90标准。根据ISO有关专家实际评测,该标准不仅完全符合ISO9000,而且不少方面还超过了有关国际标准。更重要的是,像SDEM--90之类的企业标准已经成为提高软件生产效率,组织形成大规模的专业化生产的捷径和必由之路。
据悉,一些印度公司也已通过SW-CMM5级认证,由此也可看出中国和印度软件产业的差距。笔者之所以向大家介绍有关CMM的概念和实践,主要是寄希望于我国的软件企业。我们由衷地希望我国的软件企业在国家的进一步扶植下,走规模化、标准化之路,抓住机遇,迎接挑战,尽早成为我国国民经济一个新的增长点,为我国信息产业的全面腾飞作出更大的贡献。