【问题标题】:Resetting lifeline activations at beginning of each alternative在每个备选方案开始时重置生命线激活
【发布时间】:2015-09-23 18:21:25
【问题描述】:

假设序列图备选方案应该在某种程度上可以互换,如何处理备选方案,使生命线具有与一开始遇到的不同数量(可能是嵌套的)激活?例如,这里是“就绪”案例、“未就绪”案例的序列图,以及使用“alt”将这些案例组合到单个序列图中的失败尝试。 (对图表感到抱歉——我不知道如何在顶部对齐它们。)

查看最后一个“组合案例”图,请注意第一个“就绪案例”替代方案显示 A 和 B 各有一个激活,而 C 则没有。但是,因为此替代方案为 B 和C,第二个“未准备好的情况”替代方案提供了一组不同的激活。我可以在“就绪案例”的末尾添加各种消息,以任意保留它最初遇到的相同激活,但肯定有更好的方法,或者我错过了什么,例如,我使用 alt 不正确?

顺便说一句,我用PlantUML 生成了这些图表。

【问题讨论】:

  • 是什么导致了准备好/未准备好?
  • 未知的环境影响。 :-) 但这对我的问题无关紧要。

标签: uml sequence-diagram


【解决方案1】:

您可以以这种方式使用序列图,但要小心:当生命线在进入 alt 片段时处于活动状态时,它应该在离开片段时处于活动状态。当它不活跃时,不进入,那么它不应该离开。

在您的combined cases 图中,C 的生命线存在问题。我建议您在片段之后计划的关于C 的所有其他操作都应该是[ready case] 的一部分。否则,从我的角度来看,图表会变得不一致。

【讨论】:

  • 你基本上只是重申了这个问题。 B 也存在激活问题,而不仅仅是 C。我希望专注于孤立的交互,但 UML 序列图显然无法表示这一点。包括片段之后的活动对于我的目的来说是无关紧要的并且会分散注意力。我将不得不将它们保留为两个单独的图表。
  • 对不起,我很想帮助你,但我仍然不能完全理解你的问题。你能概括一下你的问题吗?
  • 我想我在下面回答了我自己的问题。你怎么看?基本上,使用 UML 序列图,备选方案必须以与其开始时相同的激活集结束。这是符号的任意限制,通常不是替代品的固有属性。
  • 好吧抱歉,我没看到。我会检查的。
【解决方案2】:

我将只使用两个单独的 SD,分别名为 ready casenot-ready case。您不应该尝试使用 SD 实现图形编程。如果您可以以简单的方式使用图表传输消息,那么请走那条路。正如奥卡姆经常适用的那样。

【讨论】:

  • 这些是我真实图表的简化版本。 pre-alt 活动更复杂,我不想在多个图表中复制它。我只是想知道如何 将它们表示为一个单一的图表 - 一个学术练习。
  • 没有重复。当您将两者放在一个图表中时,您会得到一个额外的片段。否则你有两个图表。甚至。但是,如果您想将两者都放在一个图表中,alt 片段是正确的选择。
【解决方案3】:

我想了想,得出了这个结论。在其他人有机会回复之前,我不会考虑将此标记为最佳答案。

替代片段的两个公理是 1. 所有替代项在进入时都以相同的激活集 α 呈现,以及 2. 所有替代品都以相同的激活集 β 结束。 UML 序列图表示法 IMO 的问题在于,它有一个单独的、非公理的要求,即每个备选方案都以与其呈现的相同激活集结束,即 α = β。

【讨论】:

  • 昨天我在想,通过时间限制消息从穿过片段末端的片段对角线发送杀死消息是否是一个好主意。你怎么看?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-25
相关资源
最近更新 更多