在两个大型公司内实施 Rational ClearQuest ALM 的经验分享

对变更管理使用 IBM® Rational® ClearQuest® 应用生命周期管理(ALM)软件包,对于许多软件开发员来说仍然非常陌生。本文作者将以自身多年的实施经验,为您介绍在两个大型公司内实施该程序生命管理功能的实践经验。

Jirong Hu, 资深咨询师

Jirong Hu 是一名独立软件配置管理(SCM)咨询师,并且是 IBM Rational 业务合作伙伴。他与 Rational 服务工程师一起,参与了许多大型 SCM 实施,包括 Rational ClearCase,Rational ClearQuest 和 Rational BuildForge 软件。



2011 年 8 月 01 日

下载 Rational ClearQuest 试用版  |  Rational ClearQuest ALM Appliance(预配置系统)
下载更多的 IBM 软件试用版,并加入 IBM 软件下载与技术交流群组,参与在线交流。

将 Application Lifecycle Management(ALM)添加到 IBM® Rational® ClearQuest® 之中引入了一个新的范式。基于笔者在 IBM 公司多年的内部及领域经验,如此的设计是为了帮助在大型公司内处理复杂的需求。以下这些是这一版本的 ClearQuest 比标准版的 ClearQuest 所具有的更多的优势:

  • 使得实现多个不同项目使用不同的过程变得更加容易
  • 极大地减少了交付软件所需要的时间
  • 将 ClearQuest Schema 的变更最低化

注意:
如果您想要得到 Rational ClearQuest ALM 的简介,那么您可以查看 Carolyn Pampino 和 Robert Pierce 所写的由三篇文章所组成的 developerWorks 专题系列,名为 使用 Rational ClearQuest 7.1.0.0 进行程序生命周期管理

这里所描述的经验来自于笔者在两个大型公司中的工作经历,这两家公司一家在美国,另一家在加拿大。两家公司都拥有超过 1000 名的客户。

访问控制

图 1 之中的图表,来自于 IBM 信息中心,显示了在 ALM 之中是如何实现版本控制的。为了将一些概念阐述清楚:

  • Security Context 特性可以用于分割大型的项目区域。例如,如果公司拥有一些敏感性的项目与数据,这些项目和数据只能由特定的人群才可以浏览,那么您就可以为它们创建一个单独的安全策略,并将所有的项目和相关的配置置于安全策略之下。
    注意:
    当您在存储数据时,让数据库在物理上保持隔离状态,仍然是最明智的选择,例如支付信息。
  • 您必须在 ClearQuest 所创建的每一个项目之中定义角色,但是您可以拷贝这些角色,以定义一个新项目的角色。
  • 您可以对每一个角色添加 Rational ClearQuest 用户和组,以定义由谁在该项目中扮演该角色。
  • 一个角色可以使用引用 Role Label 所定义 Approved Actions 预定义系列来进行初始化。您还可以定制一个角色,以适应项目的特定需求。因此,如果未来更改了 Role Label 定义,那么更改不会应用到角色上。
  • 每个 Role 标签内定义了已被许可的操作(Approved Actions),它是系统范围的设置。当您创建一个新项目时,已许可操作的列表来自 Role 标签。但是,当您在 Role 标签中更新已许可的操作时,ClearQuest 并不会为已存在项目的已存在角色更新已存在的已许可操作。
图 1. 访问控制对象模型
访问控制对象映射图

考虑如图 2 所示的一个范例:

  • 项目叫做“WinOnline(R510)”。
  • 为该项目创建了一个 Development Manager 角色。
  • 两个 ClearQuest 用户组,WinOnlineDev 与 WinOnlineLead,会添加到给角色中。
  • 一系列的 Approved Actions 会添加到该角色中。
图 2. 为访问控制所创建的范例项目
Team Members,Members,Approved Actions 的具体情况

图 2 的大图

结果就是,不管人员是属于 WinOnlineDev 还是 WinOnlineLead 组,他们都可以在项目之中执行已许可的操作。

正如您看到的那样,这里所提供的机理可以实施一种非常精细的访问控制。它的功能十分强大,但是只去定义您所需要的,这一点很重要。例如:

  • 您必须要为每个项目创建 ClearQuest Groups,除非您从其他的项目之中对其进行重复使用。
  • Groups 需要添加至每个 ALM 角色(ALMRole)。
  • 您必须为每个角色定义和更新已许可操作,除非您利用了 Role 标签的优势,并在不同的项目之间重复使用它。
  • 团队成员可以更改,这样 ClearQuest Groups 可能需要频繁的更新。
  • 对于不同的项目在不同的时间之内相同的人可能会发挥不同的作用。

备注声明:
从图 2 的中间,您可以看到向角色(Role)添加成员或者组。但是,有时光使用组(优先考虑)是不够的,因为您可能需要将一些人直接添加为一个成员。否则,您需要向相关的组添加该成员,它需要 Windows 域管理员的帮助与支持。

在拥有数千个用户及数百个项目的公司机构之中,需要的时间花在让一切事保持更新,还需要一些时间去修复访问相关的问题。

但是,您可以将该进程简化:

  • 创建更大型的 ClearQuest 组。 不是为每一个项目配置一个 ClearQuest 组,而是为大型的项目区域创建一个组。例如,对于一个银行来说,您可以创建一个名为“Domestic Developers”的组,以将所有的开发员包含在国内银行程序,创建一个名为“Investment Developers”的组,以包含投资银行程序的所有开发员。通过这种方式,对于国内银行区域的所有程序或者项目,您只需要简单地添加大型的公司,而所有相关的开发员要访问所有的项目,不管他们是如何从一个项目跳到另一个项目之中。
  • 根据 RoleLabel 来正确设置 Approved Actions。 我们要开始使用一个 Excel 扩展表,以按照一种非常具体的方式为每一个角色定义批准的操作,如图 3 所示。例如,只有 Development Lead 角色的人才能够创建任务,而不只是开发员。但是我们稍后将会接受大量的请求,将人们由开发员人群移动到开发领导人群,因为在小型项目工作的大量人,不想要一些限制。所以稍后,对于一些项目来说,我们给了开发员许可权,去创建自己的任务。另一种方法是将开发员移动至 Development Lead 角色。
图 3. Sample Approved Action 矩阵
定义每个角色所允许的操作矩阵

图 3 的大图


项目管理

有一种情况,假设我们在一家大型的电信(电话)公司中工作:

  • 软件交付是基于发布的。每一个月都有主要的发布版本,每年总共 12 个再加上每周循环,还有独立的,紧急的以及迫切的测试版本。
  • 有超过 1200 个程序,从超过 100 个程序移动到 ClearQuest 开始。
  • 这些程序中的每一个都可以更改其版本,由不同的 IT 项目或者项目在相同的时间不同的阶段中管理。

接下来是标准的 ALM 方法,我们会使用这些方法

  • 发布标签,例如 R510,MR610,TR710 等等,以追踪主要的版本。
  • IT 项目(如 ClearQuest 中的 ALMProject 建模)以从项目或者程序管理的视角追踪对程序的更改。
  • 对于程序来说,开始时我们会为每个程序创建一个 ALMProject,而发布的标签会贴到 ALMProject,如图 4 所示。
图 4. 一个范例项目
Project AA(R510)

因为发布版本嵌入到每一个项目之中,所以在程序名识别项目名之后,我们就必须补充发布名。对于每一个版本我们以复制相同的程序结束,如图 5 所示。

图 5. 每个版本一个项目
5 列表格的屏幕截图

这种方法存在一些问题:

  • 每个月都有主要的版本,一年共 12 个月。我们必须为每个版本复制所有的程序,一个版本中有数百个程序。有大量的工作要做。
  • 当新项目添加至一个版本之中时,它们必须被复制到其他的版本中。让所有的版本保持同步化是非常困难的。

在概念上,图 6 显示了一些需要考虑的因素:

  • IT 项目用于管理业务驱动的项目。拥有者是一个项目或者程序管理员。
  • 每个程序都会有其自己的生命周期,它应该独立于版本或者程序之外。拥有者是程序或者产品管理员。
  • 基线会识别每个版本中所包含的系列程序更改。拥有者是版本管理员。
图 6. 发布,项目和程序
工作流程图

这里的基本问题是 ClearQuest 缺乏在 ALM 中建模产品的支持。为了解决这个问题,我们可以对 ALM 做一个小小的更改:将发布标签从 ALMProject 移动至 ALMRequest。

所以现在 Application 类型的项目没有发布标签(参见图 7),但是只要它仍然存在的话,那么它就会扩展到所有的版本上

图 7. 将发布信息从项目中删除
没有发布标签的项目

图 7 的大图

您需要将发布信息移动到每一个请求之中,这样提交请求的人就必须填充发布标签了(参见图 8)。

图 8. 带有发布标签的请求
结果显示了移动到请求的发布信息

图 8 的大图

在做了这些更改之后,我们就让模型在概念上正确了,而我们并不需要将程序模型从一个版本复制到另一个版本之中了。


使用 Copy Project 功能

您需要进行一些配置操作,以创建一个新的 ALMProject,包括角色和 ALMWorkConfigurations。从头开始创建一个新的项目,会非常地耗费时间。这就是为什么该 Copy Project 功能非常有用的原因。

该功能复制了大多数需要的项目信息,除了迭代之外。它还复制了 Audit Trial,正确情况下并不需要这一点。

图 9. View ALMProject 界面之上的 Copy Project 按钮
右边的 Copy Project 按钮

图 9 的大图

该功能会调用 ALM_CopyProject 记录脚本(参见图 10)。如果您稍微改动了一下脚本,那么您就在 ClearQuest 外边批量复制独立的脚本,以创建多个新的脚本。(在我们的案例之中,我们要为每一个版本复制项目,其中每一个版本由超过 200 个项目组成)。

图 10. ALM CopyProject 记录脚本
ClearQuest Designer 的屏幕截图

图 10 的大图


进程

在 ALM 之中,我们并不需要使用状态转化矩阵,来实施一个进程或者工作流程。相反,进程会以任务和活动的类型进行嵌入,以处理一个请求。

工作配置

尽管每一个状态记录类型仍然拥有一个状态,那么您就不需要使用它,来实施工作流程。我们不应该添加或者删除这些默认的状态。

让我们将以下的缺陷(ALMRequest)作为一个范例:

  1. 当一个缺陷报告被提交给程序时,CSS(R510),CSS 程序领导的开发将会创建一个分析任务,并将其分配给一个开发员,以分析缺陷。
  2. 如果您需要更改代码时,任务的开发类型将会得到创建,并分配给一个开发员。
  3. 然后请求的部署类型将会发送至环境团队,以在合适的测试环境上部署修复。
  4. 当部署操作完成之时,系统将会创建一个 ReadyForRetest 任务,并将其分配给提交缺陷报告的测试员。
  5. 然后测试员将会返回测试,以确认它得到了修复。
  6. 如果测试失败的话,那么开发团队将会继续创建任务,以修复该缺陷,然后将其再次发送给测试。
图 11. 带有任务列表的范例请求
Request 项视图的屏幕截图

图 11 的大图

这里显示的缺陷管理进程,需要在 ClearQuest 外面进行记录。而在 ClearQuest 里面,您需要为该项目定义所有适当的类型以及工作配置。这就是进程在 ALM 中实施的方式。

但是,挑战在于找到缺陷的真实状态非常困难。您需要定义建立在不同任务状态基础之上的缺陷状态。

图 12. 一个项目之中的所有工作配置
ALM Work Configurations 视图

图 12 的大图

主要的记录及次级的记录

为了让用户的操作变得更加轻松,该配置就变得更加有用了。在进程的基础之上,在访问这些 CreateTask 和 CreateActivity 设施功能时,我们可以定义创建记录的主要类型及次级类型(参见图 13 和图 14)。

图 13. 从下拉菜单之中选择 CreateTask 功能
Request 视图,选择的 CreateTask
图 14. Task 视图之中的 CreateActivity 功能
下拉菜单之上的 CreateActivity 选项

接下来的是,摘自解释它如何运作的 Rational ClearQuest 7.1 信息中心中的信息:

每一个 WorkConfiguration 记录都可以列出一系列的 Primary Children 配置以及 Secondary Children 配置。CreateTask操作(ALMRequest 记录之上)以及 CreateActivity操作(ALMTask 记录之上)将会使用到这些列表。CreateTask 或者 CreateActivity 操作将会创建一系列的记录,在首次配置 CreateTask/Activity 操作时,这些记录将会列在 Primary Children Configs 之中。随后的 CreateTask/Activity 操作将会使用 Secondary 子配置列表来创建更多的记录。

例如,如图 15 之中的设置所示,当用户首次运行 Utilities > CreateTask 时,默认条件下将创建 Analysis 类型的 ALMTask。随后,对该功能的再次调用,将会创建开发类型的任务。它们还会更改任务的类型,以适应您的需要。

图 15. 主要类型及次要类型的工作配置
在什么地方添加主要及次要的类型

这将会节省用户的时间,这样他们就可以从头开始创建新的任务(如果您需要手动添加项目或者相关的请求)。


设施菜单

设施菜单之中提供了很有限的功能,如图 16 所示。CreateTask 和 Delete 很容易理解。调用 QuestionOrComment 将会为该记录创建一个新的评论,然后您必须回到评论并添加自己的评论。

图 16. 从设施菜单中可得到的函数
设施下拉菜单上的选项

在场景之后,这些函数将会调用记录脚本,如图 17 所示。

图 17. 设施函数的记录脚本
从什么地方找到相应的记录脚本

图 17 的大图

同样,您必须创建一个名为 ALL 的项目,以让 Reject_Request,Unreproducible 及 WorksAsDesigned 功能能够正常发挥作用(参见图 18)。

图 18. ALL 项目
ALL 项目细节视图

否则,您将会看到如图 19 所示的 Exception 错误信息。

图 19. 没有 ALL 项目时的出错结果
该操作需要一个 ALL Project

MarkAsDuplicate 及 DuplicateComplete

您可以一起使用这两种功能,来复制一个请求。

当用户发现一个新的请求只是另一个已存在请求的拷贝时,他们可以按照下面的步骤进行操作,以将新请求标记为一个拷贝:

  1. 对新请求调用 MarkAsDupliate。这将会创建一个新的评论,如图 20 所示。
  2. 然后用户编辑评论,以添加已存在的请求 ID 作为“请求 ID 的拷贝 ”。
  3. 新请求的拥有者应该得到通知并对其进行评审(当对一个请求添加评论时,我们会创建一个电子邮件规则以通知拥有者)。
  4. 然后新请求的拥有者就会调用 DuplicateComplete 以关闭新缺陷。
图 20. MarkAsDuplicate 创建一个评论
MarkAsDuplicate 所创建的新评论

图 20 的大图

Reject_Request

为了使用该函数,您必须为 ALMTask 创建 Reject_Request 方案代码,如图 21 所示。

图 21. Reject_Request 的方案代码
Resolution Code 项视图

否则,您将会得到如图 22 所示的出错信息。

图 22. 出错信息
您需要 Reject_Request 来执行该操作

调用 Reject_Request 将会创建一个特别的任务,该任务带有一个名为 Reject_Request 的方案,如图 23 和图 24 所示。

图 23. 为 Reject_Request 1 所创建的任务
The task shown in the Requests 视图中所显示的任务

图 23 的大图

图 24. 为 Reject_Request 2 所创建的任务
创建任务的方案项视图

图 24 的大图

该函数不同于 Change State > Reject_Solution,后者将会把请求改为 Rejected 状态。同样,已存在的任务将会得到注释,请求关闭,而且一旦 ALL Task 与一个请求联系在一起时,就不会再允许其他的任务。

WorkAsDesigned

为了使用该函数,您必须为 ALMTask 创建 WorkAsDesigned 方案代码,如图 25 所示。

图 25. WorkAsDesigned 的方案代码
WorkAsDesigned 的 Resolution Code 视图

否则,您将会看到如图 26 所示的出错信息。

图 26. 出错信息
您需要 WorkAsDesigned 来实施该操作

图 27 显示了创建的任务。

图 27. 从 WorkAsDesigned 创建的任务
Request 视图之中的任务

图 27 的大图

不可约性

为了使用该函数,您必须为 ALMTask 创建 Unreproducible 方案代码,如图 28 所示。

图 28. Unreproducible 的方案代码
Resolution Code 视图

否则,结果就是如图 29 所示的出错信息。

图 29. 如果没有相关的方案代码将会出现的错误结果
实施该操作所需要的不可约性

报告工具

ClearQuest 7.1 所支持的基于汇的报告工具有两种类型:BIRT 与 IBM® Rational® Insight。

BIRT

BIRT 报告可以通过使用 ClearQuest Eclipse 客户端所提供的报告设计器来创建,如图 30 所示。

图 30. BIRT 报告设计器
正在进行的报告设计

图 30 的大图

然后报告设计文件就会上传到 ClearQuest 报告服务器上,以实际运行报告。这就是您作为用户看到报告的位置。

但是,对于这种版本的 BIRT 存在很多小的问题,所以首先您要先对其进行一番试运行。

图 31. 一个范例 BIRT 报告
ClearQuest Reporting 视图

图 31 的大图

Rational Insight

对于所有的 Rational 工具您都可以使用 Rational Insight。它建立在 IBM® Cognos® 数据仓库工具的基础之上,它可以从不同的数据源和不同的工具那里获得数据。但是,它还需要您对数据仓库有很深的理解。对于小型的公司来说,这可能是一项艰难的任务。(参见 IBM.com 上的 Rational Insight 产品页面以得到更多的信息。)

Microsoft Excel

当两种方案都不理想时,您可以使用 Microsoft® Excel®,大多数的公司都会使用它来进行报告。例如,图 32 显示了一个报告,以显示项目中所有更改程序所交付软件的状态。

图 32. 一个范例的 A sample Excel report
带有 6 列数据的范例 Excel 报告

图 32 的大图

在场景的后面,是调用 ClearQuest Visual Basic APIs 的 Excel Visual Basic for Applications 代码(VBA)(参见图 33)。

图 33. Excel VBA 调用 ClearQuest API
显示报告在 VBA 中如何工作的屏幕输出

图 33 的大图

该方案的优势在于,从其他地方获得数据几乎没有限制,只要您编写了代码。该方案的缺点在于,您必须在用户的工作站上安装客户端,以运行报告。但是,因为大多数的报告用于管理,所以这不是一个问题。

参考资料

学习

获得产品和技术

讨论

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Rational
ArticleID=750443
ArticleTitle=在两个大型公司内实施 Rational ClearQuest ALM 的经验分享
publish-date=08012011