第1页共124页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第1页共124页第一章引言传统的软件配置管理建立在文件版本控制的基础之上,现代大型软件系统的开发要求在更大粒度上进行版本控制。同时,基于软件体系结构的软件开发是当前的发展趋势,也需要适应其特点的版本管理模型的支持。1.1版本管理模型概述1.1.1配置管理概念随着软件开发规模的不断增大,一个项目中的中间软件产品的数目也越来越大,中间软件产品之间的关系也越来越复杂,对中间产品的管理也越来越困难,有效的配置管理则有助于解决这一问题。现在人们逐渐认识到,配置管理是适应软件开发需求的一种非常有效和现实的技术[1]。配置管理是软件过程的关键要素。它是一种按规则实施的管理软件开发和维护过程及其软件产品的方法。软件配置管理系统在软件质量管理中也起着重要作用,它不仅是CMM的核心内容之一,是绝大多数软件过程工程和管理过程不可缺少的部分,也是国际标准化组织IS09000质量管理体系的核心内容之一。IEEE定义了软件配置管理(SCM)的标准[2],在这个标准中,SCM应该定义四个主要方面:1)配置标识(configurationidentification):产品、产品结构和产品中组件的标识及其类型;第2页共124页第1页共124页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第2页共124页2)配置控制(configurationcontrol):控制配置项及其组件的演化;3)配置状态统计(configurationstatusaccounting):记录报告产品状态和变更请求,收集组件统计信息;4)审计、审查(auditsandreviews):维护产品完整性和一致性。后来,随着异质平台开发、团队协作的出现,配置管理的定义得到进一步的扩展。SCM还包括:5)生产(manufacture):管理产品组装和构建;6)过程管理(processmanagement):执行组织的过程、策略和生命周期模型;7)团队合作(teamwork):支持开发者间的协作。1.1.2版本管理概念版本管理是SCM的核心功能[3],版本管理的基本任务就是同时管理一个数据元素的多个版本[4]。版本管理应该具备以下的基本功能:1)创建新本版;2)通过某种选择机制来访问特定的版本;3)对版本添加用户定义的名字或标识;4)删除版本;5)维护版本间的关系;6)修改已存在的版本,这个操作一般是不允许的,至少不能是直接的;7)锁定特定版本;8)版本合并;9)赋给版本状态值和属性值;10)允许用户自定义数据对象间的关系。为支持版本管理,需要一个合适的版本模型。该模型需要定义第3页共124页第2页共124页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第3页共124页进行版本化的元素,版本的标识及其组织,版本的查询,版本的创建等等。版本模型可因版本化的元素,版本的组织结构、版本的粒度、面向状态的版本或者面向变更的版本、版本的选择规则的不同而不同。[5]中定义了组成版本模型的基本术语,如图1.1所示:图1.1版本模型基本术语1)版本、版本元素、配置项版本v代表着演化元素i的某一个状态。版本v可以通过表达式v=(ps,vs)来表示,ps、vs分别代表版本v在产品空间和版本空间中的状态。版本元素指由版本库维护其演化的元素。配置是指一个复杂对象的某一版本,例如:软件系统的一个配置是由需求文档、软件体系结构、程序源代码的某一版本组成。2)增量两个版本之间的差别称之为增量。一个版本通过对基版本使用一组变更来创建新版本就是直接增量存储。而对于内嵌增量和选择第4页共124页第3页共124页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第4页共124页增量存储,某一元素的所有的版本是存储在一起的,因此各版本间的共同部分可以共享。内嵌增量方式通过指针指向其片断来组成一个版本,选择增量方式通过可见性表达式来决定一个版本。3)版本演化各版本沿着时间轴方向顺序演化称之为修订。这样的演化一般是指修改前一版本的错误。而对于各版本需要并行演化的称之为分支。4)版本描述面向状态的版本管理是指只关心版本元素的状态的版本管理。面向状态的版本管理通过修改和分支来描述一个版本。面向变更的版本管理通过对基线版本使用一组变更来描...