笔者在ISO9001认证和SW-CMM评估的实践过程中发现,软件配置管理在项目管理中的作用十分关键。

软件配置管理是项目运作的一个支撑平台,简单示意如下图所示。它将项目所有成员(包括公司中对项目负责的高层经理)的工作协同起来,实现高效的团队沟通,使工作成果及时共享。当然,这种支撑是贯穿项目的整个生命周期的。

一般来讲,软件配置管理人员应该完成以下几个主要任务:

任务一配置标识

要配置标识,首先必须明确项目生命周期内所要产生的工作产品,然后确定工作产品的名称和标识规则。总体原则是,保证配置管理工具检索便利,让项目组成员容易记住标识规则,同时要确保组织一级的标识规则的一致性。

任务二版本管理

版本管理一般是使用工具来完成的,如Rational ClearCase、Merant PVCS Version Manager、Microsoft Visual SourceSafe等。使用这些工具时,容易被忽视的一点是制定所使用工具的版本规则。如果直接采用工具的内部版本号,会给产品发布带来一些困难。通常采用“X.Y.Z”方式进行版本标识,明确X、Y和Z各位数字递增的规则,然后结合工具标签(Label)功能,便可实现高效的版本管理。

任务三变更管理

变更管理是项目管理的一个重点和难点,涉及的范围很广。实施高效的变更管理至少应该包括两个部分:“定义合理的变更管理流程”、“采用自动化工具作为支持”。在具体的实践中,应该对变更进行分类和分层,建立起处理不同变更的“变更控制委员会”(CCB),既保证项目组成员有一定的自主权,又不会耽误高层经理对关键问题的把握。

任务四配置审核

配置审核包括两方面的内容:“配置管理活动审核”、“基线审核”。“配置管理活动审核”用于确保项目组成员的所有配置管理活动,遵循已批准的软件配置管理方针和规程,如检入(Check in)/检出(Check Out)的频度、工作产品成熟度提升原则等。实施“基线审核”,要保证基线化软件工作产品的完整性和一致性,并且满足其功能要求。基线的完整性可从以下几个方面考虑:基线库是否包括所有计划纳入的配置项?基线库中配置项自身的内容是否完整?(如,文档中所提到的参考或引用是否存在?)此外,对于代码,要根据代码清单检查是否所有源文件都已存在于基线库。同时,还要编译所有的源文件,检查是否可产生最终产品。一致性主要考察需求与设计以及设计与代码的一致关系,尤其在有变更发生时,要检查所有受影响的部分是否都做了相应的变更。审核发现的不符合项要进行记录,并跟踪直到解决。

在实际操作过程中,一般认为审核是一种事后活动,很容易被忽视。但是“事后”也是有相对性的,在项目初期审核发现的问题,对项目后期工作总是有指导和参考价值的。为了提高审核的效果,应该充分准备好检查单,如表1所示。


支撑平台示意图

任务五报告配置状态

报告配置状态的目的,是向项目所有成员提供基线内容和状态、基线变更信息(如表2所示),这也是实现资源共享的前提。此外,在项目生命周期中进行对配置项的变更数据统计分析,有利于评估项目风险,有效控制项目的执行。在变更请求被批准、基线版本发生变化及项目组提出任何需要时,可以采用Email等方式进行报告。

任务六发布管理

实施了规范的配置管理,发布就显得很从容了。但是必须要注意的是:发布的产品应该是从软件基线库中提取出来的;在软件发布给最终用户之前,要准备发布记录,为软件产品分配发布版本号,同时要对它进行发布评审并确认其得到批准。一般来说,高层经理、项目经理、软件质量保证人员和测试组都应该参加发布评审。

在项目启动的初期,将这些活动和策略有机组织起来,便形成一个配置管理计划。然后建立配置管理环境(比如安装版本管理和变更管理工具、建立用户和权限分配等),并根据项目组成员的具体情况,实施必要的有效培训(确保项目组成员真正清楚配置管理方针和规程,并熟练使用配置管理的相关工具)。最后,执行计划——等待精彩体验吧。

检查项

yes

no

na

说明

是否及时提升工作产品?

 

 

 

 

是否执行配置库定期备份?

 

 

 

 

是否定期执行配置管理系统病毒检查?

 

 

 

 

是否评估配置管理系统满足实际需要?

 

 

 

 

上次审核中发现的问题是否已全部解决?

 

 

 

 

……

 

 

 

 

基线审核

配置项名称

标识

版本

一致性

完整性

说明

需求规格说明书

companyname-prj-doc-srs

1.0.0

yes

yes

……

 

 

 

 

 

 

 

 

 

 

 

 

审核跟踪

问题id

问题概要描述

状态

责任人

说明

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

表2 配置状态报告基线状态

配置项名称

配置项标识

状态

文件名

版本号

存放位置

 

 

 

 

 

 

 

 

 

 

 

 

变更请求一览表

变更请求id

变更请求主题

状态

提交者

当前责任人