7、版本控制(Subversion工具)
  配置管理伴随着软件开发的历史逐步发展,产生的主要原因是管理难度的加大。
  (1)软件复杂度增加。
  (2)参与协同作业的人员增加。
  (3)工作方式更加国际化。
  所以软件配置流程引入配置管理员CMO(Configuration Management Officer)用于管理变更控制。
  工具的出现帮助配置管理员自动化处理,工具应具备如下特性:
  (1)维护文件库。
  (2)创建和存放文件的多个版本。
  (3)提供锁定的机制。
  (4)标识一组文件的版本。
  (5)从配置库中提取、找回文件的版本。
  下面我们来介绍关于版本控制的软件工具。
  8、版本管理软件--(Subversion工具)
  (1)Subversion(简称SVN)的概念
  Subversion(简称SVN)是近年来崛起的版本管理软件,它是一个通用系统,可以管理任何类型的文件集。Subversion的版本可以通过网络访问,从而使用户可以在不同的电脑上进行操作,从某种程度上来说,允许用户在各自的空间里修改和管理同一组数据可以促进团队协作。
  (2)SVN基本结构
  SVN服务器分为Windows和Linux版本,有两种运行方式:独立的SVN服务器和借助Apache。
  SVN的版本库(Repository),也叫项目仓库,是位于服务器统一管理和储存数据的地方,对Repository常用的操作是签入(commit/check-in)和签出(check-out),像出库和出库一样。
  (3)悲观锁VSS(串行)和乐观锁SVN(并行)
  悲观锁:
  VSS是基于“锁定-编辑-解锁”模式的,这个模式,有一个弊端,是当其他人在编辑相关文件的时候,此单元处于锁定状态,其他人如果想编辑这个单元文件的话,只能处于等待状态,
  乐观锁:
  SVN是基于“修改-冲突-合并”的一个模式,也是说多个人可以同时签出一个单元文件,编辑然后提交,如果多个人都修改了同一文件的某一行的话,会发生冲突,手工解决冲突。
  (4)SVN的应用。
  SVN中常用的提交、签出、更新命令是什么?
  提交:commit;
  签出:checkout;
  更新:update。
  *在SVN的配置管理模式下,如果两个人同时修改同一个文件的同一行,遇到了冲突可以如何解决?
  Merge合并。
  两人访问同一服务器:checkout 到本地 。 A先提交 。
  B修改提交,提交时会提示out of date ,需要update ;update之后修改文件内容,删除不需要的内容,保存。
  *在SVN的配置管理模式下,两个人各自修改了不同的行。
  两人访问同一服务器:checkout 到本地 。 A先提交 。
  提交之后会出现一个新的版本,这时B需要update,然后修改提交。
  二、软件配置管理组织
  1、配置管理角色介绍
  (1)项目经理(PM项目负责人)
  *制定项目的配置计划。
  *制定CMO。
  *建立项目的CCB。
  *保证为项目提供合适的配置管理工具。
  (2)配置管理员(CMO)、
  *建立和管理配置项
  *保存变更申请。
  *基线化配置项。
  *生成并发布配置状态发布表。
  *将基线化的文档和计划分发给所有相关人员。
  *管理配置库的访问权限。
  *增加/删除配置项(仅在收到已获批准的请求时)。
  *备份/恢复和归档配置库。
  *想项目成员提供配置管理工具使用的指导。
  (3)软件开发工程师(SWE)
  *开发工程师将自己创建的与开发相关的配置项(比如需求规格说明书、概要设计、详细设计、代码等配置项)加入配置库中。
  *开发工程师根据变更请求,对配置项进行check-out、修改、check-in的操作。比如测试人员在提交bug之后,开发人员应该在CMO授权之后,对相应的配置项(源文件)check-out、修改、check-in。
  (4)软件测试工程师(STE)
  *测试工程师将自己创建的与测试相关的配置项(比如软件测试计划、软件测试方案、软件测试用例、软件测试日报、软件测试报告等)加入配置库中。
  *测试工程师根据变更请求,对测试相关的配置项进行check-out、修改、check-in操作。
  *获取被测试的已发布的软件版本。
  (5)质量保证人员(QA)
  *基线审计。
  *评审并批准配置管理计划。
  *验证配置库的备份。
  (6)变更控制委员会(CCB)
  *评估和批准对配置项的更改。
  *确保批准后的更改的实施。
  三、配置管理的过程
  根据IEEE的定义,配置管理的五大活动是指:
  1、配置计划。
  2、配置标识。
  3、配置控制。
  4、配置状态发布。
  5、配置审计。