唐滔 谭凤
摘要:版本控制是软件配置管理的重要功能,负责为配置库中的所有元素自动分配版本标识,并保证版本命名的惟一性。本文运用软件工程的原理并结合版本控制的实践,指出为了有效地进行版本拉制而引入基线管理,并通过最常用的软件项目基线;包括检入、检出控制、分支和合并、历史记录。结果表明,在配置管理教学过程中通过基线进行版本拉制,是保护代码资源、提高开发效率、加强软件项目管理的有效途径。
关键词:塞线;版本拉制;检入;检出控制
前言
软件配置管理是规范、高效的软件开发基础结构,是在项目开发过程中,标识、控制和管理软件变更的一种管理活动。有效的配置管理,这使得用户期望软件系统能够很好地适应外界要求的变化,使日后的维护和升级得到保证[2]版本控制是软件配置管理的重要活动,因为软件变更常常带来软件版本的改变与新版本的发布,必须进行有效的控制。版本控制的对象包括文档、源代码、规范、可执行文件等,目的在于对软件开发过程中的这些对象提供有效的跟踪手段,便于对版本进行检索和跟踪,避免文件的丢失和覆盖[3]。在教学过程中,配置管理的版本管理和基线是非常重要。
1 基线
基线是软件开发过程中的关键里程碑,当某一个软件配置项纳入基线管理后,就是后续工作的标准,只有经过管理人员授权后才能改变这个标准。基线又可细分为如下三类:
(1)功能基线。是最初批准的功能配置标识,可以是甲乙双方签订的有关软件实现功能的协议书,也可以是需要分析结束后确定软件系统功能,或者是上级主管部门下达的软件规格说明。功能基线确定软件需要实现的功能。
(2)指派基线。是最初批准的指派配置标识,通常是需求分析阶段工作结束时,经过正式评审和批准后的软件需求规格说明。通过指派基线,可以将工作分派给相关的组织或个人。
(3)产品基线。是最初批准的产品配置标识。通常是系统组装完成并经过系统测试,软件能与系统其他部件正确连接,达到规定的功能和性能,通过正式评审,可以将产品投入使用。基线作为检查点,正式发行的产品必须是经过控制的基线产品。
2 版本管理
版本管理是软件配置管理的基础,通过版本管理保护开发的软件资源。软件系统版本随着软件开发工作的进展而演变,从而构成复杂的版本空间。版本和基线的关系可以描述为:配置管理保存已完成的版本、创建新版本、合并多个版本,并提供一种策略来选择版本创建基线。系统新版本可能有不同的功能、性能,可能修改了系统错误。有些版本可能在功能上没有什么不同,只是为不同的硬件或软件配置而设计的。每个系统发布版本都应该包含新的功能或是针对不同的硬件平台。一个系统的版本要比发布版本多得多,因为机构的内部版本是为内部开发或测试而创建的,有些根本不会发布到客户手中。软件配置管理版本控制之所以在基线的控制之下,是因为处于基线控制的软件配置项版本,表明已完成了一定的阶段性工作,版本处于被锁定的状态;而非基线控制的版本,软件开发人员可以随意修改而不必经过审批流程。被锁定的版本如果需要修改。
现在的版本控制通常由SVN\GIT等工具来支持。工具用于管理对每个系统版本的存储,并控制对系统组件的访问。这些组件必须能够从系统中抽取出来进行编辑,当将其重新放入系统的时候,就构成了一个新的系统版本,由版本管理系统给它一个新的名字。版本控制包括:检入检出控制(Checkin/ Checkout)、分支和合并(Branch/ Merge),历史记录(History record)。
3.1 检入、检出控制
建立基线之后,配置项被保存在配置数据库中。这些配置项不能随意进行修改,但在很多时候仍然需要修改,修改后仍需要保存在配置数据库中,这就需要检入、检出控制。“检入”就是将软件配置项从开发人员的工作空间存储到配置数据库的过程,“检出”就是将软件配置项从配置数据库取出并存储到开发人员工作空间的过程。检入,检出控制保证了软件工程师对访问对象的权分支和合并版本分支的人工方法是从主版本拷贝一份并做上标记,版本合并的人工方法是将一个版本的内容拷贝到另一个版本上形成新版本或将两个版本的内容合并为一个新版本。对文件来说,分支与合并的结果就是形成具有图形结构的版本历史。
3.3 历史记录
版本控制的历史记录,跟踪并记录了整个软件的开发过程,便于对在软件开发过程不同阶段新生的成果(包括源代码、文档资料等)进行对比分析,对已修改的软件配置项恢复到未修改新的状态,对不同人员所做的修改进行监视、监督和汇总,提高软件项目的管理水平的控制能力,同時历史记录记载了版本的修改时间、修改人员、修改描述等信息,便于分清责任并进行绩效考核管理。
4 结束语
版本控制逐渐成为软件配置管理中重要的控制过程,是软件项目管理领域重要的研究方向。配置管理的版本控制可以解决很多问题,包括根据不同用户的需求,配置不同的软件系统;保存系统老版本,为撤销修改或追溯问题提供支持;支持多个软件开发人员共同开发一个项目,或同时修改一个软件配置项;存储软件的多个版本,清晰地表明软件版本的演进过程。基于基线的版本控制,能确保软件配置项在软件生命周期中始终处于受控状态,并恢复到任一个历史状态,方便地进行软件项目的开发和管理。
参考文献
[1]郭宁,周晓化.软件项目管理[M].北京:清华大学出版社,2007.
[2]李玉龙,李长云.软件动态演化技术[J].计算机技术与发展,2008,18(9):83-86.