能力成熟度集成模型 (Capability Maturity Model Integration,CMMI)是由美国卡耐基·梅隆大学的软件工程研究所)组织开发于2002年发布的一种规范、实用的途径来管理软件过程的模型。CMMI通过指导软件开发人员的活动来改进软件过程,以达到软件过程可复用性、可定量管理、可有效控制的目的。
软件配置管理 ( Software Configuration Management,SCM )是CMMI可重复级的一个关键过程域( Key Process Area, KPA),其目的是在整个项目的软件生命周期中,保持软件产品的完整性和可追踪性,这包含了对改变的控制和所有能影响到改变的软件因素的管理。
SCM是CMMI中的一个基础构件,在这个KPA中包含了业界普遍认可的、行之有效的最佳实践,然而,在该模型中,并没有给予如何实施配置管理的指导,只告诉实施人员在配置管理过程中应该做什么以及一些简单的方法。这给采用该模型进行软件过程改进、实施配置管理的组织带来了一定的难度。
为实现SCM的工作目标,泛微软件实施部提出了配置管理实施法,根据项目策划SCM工作,明确SCM的具体工作如何实施。在配置管理活动中,定义了若干个子过程:制定配置管理计划、建立配置管理环境、标识配置项、版本控制、变更控制等。通过这些子过程的实现来达到配置实施的目的。下面分别介绍:
一、制定配置管理计划
其目的是为了得到一份配置管理计划表,说明配置管理的各阶段及相应的里程碑、配置项的确定、配置控制、配置状态纪录、配置审核以及相应的接口管理活动。具体内容包括项目中将要进行的SCM活动,文档标识的参考规范,时间安排,相关资源,职责分配,将要设计的每个SCI的定义,SCI变更的影响范围。
在实施配置管理的过程中,由SCM组与项目经理一起制定SCM计划。要将制定配置管理计划的任务分配到指定的人员,要确保负责制定配置管理计划的人员在目标、规程和方法等内容方面接受培训,同时要确保所有受影响的部门或者个人都要参与评审配置管理计划。
二、创建配置管理环境
1、设置软件配置组织结构
SCM过程实施必须有一个独立的机构,如SCM组。配置管理组由配置管理专职人员组成,目前主要由项目实施经理、配置管理员、系统分析员构成。
2、建立SCM文件体系
SCM实施文件体系包括:第1层的SCM方针政策,描述SCM的目标、方法、途径,由项目实施经理编制;第2层次的SCM过程,是整个文件体系的核心,将SCM标准的包括执行活动在内的所有共同特性的关键实践予以文件化和制度化,由项目实施经理组织人员编制;第3层次的配置管理规范和适合目标机构的配置管理基本章程,为具体执行SCM活动提供作业规范或模板,一般由从事这项具体工作的人员编制,由项目实施经理审核,经项目经理批准。下层的文件支持上层的文件,形成金字塔构架的文件体系。
3、提供SCM所需的资源
组织必须提供足够的资源以保证具备实施SCM的执行能力。在实施CMM过程中, SCM是最需要软件工具支撑的KPA。这些工具包括SCM软件、配置状态统计软件等。选择工具时须考虑SCM目标和过程,组织的规模、软件开发方式和特点。在购买了工具软件后,必须对操作人员进行上岗培训。
4、建立软件配置管理库系统
建立软件配置管理库系统可以对软件配置管理进行多级的控制,譬如在产品的开发周期中,不同的阶段有着不同力度的配置管理,随着产品不断成熟,控制力度也随之增强;提供对库中配置项的存储和修改的功能,支持在相关组之间和库中不同控制级间共享和传输配置项;支持生成软件配置管理的报告文档以及软件基线内容的报告文档。
三、标识配置项
确定置于配置管理下的配置项,确保已确定的每个配置项有唯一标识,用于跟踪和管理。 在选定配置项时应遵循下列准则之一:
1、两个或以上的组共同使用的工作产品;
2、可能因需求的差错或变更而做相应变化的工作产品;
3、彼此相关并且其中之一发生变更将会使得其他工作产品发生变更的工作产品;
4、对整个项目至关重要的工作产品。
四、版本控制
版本控制是SCM的核心,其目的是按照一定的规则保存配置项的所有版本,避免发生版本丢失或混淆等现象,保证产品的可追溯性。在本方法中,泛微软件实施部根据配置项的状态及其变迁,制定了版本标识规则与版本控制流程。
五、变更控制
变更控制是通过创建产品基线,在产品的整个生存周期中控制它的发布和变更。其目的是建立一套控制软件修改的机制,保证生产符合质量标准的软件和保证每个版本的软件包含所有必须的元素及工作在同一版本中的各元素可以正常工作的机制,以确定在变更控制过程中控制什么、如何控制、谁控制变更、何时接收变更、批准和检验。
六、配置状态统计
配置状态统计记录和报告管理SCI所需的信息,如基线和对基线的变更的实现状态。 以便于开发人员及时地了解或查阅配置项的当前状态和历史版本,避免因沟通不当而造成的软件开发版本的混乱。配置状态统计的输入数据包括SCI和变更请求的状态信息。输出数据被格式化为配置状态统计报告。配置状态统计一般包含如下形式的内容:记录、变更请求表、库详细目录表、数据分配表、发布表、文档记录表、报告等。
七、配置审核
配置审核主要作用是作为变更控制的补充手段,其目的是验证软件基准库内容的一致性和完整性。通常在每次产品发布之前 (即在里程碑任务评审后)实施配置审核。执行配置审核有以下活动:
1、组成审核小组,并明确各自的职责;
2、收集审核材料,确定审核内容和日程安排;
3、进行功能审核:检验软件基准库内容是否一致,如验证配置项的实际功能与软件需求规格说明一致,确认当前基线配置项的正确性,完整性,完备性;
4、进行物理审核:检验软件基准库内容是否完整,如验证项目的配置管理工作是否符合适用的标准和规程;验证交付的产品确实包含所有必需的项目,如正确版本的源代码、资源、文档等;
5、形成配置审核报告,并上报相关人员;
6、跟踪审核发现的问题的纠正措施直至问题解决,纠正情况记录于《审核问题跟踪记录》中。
SCM的对象是软件研发活动中的全部开发资产。因SCM覆盖了整个软件开发过程,故它是改进软件过程、提高过程能力成熟度的理想切入点。尤其是实施流程中的配置管理计划、建立配置管理环境、配置项标识、版本控制、变更控制、配置状态统计和配置审核等活动,泛微软件实施部在这方面走出了坚实的一步。