UML - 序列图中的替代流程是否需要 if 和 else 保护?

UML - Do alternative flows in a sequence diagram need an if and else guard?

使用替代流程时,我是否需要在序列图中使用 if 和 else 守卫?例如,如果我有一个网站并且有人决定购买某件商品,则该商品将被保留,如果他不付款,则该产品将被删除,付款也将被删除。那么,当您已经在客户与 Interface:Interface 之间的交互中指定 [if payment cost accepted] 是否有意义?

如果您不指定保护条件,则两种选择都会被跳过。 UML 2.5 的第 17.6.3.7 节(备选方案)说,"If none of the operands has a guard that evaluates to true, none of the operands are executed and the remainder of the enclosing InteractionFragment is executed."

每个替代流都有显式或隐式保护(参见第一段中的 17.6.3.7)。如果没有提供 guard 语句,那么这将被视为隐式真正的 guard。

如果您使用序列图对各种流程建模,即使您只在特定图表上显示其中一个流程,您也应该将守卫放在那里(否则您将拥有一个始终执行的流程,通常是不是您想使用 alt 建模的内容)。

正如 Uffe 所提到的,守卫只包含一个逻辑语句,该语句被评估为真或假(没有 'if' 关键字)。