“用友”、“金蝶”等企业在软件过程管理方面所取得的成绩,关键是由于领导层的重视和参与,致力于实质的内部过程改进。没有“认证”,他们同样会成功。
软件企业都希望能够生存与发展,都希望能建立过程管理与改进,以提高自身的能力,并不需要别人去迫。有人说,软件业推广ISO9000认证,应是以企业自愿为前提。但是,当相关的政策上有这么一些条文:“通过ISO9000体系认证的企业,优先...,优先...;政府优先采购通过ISO9000体系认证的企业的产品。”、“优先支持和推广通过质量认证企业的软件产品。”的时候,哪一个企业还可以“自愿”呢?从这么一些条文中,人们无法不得出这么一个结论:ISO9000体系认证,比实际的产品质量更重要!
笔者认为,要适当控制“认证”与“评级”的使用。只有在无法对最终产品的质量进行鉴定(例如,发出软件合同)的时候,才应用这类方法。
笔者建议,有关部门是否可以考虑成立一个软件产品质量鉴定系统,对上市的同类软件进行测试比较,评定分数,公布结果。测试人员可分为两类:专业工程师与产品用户。测试的项目可以各方预先商定。可从最简单的两点做起:1.说明书是否清晰。2.产品是否如实执行说明书中的各种功能。
举一个例子,硅谷这里有一间公司,专门作电路仿真器的评比。他们设计出了一系列的测试项目,用以比较各产品在不同平台上运行,对不同类型的电路进行仿真时的功能表现。他们的评比结果是很有权威的,成了用户选购产品的依据。而仿真器的制作厂家则不断努力改进产品,以期在下一次评比中有更好的表现。这间评比公司是附属于一个电子专业刊物的。他们向参加评比的厂家收取评比费用。我们可以用各种灵活的方式进行官办或民办的评比。
笔者使用的一个国产软件,在功能的实现上错误很多,自认为领先的核心技术竟带有违背一般常识的结果,甚至产品说明书与实际产品完全对不上号。借用一位国内同行的话:“简直不能相信这样的产品竞能够通过他们自己的质检关!”但我相信,这类公司是满有可能会花力气去通过“质量认证”的。
我们应该做的是,帮助企业认识实行过程管理与改进的重要性,向他们提供有关的知识与讯息,与他们一道解决遇到的困难,协助企业间交流经验,大力宣传企业由于实行过程管理与改进而取得的最终产品与用户服务质量及企业业绩的成果,以这些成果来进行竞争。有关的从业人员、专家学者与媒体在这些活动中可以大有作为,作出应有的贡献。
对在中国软件产业中应用CMM的一些建议
现在,让我们看看SW—CMM的如下三项用途:
1、用于软件过程的改进。(SPI,Software Process Improvement)
帮助软件企业对其软件过程的改变进行计划、发展以及实施。
2、用于软件过程评估。(SPA,Software Process Assessment)
在评估中,一组经过培训的软件专业人员确定出一个企业软件过程的状况,确定出该企业所面对的与软件过程有关的最迫切的所有问题,以及取得企业一级对软件过程改进的支持。(这项是为了实施上一项而进行的。)
3、软件能力评鉴。(SCE,Software Capabili Evaluation)
在能力评价中,一组经过培训的专业人员鉴别出合格的软件合同承包者;或者是检查监视正用于软件制作的软件过程的状况。
上述的第三项,“软件能力评鉴”本来并不是软件工程研究所创造出SW—CMM时的用途目标之一。在SW—CMM用于帮助一些商业公司成功地改进他们的软件过程之后,美国空军电子系统指挥部要求软件工程研究所开发出一个办法来用于评鉴软件合同承包者;因此,在软件过程改进(SPI)这个用途之外,SW—CMM增加了软件能力评鉴(SCE)这个新用途。
这里必须要注意区分“软件过程评估”与“软件能力评鉴”本质上的不同。“过程评估”是企业内部在进行“软件过程改进”时用于摸清目前情况和确定需改进的目标而进行的。而“能力评鉴”则由软件合同的发出者用于鉴别和挑选出合格的合同承包者。很自然地,企业的有关人员会采取截然不同(!)的态度与对策去进行这两种评审。我国软件产业还很薄弱,没有可能提供很多有能力的“能力评鉴员”去承担这种挑战性很强的“能力评鉴”工作。若企图要一下子推行大量的“能力评鉴”活动,评鉴结果的可靠性必然低。
在CMM的“软件过程评估”与“软件能力评鉴”活动中,都会用到一份称为“软件过程成熟度提问单”的问卷。评审人员首先用这个问卷了解一个企业的软件工程过程的基本情况,然后以此为根据作出如何进行一步的调查(对于“软件能力评鉴”来说,是作进一步的“取证”),例如,与不同岗位的工作人员作面谈,查阅文件,或抽检实际过程中的数据资料记录等。
然而,如果对这份“软件过程成熟度提问单”作出如实的回答的话,我们就可以取得一个企业的软件过程成熟度的轮廓。回答这份提问单,大约只须花一个小时,有兴趣的同行们不仿试一试,来一个非正式的“软件过程评估”。尝试回答“软件过程成熟度提问单”的一个更大的得益是,问卷以一种最自然的方法把你引入CMM的世界,消除了CMM的神秘感。你会想:“啊,大概就是这么一回事。”
同行们,CMM只不过是我们手中可选用和可加以改造的一件工具,它并不是一只要来控制我们的怪物,让我们发挥各自的聪明才智,充分地利用好它,并加以创新。(当然,如果我们自己不能很好地控制这件工具的话,如果使用的方法不正确的话,CMM确实可以变成一只要来控制我们的怪物。)
对于在中国软件产业中应用CMM,笔者初步有如下建议:
a.专注于软件工程过程改进(借助于“软件过程评估”),除非需要,不要搞软件能力评鉴,不要去追求什么“认证”,“评级”,“登记”与“注册”。
b.软件过程管理与改进的唯一目的是:按时,按预算地开发制造高质量的软件产品。(质量的其中一点是:产品要适应市场的需要。若不能做到这个,一切都是徒劳。)
c.把CMM和其他的模型与标准作为参考,而不是生搬硬套。运用自己的专业判断力。
d.按照企业自身的特点、要求与条件去制订软件过程和选择实行改进的部分。
e.软件过程的建立与改进要有短、中、长期的目标,有缓急之分。不要一下子什么都想达到。不要一下子动大手术。不要作赌博式的全盘投入。在选择先做什么的时候,可有两方面的考虑:“最薄弱的环节”、“最易做到而又有显著收效”。
f.千万不要一开始就把目标定得过高。不必一下子去满足某一能力成熟度等级的所有目标,可以试行某些关键过程领域的一部分关键实践活动。要逐步取得经验。
g.企业上层领导要首先理解建立软件过程管理和改进的重要,并亲自领导这件工作。要保证过程管理的人员配备。企业上层领导的持之以恒的参与是成功的先决条件。
h.专业开发人员要全力支持与参与过程管理和改进。
i.国家政府的政策制订者要听取对于“认证”的正反两面的意见。不要以为可以简单地用推行“认证”、“评级”的方法去提高软件工业的能力。尽量只进行必要的、有限的“认证”与“评级”去选择合同承包企业。并且,发出合同之后一定要进行工程监督。
j.国家在财政上协助企业进行软件过程改进。比如,付给外部咨询机构的费用可以考虑给予部分或全部抵税等。
k.企业外的咨询机构一定要对受咨询企业的“过程评估”结果(商业机密)对外保密。只有这样做,才能使企业在内部的“过程评估”中,坦诚地暴露软件过程中存在的各种问题。从而制定出真正对症下药的过程改进的对策。
l.一个 企业或组织远远不能单凭一点点对SW—CMM的认识就作出是否“全面”引进应用SW—CMM的决定。那是一个非常重要的决定。全面引进应用SW—CMM所涉及的范围非常广,并且要求人力、财力与设备资源的投入。企业必须在对SW—CMM及有关的一切知识有透彻的理解之后,才考虑是否全面引进应用SW—CMM和如何引进应用SW—CMM的问题。