UML软件工程组织

 

 

使用 Rational Team Concert 进行软件配置管理
 
2008-08-15 作者:王 秉坤 ,张 涛 来源:IBM
 
本文内容包括:
本文主要介绍如何利用 Rational Team Concert (RTC) 进行软件配置管理,并通过相关的例子帮助读者了解 Jazz 平台,掌握使用 Rational Team Concert 进行软件配置管理的方法。

1. 什么是 Jazz

1.1 Jazz 平台简介

Jazz 平台是一个应用于软件生命周期的可扩展,可伸)团队协同平台,通过它可以把很多软件生命周期中的任务无缝地集成起来。我们可以把在一个团队中完成不同的软件开发任务比喻成在一个乐队中演奏不同的乐器,每一个演奏者不仅要着力于演奏好自己的乐句,同时还要和乐队整体保持在音调,节奏方面的一致性。乐手之间必须要学会如何配合,如何进行必要的沟通以保证整个乐队的协调一致。同样的,在软件开发流程中,开发人员不仅要保证高质量的完成自己的工作,同时也要协调自己和其他开发人员的工作,以保证和整个项目协调一致。现有的很多软件开发工具都非常有助于提高开发人员个人的生产效率,而 Jazz 在提高个人生产效率的基础上,使整个团队的生产效率得以提高。

Jazz 平台主要的工作是提供一些规则和机制,按照这些实现软件生命周期中各个的模块无缝集成。上述规则和机制被封装在定义好的 API 中。

1.2 Jazz 平台的架构

Jazz 平台的基本架构是一个 Client-Server 架构,Server 端提供服务和 Repository,Client 端通过 HTTP 协议与 Server 端进行交互。Client 端可以有多种形式,比如基于 Eclipse 的客户端,基于 Web 浏览器的客户端,没有图形界面的命令行工具和 Ant 脚本等。Server 端支持 Apache Tomcat 和 IBM WebSphere Application Server 两种 Web Server。

1.3 Jazz 平台的组成

Jazz 平台由一组组件组成,其中最核心的组件是 Repository 和 Team Process,如图 1 所示。其余的组件均在这两个核心组件的基础上开发而成的。

Repository 由关系数据库来支持,目前 Jazz 支持两种关系数据库系统,分别是 Apache Derby 和 IBM DB2 数据库。Repository 主要用来存储 Jazz 平台的相关数据。

Team Process 是 Jazz 平台支持不同流程的基础,在 Rational Unified Method Architecture (UMA) 中,用来定义流程的几个基本概念包括:

  • 活动:定义工作细分以及工作流
  • 能力模式:描述一组可复用的活动
  • 交付流程:描述用于执行特定项目类型的完整和集成的方法,例如迭代流程或瀑布式交付流程
  • 描述符:描述活动中的具体内容元素如任务,角色和工作产品

基于此,一个团队的流程会直接影响到团队队员所要完成的工作。对于小团队,通常没有流程相关的文档,流程定义也不规范,但随着团队的成长,一些规则,指南,规范被记录下来,便于新的团队成员迅速学习,建立相关概念。对于一些规模较大的团队,通常都有一些记录下来的规则,指南,规范去遵循,这些项目团队一开始会借用已有的流程模板,再根据自身项目的特点在模板的基础上进行流程的定制。Jazz 平台提有两种预先定义好的流程可供使用,另外用户也可以根据项目特点自行修改或者创建流程。

SCM 组件主要是提供软件配置管理的相关支持,如源代码,文档的控制和管理等。Build 组件主要提供构建管理的相关支持,如构建定义,构建服务器的管理等。Work Item 组件主要提供工作中数据类型的相关支持,如需求,缺陷,计划等。Reports 组件主要提供报表的相关支持。

除了上述组件外,用户还可以根据需要开发不同功能的组件,Jazz 的这种拓扑结构决定了其优点在于,可以把很多软件生命周期中的任务集成起来进行管理,便于团队与团队之间,成员与成员之间的协作。


图 1. Jazz 的组成示意图
Jazz 的组成示意图

1.4 Jazz 平台的基本概念及拓扑结构

如图 2 所示,所有的 Jazz 工件都存储在 Repository 里面。Repository 里面包含项目域 (Project Area),用来记录项目相关的信息,如项目状态和项目流程。项目流程包含两个元素,一个是流程详细定义,主要定义项目中的迭代过程,以及每次迭代所需要完成的工作;另一个是流程描述,这部分对应一个 Web 页面对流程进行详细的解释,项目域包含团队域 (Team Area),后者用来描述参与相关项目的团队,包含多方面的内容,有团队成员组成情况以及团队成员在项目流程中的角色,有团队对于项目流程的定制,有团队关于构建的定义。团队成员工作时,在 Repository 工作区 (Repository Workspace) 中,在源码控制机制下操作项目文件,团队成员可以检出项目文件到自己的 Repository 工作区,也可以把自己对项目文件的变更检入。综上所述,连接到 Repository 后,用户就可以创建项目域,连接项目域就可以获得项目的相关信息,如项目状态和项目流程,同时还可以创建团队域,团队成员登陆后可以创建自己的 Repository 工作区进行工作。在第二章中,将结合 Rational Team Concert 进一步介绍 Jazz 平台的基本概念及拓扑结构。

图 2. 拓扑结构示意图
拓扑结构示意图

2. Rational Team Concert 简介

Rational Team Concert 是 Jazz 平台的基于 Eclipse RCP 的客户端,是一个为软件开发团队创造协同工作环境的软件。下面就介绍 Jazz 平台中的相关概念和思想是如何 Rational Team Concert 中体现的。

2.1 Rational Team Concert 中的一些基本概念

要想使用 Rational Team Concert 进行软件开发,首先有必要对软件中一些概念进行熟悉,这样才能更好的理解 Jazz 平台的协同开发思想。几个基本概念为:

1.Repository:用来存储 Jazz 的相关数据,每项数据有一个唯一的 ID 所标识。Repository 组件的 API 提供了创建,更新,追踪和删除数据项的功能。

2.项目域 (Project Area):项目域是项目在系统中的表示,提供了对项目流程,进度安排,团队架构等的定义。总之,项目域可以管理项目相关的方方面面和项目各要素之间的联系,范围涵盖项目的开发和维护。

3.团队域 (Team Area):团队域是团队在系统中的表示,提供了对团队成员,成员的角色,权限,团队所要完成的开发任务,团队基于项目流程的定制等方面的定义。一个项目域可以包含有一个或多个团队域。

4.工作项 (Work Item):工作项是对用户要完成工作的描述,涉及项目不同的模块或功能工作项可以被集合在 Work Item Caretory 里面,便于查看。

5.流程 (Process):流程在项目域中定义,不同团队可以根据自身情况在团队域中进行定制。流程可以根据项目复杂度,规模的不同而不同。与流程相关的还有两个比较重要的概念 ::

(1)流程模板 (Process Template):不同的流程模版提供了不同侧重的对流程的详细说明以及迭代结构的描述,用户可以在流程模版的基础上稍作修改以得到适合自身项目的流程定义。

(2)流程行为 (Process Behavior):不同的流程,有对操作的先决条件及后续操作的不同定义,流程行为用来定义流程中操作的先决条件及可能的后续操作。

6.开发基线 (Development Line):代表项目域中一组独立的开发活动,这些开发活动有自己的目标,可交付程序,团队,流程,进度安排等。比如一个项目域中包含对某项目新版本的开发以及旧版本的支持和维护,就可以定义两条开发基线,一条描述新版本的开发,一条描述对旧版本的支持和维护。

7.迭代 (Iteration):项目开发由不同的开发周期组成,迭代定义了不同开发基线下不同的开发周期。

8.角色和权限 (Roles and Permissions):在项目域和团队域中都可以对角色进行定义,一个团队成员可以被分配一个或多个角色。权限主要定义了用户所能够执行的操作,不同的权限,可执行的操作也不同。

第三章将结合 Rational Team Concert 的操作,对上述定义最进一步的阐述。

2.2 Rational Team Concert 的用户接口

Rational Team Concert 的用户接口包括工作台,视图,编辑器等等。

工作台指的是桌面集成开发环境,其中,不同的文件可以用不同的编辑器打开进行编辑,

如果没有与文件相关联的编辑器,则会提示调用外部编辑器来打开该文件。不同的视图提供了不同的展示项目或团队信息的形式。

3. 使用 Rational Team Concert 构建项目,团队及流程

建立了相关概念之后,本章将阐述如何使用 Rational Team Concert 开始软件开发的工作,

包含以下几个步骤:

  1. 创建 Repository 连接
  2. 构建项目
  3. 构建团队
  4. 为团队配置项目流程

3.1 使用 Rational Team Concert 创建 Repository 连接

用户首先需要从 Rational Team Concert 连接到某个 Repository。Repository 的连接入图 3 所示,在 Team Artifacts 视图中,右键选择 New,单击 Jazz Repository Connection 之后会弹出创建对话框,如图 4 所示。在创建过程中有两个必须提供的信息:

1.Uniform Resource Identifier (URI) ,通常由 Web Server 及端口信息组成:

http://<server>:<port>/jazz

2. 用户名及密码

图 3. 创建 Repository 连接
创建 Repository 连接

图 4. Repository 连接对话框
Repository 连接对话框
 

3.2 使用 Rational Team Concert 构建项目

连接到 Repository 后,可以创建项目域,项目域主要被用来管理项目的发布,团队的结构,项目流程和进度安排等。

如图 5 所示,在 Team Artifacts 视图中,选择已经创建的 Repository,右键选择 New,之后单击 Project Area 来创建项目域。如图 6 所示,Repository 的名称已经自动被填入,填入项目域的名称后进入流程选择界面,如图 7 所示。Jazz 提供两种流程模板,分别是 Eclipse Way 和 openUP,Eclipse Way 流程是一套适用于敏捷开发的迭代式流程,如图 8 所示。 openUP 流程则保留了 Rational Unified Process(RUP) 中的很多元素,如图 9 所示,流程中包含了 RUP 中的四个阶段,即初始,精化,构建和交付。用户也可以根据自身项目的特点创建或修改流程模板,下面 3.4 节会重点对这一过程进行描述。


图 5. 创建项目域
创建项目域

图 6. 项目域对话框
项目域对话框

图 7. 流程选择对话框
流程选择对话框

图 8. Eclipse Way 流程
Eclipse Way 流程

图 9. openUP 流程
openUP 流程
 

3.3 使用 Rational Team Concert 构建团队

创建项目后,可以创建团队域,部署团队人员,分配团队成员在项目流程中的角色,定义团队在完成项目的过程中所需要的信息。

如图 10 所示,在 Team Artifact 视图中,选择刚刚创建的项目域,右键选择 New,之后单击 Team Area 来创建团队域。如图 11 所示,项目域的名称已经被自动填入,选择在项目流程中定义的开发基线 (Development Line),填入团队域的名称即可创建成功。

在团队域中可以定义团队成员,图 12 为创建 Jazz 用户的对话框,填入相关信息后,进入图 13 所示的权限配置界面,配置好用户权限后用户就创建完成了,并被直接添加到团队成员中。Jazz 平台提供了 4 种用户权限可供选择,分别是:

1.JazzAdmins: Repository 的管理员,对于 Repository 具有完全的读写权限,可以对 Repository 内的数据进行任何操作。

2.JazzDWAdmins: 可以控制 Jazz 服务器端数据的 Repository 管理员。

3.JazzGuests: 对于 Repository 只有读权限的 Jazz 用户。

4.JazzUsers: 对于 Repository 具有常规读写权限的用户,如可以更改项目域,流程模板,但不能创建,可以创建或修改团队域,构建定义等等。

添加了团队成员后,要对他们在项目中的角色进行分配,如图 14 所示,在 Eclipse Way 流程模板中提供了 2 种角色可供选择。如图 15 所示,在 openUP 流程模板中提供了 6 种角色可供选择。通过这种方式 Jazz 管理员可以轻松的添加或删除团队成员,把需要的团队成员添加进来,让他们各司其职,协作进行软件开发。如 Jazz 平台为我们所呈现的,软件开发就像乐队演奏乐章,把需要的音乐家都集中起来,分别演奏不同的乐器,就可以聆听宏伟的乐章了,如图 17 所示。

图 10. 创建团队域
创建团队域

图 11. 团队域对话框
团队域对话框

图 12. 创建用户
创建用户

图 13. 配置用户权限
配置用户权限

图 14. Eclipse Way 流程模板定义的项目角色
Eclipse Way 流程模板定义的项目角色

图 15. openUP 流程模板定义的项目角色
openUP 流程模板定义的项目角色

图 16. openUP 流程模板定义的项目角色
openUP 流程模板定义的项目角色

3.4 使用 Rational Team Concert 配置项目流程

创建项目后,可以根据自身项目的特点对项目流程进行配置,项目流程一般由开发基线 (Development Line),迭代 (Iteration),项目角色及工件类型组成。在 Rational Team Concert 中用户可以修改或创建开发基线及迭代以完成对项目流程的配置,通过修改迭代的起止时间来安排项目的进程。如图 17 所示,在打开项目域,在右侧的流程迭代列表中,可以完成上述操作。

用户同时还可以增加项目角色,对不同角色分配权限。在项目域左下角选择 Process Specification 选项卡,可以看到包含三部分内容,即上面提到过的角色定义,工件类型以及流程描述,如图 18 所示。

Role Definition 中主要定义了项目流程中的各种角色,如下所示为对项目经理的描述与定义,其他角色定义方法与其类似。用户可以自行编辑

<role-definitions>
<role-definition cardinality="single"
   description="Leads the planning of the project, 
   coordinates interactions with the stakeholders, 
   and keeps the project team focused on meeting the project objectives."
  role-id="project_manager"/>
</role-definitions>

Project Configuration 中主要定义了项目流程的初始状态,项目域中的角色权限以及工件类型。

如下所示为对 default 用户的权限设定,其他的与其类似。用户可以自行编辑。

<permissions>
<role id="default">
<project-operation id="com.ibm.team.process.server.saveProjectArea">
 <action id="any"/>
	</project-operation>
 <project-operation id="com.ibm.team.workitem.server.saveCategory">
 <action id="any"/>
 </project-operation>
……
<permissions>

如下所示为对 Defect 类型的描述,其他类型定义与其类似。用户可以自行编辑。

<type
id="defect"
name="Defect"
category="com.ibm.team.workitem.workItemType"
dimmedicon="platform:/plugin/com.ibm.team.workitem.common/icons/obj16/wi_bug_dim.gif"
icon="platform:/plugin/com.ibm.team.workitem.common/icons/obj16/wi_bug.gif">
<alias name="bug"/>
</type>

Team Configuration 中主要定义了在用户域中的角色权限,行为以及开发基线和迭代的结构。

如下所示为保存 WorkItem 行为的描述,其他行为与其类似。用户可以自行编辑。

<behavior>
<role id="default">
<operation id="com.ibm.team.workitem.operation.workItemSave">
		<preconditions>
<precondition id="com.ibm.team.workitem.advisor.requiredProperties" 
xmlns="http://com.ibm.team.workitem/requiredProperties"
 name="Required Properties"
 description="A minimum set of properties must be set in order for 
 the team to know how to classify the workitem.">
<properties workItemTypeCategory="com.ibm.team.workitem.workItemType">
 <property id="summary"/>
					</properties>
 </precondition>
		</preconditions>
</operation>
……
</behavior>

如下所示为开发基线及迭代的结构,用户也可以根据项目情况自行编辑。

<development-line id="development">
 <iteration id="inception">
 <iteration id="I1">
 <iteration id="work">
<behavior>
 <role id="default">
<operation id="com.ibm.team.scm.client.deliver">
</operation>
 </role>
</behavior>
</iteration>
 </iteration>
</iteration>
……
</development-line>

通过对 Process Specification 的编辑,用户可以从多个方面对项目流程进行创建,修改,定制自己的流程,更好地服务于项目开发。

图 17. 配置项目流程
配置项目流程

图 18. 项目流程的详细定义
项目流程的详细定义

4. 用 Rational Team Concert 进行变更管理及版本控制

Jazz 中的 SCM 组件,主要用来进行源代码,文档和其他工件的管理,使用 SCM 组件可以对项目进行变更管理及版本控制。

4.1 用 Rational Team Concert 进行变更管理及版本控制的相关概念

在使用 Rational Team Concert 进行变更管理及版本控制之前,有必要对其中涉及的一些相关概念进行阐述。

1.工作区 (WorkSpace):工作区是提供给用户来浏览或修改组件的地方,我们可以在 My Repository Workspaces 选项上单击右键来创建,如图 19 所示。创建的过程中需要选择 Repository Connection 和项目相关的流,方可创建成功。

2.组件 (Component):组件由一个或多个工件组成,比如一些描述网页内容的文档,一些项目中的 Eclipse 插件。创建工作区后,可以选中工作区,单击右键来创建组件,如图 20 所示。

3.流 (Stream):流由一个或多个组件组成,流和组成它的组件可以和一个或多个变更集相关联。流还和项目域相关联,在项目域创建成功后,会自动生成缺省的流和组件。也可以通过如图 20 所示来创建。

4.变更集 (Change Set):顾名思义就是一些相关变更的集合,变更集只能描述针对一个组件进行的变更,其中的变更会被一起交付给某个流。变更集通常会和某一个工作项 (Work Item) 相关联,比如 Defect,Enhancement(这些工作项可以在项目域中的 Project Configuration 中定义),和工作项相关联的目的是基于工作项给出具体的关于变更的描述。通常用户要做出变更时,会创建变更集,如图 21 所示,可以在 Pending Changes 选项卡中选中某个组件,单击右键进行创建。创建后会出现一个 Outgoing 文件夹,里面是生成的变更集,如图 22 所示,为 Joshua Bell 创建的变更集,单击右键和某个工作项关联后,关于工作项的修改就会反映在变更集中。选中变更集单击右键可以选择交付,挂起,忽略或者撤销当前的变更。变更集一共分为三类:

1) Outgoing 为当前用户创建,只能选择交付,挂起,撤消或者回滚当前的变更。

2) Incoming 另一用户创建,当前用户浏览时会显示为 Incoming,当前用户只能选择接受变更,如图 23 所示为用 Karajan 用户登陆,浏览到 Joshua Bell 做出的变更。

3) Suspended 为挂起的变更,挂起变更的目的是用户停止对变更集的更改,当不同用户的变更出现冲突时,可能会将变更挂起做进一步的调研,对于挂起的变更只能进行撤销或者恢复动作,如图 23 所示为用户 Karajan 挂起的变更。

图 19. 创建工作区
创建工作区

图 20. 创建组件或流
创建组件或流

图 21. 创建变更集
创建变更集

图 22. Outgoing 变更集
Outgoing 变更集

图 23. 变更集的类型
变更集的类型

4.2 交付变更

通过交付操作,可以使团队的其他用户看到某用户做出的变更。通常来说交付变更的全过程为:

  1. 创建变更集
  2. 为变更集关联工作项
  3. 修改工作项中的描述或相关文件
  4. 标记变更集为完成状态
  5. 直接交付变更或提交变更给某些团队成员审查

4.3 版本控制机制

Jazz 采用乐观锁模型来控制版本,用户无需对要修改的文件进行检出或锁定。用户每交付一次变更,就会增加一个版本。如果两个用户都同时对同一个文件进行了修改,在这种情况下,交付时会有可能发生潜在的冲突。

当用户 Karajan 在修改某个文件时,用户 Joshua Bell 交付了对于该文件的变更,这时,变更会出现在用户 Karajan 的 Incoming 文件夹下,Jazz 会自动把 Incoming 文件夹下可能造成这种潜在冲突的变更集以高亮显示。用户 Karajan 可以在 Compare Editor 中打开 Outgoing 和 Incoming 文件夹下的变更集,以对比两个用户所做出的变更,根据对比结果选择不同的处理方法。用户可以选择回退以消除可能产生冲突的片断,选择撤消以删除自己做出的更改,选择挂起从而挂起自己的变更做进一步审查,也可以选择接受其他用户的更改,再利用 Jazz 提供的融合功能,将不冲突的片断融合在一起。

总结

本文简要介绍了 Jazz 平台,以及使用 Rational Team Concert 进行软件配置管理的方法,先从使用 Rational Team Concert 创建项目,组织流程,创建团队入手,进而阐述了如何将 Rational Team Concert 应用于软件开发过程,进行变更管理及版本控制。

参考资料

学习
  • 查看 Jazz 入门教程。通过本教程,您可以了解 Jazz 的基本功能,并掌握一些主要 Jazz 组件的使用方法。您甚至可以将本教程作为 Jazz 的使用指南。
  • 教程: 体验 Jazz,体验 Rational Team Concert Express:您是否想了解和体验 RTCE 带来的全新协作开发方式?那就一起跟随本教程,抢先体验 RTCE Beta 2,将最先进的协作开发技术应用起来!
  • 安装 IBM Rational Team Concert Express-C:请跟随本文一起下载、安装可免费下载和使用的 Rational Team Concert Express-C,并体验这一最新的协同软件开发和交付技术。
  • 阅读 Jazz 平台技术概览。本文是对 Jazz 平台的技术概览介绍,将介绍 Jazz 平台的体系结构,以及对 Jazz 平台技术预览版中所包括组件的概述。
  • 访问 developerWorks 上的 Jazz 资源中心,这里汇聚了关于 Jazz 的权威中文技术资源,为您全面介绍 Jazz 这一全新的软件协作开发技术平台。
  • 访问 Jazz 新手入门:从这里起步,了解 Jazz 平台,尝试全新的协作开发方式。
  • Jazz FAQ:这是一个全面的 Jazz 常见问题列表,能为您解答关于 Jazz 这一技术平台的常见问题。
  • 访问 Jazz Space。在 developerWorks 这个专门为 Jazz 平台准备的 Space 里,您将发现更多关于 Jazz 的技术资源和信息。
  • 订阅 Jazz 相关文章和教程的 RSS 提要,随时获取最新的 Jazz 技术文章和教程。
  • 订阅 Rational Team Concert 相关文章和教程的 RSS 提要,随时获取最新的 RTC 技术文章和教程。
  • 访问 IBM developerWorks 中国网站 Rational 专区,获得关于 IBM Rational 软件交付平台(Rational Software Delivery Platform)产品的技术资源和最佳实践。
获得产品和技术 讨论
 

组织简介 | 联系我们 |   Copyright 2002 ®  UML软件工程组织 京ICP备10020922号

京公海网安备110108001071号