在UML序列图中,在alt/opt中间停止执行/中断的方法

10
在 UML 序列图中,如果一个流程应该在一半的时候停止,那么如何使用备用/可选片段来最好地表示它呢?
例如- 如果未满足停止条件,则流程将继续进行数个步骤。备用片段是否应该覆盖自停止条件以来的所有步骤,使得停止条件之后的所有步骤都成为备用片段的一部分?或者有没有一种符号可以在一个小的备用片段内处理停止条件(仅限于该条件)?
2个回答

17

对于这种情况,有三种选择。我将每个选项都用图表说明,展示每个组合片段应该如何使用。实际行为通过交互引用进行隐藏(对于应该正常执行的流程使用normalFlow,对于任何在必要时发生中断的流程使用breakFlow)。

第一种解决方案是最方便的 - 它完全覆盖了您的情况,并且您也可以使用中断保护条件的积极版本。但是,它们每个都为您提供了一个有效的可能性。

  1. Break组合片段

当遇到break组合片段并且其保护条件为true时,仅执行此片段,然后交互(流)的执行停止。如果条件未满足,则忽略组合片段,正常流程继续进行。这恰好就是您描述的情况。在这种情况下,您将在break组合片段之后放置不应在中断条件下执行的消息。

enter image description here

  1. Opt组合片段

当遇到opt组合片段时,仅在保护条件为true时执行它。无论条件如何,流的其余部分都会继续进行。 您可以将仅在未满足中断条件的情况下继续的流程部分放置在opt组合片段内。Opt片段应具有与停止流程的条件相反的保护条件。如果还应在中断的情况下发生任何其他操作,则应在opt组合片段之后放置这些操作。

enter image description here

  1. Alt组合片段

当遇到alt组合片段时,其保护条件会被评估,并且只会执行保护条件评估为true的最终片段。可能还会出现这样一种情况:没有保护条件评估为true,因此不执行任何片段。在这种情况下,组合片段之后的任何流程都会正常执行。

在这种情况下,最好使用两个片段。第一个片段应该包含正确的操作保护条件和正常流程,而第二个片段应该包含导致中断的条件以及在中断发生时应采取的措施。请将正常流程放在第一个片段中,并将任何中断情况下需要执行的操作放在第二个片段中。

enter image description here


4

你可以通过使用opt片段来简化整个过程:

enter image description here

有人可能会争论这样是语法上不正确的,但它传递了信息(我猜)。这才是最重要的。

从我的个人经验来看:尽可能少地使用片段。相反,分割你的场景以关注某些重要方面。时序图是系统在你想要概览发生情况时的快照,而不是一个具有每条可能的猫和狗路径的详细路线图。


关于分割SD的评论很有帮助。这会使它更加纯粹,尽管在我的情况下,打破流程会更好。 - Ron Kuper
我的回答中最重要的部分是“它传递了信息”。只要这一点得到满足,你在风格上就相当自由。 - qwerty_so

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接