技术开发 频道

基于目的分支的软件配置管理模型

【IT168 技术文章】

    一、引言 

    在软件开发的整个生命周期过程中,需要不断地修改软件。为了对这些修改和变动进行有效管理以免造成开发过程的混乱,需要进行软件配置管理。

    软件配置管理是一套管理软件开发和软件维护及过程中各种中间软件产品的方法和规则,配置管理通过系统地管理软件配置项和控制对配置项的修改,在整个软件生命周期中维护配置项的完整性和可追踪性。

    在软件开发实践中,常常出现一些令人沮丧的事,如软件紧急更改提交集成失败、发布错误版本、修复过的缺陷又莫名其妙地出现等等。是什么原因导致这些挫败?是代码太大、太复杂?还是并行开发的固有问题?或者只是因人员调整、进度紧迫带来的问题?研究表明,上述因素都有可能引发软件错误,但不是主要的原因,而主要的原因在于在实际开发中没有应用软件配置管理或应用软件配置管理不当。

    只有深入地认识软件配置管理,才能正确应用。对配置管理模型的研究,有助于理解和认识配置管理中的一些问题和矛盾冲突,进而应用适合实际需要的配置管理模型。应用正确的分支模型,对避免开发过程的混乱尤其重要。

    二、软件配置管理及分支模型

    软件配置管理(Software Configuration Management)包括配置标识、版本控制、变化控制、状态报告和审计控制四部分。配置标识是在系统演化过程中标识过程中的中间软件产品,版本控制记录每个配置项的发展历史,并控制基线的生成,变化控制包括在整个生命周期中控制中间软件产品的变化,状态报告指记录和报告软件的变化过程,审计控制保证软件过程遵循要求和标准。从实际操作的角度来讲,软件配置管理具有两方面的功能:其一,支持对软件产品的变更控制管理,该功能包括与SCM有关的传统活动,包括确定软件构件、控制对这些构件的更改、记录和报告构件和配置状态以及进行审计和评审;其二,支持开发人员对文件的同步更改,这类活动包括确定文件版本、软件构建管理和版本发布管理。

    软件分支是软件版本控制、软件构建管理和版本发布管理的重要组成部分。运用分支使得并行开发新的系统、同步更改多个并行版本的错误、同时集成和发布多个版本称为可能。分支模型包括了将配置项复制到多个实例中所采纳的基本原理,每个配置项都有唯一的且恰当的配置标识。

    版本控制是配置管理的基本要求,它可以保证在任何时刻恢复任何一个配置项的任何一个版本。版本控制还记录了每个配置项的发展历史,这样就保证了版本之间的可追踪性,也为查找错误提供了帮助。版本控制也是支持并行开发的基础。版本的演变有串行演变和并行演变两种方式。在串行演变的方式下,每一个新版本是由当前最新版本演变而来的。各版本按演变过程形成一个版本链。串行演变形成的一维的版本,称之为修订版本(Revision)。这种演变方式是按一对一的映射关系进行的。在实际的软件开发过程中,版本演变多是采用一对多的方式进行的,称之为并行演变。并行演变形成二维或更高维版本,称之为分支版本(Variant)。

    版本在演变过程中,有一些版本需要合并以减少冗余。版本合并包括水平合并与垂直合并策略。水平合并时,不同分支版本代表不同的开发流,不同的开发流要合并在一起,就需要将源分支上的最新版本合并到目标分支的最新版本中,并在目标分支上产生一个新的版本。垂直合并是为了控制版本的增长,在原子构件的一个分支上将相邻的若干版本合并为一个版本。

    正确地选择何时和以何种方式进行分支可使开发和构建人员更好地控制软件变更。选择正确的分支策略使版本正确发布、重构以前的版本或者重新回到以前的版本等工作更加容易。采用分支模型使软件开发过程更加便捷、软件开发更加高效、软件质量得到提高,并且可以减少软件开发中的错误和提高软件开发团队的整体效率。要选择适当的分支模型,应从以下几个方面考虑:

   (1) 支持连续不间断的集成,从而保持新开发过程的稳定的基准;  
    (2) 提交应急版本(只包括所有必要的修复)进行测试和交付用户;
   (3) 包含有所有必要的修复而无其它更改的测试版本发布;
  (4) 使应急发布对新开发过程的影响最小化;
  (5) 必要时,回退到以前的产品状态;
  (6) 现场支持多个连续版本;
  (7) 支持多个共存版本,如不同平台或不同用户的备选版本。

0
相关文章