UML软件工程组织

 

 

软件配置管理 软件项目的先行者
 
作者:王晨 来源:AMT公共知识库
 

[摘要] 软件配置管理是一门应用技术、管理和监督相结合的学科,通过标识和文档来记录配置项的功能和物理特性,控制这些特性的变更,记录和报告变更的过程和状态,并验证它们与需求是否一致。

前言――“不该发生的故事”

“配置第一”这个理念是一位IT公司的项目经理告诉我的,他用了“深刻教训”四个字来为这个言论作注脚。他告诉我这样一件事:

这家公司曾为电信企业开发一个手机收费的中间业务系统。按规定,系统的收费平台应根据第三方传来的手机资费信息进行扣款。其中,负责网络通讯的路由器是由多家厂商提供的。

在项目试运行阶段,系统运行一切正常。这时,有一家路由器厂商(以下简称A厂商)要升级运行程序,网络通讯接口要变,A厂商向电信提出了修改接口程序的提示。负责项目开发的这家IT公司很快完成了通讯接口修改,和A厂商联调测试无误后,准备将接口程序发布运行。负责程序发布的老兄嫌版本发布流程太麻烦,便走捷径,私自将程序更新上线了。未料到,接口的改变影响了电信与其他厂商路由器的数据通讯。途经A厂商路由器的通讯数据没有问题,可其他品牌的路由器却收不到信息了。后果是:当天电信用户的手机资费信息数据报大量遗失,相关电信资费损失无法挽回。

负责软件承包的IT公司境遇可想而知。“痛定思痛,痛何如哉!”从此,该公司痛下决心,买工具、定规范、搞培训,将配置管理切切实实地作为日常重点管理工作来抓。

配置管理是什么“东东”,它真这么重要吗?

软件配置管理是一门应用技术、管理和监督相结合的学科,通过标识和文档来记录配置项的功能和物理特性,控制这些特性的变更,记录和报告变更的过程和状态,并验证它们与需求是否一致。


-----摘自IEEE定义

简而言之,配置管理(Software Configuration Management , 简称SCM)就是对软件产品的配置项进行控制和管理。它的目标是最大限度的减少错误和混乱,保证软件项目工作产品在整个生命周期内的完整性。

配置管理的对象是配置项,主要包括:接口描述、过程描述、需求、设计、测试计划、测试结果、代码及模块、工具、系统参数、版本描述等。配置项与配置人员、配置工具、配置规范等构建起了整个配置管理体系。

配置管理的出现是项目发展的必然结果

软件技术迅速扩展,项目开发日趋复杂,人员数量不断扩充,系统开发平台多样化,开发及测试场所分布各地,开发规模日益扩大,随之而来的管理复杂性急剧增加。

软件开发永远不变的特点就是变化,需求变更、技术更新、人员变化、环境变化、架构变化等层出不穷,所有这些使项目风险大大增强,如何应对并追溯变化,从而控制变化,是一个重要课题。

软件系统越做越大,产品组件动辄上千,多者上万,版本控制如何着手,令人头痛。

“乱世出英雄”,配置管理便在这样的环境下应运而生了。

配置管理的管理范围恰是项目开发、协调最混乱的地方:

交付给用户的软件产品(需求、源代码等)

软件产品的外部产生“环境”(操作系统参数、编译程序等)

对项目内部而言工作产品(过程描述、流程控制等)

那么,这种管理的特点是什么呢?它到底能带来什么好处呢?

特点  

相对独立。配置管理相对独立于其他管理控制活动,它可以在其他活动都未开展或还不成熟的时候独立进行。

是其他各项管理的基础。需求管理、需求变更、资源变更、系统维护、合同管理、计划管理、文档管理等都是在配置管理这个“平台”基础上进行的。

优点  

对项目产品单元进行统一的版本变更管理,统筹安排系统的修改、发布以及系统资源的使用,预防开发的进程混乱,保证系统版本的完整和一致。

支持并行开发与维护。软件开发过程时常要求多个开发人员同时在同一个软件模块或项目文档上工作,同时对同一个代码或文档部分作不同的修改,配置管理能满足这样的要求,同时使跨平台、跨地域的并行开发成为可能。

使项目管理人员能掌握项目开发进度。配置管理系统可以提供配置状态报告,对每日变更完成的工作量、开发中存在的问题等会有详尽的反映。

减少人员变动对项目带来的影响。项目的变更轨迹可跟踪,文档的增删、代码的修改、参数的改变、配置项的状态、基线之间的差异等都有案可查。参照变更的原因、内容描述等内容,我们便可对项目的开发进程有详细而完整的把握,从而避免对相关人员的过分依赖。

配置管理的重点工作描述

1) 配置项识别

配置项识别就是将配置项按规定统一编号,将其划分为基线配置项和非基线配置项,按一定的结构保存在配置库中,然后赋予不同人员不同的权限来使用它们。

那么,“基线”又是什么呢?

基线是由一组具有唯一标识号的配置项组成的。这些配置项构成一个相对稳定的逻辑实体,它们处于“冻结”状态,不能被任何人随意修改。

基线通常与项目开发过程中的里程碑点相对应。在项目里程碑阶段,项目通常会进行阶段成果评审,经过正式评审并获得批准的阶段性项目成果的统一标识便标志着项目的不同基线。根据使用对象的不同,基线被分为建造基线(对内使用)以及放行基线(对用户使用)。

对基线及其集成系统的任何修改,都必须按照特定的规程来评估和验证。

2) 变更控制

随着项目的进展,需求、开发资源及环境都可能会发生变更,变更控制便是对这些变更进行跟踪和规划,目的是便于变更的有效管理和追溯,避免工作的混乱。

变更控制使配置项真正处于受控状态,并保障配置项在任何情况下都能迅速恢复到任一历史状态。

上图是一个较典型的变更控制流程,它的重点在于变更申请审批、变更方案审核、变更结果评估等环节。通过这种审批、审核,来保证变更的合理性,降低变更风险。

3) 版本管理

这里的版本包括各种文件、技术文档和程序版本。这些配置项均属于版本管理的范畴。

版本管理的目的是按照一定的命名规则保存配置项的所有版本,避免发生版本丢失或混淆等现象,并确保能快速而准确地查找到配置项。

版本管理对存取软件资源采取加锁等控制策略,保证了多人同时开发时软件资源的内容一致性和正确性。

配置项的状态通常有三种:“草稿”、“正式发布”、“正在修改”。 配置项的不同状态由多种版本号所组成。随着状态流程的变迁,版本号发生变化,新的版本出现,版本管理就是对配置项各种版本的进行存储、登记、索引、权限分配等一系列管理活动。

4) 配置状态报告

根据配置库的记录情况,我们可以总结出不同角度的配置状态报告。它可以由CASE工具自动生成,如:《配置项的状态》、《基线之间的差别描述》、《变更日志》、《变更结果记录》等。

通过配置状态报告,我们可以了解基线配置项的状态、当前的工作进度、变更对项目进展的影响等情况。从而为开发决策提供参考依据。

软件配置管理工具的选择

“工欲善其事,必先利其器”,配置工具的选择对配置管理的好坏影响巨大。

配置工具是配置管理的自动化平台,是一个管理具体实施的基础。一套功能强大、实施容易、管理方便的配置管理工具,可以极大地提高配置管理的实施效果。

目前配置管理工具大致分3类:

版本控制工具,提供基本的版本管理功能,例如:CVS, Visual SourceSafe;

项目级配置管理工具,适合中小型的项目,除版本管理功能外,还提供变更控制、状态统计功能,例如:ClearCase,PVCS,StarTeam;

企业级配置管理工具,除上述功能外还提供较强的过程管理功能,例如:ALLFusion Harvest。

如何选择配置工具呢?通常的选择标准如下:

提供基线化管理,对于基线有明显的标识。在工具所管理的配置库中,所有的配置项都应清晰、完整的得到保存,对于同一基线所包含的配置项可以迅速而明确地查到。如:项目人员在实施某一个需求变更时,可以方便地查到与此更改相关的编码、文档、测试用例、使用手册等产品单元,从而保证变更的完整性。

操作简单、流程便利。项目开发是一项复杂工程,项目人员工作繁重,应尽量减轻他们的工作压力,消除其使用戒心。

提供完善过程管理功能。能根据实际情况定制不同的开发规范,包括访问权限控制、开发规则的实施等;能跟踪、控制开发过程中出现的缺陷、变更等,可以随时了解变更的实施状态。

提供灵活多样的配置状态报告。在配置的不同阶段能提供多角度的配置状态报告,详细反映配置项的变化过程,追溯变更任务的进程,为项目管理提供第一手参考资料。

管理规范的制定与推广

通常人们会认为,配置管理就是工具管理,就是找几个人,买几个工具,就可以开干了,这实在是大大的误解。再好的工具都要靠人来操作、管理。工具是死的,人是活的。工具虽好,若无严格可行的规章、流程做保证其实施,要做好配置管理是空谈。

配置管理规范是成功实施配置管理的根本保障。它包括:配置管理计划、版本控制规则、变更控制规则、配置库操作规则、配置审计规则等,所有这些,构成了完整的配置规范及配置管理基础。

如何做好配置管理的相关规范及流程呢?  

1、明确项目要做到的配置管理目标。

2、根据目标确立配置管理应提供的功能。

3、确定相关人员,明确其岗位职责。

4、确定是否要引入配置管理工具,如需引入,要引入何种工具。

5、确定配置管理流程。

制定配置管理计划。

1)配置控制委员会(Configuration Contronl Board ,简称CCB)根据项目的开发计划制定阶段里程碑,明确开发策略;

2)配置管理人员(Confiuration Management Officer,简称CMO)根据CCB的规划,制定配置管理计划,交CCB审核;

3)CCB审核通过配置管理计划后,将其交项目经理批准,然后对外发布。

执行配置管理计划。

1)CCB设定项目研发的初始基线;

2)CMO设立配置库与空作空间,为软件开发做准备;

3)开发人员根据软件配置策略获得授权资源,进行研发工作。

4)CCB根据研发进展情况,审核项目变更请求,根据里程碑来确定新的基线,推进配置管理活动。

6、制定相关规范来保障流程的实施。

规范规定完毕,还要有执行,如何来推进配置管理各项制度及流程呢?

领导的重视是前提,没有领导的支持与推进,过程控制规范便没有执行力,是一纸空文。

培训。不光要对配置管理人员进行培训,还要对相关的技术及管理人员进行培训,使他们认识到配置管理的重要性,应如何来应用,如何来配合。培训是化解阻力的重要手段,大家只有了解你的好处才会支持你,否则,迎接你的往往是拒绝。

建立反馈渠道及反馈机制。“鞋子合适不合适,只有脚知道。”规章合理不合理,用户最清楚,听取各方的意见,不断自我完善,才能建立起切实可行的规范制度。

结束语  

配置管理离不开“人、工具、规范”三要素,我们若把软件项目比喻成隆隆向前的战车的话,配置人员便是战车的机械师,负责及时通报战车的性能、方位,排除系统故障;配置工具则是战车的传送带,平稳而准确地推动着战车前进的步伐,确保它到达一个又一个新的目标;配置规范就是润滑油,有它在,战车的各个部件才能精确地耦合运转。配置管理对项目是如此重要,没有它的保障,项目“战车”便是一堆废铁。

我们能指望这堆废铁什么呢?

 

组织简介 | 联系我们 |   Copyright 2002 ®  UML软件工程组织 京ICP备10020922号

京公海网安备110108001071号