作者:周军 发文时间:2004.12.22
随着计算机应用范围的日益广泛深入,应用软件的规模及复杂程度日趋大型化、复杂化,这就导致软件开发的方式也从早期的单兵作战式或手工作坊式渐渐转变为集团化、工厂流水线式的团队协作开发方式。在这种开发模式中会遇到一些非常棘手的问题:
1. 需要将整个软件版本恢复到以前的某一时间的状态。
2. 控制某一程序在同一时间只能一个开发人员修改。
3. 限制随意修改程序。
4. 对每个开发人员编写的程序质量进行评估
如何解决上述问题,管理好项目的每一步运作,成为每一位项目主管亟待解决的课题。
一、在软件开发过程中引入版本控制软件
通过我们的实践,发现在开发过程中采用版本控制软件能较好的解决上述问题。目前,一些版本控制软件能够与各种流行的开发工具进行无缝的连接,它们有机地结合在一起,能够完整地保存开发中对应用程序每一个源文件所有的修改记录,因此充分地利用版本控制软件能够对软件开发进行卓有成效的管理,其具体表现有以下几个方面。
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 SourceSafe
常用的开发工具有:
Microsoft Visual Basic
Microsoft Developer Studio (C++, J++,Interdev etc.)
Sybase PowerBuilder
Sybase Optima ++ (WATCOM C++)
Insprise Dephi
为叙述方便,我们假定开发的基本环境是采用ObjectCycle 2.0作为版本控制工具,PowerBuilder 作为软件开发工具,如果采用别的软件,方法大同小异。在开始之前,我们想对PowerBuilder的开发做一个简要说明。PowerBuilder的程序是放在库中,库以pbl作为文件的后缀名;PowerBuilder的入口程序称为“应用”(Application);要运行程序,需要首先在“应用”的“库搜索路径”(Library Search Path)中添加所有系统需要用到的库;如果一个对象在两个以上的库中存在,系统将引用“库搜索路径”中在前面的库中的对象。
1. 建立用户
首先在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中建立一个新的版本,新版本的目录名程序名都可以选择新的名字,可以保留或放弃以前的修改记录。
三、结束语
总之,在一个项目小组开发环境中,版本控制软件的采用是非常必要的,它就好象建立了一部软件开发的编年史,不仅仅对软件的版本进行了控制,还能够协调多个开发人员的工作,对整个软件的开发过程进行有效的管理,大大提高了软件开发的效率,收到事半功倍的效果。(T117)