创建 UML 概要文件(UML Profiles),第 1 部分: 使用 Rational Software Architect、Rational Systems Developer 和 Rational Software Modeler 创建和布署 UML 概要文件

这篇文章会向您详细阐述如何使用 IBM® Rational® Software Architect、IBM® Rational® Systems Developer 和 IBM® Rational® Software Modeler 创建 UML 概要文件 (UML Profiles)。它即涉及了使用 UI 设计器,又要编写代码。在阅读本文之前,您需要熟悉 UML 2.1 的规范。

Dusko Misic, 软件开发经理, EMC

Dusko 在 2003 年入职IBM。他在软件行业有13年的工作经验。他做为软件工程师和软件开发经理,从事于 RSM 和 RSA 的 UML Modeler 组件相关技术工作。他直接参与了有关 UML 概要文件,OCL 和其它 UML 建模的 RSA/RSM 技术支持工作,主要负责软件设计和实现。



2008 年 10 月 12 日

简介

这篇文章会向您详细阐述如何使用 IBM® Rational® Software Architect、IBM® Rational® Systems Developer 和 IBM® Rational® Software Modeler(7.0或之后版本)产品创建 UML 概要文件。它涉及到了 UI 设计和代码的编写 (为用户自已扩展工具的使用)。这篇文章主要说明如何创建概要文件,但是也会涉及一些更深入的关于概要文件使用的说明。

本文所涉及使用的软件版本(按版本发布的时间进行排序)是 7.0,7.0.0.1, 7.0.0.2, 7.0.0.3, 7.0.0.4, 7.0.0.5 (只限于 Rational Software Architect)和 7.0.5 (Rational Software Modeler 和 Rational Systems Developer)。本文会详细说明两个版本之间的不同之处。

这些版本信息适用于 Rational Software Architect, Rational Systems Developer 和 Rational Software Modeler。除特殊说明之外,本文的 “Rational Software Modeler” 和 “Rational Systems Developer” 将会使用 7.0.5 或更新的版本。

在读本文之前,您需要熟悉 UML 2.1 规范的相关知识,特别是关于概要文件相关部分的知识。这里不会对规范的内容有进一步的说明。而主要把焦点放在如何使用 Rational Software Architect 来实现。有关 Eclipse 和 Rational Software Architect 的一些基本知识也同样很有帮助。如果您想开发基于插件项目的概要文件,Eclipse PDE (插件开发环境子项目)的相关知识也同样对您很重要。


6.x 和 7.x 版本之间的差异

这部分内容就 UML profile 在 6.x and 7.x 版本之间的差异提供了总览性的简要说明。如果您对 V6.x 版本下的 UML 概要文件比较熟悉,那么会对您在使用 V7.x 版本时快速入门起到很大帮助。

  • 在 V7.x 版本里概要文件里可以通过定义类,使 stereotype/class 属性得到完全支持。而 V6.x 版本仅仅支持只读模式:没有编辑的功能。
    注意:仅当属性的集合特性被设置成包含才能完全支持。
  • UML 2.1 元类和原型相关联。从根本上讲,是通过 UML 2.1 元类 (metaclass) 来支持 stereotype/class 属性。
  • 在同一概要文件将两个原型属性相关联。从根本上讲,是通过原型来支持 stereotype/class 属性。
    注意: 这里使用的是 Rational Software Architect V7.0.0.2 版本。
  • 可以在其它概要文件应用概要文件。
  • 可以将概要文件导入到其它概要文件。
  • Profile Editor 已经被重新设计。现在它已经支持版本管理,概要文件归档,应用概要文件部分,导入模型库部分,导入 概要文件部分,对已经引用的和正在引用的模型和概要文件列表显示。Rational Software Modeler 和 Rational Systems Developer V7.0.5 或更高版本有概要文件图列表。
  • 支持类图(仅支持 Rational Software Modeler 和 Rational Systems Developer 7.0.5 或更高版本)。
  • 使用工具生成概要文件(仅支持 Rational Software Modeler 和 Rational Systems Developer 7.0.5 或更高版本)。
  • 通过使用工具进行 stereotype 修饰,不仅限于使用 Model Explorer (现在项目浏览器也可以进行)和图表。更为显著的变化,选择元素对话框也支持 stereotype 修饰。其它相应的参数也得到了改进。
  • 改进的选择元类对话框(为创建元类扩展标记)。支持通过类型进行查询。
  • 改进的选择概要文件对话框(为应用概要文件)。在工作空间增加浏览选项。
  • 通过使用项目浏览器可以创建元类扩展标记,而不仅仅是在属性视图。使用 Rational Software Modeler 和 Rational Systems Developer 7.0.5 或更高版本,您可以使用图表工具来完成这些工作。
  • Stereotype 和 stereotype 所有属性支持 UI 只读模式标记。
    注意:这里使用的是 Rational Software Architect V7.0.0.2 版本。
  • 改进的保存恢复行为。在保存时将会进行错误验证,如果存在错误,这个版本的概要文件将不会被生成。
  • 改进的发布流程:可以在当前使用上一个未发布的版本,这样就可以将测试模块的概要文件从上一个老版迁移到新版本。
  • 为遗留版本布署概要文件的支持:可以将概要文件注册声明为遗留版本,并且在一些应用和迁移的场景中这些版本会优先处理。(Rational Software Modeler 和 Rational Systems Developer 7.0.5 或更高版本)。

创建概要文件

这部分内容主要介绍如何创建一个概要文件和包所包含的内容。并向您阐明了关于概要文件定义的各种特性。

Rational Software Architect UML 概要文件是使用 .epx 扩展名的文件。工具提供的功能仅仅能够在工作空间中创建并编辑这种类型的文件。然而,当您创建了概要文件之后,它还能够在脱离了工作空间环境的其它模块下使用:这部分内容更详细的信息在 布署 章节,本系列的第二部分。

Rational Software Architect 也支持 Eclipse 的开源 .profile.uml 文件格式,这种格式的文件可以使用在 UML 模块中。但是并不支持这类文件的编辑模式,但是您可以使用开源的编辑器 (Eclipse UML2) 来编辑这类文件。

本文其它的部分将会讨论 Rational Software Architect 的缺省概要文件 (.epx) 格式。想要了解 Eclipse 开源文件格式的更多细节,请参照参考资料 部分。

建模透视图是创建编辑概要文件最好的透视图。创建编辑概要文件两个最重要的视图是项目浏览器视图和属性视图。您可以使用项目浏览器视图来创建概要文件的元素,并使用属性视图来设置它们的属性。Rational Software Modeler 和 Rational Systems Developer 也提供图形化工具来操作概要文件。

新建概要文件

您即可以通过运行新建 UML Profile 向导来创建一个新的 概要文件(如图 1 所示),也可以通过新建 UML 概要文件项目向导。要运行新建 UML Profile 向导,点击 File>New>Other ,接下来选择 Modeling >UML Extensibility > UML Profile.

图 1. 新建 UML Profile 向导
Profile 名称, 文件名, 和目标文件夹

新建 UML Profile 向导可以来指定的文件夹中创建一个概要文件。概要文件的名称并不需要和文件名一致,但是可以使它们一致来简化一些步骤。创建概要文件时可导入一些模块的库文件,这些操作同样也可以在创建完成后进行。

新建 UML Profile 项目向导提供一个快捷方式可以同时创建项目和概要文件。但是请注意概要文件不用必须放在一个 Profile 项目中:您可将它放置在任何一个项目中。

当概要文件被创建成功后,您可以在项目浏览器中选择它。同样的,图 2 说明的是概要文件 编辑器,并且关联着一个打开的 .epx 文件。

图 2.概要文件编辑器
概要文件信息、版本和文档

概要文件编辑器和 .epx 文件相关联(参见图 3)。它有 3 个标签页:OverviewDetails ReferencesOverview 提供一些关于概要文件的数据信息:

  • Profile 名称
  • 文件路径(全路径)和大小
  • 文件最后更新时间
  • 文件是否是可编辑的
  • 版本管理
  • 文档

Details 标签页,如图 3 所示,有应用的概要文件、导入的概要文件和导入的模块库文件的一些表格。Rational Software Modeler 和 Rational Systems Developer 也有概要文件的图表。

引用标签页提供一个列表,包括了所引用工作空间的概要文件和引用的模块与概要文件。

图 3.概要文件编辑器,Details 签页。
四象限详细信息

请检查 (uml)(UMLPrimitiveTypes) 在项目浏览器内概要文件下的所有条目。(uml) 条目所表示的是 UML 2.1 元数据,是概要文件的扩展之一。(UMLPrimitiveTypes) 条目代表导入的 UML Primitive Types 模型库。这是一个可选项; 创建概要文件不用必须导入它。

注意: 理论上讲,UML 概要文件可以扩展不同的元模型,而且 Rational Software Architect 的实现可以支持 UML 2.1 元模型。

当选择一个概要文件,概要文件的属性(如表 4)在属性视图中显视。版本和发布相关属性将会在稍后介绍(在本系列的变更管理 第 2 部分)。

图 4.概要文件属性
Properties 视图和其五个标签页

要添加 UML 元素到概要文件,在项目浏览器中选择它,并右击,并且点击 Add UML,如图 5 所示。在概要文件中可以创建的 UML 类型包括原型、类和枚举类型。可选的方法,如果您使用 Rational Software Modeler 和 Rational Systems Developer,您可以选择 Add Diagram > Class Diagram 代替 Add UML。这样可以在概要文件中创建一个类图。接下来可以使用标准的图型工具创建概要文件元素:图形面板、模型助手、操作工具栏和弹出菜单。

图 5. 为概要文件添加 UML 菜单
菜单命令

名称

相应元素类型(Stereotype、Class、Enumeration 和 Attribute)的名称必须符合 Java™ 标识符的规范。通常违返的规则是在名称中使用空格符。对于概要文件的结构,非法的名称可以引起许多问题。最严重的问题是非法的属性名所引起的,可以引起所使用的概要文件的模型的破坏。为了避免这种情况发生,在最开始输入名称的时候工具会检验名称的合法性。

导入的概要文件

使用概要文件编辑器,Profiles 还可以导入其它的概要文件,在编辑器的 Details 标签页,Imported Profiles 部分。导入一个概要文件,还要使它的元素能在被导入的概要文件中生效。例如,定义在另一个概要文件中的元素(类、枚举和原型)现在可以被用于原型类型的属性中。同样的,它的原型类型也可以是指定的类型。然而,导入的概要文件是不能被再导入的。也就是说,当导入了一个概要文件,它的原型在模型中就不再有效。


原型、属性和关联

原型

要创建一个原型,在项目浏览器中选择概要文件并右击它,然后选择 Add UML > Stereotype。结果如图 6 所示。可供选择的方法,在 Rational Software Modeler 和 Rational Systems Developer 中,您可以通过图表创建原型。

图 6. Stereotype 属性
Properties 视图和其六个标签页

一个原型可以用于简单的标识它所使用的元素。然而,它的真正作用在于它的扩展能力,通过它的扩展功能可以改变元类的定义。这个扩展能力不能自动扩展到所有的元类实例 (或元类);原型首先要被应用到模型元素,这就是一个特定元类的实例。当然,您可使扩展成为必须的,这样它就可以自动扩展(概要文件被应用的模型)。

抽像原型不用被应用到模型元素。抽象原型可以被另一个原型所实现 (要想得到更多的信息,参阅本系列第2部分 一般化 部分)。

LeafVisibility 域通常都被忽略。原型被标记为一个 Leaf -- 或使用可视值来代替缺省值。(public) -- 不要担心一些特殊的行为,一但原型 被 protectedpackage修饰,当检验概要文件时可视性会被报告为一个错误。所以您不能为这两个域改变缺省值,因为它们会给以后的版本发布产生一系列的问题。

Icon Shape Image 域, 和 Suppressed 标记,在 表示部分,类别 域是在 Stereotype 属性 部分。

UI Read OnlyProperties UI Read Only 域被添加在 Rational Software Architect 7.0.0.2 版本. 如果 原型被标记为 UI Read Only,那么就不能使用缺省的 UI 工具来应用或不应用它。如果它被标记为 Properties UI Read Only, 那么它相应的所示属性也被作为 UI Read Only 处理(您可以找到更多的细节在 Stereotype 属性 部分)。

元类被原型所扩展,是在属性视图 Extensions 标检页完成的。Metaclass Extensions 表列出了所有原型的扩展, 如图 7 所示。

图 7. 元类扩展
元类扩展

您可以通过点击 Add Extension 按键添加一个扩展,将会启动一个创建元类扩展对话框,如图 8 所示。元类扩展的规范定义在 UML 2.1 元模型。每一个扩展都可以被标记为 Required 或者不必须(not required 为缺省值)。只有当创建扩展时才能设置选项。如果要改变选项值,您就应该先删除原来的扩展再新建一个扩展。

图 8. 创建元类扩展对话框
可使用元类的滚动列表

注意:这里提供一个方法(不建议使用)来修改必须状态。首先,确定所有扩展都在项目浏览器内(缺省模式下)。您可以通过从过滤器列表的条件中删除扩展结束(选择 Window > Preferences, 并选择 Modeling > Views > Project Explorer, 再选择 Filters)。点击下一步,在项目浏览器下定位到扩展(在概要文件下的关联虚拟目录下)并展开它:下面的属性就是扩展结束。选择它并指向 Advanced 标签页,在属性视图下。要使扩展成为必须的,设置下面的属性值为 1; 要设置它为非必须的,设置值为0

当一个扩展被设置为 required,这就意味着原型将会被自动应用到所有的模型元素,也就是元类的实例,考虑到概要文件拥有的原型被应用到模型元素。如果一个扩展是 非必须的,那么原型必须要被应用到一个元素,不管是通过用户界面还是程序实现。

您还必须要通过项目管理器创建一个元类扩展:选择原型并选择 Add UML > Metaclass Extension。使用 Rational Software Modeler 和 Rational Systems Developer,也可以通过图表来创建。

带有名字的属性在 base_<metaclass name> 格式下被创建,在原型下为每一个元类的原型扩展。这些属性是被系统使用的并且不能修改。

请注意原型仅仅可以被应用到元素下,当它的元类是扩展的。当然,概要文件(拥有原型)首先也必须要应用要元素包所在的继承路径上(与模型相类似)。

当一个原型可以修改元类的定义的主要影响是:

  • 表示
  • 添加的属性
  • 添加的约束

以上这些特性都会在每一个章节单独来讨论

表示

当一个原型被应用到模型元素,可以通过多种方式来影响它的表示。最简单的方法是系统所显示的(缺省的)原型名称 ,它位于元素名称的前面。但是要从哪儿里入手操作呢(例如,在项目浏览器里或在图表里)。举个例子,如果一个原型S 被应用到元素 E, 系统将会显示 <<S>> E 在项目浏览器中 ,并且在图表里显示元素。

注意: 为了显视的目的,工具不会自动使原型名称的第一个字母小写,参照 UML 2.1 规范 (参阅 参考资料 部分)的建议。名称只是为显视的目的。然而,您可以(如同创建概要文件)完全控制显视名称 -- 把名称分隔开 -- 使用本地化机制(更多的信息,参阅 本地化 一章,本系列的第 2 部分)。

一个原型可以有一个图标和一个显示图片:参阅原型属性视图的 General 标签页。在 General 标签页,图标和图型域的边上有两个按钮:Browse Clear. Browse 按钮允许您在文件系统中将一个图形文件和原型关联上。Clear 按钮可以把关联到原型图片清除掉。图形图象域所支持的图片格式有 BMP、GIF、JPG 和 PNG。图象域还支持 SVG、EMF 和 WMF 格式的图片。当然,也可以不指定图片,这完全取决于您的操作。

当一个原型被应用到一个元素,系统将会通过首选项的设置来决定如何表示一个元素。要改变首选项设置,点击 Window > Preferences

在项目浏览器中,选取元素对话框,在通用标签页选择工具,点击 Modeling > ProfilesStereotype Style 复选框提供以下选项: NoneTextDecoration、 Decoration and Text (缺省)

None
表示所应用的原型被忽略。

Text
所有被应用的原型都会被显示在元素名称前的列表上。

Decoration
介绍应用到原型图型图像所使用的工具。注意如果多个应用的原型定义了图标,只有其中一个会被使用。

Decoration and Text
合并两个选项。

可以从两个地方进行图表的设置:通过点击 Modeling > Diagrams > Appearance > Connectors 来设置连接器和 Modeling > Diagrams > Appearance > Shapes 来建立图型。Stereotype 的连接器类型复选框有两个选项:ShapesText。图型提供更多的选项:NoneTextDecorationDecoration and TextShape ImageShape Image 选项可以使用在原型指定的图象代替整个图型。您可以通过图型调整这些首选项,使用下拉菜单,为每一个独立的元素(图型或连接器):选择 Filters > Stereotype and Visibility Style

另一个原型的表示特性是 Suppressed 选项(在属性视图的 General 标签页)。当选择这个选项,它用禁用原型的表示特性:如果原型被应用到某一个元素,项目浏览器和图表都不会显视关于它的任何信息。这对于灵活使用原型非常有用,这样即可以标记元素并维持原有信息,又可以不改变元素的表示。

您仍然可以在属性视图的 Stereotypes 标签页上看到已被应用到元素上但被禁止使用的原型,除非您在首选项上关闭了它 (Window > Preferences > Modeling > Views > Properties View settings > Show suppressed properties)。被禁止使用的原型只是能够被标注的应用(它们不会显视在可应用的原型列表中),但是它仍然可以被手动删除。

这是这条规则的一个例外:被禁止的原型,带有 taggedValueSet 关健字也可以被手工应用。可以通过在项目浏览器中手工选择原型,并且在属性视图下转到 Stereotypes 标签页,并且在关健字列表中输入关健字。

Stereotype 属性

Stereotype 所拥有的属性被添加到元类定义作为元类的属性,在原型被定义的地方作为元素实例。例如, 假设存在一个原型 S, 它扩展了元类 Actor 并且有一个命名叫 attr1 的属性。当这个原型被应用到一个模型的用例,用例的属性集现在包括 attr1 (除了 Actor 元类所指定的所有属性集外,例如名称,可视性,等等)。

为了创建一个原型属性,在项目浏览器中选择原型,并且右击它,并且选择 Add UML > Attribute, 如图 9 所示。

图 9. 属性集
属性集

一个元素属性的最重要的属性(除了 Name) 是 TypeDefault ValueMultiplicityAggregationUnique

由于原型所拥有的属性最后会被扩展到元类的属性,它们的类型必没有任何实际意义:它必须要有一个能被系统识别的类型,并且能为这些属性提供正确的处理。支持的类型有:

  • 基本类型,在导入的模型库中
  • 枚举类型,定义在概要文件中,或者在一个导入的概要文件中
  • ,定义在概要文件中,或者在一个导入的概要文件中
  • 元类 定义在 UML 2.1 元类模型中(通过元类的关联)
  • 原型 定义在概要文件中(通过原型关联):仅公在 V7.0.0.2 或更高版本中支持。

属性集必须有一个类型。如果没有指定这个类型,工具将会在概要文件被保存时报告一个类型错误(或者当验证的时候),并且不会为概要文件创建一个新版本除非错误被改正。

缺省值 不是 必须被指定的。如果没指定缺省值,工具会按照类型指定它自已的缺省值。例如,一个字符串类型的属性是一个空字符串。

多样性是指一个属性可以有一个或多个属性(多值属性要多于 1 个)。当一个多值属性被设置成一个集合,您应该注意到 Unique 域,代表集合中的元素是否应该是唯一的。通常,这个选项被设成不唯一的。类的属性(包括元类和原型的关联)应该选择这个属性。

聚合属性对于复合属性集非常重要:它必须要为类的属性设置成 Composition 并且为元类的原型类型设置为 Shared

原型相关的属性集被显视在它所应用的元素的属性视图,和其它的属性列在一起。它们可以在两个地方被找到:Advanced 标签页和Stereotypes 标签页(Stereotype 属性集 表格)。 在两个用例下,它们都被分组在同一类别中,名字与原型相关属性集相同。您可以修改这条规则: 找到 Category 字段 ,在原型的 General 标签页。如果值被指定,那么它将被应用到原型同组的属性集中,用来代替原型的名字。例如当所有的原型是同一个概要文件所使用的,并在同一类别下的属性集,是非常有用的。

另一个原型的有用属性是 UI 只读模式。如困选择了这个选项,那么属性的值就不能被修改,通过原型所应用的元素中工具的指定缺省值。

模型库

概要文件仅仅支持 3 个预定义的模型库:

  • UML 简单类型
  • Java 简单类型
  • Ecore 简单类型

为了使用这些库中所定义的类型,您首选应该把库导入到概要文件中。当通过新建概要文件向导创建时可以导入库(缺省的, 它会设置被导入的 UML2 类型,并且您可以变换这个缺省项)。

您还可以在其它地方导入:在项目浏览器中选择概要文件,右击它,并且当点击 Import Model Library。而且,您可以通过概要文件编辑器来导入它们:使用 Add 按钮,Details 标签页位于 Model Libraries 表的旁边。

UML 基本类型模型库包括 4 个基本类型,由 UML 2.1 规范所定义,如图 10 所示,(参照 参考资料 部分可以得到更多关于 UML 2.1 的规范):

  • 布尔类型
  • 字符串类型
  • 整型
  • 非限制自然类型

Java 类型模型库定义了与 Java 语言基本类型相关的基本类型,并且 Ecore 类型模型库定义了 Eclipse EMF 类型相关的类型。

UML 和 Java 类型都能够被很好的支持。Ecore 类型只是被部分支持:他们都可以被指定,并且 Rational Software Architect 会提供读取的功能。但是,它只提供为有直接 Java 类型表示的类型提供编辑功能。例如,工具为 EByte 类型的属性提供编辑功能,但是只提供读写功能为 ETreeIterator 类型。可以设想这种类型(像 ETreeIterator 类型) 将会只在运行时被使用到只与一些概要文件标题处理相关的地方。

图 10. 选择属性类型
选择属性类型

枚举类型

枚举类型可以被用来指定原型属性集的类型当且仅当它们被定义在相同的概要文件中,或者在导入的概要文件中。枚举类型的属性集的值,可以被枚举列出。

概要文件所拥有的枚举类型只能适用于它本身,在这个概要文件外部将不能使用。

类可以被用来指定原型属性集的类型,当且仅当它们被定义到相同的概要文件,或者在导入的概要文件中。任何一个类都可以(并且应该)有它自已的属性集。这些属性集的规则(根据所支持的类型和值)与原型属性集的规则相同。

有一些限制条件是,这些属性集的聚集属性必须要被设置成 Composite;否则,当概要文件被保存时(或被验证时)将会产生一个错误,并且直到这些错误被修正前,工具都不会生成一个新的概要文件版本。

一个类的属性类型的缺省值是 null 或空集合(当多样性属性值大于 1)。

一个概要文件所拥有的类只能造用于它本身,而在这个概要文件外部将不能使用。

元类关联

UML 2.1 规范所定义的元类,可以被用来指定原型属性集的类型,通过在原型和所需的元类之间创建一个元类的关联。您可以通过项目浏览器(右键点击原型并且选择Add UML > Metaclass )或图表(仅当使用 Rational Software Modeler 和 Rational Systems Developer; 要做这个操作, 通过聚集关联连接 Stereotype 图形和元类的图形)来进行这个操作。这个属性集的值将会在元类的实例中生效。

对于这类属性的限制条件是,它们的聚集属性必须要被设置成 Shared; 否则, 当概要文件被保存(或被验证)时会产生一个错误,并且在错误被修正之前工具将不会生成生的概要文件版本。

一个元类参考的属性类型的缺省值是 null 或空集合(当多样性参数大于 1)。

原型关联

其它的原型可以被用来指定原型属性集的类型,通过创建一个直接的原型关联,在两个原型之间。您可以通过项目浏览器(右击原型 并选择 Add UML > Stereotype Association)或在图表中(仅用于 Rational Software Modeler 和 Rational Systems Developer; 可以通过使用聚集关联来连接两个 Stereotype 图型)来进行这个操作。这个属性集的值会在其它原型实例中生效, 也就是说,原型应用成功。然而, 那表示原型所应用的元素 UI (由原型应用所引用的元素)。这个类型由 V7.0.0.2 或以后版本所支持。

对于这类属性的限制条件是,它们的聚集属性必须要被设置成 Shared; 否则, 当概要文件被保存(或被验证)时会产生一个错误,并且在错误被修正之前工具将不会生成生的概要文件版本。其它的更严的限制还包括:

  • 两个原型必须在同一个概要文件中(导入的概要文件不被支持)。
  • 属性值(原型应用;原型所应用的元素)必须在同一个模型中,所参照的原型被应用的元素。

一个原型所参照的属性类型的缺省值是 null 或空集合(当多样性参数大于 1)。


泛化

一个原型只能指定或泛化成另一个原型: 一个类不能与原型参与泛化关系。

要在两个原型之间指定泛化关系, 在项目管理器中右击您想要被泛化的原型并选择 UML Properties

这样会运行一个属性集的对话框,选择 Generalization 集合, 并且,在右上角, 选取插入工具(泛化图标),如表 11 所示。选择其它的原型并点击 OK

图 11. 泛化集合
泛化集合

您可以使用图表在 Rational Software Modeler 和 Rational Systems Developer 里使用图型完成这些操作。

图 12. 通过图标创建泛化
通过图标创建泛化

概要文件约束

在一个概要文件中, 只有原型可以拥有自已的约束。要创建一个约束,在项目浏览器中选择原型,右键单击, 并点击 Add UML > Constraint。您可以命名约束, 但这不是必须的。 提供一个名称是一个好的习惯, 因为, 名称可以被工具使用在名称约束失败的日志中。

它扩展了原型所应用的约束模型的元型。系统自动扩展了元型,如果指定的语言所支持。如果指定的语言不被支持, 约束将会被工具所忽略。

约束是在概要文件中定义的,但是在模型中使用, 应用于它所使用的原型(或所拥有的)。

General 标签页的属性有(在属性视图中) NameLanguage Value, 如图 13 所示。两个系统所支持的语言有 OCL (对象约束语言,Object Constraint Language)和 Java。Value 字段的内容依赖于所指定的语言。

基于 Java 的约束可能会有更好的性能,会更容易的表示复杂的约束, 并提供更好的伸缩性。另一方面, 基于 Java 的约束工作在基于插件布署的概要文件(要获得更多信息, 参阅布署章节在本系列的第 2 部分),并且当创建概要文件时进行初始测试会产生更多的时间消耗。另一个基于 OCL 约束的优点是,他们会被 OMG 定义的 UML 约束更好的支持(请参阅 参考资料 部分得到更多信息)。

图 13. 通用约束属性
六个标签页的属性视图

有许多重要的属性在 Validation 标签页(如图 14 属性视图): Evaluation ModeMessage KeySeverity

Evaluation Mode 的值可以是 Batch (当您引入验证动作仅仅按需求估算)或 Live (按需求和出现的变换做两次估算)。缺省值是批量注意:在 Rational Software Modeler 和 Rational Systems Developer, 指定规则应用于批量约束。如果在验证时发现错误, 那么批量约束的行为会和动态约束非常相近。

Message Key 用来显示约束失败的情况。如果它没有被指定,系统会使用一个全约束名称。如果指定了它, 系统将会查找与之相对应的属性集文件,如果存在(更多信息,参考本系列第 2 部分的本地化章节)。如果没有找到属性集文件, 消息键会使用它本身。消息内的单引号必须由另一个单引号来转义。

Severity 可以是 ErrorWarning Informational。这些值所代表的意思取决于首选项的设置。而且, 如果 Live 约束,使用了Error 严重性等级, 那么所做变动将会自动回滚。

图 14. 约束属性的验证标签页
约束属性的验证标签页

内建的 OCL 支持

注意:本文不会试图解释 OCL 的概念。想要了解这部分内容的更多信息, 您需要熟悉 OCL 的规范(参阅 参考资料 部分获取更多信息)。

OCL 所支持的版本为 2.0, 与 UML 定义所支持的相匹配 (2.1)。

OCL 生明需要输入 Value 字段,在属性视图的约束的 General 标签页。

当一个约束被定义时,用户模型化的原型联合和元模型扩展的交集被用于 OCL 上下文。

例如:

  • Stereotype S1 有两个属性(a1: 整型, 以及 a2 : 布尔类形), 扩展类和动作元类, 并且存在约束 profileCons1
  • OCL 声明在 profileCons1 内的约束可以访问属性集 a1a2 和定义在元类和动作的所有特性的交集。
  • 所有扩展元类定义的特性交集,被用于代替联合,以确定约束是符合语法规则的, 除了原型要应用的元素。工具不会允许类指定的特性应用于约束,由于约束不符合语法规范,当原型被应用到一个动作和其它的方法。

注意:用一个工作区来访问非共享的特性。您应该通过 base_Xyz 属性来操作(您应该首先检察它是否有值)。在以下的示例中, 接下来的声明将会访问动作指定的特性: base_Actor <> null 应用于 base_Actor.someFeatureXyz.

使用约束的原型应用的元素,被用于 OCL 上下文,在约束评估时。

例如:

  • 动作 A1 有原型 S1 所应用。
  • 约束 profileCons1 由首选项所定义的评估模式所评估。这样,动作 A1 在元模型中被用于 OCL 上下文。

UI 提供语法的高亮显示, 内容帮助和语法解析。

在原型所应用的模型验证时约束被评估。当概要文件被验证时,它只是做简单的语法验证。

如果约束使用了一个消息关联(通过消息 Id), 消息中的 {0} 变量就被上下文的元素所取代 -- 处非它使用单引号括住。

内建 Java 支持

用户可以在 Body 域内指定 Java 类,在属性视图内使用约束的 General 标签页。

指定的 Java 类需要使用它的全名称。它必须要扩展org.eclipse.emf.validation.AbstractModelConstraint 类。概要文件和 Java 类都需要使用相同的插件来进行布署。(要获取更多的信息,请参阅本系列第 2 部分布署一章)。

带约束的原型所应用的元素,被用于约束的上下文,在评估约束的过程中。

在原型所应用的模型,在模型验证过程中约束被评估。当概要文件验证时它不会被检查。

如果约束有一个消息关联(通过消息 Id), 它可以从 org.eclipse.emf.validation.IValidationContext 对象获取通过系统传递给约束。约束于是可以处理任何数字 {n} 变量在消息中使用 Java 标准的格式。


概要文件和图表

类图

Rational Software Modeler 和 Rational Systems Developer 在概要文件中支持类图表。您可以使用图表去图形化一个概要文件的结构, 或使用图表以图形化方式构建一个概要文件,代替通过项目浏览器的属性视图来构建它。

包含图表的概要文件和老的版本工具相兼容 (7.0, 7.0.0.1 通过 7.0.0.5): 在这些版本中图表只是简单的不可见。

图 15. 类图
类图

生成概要文件工具

Rational Software Modeler 和 Rational Systems Developer 同样提供生成概要文件的工具。要使用如图 16 所示的向导, 在项目浏览器中右击概要文件,并选择 Generate Profile Tooling

图 16. 生成概要文件工具向导
生成概要文件工具向导

在创建项目过程中可以通过向导, 并且在概要文件中和生成面板物体,菜单,和客户化图形相一致。有于工具生成的使用是一个大的主题, 分散于各章节中都有介绍。请参阅 参考资料 部分。


使用 UML 概要文件

这部分内容提供一个关于使用 UML 概要文件的简要的总览, 所以您可以快速地开发一个概要文件。更多高级的内容可以参阅本系列的第 2 部分内容。

应用概要文件

在您可以在一个模型中使用概要文件(对于实际项目, 这里是指原型)内容之前,概要文件需要被应用到模型。更准确的说,概要文件可以被应用到模型的任何包中, 包括模型本身。当一个概要文件被应用到模型, 在整个模型中它就可以被看到。如果它被应用到模型的一些包中, 那么它只能在这些包中看到。如果概要文件被应用到模型中它将非常容被管理, 这完全取决于您。一个概要文件也可以被应用到其它的概要文件中。

要应用一个概要文件, 在项目浏览器或图表(如果它是代表在这里)中选取模型(包)并且定位到 Profiles 标签页在属性视图中, 如图 17 所示。模型编辑器也会提供一个相似的视图,在 详细 标签页, 在一个应用概要文件的图格中。

图 17. Profiles 标签页
七个标签页的属性视图

应用概要文件表格列出了所有已经被应用的概要文件。现在不要担心更多的 Version Release Label列:这些概念可以参阅本系列第 2 部分 变更管理 一章。

要删除一个概要文件, 选择概要文件并点击 Remove Profile 按钮。

注意: 不是所有的概要文件可以被删除。系统所需的概要文件, 您不能删除他们。他们其中之一是 Standard, 由 UML 2.1 规范所定义。另外两个(DefaultDeployment)由 Rational Software Architect 所定义。

要应用(添加)一个新的概要文件, 只要点击 Add Profile, 将会运行选择概要文件对话框如图 18 所示。

图 18. 选择概要文件对话框
选择概要文件对话框

您可以使用一个(系统可知)布署概要文件, 浏览工作空间, 或浏览文件系统选择一个概要文件。关于布署概要文件更多的细节,可以参阅本系列第2部分的布署章节。现在, 使用最简单的方法,选择 Workspace 选项并浏览工作空间选择概要文件。

应用原型

要应用一个原型, 在项目浏览器或图表中选择模型元素, 并在属性视图中导航到 Stereotypes 标签页, 如图 19 所示。

图 19.Stereotypes 标签页
Stereotypes 标签页

被应用的原型表格列出所有的已经被应用的原型。Stereotype 属性集 表列出的这些原型所属元素的属性集。

要删除一个原型, 选择原型并点击 Remove Stereotypes 按钮。如果原型是必须的(由 Required 属性列所显示),那么它就不能被删除。要应用(添加)一个新的原型, 只要点击 Add Stereotypes, 将会运行应用原型对话框如图 20 所示。

图 20. 应用原型对话框
复选框选择透视图

对话框的列表中列出了所有可应用到,但是还没有被应用到元素的原型。


您已经掌握到的知识

这篇文章, 本系列两篇的其中之一, 告诉您如何使用 IBM Rational Software Architect、IBM Rational Systems Developer 和 IBM Rational Software Modeler 创建或导入 UML 概要文件。您也学习到了内建支持的 OCL 和 Java, 和如何应用一个概要文件。

本系列的第 2 部分将会介绍变更管理、布署、本地化、编程控制支持和最佳实践。


感谢

感谢 Christian Damus, Daniel Leroux, Michael Hanner, 和 Wayne Diu 所做的支持。

参考资料

学习

获得产品和技术

讨论

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Rational
ArticleID=349416
ArticleTitle=创建 UML 概要文件(UML Profiles),第 1 部分: 使用 Rational Software Architect、Rational Systems Developer 和 Rational Software Modeler 创建和布署 UML 概要文件
publish-date=10122008