中国电子技术标准化研究所 李韵琴
本文试图从大家所熟悉的ISO 9001标准入手,对ISO 9001、ISO900-3和CMM之间的区别和联系做个简单的分析,探讨一些大家感到困惑的问题,包括:
1)取得ISO 9000认证的组织大约相当于CMM的哪个等级?
2)取得CMM第2级(或第3级)的组织是否可以认为满足ISO 9001要求?
3)取得ISO 9001证书与取得CMM相应等级证书的企业,谁的质量管理/质量保证水平/能力更高?
一、背景
ISO 9000族国际标准是在总结了英国的国家标准基础之上产生的,因此,欧洲通过ISO 9000认证的企业数量最多,约占全世界的一半以上。受此影响,相当多的欧洲软件企业选择了ISO 9001认证。
CMM是由美国卡内基-梅隆大学的软件工程研究所(SEI)开发的软件成熟度模型,美国的软件企业更多的选择取得CMM等级证书。在形式上,CMM分为5个等级(第1级级别最低,第5级级别最高),与ISO 9000审核后只有“通过”和“不通过”两个结论相比,CMM是一个动态的过程,企业在取得低级别证书后,可根据高级别的要求确定下一步改进的方向。 在基本原理方面,ISO 9001和CMM都十分关注软件产品质量和过程改进。尤其是ISO 9000:2000版标准增加持续改进、质量目标的量化等方面的要求后,在基本思路上和CMM更加接近。
本文参考了Mark C. Paulk先生的文章,但观点不尽相同。
注:ISO 9001是软件企业开展质量体系认证依据的标准;
ISO 9000-3是国际标准化组织(ISO)制定的软件开发企业实施ISO 9001指南;
二、ISO 9000和CMM主要内容的对比
下面以ISO 9001为主线,列出了ISO 9001的要点及CMM的对应部分。
1) 要素4.1——管理职责
ISO 9001标准要求:组织应规定质量方针,形成文件并予以实施和保持; 对从事与质量有关的管理、执行和验证工作的人员规定其职责、权限和相互关系; 识别和提供验证资源被指派的管理者保证实施和保持质量大纲。
CMM第2级提出了质量方针和验证的职责,包括识别各类人员在项目中的职责,建立一支受过培训的软件质量保证小组和指派高级管理者监控软件质量保证(SQA)活动。
作为CMM的共同特征,CMM在高级管理人员和项目经理两个层次上识别管理职责,以监控软件项目,支持SQA审核,建立支持软件工程的组织结构和分配资源。
ISO 9001要求的质量目标(一种量化的、可检查的要求),与在CMM第4级提到的“量化的”质量方针是一致的
2) 要素4.2——质量体系
ISO 9001要求建立一个文件化的质量体系包括质量手册、质量计划、程序文件和作业指导书。
CMM第2级提出验证符合性和管理过程的质量体系活动,在软件开发计划中规定软件项目使用的具体程序和标准。CMM的验证实施共同特征明确要求进行审核以保证符合特定标准和程序。 CMM第3级要求组织必须规定软件工程任务,并持续实施,在全组织都必须规定软件过程资源,包括标准、程序和过程描述。 与ISO 9001相比,CMM特别强调组织支持和项目实施之间的关系。
3)要素4.3——合同评审
ISO 9001要求组织必须评审每一个合同以判断需求是否明确、组织是否有能力满足合同要求。
CMM第2级提出组织必须文件化顾客要求并予以评审,明确不恰当或模糊的要求。
CMM第2级也要求描述目的、工作陈述和软件开发计划以履行软件工程小组和高级管理者评审过的外部(合同)承诺。
4) 要素4.4——设计控制
ISO 9001要求组织建立控制和验证设计的程序,包括:策划设计和开发活动;规定组织上和技术上的接口;识别设计输入和设计输出;评审、验证和确认设计;控制设计更改
CMM 3级描述生存周期过程,包括需求分析、设计、编码和测试;第2级提出策划和跟踪所有项目活动,包括上述生存周期活动及配置管理。
ISO 9001要求必须进行设计评审,至于应如何进行设计评审,并没有提出具体要求,组织可根据具体情况,在一定范围内选择。与此不同的是,CMM第3级特别要求设计评审要采用同行评审的方式。ISO 9000-3关于设计评审的指南包含了CMM这一要求。
CMM 4级对设计过程的要求与ISO 9001相比更加正式和量化。
5) 要素4.5——文件和资料的控制
ISO 9001要求组织控制文件和资料的发放与更改。
CMM第2级提出要将对文件和资料的控制纳入配置管理,第3级特别要求对文件控制须实施并维持配置管理体系。在CMM的实施活动共同特征章节中,对不同的关键过程区域明确了哪些专门的程序文件、标准和其它文件可纳入配置管理。
ISO 9000-3提出应将文件和资料纳入配置管理。
6) 要素——4.6 采购
ISO 9001要求组织要确保采购的产品符合规定的要求,包括评价潜在的分承包方和验证采购产品。CMM第2级在顾客软件开发的要求中包括了对分承包方的评价和分承包方提供的软件进行接收测试等内容。
7) 要素——4.7顾客提供产品的控制
ISO 9001要求组织要验证、贮存和维护顾客提供的产品。ISO 9000-3在论述这个条款的要求时特别提到对顾客提供的市售软件的控制。CMM仅在第3级的子活动中提到采购软件,提出识别市售软件或可复用软件是策划的一部分。 市售软件和可复用软件整体来说是CMM的一大弱点。事实上,CMM在这点上不能充分覆盖ISO9001要求,特别是ISO9000-3的要求。尽管如此,CMM第2级中还是要求对分承包的软件进行接收测试。
8) 要素4.8——产品的标识和可追溯性
ISO9001要求组织能够在生产、安装和交付的所有阶段标识和追溯产品。
CMM主要在第2级的配置管理章节中覆盖了这个要求,在第3级阐述了软件工作产品之间的一致性和可追溯性需要。
ISO 9000-3指出在软件行业一种产品标识和可追溯的方法是配置管理,而且强调配置管理的两个目标:对产品的当前配置及产品达到需求的状态提供足够的可视性;保证参与产品工作的每一位成员在软件生存周期的任何阶段都能使用正确的和准确的信息。在这一点上,两者基本是一致的。
9) 要素4.9——过程控制
ISO 9001要求组织策划和控制其生产过程,包括在受控条件下按形成文件的指导书进行生产。当组织不能完全验证过程的结果时,须对过程进行连续的监控。
CMM第2级要求在软件开发计划中规定软件生产过程使用的特定程序和标准;第3级阐述了软件生产过程的定义、集成以及支持这些过程的工具要求;第4级阐述了过程控制的量化要求,并举统计过程控制(SPC)的例子说明。但对一个组织来说,证实满足这个条款要求的程度一般并不需要这样高。CMM的第5级更提出了在组织中转换新技术的要求,这与ISO 900-3中提到的“供方应改进这些工具和技术”是一致的。
ISO 9000-3提出这一要素适用于复制、发行和安装过程。
10)要素4.10——检验和试验:
ISO 9001要求组织在使用前对材料进行进货检验或验证并进行过程检验,组织还必须在最终产品发运前实施最终检验和试验并保存检验和试验记录。
CMM第3级阐述了测试和过程检验的要求。
ISO 9000-3对软件(系统)测试给出了指南。
11) 要素4.11——检验、测量和试验设备的控制
ISO 9001要求组织控制、校准和保持所有用于符合性证实的设备。当使用测试硬件或软件时必须在使用前进行检查并在规定的时间间隔内复检。
CMM在软件产品工程的测试活动章节对此进行了一般性的阐述。关于测试软件,在CMM实施能力共同特征章节中专门阐述了用于支持软件测试的工具。
12)要素4.12——检验和试验状态
ISO 9001要求组织保证产品在不同过程步骤中移动时须保持检验和试验状态的标识。
CMM第2级在问题报告和配置状态、第3级在测试活动中阐述了这个条款的要求。
13)要素4.13——不合格品的控制
ISO 9001要求组织控制不合格(不满足规定要求的)产品以预防非预期的使用或安装。 ISO900-3在设计控制、检验和试验(测试和确认)、过程控制(复制、交付和安装)和产品的标识和可追溯性(配置管理)等条款中对这个要求作了进一步的阐述。
CMM并没有专门对不合格产品进行阐述。CMM第2级要求保持那些包含已知缺陷但目前尚未修正的配置项的状态,第3级的设计、实施、测试和确认中均对此作了阐述。
14)要素4.14——纠正和预防措施
ISO 9001要求组织确定不合格产生的原因。纠正措施要求消除不合格产生的实际原因,预防措施要求消除产生潜在不合格的原因。
CMM第2级的问题报告,及其后对基线工作产品的受控维护进行跟踪、关键过程区域(KPA)的软件质量保证部分与此内容相对应。 CMM第5级关键过程区域(KPA)的很多部分也包含了这一内容,例如,防错。
15)要素4.15——搬运、贮存、包装、防护和交付
ISO 9001要求建立并保持搬运、贮存、包装、防护和交付的形成文件的程序。ISO9000-3展开为对软件产品的复制、备份、交付和安装的控制。
CMM并没有覆盖复制、交付和安装的要求。它在第2级中阐述了软件产品的生成和发行,在第3级中规定了接收测试的要求。但是CMM没有阐述关于产品交付和安装的要求。
16) 要素4.16——质量记录的控制
ISO 9001要求组织收集和保存质量记录。
CMM在实施活动共同特征章节中所规定的所有关键过程区域(KPA)都涉及质量记录的保存要求。第2级的问题报告、第3级的测试和同行评审活动都对应这一条款的要求。
17) 要素4.17——内部质量审核
ISO 9001要求组织策划和实施内部质量审核。审核的结果提交管理评审,并应针对不符合采取纠正措施。
CMM第2级阐述了审核过程。在验证实施共同特征中明确提出:审核活动是为了确保符合特定标准和程序的要求。
18)要素4.18——培训
ISO 9001要求组织确定培训需求,并提供相应的培训且保留培训记录。
CMM的实施能力共同特征中明确了特殊培训需求。它阐述了通用培训基础结构,包括保存培训记录的要求。
19)要素4.19——服务
ISO 9001要求:当服务是规定要求时,组织应实施、验证和报告服务活动。ISO9000-3则把对维护的控制要求归于本要素。
CMM并没有单独论述软件维护,而是把维护贯穿于整个CMM过程中。
20)要素4.20——统计技术
ISO 9001要求组织明确合适的统计技术,并用它们来验证过程能力和产品特性的可接受性。
CMM把产品特性纳入“执行活动”共同特征章节,作为“测量和分析”共同特征的组成部分。
CMM第2级要求建立项目级的数据库,第3级要求建立全组织范围内的过程和产品数据库,第4级要求组织进行统计过程控制,如使用排列图分析。
下表是ISO 9001要素涉及到的CMM级别的对应表,在具体的内容上它们并不是一一对应,有的虽然涉及到了,但在要求的程度上也有差别,本表只是说明了它们之间的关系。
ISO 9001要素 本文中涉及的CMM级别
第2级 第3级 第4级 第5级 共同特征
4.1 管理职责 √ √ √
4.2 质量体系 √ √ √
4.3 合同评审 √
4.4 设计控制 √ √ √
4.5 文件和资料控制 √ √ √
4.6 采购 √
4.7 顾客提供产品的控制 √ √
4.8 产品标识和可追溯性 √ √
4.9 过程控制 √ √ √ √
4.10 检验和试验 √ √
4.11 检验、测量和试验设备的
控制√
4.12 检验和试验状态 √ √
4.13 不合格品控制 √ √
4.14 纠正和预防措施 √ √
4.15 搬运、包装、贮存、防护和交付 √ √
4.16 质量记录的控制 √ √ √
4.17 内部质量审核 √ √
4.18 培训 √
4.19 服务 √
4.20 统计技术 √ √ √ √
三、结论
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的要求,但都低于ISO9001的要求。另外,一些CMM第1级的组织在满足了第2级和第3级的一些关键过程的要求后,也可以获得ISO 9001认证证书.一些CMM第2级或第3级的企业可能被认为符合ISO 9001的要求,但是,甚至一些第3级企业也需另外满足ISO9001的要素4.15的搬运和交付要求以及补充对市售软件和可复用软件的控制。当然,尽管CMM没有完全满足ISO 9001标准的一些特定要求,但包含了大部分的要求。
不可否认,CMM是专门针对软件开发企业设计的,因此在针对性上比ISO 9001要好。ISO已经意识到这个问题,针对软件开发企业应用ISO 9001提供了指南标准(ISO 9000-3),预计在2000年底发布的ISO 9000:2000也考虑了软件企业的特点。 需要特别说明的是,CMM强调的是软件开发过程的管理,对于国内软件企业涉及较多的“系统集成”并没有考虑,如果单纯按照CMM的要求建立质量体系应该注意补充“系统集成”方面的内容。
四、结束语
本文并没有回答CMM和ISO 9001谁更好,也不想回答这个问题,一个体系的好坏是由很多方面决定的。上面仅仅反应了作者对这两个体系的一些看法,不免带有一些主观和片面。但是,对于一个软件开发企业来说,获得什么样的认证证书只是表面的,重要的是如何着眼于持续改进以更好的保证软件开发的质量、满足顾客的要求,从而获得竞争优势,这是每一个软件开发企业应该认真考虑的问题。