一、对象及其源代码的交换
我们可以使用库文件中对象源码导入导出的方式来修改库文件中的对象,或直接修改源码的方式来解决一些问题(PB版本间的转换)。这种方法在开发组内人员较少并能直接交流的情况下不太容易出现对象版本的问题。当人员多或对一个对象的修改比较频繁时,可能会丢失一些修改后的源码。
假设A、B两位程序员同时修改一个对象OA,A先导出该对象,在A对其修改时,B也导入该对象作修改。
A在B之前修改完成并导入该对象。最后当B修改完成并导入该对象时,会把A所作的修改冲掉!
为解决上述问题,可以使用PB的内建版本控制功能:对象的check out和check in。
二、协同开发
解决上述问题的最简单方法是当一个对象被其它人修改时将其锁定,不允许其它人导出或修改,或以某种方法提醒其它人该对象正被别人修改。
PB库画板提供了对象check out和check in功能以满足基本的版本控制需要。
为了使用该功能,您应该建立一个新的库文件以存放从其它库文件中check out的对象来使用并修改该对象。当修改完成后,使用check in功能将修改后的对象送回到原来所在的库文件中。
下面首先创建一个新的库文件。
选择您要修改的其它库文件中的对象,右击该对象,选择"check out"菜单项。
在出现的对话框中选择存放该对象的库文件。
在下图中您可以看到被check out过的对象前多了一个特殊的图标。如果这时您想编辑该对象,会看到下图中的对话框,提示您该对象不可修改。
此时您也可使用该对象的"check out"菜单项,但是最后会有下图中的对话框出现提示您该对象已经被check out。
您可以修改另一个库文件中的该对象,并保存最终的修改。您必须及时地将该对象check in,以便于其他人修改。
选择该对象的check in菜单项后,库文件恢复到check out之前的状态。
三、增强的版本控制方法
数据空间(注:本段内容作者:周军
工作单位:中国银行湖南省分行信息科技处
通讯地址:湖南省长沙市韶山北路263号45号信箱410011
联系电话:0731-4472473 0731-4135012)目前,一些版本控制软件能够与各种流行的开发工具进行无缝的连接,它们有机地结合在一起,能够完整地保存开发中对应用程序每一个源文件所有的修改记录,因此充分地利用版本控制软件能够对软件开发进行卓有成效的管理,其具体表现有以下几个方面。
1. 随时将程序回复到以前某一时间点
版本控制软件可以将某一程序恢复到以前的某一时间的状态,甚至将整个软件版本恢复到以前的某一时间的状态。它能比较程序的不同版本,方便地识别出被修改、删除或插入的具体行,可以将两个不同版本的修改合并到一个新文件中,如果一段重要的代码被删除了,它可以迅速恢复这段代码。
2. 实现程序的互斥性修改
版本控制软件能够实现某一程序在同一时间只能一个开发人员修改。其具体实现方式是:需要修改程序的开发人员从源文件存放处提出(Chink-out)一个程序,这时其他开发人员就不可以再Chink-out同一个程序了,只有当第一个开发人员修改测试完成后,将更新版本的代码做放入(Chink-in)操作,其他开发人员才能Chink-out同一个程序。
当然,如果有必要,现在有些版本控制软件也可以配置成允许多人修改,即同时Chink-out同一个程序,最后可以将不同版本的修改合并到一个新程序中。
3. 对程序修改进行有效的管理
在版本控制软件中可以将用户分为管理员和程序员两种角色,只有管理员可以将程序冻结(Freeze)和解冻(Unfreeze),被冻结的程序是不允许修改的。修改程序的流程为:
(1) 用户提交需求书,程序员提交程序设计说明书,项目主管审核通过后,管理员将程序解冻。
(2) 由程序员Chink-out程序。
(3) 程序员修改程序。
(4) 修改完成后程序员提交测试请求给测试小组,测试小组进行测试;如果测试不通过,转向第(3)步。
(5) 测试通过以后程序员填写本次修改解释,然后Chink-in程序。
(6)管理员将程序冻结。
至此完成一次程序的修改。在软件开发后期或者软件正式投入使用时,这种方式对保证软件的稳定运行能起到非常重要的作用。
4. 将开发环境与测试环境、运行环境进行有效的隔离
比较大型的软件开发项目都有专门的测试小组。采用版本控制软件后,开发人员有自己单独的开发环境,测试人员有自己的测试环境,其具体实现方法见第三部分的说明。
项目进行到一定阶段,可随时用版本控制软件生成一个新的版本,投入运行。生成运行版本时可以选择丢弃以前所有的修改记录。
5. 评估软件开发人员编写的程序质量,控制软件开发的进度。
版本控制软件完整地保存开发中对应用程序每一个源文件所有的修改记录,这些记录包括完成修改程序的开发人员,修改的时间,所进行的具体修改以及对本次修改的解释。项目主管通过调阅这些记录,对程序修改的次数,修改原因和修改情况进行统计,就能够对每一个程序员编写的程序质量进行综合评估。这些记录还能使项目主管对整个项目的进度,程序的编写修改情况有一个整体的了解。
6. 管理文档
版本控制软件不仅为各种开发软件提供了存放对象的接口,还能存放任意类型的文件,这样我们可以在版本控制软件中建立专门的文件夹,用来存放软件开发过程中生成的各种文档,对于每个文档可以存放它的多个版本,供随时查阅。目前常用的版本控制软件主要有:
Sybase ObjectCycle
Microsoft Visual SourceSafe1. 建立用户
首先在ObjectCycle中建立用户,并将用户分为管理员和程序员两种角色,管理员可以对其他用户进行管理,可以冻结和解冻程序。一般为每一位开发人员在ObjectCycle建立一个相应的用户。
如果软件开发人员比较多,可以在版本控制软件中建立多个文件夹(Folder),将一个开发人员所编写的所有程序全部放到对应的文件夹,这样便于查找程序的编写者。如果项目模块比较多,还可以分模块建立文件夹。
2. 建立开发环境
(1) 首先建立一个局域网,将其中一台电脑作为版本控制服务器,安装版本控制软件服务器部分的程序,所有的源程序也安装在服务器上,并将存放源程序的目录共享出来。
(2) 开发人员的电脑只需安装版本控制软件的客户端部分和PowerBuilder。安装好程序以后,每位开发人员运行PowerBuilder,将服务器上共享目录中的库文件添加到应用的“库搜索路径”中。
(3) 在PowerBuilder中建立自己的工作库,将工作库放在“应用”的“库搜索路径”中的最前面。这样做的原因是:每位开发人员只是将自己工作库放在在“应用”的“库搜索路径”的最前面,测试人员的“库搜索路径”包括与他配对的开发人员相应的工作库,这样就实现了每位开发人员都有自己独立的开发环境,未修改好的程序不做Chink in就不会影响其他人员使用已测试过的系统,测试人员也就有了一个独立的基本稳定的测试环境。
3. 将程序登记入库
每位开发人员运行PowerBuilder,在库管理功能中选择版本控制软件为ObjectCycle;用管理员提供的用户名及口令连接ObjectCycle Server;定义用户可用的文件夹;将自己编写的程序登记(Register)到ObjectCycle中。
所有程序登记完成后,由管理员将所有程序冻结。
4. 修改程序
如果要修改程序,必须由用户提交需求书,程序员提交程序设计说明书,管理员才将程序解冻。程序员将程序Chink-out到自己的工作库,修改程序,测试正确后,提交测试请求。测试人员进行测试,如果测试不符合要求,提交程序员继续修改;如果测试成功,程序员填写修改解释,然后Chink-in程序,管理员将程序重新冻结,完成程序的修改。让测试人员测试无误后才Chink-in程序,可避免错误的程序影响其他人员使用和测试应用系统。
在PowerBuilder中,Chink-out为互斥的,如果一个开发人员Chink-out一个文件,那么只有到该程序被Chink-in时,其他开发人员才可以Chink-out该文件,保证了程序的一致性。
在PowerBuilder中,开发人员可以方便地查看以前修改程序所填写的解释,可以根据需要将程序恢复到以前的某个版本,放弃当前版本。
5. 新版本的生成
项目进行到一定阶段,可以在PowerBuilder中建立一个新的版本,新版本的目录名程序名都可以选择新的名字,可以保留或放弃以前的修改记录。