4

在序列图中,消息何时应源自发生规范,何时应源自执行规范

同样,消息的目标何时应该是两者中的每一个?

澄清条款

我知道大多数人可能不熟悉术语发生规范执行规范,因此我在序列图上指出它们。

在下图中,有两条消息(标记为红色):

  • m12引出和引出出现规范,以及
  • m2从发生规范到执行规范(青色块)。

图片来自 eclipse.org (资源)

默认情况下,大多数能够绘制 UML 序列图的工具都会在两侧放置一个执行规范——这是为什么呢?-- 与Visual Paradigm一样 在此处输入图像描述

MagicDraw

在此处输入图像描述

4

3 回答 3

2

可以在uml-diagrams.org找到一个很好的术语摘要。

UML 规范在第578 页上说

ExecutionOccurrenceSpecification 在生命线上表示 ExecutionSpecification 的开始事件或结束事件。

ExecutionOccurrenceSpecification 由生命线上的 ExecutionSpecification 垂直框的开始或结束端点表示。请参见图 17.2。

所以他们只是标记发生某事的时间点。实际上,规范中有许多示例也将时序约束与ExecutionOccurrenceSpecification.

在页。567:

ExecutionSpecifications 表示为生命线上的细矩形(灰色或白色)(参见 17.3.4(生命线))。

我们也可以用一个更宽的带标签的矩形来表示一个 ExecutionSpecification,其中标签通常标识已执行的操作。图 17.16 中有一个例子。

简单地说:黑盒子里发生了一些事情。

现在对于OccurrenceSpecificationp 的规范中有一个递归定义。566:

OccurrenceSpecification 的语义只是单个 OccurrenceSpecification 的踪迹。

OccurrenceSpecification 的理解和更深层次的含义取决于相关的消息和它传达的信息。

(哇!)但是然后在第。567:

OccurrenceSpecifications 只是消息末尾或 ExecutionSpecification 开头/结尾处的句法点。

实际上 anOccurrenceSpecification只是 的更一般形式ExecutionOccurrenceSpecification

虽然图。17.2 使用ExecutionSpecification下面的图 17.3 等不要使用它们。因此,您可以随意使用它们。

于 2018-02-27T08:50:37.060 回答
1

消息开始/结束的点始终是一个事件。

执行规范显示活动的实例。对于启动实例,没有定义是否应该发生执行。因此,各种案例工具开发人员采取了各种方法。如果您可以决定,您可以描述实例是否保持活动状态(例如等待答案),但这是建模者的选择。

于 2018-02-27T10:25:40.097 回答
0

你的问题是,为什么有些工具会在两边都显示执行规范。原因很简单,他们非常缺乏对交互图的支持。消息的发送者和接收者都不需要执行任何操作,因此不需要执行规范。

虽然通常情况下,发送者执行某些行为,在此过程中发送一些消息,并且消息的接收者执行响应接收消息的行为,但情况并非总是如此。发送者可能会自发发送,而接收者可能会忽略该消息。即使某事被执行,建模者也可能选择不提及它。交互图显示了一些有趣的事件,但绝不需要显示所有可能的事件。

消息可能以 ExecutionOccurrenceSpecification 开始或结束,但也可能只是 MessageOccurrenceSpecification。ExecutionSpecification 也可以独立于消息。也许建模者想要表达一个对象正在执行某事,而不受任何消息的干扰。甚至可以定义正在执行的行为。但是,我还没有找到支持UML 的这种强制性功能的工具。

所以答案是,这些工具应该允许 Messages 和 ExecutionSpecifications 的任意组合,因为这完全取决于她想要展示的 Occurrences 的建模者。

于 2018-03-01T18:07:57.407 回答