生产过程:制造业vs.软件业
一般来说,质量保证系统中提到的产品通常包括硬件、软件、流程性材料和服务。类似地,ISO 9000系列标准不少部分也表现了制造业在原材料采购、生产加工工艺、使用的量具以及产品的运输、储存、包装和交付等不同侧面的质量要求。因此,软件企业在建立质量体系的过程中必须认真分析自身与制造业生产活动的差别。由于软件开发与一般产品制造有显著的差别,因此必须注意软件过程的特点。为了表明制造业和软件业的差别,附图给出了两种产业活动的形象对比。从图中可以看出,在制造业中,生产活动占有不可忽视的地位,它所需要的成本投入、人员、场地等都是设计工作无法比拟的,而软件业恰恰相反。软件工程项目主要是软件开发,相当于制造业的产品设计;而软件业的生产是指软件开发完成以后将代码往各种介质上拷贝,这部分工作无论是技术含量还是投入的人力、物力都极为有限,特别是在批量生产的条件下,这种差别更为明显,主要表现在以下方面:
◆ 传统的制造业在得到产品后,必须在运输和仓储方面做出相应的安排,付出必要的代价。而对软件业来说,这些需求是微乎其微的,甚至可以忽略不计。
◆ 软件产品的功能度和复杂性要比制造业产品高得多,它在投入使用后,所能发挥的功效也是其他任何硬件产品无法比拟的。
由此可以看出,制造业或硬件的质量问题主要反映在生产和储运过程中,而软件产品的质量问题主要来自开发过程。
映射:从ISO 9001到CMM
表1是ISO 9001条款到CMM模型关键过程区域和关键实践映射的概述。“强相关性”列表示相关性较直接的关键过程区域和共同特征;“判断相关性”列表示在确定合理相关性时需要一定程度主观性理解的关键过程区域和共同特征。
虽然ISO 9001中的一些问题没有被CMM模型覆盖,二者之间的详细程度也有很大的差异,但二者之间的相关性还是很明显的。CMM与ISO 9001之间最大的不同体现在两方面:其一,CMM模型明确强调持续的过程改进,而ISO 9001只要求质量体系的最小保证;其二,CMM模型只关注软件,而ISO 9001适用于更大的范围。
表1 ISO 9001与CMM模型映射
ISO9001条款 | 强相关性 | 判断相关性 |
管理职责 | 履行的承诺 软件项目规划 软件项目追踪和监督 软件质量标准 |
履行的能力 实现矫正 软件质量管理 |
质量体系 | 实现矫正 软件项目规划 软件质量标准 软件产品工程 |
组织工程定义 |
合同评估 | 需求管理 软件项目规划 |
软件子合同管理 |
设计控制 | 软件项目规划 软件项目追踪和监督 软件配置管理 软件产品工程 |
软件质量管理 |
文档和数据控制 | 软件配置管理 软件产品工程 |
|
采购 | 软件子合同管理 | |
客户-供货产品的控制 | 软件子合同管理 | |
产品确认和追踪 | 软件配置管理 软件产品工程 |
|
工程控制 | 软件项目规划 软件质量帮助 软件产品工程 |
定量工程管理 技术改变管理 |
检查和测试 | 软件产品工程 伙伴审查 |
|
检查控制、度量和测试设备 | 软件产品工程 | |
检查和测试状态 | 软件配置管理 软件产品工程 |
|
不合格产品的控制 | 软件配置管理 软件产品工程 |
|
矫正和预防措施 | 软件质量保证 软件配置管理 |
缺陷预防 |
处理、储藏、包装、保存和分发 | 软件配置管理 软件产品工程 | |
质量数据控制 | 软件配置管理 软件产品工程、伙伴审查 |
|
内部质量审计 | 实现检查、软件质量保证 | |
培训 | 履行的能力、培训计划 | |
服务 | ||
统计技术 | 度量和分析 | 机构过程定义 定量过程管理 软件质量管理 |
两个文档之间的最大相似之处是它们的底线:“说你想做的,做你想说的。” ISO 9001的基本假设是:机构应该通过质量控制活动归档每个重要过程并检查每个重要过程。CMM模型也强调文档化的过程和文档化的设计。“按文档化的程序”和遵循“书面形式的机构政策”是CMM模型关键过程区域的特征。在更详细的层次上,ISO 9001的一些条款可以很容易地映射到与其相当的CMM实践。不过因为两个文档的结构不同,所以大多数相关性映射是多对多的方式。例如,ISO 9001的培训条款将同时映射到CMM模型中培训计划关键过程区域和所有关键过程区域中的培训熟悉实践。
结论
通过以上分析,我们可以得到以下结论:
1. ISO 9001和CMM既有区别又相互联系
尽管ISO 9001标准的一些要求在CMM中不存在,而CMM的一些要求在ISO 9001标准中也不存在,但不可否认的是,两者之间的关系非常密切。当然,两者之间的差别也很明显,例如, ISO 9001标准的要素4.7和4.15在CMM中没有细述,而4.19则是分散在CMM的各部分中。ISO 9001的一些要素可以在CMM中找到完全对应的部分,另外一些要素则是比较分散的对应。
两者的最大相似之处在于两者都强调:“该说的要说到,说到的要做到”。对每一个重要的过程应形成文件,包括指导书和说明,并检查交货质量水平。CMM强调持续改进,ISO 9001的1994版标准主要说明的是“合格质量体系的最低可接受水平”(ISO 9001 的2000版标准也增加了持续改进的内容)。
另外,1999年底,由美国质量协会(ASQ)和Motorola、Nokia、Bell South等100多家企业、机构共同制定的电信行业(包括电信软件开发企业)质量体系标准TL 9000正式发布,在处理已经取得CMM和ISO 9001认证的软件开发企业如何升级到TL 9000时,补充审核的要求有很大差异,这从一个侧面说明了它们之间的差别。但很明显,取得ISO 9001认证对于通过CMM评估是有益的,反之,通过CMM评估对于获得ISO 9001认证也是有帮助的。
2.取得ISO 9001认证并不意味着完全满足CMM某个等级的要求
表面上看,获得ISO 9001认证的企业应该具有CMM第3至第4级的水平,但事实上,有些获得CMM第1级的企业也获得了ISO 9001证书,原因是ISO 9001强调以顾客的要求为出发点,不同顾客要求的质量水平也不同,而且各个审核员的水平/解释也有差异。由此可以看出,取得ISO 9001认证所代表的质量管理和质量保证能力的高低与审核员对标准的理解及自身水平的高低有很大的关系,而这并不是ISO 9001标准本身所决定的。
ISO 9001标准只是质量管理体系的最低可接受准则,不能说已满足CMM的大部分要求,但有一点可以肯定:ISO 9001认证合格的企业至少能满足CMM第2级的大部分要求以及第3级的一部分要求。
3.通过CMM第2级(或第3级)评估并不代表满足ISO 9001的要求
CMM第2级的所有关键过程都涉及ISO 9001的要求,但都低于ISO 9001的要求。另外,一些CMM第1级的组织在满足了第2级和第3级的一些关键过程的要求后,也可以获得ISO 9001认证证书。一些CMM第2级或第3级的企业可能被认为符合ISO 9001的要求,但是,甚至一些通过了CMM第3级评估的企业也需另外满足ISO 9001的要素,才能符合ISO 9001的要求。
CMM是专门针对软件开发企业设计的,因此在针对性上比ISO 9001要好,但需要注意的是,CMM强调的是软件开发过程的管理,对于国内软件企业涉及较多的“系统集成”并没有考虑,如果单纯按照CMM的要求建立质量体系,则应该注意补充“系统集成”方面的内容。
本文未明确肯定CMM与ISO 9001相比哪个更好,因为一个体系的好坏是由很多方面决定的。对于一个软件开发企业来说,获得什么样的认证只是表面的,重要的是如何着眼于持续改进以更好地保证软件开发的质量、满足顾客的要求,从而获得竞争优势。