使用 RAM 富客户端进行资产工程设计
 

2009-07-03 作者:Harry T Pendergrass,Eoin Lane 来源:ibm

 
本文内容包括:
RAM 富客户端是 Eclipse 丰富功能的扩展,开发人员使用该产品可以向远程存储库快速收集和上传或者从中定位和下载与软件相关的资产。在本文中,我们将概述使用 Rational Asset Manager (RAM) 进行基于资产的工程设计方法,并提供一些详细的示例,向您展示如何通过功能齐全的 RAM 富客户端利用此资产存储库。

引言

本文的目的是向读者介绍 RAM 富客户端如何适用于 RAM 框架,在何处可以找到它,以及应如何使用。下面的案例说明了在软件开发过程中能够及时访问资产的重要性。这与基于资产的开发的整体概念密切相关,尤其是在 SOA 的上下文中。

我过着令人陶醉的生活,我和我妻子一块驾车上班。从我们的住所到工作地点波士顿剑桥驱车大约有 40 分钟的路程。在这段宝贵的时间里我们一路畅谈各自的工作。因此,在上周的一天,我围绕资产可消费性映射向她解释了我的一些想法。我的妻子不容易听进去我的高谈阔论,并告诉我她对这些观点不感兴趣。为了向她解释,我给她打了个开车的比方,因为我们都是车手。

我坐在车上开车,就处于司机这样一个上下文中,我需要了解与司机相关的信息和工具,如我的车速、发动机状况、天气情况、GPS 设备、路况,包括具体路段的限速(如本车上下文)等。在驾驶上下文中,我需要了解与司机相关的内容,如我需要能够使用这些资产。

作为软件开发人员或协作顾问,我又处在另一个特定的上下文中。现在,该上下文由项目的范围以及该特定项目的功能性和非功能性需求确定。此上下文还可以映射到内容,以便更好地执行我的工作。例如,在保险项目上,可能围绕创建理赔系统有一个功能性需求。这里可以映射功能性需求,以便重用软件资产,如理赔系统的保险 UML 模型。另一方面,非功能性需求(如事务理赔系统)可以映射到其他类型的可重用软件资产(如软件模式资产),以帮助我进行一致的体系结构决策。

现在的问题是,我们如何自动执行此上下文以进行内容映射,并以一致的方式开发软件,从而更好地实现可重用资产(如模型和模式)的可重用性?

资产墓地

我一直爱看的一部电影是 Sergio Leone 执导的意大利风格美国西部经典电影:《黄金三镖客》。这部电影吸引人的地方是它的剧情简单;故事的核心是寻找宝藏,其中刻画了三种人物性格,即善、恶、丑,他们寻找同盟的黄金。其中他们知道财富的位置,这些财富与墓地中的尸体埋葬在一起,只有他们联合的智慧才能引导他们找到战利品。在这部电影快结束的时候,这个“丑陋的”人物叫 Tuco(由 Eli Wallach 扮演)到达了这个墓地,这是电影院中最激动人心的时刻,并且伴随着令人难忘的背景音乐,他开始疯狂地杂乱无章地搜寻 Arch Stanton 墓场。

这个场面给人印象最深的是墓地的巨大场面——看上去有两千多个墓地,环绕排列着。Tuco 在 Sad Hill 中心开始挖起来,那里的墓穴年代最早,并且按照他的方式最初从同心圆开始。但是当他对这个巨大的任务感到失望时,他的搜寻很快变得更加杂乱。最后,当一个个坟墓从他眼前闪过,他突然来到 Arch Stanton 的墓地,发现没有任何金子。的确,那里只存放了一具腐烂的尸体。

今天,这个故事在我以前参与的每个 IT 项目中重复着,其中包括我自己带领的 IBM 团队。这里应注意,我们的团队分布在不同的地理位置,因此,尽管我们可以定期电话交谈,但是我们没有机会面对面地沟通。团队中我的一个好朋友兼同事(我们叫他 Bob)曾是一项工程的负责人,为加利福尼亚的汽车消费者进行第一次 SOA 服务注册。消费者对服务注册的一个要求是必须在某个指定的期限内完成。在未通知 Bob 的情况下,我们小组按照另一个合约处理了几年前的一个非常类似的问题。我们认识到此工作的重要性,并围绕该工作创建了许多资产。这些资产的形式满足请求程序端缓存模式的宽泛分类要求,这是我们创建模式规范、模式实现和模式文档(包括 dW 文章、flash 电影和详细案例研究)的缓存模式。在我的主页上可以找到所有这些模式资产文章和其他相关模式资产文章的完整列表。

Bob 不了解我们以前这方面的资产工作,认为我一定会围绕他自已的存储库墓地转来转去,他完成了任何其他优秀架构师应该做的工作,他从头开始,并对资产重新设计,与我们两年前的做法完全一样。

与 Tuco 拼命地搜寻 Sad Hill 获取同盟的黄金一样,Bob 也面临相同的困境,事实上,我亲历过我们涉及的每个 IT 合约和软件项目面临进退两难的情况。我敢说,此困境不是专门对于 IT,而且您会发现几乎每个人都会遇到此问题,范围包括从工程师构建火箭将人类送上火星到律师为专利申请起草声明。那么我们应如何提供正确的资产和内容来帮助解决手边特定背景下的问题呢?换句话说,我们如何自动操作从上下文到内容的映射方法,从而为我们的构架师,工程师,以及律师们建议最好的资产?

RAM 让您绝处逢生

IBM Rational® Asset Manager (RAM) 可以解决以下问题:使企业中分散的资产更具价值。RAM 是称为“可重用资产规范”(Reusable Asset Specification) 的标准规范的实现。RAS 是 OMG 规范,由 IBM 和其他公司内部开发。RAS 可以为以下内容定义格式:描述性元数据、分类元数据、资产的用法元数据,以及内容的布局和内容元数据。

IBM 旗舰型建模产品 Rational Software Architect 6.0(Rational Rose 功能完备的继承者)是实现 RAS 规范的第一款 IBM 产品。在该实现中,它支持工作组和本地存储库存储,但不支持任何可伸缩性企业存储库。不过,可重用资产的收集、存储和使用问题实质上是企业问题。小规模重用并不困难,不需要优秀工具的支持。

为解决此问题,IBM 设计了名为 Rational Asset Manager (RAM) 的支持企业的资产存储库。RAM 在诞生时就设计为访问企业级存储库。

RAM 的详细信息

存储库数据存储在 DB2 或 Oracle 数据库中。web 应用程序运行在 Websphere Application Server 或 Tomcat 中。使用当今大多数浏览器可以查看 web 客户端。RAM 富客户端运行在任何基于 Eclipse 的 IDE 中。这些都是 RAM 的体系结构组件。

在 RAS 规范中,用 UML 表示 RAS 元模型。资产是最高级别的对象。它包含许多部分:解决方案、分类和用法。解决方案包含资产中包括的实际文件和文件夹的层次结构。每个文件和文件夹由规范中称为“构件”的内容表示。

构件就像资产中的内容原子。构件对应于资产中实际包含的文件、文件夹、项目或一些特定项。如果我们再次考虑一下《黄金三镖客》,并且将 Sad Hill 上的墓地作为单个资产,则可以将每个墓碑表示为单个构件。

规范允许定义由引用指定的构件,这意味着该构件只能被引用,而不能包含在存档中。RAM 工具尚不支持这种类型的构件,但是在本文的稍后部分中,我们将讨论一种机制,来模拟作为 URL 引用的构件。

富客户端需求

RAM 富客户端可以与 Eclipse 集成。通过该集成,富客户端可合并特定于 Eclipse 的概念(项目、插件和功能)。因此,富客户端意味着可以打包比 Web 客户端更复杂的、以开发人员为中心的资产。这会促进与软件开发关联的资产的收集和使用。

RAM 富客户端的使用

下面提供了有关如何获取 RAM 副本(包括富客户端)的信息。下面是 RAM 中软件开发资产的用户案例

  1. 收集 Java 资产:开发人员可以在 Eclipse 中创建 Java 项目。将这些项目打包成富客户端中的资产。开发人员可以将此资产分为适当的类别,并添加任何所需的标签。开发人员然后将此资产提交到存储库。
  2. 搜索资产:开发人员可以在存储库中搜索特定类别的资产、特定的标签或关键字。与 Tuco 通过 Nob Hill 上的墓志进行搜索相比,通过分类搜索资产的随意性小。通过资产的分级组织,搜索特定于开发人员任务的资产非常简单。标签是筛选搜索结果的附加维度。可以在资产中以及该资产包含的构件中搜索关键字。开发人员运行搜索后,该工具将结果集返回到搜索结果视图中。
  3. 使用资产:在存储库中找到所需的 Java 资产后,开发人员可以将该资产下载到工作区,并将其内置。开发人员可以向 Java 资产添加功能。
  4. 更新现有资产:将功能添加到 Java 资产后,开发人员可以通过这些更改来更新存储库中的资产。

RAM 富客户端入门

要开始探索 RAM 富客户端,请首先查看一下作为 Eclipse 中资产管理透视图的组成部分的视图。

Eclipse 中资产管理透视图的视图

RAM 富客户端的核心部分有三个视图。当用户打开 Eclipse 中的资产管理透视图时,这些视图在缺省情况下是可视的。它们分别是 Asset Explorer 视图、Repository Explorer 视图和 Search Results 视图。Asset Explorer 将显示在 Eclipse 工作区中创建或下载到该工作区的所有资产。Repository Explorer 可以显示指向已经在工作区中创建的 RAM 存储库的连接。顾名思义,搜索结果视图可显示对任何 RAM 存储库执行的搜索结果。请参见下图。

图 1. RAM 富客户端视图
RAM 富客户端视图

连接到存储库

创建或下载资产之前,您需要向 RAM 服务器添加连接。可以转到 My Repositories 视图,右键单击并选择 New Repository Connection。New Asset Repository Repository Connection 向导将弹出。在 Name、URL、User Name 和 Password 属性字段中,分别填写名称、URL、用户名和密码。

图 2. 新建存储库连接向导
新建存储库连接向导

创建资产:新建资产向导

您可以使用以下菜单创建新的资产:File => New => Asset Management => Asset。创建新资产的最简单方法是使用新建资产向导。在 Asset Explorer 视图中右键单击,然后选择 New => Asset。新建资产向导将弹出,如下所示。

下一步是确定和描述资产的名称、简短描述、版本、社区等。

图 3. 资产创建向导的第一个页面
资产创建向导的第一个页面

然后在下一个屏幕中,需要对资产进行分类。对资产分类是资产创建者最重要的任务之一。分类可以将存储库从随机集合(类似 Sad Hill 上的墓穴)转换为容易搜索的存储库。它是用于存储库的 Dewey Decimal 系统。展开类别,并选中适用的类别。请注意,资产分类法(即分类)是基于 RAM 存储库的配置填充的。由于配置和管理企业分类法通常是管理员的任务,所以您无法在 RAM 富客户端中添加或修改这些分类法。如果希望添加或修改分类法,则需要以管理员身份登录,并使用 RAM Web 客户端。

图 4. 资产创建向导的类别页
资产创建向导的类别页

完成资产的分类后,下面需要确定资产的内容。您可以拾取作为当前工作区一部分的任何构件(文件、文件夹、项目等)。

图 5. 资产创建向导的内容页
资产创建向导的内容页

最后,单击 Finish 后,该工具将在本地工作区中创建资产。请注意,此时资产尚不在存储库中。

创建资产后,将显示资产编辑器。该编辑器包含一个将执行提交的按钮。不需要选择存储库,因为资产已经与特定的存储库关联。信息模型存储在存储库中,因此,创建资产并对其分类需要存储库关联。

图 6. 资产编辑器的常规页(显示提交按钮)
资产编辑器的常规页(显示提交按钮)

结束语

由于软件开发更多地移向工程师原则,所以基于工程的资产将成为此转换的关键促成因素。软件工具(如 RAM),特别是 RAM 富客户端将支持此转换,并在将来会提供更可靠的可重用解决方案。在下一篇文章中,我们将介绍对一致的软件工程、软件模式资产至关重要的特定资产类型。在使用 RAM 富客户端时,我们将详细介绍如何使用用法模式和最佳做法,例如,使用特定的软件模式资产和请求程序端缓存。

参考资料

学习 获得产品和技术 讨论

火龙果软件/UML软件工程组织致力于提高您的软件工程实践能力,我们不断地吸取业界的宝贵经验,向您提供经过数百家企业验证的有效的工程技术实践经验,同时关注最新的理论进展,帮助您“领跑您所在行业的软件世界”。
资源网站: UML软件工程组织