信息化 频道

如何做大规模软件的软件配置管理

    四、建立配置管理体系

    1、管理层次

    依据配置管理系统功能特性,结合我们实际情况和需要,建立自己的管理体系。以往,我们已经成功地开发了其他大中型软件,但配置管理体系很不完善,一些主要配置项(源代码和程序文档)是靠手工管理,由于人员流动性大,又没有统一的配置管理体系,开发活动不能受到有效的控制,不能形成团队财富的积累。有人对配置管理是什么都不清楚,对配置管理系统的使用在思想上不容易接受,认为使用配置管理系统进行程序版本控制使开发活动受到了限制,给开发增加了工作量。特别是这次超大规模软件系统的开发,时间紧,任务重,如果配置管理系统使用不当影响项目进度或造成源程序丢失,会给开发带来巨大损失,后果不堪设想。

    为此,从管理层次和系统集成两个方面考虑,选择了降低管理风险方案,首先采用了两层管理层。

    2、存储库创建

    依据两层管理模式,配置管理和版本控制主要在项目级和子项目级配置管理员中使用。从一体化系统的结构来说,尽管该系统庞大,包括许多子系统,但是,最终要集成一个系统,而且管理模式决定了版本控制是在项目开发到一定阶段,形成初步系统模型时纳入版本控制。因此在Firefly服务器上创建一个程序代码库,用来存储初步集成的源代码。使用这样的库结构有利于对配置项的统一管理和控制,同时也能提高编译和发布的效率。

    3、权限设置

    创建一个代码存储库,是为了便于统一管理,但是如何让开发人员根据任务分工的不同而获得对相应配置项(源代码)的操作许可,而对于其他源代码不能操作。为此,利用Firefly提供的文件级访问权限设置,对不同目录进行用户权限设置,只有对该目录具有读写权限的用户才能对其进行操作,为子系统配置管理员授权一个文件目录,如图2权限设置图中src/ap目录授权给smq用户。

    4、分支的划分

    · 集成分支

    为了系统集成测试需要,创建集成分支,并对该分支进行了不同子项目的权限控制,各子项目必须将开发成果纳入到该分支,凡是对纳入到该分支的配置项进行的任何变更,都必须首先从该分支获得,变更后再上传到该分支。软件的集成测试工作在这一分支中进行。项目级配置管理员拥有对该集成分支的管理和读写权限,子项目级配置管理员只有对指定的目录有读写权限。

    · 主干分支

    主干分支对应的是整个软件开发组织的发布分支。各个子项目在现阶段的任务完成后,将可以发布的版本归并到该分支上,由该分支产生发布版本,对每次的发布基线和相关资料,以该分支上的版本为准。该分支的管理工作由项目级配置管理员负责。


    上面定义的2类(分支)由配置管理员统一管理,根据各开发阶段的实际情况定制相应的版本选取规则,来保证开发活动的正常运作。

    比如,软件已经发布了1.0版本,开发小组在为该软件添加新的功能,正在进行2.0版本的开发。而此时,如果Release 1.0中发现了Bug必须修正,我们就必须从Release 1.0中建立bugfix分支,进行必要的修正后,发布修正版Release 1.1,而这个版本的发布与2.0版本的开发没有直接关系。当2.0版本测试结束后,要与1.0版本中bugfix分支合并,从而发布2.0的版本。在这个并行开发过程中,创建分支和分支的合并起了非常重要的作用。

    · 产品基线

    当一个开发里程碑结束,或有重大事件发生时,利用配置管理系统提供的标签功能,对集成分支和主干分支进行标记,该标记作为产品基线,可以按标记进行版本发布和再现(图4分支及标签)。

    · 与分支对应的本地工作区

    把相关配置项纳入集中的存储库、为不同目的建立了不同分支后,按照初始设定的管理层次,子项目级配置管理员遵照“检出/检入”的工作模式对配置项进行修改,就要为每位子项目级配置管理员设定本地工作区,对所授权的目录进行的任何变更都要在本地工作区进行。

    · 开发工作区

    开发人员根据项目要求在自己的私有工作区中对配置项进行修改和测试活动,私有工作区可以是CVS版本控制软件工作空间或其他,自己的修改活动不会受到他人的影响,也不会影响到其他开发人员,修改和测试后的配置项提交给子系统配置管理员,由子项目级配置管理员上传到集成分支。

    五、逐步完善分支创建方式

    1、依据开发需要,创建平台分支

    由管理层次决定的分支是一个主分支一个集成分支,但随着开发活动的深入,系统平台开发和应用开发之间出现互相牵制问题,平台程序变更后在没有与应用程序联调之前,会影响到应用程序的开发,严重时会使应用程序开发工作无法正常进行,为了查找原因,有时需要花上一两天时间,影响了开发进度。鉴于这种情况,新创建了系统平台分支,系统平台子项目组在该分支开发集成,待测试通过并与应用联调后再利用分支归并功能,将程序归并到集成分支,既达到了程序控制的目的,又不影响开发进度,有效的提高了开发效率。这一分支方式说明了通过科学管理可以出效率。

    2、为了方便管理,建立链接分支

    平台分支和集成分支应用一段时间后,又出现了新的问题,平台的变更,需要通过应用程序进行测试。但是,系统平台分支上的应用程序不能时时更新,除非将集成分支的应用合并到平台分支,这样给管理带来许多麻烦,为了解决该问题,利用FireflyV3.0版本中提供的链接功能,在系统分支上创建了链接,链接到集成分支的应用部分,这样,平台分支可以随时得到应用系统变更的文件,大大方便了测试版本的制作。

    开发过程中系统分支和应用集成分支以及链接的应用,使平台开发和应用开发可以有序进行,消除了平台变更对应用开发带来的影响,促进了开发进度,有效地控制了平台和应用的变更,为开发阶段版本管理和控制起到了很好的作用。

    3、为发布产品,启用主干分支

    在项目开发阶段基本结束,进入产品发布阶段后,除了建立产品基线外,启用了主干分支为发布分支,集成分支上测试通过的程序,及时合并到发布分支制作发布版本。在产品发布初期,用户和试生产发现问题比较多,程序变更频繁,每周要集成一个新版本,为了标示不同时间编译的版本,除了版本号之外,附加了BuildNumber来标示。

0
相关文章