内容


怎样使用 IBM Rational Rose Model Importer,第 2 部分

怎样将 Rose UML 模型子单元转移到 Rational Software Architect

Comments

系列内容:

此内容是该系列 # 部分中的第 # 部分: 怎样使用 IBM Rational Rose Model Importer,第 2 部分

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

此内容是该系列的一部分:怎样使用 IBM Rational Rose Model Importer,第 2 部分

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

引言

本系列的第一篇文章,简单地讨论了子单元与片段。IBM®Rational®Software Architect 工具中的片段,相等于 IBM®Rational®Rose®方案中的子单元;子单元或者片段的主要目标,在于促进一个项目团队中模型各个部分之间的并发开发和独立开发。这就使得您可以将一个大型而复杂的模型分解为私人开发员可以独立操作的小型单元。片段的每一个私人子单元都可以在版本控制下单独地存在,并帮助项目团队并发地开发一个模型。

Software Architect 环境还支持多个模型同时工作,而不像 Rational Rose 一次只允许运行一个模型。使用 Rational Software Architect 环境,您就可以将一个大型的模型分解为多个更小的子模型。使用子模型的优势在于它可以独立地存在主模型,而不像片段那样只能存在于主模型内部。这些独立的子模型还可以由多个模型所共享。

IBM®Rational®Rose®Model Importer 工具提供了一个选项以在导入之后,自动地将子单元转化为片段或者独立的模型,允许您可以在一个与 Rational®Rose 环境下相似的创建环境下工作。工具还支持与 Software Architect 方案中已存在的模型相共享。本文讨论了在将 Rose 模型导入到 Software Architect 环境的过程中,转移子单元可用的各种选项。

前提条件

作为一个前提条件,您需要安装以下的rational 软件,而且您需要对使用两种产品都很熟悉。工具包括:

  • Rational Software Architect Standard Edition 7.5.2 或者后续版本
  • Rational Rose 方案,模型包含了 Petal Version 47、48 或者 50,它是您可以导入到 Software Architect 环境的唯一版本。如果您拥有使用 Petal Version 46 或者更早版本的模型,那么首先在 Rational Rose 内就将它们升级到 Petal Version 47。在您导入它们之前,这些模型必须不能带有一点错误。您可以使用 Rational Rose 工具中的 Check Model 选项以证实它们没有错误。
  • 在您开始规划 Rose 模型子单元转移操作之前,很重要的一点是您需要阅读 IBM 开发员作品“怎样使用 IBM Rational Rose Model Importer:第 1 部分. 怎样将 UML 模型转移到 Rational Software Architect”中(见于 参考资料)。

导入 Rational Rose 子单元

您可以按照以下的方式,来将子单元从 Rational Rose 模型转移到 Software Architect 环境中:

  1. 作为片段,类似于 Rational Rose 中的子单元。
  2. 作为独立的模型。
  3. 作为根包。
  4. 您可能会选择将子单元作为模型导入,另外一些作为根包导入,还有一些作为片段导入。
  5. 您可以将子单元重新映射到已存在的模型和包。
  6. 在将其他的子单元转移到片段、模型或者根包时,您可以通过对一些子单元重新映射来应用一个混合的方法。

作为片段来导入子单元

当您将子单元作为片段导入时,IBM®Rational®Rose 中的每一个子单元(.cat 文件)将会作为片段(.efx 文件)转移到 Rational Software Architect 方案。例如,Rational Rose 中的 SubunitX.cat 被转化为 Software Architect 工具中的 SubunitX.efx,如下面的图 1 所示。

图 1. Rational Rose 中的子单元会转化为 Rational Software Architect 中的片段
显示转化为片段的子单元的屏幕截图
显示转化为片段的子单元的屏幕截图

作为模型导入子单元

当您将模型作为子单元导入时,Rational Rose 方案中的每一个子单元(.cat 文件)都会作为一个单独的模型(.emx 文件)导入到 Software Architect 工具中,模型中会创建一个快捷方式,该模型包含了如下面图 2 所示新创建模型的子单元。所有对子单元元素的应用都会自动升级到从子单元中创建模型的元素。例如,Rational Rose 方案中 ModelA 的 SubunitX.cat,在导入之后会被转化为 Rational Software Architect 环境中的 SubunitX.emx。它是为 ModelA 中子单元 SubunitX 所创建的新的快捷方式,指向新创建的模型 SubunitX(SubunitX.emx),它位于名为 Shared 的项目中。

图 2. Rational Rose 工具中的子单元会转化为 Rational Software Architect 方案中的模型
显示子单元转化为模型的画面
显示子单元转化为模型的画面
图 2. Rational Rose 工具中的子单元会转化为 Rational Software Architect 方案中的模型
Picture shows subunits converted to models.
Picture shows subunits converted to models.

作为包导入子单元

当您将子单元作为包导入时,Rational Rose 中的每一个子单元(.cat 文件)都会作为一个单独的模型(.emx 文件)导入到 Software Architect 方案中。包含子单元的模型将会向如图 3 所示的新创建的包添加元素导入。对子单元的所有应用都会自动升级为从子单元创建的元素。例如,Rational Rose 工具中 ModelA 的 SubunitX.cat 在导入之后会被转化为 Software Architect 方案中的 SubunitX.emx(其类型设置为包)。这是一个为 ModelA 中子单元 SubunitX 所创建的元素导入,它指向名为 Shared 项目 SubunitX(SubunitX.emx)内新创建的包。

图 3. Rational Rose 工具中的子单元会转化为 Rational Software Architect 方案中的包
显示子单元转化为包的画面
显示子单元转化为包的画面
图 3. Rational Rose 工具中的子单元会转化为 Rational Software Architect 方案中的包
Graphic shows subunits converted to packages
Graphic shows subunits converted to packages

将子单元作为片段、模型或者根包导入的步骤

按照本文“第 1 部分. 怎样将 UML 模型转移为 Rational Software Architect”中的步骤(见于参考资料 )以导入 Rational Rose 模型和子单元。本部分将会向您展示 Rational Rose Model Subunit Conversion 向导每一步使用以转化子单元。

注意:

“Rational Rose Model Subunit Conversion”向导页面在 Rational Software Architect Standard Edition 7.5.2 版本中得到了一定的变更,以改善子单元转化的特性;因此,您将会发现该向导与本文的第 1 步与第 2 步有一些差异。

第 1部分. 进行子单元转化

在 Rational Rose Model Import 向导的 Rational Rose Model Subunit Conversion 页面上,选择如图 4 所示标为 将子单元转化为片段、模型或者包裹 的选项。

图 4. Rational Rose Model Subunit Conversion 向导
显示向导页面的画面
显示向导页面的画面

默认条件下,所有的子单元都会转化为片段。因此,当用户开始子单元转化时,子单元列表表得到了激活,而子单元列表中的所有子单元都将 Convert to/Share 列设置为 fragment

第 2 部分. 为子单元指定转移的选项

在完成步骤 1 之后,默认条件下子单元列表中的所有子单元都会转化为片段。您必须编辑子单元列表,以将子单元作为独立的模型或者根包导入。有两种方法可以达到这个目的:

  • 选项 1 :在子单元列表中,选择一个子单元名,然后,点击 Convert to/Share 列,您将会看到一个带有三个选项 FragmentModel 或者 Package 的下拉列表,如下面的图 5 所示。为子单元转化选择一个合适的选项。
图 5. 子单元列表中的下拉列表
显示子单元转化选项的下拉菜单
显示子单元转化选项的下拉菜单
  • 选项 2:右击子单元列表,就会打开一个如图 6 所示的 转移子单元弹出菜单。选择 All to 菜单选项,您将会看到如图 6 所示带有三个选项 FragmentModel 或者 Package。从中选择一个您想要的选项;子单元列表中所有子单元的 Convert to/Share 列都会随着被选中的类型而变化。当您拥有大量的子单元,而且它们中的大多数都需要在导入期间转化为相同的类型时,弹出菜单就十分的有用了。
图 6. 子单元列表中的弹出菜单
指定子菜单选项的弹出菜单
指定子菜单选项的弹出菜单

如果您要导入一个或者更多的子单元,那么您可以继续到第 3 步。如果您选择将一个或者多个子单元作为模型或者根包导入,那么可以继续到第 4 步。

第 3 步. 为片段选择命名规则

只是在您将一个或者多个子单元作为片段导入时,才能使用这个步骤。在如下面图 7 所示的 片段创建选项 窗格中作出合适的选择,来选择片段的名字。为了创建带有子单元文件名字的片段,您可以点击 使用子单元文件名 ;如果您想使用子单元的包名,您可以点击 使用子单元包名 。例如您可以考虑一下子单元 SubunitA.cat,它拥有在 Rational Rose 模型中定义为 PackageA 的包名。如果您选择 使用子单元文件名 选项,那么片段名将会在导入后设置为 SubunitA_cat.efx,但是如果您选择 使用子单元包名 ,那么片段名将会在导入后设置为 PackageA_cat.efx

图 7. 片段,模型或者包创建选项
显示子单元转化选项的图
显示子单元转化选项的图

第 4 步. 为模型/根包指定项目和命名规则

只是在您将一个或者多个子单元作为模型或者根包导入时,才能使用这些步骤。

1. 指定项目

您需要使用如上面图 7 所示的 Model/Package 创建选项窗格来指定项目以创建模型/根包。为了使用已存在的项目,您可以选择 已存在的项目选项并使用 Browse 按钮,以从工作区中选择一个已存在的项目。按照以下的方法,来创建新的项目,并选择 新项目选项,并为 项目名文本框中的新项目输入名字。在 Location 文本框中指定的位置处创建新的项目;默认条件下位置会设置为当前的工作区。为了更改位置,您可以取消 Use Default 复选框的选择,这就可以激活浏览按钮以指定新的位置。

2. 选择目录结构

使用如上面图 7 所示的 创建 模型/包窗格,来指定模型或者根包裹使用的目录结构。为了让层级结构与 Rational Rose 中的结构类似,选择 使用子单元目录结构 选项;为了使其成为一个平级的目录结构,您可以选择 在一个目录中选项。例如 SubunitA.cat 存储在 Rational Rose 模型中的 C:\XYZ 位置处,例如 C:\XYZ\SubunitA.cat。您将子单元导入位于 C:\workspace 或者 C:\workspace\ABC 处的 RSA 模型项目中。如果 使用子单元目录结构 选项被选中了,那么 SubunitA.emx 就会在 C:\workspace\ABC\XYZ\SubunitA.emx 中目录结构中创建;如果 In one directory 选项被选中了,那么 SubunitA.emx 就会在项目 ABC C:\workspace\ABC\SubunitA.emx 内创建。

3. 选择命名的规则

使用如上面图 7 所示的 For model/package file names 窗格来作出合适的选择,选择模型/根包的名字。为了使用子单元文件名来创建模型/根包,您可以点击 使用子单元文件名;如果您想使用子单元的包名,您可以点击 使用子单元包名 。例如考虑一下子单元 SubunitA.cat,它拥有在 Rational Rose 模型中定义为 PackageA 的包名。如果您选择了 使用子单元文件名选项,那么模型/根名就会在导入之后被设置成 SubunitA.emx,但是如果您选择了使用子单元包名 ,那么模型/根包的名字将会在导入后被设置为 PackageA.emx

在您为子单元导入指定合适的选项之前,会在 RAS 中创建模型、根包以及片段,并显示在 Project Explorer 视图中。

映射子单元

Rational Rose 工具会在两个或者更多的模型之间进行共享子单元,以允许模型构件的重复使用。您可以使用 Rational Rose Model Importer 的子单元映射特性,来导入这些类型的模型,这样就能在将子单元导入到 Software Architect 环境之后来共享子单元。子单元映射特性可以以两种方式来支持子单元的共享,如下面所示。

1.将模型和映射作为共享的子单元导入

当您首次导入共享的子单元时,会将其转化会一个模型,在上面的 将子单元作为片段、模型或者根包导入的步骤 部分中将会对这个模型做一番解释。现在不管何时您在导入包含相同子单元的新模型时,都可以使用 Rational Rose Model Importer 的子单元映射特性 ,在下面的 将子单元映射为已存在的模型和包的步骤 部分中将会对此作出解释。.该特性将会在您的 Software Architect 环境中配置新的模型,这样它就能重复使用已存在的模型了(已经从前面相同的子单元中创建)。

让我们考虑一个例子,以更好地理解这些概念。假设在 Rational Rose 中有两个模型,ModelA 和 ModelB 都使用相同的子单元 SubunitX。当您导入 ModelA 将 SubunitX 转化为 Shared 项目中的新模型。在导入模型之后,模型如下面的图 8 所示:

图 8. Rational Rose 中的子单元 SubunitX 会在导入后转化为 Software Architect 环境中的 SubunitX
显示从子单元中生成模型的画面
显示从子单元中生成模型的画面

当您在导入包含相同共享的子单元 SubunitX 的 ModelB 时,使用 Rational Rose Model Importer 的子单元映射特性。ModelB 将会导入到 Rational Software Architect 方案中,这样它就有对 Shared 项目内模型 SubunitX 的快捷方式,如下面的图 9 所示。ModelA 和 ModelB 会将子单元 SubunitX 作为模型共享。

图 9. ModelB 中的子单元 SubunitX 会在导入之后重新映射为模型 SubunitX
将子单元重新映射为已存在模型
将子单元重新映射为已存在模型

2. 将共享的子单元作为包和映射导入

当您首次使用共享的子单元时,将其转化为根包(使用类型包来建模),如上面的 将子单元作为片段、模型或者根包来导入的步骤 部分中解释的那样。不管何时您在导入包含相同子单元的新模型时,使用 Rational Rose Model Importer 的 子单元映射特性 部分,如下面的 将子单元映射为已存在模型和包的步骤 部分中有介绍。这个特性将会在您的 Software Architect 方案中配置一个新的模型,这样它就会重复使用已存在的模型(已经从前面相同的共享子单元中创建了)。

让我们考虑一下一个范例以更好地理解这个概念。在 IBM®Rational®Rose 中有两个模型,ModelA 和 ModelB 都使用相同的子单元 SubunitX。您需要导入 ModelA 将 SubunitX 转化为一个新的位于 Shared 项目内的包。在导入模型之后,模型如下面的图 10 所示。

图 10. Rational®Rose 中的子单元 SubunitX 在导入后被转化为了 Rational®Software Architect 中的包 SubunitX。
显示从子单元中生成包的图像
显示从子单元中生成包的图像

当您导入包含共享子单元 SubunitX 的 ModelB 时,使用在 Rational Rose Model Importer 中找到的子单元映射特性 。ModelB 将会导入到 Software Architect 方案,就是将元素导入到如图 11 所示的 Shared 项目内包 SubunitX 里。所以 ModelA 和 ModelB 都会将子单元 SubunitX 作为根包共享。

图 11. 在导入之后将 ModelB 中的 Subunit SubunitX 重新映射为包 SubunitX
将子单元重新映射为已存在的包
将子单元重新映射为已存在的包

将子单元映射为已存在的模型和包

按照以下的步骤来将子单元映射为已存在的模型和包。

第 1 步. 激活子单元映射

在 Rational Rose Model Import 向导的 Rational Rose Model Subunit Conversion 页面上,选择标为 将子单元映射为已存在的模型/包 的复选框,如下面的图 12 所示。

图 12. Rational Rose Model Subunit Conversion 向导
显示子单元转化向导页面的画面
显示子单元转化向导页面的画面

第 2 步. 选择模型项目的列表以进行映射

使用如上面图 12 所示的 Source Directory 页面,以选择用于映射导入子单元的模型项目。点击 Source Directory 部分中的 Browse 按钮,这将会打开一个对话框,允许您为映射如图 13 所示的子单元而选择项目的列表。

图 13. 选择输入文件夹对话框
显示选择已存在项目对话框的图像
显示选择已存在项目对话框的图像

一旦您选择了项目的列表并点击了 OK 按钮,那么已存在的项目文本框就会随着用户所选择的项目列表而变化,如图 14 所示。

图 14. 已存在的项目文本框
显示已存在项目的文本框
显示已存在项目的文本框

可以映射的子单元会在 子单元列表中自动地变化,同时 Convert to/Share 会设置成 ShareSharable 设置为 Yes,如下面的图 15 所示。Convert To/Share 区域关闭了,因为您不能编辑它们。例如 SubunitY 和 SubunitZ 会在共享的子单元 SubunitX 中相联系,因此如图 15 所示它们是禁止的。不能共享的其他子单元拥有 Convert to/Share 列中观察到的值。

图 15. 随着共享信息而变化的子单元列表
显示子单元列表的图
显示子单元列表的图

第 3 部分. 进一步定制子单元的转化

您可以使用 Rational Rose Model Subunit Conversion 页面上的子单元列表,来进一步编辑和精化子单元转化选项。子单元列表中还支持接下来的编辑操作。

1. 取消子单元的共享

如果子单元是可共享的。Sharable 列被设置成 Yes,而您并不想共享该子单元,那么您可以从上面图 5 所示的下拉菜单中将 Convert to/Share 类更改为 Fragment、Model 或者 Package 来取消子单元的共享。在导入过程完成之后,每一个子单元都会基于您所指定的选择,而作为一个新的片段、模型或者根包来导入。于是所有的子单元都会自动称为非共享的。

2. 共享子单元

如果子单元将 Sharable 设置成 YesConvert to/Share 部分没有设置成 Share,您可以编辑 Convert to/Share to Share 以共享如图 16 所示的子单元。所有的子单元都会随着 Convert To/Share 设置为空而自动禁止

注意:当子单元没有设置成 Share 时,您不能编辑 Convert To/Share 以得到子单元。

图 16. 设置 Convert to/Share 列以共享
将可共享的子单元编辑为共享
将可共享的子单元编辑为共享

3. 编辑非共享的子单元

您可以使用带有三个选项 Fragment、Model 或者 Package 的 Convert to/Share 列上的下拉菜单,来将非共享的子单元转化为您想要的类型,如图 5 所示。为子单元转移选择一个您中意的选项。

您还可以使用弹出菜单来编辑非共享的子单元。右击子单元列表,将会打开如图 17 所示的转化子单元弹出菜单。转化子单元弹出菜单如图 17 所示。对菜单项选择所有的非共享元素,您将会看到一个带有三个选择 Fragment、Model 或者 Package 的子菜单,如图 6 所示。选择一个您所想的选项;子单元列表中所有非共享子单元的 Convert to/Share 列都会随着所选中的类型而变化。您拥有大量的子单元,而且它们中的大多数都需要在导入期间转化为相同的类型时,弹出菜单就十分的有用了。

图 17. 在子单元列表中非共享子单元的弹出菜单
编辑非共享子单元的菜单
编辑非共享子单元的菜单

总结

Rational Rose 模型子单元可以作为片段、模型或者包导入到您的 Rational Software Architect 方案中。Rational Rose 工具中由多个模型共享的子单元,还可以在使用 Rational Rose Model Importer 中子单元映射特性来导入到 Software Architect 环境中之后,共享工具。您还可以使用一个混合的方法,激活 将子单元转化为片段、模型或者包 以及将子单元映射为已存在的模型/包 选项,将其他的部分转移为片段、模型或者根包来重新映射一些子单元。

关于第 3 部分

在本系列文章的第 3 部分中,我们将会谈及在 Rational Rose Model Importer 中找到的基于路线图概述创建功能的新特性。本文还讨论了基于框架模型的导入,以及关于怎样处理使用脚本的 Rational Rose 模型的技巧。

技巧与建议

如果子单元转化失败了,那么您可以在 Error Log 窗口中检查问题的细节信息,并在那里处理出现的问题。


相关主题


评论

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

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Rational
ArticleID=631014
ArticleTitle=怎样使用 IBM Rational Rose Model Importer,第 2 部分: 怎样将 Rose UML 模型子单元转移到 Rational Software Architect
publish-date=04272010