【IT168 专稿】 目前,许多软件企业在开发管理上存在的问题是没有统一的规范标准,质量把控也不够理想。因此,许多企业的软件开发项目都要求承包商有一定的CMM级别或ISO9000认证作为参加投标的资格。在上周,我参加了一个华南地区的软件行业会议,会议主题是关于如何做好软件开发的质量管理。在会议上大家掀起了一股讨论的热潮,就是在软件开发中是选择CMM体系还是ISO9000质量体系?
什么是CMM和ISO质量管理体系?
(1)什么是软件过程质量管理?
在研讨会上,许多与会者一致的都认为目前我国软件企业遇到的最大困难既不是来自国家有关的产业政策,也不是来自市场的竞争,而是来自企业内部管理的不完善和不协调,有相当一部分软件企业的质量管理环节是相当的薄弱。因此,软件企业的当务之急应该是苦练内功,通过加强质量管理工作来规范企业内部行为。而要想高效率、高质量和低成本的开发软件,必须要改善软件生产过程这一核心问题。
软件过程是指软件生存周期所涉及的一系列相关过程。软件过程是研究如何将人员、技术和工具等组织起来,通过有效的管理手段,提高软件的生产效率和保证软件的产品质量。软件过程成熟是指一个特定软件过程被明确和有效地定义、管理、测量和控制的程度。由此诞生了软件过程的两个主要流派:美国软件工程研究所(SEI)开发的CMM软件成熟度模型和国际标准化组织(ISO)开发的ISO9000标准系列。它们两者都共同着眼于质量和过程管理,两者都为了解决同样的问题。但是它们的基础是不同的:ISO9000标准是确定一个质量体系的最少需求,而CMM模型强调持续过程改进。当然,这种观点有一定的主观性,因为一些国际标准团体认为如果深入地解读ISO9000,而不只是停留在表面的话,ISO9000也是为了解决持续过程改进的问题。
(2)什么是CMM软件成熟度模型?
CMM(Capability Maturity Model)是能力成熟度模型的缩写。CMM描述了一个有效的软件过程中的关键要素,讨论了不成熟的软件机构发展成为有规律的、成熟的软件机构的改进过程。CMM涉及对软件开发规划、软件过程工程化和对软件过程管理的实践活动。通过这些实践活动,以提高软件机构满足成本、进度、功能和质量要求的能力。CMM的核心是把软件开发视为一个过程,并根据这一原则对软件开发和维护进行过程监控和研究,以使其更加科学化、标准化。
CMM可分为五个等级:一级为初始级,二级为可重复级,三级为已定义级,四级为已管理级,五级为优化级。其中任何软件企业都可以认为是成熟度级别为一级的组织。换句话说,一级的企业在软件过程中是有很多问题,但随着成熟度级别的升高,企业软件过程的能力也会越来越强。目前,CMM模式已被公认为是当前最好的软件过程管理模式,它已成为业界事实上的软件过程的工业标准。但是需要提醒的是,并不是实施了CMM,软件项目的质量就一定有了保障。因为按照CMM思想进行管理与通过CMM认证并不能划上等号。
(3)什么ISO9000质量体系?
自从1987年ISO国际标准化组织公布ISO9000标准以来,ISO 9000标准已经成为全球最有影响力的质量管理和质量保证标准。ISO9000标准是建立在"所有工作都是通过过程来完成的"这样一个认识基础之上。在ISO 9000标准中,与软件企业关系最密切的是《ISO 9001 质量体系-设计、开发、生产、安装和服务的质量保证模式》和《ISO 9000-3 质量管理和质量保证标准第三部分:ISO 9001在计算机软件开发、供应、安装和维护中的指南》。还有如ISO9004-2是指导软件维护和服务的质量系统标准,它是指导和支持软件产品的维护。而ISO9004-4则是近年公布的很有用的附加标准,是用于改善软件质量的质量管理系统文件。
ISO 9000-3作为软件企业实施ISO 9001的指南,其主要思想是:软件的开发和维护有着一系列的任务。这些任务的顺利完成是需要各级管理层和开发人员的共同配合和一致协调的。需要指出的是,ISO 9000-3对软件企业的软件开发和维护活动起到的只是指导性和建议性的作用,不带有强制性。因此,一个软件企业在贯彻和执行ISO 9000-3的过程中,应该根据企业自身的基础和现状,有针对性地开展软件质量管理和质量保障活动。此外,ISO/IEC还制订了《信息技术-软件生存周期过程》,全面系统地描述了软件生存周期过程,是ISO 9000-3实施指南的进一步扩展。
ISO9000和CMM,谁更适合软件开发?
ISO9000 和 CMM 是国际上通用的软件质量评估和管理方法。二者有很多相似之处,它们的实施都可以改变软件开发的不规范、文档不齐、维护跟不上、质量漏洞多等弊病。因此,尽管ISO9000标准的一些要求在CMM中不存在,而CMM的一些要求在ISO9000标准中也不存在,但两者之间都受到类似的关系驱动,有着相似之处。它们的核心思想都涉及质量管理和过程管理。因此,往往会产生这样的问题:ISO9000和CMM,谁更适合软件开发?
(1)两者相通的联系
两者最大的相似点是都强调规范化和文档化的过程管理。在基本原理方面,ISO9000和CMM都十分关注软件产品质量和过程改进。尤其是ISO 9000:2000版标准增加持续改进、质量目标的量化等方面的要求后,在基本思路上和CMM更加接近。
它们的共同点都是认为:过程管理的核心是使过程状态可见并使过程可控。也就是说:如果组织还没有一个规范化的开发过程,则首要任务是对当前的开发过程进行分析、整理并文档化,制定出一个符合本组织实际开发过程的规范,并从制度上确保开发过程规范的执行。如果已经具备了相对规范的开发过程,则需要对这个开发过程的规范表现进行持续的评估,找出问题,然后进行补充修订。这就是我们通常所说的持续改进。