1.1 为什么需要软件配置管理?

  软件开发中的配置管理,比如是生产企业中的库房管理。

  如果生产企业中的没有库房管理,原材料和生产出来的成品随便堆放在仓库中,需要一个小原材料时要找半天;客户需要一个或者多个成品也要找半天,能行吗?

  同样的,如果我们软件开发中团队开发没有配置管理,项目中文件(各种文档、代码、数据、发布后的可执行文件等)全部堆放在一个目录下,各种版本都有。假如客户等着要一个成品,找了很久找到了,拿给客户看的时候,发现找的版本错了,那岂不很混乱?所以,我们需要软件配置管理。

  另外,假如生产企业中的原材料和成品随便露天堆放,或者虽然放在专门的地方(比如仓库),但是随便什么人都可以拿东西,这样行吗?当然不行,所以需要专门的地方(为了安全)存放,安排专门的人员进行管理(为了方便管理)。同理,如果整个项目组的成果放在个人计算机上,其个人计算机的安全性差、硬盘可能会损坏、甚至个人泄露项目组资料等,所以,团队的软件开发中,也需要专门的地方存放,需要专门的人员来进行管理,管理的对象是项目组的全部的资料:包括原始材料(来自客户)、项目组的工作成果(各种文档、源代码、测试代码、数据等)和成品(终文档和可执行文件)等。

  1.2 什么是软件配置管理?

  软件配置管理(Software Configuration Management,简称SCM)。

  在项目的团队开发中,使用专门的服务器(一般安装专门的配置管理软件,方便管理每个文件的版本等)来存放项目组的资料,由专门的人员来对其上的项目组资料进行分类存放、权限分配、标识、统计监控等管理。这个过程叫配置管理。

  对项目的每个元素(文档、代码、数据等)变更进行管控(版本控制),并维护不同元素之间的版本关联,以使软件在开发过程中任一时间的内容都可以被追溯,包括某几个具有重要意义的元素的组合。

  配置管理一般包括三个方面的内容:版本控制、变更控制、过程支持。

  1.3 一些常见的概念

  1.3.1 配置管理服务器

  专门存放项目组资料的服务器。一般安装有专门用于配置管理的软件。

  1.3.2 配置管理软件

  为了方便进行配置管理的工作而开发的专门的配置管理软件,基本的功能包括文件的版本管理、创建项目库、项目库用户管理、权限分配等功能。有C/S结构和B/S结构两种。

  C/S结构的配置管理软件:分服务器端和客户端两部分,前者一般装在配置管理服务器上,配置管理员使用;后者装在项目组成员的每个个人工作计算机上,用于项目组成员向配置管理服务器提交自己的工作成果,或者从服务器取得需要的项目资料。C/S结构的配置管理软件,一般要求项目组成员都在一个局域网工作。VSS属于这种。

  B/S结构的配置管理软件:配置管理软件只安装在配置管理服务器上,配置管理员和项目组成员都是通过浏览器登录这个配置管理软件,只是配置管理员和项目组成员的用户不同,角色不同,权限也不同。因为可以通过Internet访问配置管理软件,因此项目组成员可以位于世界各地,只要你能访问Internet,并既有帐号和访问权限即可。

  比如CVS、SVN属于既有C/S结构又有B/S结构,这两个配置管理软件属于混合结构。

  1.3.3 配置管理员

  专门管理项目库的人员。

  1.3.4 项目库

  配置管理软件定义的一种专门格式的、存放项目资料的数据库。支持版本管理、用户管理、权限分配、多用户访问等等。

  项目库一般由配置管理员在项目初始时使用配置管理软件进行创建和管理。其他项目组成员从项目库取得资料或者提交资料。