序列图中的发生规范与执行规范,何时分别使用?

Occurrence- vs. execution-specification in Sequence Diagrams, when to use each?

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

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

术语说明

我知道术语发生规范执行规范可能对大多数人来说并不熟悉,因此我在序列图。

在下面的描述中,有两条消息(标记为红色):

(source)

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

MagicDraw

uml-diagrams.org.

可以找到对术语的很好的总结

UML spec 在第 578 页上说

An ExecutionOccurrenceSpecification represents, on a lifeline, the start event or the end event of an ExecutionSpecification.

An ExecutionOccurrenceSpecification is represented by the start or finish endpoint of the vertical box for an ExecutionSpecification on a lifeline. See Figure 17.2.

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

一起应用。

第567:

ExecutionSpecifications are represented as thin rectangles (gray or white) on the lifeline (see 17.3.4 (Lifeline)).

We may also represent an ExecutionSpecification by a wider labeled rectangle, where the label usually identifies the action that was executed. An example of this can be seen in Figure 17.16.

简单来说:黑匣子里有事情发生。

现在,对于 OccurrenceSpecification,第 1 页的规范中有一个递归定义。 566:

The semantics of an OccurrenceSpecification is just the trace of that single OccurrenceSpecification.

The understanding and deeper meaning of the OccurrenceSpecification is dependent upon the associated Message and the information that it conveys.

(哇!)但随后在第 1 页上。 567:

OccurrenceSpecifications are merely syntactic points at the ends of Messages or at the beginning/end of an ExecutionSpecification.

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

虽然图。 17.2 使用 ExecutionSpecification 下面的数字 17.3 等不要使用它们。所以你可以随意使用它们。

消息 starts/ends 总是 出现的点。

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

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

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

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

所以答案是,工具应该允许消息和执行规范的任意组合,因为这完全取决于建模者,她想要显示哪些事件。