级别: 初级 Colin Yu (coliny@ca.ibm.com), 软件工程师, IBM 多伦多实验室
2002 年 11 月 01 日 本文,既本系列的第 1 部分,介绍了小组开发环境并描述了使用 WebSphere Studio Application Developer 4.0 的常见小组开发方案。
© 2002 International Business Machines Corporation. All rights reserved.
引言
WebSphere® Studio ApplicationDeveloper(以下称为 Application Developer)4.0 的其中一个很不错的特征是小组开发环境。它给工作空间项目添加了版本和配置管理功能,并从多个角度让您了解小组特征。
Application Developer 4.0 支持三种软件配置管理(software configuration management,SCM)产品 ? 被称为并行版本系统(Concurrent Versions System,CVS)的开放源代码的版本控制系统、Rational ClearCase LT 以及 Rational ClearCase 完全版。Application Developer 4.0 附带了 ClearCase LT,您可以从 Rational 将它升级到 ClearCase 完全版。Application Developer 将来的发行版将支持其他的 SCM 产品,并能把它们的资源库客户机与工作空间直接连接起来。
本系列文章将向您展示如何用 Application Developer 进行小组开发。本文(即第 1 部分)介绍了小组开发环境并描述了常见的小组开发方案。
第 2 部分向您展示如何安装和配置 CVS,将其作为 Application Developer 的 SCM 资源库。
Application Developer 中的小组术语
工作空间(workspace)
Application Developer
工作空间是开发者个人的专用工作区域。它包含您正在从事的项目的文件夹结构,驻留在文件系统中。它还包含日志和插件元数据。
Application Developer 可以将在本地做出的更改的历史存储到文件系统上的文件中。您可以在工作台首选项(Workbench preferences)中指定这个选项。这些文件以不可编辑的格式存储在目录
workspace/.metadata/.plugins/org.eclipse.core.resources/.history 中。
图 1.
要查看文件的历史,请从文件上下文菜单选择
Compare with或
Replace with => Local history。
图 2.
与使用 VisualAge® for Java 时不一样,如果从工作空间删除了文件,您是
无法从本地历史恢复它们的。
工作空间的缺省位置是
program Files\IBM\Application Developer\workspace 。您可能希望配置多个工作空间来处理不同的开发项目。每个工作空间都被作为文件系统中的一个文件夹创建,源代码将驻留在这个文件夹中。要启动带有一个不同工作空间的 IDE,请执行这个命令:
wsappdev -data myworkspacedir ,其中
myworkspacedir 是工作空间文件夹的绝对路径。
如果您有足够的内存,您可以同时打开多个针对不同工作空间的 IDE。如果您在启动一个 IDE 时没有指定工作空间,那么这个 IDE 将使用安装目录中的缺省工作空间。
资源库(Repository)
一个
资源库就是一个持久的存储器,它协调对项目和小组流的多用户访问。VisualAge for Java 用户或许熟悉资源库。在 Application Developer 中唯一的不同是资源库是由 SCM 产品(比如 CVS 或 Rational ClearCase LT)管理。SCM 供应商提供使 Application Developer 能够与它们的资源库客户机进行通信的插件。Application Developer 与资源库服务器之间的通信通过 TCp/Ip 进行。在 ClearCase 术语中,资源库就是
VOB。
流(Stream)
流是一个共享的工作区域,它使小组成员可以发布他们的工作,并可以使用来自其他人的代码更新。流代表一个共享项目的当前状态。一个资源库可以包含代表不同项目或不同开发阶段的多条流,比如一条流代表新的开发,另一条流代表维护。在 CVS 术语中,流就是
分支(branch)。
同步(Synchronizing)
当您在工作台中进行更改时,资源都被保存在本地工作空间中。您需要发布资源以使其他小组成员可以访问它们。同时,其他小组成员可能已经将更新发布到了流中,您可以使用 Application Developer 访问流。如果您修改了某个资源并试图发布它,而此时流中正好有该资源的一个更新的版本,那么就会发生冲突。在这种情况下,您可以捕获来自流的资源,将您制订的该资源的版本发布到流中,或者也可以把您的工作与流资源合并起来。
分支(Branching)
资源库可以
分支成多条流,这些流用名称加以区别。例如,在 CVS 资源库中,一条流可以对应为干线 HEAD,也可以对应为分支。当同一个项目出现在不同的流中时,各部分资源的发展是独立的。在发生的更改被合并之前,在一条流中发布的更改不会影响其他流。
版本(Version)
文件资源的
版本捕获文件的内容。项目的版本捕获文件夹和文件的配置以及它们的具体版本。您可以在流或工作空间中创建新的项目版本作为项目的当前配置的快照。在小组环境中,您无法显式地为除项目之外的资源(比如文件或文件夹)确定版本。不过,在将它们发布到流时,它们被自动隐式地确定了版本。
Application Developer 中的各个小组透视图视图
下面的是 Application Developer 中的缺省小组透视图视图:
Navigator
Navigator
视图显示工作空间内除由指定的过滤器定义的那些文件之外的所有文件。缺省的过滤器从该视图中除去所有的
.class 文件。要关闭该功能,请从 Navigator 工具栏中的下拉菜单选择
Filters。
图 3.
properties
properties 视图显示工作空间内当前选择的文件的属性,包括上次修改它的时间及其大小。如果选择了资源库中的一项,那么这个视图将显示作者、版本号以及注释。
Repositories
Repositories 视图显示所有的资源库连接以及它们包含的流和版本。
Synchronize
Synchronize 视图执行发布(release)和捕获(catch-up)操作,并让您查看文件间的不同。
Tasks
Tasks 视图显示标准任务窗口。
Resource history
Resource history 视图显示所选择的项的版本历史。
缺省情况下,
Class 文件是没有版本控制的。您可以使用工作台首选项添加或除去过滤器。
图 4.
小组开发方案
这部分说明使用 Application Developer 时典型的小组开发方案。您可以选择一个最适合您的小组、项目及开发过程的方案。
串行开发(Sequential development)
串行开发是最简单的方案。这种方案假设在某一时刻只有一个开发者对一个文件进行操作:
图 5.
在上面的图 5 中,Developer 1 创建了一个文件 FILEA,并将它发布到流中。Developer 2 在他的工作空间内从流捕获 FILEA 的新版本,修改文件并将它发布到流中。现在,Developer 1 捕获了 Developer 2 对 FILEA 所做的更改,修改它并再次将它发布到流中。这个循环将一直持续到 FILEA 被最终确定下来。
单条流中的并行开发
对于大多数项目来说,串行开发是不现实的。通常会有多个开发者同时在一条流中对同一个文件进行操作,这种情况被称为并行开发。请参见下图 6。
图 6.
Developer 1 和 Developer 2 都从流捕获了 FILEA 的版本 1.3。Developer 1 修改它并把它发布到流中。同时,Developer 2 修改了该文件并准备发布它,但他首先必须把 Developer 1 所做的更改与自己所做的更改合并在一起才能够发布它。Application Developer 可以自动检测冲突、比较文件以及合并更改。
使用多条流进行分支
如果您正在同时构建和维护应用程序,您可能不希望立即把更改发布回主干流中去。解决方案是在开发过程中创建一个分支。下面的示例展示了两个开发者如何创建一个分支。
Developer 1 维护项目的当前版本,同时 Developer 2 负责开发新功能。Developer 1 创建一个新流(Stream 2),并从 Stream 1 把项目的版本 1 复制到 Stream 2。Developer 1 从 Stream 2 捕获 FILEA 的版本 1.5 并将其放到他自己的工作空间,修正错误,然后将 FILEA 的版本 1.5.2.1 发布到 Stream 2。同时,他把该项目的版本定为 1.1。Developer 2 从 Stream 1 捕获 FILEA 的版本 1.5,添加新功能,然后将其作为版本 1.6 发布到 Stream 1。现在,Developer 2 应该把 Developer 1 在 Stream 2 中所做的版本 1 和版本 2 之间的更改合并到 Stream 1,并创建 FILEA 的版本 1.7。合并之后,Developer 1 便可以删除 Stream 2。请参见下图 7。
图 7.
致谢
作者在此要感谢 IBM 多伦多实验室的两位软件开发分析师 Ying Zhao 与 Leying Zhu,感谢他们审阅了这篇文章。
结束语
Application Developer IDE 包含一个很方便的小组开发环境,这个环境可以与不同的 SCM 系统通信,并且支持各种小组开发方案。我希望这篇文章会对您有所帮助,并欢迎所有的
反馈。
参考资料
关于作者  | 
|  |
Colin Yu目前在 IBM VisualAge for Java 技术支持小组工作。他从位于安大略湖(Ontario)的沃特卢(Waterloo)大学获得了应用科学硕士学位,并且是一名通过 Sun Java 2 认证的程序员。他还是 IBM 认证的 WebSphere Application Server 专家、VisualAge for Java 专家以及 IBM 认证的 WebSphere Studio 解决方案专家。您可以通过
coliny@ca.ibm.com与 Colin 联系。
|
对本文的评价
|