UML软件工程组织

 

 

使用 IBM Rational ClearQuest 和 ClearCase UCM 设计发布管理策略
 
2007-12-21 作者:Darrell R. Schrag, 来源:IBM
 
本文内容包括:
这篇文章阐述了怎样利用 IBM® Rational® ClearQuest®, IBM® Rational® ClearCase®Unified Change Management 来制定一个发布管理策略。它向您展示了如何满足项目、发布、构架以及工作区管理的各种需求。您还可以学习如何处理变更请求 ,如何使用组件以及发布单元,以及选择一个集成流策略。最后,您将能够更好地实现调整项目和开发工作的复杂任务,并达到有规律地预定发布策略的目的。

介绍

您向往获取 IBM® Rational® ClearCase®和 IBM® Rational® ClearQuest®,这样您就应该设计一个发布管理策略,并通过 ClearCase UCM 来实现。为了能够拥有给系统进行最好的配置,并使之满足您所有目标的需求,您应该对这个具有挑战性的前景进行四个不同角度的关注:

  • 一方面(项目管理),会有项目管理者们监控着他们开发小组的工作成果,看何时能够达到他们发布最终期限的目标。
  • 接下来的一方面是(发布管理)发布管理者,他们必须与每个正在进行的项目一起工作并决定每个项目的什么功能已经作好发布的准备了。此外,发布管理者还要确定项目之间存在什么样的依赖关系。
  • 第三个方面(构架管理)是应用构架师,他必须与 ClearCase 管理员一起合作来创建合适的 ClearCase 结构,并储存各种应用程序的各种组件,以便管理工作有更好的适应性。
  • 最后一方面(工作区管理)是技术领导者,他必须与 ClearCase 管理员一起合作,提供适当的 ClearCase 工作区以确保以发布为目标的工作与其它工作是相互隔离的。这包括创建必要的流程,以及合适的项目来执行这个必要的隔离。

有时,软件开发中的这四个方面看起来是隔离且相互独立的。为了设计最佳解决方案,提供适当的弹性来满足您发布策略的目标,您必须考虑各个方面,然后设计最有可能让您成功的解决方案。
 

假定

发布管理对于不同的人群有不同的意义,还有很多这个范围之外的发布管理策略。在这个范围的一端是在它的项目计划的基础上,发布一个应用软件的能力。这是一个以应用软件为中心的策略,假定它的项目管理小组确定发布的准备工作已经完成,这个应用软件就会发布。

在这个范围的另一端是一个由部门或者组织控制的协调发布周期。利用这个策略,定期时间的发布将在预先确定的时间间隔内发布,那些发布包括不止一个的应用软件。协调必须是发生在应用软件小组,管理那些应用软件小组的活动项目,以及发布管理人员之间的活动。这篇文章将处理更具有挑战性的发布策略。

定义(正如应用在这篇文章的)

  • 应用程序:一个可配置的单元。在 Java™ 工作区它很可能是一个 EAR (Enterprise Archive) 文档。 众所周知,您可以分别部署一个应用软件的层次(比如一个共享的数据库,或者一个 Enterprise JavaBean 或者由多个应用软件使用的 EJB),但是我们都 不会检查这个文档中的风险。然而,这篇文章任何地方所提到的应用软件,您都可以将它视为一个可配置的单元。
  • 项目:一个资金、人员以及项目管理的成果。一个项目可能包括一个或者更多的应用软件,也可能跨越一个或者更多的发布。
  • 发布:当一个或者更多应用软件的一套新功能已经投入生产环境后的一个协调的、有规律预定的时间。

正如前面所提到的,这四个方面每一个都能对有效生产一个发布的最终目标产生不同的影响。让我调查一下每个侧面,看 IBM®Rational®工具是如何帮助您达到您的目标的。

项目管理

正如您所知,项目经理要对整个项目得计划、资源,尤其是预算负责。每个组织都有它自己创建和定义项目的方法。然而,归根结底就是为计划和进度表管理资源的资金小组。在管理这个项目的计划中,项目经理必须与这个项目的技术领导者一起合作,来评估工作的完成进度。

令人兴奋的是 ClearQuest 能够帮助您,并把您看作是一个项目经理。执行一个变更管理工作流程可以帮组您跟踪被分配的工作,您可以控制被分配工作的命令,还可以了解那些工作分配的状况。您可以调查趋势,当您学习如何将您的计划的时程规划与实际相比较时应该能够改进您的项目计划和时间进度安排。

一个良好的 ClearQuest 计划设计包括缺陷或者变更请求,它将提供所有必要的数据了解正在进行中的活跃项目的状况。ClearQuest 的目标时产生必要的实体,这样项目经理就能够管理与特定项目联合的被分配的任务。您必须与项目技术领导者紧密合作,以了解如何分割工作,决定谁来分配工作,以及了解一个实际的变更到底是怎样负责或者简单。

发布管理

接下来,让我们看看发布管理。作为一个发布管理人员,您拥有绝对不一样的看法。您必须将来自您所负责的应用软件的组合中被配置的二进制文件装配起来。每次发布都包括许多应用软件,并包括许多项目。记住一个项目可能负责许多应用软件的变更。这样导致如此不堪的事实:您的两个截然不同的项目可能设计到同一个应用软件。作为一名发布管理人员,帮助协调那两个项目是您的职责,这样这两个项目就会有一个集成,以次来保证发布的质量。

当预定的发布策略被使用时,发布管理人员与项目经理必须紧密合作。当发布日期确定以后,希望将他们的一些功能置入这个发布中的项目经理就必须从这个发布日期向后进行工作。项目经理就必须计划他们的迭代,并从这个日期向后进行工作,使之与发布日期相吻合。他们必须设计过渡到产品的具体时间,测试的各种水平,以及文件等等,如图 1所示。随着发布日期的迫近,必须确定一次发布所包含的内容,或者被排除的内容。

图1. 面对发布日期的项目工作
面对发布日期的项目工作

在两个项目同时与一个应用软件(在图 1中是A 和 B)发生冲突的案例中,这两个项目的项目经理必须紧密合作,确保有足够的集成时间来一起测试他们的变更。这就迫使这两个相互依存的项目集中关注现实的状况,同时对分配新的活动也会十分小心仔细。

ClearQuest to the Rescue

ClearQuest 是一个十分有价值的工具,能够帮助您管理这个复杂的情况。在这个水平上,项目经理需要十分了解他们小组的活动,同时还要非常清楚为了在发布日期完成任务,他们的项目能够承担多少任务。通过执行管理项目变更的一套简单的实体,比如变更请求或者缺陷(两者在随后的过程中都作为变更请求被提到),您可以获得一个与实际十分接近的项目状况。

变更管理以及活动

与这个项目的技术领导者一起工作,您可以使用这个变更管理来证明这些工作是必要的。这项工作的片断应该直接从一次迭代计划来执行。通过小心地创建必要地变更请求,您将很清楚地知道需要完成多少工作才能满足您项目地迭代目标。

与变更请求联合的工作流程应该加强这个过程,通过这个工程您地组织就可以跟踪并管理变更。如果变更仪器版是您组织的一部分,或者代码检测也是强制被考虑的,那么这个变更请求工作流程就应该反映这些步骤。

变更请求之下的水平是分配给个人的实际活动,如图 2所示。每个便根个请求很可能有更多的活动。此外,一个活动的工作流程应该比较简单,这样在特定的时间您就可以了解哪些活动正在活跃地被执行 ,哪些已经完成,以及哪些还没有开始。这些活动是从战略上来分配的。

项目经理与技术领导者应该紧密合作,从而确定将活动分配给谁以及什么时候分配。从发布中拉出计划好的功能的需求通常是使用这个发布策略的必要条件。您对实际什么活动已经执行,什么活动还没执行了解得越清楚,您对那些关键决定的制定就能做得更好。

图 2. 项目、变更请求以及活动的相关级别
项目、变更请求以及活动的相关级别

构建和发布

现在让我们再次转向发布管理者的几个角度。ClearQuest 如何帮助发布管理人员?反复说过,发布管理人员负责将所有以并列形式分布在产品中的二进制文件装配起来。这意味着:

  • 您要用一种方法组织这个发布,并将这个发布与相关的项目和应用软件联合起来。
  • 您要明白您将制作什么样的官方的构件作为这是发布的一部分。

简单的 ClearQuest 构件和发布实体可以使发布管理人员能够很容易控制这些事情。

在这篇文章中假定您使用的是构架最好的实践,同时假定只有官方的构件才是可用的,可发布到产品中去。在这个案例中,官方的意味着配置的构件是在一个严格控制和可重复的环境下完成的,并且所有的构件源代码要么来自版本控制要么在构件过程中创建的。拥有一个可以为每个官方构件提供数据的 ClearQuest 实体,可以让您访问所有本应该通过官方构件过程搜集的构件信息。

ClearQuest 发布(图 3)只是一个简单的管理实体,您可以用它来搜集信息。发布可以与项目联合,这表明这个项目拥有发布候选。这个发布还可以与构件相关联,这表明发布是由官方的应用软件构件构成的。

图 3. 发布关联
发布关联

目前总概而言,一个设计良好的 ClearQuest 计划(考虑数据的类型,而这些是项目经理和发布经理必须很容易使之生效的)在管理一个成功发布方面是一个长期的过程。对于绝大部分来说,在设计 ClearQuest 计划时这是一个标准,如图 4所示。然而,将这个信息与合适的流程策略联系起来,如您先前所看到的,将把您的解决方案带入下一个水平。

图 4. ClearQuest 是怎样支持项目和发布经理的
ClearQuest 是怎样支持项目和发布经理的

架构管理

继续向前,让我们检测这个构件管理的各个方面。一个应用软件的构架在某些时候可以被分成有明显分界线的层次(或者组件,子系统等等)。几乎所有的现代应用软件都会利用一些先前所开发的东西,比如一个有用的 JAR 或者一个类库。ClearCase 提供一个组件的概念,它使您能够在一个管理结构中共同寻找并紧密耦合一些代码,使它被看作一个单元。

组件

当一个软件应用被插入到 ClearCase 中,软件构架师需要与are architect needs to work with the ClearCase 管理人员紧密合作来决定怎样将这个应用软件作为“组件”插入到 ClearCase 组件(图 5显示了一个例子)中。我们举一个典型的 Java 或者 Java™2 Platform 的实例,Enterprise Edition (J2EE 平台)应用软件。 相当多企业应用软件当今都会利用开源解决方案之一,包括但不限于以下这些:

  • Log4J for logging
  • Struts
  • Spring
  • Hibernate
  • 等等

如果您可以重新使用现存的解决方案为什么还要重新创建呢?

在某些方面,大多数组织都建立了一些框架或者有效代码的类型,并通过为开发人员创建简单的 API 使复杂性抽象化。可能还有一些部门的或者业务单元特殊代码存在于应用软件中,比如可能是一个安全解决方案。

组织结构

有时,一个组织的结构还可以告诉您怎样插入应用软件到组件中。假设您的组织已经具体化了它的 Java 技巧并且将用户界面开发人员(HTML,JSP, JSF 等等)从他们的Java/J2EE 开发人员中分离开来。在这个案例中,您可以选定一个应用软件,将代码分离到这些行周围不同的组件中去(图 5)。

作为后台开发人员应该创建 EJB 解决方案,他们往往被应用软件吸引,前台开发人员提醒他们获取他们的数据。这仅仅是一个例子,告诉您检查应用软件以确保 ClearCase 中的构架上的重要部分被恰当组装是多么重要。

图 5. 组件
 组件

更进一步,有许多可供选择的方法能使 Java 应用软件使用通用的工具 JAR。例如,在 IBM®Rational®Application Developer 中,您可能在一个Web 项目的WEB-INF\lib目录中包含有效 JAR,或者使一个有效 JAR 作为 EAR 项目的有效成分。无论怎样,这些 JAR 变成分散交错的项目,您就会失去构架控制。

从另一方面说,如果您找到一个组件中这些通用工具 JAR ,JAR 的单个拷贝就在版本控制之下,这样您就可以迫使项目来使用那些 JARs,并且不包括将他们拷贝到他们工作区的方法。

您对这个方面关注越多,从长远来看对您就越有利。为您提供 ClearCase 组件特性,这样可以让您利用一个版本控制机制来分离片断代码,从而使您能够用一致的方式来管理代码。您应该充分利用这个特性。

工作区管理

最后,让我们检查一下工作区管理的方面。ClearCase 同时还提供了一个富含平行开发的特性。把 ClearCase UCM 看作是 ClearCase 和 ClearQuest 的顶层,它为工作区管理提供了一个系统的解决方案。流水线是用来分割任务的,UCM 项目是为分离的任务将可利用的组件重新聚集在一起。

通过将单个的 ClearQuest 活动与这套修饰过的用来满足那项活动的文件关联起来,您就可以获取一个变更集。那个变更集就代表这个修饰过用来满足这个变更的文件集。相反,每个文件的每一个版本都可以被追溯到这个活动,因此这个变更请求就可以引起变更。UCM 授予您管理您的项目的变更过程的最终能力。

在任何特定的时间,如果您只需要处理一个应用软件的一个开发工作就已经算很幸运的事了。但是事实上,在当今快速发展的软件开发领域,这是非常不现实的。需要紧急漏洞修补补丁来修补危机产品问题。同时,风险承担者不断地需要新的特性,因此就需要新地开发研究。ClearCase UCM 提供了这样地解决方案,允许您管理这个实体。

ClearCase 流允许您将一个离散的工作集从其它的工作种分离出来。UCM 项目允许您将必需的组件与一个流联合起来,从而提供完成工作所需要的环境。同时 UCM 项目向用户隐瞒了安装视图的复杂性。

UCM 项目还可以让您加强构架管理。例如,如果常用有效的 JAR 文件定位在一个组件中,这个组件在开发小组使用的 UCM 项目中应该被看作是一个只读组件,如图 6所示。另一个例子包括提供构建环境。通过为构件工作创建分离的UCM 项目,您可以提供所有只读源代码组件, 并且只允许这个构架过程更改储存构建目标的组件(如果您在ClearCase 中储存构建目标)。


图 6. 利用 UCM 项目来加强构架管理概念
利用 UCM 项目来加强构架管理概念
流策略

有很多流策略解决方案,而且每一个都有正面和负面的效应。至少,您的 ClearCase 管理小组需要建立一个流策略,并在项目运转时要坚持它。成功的 ClearCase 管理小组通过使用简单的白板或者电脑绘图纸的方法维持他们活动流(图 7)的“主要观点”。通过维持正在运行的主工作流的活动画面,您可以准确地决定是否应该以及什么时候在流之间传递基线,以及从哪个基线来创建新的流等等。

图 7. 主视图的一个例子
集成流

这篇文章的目的不是提供详细的流策略的方法,而是排除一些极端情况。首先,大多数管理人员会说任何时候将变更从发布中拉出来时需要很强的灵活能力。说起来容易,做起来却是难以置信的困难。从表明看,您可能倾向于将每个变更请求分离到到它自己的流上。这样的确给予您根本的弹性,因为:

  • 这个变更对于那个变更请求是与其它所有变更相对独立的。
  • 一旦您选择,您可以自由地将那个变更传递给适当地集成流。

然而,这却是一个 UCM 管理员的恶梦。这种方法为很多传递到其它各种不同流的传递创造了了需求,但是实在是很难管理。活动流太多而不能好好跟踪。

这个范围的另一个极端是一个完整的单个流概念。很显然依靠一个发布经理并不能提供所需的足够的弹性:

  • 这造成了许多依赖性。
  • 它并没有向您提供维持多项任务的能力。

这个良好的策略有时在中间,这篇文章将在接下来的部分检查一个类似的策略(在一个高层次)。

您现在又调查了两个使用 ClearCase UCM 特性的不同侧面,为您提供了一个良好的 ClearCase 基本结构,可以帮助您实现发布的目标。通过适当地将应用软件置于 UCM 组件中,您可以拥有利用受约束地方式提供组件来工作的能力。UCM 项目允许您装配那些必要的组件,同时还可以控制那些组件的使用权。

一个 UCM 项目还可以让您创建用来隔离工作任务的必要的集成流。除此之外,UCM 项目向用户隐藏了视图创建的复杂性。总之,一个流策略一旦被很好地定义,管理以及加强,就会为这个项目领导者提供一个构架为某次发布而管理工作。

图 8. ClearCase 如何支持 UCM
clearcase 关系图

发布单元

到目前为止,您已经审查了这四个方面在 ClearQuest 和 ClearCase 的执行中扮演的角色,使操作自动化并管理发布管理策略。 然而,到目前位置所提到的 ClearQuest 和 ClearCase 之间的唯一集成,是 ClearQuest 活动记录(已经将 UCM 包裹应用于其中)与组成变更集元素的相应版本的 UCM 集成。

项目经理和发布经理紧密配合工作,在他们相应的项目中共同计划变更,从而达到发布的目标。ClearCase 提供了 UCM 项目和流,这样可以允许开发人员将他们的工作分散到指定的目标发布中去。然而,目前您的策略还不能帮助管理这样的需求,即特定的变更管理对应特定的发布,因此只能对应一个具体的 UCM 项目。

在提出解决方案之前,这里有一个策略:对于每个应用软件,它们本身就是项目的一部分,而且这个项目包括发布中的一些功能的类型,此时您需要一个 UCM 项目和相应的集成流来分离工作任务。对于每个变更(有太多的流)的流和单个流开发(有太多的依赖关系)来说这是一个很好的办法。

针对一个具体的发布 ,何时创建集成流和相应的 UCM 项目来分散工作:

  • 您应该为开发人员提供所需的工作空间。
  • 它会给您便于管理的一定数量的流来处理。

然而,项目经理和技术领导者仍然有着令人畏缩的任务,即从策略上适当地将工作任务进行分配。随着工作期限的迫近,项目经理必须不断地评估还为完成工作地数量,并决定工作是否要直接跳转到接下来地发布。

您经常会遇到这样的可能性,即为了在工作期限内完成任务需要收回工作,这个策略只是看起来为了达到正常发布的目的提供了最好的环境。为了完成这个图像,您需要为开发人员指定方向,告诉他们在分配一个活动时应使用正确的 UCM 项目。

为了达到目的,可以在 ClearQuest 中 另外创建管理实体来帮助将所有连接起来。由于没有一个更好的名称,暂且称那个实体为发布单元。这个发布单元的任务是进行单独管理。它是这样操作的:

  • 它向开发人员指明变更将在哪里发生的方向。
  • 它允许项目经理和技术领导者检查他们尚未完成的变更请求的清单,并将他们分派到适当的发布但愿中(因此会指印开发人员到正确的 UCM 项目中)。

发布单元并不是一个银弹,而仅仅是一个组织机制,帮助推定事件将会在哪发生。您对从一个发布中分配一个变更到另一个仍然比较混乱,然后秘密地从一个流撤回一个变更集,移动到另一个流。无论如何,有了这个管理机制,至少您能很好地理解您拥有什么以及它存在的位置。

图 9. 一个发布单元是符合 UCM 的
一个发布单元是符合 UCM 的
 

当项目经理检查他们的迭代计划时,以及为了满足发布预定日期安排工作来完成他们的迭代时,他们可以将每个变更请求分配给它适当的发布单元。这个发布单元于特定的 UCM 项目是相关联的。因而,当开发人员检查她分配的活动时,每个活动都与一个发布相结合,这就说明对于特殊的 UCM 项目有一个具体的分配。

结论

为了达到正常预定发布策略的目的,调解项目和开发工作是相当复杂的问题。ClearQuest 和 ClearCase 提供构建板块,让您自动操作自定义的发布策略,如图 10所示。

图 10. 蓝图:一个自动化的、自定义的发布策略
 蓝图:一个自动化的、自定义的发布策略

如果您记住以下几点,在达到您发布目标上,您将拥有比您实践而获得更好的方法:

  • 注意这篇文章中讨论的四个方面
  • 利用 ClearQuest 的功能有助于您管理这个复杂的事务
  • 将您的流策略与您的 ClearQuest 实现连接起来

参考资料

学习 获得产品和技术 讨论
 

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

京公海网安备110108001071号