了解如何使用 IBM® Rational® Rose Model Importer
将 UML 模型从 Rational Rose 移植到 IBM® Rational® Software
Architect、IBM® Rational® Systems Developer,或
IBM® Rational® Software Modeler 中。本文逐步地指导您使用这些较新产品增强的建模功能来移植
UML 模型。开始遵照这些逐步的指导。
您需要安装以下的 IBM® Rational® 软件,并且您需要熟悉这两款产品的用法:
- IBM® Rational® Software Modeler(或 IBM®
Rational® Architect 或 IBM® Rational® Systems
Developer)V7.0 或之后的版本。(参见 参考资料)
- IBM® Rational® Rose,及包含 Petal Version 47、48,或
50 的模型,这些是您唯一可以导入到 Rational Software Architect 中的版本。如果您的模型使用了
Petal Version 46 或更早的版本,那么首先在 Rational Rose 中将它们升级到
Petal Version 47。在您导入这些模型之前,它们必须是没有错误的。您可以使用 Rational
Rose 中的 Check Model 选项来验证它们。
在您开始计划移植 Rational Rose 模型之前,阅读 IBM® developerWorks®
上的标题为“Model structure guidelines for Rational Software
Architect”(参见 参考资料)的文章是很重要的。
Rational Rose 是非常有效且成功的建模工具,但它是基于 UML 1.4 标准的。IBM Rational
已经在 Eclipse 环境上构建了新的建模平台,它包含了 UML 2 的开源参考实现。IBM Rational
Software Architect、Rational Software Modeler,和 Rational
Systems Developer 是基于较新的平台的。这些产品提供了超过 Rational Rose
所具有的建模和自动化功能。
如果您想要采用新的建模产品,并且需要将 UML 模型从 Rational Rose 中移植过去,那么本系列文章将对您有帮助。这第一篇文章将帮助您了解如何有效地使用
Rational Rose Model Importer,并且将说明要遵守的规程。本系列中后面的文章将介绍
Rational Rose Model Importer 的高级特性,并且讨论普遍询问的问题,以及如何处理普遍遇到的问题。
以下子部分说明了在 Rational Rose 和 Rational Software Architect
处理模型的方式上的四个重要差别:
属性和原型
Rational Rose 为 UML 元素定义了一组描述它们的属性(attribute)的属性(propertie)。这些属性定义在
.pty 文件中。类似的,用于 UML 元素的原型定义在 .ini 文件中。
Rational Software Architect 利用 UML 概要文件定义 UML 元素属性和原型。UML
概要文件被定义为以扩展名为 .epx 的文件的形式来存储的包。它包含一组标准的 UML 概要文件,但这些概要文件不包含许多
Rational Rose 原型和属性。因此,当把模型从 Rational Rose 导入到 Rational
Software Architect 中时,在 Rational Rose 模型中的,而 Rational
Software Architect 中不可用的所有属性和原型都被导入为 UML 概要文件。
子单元和片段
Rational Rose 可以使用一个或多个文件划分和存储模型。如果模型被分成单独的文件,那么除了主(.mdl)文件以外的其他文件都称为
subunit(子单元)。
类似的,Rational Software Architect 也可以使用一个或多个文件划分和存储模型,但如果模型被划分为单独的文件时,除了主(.emx)文件的其他文件都称为
fragment(片段)。
Rational Rose 模型中的子单元可以导入为 Rational Software Architect
片段。将模型分离为子单元或片段可以让项目团队并行地开发模型。
模型闭包
Rational Rose 不能定义可以同时打开的具有跨模型引用的多个模型。它使用子单元的概念来支持多个模型。
可以将模型划分为能够独立存储并保存的子单元,但基础模型包含对它的引用。可以独立地加载并卸载这些子单元。在
Rational Rose 模型中,辨别并加载所有子单元,并且辨别并加载所有框架库模型,这样的 Rational
Rose 模型称为闭包。没有辨别并加载子单元,或者子单元所引用的框架库的模型没资格称为闭包。要进行无错的导入,确保
Rational Rose 的完整闭包可用。
模型组织
在 Rational Software Architect 中,所导入的模型将与原始的 Rational
Rose 模型(基于 IBM® Rational Unified Process®,或
RUP®,4+1 Views)具有相同的逻辑包含结构。然而,不像 Rational Rose 那样,Rational
Software Architect 不强制使用该结构,因此,如果您愿意,可以在导入之后将模型重构为不同的结构。
类似的,Rational Rose 不能定义包含跨模型引用的多个模型,但较新的 Rational 软件可以。Rational
Rose Model Importer 提供选择,将子单元转换为模型。在导入模型之后,您还可以利用 Rational
Software Architect 将所导入的模型重构为多个模型。
遵照这些步骤,将 Rational Rose UML 模型导入到 Rational Software
Architect 中。
步骤
1. 打开 Rational Rose Model Importer 向导,并设置选择
- 在 Rational Software Architect 菜单中,选择 File >
Import(参见图 1),打开 Model Importer 中的 Import 窗口。
图 1. 打开 Import 菜单
- 单击 Other,然后选择 Rational Rose model,如图
2 所示。
图 2. 选择 Rational Rose model 选项
- 单击 Next,开打 Rational Rose Model Import 向导,打开的第一页是
Import a Rose Model,如下所示(参见图 3)。
- 选择 source Rose model 和 destination
模型工程。
图 3. Import a Rose Model 向导页
- 向导将提示您提供影像导入过程的行为和结果的输入。提供此输入:
- 模型:使用 Browse 按钮选择您想导入到其他 Rational
软件中的 Rose 模型(.mdl 文件)。提示: 确保在继续导入操作之前验证了模型的完整性。
- 注册表文件(Registry File):指定在导入过程中要使用的注册表文件。要点:只有当您不在安装了
Rational Rose 的机器上执行导入时,才需要该字段的值。当安装在同一台机器上时,Model
Importer 可以直接从操作系统(operating system,OS)的注册表中读到已安装的
Rose 的属性文件的位置。然而,Rational Rose 没有安装在同一台机器上,那么
Model Importer 必须阅读您在此指定的注册表文件,从而找到您将要导入的 Rational
Rose 模型中用到的任意属性、定制的属性集合,和原型。如果 Rational Rose 没有安装在同一台机器上,并且没有指定注册表文件,那么将不会导入
Rose 属性或原型。
- 现有的工程:如果您想要将 Rose 模型导入到 Rational Software
Architect 工作区中的现有的建模工程中,那么就使用该选项。使用 Browse
按钮选择现有的 Rational 软件建模工程。
- 新工程:如果您想要将模型导入到新的建模工程中,那么就提供新的工程名称。新工程将在
Location 字段中指定的路径下生成。您可以通过 Browse 按钮选择路径。如果选择了
Use Default 复选框,那么新的建模工程的位置将在当前工作区中。
- 单击 Next(只有当恰当地指定了要导入的源和导入的模型的目的地时,Next 按钮才有效。)
步骤 2. 辨别子单元和路径图
向导的下一页标题为 Resolve Subunits and Path map symbols(参见图
4)。它列出了您正导入的模型所引用的所有子单元,以及哪些子单元已辨别,而哪些没有。
重点:
如果在您正导入的 Rational Rose UML 模型中没有子单元,那么 Next 按钮自动有效。在这种情况下,您可以跳过后面的选项
A 和 B,并直接继续到步骤 3。
图 4. 辨别子单元和路径图符号
图 4 中的实例显示出 Rose 模型(.mdl)文件所引用的四个子单元(.cat 文件)。红色的 X
警告标志说明在指定的路径中找不到相应的子单元,这意味着没有辨别子单元。当子单元是未辨别的时候,您有两种选择:
- 选项 A:选择 Ignore unresolved subunits
复选框。
这样做将让 Rational Rose Model Importer 忽略未辨别的情况,并且不将这些子单元导入到其他
Rational 软件中。如果您选择了该复选框,那么 Next 按钮就有效了,如图 5 所示。导入带有未辨别的引用的模型的后果是,在较新的
Rational 软件中的模型也将含有未辨别的语义引用,并且不是有效的模型。举例来说,关系,例如关联和依赖,可能是未辨别的,属性和参数可能有不能辨别的类型规范,等等。
图 5. 选择选项来忽略未辨别的子单元
- 选项 B:
为对应可以分辨子单元实际放置的位置的实际路径图的 Path Map Symbol 指定一个值。要这样做,就使用未辨别的路径图符号表中的
Value 列的每一行中的 Browse 按钮(标记为省略号,或三个点),然后单击 Refresh。这样做,将辨别出所有的子单元位置,并且
Next 按钮将有效,如图 6 所示。
图 6. 已辨别的路径图符号
步骤
3. 指定应该如何转换子单元
- 完成步骤 2 之后,如果有必要,单击 Next 到达 Rational Rose
Model Subunit Conversion 页(图 7)。
注意:
如果您导入的 UML 模型中没有子单元,那么 Subunit Conversion 页上的 Next 按钮将自动有效。在这种情况下,再次单击
Next 继续步骤 4:指定应该如何移植属性集合。
图 7. Rational Rose Model Subunit
Conversion 向导
- 对您想要转换子单元的方式进行配置。在做这件事时,您将进行非常重要的选择。根据您配置向导的此页的方式,您的
Rational Rose 模型将以下面两种方式之一进行导入:
- 如果您选择了 Convert subunits to models or fragments
框,那么您还有两个选项:
- 您可以选择 Convert all subunits to models。如果您选择了此项,那么每个
Rose 子单元将作为分离的逻辑模型导入到 Rational Software Architect
中。您可以进一步选择:
- 如果在此向导中,您默认地不进行进一步的操作,那么每个 Rational
Rose 子单元将成为与源模型(.mdl 文件)相对应的单个 Rational
Software Architect 逻辑模型(.emx 文件)中的片段。
- 或者,您可以在向导中指定,一些子单元将成为由 .mdl 源模型文件产生的
Rational Software Architect 逻辑模型中的片段,而其他的成为分离的逻辑模型。
- 如果您不选择 Convert subunits to models
or fragments 框,那么整个 Rational Rose 模型,包括其所有的子单元,将默认地成为
Rational Software Architect 中单个的非分段的逻辑模型。这样做的效果等同于在您将模型导入到
Rational Software Architect 中之前就让 Rational Rose
模型吞并所有子单元的效果。如果您确实选择了该框,那么向导的该页面上的其他控制组将成为有效的(Model
creation 选项和 Create models)。这些是在本系列文章的第
2 部分中讨论的高级控制。
步骤 4. 指定应该如何移植
Rational Rose 属性集合
- 单击 Next>,打开 Map Property Sets 向导,如图 8
所示。
图 8. Map Property Sets 向导
- 如果您的 Rational Rose 模型使用定制的属性集,并且您想要导入它们,那么就选择 Import
property sets as UML profiles 选项。那些属性将作为 UML 概要文件导入到较新的
Rational 软件中。最好是选择该选项,因为否则您将丢失应用于 Rational Rose 模型的所有属性。当您选择了该选项时,您必须提供以下输入:
- 属性集控制:当您想要导入实际地应用于并在 Rational Rose 模型中使用的属性时,选择
Only Used Property Sets 选项。提供该选项是因为 Rational
Rose 定义了与其程序设计语言正逆工程支持相关的大型属性集,而大部分 Rational Rose
模型不使用它们的全部。举例来说,在图 8 中所示的实例中,被导入的模型只使用 Java 属性。因此,Property
Sets 中只列出了 Java。相反,如果您选择 Both used and defined
property sets,那么它将显示 Rational Rose 中定义的,用于其支持的所有程序设计语言(Ada、C++、CORBA,等等)的所有属性。
- 属性集映射选项:该屏提供了如何导入 Rational Rose 属性集的选项。您必须选择其中之一。有三个选项,如图
8 所示:
- Ignore this property set:当对特殊的属性集选择了该选项时(如属性集控制中所选的)那么将不导入该属性集。
- Reference an existing profile:当相同的属性集之前已经被导入到工作区中时,选择此选项。(这是要导入多个
Rational Rose 模型的情况,并且您已经完成了一个或多个的导入。)当针对特殊的属性集选择了该选项时(如属性集表中所选的),将不导入该属性集,但由先前的属性集的导入而创建的现有的
Rational Software Architect 概要文件将应用于现在正导入的 Rational
Rose 模型。如果存在多个版本的概要文件,那么将默认选择包含同样属性集的最新的可用的概要文件。您可以使用
Browse 按钮来覆盖此默认值,并选择不同的概要文件版本。
- Convert it to a new profile:当对特殊的属性集选择了该选项时(如属性集表中所选的)那么该属性集将作为拥有指定的名称和位置的新概要文件导入进来。如果与另一个
Rational Rose 模型的导入有关的相同的属性集之前已经被导入了,那么将新建更高编号的版本的概要文件。
- Restore Defaults 按钮:通过该按钮,您可以将设置还原为 Rational
Rose Model Subunit Conversion 向导页第一次出现时的样子。
步骤 5. 指定应该如何移植
Rational Rose 原型
- 当您完成了 Map Property Sets 向导页上的输入之后,单击 Next 来到
Map Stereotypes 页,如图 9 所示。
图 9. Map Stereotypes 向导
Rational Rose 有一组在原型配置文件(.ini 文件)中定义的内嵌原型。举例来说,对于每个
Rational Rose 内嵌附件,例如 C++、Java,或 CORBA 都有相应的原型配置文件。这些原型配置文件作为
UML 概要文件被导入到 Rational Software Architect 中。如果要导入的 Rose
模型拥有具备从任意这些原型配置应用来的原型的元素,那么重要的是把那些原型配置导入到 Rational Software
Architect 中。
- 如果您想要从 Rational Rose 导入原型,那么选择 Import stereotypes
as UML profiles 选项。最好选择此选项,因为否则在移植过程中,您将丢失应用于模型的原型。
- 如果您选择该选项,那么您必须在 Map Stereotypes 页上提供以下输入:
- 原型表:该表列出了 Rational Rose 中可用的所有原型配置。您可以从表中选择每个原型配置,然后单独地为每一个定义映射选项。
- 原型配置映射选项:该屏提供了如何导入 Rational Rose 原型配置的选项。对于每个原型配置将默认选择其中一个选项。如果工作区中已经存在了对于该原型配置的
UML 概要文件,那么将选择 Reference an existing profile
选项。如果工作区中没有对于该原型配置的 UML 概要文件,那么将选择 Convert it to
a new profile 选项。下面是三种选项:
- Ignore this stereotype configuration:
当对于来自原型表中罗列的原型配置的特殊的原型配置选择了该选项时,将不导入该原型配置。
- Reference an existing profile:当已经将同样的原型配置导入到
Rational Software Architect 工作区中时(这是要导入多个模型的情况,并且您已经完成了一个或多个的导入),选择此选项。当对于特殊的原型配置选择了此选项时,将不导入该原型配置。相反,当创建新的
Rational Software Architect 模型时,它将引用之前导入的概要文件中相应的原型配置。如果有多个版本的概要文件,那么将默认选择包含相同原型配置的最新可用的概要文件。您可以选择
Browse 按钮来覆盖默认值,并选择不同的概要文件版本。
- Convert it to a new profile:当对于来自原型表中罗列的原型配置的特殊的原型配置选择了该选项时,将把原型配置作为带有指定的名称并在指定的位置下的新概要文件的一部分进行导入。
步骤 6. 指定语义映射和外观参数
- 当您完成了 Map Stereotypes 向导以后,单击 Next 继续图 10
中所示的 Rational Rose Model Import Preferences 页。
图 10. Rational Rose Model Import
Preferences 向导
- 该向导让您声明用于将 Rational Rose 模型导入到 Rational Software
Architect 中的方法的参数。举例来说,您可以调整 Rose UML 1.4 属性映射到 Rational
软件 UML 2 属性的方法。还有许多与图外观相关的设置。上下文敏感的 Help(F1 键)可以用于每个设置,以说明其效果。
步骤 7. 移植您的模型
- 当您声明了参数之后,单击 Finish。
Rational Rose 模型的导入将开始,进度条将向您展示移植的状态。当导入完成之后,将在工作区中创建新的
Rational Software Architect 模型(或多个模型),可能包含新的工程和新的概要文件,如图
11 所示。
- 新的 Rational Software Architect 模型将于原始的 Rose 模型具有相同的逻辑包含结构(基于
RUP 4+1 Views)。然而,Rational Software Architect 不像 Rose
那样强制实施该结构,因此,如果您愿意,可以将模型重构为不同的结构。
图 11. 含有导入的 Rational Rose 模型(RSDModel.mdl
文件)的 Rational Software Architect 工作区
- 如果导入失败,并且报了内存溢出的错误,那么增加 Rational Software Architect
运行时内存。所使用的运行时内存通过
-Xmx 选项在 eclipse.ini
文件中指定。
- 如果因为错误而导入失败,那么在 Error Log 窗口中查看问题细节,并且解决那里指出的问题。
本文介绍了如何有效地利用 Rational Rose Model Importer,将模型导入到 Rational
Software Architect 中。第 2 部分将介绍该工具的高级特性,并且提供重要的提示。
学习
获得产品和技术
讨论
|