适用于面向服务架构的资产生命周期管理

日期: 2008-07-27 作者:Grant LarsenJack Wilber 来源:TechTarget中国 英文

  来自于Rational Edge:本文研究分析了在面向服务的架构(SOA)解决方案的开发过程中,资产生命周期管理实践、工具和标准的应用价值。服务的有效生命周期管理使组织能够为控制、管理和应用应用工具和方法,并且通过重用这些资产增大SOA开发的优势。


  面向服务的体系结构(SOA)对于各个组织来说还有相当大的探索空间,使之对于快速变化的市场需求和业务优先权变得更加敏感。通过SOA,架构师们可以将个体的业务功能和程序——这些被看作是典型的服务结合起来并重新加以利用,从而实现一个复杂业务的解决方案。


  从业务的角度来看,由于使得组织可以从现有业务的解决方法中快速整合出一套方案,所以SOA能够更好的作出响应并缩短到达市场的时间。从IT的角度来看,SOA能够明显的降低大规模开发工程的复杂度,使之更具有灵活性,并且加快解决方案的递送(这种方案通过自动且集成的业务流程将真实价值递送至业务中)。


  在所有这写好处中,最重要的是可用性的概念。服务也是一种资产,其价值在重用过程中随之增长。将某种服务应用到一种新的解决方案时,所花费的时间和精力越少,其价值就越大。换句话说,服务的价值是靠其一次又一次的被重用而保持着,是靠将重用其所付出的努力降到最低限度而保持着的。因此,用于服务的有效的周期管理无论对于当前还是未来,都是开发阶段取得成功的关键。它使得各组织为控制和管理应用工具和方法,并且以某种方式应用这些资产以增强SOA所带来的好处。


  当开发团队可以从一个被鉴定和证明了的资产和解决方案的智库中汲取营养时,各组织就能够改善其反应能力,到达市场的时间以及劳动生产力。由于开发者在使用那些资产时无需了解其内部工作原理,因而同样可以减轻工作的复杂性。


  什么是资产?


  大约五年以前,一个软件产业领导者——包括IBM公司,Rational软件公司(在其被IBM收购前)和微软公司——的协会,开始探索帮助各组织重新制定软件投资目标的方法。该社团将资产定义如下:


  ……一种工件的集合,根据给定的要求提供一种解决问题的方案。


  资产拥有一些可变的要点,它允许用户通过设置不同的参数来进行定制。可以被进行这种操作的资产称作模板。今天,IBM Rational工具集将这种头脑中的定义付诸实现。


  资产也包括关于它们使用的说明或者规则,这是为了尽量减少开发者在发现问题、分析问题、解决问题以及测试该资产的过程中所投入的时间。资产同样描述了在何种开发过程和业务内容的情况下,该资产能够并且可以被重用。


  资产包含的工件类型依赖于重用的背景。在一个开发的情境中,资产可能包含需求、模式、源代码和测试。所建立的服务应该包括这些类型的工件,来帮助其他开发者有效的重用此项服务。


  资产可以是一项服务,一种模式,一种组件,或者其他的解决方案的元素。当构建一项服务时,开发者通常重用模式,组件,或者遗留下来的系统工件。然后,同其他服务一起,它被合成到一个应用程序中,作为SOA解决方案的一部分。


  我们注意到,资产的定义和模式的定义是如此的相似。这是由于设计,作为在这两者之后的基本概念,将背景、问题以及解决方案放在一起。两者的不同之处在于细节。资产是一个比模式更一般的概念。严格来讲,资产中那些可变的要点都是在工件层次上的,而模式则将其参数和参与者(例如各种各样可变的要点)应用到整个模式当中,它并不要求应用到每一个特定的工件上。


  RAS:资产的一种标准


  在该协会对“什么是资产?”这一问题做出回答后,新的问题又出现了:我们如何来组织资产?我们需要知道哪些信息?于是他们创造出重用资产规范(RAS)来回答这些问题,随后将其提交给OMG(对象管理组),并最终于2005年被采纳为行业标准。


  正如前面提到的,软件开发工件包含很多种类型,它们可能以多种形式存在并表现为的多种类型。这种差异性会增加发现、理解和重用他人工件的成本。通过对组织、构造、描述以及打包这些工件的一整套方法的详细说明,RAS为资产提供了一致性和可预见性的保证,这一方法显著减少了资产管理和消费的开销。


  举例说明标准化资产封装的价值,考虑一下标准化对于那些保证隔日到达的航运公司们所起到的帮助作用。通过为顾客提供标准化的信封和信盒以及要求标签上标有一致的信息,这些公司建立起一套可靠的跟踪系统。另外,这些策略使得针对市场的计划和决定变得更为便利,从决定传送带的宽度,到估计一架飞机中能装下多少包裹以及需要多少次航班。


  资产标准化以类似的方法提高了效率,使得软件开发工具可以更加高效率和自动化的操作,并且为使用它们的团队提高了生产力。使用RAS,开发者能够将每一个资产封装在一个元数据包中,包括头部的属性,例如资产名称、版本和描述(请见图1)。



  图1:RAS元数据结构


  正如图1所示,RAS资产具有一个分类项以方便搜索和浏览;该项可能包括简单的名称/值描述符,以及背景说明,例如特定的域,开发,或者展开上下文。


  图1中所示的 解决方案项是资产中的“肉”;它描述了提供解决方案的工件的集合。


  使用项提供了关于申请和定制资产,使用可变要点的指导。一些使用信息可能自动使用向导,它们同其他资产工件一起被储存在解决方案项中。


  相关资产项定义了该资产同其他资产间的相互联系,有助于创建资产的集合或家族,从而形成更大规模的解决方案。


  为了支持各组织中多种程度的重用,仪式和流程完备情况,许多RAS资产项都是可选的。RAS同样可以通过概要文件来扩展和定制。OMG目前提供三种概要文件:默认概要文件,默认组件概要文件,以及默认Web服务概要文件。


  默认概要文件用来封装任意类型的软件资产,而两外两种概要文件分别供组件和Web服务使用。


  资产生命周期


  在关于如何定义资产和如何标准化其组织及封装结构这些问题上取得共识之后,Rational的下一步工作就是更全面的描述一个资产的周期:通过这一流程确定和发现;收获和创造;鉴定和发表;重用和规范;直到最终退出。正如图2所示的那样,资产生命周期包括四个步骤分明的工作流程:确认,生产,管理和消费。



  图2:资产生命周期及其工作流程


  IBM公司倡导一种被称作基于资产的开发模式(ABD)的软件开发方法。它是一种基于这些工作流程的综合的解决方案,它为每一步工作流程提供程序、工具和标准的支持。使用IBM Rational统一流程?(简称RUP)?所提供的流程向导,开发团队就会知道谁应该在何时完成何项任务。他们同样会知道如何在IBM Rational软件开发平台上使用工件来开发结构化的解决方案、模式以及其他基于一整套包括RAS和UML在内的定义好的标准的工件。IBM也提供若干RUP的插件,包括一个ABD插件和一个用于SOA的RUP插件。这些插件通过SOA特定的概念、指导、活动、工件和工具指导者将面向服务的架构和面向服务的解决方案整合到RUP框架之中。


  资产生命周期,项目周期和RUP


  注意到资产生命周期是独立于项目周期的,而不是与之相互联系,这一点很重要。资产作为资产生命周期的一部分被生产出来,它们可能在许多项目中被使用,每一个项目都处于它自身的周期之中。随后,独立于任何一个项目的资产将会退出其所参与的资产生命周期。资产典型的是在完备中成长:例如,从被单一的团队重用中到横跨许多团队和项目的更大规模的重用。


  同样道理,与ABD和资产生命周期相关联的功能和用例活动独立于那些与RUP相关联的功能和活动,而并非与其相关。资产个体的类别对那些通常由它们实现的ABD和RUP功能来发出指令的资产很感兴趣,被它们用来进行访问和操作的工具同样如此。


  例如,RUP结构的功能中的一项活动可能同样在资产生命周期中呈现为资产消费者的功能。这种情况下,工程师将搜索、浏览并且重用资产。工程师将仔细察看与结构相关的资产,例如模式,还将使用一种模式工具,例如IBM Rational Software Architect


  与此相似,资产生命周期用例活动和RUP活动特定的结合能够同某个确定的RUP阶段相关联起来。架构师,作为资产消费者的角色,将在RUP的初始和细节阶段极力搜寻资产。而测试员同样作为资产的消费者,他们将在RUP的构建和转换阶段搜寻测试实例或者其他资产。每个人何时寻找资产没有一个强制性的约束,但是在每一个特定的RUP阶段,我们都会看到某种角色会较之其他人完成更多的搜寻工作。


  简而言之,资产生命周期的功能和活动自然的分布在现存的开发流程中,包括那些用RUP描述的流程。进一步,每一次功能和活动的的特定结合都暗示哪一种资产将会具有价值以及哪一种工具将会更加有用。


  资产生命周期是在项目的范围内运转,我们在那里会看到许多RUP应用。但是资产生命周期又超出任何一个给定项目的边界;就像我们在图3的底部所看到的资产管理和资产生产盒那样,图3阐释了在一个项目中,资产鉴定,资产生产,资产消费可以在何处发生。



  图3:资产生命周期既在基于RUP的项目的范围内运转,就像资产确定、资产生产和资产消费的蓝色盒子所示的那样。同样,资产生命周期也可以超出任意一个给定项目的边界,就像该图底部的资产管理和资产工件的蓝色盒子所示的那样。


  我们也可以从资产生命周期透视图本身来思考这些关系。图4描述了横跨若干个工程的各式各样的ABD工作流程。在这个例子中,我们可以清楚地说明一些发生在各自ABD工作流程内部的高层次的活动。有关资产鉴定的活动在项目A中执行,而资产生产和管理活动则由资产制造团队而非任意一个专门的项目执行。最终,资产消费活动在项目B中完成。



  图4:描述横跨若干个工程的各式各样的ABD工作流程


  一个应用开发项目可能指导资产生产;但是,界定好的重用范围对于这些资产来说是一种限制,直到该资产能够在更广阔的重用范围内被评估之前都是这样。


  简而言之,ABD工作流程可以被描绘在RUP阶段,就像图3中所示的那样,而且还可以应用于跨项目的边界处,图4反映了这一点。


  支持资产生命周期的工具


  为封装和描述资产定义了一个标准,以及一套资产生命周期的工作流程,尽管这些都是非常重要的里程碑,但是许多开发团队仍然需要一些工具来支持RAS和这个周期工作流程。正如图5中所示的那样,IBM Rational软件开发平台满足了这一需求,帮助RAS实现了这个资产生命周期工作流程。



  图5:支持RAS和资产生命周期工作流程的IBM Rational软件开发平台工具


  使用这些工具,开发团队就可以将服务创建、证明和封装为可重用的资产,用WSDL(Web服务定义语言)说明他们的Web服务接口,并将它们指向UDDI(整体描述、发现和综合)注册。然后通过保存这些服务并在RAS知识库(后面会详细加以说明)中与资产建立联系,开发团队的成员就可以有效地搜寻、测量、评估,最重要的是重用它们。


  资产生命周期管理中的角色


  每一个资产生命周期工作流程都拥有一套相关的用例来定义此工作流程中所涉及到的参与者和活动。RAS提供了必要的元数据以及可扩展的结构来支持这些贯穿整个周期的参与者(或者角色)和用例。图6中的每一个参与者都有一套专门的职责。以这种方式定义角色更具灵活性,一个人可以承担不只一个角色,或者许多人来完成一个角色的职责。



  图6:资产生命周期中的角色和职责


  正如图7中所示的那样,资产鉴定和资产生产工作流程使用顶层,解决方案,使用用法和相关资产部分,而资产管理工作流程主要使用顶层和分类元数据,另外资产消费工作流程使用所有元数据。



  图7:资产生命周期中每个工作流程对RAS资产信息所起的作用


  IBM软件开发平台中的工具为每个工作流程中的活动提供支持,下面我们将予以讨论。


  IBM为资产鉴定工作流程所提供的支持


  资产鉴定工作流程的第一步是鉴别问题以及潜在的解决方案。扮演资产鉴定师(参见图8)的人随后将会搜寻可适用的备选资产和工件,并且通过将此备选服务封装为RAS资产来提交并储存在RAS知识库中。这个人的目标就是鉴别所有潜在有用的现有工件,并且为本组织生产和消费该服务打下基础。



  图8:资产鉴定用例


  IBM WebSphere Studio Asset Analyzer有助于鉴定用于扶用的现有服务。开发人员,分析人员和操作团队使用IBM WebSphere Studio Asset Analyzer来更好的理解企业软件资产,并可以更加有效的增强、保持和重用它们。IBM WebSphere Studio Asset Analyzer通过交互式的文本和图形报告提供了一个深入分析资产及其相互联系的视角。并且,它在多个层次上鉴定业务方法、流程和解决方案的可靠性,从而有助于推动资产鉴定工作流程。


  IBM为资产生产工作流程所提供的支持


  作为资产生产者的个人和团队将把备选资产转化成真正可以重用的资产,或者是通过开发附加的工件,或者是重新定义已有的工件,或者二者皆用。在本文中,“生产”一种服务包括使用IBM Rational Application Developer这样的工具建模、编码和构建它,然后使用IBM Rational Software Architect和IBM Rational Software Modeler(参见图9)之类的工具在资产生命周期(任意数量的工程)的后期配置将要被消费和重用的服务。



  图9:资产生产用例


  随着服务被生产、分类和封装,一个首先需要考虑的问题就是消费能力。谁将使用该资产,在何种环境下使用?哪些是使用者的技巧水平?为了回答这些问题,需要考虑以下三个因素:可变性、清晰度和粒度。


  可变性涉及到资产应该如何进行定制。有些资产可以拿来就用,不需要进行任何修改和用户化。另一些资产——在某些情况下必须——在其被重用前经过消费者来调试以达到适用。


  联接性是指工件所提供的解决方案的完全程度。如果工件说明了一个解决方案却没有将其实现,那么此资产就只具有低的联接性。相反,如果工件详细说明并且实现了一个解决方案,包括支持文档、模型、需求、测试等等,那么此资产就具有高的联接性。


  粒度是指资产关于其所提供的功能和所包含的工件的大小。资产生产者必须作出决定,是将所有工件都放在一个资产里,还是将它们分解为许多小而简单的资产。如果相关工件的周期差别非常大,那么选择较细的粒度是一个好主意。一项服务也可能被分解为多个资产,每一个都具有一个不同的接口——SCDL(服务组件定义语言)或者WSDL(Web服务定义语言),例如——用法概要来描述特定的接口。


  图10将举例说明一种与一个工件集合和支持的元数据封装在一起的服务(被称作服务X)。此资产可以储存在RAS知识库中,搜索、浏览并最终重用于其它应用程序开发的需求。



  图10:一个和工件、元数据在一起的资产


  好的封装在旁观者心目中就像美景一样。尽管封装的原则看起来并不正规,但还是有如下一些基本原则应当去遵从。首先,封装所付出的努力应当遵循用户的需求。其次,封装者应当对每一个资产中的单个工件的周期进行评估。


  图11显示了一个由多个资产封装的服务。注意这些接口被封装进它们各自的资产,这是因为主要入口资产(需求、模型、测试等等)工件的周期与接口资产的周期大不相同。通过对RAS中的相关资产项进行影响,资产生产者为服务创建与接口资产的联系。



  图11:关联资产,特定接口资产


  IBM Rational Software Architect和IBM Rational Software Modeler都将功能整合起来实现封装流程和资产生产的自动化。使用RAS导出向导,开发者输入关键的RAS元数据,选择用于资产的工件,然后导出RAS存档文件(.ras文件)来指定存放位置,例如为工作组准备的RAS知识库。


  IBM为资产管理工作流程所提供的支持


  资产管理工作流程首要关注服务的管理。尽管在资产开发、调度部署和运行期间都需要管理,但是我们下面仅关注开发这一部分。


  有效的资产管理很大程度上依靠建立一个定义良好的描述角色、策略、状态和转换的管理流程。这一流程应当详细说明如何收回资产,如何遵循资产规律,如何建立分类计划,如何证明和回顾资产,以及如何发表重用资产(参见图12)。它同样可以描述如何创建一个用户RAS概要文件。



  图12:资产管理用例


  开发时间管理包括哪些跨越所有基于资产开发工作流程的活动,尽管我们通常认为它在资产管理中是独立的。图13大致描绘了一个用于每个工作流程的开发时间管理活动的例子。



  图13:横跨资产生命周期的开发时间管理活动


  为了帮助开发团队建立起有效的管理方法,IBM Rational提供了用于工作组的RAS知识库(参见图5),在IBM alphaWorks的网站上1提供了一个简装的知识库。该知识库同IBM Rational ClearCase一同使用,使得资产管理更加简便,它还通过其Web服务接口提供了下列功能:


  ·资产库的搜索和浏览,使用RAS1.0标准知识库服务接口,以及另一个能支持更复杂查询的增强接口。
  ·在多种格式中找回资产信息,包括文件和反馈的视角以及完全资产的视角。
  ·将资产发布到知识库中,在知识库中创建并组织资产的逻辑视角,并且追踪其规则。


  资产管理者可以使用用于工作组的RAS知识库来追踪规则,例如一个资产被搜寻过多少次,其文件被浏览的频率,其被导入和重用的次数。开发者和其他资产消费者同样可以使用它来评估资产或者服务,并提出文字反馈。


  这些流程需要回顾和证明某个资产能够通过IBM Rational ClearQuest被自动处理和执行,带领开发团队沿着一些列定义良好的步骤来证明某个服务并为其做好发表的准备。另外,IBM Rational ClearQuest和IBM Rational ClearCase提供了一种软件配置管理功能,此功能是修改工件和资产的重要一环。


  IBM为资产消费工作流程所提供的支持


  正如图14所示的那样,资产消费的第一步就是查找服务的位置,或者是通过关键词从RAS元数据中直接搜索,或者是在RAS知识库中浏览资产。资产的消费者随后就可以应用该服务并且通过知识库提供反馈。



  图14:资产消费用例


  IBM Rational Software Architect和IBM Rational Software Modeler包含一个资产资产管理器,它可以帮助开发团队方便的确定资产在任意一个RAS知识库中的位置并提供反馈。Rational ClearQuest同样被用来以瑕疵报告和变更需求的形式提供反馈。


  IBM Rational工具使得应用资产也变得简单。综合开发者可以拖放服务的WSDL到IBM网域集成开发器中的BPEL表中,此处的WSDL是从RAS知识库中导入的(通过IBM Rational Software Architect)。图15显示了RAS知识库中一个被导入之前的服务。



  图15:从RAS知识库中导入服务


  在导入服务之后,您可以通过拖与放的操作将WSDL带入IBM网域集成开发器。在那里,您可以将服务加为一个合作者并将其包含在BPEL模型中(参见图16)。



  图16:访问新近被导入的服务


  将IT锁定业务目标:业务驱动开发


  为了交付给业务真正有价值的东西,IT部门必须使他们自己的目标同业务目标和优先权相一致,并且后者应当贯穿于整个资产生命周期并影响每一步工作流程中的活动。这就是IBM所成的业务驱动开发(BDD)。在面向服务解决方案的BDD中,业务目标和需求驱动着整个开发流程,从设计到消费、综合以及测试,就像图17中所示的一样。



  图17:业务驱动开发要求一个组织将业务目标贯穿于面向服务解决方案的开发流程。


  BDD将模型驱动开发(MDD)和ABD的技术结合在一起作为一项关键管理的方面。我们在此所用到的方法就是将这些技术用于创建面向服务的架构(SOA)。SOA为应用那些描述资产所涉及的种类和类型的MDD和ABD提供了初步的解决方案架构。


  BDD首先需要对业务和业务流程有坚实的理解。这些流程都被模式化和映射到服务之中。应用迭代的方法,各自独立的服务被构造、测试、配置并最终组合为复合应用程序。


  业务目标和需求驱动此周期:从业务流程到服务规范,再到服务开发、构造和合成、证明和调度。


  我们应当注意模式——一类特殊的资产,它描述了在特定的上下文中重现问题的解决方案——提供了一种确保IT动机同业务目标协调一致的有效方法。将模式应用于服务的可发和重用同样是一种提高生产力和减少复杂性的强有力手段。2


  总结


  可重用性是资产生命周期管理和面向服务架构的核心所在。使用IBM工具、指导和资产来管理其资产生命周期支持的开发团队,在其SOA开发主动性上拥有显著的优势。


  不论您的结构在采用SOA方面处在何种程度,认真地思考可重用性和资产生命周期都是很值得做的一件事情。该项领域中的进步和改进有助于提供生产力、减少复杂度,加速开发,以及确保同业务目标更好的保持一致。


  作者简介


  Grant Larsen是IBM Rational软件公司SOA解决方案团队的一名高级架构师。他通过改进技术、规范、实践和可重用资产来为软件开发活动提供大量的支持。目前,他正在撰写一本关于可重用资产及其组织和使用的书(此书将由Addison-Wesley出版社出版)。您可以通过e-mail与他取得联系。
 
  Jack Wilber从1998年起就作为一名独立顾问在Rational软件公司工作。在那段时间里,他发表了或者与别人合作发表了许多白皮书、案例研究、产品数据表甚至一至两篇关于Rational Edge的文章。在离开Rational公司后,他在南卡罗莱纳的家庭办公室中从事软件开发。他拥有超过十年的软件开发经验,并且拥有卡内基·梅隆大学的计算机和电气工程学士学位。

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

相关推荐

  • 事件驱动框架和SOA在空军的应用

    空军正在利用SOA来改善数据共享,并实时跟踪战机,美国空军机动司令部的Michael Marek解释了企业可从中学习的经验。

  • 揭秘New Relic APM技术细节

    New Relic应性能管理(APM)套件主要用于Web软件开发。它允许用户在面向服务的架构(SOA)上跟踪关键事务性能,并且支持代码级别的可见性来评估特定代码段和SQL语句对性能的影响

  • 仅凭SOA和云无法解决业务数据管理风险问题

    SOA和云可以是某些恼人问题高效的解决方案;这一点我们已经知道了。但是也要记住它们并不是所有事情的直接答案,特别是当你的问题是业务数据管理风险,而不是技术问题时。

  • 购买应用集成工具可以采取平衡做法

    购买应用程序集成工具需要好好看看你的公司需求,知道从供应商里面要寻找哪些关键功能。