美国Merant公司的PVCS,是世界知名的软件开发管理工具。它作为当今优秀的软件开发管理解决方案,可通过对软件开发过程中产生的变更进行追踪、组织、管理和控制,建立规范化的软件开发环境。该软件正日益成为全球越来越多的软件机构解除困境的选择工具之一。
PVCS已成为众多软件公司软件开发的基础支撑平台之一。在软件开发过程中可以完善地管理软件系统中的多种版本;自动创建完整的文档,保障软件的维护;全面记载系统开发的历史过程,包括谁作了修改、修改了什么、为什么修改;管理和追踪开发过程中危害软件质量以及影响开发周期的缺陷和变化;管理需求分析等。
《如何利用PVCS VM进行项目文档管理》
为什么选择PVCS VM? 在软件系统的开发过程中,开发人员经常会遇到这样的问题:
1. 源代码和文档数量的急剧增加;
2. 经常需要与错综复杂的多用户、多产品的软件版本打交道;
3. 开发小组成员间源代码的更新和保存记录变得越来越复杂;
4. 产品的多版本导致磁盘空间占有量浩大。
实际上,上述问题可以归结为一个问题,即开发文档的版本控制问题:开发人员追踪、 记录整个开发过程而保?许多不同版本的程序源代码。从而可以有效地控制产品的设计质量,提高项目开发管理水平。
PVCS VM(版本管理)是软件配置管理工具PVCS 家族中的一个组成部分。软件配置管理可以使软件开发队伍中的任何成员以一致,可重复的方式随时找回和创建应用的任何版本。
VM详细记录了一个软件系统的所有变更,包括谁做了修改,什么时候,和为什么修改。通过VM,你可以轻易地找回任何先前的修订版本,并且确信这些文件不是被忽略重写的。当你检出一个文件时,VM将阻止其他用户对该文件的修改。
通过VM,开发小组成员可以......
* 建立配置文件,能够为所有用户提供一套相同的特征,或者为不同项目提供不同的特征。
* 使用VM 特权设置每个用户的访问级别,以防止对文件和版本管理命令的未认证访问。
* 重建任何文件的任何修订。可以快速而容易地回到任一工作文件的先前修订。
* 用版本锁定来阻止其他用户对文件的修改,以及防止当文件更新时所造成的损失。
* 软件开发中的并行线称为分支。VM可以追踪分支并且保持开发的独立进行,这样你就可以在不影响主线的情况下跟随开发的另一线。
下面我们将应用PVCS VM(版本控制)工具来说明在软件项目中的“源码控制过程”。通过工程" Dynaweb"这个案例,来展示我们已经使用的过程模型,该源码控制系统的目的是:
* 支持团队工作环境:在某个时刻,相同的文件会被2个以上的开发人员同时作修改。当他们做完修改后存盘,错误将会发生。后者覆盖了前者所做的修改,从而造成一些错误产生。而PVCS
VM将控制源码的访问,从而避免超过1人以上用户修改相同文件的问题。
* 保持发布版本变更的历史记录:通常,在产品发布以后,开发人员还需要继续修改源码。当QA报告发布版本的Bug信息时,开发人员所修改的源码与发布版本最初的源码不同。即使我们确实保?了原始发布版本的源码,在QA期间,开发人员要想在最新的版本上进行BUG的修改,这也是非常困难的。而我们使用PVCS
VM保存源码变更的历史记录,那么我们就可以获得任意发布版本的源码。
* 标准发布过程:通常开发人员是在自己的PC机上生成发布程序。这样做会导致一些错误发生,例如使用了错误源码进行发布,应用不同的设置来创建代码,等等。PVCS
VM可以帮助我们集中管理发布构建的过程,以避免错误发生。
在我们开始为源码控制而建立PVCS VM系统之前,我们需要先做一些准备工作:
* 我们需要配置网络环境与服务器连接,还有工作站和开发人员的PC机。网络类型应该支持开发平台和PVCS VM系统。
* 服务器通常是由公司网络部门提供的,需要有足够大的磁盘空间用于源码的存储,并且服务器上已经安装好PVCS VM系统。请参看《PVCS
VM用户指南》的服务器安装。
* 开发小组需要准备一个工作站(PC),在上面建立开发环境,这个环境与开发人员的相同,该工作站用于产品发布。开发环境包括一些构建工具,如编译器、链接器、创建文件等等,并且在工作目录下保存工作源文件。
* 对于应用PVCS VM系统, 网络部人员和至少1名开发人员需要较好受过管理员这方面的培训。每个开发人员都应该知道如何应用PVCS
VM进行开发源码的检入和检出操 作。
PVCS VM是一个多用户的客户服务器网络工作环境。客户端是开发人员的工作站,服务器是公司网络部门文件服务器中的一个。
* PVCS VM服务器是公司网络部文件服务器中的一个,由公司网络部门来维护。这个服务器保存着Dynaweb工程源码的所有主要数据和PVCS
VM系统。它包含有两个主要的目录文件夹:
* PVCS VM目录:该目录是由安装的PVCS VM服务器版本自动生成的。目录中包含PVCS VM服务器版本的所有工作文件和数据库。
* 存档文件目录:该目录下保存着PVCS VM服务器中的所有工程源码档案。
* 工作站包括所有开发人员的PC机和一台作为发布使用的配有标准编译环境的PC机。每一个工作站下都有三个主要的目录文件夹:
* 工作文件目录: 该目录是本地PC机上的一个物理目录。它用于保存从服务器中检出的源码。开发人员使用这个目录下的文件进行开发工作,同时也从该目录下向服务器中检入文件。
* 存档文件目录:该目录的物理位置是在PVCS VM服务器上,并作为一个逻辑目录被映射到每个本地工作站中。这个目录保存着所有工程的源码档案。
* PVCS安装目录:该目录是在本地工作站安装PVCS VM时建立的。它保存着本地工作站中用于运行PVCS VM的文件。
Dynaweb软件项目中的角色分配
为了实现源码控制系统,对Dynaweb项目来说,我们需要分配多种角色来担任PVCS VM中的不同工作。这些角色具有不同的访问权限和负责不同的职责来贯彻整个项目的进行。这里,我们定义4种角色:
* 网管
* 项目经理
* 系统操作人员
* 开发人员
这4种角色分别担负着PVCS VM权限定义中不同的权责,从项目请求启动->项目准备->源码的检入/检出->项目关闭—>数据备份等一系列操作中,各尽其职,如下面要说明的,遵循着源码控制行为。
项目开发中的源码控制行为
在整个开发过程中,源码控制行为就是一条主线,指导着开发过程进行。
1. 主动请求
当项目Dynaweb过程模型的设计阶段完成以后,开发小组将进入项目开发的执行阶段和开始编码。
当程序代码生成,这些原始资源就需要应用源码控制系统来管理。在这个时候,项目经理就要请求?动源码控制系统。
2. 构建和初始化
在网管接受项目经理的请求并完成PVCS VM服务器磁盘空间预?工作后,开发小组开始在服务器上构建PVCS文件夹结构和检入所有原始文件进行初始化。这项工作是由系统操作人员来完成的。这个过程包括:PVCS
VM的安装、创建项目文件夹、配置项目?性和工作路径、对所有工作文件的初始化等。
3. 源码更新
源码更新是开发人员的日常工作。其中包含两部分主要任务:源码的检入和检出。
我们应用这个源码控制系统,对任何源码的更新过程,开发人员都必需遵循下面所列出的步骤:
* 先要检出源码:开发人员需要从PVCS VM服务器上向本地工作目录中检出要进行修改的原始文件。
* 修改本地的工作源文件:开发人员在本地工作目录中修改原始文件并在本机上测试。
* 为更新数据检入修改的源文件:使用“check in”命令将修改的源文件从本地工作目录更新到PVCS VM服务器中。
4. 发布
在每一个里程碑,开发小组都需要向QA或OEM客户发布程序。项目经理将决定是否要产生发布,以及发布版本。发布的操作是由系统操作人员来完成的。系统操作人员首先检出所有源文件到工作空间中,然后在标准的发布环境中创建所有模型。
5. 存档操作
在通常的操作过程中,开发小组只是使用检入、检出和发布操作。存档结构并没有改变(仅仅是添加了修订和版本标签)。但是,有时设计被改变,源文件增加或减少了,存档结构也随着改变。由于设计的改变会影响到整个项目的变动,因此需要由项目经理来确认。存档结构的任何改变都需要项目经理检验并由系统操作人员来完成改变。这个改变的操作包括添加或删除存档文件夹,添加或删除存档文件,生成一个新的分支,等等。
6. 请求关闭
在项目关闭之后,便于项目关闭里程碑今后的使用,源代码档案需要在其它媒介(如MD, 或CD)上做一次备份。如果这些源码不需要改变,那么要将源代码档案从PVCS服务器中删除。如果项目进入维护阶段,源码将保存在服务器中供维护使用。项目经理首先需要请求关闭项目,然后由网管进行备份,并基于请求删除或保?服务器中的源代码档案。
7. 备份
在源码控制周期中,网管将根据《公司服务器维护指南方针》维护PVCS VM文档服务器。这项工作包括对服务器中的源码档案做备份,是由网管人员来完成的。
在执行上面的源码控制行为中,开发小组中不同角色的人员需要根据“批准流程”提交请求表:
* PVCS项目请求
在项目进行中,我们可能遇到核心端口问题。这些情况需要修改深层存档的项目结构(如删除文件夹,添加文件,删除文件或文件移动,等等)研发人员需要请求并遵从“批准流程”来填写PVCS项目请求表,然后请求才被执行。这样做的好处是可以保护存档的完整性,可以使每个研发人员知道这次所做的修订,并且在项目生命周期中保存存档记录。
* 项目发布请求
对于项目发布请求,请求者需要填写项目发布请求表,然后发布才被执行。
这样做的好处是可以在每次修订(由某人、某时、某种目的所做的修订)发布中保?完整的记录。项目经理可以追踪每次修订发布的错误和保持质量控制。
通过PVCS VM进行的版本控制,可以帮助项目小组在整个开发周期内保持开发文档的变更,通过项目存档来跟踪变化,同时可以管理多种存档的修订版。从而使开发过程更加有组织、协同地进行。