摘 要:CMM提供了一个评估软件开发过程管理改进的框架和工程能力的标准,并给出了软件过程不断进化的科学途径,是软件工程技术的一个突破性发展,其改进软件过程的目标取决于企业的商业目标和当前的技术水平。系统地介绍了产生CMM模型的来源、内容及对软件过程的改进,目的是进一步加深理解CMM框架及其对软件过程改进的指导,有效地达到软件过程持续改进的效果。
关键词:软件过程;成熟度;模型;CMM
一、引言
当前许多软件开发机构己将客户满意程度视为重要的追求目标,忽略了软件质量在软件产品开发中的重要性。因此,存在了几十年的软件危机问题并未得到彻底解决,软件项目超时或超出预算,处于混乱状态;软件作为逻辑产品,制造的过程基本是“设计”过程,一般的硬件生产质量控制方法不适用,根本不能体现新方法、新技术和新工具所带来的优势。
因此,软件界针对如何进行软件过程管理与改进,提出了各种各样的方案。目前,在软件过程技术研究领域主要有3个流派:CMU-SEI的CMM/PSP/TSP、ISO9001质量标准体系、ISO/IEC15504(SPICE)。三者各有特点,互为补充,本文重点研究CMM模型及对软件过程改进。
二、软件能力成熟度模型(CMM)的主要概念
软件能力成熟度模型(Capability Maturity Model for Software):是对软件组织在定义、实现、度量、控制和改进其软件过程的进程中各个发展阶段的描述。这个模型便于确定软件组织的现有过程能力和查找出软件质量及过程改进方面最关键的问题,从而为选择过程改进战略提供指南。
CMM引入上述概念是为了提高软件开发机构的软件过程能力,从而促进软件开发机构不断改进其软件开发能力,它所要模拟的对象是软件能力成熟度及其相关的实践行动,重点强调软件过程。因此,从某种意义上来说,CMM本身是一种学术理论,一切根据CMM所进行的活动都是对这种理论的尝试。
CMM描述了一个从不成熟到成熟的有效改进软件过程,它包括计划、工程和管理软件开发和维护的实践。这些关键实践提高了组织机构减少花费、时间进度及增强功能和产品质量的能力。
三、CMM总体结构
CMM由5个成熟等级组成。除第1级外,CMM的每个等级(除初始级外)都分解为3个层次加以定义。这3个层次是关键过程域、关键实践类和关键实践口每个成熟级由几个关键过程域构成,这几个关键过程域共同形成一种软件过程能力,而每个关键过程域由公共特性组成,公共特性详细说明了实现关键过程域目标的关键实践。每个关键过程域按5类关键实践类加以组织,并都有一些特定的目标,它们通过相应的关键实践类来实现这些目标,各关键实践类规定相应部门或有关责任者应实施的一些关键实践。当一个关键过程域的所有关键实践都按要求得到实施时,就能实现该关键过程域的目标。因此,软件能力成熟度模型的各个成熟度等级的设计就是首先要确定该成熟度等级所要解决的“主要矛盾”,即关键过程域及其目标,然后按照分类详细设计和描述各关键过程域的所有关键实践。
四、CMM对软件过程的改进
CMM提供了一个有力的软件过程改进框架(如图2所示),将软件过程改进的进化步骤组织成5个成熟等级,由低到高分别为初始级、可重复级、己定义级、定量管理级和优化级,为过程不断改进奠定了循序渐进的基础。每一个成熟度等级为连续改进提供一个台基。每个关键过程域由一系列稳定软件过程重要要素的目的构成。由于组织机构的建立和改进,因此它们自己进行开发和维护软件工作产品的软件过程,且通过5个不断进化的成熟级来规划和评定软件生产的历史与现状。
软件组织机构处于能力成熟度各等级的特征:
CMM- LEVEL 1(初始级):组织一般不能提供稳定的开发环境。缺乏健全的管理实践,管理是反应式的(类似消防队),计划不适当。
CMM- LEVEL 2(可重复级):组织已建立管理软件项目的方针和实施这些方针的规程。软件项目的有效管理过程已制度化,能重复在以前类似项目上的成功实践。
CMM- LEVEL 3(已定义级):组织的软件过程己标准化、文档化,这些过程被集成为一个有机的整体,称为组织的标准软件过程。组织中有专门负责软件过程的活动组。
CMM-LEVEL 4(定量管理级):组织对软件产品和过程都设置定量的质量目标;对所有项目都测量其生产率和质量,收集和分析从项目定义软件过程中得到的数据:软件过程均有妥善定义的度量。
CMM- LEVEL 5(优化级):整个组织关注过程的不断改进,识别出过程的弱点并预先予以加强;利用有关软件过程有效性数据,识别出最佳技术创新,应用到整个组织。
五、CMM主要用途及发展趋势
不同人员可从不同侧面加以运用,如下:①评估组用来识别组织中的强处和弱处;②评价组用来识别选择不同承包商的风险和监督合同;③评估方法开发者针对一些特定需要来开发其它基于CMM的评估方法;④高级管理者用来了解制定过程改进计划所必要的活动;⑤技术人员和过程改进组用来指导他们定义和改进软件过程。
与此同时,从CMM的实际应用中发现,纯粹的软件开发组织其实是不多的,较多的主要业务是开发各种类型的系统工程产品,其中包括软件工程和软件采办等业务。
结束语
CMM把软件开发视为一个过程,并根据这一原则对软件开发和维护进行过程监控和研究,以使其更加科学化、标准化,使企业能够更好地实现商业目标。它侧重于软件过程开发的管理及软件工程能力的改进与评估,因此CMM被用于评价软件承包商能力并帮助组织改善软件过程质量,是目前国际上最流行、最实用的一种软件生产过程标准,成为当今企业从事规模软件生产不可缺少的一项内容。
参考文献:
[1]何新贵、王纬,软件能力成熟度模型[M].北京:清华大学出版社
[2] Mark C Paulk . Effective CMM-based process improvement [M]. CMU/SEI,USA,1999.12-20.