基于构件的软件版本管理系统研究
其基本原则是: ¹ 无冲突地表示整棵版本树; º 有效的区分版本名与分支名; » 有利于体现构件的开发过程。
图2 构件版本树
图2 是采用的一种比较实用有效的版本树命名方法. 版本11 0 为构件的初始版本, 实心节点为分支点. 版本11211121 210 与版本11 21 213 合并后形成版本1121 214。
3 以文件为基本粒度实现并发控制
311 版本控制与并发控制单位的分离
版本管理系统应能对项目组共同开发软件系统提供管理支持. 多个开发人员可以分工开发不同构件, 也可以同时开发同一构件. 为了保证协同开发的安全性和正确性, 必须解决构件开发过程中的并发控制问题。
在基于文件的版本管理系统中, 版本控制与并发控制的基本单位都是文件. 使用者可以在检出时对文件加锁, 防止其它用户对该文件进行修改; 检入时, 在生成文件新版本的同时, 要对文件解锁. 而在基于构件的版本管理系统中, 如果把并发控制的单位定为构件, 在需要修改时对构件加锁, 会造成其他使用者无法同时修改构件和构件中的任何文件. 因此, 提出并实现了以构件为版本控制单位, 以文件作为并发控制单位的管理方法。
3.2 文件的操作模式与并发控制
在实现基于构件的版本管理系统中,构件是版本控制单位,而并发控制则在构件内部的文件级别上进行管理。对于一个构件,使用者可设定其中文件的操作模式,由此来控制相关文件的加锁活动。
文件的操作模式可以分为三种: /只读0、/排它写0和/共享写0、/只读0表示对文件不加锁,使用者也不能对文件进行修改,使用者可以使用/只读0模式来浏览文件; /排它写0表示对文件加锁,使用者可以对文件进行修改,但不允许其他使用者同时进行修改,这样可以保证对同一文件的修改是串行化的; /共享写0则表示对文件不加锁,使用者可以对文件进行修改,而且允许其他使用者同时对同一文件进行修改。虽然/共享写0模式可以提高并发程度,但会带来多个用户修改结果互相冲突的问题。版本管理系统可以分析这种冲突,并提示用户进行相应的合并处理,由此解决了文件内容的一致性问题。
在构件的修改过程中,文件的操作模式是可以随时改变的。例如,使用者先用只读模式检出构件中的各个文件,而在要修改文件时,可将需修改文件的操作模式改为/排它写0或/共享写0,然后修改。完成了对构件中所有相关文件的修改,也就完成了对构件的修改。这时检入修改后的构件,系统会自动产生该构件的一个新版本。如果在使用者检入之前另一使用者已检入了构件的另一新版本,该使用者就需要先进行更新操作,系统会将构件最新版本拿到工作区,与该使用者修改过的版本进行合并后才能检入。使用者对文件操作模式的修改必须满足一定的条件。具体转换条件见图3.
3.3 文件的操作权限管理
操作权限用于管理特定用户对构件中文件的使用权限,分为/只读0和/可写0两种。它控制的是用户对文件的操作能力。用户操作模式是用户检出构件时对文件的实际操作。用户操作模式不能超过操作权限。例如,拥有/只读0权限的用户只能用/只读0模式检出文件,拥有/可写0权限的用户才可以用/只读0、/排他写0和/共享写0模式修改文件。操作权限与操作模式一样,都是针对构件中的文件。通过操作权限的管理,可以划分不同用户对同一构件所承担的工作任务。操作模式和操作权限相结合,有效地解决了多个用户协同开发同一个构件时的并发控制问题。
图3 各种文件操作模式间的转换
4 基于构件的版本管理系统的实现
在上述研究基础之上,研制了青鸟配置管理系统JBCM的核心部分。基于构件的版本管理系统JBVM. JBVM对基于构件的软件开发方法提供了充分支持,其最主要的特点是将构件与文件版本管理分布于两个不同层次,在系统设计方面也就具有相应的层次性。本节主要讨论设计与实现中的关键问题及其解决策略。
4.1 版本库的组织结构
版本库是构件版本演化历史的存储区。版本库中记录的数据分为版本构件和元数据两类。版本构件是用户交付的各类构件,由于同时具有版本信息,故称为版本构件。元数据是管理系统维持自身运行所需的各种控制文件与完成各种版本管理功能所需的信息,包含日志、用户管理、并发控制、权限控制、操作模式、统计与审计等信息。
图4 版本库的层次结构
版本管理系统设计的核心内容包括版本库的组织、结构与维护. 版本库的组织结构分为两个层次: 项目层和构件层.对于系统开发人员来说, 版本库中的项目可以与系统开发中的工作划分相对应, 一个软件系统的整体或子系统都可以作为一个项目. 而构件对应于软件系统
- 教你构造一个51单片机的实时操作系统(08-22)
- 面向构件的门诊部信息管理系统软件架构(10-16)
- 动刚度分析在底盘结构件设计中的应用(12-19)
- 大型结构件多机器人焊接协调及智能化技术概况(12-15)
- 基于和欣嵌入式操作系统的构件化网络协议栈(10-26)
- 军用VXI测试系统的软构件技术(02-05)