IBM Rational Software Architect 8.0 版本中对 UML 建模特性的改进,第 2 部分: UML 建模特性增强

本文,也就是三篇系列文章的第二篇,强调描述了 Rational Software Architect (RSA) 8.0 版本中 UML 建模组件的一些新功能,并解释了怎样使用最新添加的特性。本文还描述了对 Project Explorer 视图所做的改进,改进的模型搜索功能,对模型验证和重构功能的改进,处理模型片段时更好的用户体验,处理 UML 概要文件(UML profile)时的添加功能,以及建模视角。此外还描述 RSA 了对 UML 规范中最新变更的支持。

Wayne Diu, 软件开发人员, IBM

Wayne DiuWayne Diu 是一名 IBM Rational 软件开发人员。他在 Rational 建模平台上设计和开发了统一建模语言(UML)特性,例如服务器集成和模型搜索。此外,Wayne 是负责建立元模型集成框架平台的开发人员之一。Wayne 还开发了许多其它工具特性,例如打印、验证标记器改进,以及重构支持。


developerWorks 投稿作者

2011 年 5 月 09 日

下载 Rational® Software Architect 试用版  |  在线试用 Rational® System Architect
下载更多的 IBM 软件试用版,并加入 IBM 软件下载与技术交流群组,参与在线交流。

除了建模视图下的图表改进和一般性的改进之外,还有其他的一些改进提高了效率,并遵循 UML 规范。

Project Explorer 的改进

根据名字进行筛选

UML 资源中心

欢迎访问 UML 资源中心。在这里您可以找到 developerWorks 上所有与统一建模语言(Unified Modeling Language,UML)相关的技术资源和最新的信息。

Project Explorer 中,现在已经可以通过一个文本框快速筛选您所不感兴趣的元素了。尽管工作集在支持根据整个模型或者项目筛选方面特别有用,但是如果您所面对的是一个很大的模型,而且您希望查看模型中所感兴趣的元素时,那么这一基于文本的元素名筛选器会特别有用。因此,这一筛选器更加适合细粒度的操作。

  1. 为了激活筛选,您可以在 Project Explorer 的工具栏中点击 Show/Hide Filter Box 按钮。
  2. 现在,在筛选框中输入一些文本并在键盘上点击 Enter 键。

不匹配文本字符串的元素将会被过滤掉。

提示:

  • 如果有多个元素匹配您的筛选规则的话,那么您可以使用筛选框的 上箭头 或者 下箭头 按钮来在二者之间进行切换。
  • 另外,如果您想要进行快速的访问,那么您可以简单地点击弹出窗口中您所感兴趣的元素,来立即切换至该元素。
  1. 为了决定是否应该考虑名字筛选规则,您可以点击 Project Explorer 中的 向下 箭头并选择 Customize View
  2. Available Customizations 对话框的 Filters 项中,选中或者不选中 Available Customizations 对话框。如果 Name Filter 没有被选中的话,那么您就不能显示筛选框了。
图 1. 根据“Util”字符串进行筛选
弹出框中的筛选结果

图 1 的大图

文本性筛选也可以进行程序化扩展,以支持通用 EMF EObjects。如果您想要扩展它,那么您可以实现以下接口:

com.ibm.xtools.common.ui.navigator.filters.INameFilterHelper

根据图表类型分组

在以前,图虚拟文件夹包含了给定模型所有图表的列表。现在,图表会根据它们的类型进行分组。

显示模型文件的物理位置

在相同的工作流程中,您可能要建模项目子文件夹之内存储的模型。传统意义上,Project Explorer 会将所有的模型显示为项目下的子类。如果许多模型拥有相同的名字,那么就会产生混乱的情况。例如,如果您在每一个文件夹中创建了一个 Helper.emx 模型,那么想将它们区分开来是非常困难的。

现在可以根据文件夹结构来显示模型和概要文件(profile):

  1. 点击 Window > Preferences 并选择 Views > Project Explorer
  2. 然后,选中标有 显示物理工作区域文件夹之下的 UML 模型和概要文件 的复选框。

注意:
如果在 Available Customizations 视图下的 Filters 项中,筛选有 UML Model filesUML Profile files,那么这些文件将会被隐藏。如果 显示物理工作区域文件夹之下的 UML 模型和概要文件 设置面板被选中的话,那么您就 不用 打开 UML Model filesUML Profile files 的筛选,因为模型和概要文件对您的工作区将会完全隐藏。

  1. 为了进一步强调文件的物理位置,可以在根资源名字的旁边显示资源的工作区路径:
  2. 显示 Preferences 视图,并选择 Modeling > Views > Project Explorer在标签中显示工作区路径 下拉菜单允许您从以下的三个选项中作出选择(参见图 2):
    • 对于模型和概要文件
    • 对于模型、概要文件与片段根

选中最后的两个选项将会在 Project Explorer 中显示资源的物理位置。

图 2. Project Explorer Preferences 视图
Project Explorer 中的偏好选项

使用改进的元素导入(Element Imports)功能

当您在使用元素导入(Element Imports)功能时,我们关注的通常是导入的元素,而不是 Element Import 本身。因此,要做一些更改将注意力转移至导入的元素,而不是 Element Import:

  • Element Import 不会再将导入元素的名字显示在括号之中,这样它将会按照 Project Explorer 中所直接包含的剩余元素来进行分类。实际上,如果 Project Explorer 被设置为根据 Type then Alphabetical 或者 Type then Storage Order 分类,那么分类将会根据导入元素的类型来进行。
  • 如果您在 Project Explorer 中选择了 Element Import / imported element,那么现在在弹出属性和 Properties 视图中,您将会看到导入元素的属性。如果对查看 Element Import 的属性非常感兴趣的话,那么您可以从菜单中选择 Element Import Properties。您还可以选择,在图表中查看 Element Import 并查看它的属性。
  • 导入元素的图标(而不是 Element Import 图标)会显示在 Project Explorer 中。一个小的快捷方式图标会显示在图标的左下角,以指示它是一个 Element Import。
  • 当您在 Element Import 之下添加新的元素时,您可以直接添加导入的元素,而不是必须切换至原始的元素。与之类似,当您在 Element Import 之下删除元素时,您可以从元素导入中直接进行删除。换句话说,两方面都将会得到关注。
  • 从图表、属性中切换至 Project Explorer,而 Inheritance Explorer 将会更明智地选择 Element Import 之下的元素。
  • 现在可以查看 Element Import 的内容,就算元素属于工作集中所筛选的模型,也是这样。如果您想要切换至工作集所筛选的实际元素,而又没有相应的导入元素,那么您会得到一个通知告诉您这一信息。

FormatHelper 和 Point 就是 Element Imports(参见图 3),这样在 Project Explorer 中就会出现一个快捷方式的图标了。同样,显示的属性是针对导入的元素的,而不是 Element Import。

图 3. 显示 Element Import 的属性
图表上弹出属性对话框

图 3 的大图


搜索改进

搜索基础现在支持工作集。从搜索结果中拖拉到图表表面是可能的了。同样,展开一个搜索结果将会显示对元素的引用。

添加了两个新的列:

  • 元素类型被移动到一个单独的列中以便更加方便地分类。
  • 一个新列会指示最后的编辑日期。

最后,搜索结果现在可以使用 com.ibm.xtools.rmp.ui.search 中所定义的公共提供者机制来生成了,它支持程序化地生成搜索结果。

图 4. 使用模型搜索页面之上的工作集
Select Working Set 序列

图 4 的大图


模型验证的改进

沟通验证结果

模型验证的结果会对用户进行可视化的交流。验证的错误和警告现在会显示在拥有确认错误的图表元素中。

您可以通过执行下述的步骤来验证您的模型:

  1. 从菜单栏中,选择 Modeling > Run Validation
  2. 从 Project Explorer 中背景菜单的元素中,选择 Validate
  3. 从图表中元素的背景菜单中,选择 Validate

正如图 5 所示,将您的鼠标停留在图表元素的确认指示符上(一个黄色的惊叹号或者一个红色的 X),将会显示出一个弹出信息,该信息描述了这个问题。

图 5. 将您的鼠标停留在确认指示符上
图表之上的工具提示

图 5 的大图

如果您需要进一步的具体信息的话,就会添加一个 Problems on Selection 对话框。它会显示出选项的问题,并给您选择去查看所破坏的限制规则(通过点击 Constraint Definition(s) 按钮),或者执行对问题的快速解决方案(通过点击 Quick Fix 按钮)。它可以从带有验证错误和警告的元素中得到,这些元素可以是 Project Explorer 中的或者是图表上的。

图 6. Selection 对话框中的 Problems 包含了相关的标记符
带有列表的 Element 和 Marker 列

图 6 的大图

打开模型时修复工作区引用错误

在前面的部分中,当您打开一个带有已损坏引用的模型时,将会打开 Repair Workspace Reference 对话框。在这里,您可以选择试着自动修复引用,标记问题,或者忽略已被破坏的引用。Repair 按钮会搜索即时的项目。但是,现在您可以添加一个复选框,这样您就可以搜索整个工作区了。搜索甚至会检查关闭项目中的模型,如有需要还会让您打开这个模型。

图 7. Repair Workspace References 界面显示了两个问题
两个单选按钮选择:修复问题或者标记问题

添加了验证规则

新添加了一些验证规则,在 序列图(Sequence diagram) 部分的 验证规则 中将会对其进行介绍。


更轻松地重构

在以前,当您要重构一个元素(重命名或者移动)时,您可以预览更改,并自己选择应该更新的资源。当有许多的受影响元素时,选择要更新的资源就比较的繁琐了。现在,您可以先设置初始的范围作为一种快捷方式。三个支持的范围为 工作区项目,或者 模型

图 8. 使用重构向导来选择一个支持的范围
带有选中工作区的 Rename 向导

图 8 的大图


模型片段

对于模型片段的处理,要比以前更加完美了。上下文内容(context)会保存在 Project Explorer 之中。

当您载入工作区外部所编辑的模型或者模型片段时,Project Explorer 中的关注点会一直不变。同样,如果您在硬盘上更改一个片段时,只有变更的片段会得到重新载入,而不是整个模型。例如,如果您使用的是动态视图,那么片段和模型可以由其他的用户来更改,即使您已经将模型载入到内存当中。当这种情况发生时,Project Explorer 中的上下文内容将会得到保持,这样您就可以花更少的时间在载入片段之后找到模型中所需要工作的地方了。这就可以确保工作流程可以更加稳定,即便模型的内容发生了变更,需要重新载入模型。

一次性打开多个子片段

当您在处理大型的模型时,部分模型一般会分割为单独的资源,以得到更好的性能,并降低合并冲突的可能性。如果您不打开子片段,那么就会有更少的模型载入到内存中。这就会得到更好的性能。但是,功能强大电脑的建模员喜欢立即打开所有的片段,以消除片段载入到内存时的延迟。为了适应这一点,Open All Sub-fragments 操作现在支持多种选项,这样您就可以选择所有需要的片段,并一次性将其全部打开。结果:花在载入片段上的时间将会减少。

图 9. 打开所有的子片段操作
Project Explorer 下拉菜单

图 9 的大图


概要文件

概要文件用于进行特定领域内的建模:它们支持扩展 UML 以适应特定的领域。相同的 UML 模型经常会扩展至各种不同的领域。例如,追踪用户忠诚度的系统在两家不同品牌的航空公司之间基本是相同的,只是在命名的方式,以及特定公司特定属性或者操作方面有所差异。相同系统的不同视角可能需要不同的概要文件。例如,财政审计领域和储备领域是两个极不相关的领域,它们关注不同的方面,或者相同系统的不同 视角。可能审计员不想与储备分析员共享他们的审计标准或者属性值,而储备分析员也不想共享什么时候提供忠实度折扣的标准。

标记模型

传统意义上,需要对模型直接应用概要文件以支持特定领域的建模。对于多种领域,还有太多选择;您需要对相同的模型应用多种概要文件,或者复制模型并对每一个模型应用单独的概要文件。在以前的情况中,模型会变成不相关及潜在敏感的概要文件;再后来,模型就可以轻松摆脱同步化了。

从Rational Software Architect 8 版本开始,支持 标记模型 的概念:导入包并存储数据的模型与导入包上所应用的概要文件和构造型有关系,您可以使用带有 Marking Import 构造型的 Element Import 来导入包,因此构造型可以应用到导入的包及它们的内容上。当您对导入的包应用构造型时,只有标记的模型会得到编辑,实际包的资源没有得到编辑。

图 10. 使用 New Model 向导模板来创建一个新的标记模型
Project Explorer 内容菜单

图 10 的大图

为了能够访问概要文件信息,应用的概要文件和资源包含了需要分布的导入包,添加到标记模型。

注意:
如果您启动了一个运行时环境,那么请确保以下的设置显示在论断之中,以确保对建模的支持:

-Dorg.eclipse.uml2.uml.util.UMLUtil$ProfileApplicationHelper.INSTANCE=
   com.ibm.xtools.modeler.ui.marking:com.ibm.xtools.modeler.ui.marking.internal.
   ModelerProfileApplicationHelper

-Dorg.eclipse.uml2.uml.util.UMLUtil$StereotypeApplicationHelper.INSTANCE=
   com.ibm.xtools.modeler.ui.marking:com.ibm.xtools.modeler.ui.marking.internal.
   ModelerStereotypeApplicationHelper

构造型属性

构造型属性可以按照下面的两种方式进行显示:

  1. 第一种方法是右击以显示图表元素的背景菜单,然后选择 Filters > Stereotype and Visibility Style > Show Stereotype Compartment When Not Empty。这样就可以看到构造型部件了,它包含了属性的名字与属性。
  2. 第二种方法是按照下面的一种方法来添加一个构造型属性注释:
    1. 右击构造型的元素,并选择 Add UML > Stereotype Attribute Note。附加到原始构造型元素上的注释将会得到添加。
    2. 您还可以从配置面板中执行以下的操作:
      1. 选择 UML Common 配置板折叠项(参见图 11)。
      2. Comment 配置板组中,选择 Stereotype Attribute Note Attachment 工具项。
      3. 然后点击构造型元素并将鼠标拖拉到图表的空白区域。
      4. 在确保内容菜单之中,您可以选择 Create Stereotype Attribute Note Attachment to new Element: Stereotype Attribute Note
图 11. 显示构造型属性
UML 图

图 11 的大图

属性集

属性集 用于分组一系列的 属性。它们执行概要文件的功能,并简化了构造型的程序。而您可以对模型之中的包应用 属性集概要文件 (或者模型根)。属性集概要文件中的构造型类似于需要的构造型,它位于应用到特定元类元素的概要文件之中。同样,保存一系列值,并应用它们以快速替换概要文件中所定义的默认值。

按照下面的方法来创建一个属性集概要文件:

  1. 首先,创建一个规范的 UML 概要文件,然后对其应用部署的 Property Set 概要文件。
  2. 接着,对概要文件的根应用 PropertyProfile 构造型。
  3. 现在您已经添加构造型了。当您添加构造型时,您将会发现概要文件的每一个构造型会 设置自动应用的构造型。

注意:

  • 对于您所创建的每一个构造型,您必须对包和其他所有需要的元类扩展添加一个元类。这是因为属性集概要文件之中的构造型会应用到包;应用构造型的包的内容会自动应用相关的构造型。
  • PropertyProfile 构造型和 Set 构造型都包含了所谓 category 的属性,但是它们预期的使用是不同的。PropertyProfile 类别是用来描述广泛类型的,例如一种语言(统一审计语言,Unified Auditing Language),而 Set 类别是用来描述一种语言(类)中特定的类型的。Set 的类别非常重要,因为如果它不匹配的话,属性集的 UI 就不会显示出来。

在创建属性集概要文件之后,应该将其应用到一个模型或者包上。当您浏览模型时,模型之中的相关元素会有一个标为 Property Sets 的属性项,您可以从这里设置需要的值。如果您变更了默认的值,那么相关的构造型将会自动应用到元素上(同样,属性名应该以粗体显示,以指示构造型已经发生了变动)。点击 Apply Defaults 按钮将会恢复默认值,并逆转自动应用的构造型。


UML 循规

Rational Software Architect 中现在支持 UML 规范中所描述的两个新 UML 图:交互概览图以及计时图。另外,添加了对一些新元素的支持功能,在接下来的部分将会对此描述。

交互概览图

交互概览 图可以看做是一个活动图,只不过被限定为控制流程和嵌入的序列图。因此,它们在表达控制流程与发生的私有交流中会发挥作用。出现在交互概览图之中的序列图不需要从头开始创建;您可以重复使用已存在的图,然后将其拖拉到交互概览图,或者从交互概览配置折叠项中选择 Interaction Reference 配置板工具。

为了处理引用序列图之中的内容(叫做 交互引用),您可以从交互引用图元素中的背景菜单中,选择 Filters > Show Inline Sequence Diagram

图 12. 一个交互概览图
交互概览图

图 12 的大图

计时图

计时图描述了一个时期内的生命线。垂直线代表了序列图之中的时间,但是计时图使用水平线来代表时间。状态或者情况会添加至水平生命线以代表状态或者情况随着时间所发生的变化。对于序列图,有 消息 的概念。但是,因为我们的注意力放在了状态和情况随着时间所发生的变化上,所以消息会在这些状态或者情况之间进行发送。

图 13. 一个计时图
计时图

图 13 的大图

序列图

UML Modeler 组件现在添加了对丢失消息和找到消息的支持功能。

丢失的消息与找到的消息

为了遵循 UML 规范,现在可以创建丢失的消息和找到的消息。

  • 如果您想要创建一个丢失的消息,那么您可以将一条消息 拖拉至 图表的空白区域。
  • 如果您想要创建一个找到的消息,那么您可以拖拉消息, 图表的空白区域拖拉一条消息。
图 14. 序列图中丢失的和找到的消息
Check-in Sequence Diagram 视图

图 14 的大图

重构

删除 一条消息的引用信号或者操作,将会把消息的名字更改为 \Unspecified\ 在序列图上,除了删除引用的信号或者操作,您还可以根据自己的需要来重命名一个消息。

从一个类到另一个类的 移动 操作将会产生相同的结果,除非操作被移动到一个超类,并且仍然可以从调用它的类中查看。在这种情况下,生命线之间的消息会被设置为 \Unspecified\

验证规则

如果您拥有可以在这些改进之前执行重构操作的图表,那么您仍然可以从中获利。例如,假设您打开了一个图表,您曾经移动了一个对应于序列图中从一个标识符到另一个标识符消息的操作,这会是这种情况。结果,图表现在包含了一个无效的消息。

序列图中处理无效消息的验证规则会得到引入。该规则的限制条件可以在该 UML 2.2 规范中找到:

UML 2.2 > UML 2.2 Specification > Interactions Package > Messages > Message 签名操作应该包含在目标生命线标识符中

当您在调用一个私有操作并验证模型时,会在验证模型时生成一个警告信息。确认限制条件是由 UML 2.2 私有操作访问规范所控制的:

UML 2.2 > UML 2.2 Specification > Interactions Package > Messages > Private 操作调用(或者 UML 2.2 > Model Quality Dimensions > Correctness > Private 操作调用)。

提示
为了查看限制条件定义,以及激活或者关闭限制条件,您可以选择 Preferences 视图,然后选择 Model Validation > Constraints

图 15. 偏好视图之中的 Model Validation,Constraints 页面
私有操作 call

活动图

开始进行 Object Behavior 操作

Start Object Behavior 操作现在得到了支持。您可以按照下面的操作来创建一个 Start Object Behavior Action:

  1. 选择 Actions 折叠项。
  2. Object Actions 工具组中选择 Start Object Behavior 工具项。

提示:

您还可以在 Add UML 背景菜单中找到 Start Object Behavior 操作。

图 16. 活动图之中的 Start Object Behavior
Activity Diagram 视图

图 16 的大图

状态图

进入点和退出点

您现在就可以向组合状态和正交状态的边缘添加进入点和退出点。

  1. 如果您想要这样做,那么您可以向状态添加一个组合状态或者正交状态(从 State Machine 配置板折叠项中,选择 State types 组,然后选择 Composite State 或者 Orthogonal State)。
  2. 然后,从 State Machine 配置板折叠项中,选择 Pseudostate Types 工具组,接着选择 Entry Point 或者 Exit Point

提示:

您还可以在 Add UML 内容菜单中找到进入点或者退出点。

任意的接受事件

现在接受任意的接受事件操作。

  1. 如果您想要进行一次 Any Receive Event 操作,那么首先您要向状态区域添加一个转变。
  2. 从转变的属性之中,激活 Triggers 项,然后点击 Add 按钮。
  3. Event Type 下拉菜单中,您可以选择 Any Receive Event
  4. 点击 OK 按钮。
图 17. 在带有进入点和退出点的序列图中选择一个 Any Receive Event
Add Trigger 对话框窗口

图 17 的大图


视角

视角得到了改进以支持一种活动语言。您还可以共享一个视角,并向扩展点添加一个 API 以更好地支持不同领域中所使用的视角。

活动语言

现在可以将活动语言与一个视角相互联系了。在 Preferences 对话框窗口(选择 Modeling > Viewpoints 页面,如图 18 所示),会出现一个标题为 Active Language 的新项。您可以使用它来为用户所定义的视角配置默认的语言。

图 18. Viewpoints 设置面板面板上的 Active Language 选项
Viewpoints 对话框窗口

导出与导入视角

另外,视角现在就可以进行共享了。在 Viewpoints 设置面板上,添加了两个按钮以支持导入和导出视角。您可以点击 Viewpoints 设置面板之上的 Export 来显示“Export viewpoints”窗口。

图 19.“Export viewpoints”对话框窗口
Viewpoints 窗口之中的激活

比较及合并的改进

增强的别名支持

当您在合并别名发生过变动的模型的两个版本时,新版本现在将会作为单个的编辑更改显示,而不是更改的添加和删除显示。

图 20.合并别名更改过的模型
Compare Merge 编辑器

图 20 的大图

添加至筛选导出日志的选项

当您在执行一次合并过程时,筛选显示您并不感兴趣的更改是可能的。当您点击 Save List of Changes 按钮时,将会显示出一个 Save Changes 对话框窗口,该窗口现在可以在生成文件之前进行查看。有了对话框中的选项,您就可以决定是否对日志文件应用筛选规则设置了。

图 21. 合并过程之中的 Save Changes 对话框窗口
选中'delta 树中当前可见的 delta''

图 21 的大图


接下来的内容

本文提供了 Rational Software Architect V8.0 版本中 UML Modeler 组件的新功能。通过利用该版本中所引入的改进,您就能够更加有效地建模,将工作重心放在图表查看,问题预防以及解决,还有支持协作的工作流程之上。

本专题的下一篇文章和最后一篇文章将会描述重要的 API 更改以及添加项,它支持扩展的 Rational Software Architect 特性。


致谢

作者感谢 Dusko Misic 和 Michael Hanner 对本文所作的评审工作,以及 Judith Broadhurst 对本文所作的编辑工作。

参考资料

学习

获得产品和技术

讨论

条评论

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=657800
ArticleTitle=IBM Rational Software Architect 8.0 版本中对 UML 建模特性的改进,第 2 部分: UML 建模特性增强
publish-date=05092011