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

Rational Software Architect for WebSphere Software 7.0.5,Rational Software Architect Standard Edition 7.0.5, 及 Rational Software Modeler 7.0.5

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

Darren Coffin, 软件验证开发人员, IBM

Darren Coffin 从 1999 年以来,一直从事于建模工具上的软件验证工作。他工作的范围很广,测试众多的建模特性和图。他毕业于特伦特大学,获得计算机研究和环境资源研究学士学位。



Michael Hanner, 软件开发经理, IBM

Michael Hanner 于 2002 年加入 IBM,在软件行业有超过 15 年的经验。他是 Rational Software Modeler 产品的开发负责人。他负责 UML 和领域建模平台,也包括开源项目建模,例如 EMF、GEF、GMF 和 UML。



Tao Weng, 软件开发人员, IBM

Tao Weng 从 2004 年一直工作于 IBM Rational 建模团队,专长于模型合并和 UML 图。他是序列图的核心开发人员,并负责产品中的其它特性。



2009 年 9 月 03 日

本文提供了关于 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. 在序列图上选择一种操作
可用所有者的列表

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

总结

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

参考资料

学习

获得产品和技术

讨论

条评论

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=425541
ArticleTitle=IBM Rational Software Architect 和 IBM Rational Software Modeler 中的 UML 序列图增强
publish-date=09032009