内容


使用可重用资产构建 SOA 应用程序,第 1 部分

可重用资产、菜谱和模式

Comments

系列内容:

此内容是该系列 # 部分中的第 # 部分: 使用可重用资产构建 SOA 应用程序,第 1 部分

敬请期待该系列的后续内容。

此内容是该系列的一部分:使用可重用资产构建 SOA 应用程序,第 1 部分

敬请期待该系列的后续内容。

引言

本文将对可重用资产、菜谱(recipes,本文中借用菜谱来喻意模板)和模式进行介绍。 资产是针对问题提供解决方案的构件集合。可重用资产规范(Reusable Asset Specification,RAS)(请参阅参考资料。)

软件模式是特定上下文中的问题的可重复解决方案。Rational® Software Architect 采用了一种模型驱动的开发(model -driven development,MDD)方法来处理软件模式。MDD 通常允许使用一组转换从一个抽象级别转换到另一个抽象级别。转换的一个例子就是从分析模型转换为设计模型,可能还随后从设计模型转换为代码。

多个 Rational Software Architect 模式和其他资产(如模型或需求)可能交织在一起,以形成粒度更大的解决方案。菜谱提供了流程指南、上下文和组成元素(即模式和资产)的描述。

菜谱、Rational Software Architect 模式和转换以及其他资产均使用 RAS 进行打包,存储在资产或 RAS 存储库中。RAS 存储库是开发资产存储库,提供了发现可用于特定解决方案的资产和元素的机制。我们将重点讨论 SOA 解决方案,但这个概念可以在很多地方使用。

模式菜谱提供了有关指定模式的使用、组织以及相互关系的文档。菜谱提供了有关使用模式及其实现所必需的资产的指南。菜谱可帮助将一个模式的输出与另一个模式的输入紧密地联系到一起。菜谱可以替代一个或多个模式。在上下文可能随着时间而改变的情况下,这非常有用。

SOA Implementation and Optimization Recipe 是一个 Rational Software Architect 模式和转换集合以及有关提供 SOA 解决方案的指南。在该菜谱中讨论的模式将操作 UML 模型来生成和优化服务。Rational Software Architect 模式是使用 Rational Software Architect Pattern Engine 实现的。每个 Rational Software Architect 模式和转换都作为 Eclipse 插件实现,均使用 Rational Software Architect 模式创作和转换 API。

可重用资产简介

几年前,由软件行业领先企业组成的联盟——包括 IBM、Rational Software(当时尚未被 IBM 收购)和 Microsoft——开始讨论如何帮助组织对软件投资进行重新利用。当时,该联盟将资产定义为:可提供给定上下文中的问题的解决方案的构件集合。

资产也可以具有其他特征。资产可以具有允许用户通过设置各种参数对其进行自定义的可变点。可以采用这种方式处理的资产称为模板。目前,IBM Rational 工具就是在考虑此定义的前提下实现的。

资产包括有关其使用的说明或规则,可尽可能减少开发人员发现、分析、使用和测试资产所需的时间。资产还要对开发和业务上下文进行描述,可以(也应该)在此上下文中使用此资产。

资产包含的构件类型取决于重用上下文。对于开发上下文,资产可以包含需求、模型、源代码和测试。构建服务的人员应将此类构件包含进去,以便其他开发人员有效地重用服务。

请注意,资产的定义与模式的定义非常相似。设计就是如此,因为模式和资产背后的基础概念都是上下文、问题和解决方案。不同之处在于细节不同。资产是比模式更为一般的概念。资产的可变点在构件级别,而模式则具有应用到整个模式(而不一定是特定构件)的参数和参与者(可变点类型)。

RAS 简介

如何组织和结构化资产?我们需要知道哪些有关它的信息?可重用资产规范 (RAS) 提供了一个结构,可以圆满解决这些问题。此规范是一项 Object Management Group (OMG) 标准,于 2005 年开始采用。

存在很多类型的软件开发构件,可能以任何形式存在,反映出设计风格的变化。这个多样性可能增加发现、理解和重用其他作者的构件的成本。通过指定对这些构件进行组织、描述和打包的方法,RAS 可跨诸多资产提供一致性和可预测性,从而大幅度减少资产管理和使用的成本。

为了说明标准化资产打包的价值,让我们了解一下标准化是如何为夜间运输公司提供帮助的。通过向客户提供标准信封和包装箱,并要求在运输标签上填写一致的信息,这些公司可籍此建立成熟的跟踪系统。此外,这些策略还有助于在整个业务范围内更好地进行各项规划和决策工作,既包括确定传输带宽度,也包含每个运输工具能承载多少包裹以及需要多少运输工具。

资产标准化可通过类似的方式提高效率,可在软件开发工具中实现高效率和自动化并提高使用这些工具的团队的工作效率。通过使用 RAS,开发人员可以将每个资产打包为元数据包装,其中包含顶级属性,例如资产的名称、版本和描述(请参阅图 1)。

图 1:RAS 元数据结构
RAS 元数据结构
RAS 元数据结构

如图 1 中所示,RAS 资产具有一个有助于搜索和浏览的 classification 部分;此部分可以包含简单的名称/值对描述符和上下文声明(如具体的领域、开发或部署上下文)。

图 1 中所示的 solution 部分是资产的重要部分,描述提供解决方案的构件集合。

usage 部分提供有关使用可变点应用和自定义资产的指南。可能可以通过使用脚本和向导实现某些使用信息的自动化,这些脚本和向导与其他构件一起存储在 solution 部分中。

related assets 部分定义资产与其他资产的关系,可帮助创建资产集合或系列,以形成粒度更大的解决方案。

为了支持组织中各种程度的重用、正式化和流程成熟度,很多 RAS 资产部分都是可选的。RAS 还可以通过配置文件 进行扩展和自定义。OMG 当前提供了三个配置文件:Default 配置文件、Default Component 配置文件和 Default Web Service 配置文件

Default 配置文件用于打包任意类型的软件资产,而其他两个配置文件分别用于与组件和 Web 服务一起使用。

模式简介

术语“模式”的定义非常多。如果不加留心,虽然的确应用了模式,也可能不会注意到使用了模式。这是模式一个好的特征,同时也是危险的特征。一方面,仍然可能不会注意到模式,而仅会看到所应用模式的好处。另一方面,没有认识到应用模式的原因和目的,模式的基本原理本身、相关知识以及好处可能会被忽略,最终会被遗忘而不加利用。总之,抽象既可能是我们的朋友,也可能成为敌人。

定义

但首先,什么是模式?此处,我们将借用一些思想先驱已在此领域获得的工作成果:

James Coplien 将模式定义为“可解决在特定上下文中的问题的重复出现的结构配置,构成美学或文化价值的某个整体或系统的完整性。”(Organizational Patterns,第 4 页,Pearson Prentice Hall)

Christopher Alexander 写道:“每个模式描述在我们的环境中一再重复出现的问题,然后描述该问题的解决方案的核心内容。”(Alexander,1979)他还写道:“每个模式都是一个三段式规则,表述特定上下文、问题以及解决方案之间的关系。”(Alexander,1979,第 274 页)

Booch 写道:“模式可提供某些上下文中的常见问题的良好解决方案。”(The Unified Modeling Language User Guide,第 370 页,Addison Wesley)

尽管大多数人都认可这个定义,但在本文中,我们将选择最常见的定义版本:

模式是对给定上下文中重复出现的问题的解决方案。

什么是模型驱动的开发?

模型驱动的开发基本上是用于指定和实现解决方案的软件相关抽象。可以在整个软件开发生命周期的各个地方使用模型。而且,在生命周期的任何位置,模型都是以特定的抽象级别加以表述的。

例如,业务流程模型描述任务、条件、资源、成本和时间安排。由于模型经过了优化,因此可能描述特定于 IT 系统或服务的资源的本性。这种类型的优化可能减少抽象级别。

另一个例子是用例模型,用于列出参与者。由于模型经过了优化,因此可能会描述用例实现的本性,对用于实现用例的组件和服务进行标识。同样,这种类型的优化可能减少抽象级别。

抽象也可能向另一个方向发展,通过增加抽象级别,从而减少模型中的细节级别。

凭借着某种眼力,我有时候会问“有没有别人发现模型的价值?”模型已经投入使用了相当长时间了。根据 Hermann Schichl 在《Modeling Languages in Mathematical Optimization》中的说法,“‘建模’一词来自拉丁词 modellus。它描述人类复制现实的一种典型方法。人类学家认为,构建抽象模型的能力是让智人 (Homo sapiens) 具有竞争优势的一个重要特征……”(History of modeling,第 25 页)

随着时间的推移,Schichl 进一步指出:“到公元前 2000 年,至少有三种文明(巴比伦、埃及、印度)具有一定的数学知识,并使用数学模型。”(History of modeling,第 25 页)

Schichl 认为,早期使用的图形模型之一是在天文学领域。在这个领域,托勒密于公元 150 年创建使用圆圈和中心点创建了太阳系的一个模型。显然,此模型一直沿用到 1619 年,然后出现了一个更好的模型,该模型的基础理论今天仍然在使用。(History of modeling,第 26 页)

模型可提供进行沟通的手段,设计合理时,可提供能在相当长时间内使用的恰当抽象。有多少模型能够使用近 1500 年,更不用说应用程序的一个或两个版本了?

为特定上下文选择恰当抽象非常关键。

模式规范和模式实现

考虑模式方面的工具提供情况,我们将模式规范和模式实现的概念分离开来。模式规范是描述模式的文本;您将在书中或网页等上看到它。

模式可以采用多种形式之一实现;因此,对于每个模式规范,都可能会存在多个模式实现。模式可以实现为 UML 模型、组件或服务。

图 2:模式规范和模式实现关系
模式规范和模式实现关系
模式规范和模式实现关系

我们此处描述的模式是使用 UML 模型实现的,可使用一些转换技术对这些模型进行优化。这要求使用模式引擎或机制来完成此任务。

菜谱简介

随着存储库中资产数量的增加,我们面临着尝试找到那些将帮助解决问题的资产的艰巨任务。而且,我们还要承担确定如何将一个或多个资产进行组合以创建粒度更大的解决方案的重任。

以更细粒度的方式重用资产具有模块性和资产版本控制的好处。不过,将这些资产组合起来的工作可能引出有关使用资产的真正价值的问题。

同样,有必要提供松散耦合方式,以对资产进行组合,更重要的是,规定在特定上下文中资产应如何进行组合。

为此,我使用了一个比喻“菜谱”。在烹饪法中,菜谱提供原料的列表,并就如何将这些原料混合到一起提供一些说明。厨师可以进行一定的灵活替换,以考虑当前的具体情况。就此来说,菜谱就是一个模板。

在软件领域,我们可以借用菜谱的概念,将其用于创建模板解决方案,架构师和其他人员可以根据需要对其进行优化。此处的原料是细粒度资产,而菜谱可提供结合使用这些资产的流程指南。请注意,菜谱本身就是资产。

图 3:菜谱概述
菜谱概述
菜谱概述

模式解决方案使用菜谱将很多模式组合到一起。菜谱描述各个元素——模式和其他资产——以及将这些元素一起使用来解决问题的方法。模式解决方案实现包含服务、组件和其他软件构件,用于根据菜谱实现模式。

设置 Rational Software Architect 环境

现在已经给出了理论上的相关内容,下面让我们了解一下在实践中应如何操作。在本系列文章中,我们将使用 Rational Software Architect,因此,如果您尚未安装该软件,请现在进行安装。(请参阅参考资料,以获得相关链接。)还需要将 Rational Software Architect 更新到撰写本文时已提供的 Fix Pack 6.0.1.1。Rational Software Architect 可方便地进行升级,方法为:选择 Help > Software updates > IBM Rational Product Updater,并单击 find updates 按钮。

设置 RAS 客户机

此处要进行的第一项工作是在 Rational Software Architect 中设置 RAS 客户机。此 RAS 客户机将用于访问远程 RAS 存储库。我们将使用的 RAS 存储库是 dW 所承载的一个 RAS 存储库。本系列文章中使用的可重用资产存储在此存储库中,我们将在本系列文章中持续使用此存储库。

以下是设置 Rational Software Architect 客户机所需的步骤:

  • 启动 Rational Software Architect。如果这是首次启动此软件,将会显示欢迎屏幕。
  • 转到 Windows > Open Perspective > Other。然后选择 Rational Software Architect (Reusable Asset) 透视图(您可能需要选择 Show All 来显示此透视图),如下图中所示:
图 4:Rational Software Architect 透视图
Rational Software Architect 透视图
  • 这将打开 RAS 透视图。
图 5:RAS 透视图视图
RAS 透视图视图
RAS 透视图视图
  • 此处提供的不错的 Eclipse 功能之一就是可以图标化此透视图。
    • 为此,请右键单击透视图窗口栏,并从下拉列表中选择 fast view。
    • 这会将 Rational Software Architect 透视图图标化到 Rational Software Architect 主窗口的右侧。可以图标化到主 Rational Software Architect 窗口的底部。
    • 单击此图标,以显示此透视图的快速视图(当该窗口失去焦点时,该视图将消失)。
    • 这可帮助保持工作区的条理性,避免混乱,这一点的好处将在后文得到体现。
  • 接下来,设置要附加到的远程 Rational Software Architect 存储库。在 RAS 视图中右键单击任何位置,并选择 New Repository。选择“DeveloperWorks Repository”选项,以下值将自动填写到 Repository name 和 URL 字段中:
    • Name:"IBM developerWorks Rational Software Architect Repository"
    • URL:http://www.ibm.com/developerworks/product/rational/rsa/ras?S_TACT=105AGX52&S_CMP=cn-a-ws
图 6. 创建新 RAS 存储库
创建新 RAS 存储库
创建新 RAS 存储库
  • Rational Software Architect 客户机现在已完成设置,我们可以开始浏览存储库了。
  • 由于将使用菜谱,因此首先必须让 Rational Software Architect 知道如何处理菜谱。在 Rational Software Architect 的将来版本中,将会附带提供能立即使用的菜谱识别功能。不过,以下操作可很好地说明如何使用 RAS 资产来扩展 Rational Software Architect 的当前功能。在 dW RAS 存储库机构中,浏览到 ./tools/ras 文件,并选择“Solution Guide”资产。右键单击该资产,并选择 import。这将下载和安装让 Rational Software Architect 识别菜谱的 Eclipse 插件。安装完成后,立即重新启动 Rational Software Architect。
图 7. 导入 Solution Guide 以使 Rational Software Architect 识别菜谱
导入 Solution Guide 以使 Rational Software Architect 识别菜谱
导入 Solution Guide 以使 Rational Software Architect 识别菜谱
  • 现在可以下载菜谱了。同样在 dW Rational Software Architect 存储库中,浏览到 ./design_soa/recipes 文件夹,并选择“SOA Implementation and Optimization of Services Recipe”资产。右键单击该菜谱,在该上下文中有一个用于在解决方案指南中打开的选项。(注:由于当前解决方案指南插件中存在一个错误,您将需要首先将菜谱导入到工作区中。为此,请右键单击该菜谱,并选择 Import。接受了法律协议后,整个菜谱将导入到工作区中。接下来,切换到 Navigator 视图,并右键单击菜谱,并选择 Solution Guide > Open Solution Guide View。这将打开菜谱,并允许您在工作区浏览菜谱的内容和结构。)之所以提供此功能,是因为需要使用 Solution Guide 来让 Rational Software Architect 识别前面步骤中已经安装的菜谱。
图 8. Open Solution Guide
Open Solution Guide
Open Solution Guide
  • 现在可在 Rational Software Architect 中浏览 SOA Implementation and Optimization of Services 菜谱了。在本系列文章中,我们都将使用此菜谱来提供有关开发服务的规定性指南。将此窗口移动到 Rational Software Architect 屏幕选择面板底部通常很有帮助。
  • 请参阅下载,可以在此获得一个 Flash 动画演示程序,以了解上面列出步骤的详细信息。
图 9. SOA Implementation and Optimization of Services Recipe
SOA Implementation and Optimization of Services Recipe
SOA Implementation and Optimization of Services Recipe

刚刚使用了从远程 RAS 存储库下载的可重用资产对 Rational Software Architect 功能进行了扩展。同时也从远程 RAS 存储库下载了用于构造 SOA 服务的菜谱,并可用于提供规定性指南、最佳实践和模式,以帮助构建这些服务。

Requisite/Pro RSA/RSM 集成

要从这些文章最大地获益,应该还进行相应设置,以将 Requisite Pro 与 Rational Software Architect 集成。要完成此任务,必须在您的系统上安装 Rational Requisite Pro:(请参阅参考资料,以获得相关链接。)提供 Rational Software Architect 时仅启用了部分功能。要启用更多的 Rational Software Architect 高级功能,请选择 Windows > Preferences > Workbench >Capabilities 并启用 Requirement Management 框。

  • 启动 Rational Software Architect。如果这是首次启动此软件,将会显示欢迎屏幕。
  • 转到 Windows > Open Perspective > Other > Requirements
  • 这将在 Rational Software Architect 中打开新 Requirement Explorer 透视图。
图 10. Requisite Pro 视图
Requisite Pro 视图
Requisite Pro 视图
  • 这个 Requirements Explorer 可以用于打开将在本系列文章中使用的简单 Requisite Pro 文件。
  • 此 Requisite Pro 文件也打包为 RAS 资产,可以通过浏览到 dW RAS Repository 中的 ./design_soa/requirements 来获取。同样,再次右键单击资产,但这次在快捷菜单中选择 download 选项。这是因为 Rational Software Architect 尚不知道如何处理 Requisite Pro 文件。现在会将 zip 文件下载到磁盘上的位置。此测试 Requisite Profile 附加在本文的最后(请参阅下载,以下载代码)。
  • 将 Requisite Pro 项目解压缩到文件系统,将 Rational Software Architect Requirements explorer 指向此文件,并在 Rational Software Architect 打开它。
图 11. The Requisite Pro 窗口
Requisite Pro 窗口
Requisite Pro 窗口

Rational Software Architect 现在已配置为对此 Requisite Profile 进行读写。

结束语

本文对菜谱、模式和可重用资产进行了逐一说明。我们对这些术语进行了介绍,并在它们之间建立了联系。我们已将 Rational Software Architect 配置为浏览 dW 上的远程资产存储库。使用了一个资产来让 Rational Software Architect 识别菜谱。我们还访问了此存储库中的 SOA Implementation and Optimization Recipe 资产。Rational Software Architect 还与 Requisite Pro 实现了集成,并下载了一个测试 Requisite Pro 文件作为资产在 Rational Software Architect 内打开,以便读写需求/用例。

现在已经准备好,可以在 SOA 应用程序参考示例上使用此 SOA Implementation and Optimization of a Service Recipe,此菜谱将提供规定性指南,指导如何在 MDD 环境中使用非功能需求来确定应该使用何种模式构建体系结构一致的应用程序。下一篇文章将介绍参考示例,并说明如何使用 Rational Unified Process,以及如何将 MDD 方法与可重用资产结合使用。


下载资源


相关主题


评论

添加或订阅评论,请先登录注册

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=SOA and web services, Rational
ArticleID=156575
ArticleTitle=使用可重用资产构建 SOA 应用程序,第 1 部分: 可重用资产、菜谱和模式
publish-date=08282006