IBM Rational Software Architect 和 IBM Rational Software Modeler 中的 UML 序列图增强
 

2010-03-04 作者:Darren Coffin,Michael Hanner,Tao Weng 来源:IBM

 
本文内容包括:
本文描述了 IBM® Rational® Software Architect for WebSphere® Software、IBM® Rational® Software Architect Standard Edition,以及 IBM® Rational® Software Modeler 对序列图编辑器的改进,这些改进使得修改图表变得更加容易。另外,消息集合的引入,以及对标识符继承操作的支持使您可以更容易地编辑控制消息和生命线。

本文提供了关于 IBM® Rational® Software Architect for WebSphere® Software 7.0.5 版本,IBM® Rational® Software Architect Standard Edition 7.0.5 版本,以及 IBM® Rational® Software Modeler 7.0.5 版本 对序列图编辑器所做功能增强的相关消息(后文将“这些产品”来指代)。这一版本更新的关键改善之处在于能够移动和重新排序消息和生命线。本文还向您解释了设置消息标识符的简易方法。

如果序列图编辑器没有重新排序消息和生命线的能力,那么您将不得不重复的编辑(删除和再建)已存在的序列图元素以刺激重新排序操作。例如,为了重新排序消息 2 下已存在的消息 1,您就不得不首先先将消息 1 删除,然后在消息 2 下再建相同的消息 1。生命线也会出现相同的问题。

消息和生命线重新排序操作提供了方案。现在序列图编辑器有两个选择的模式:默认的是 move 模式。另一个是 reorder 模式。每一种模式下都对拖拉和投入选择的消息不一样对待。reorder 操作变更了序列图元素的顺序(这些是语义上的变更);尽管如此,移动操作只会变更序列图元素之间空格的数量(从语义上来说,序列图仍然保持不变)。

现在消息设置标识符的操作变得更加容易和更加方便了。如果目标生命线代表了一种标识符,那么序列图编辑器就允许您选择标识符所有的或者内有的操作以作为消息的操作。序列图编辑器的前面版本只允许您选择标识符所有的操作。如果您想要选择标识符内有的操作,那么您就需要从消息事件的 Advanced Property 页面中进行选择,而这种操作是极端困难和复杂的。选择消息标识符内有的操作就变成更加普遍的工作流程了。

消息重排

变更序列图上消息顺序的能力得到了提高,使得让它们成为预设的顺序变得更加容易了。图表内所有的元素在重排操作期间可以考虑,而不仅仅是屏幕上显示的那样。

消息集合(Message set)

消息集合(Message set)是一组需要在重排操作期间作为一组原始单元处理的消息。什么实际上组成有效的消息是由 message set collection rules 定义的。消息集合联合规则是内容敏感的。基于您的选择,不同的消息集合收集规则将会被激发,不同的消息集合也将会被发现。

重新排序已存在的消息集合

在重新排序时,重新排序整个消息集合作为单个集合是行得通的,这样您就可以保持集合内的排序了。为了变更消息集合 的顺序,您可以按照以下步骤来做:

  1. 选择消息集合。在集合里右击第一条消息并选择 Message Set/Reorder,如图 1 所示(您也可以选择使用在消息集合里第一条消息上使用 Alt+left-click)。消息集合将会以蓝色强调显示以方便查看。您可以看到什么将会被记录,序列图编辑器现在也处于重新排序模式下了。
图 1. 为重新排序模式选择一个消息集合
选择蓝色强调显示的元素
  1. 将消息拖拉到您想要的位置上。左击选择的消息集合并将序列图拖上或者拖下。注意一个带点的线将会向您显示消息集合的精确位置(如图 2 所示)。
图 2. 在您拖拉消息集合时出现的带点直线
蓝色强调显示的直线

在重新排序之后,消息集合将会得到更新以反映新的顺序(图 3)。提示 :确定您没有将元素选择成已存在的重新排序模式。

图 3. 重新排序消息集合的结果
 向下移动的元素

在特定的环境中,工具箱将会自动处理其他的事件。如果一个创建的消息得到重新排序,那么创建生命线的起始点将会移动以匹配创建消息的新位置。如果 destroy 消息得到重新排序,那么破坏生命线的末端点将会移动以匹配破坏消息的新位置。

合并的片段

对于重新排序的操作,您可以在合并的片段之间重新排序消息集合。在工具重新排序消息集合到合并片段时,它会首先检查目标合并的片段是否是消息集合有效的容器。如果合并的片段同样涉及到了所有消息集合的生命线,那么合并的片段就会被认为是有效的。如它是无效的,那么工具就可以防止您完成操作了。

  1. 选择消息集合。在集合上的第一条消息上右击并选择 Message Set/Reorder (在消息集合里的第一条消息上使用 Alt+left-click)。这条消息集合将会以蓝色强调显示以便查看。您可以看到什么将会被重新排序,现在序列图编辑器处于重排模式。
  2. 将消息集合拖拉到无效的目标合并片段。左击并将选择的消息拖拉到合并的片段中。如果合并的片段不是有效的选择消息集合的容器,那么回馈直线就不会出现。
  3. 将消息集合拖拉到一个有效的合并片段。左击并将选择的消息拖拉到合并的片段中。如果合并的片段是有效的选择消息集合的容器,那么回馈直线就会出现,显示出消息被拖拉到的精确位置(图 4)。
图 4. 在拖拉 / 投入到容器期间出现的点线
直线指示了移动方向
  1. 完成拖拉操作。消息集合也会重新排序到合并的片段中。图 5 显示了结果。
图 5. 重新排序到容器中的结果
重新排序的结果

按照相似的步骤来从合并片段中将消息集合重新排序到一个交流中,并在合并的片段之间重新排序消息集合。

独立消息(Individual messages)

有时,您想要在消息集合内重新排序一个特定的消息,而不是重新排序整个消息集合。为了做到这一点,他们需要从消息集合中分解消息。

同步消息(Synchronous message)

为了从给定的消息集合中分解同步消息,您可以按照下面的步骤:

  1. 选择消息。右击同步消息的回归部分并选择 Message Set/Reorder (您也可以在回归消息上使用 Alt+left-click )。回归消息将会以蓝色强调显示以便查看。
图 6. 为重新排序的模式选择同步消息的回归部分
蓝色显示新的排序路径
  1. 拖拉消息。左击并拖拉回归消息,知道它位于同一同步消息发送消息的上面。
图 7. 在拖拉 / 投入回归消息期间的点线指导
显示路径的蓝线
  1. 检查结果。完成拖拉操作。同步消息分解自消息集合,并不包含任何的消息。
图 8. 分解同步消息集合的结果
Purchase 不再具有固定的消息

异步消息(Asynchronous message)

为了从给定消息集合中分解异步的消息,您可以遵循以下的步骤:

  1. 选择消息包含的行为执行规格说明。在行为执行规格说明上左击
图 9. 选择行为执行规格说明以重设大小
选择元素附近的边缘
  1. 拖拉边缘的处理。左击 并拖拉行为执行规格说明的处理以重设大小,直到没有固定的消息。
图 10. 行为执行规格说明重设大小汇款
仍然选中的元素

异步消息分解自消息集合。如图 11 所示,它显示了没有固定消息的 purchase 元素。

图 11. 分解异步消息集合的结果
Purchase 分解自 AskPrice 和 Order

在从消息集合中分解消息之后,消息就可以重新排序到目标位置:

  1. 选择消息集合。右击消息的 send 部分与 select Message Set/Reorder (您可以选择在发送消息上使用 Alt+left-click)。消息会以蓝色强调显示以便查看。现在编辑器就处于重新排序模式(见于图 12)。
图 12. 为重新排序的模式选择一个单独的消息
Outlined 矩形显示了新的次序
  1. 拖拉元素到新的位置上。左击并将选择的元素拖上或者拖下到序列图。注意点线精确的显示了消息拖到的地方。
图 13. 拖拉 / 投入单个消息的点线指导
显示点线
  1. 检查结果。完成拖拉操作。消息会移动到新的位置,所有的消息会得到合适的排序。
图 14. 重新排序单个消息的结果
新的位置

重新排序验证

特定的重新排序操作可能会导致目标模型变得无效,如果它们破坏 UML2 规则的话。工具箱通过在执行每一个重新排序请求之前对其结果进行验证,防止无效的模型被建立。如果结果是一个无效的模型,那么工具将会放弃操作并显示一个出错的消息。

图 15 显示了一个范例。

图 15. 用户尝试一个无效的排序
X 显示问题

消息 logout 是一条 destroy 消息。在注销消息之后,客户的 onlineStore 得到终止。如果您想要重新排序 purchase 消息以在 logout 消息之后显示它。这是错误的,因为 onlineStore 在这点是不存在的。在这样一种条件下,会出现一条 Live Validation 出错消息(图 16),显示“请求的操作会破坏模型的整体性”,然后您就不能继续下去了。

图 16. Live Validation 出错消息
同样给出原因的出错消息

消息移动

在不变更其他消息中顺序的前提下移动消息的操作得到了简化。默认条件下,序列图编辑器处在 move 模式下。简单的点击并将消息移上或者移下,图表上的其他消息不会收到影响。这对于为 Note 元素提供空间或者改善消息的美学布局,都是十分有用的。拖拉和投入操作将会变更消息之间空格的数量,而不保持消息的顺序。

生命线重新排序

与消息的重新排序想类似,生命线的重新排序操作使得您可以更改图表上生命线的顺序。您可以从一个位置到另一个位置重新排序单个生命线。变更生命线顺序的操作并不会更改图表的语义,但是它通常会提高图表的清晰度和美学意义。例如,包裹类的生命线可能会靠近包裹类的生命线。工具还会允许不同的生命线被一起选择并得到重新排序。

单个生命线重新排序操作

  1. 选择单个生命线。右击并从下拉菜单中选择 Reorder Lifelines (您还可以选择,使用生命线上的 Alt+left-click)。

选择的生命线将会以蓝色强调显示,以提供回馈,显示序列图编辑器现在处于重新排序模式,意味着什么将会得到重新排序(见于图 17)。

图 17. 为重新排序模式选择单个生命线
客户:强调的客户
  1. 将生命线拖拉到新的位置。左击并将选择的生命线拖到左边或者右边。一条蓝色的点线将会出现以为选择的生命线指示插入点。只是在目标插入点对于选择的生命线有效之时,蓝色的线才会出现。
图 18. 在拖拉 / 投入单个生命线期间点线指导
图 18. 在拖拉 / 投入单个生命线期间点线指导
  1. 检查结果。完成拖拉操作。

选择的生命线对目标位置得到重新排序,如图 19 所示。

图 19. 重新排序单个生命线的结果
显示新的位置

多个生命线重新排序

  1. 选择多个生命线。左击生命线并使用 Ctrl+left-click 以选择额外的生命线。在选择的生命线上 右击,并从下拉菜单中选择 Reorder Lifelines (您也可以在多个生命线上使用 Alt+Shift+left-click)。

选择的生命线将会以蓝色强调显示,以指示序列图现在处于重新排序模式,以及什么将会被重新排序。

图 20. 选择多个生命线
强调的两个生命线
  1. 拖拉生命线左击 并将选择的生命线拖拉到左边或者右边。

蓝色的点线将会显示选择生命线的插入点。只是在目标插入点对选择的生命线有效之时,蓝色的线才会出现。

图 21. 在拖拉 / 投入多个生命线 期间的点线指导
显示插入点的点线
  1. 检查结果。完成拖拉操作。

如图 22 所示,选择的生命线会重新排序到目标的位置处。

图 22. 重新排序多个生命线的结果
显示新次序的图表

生命线移动

与消息移动相类似,生命线移动使得您可以变更生命线之间空格的数量。这就为长的消息签名,以及插入标记,评论或者限制创造了空间。默认条件下,序列图编辑器会处在 move 模式下。简单的 左击 并将生命线拖到左边或者右边,图表上的生命线却不会受到影响。

设置标识符继承操作

为消息设置继承操作

在 Rational 软件产品中所做的改进,就是能够轻易的为消息设置标识符继承操作(classifier-inherited operations)。如果目标生命线代表了一个标识符,那么现在序列图编辑器就使得您可以选择标识符操作或者继承操作,作为消息的操作。

为了找到质量内有的操作,目标标识符的普通阶层(基于普通关系)将会被倒转。如果目标标识符是 classclass 子类的一种)类型的,实现的关系阶层也会得到倒转。同样,所有类所有的端口提供的界面也会得到考虑,它们的操作也会被添加。如果目标标识符是 component 类型的,那么除了普通的和实现的阶层,来自组件提供界面的所有操作,同样会被倒转。

图 23. 从序列图中创建一个操作
Enter Operation name and owner 对话框

正如您从图 23 中看到的那样,在从序列图中创建新的操作时,在 Create New Operation 对话框中会出现一个下拉菜单。它列出了新操作所有可用的所有人。

图 24. 在序列图上选择一种操作
可用所有者的列表

当您在序列图的消息操作签名上双击时,会出现一个可用操作的列表。这个列表包含了目标标识符的拥有和本有的操作。

总结

在本文中描述的功能改善,提高了序列图的可用性,因此使得您可以更加容易的编辑和变更您的图表。通过使用重新排序或者整个的消息集合,您可以以一种非常定制化的方式来更改图表上消息的顺序。处理标识符继承操作也变得更加容易。

参考资料

学习 获得产品和技术 讨论


如何向妻子解释OOD
OOAD与UML笔记
UML类图与类的关系详解
UML统一建模语言初学
总结一下领域模型的验证
基于 UML 的业务建模


面向对象的分析设计
基于UML的面向对象分析设计
UML + 嵌入式系统分析设计
关系数据库面向OOAD设计
业务建模与业务架构
使用用例进行需求管理


某航空IT部门 业务分析与业务建模
联想 业务需求分析与建模
北京航管科技 EA工具与架构设计
使用EA和UML进行嵌入式系统分析
全球最大的茶业集团 UML系统分析
华为 基于EA的嵌入式系统建模
水资源服务商 基于EA进行UML建模
更多...   
 
 
 
 
 
 
 

组织简介 | 联系我们 |   Copyright 2002 ®  UML软件工程组织 京ICP备10020922号

京公海网安备110108001071号