在每个备选方案开始时重置生命线激活

时间:2015-09-23 18:21:26

标签: uml sequence-diagram

假设序列图替代方案应该在某种程度上可以互换,那么如何处理一个替代方案,使得生命线具有与开始时遇到的不同数量(可能是嵌套的)激活?例如,下面是“就绪”情况,“未就绪”情况的序列图,以及使用“alt”在单个序列图中组合这些情况的失败尝试。 (对不起图表 - 我无法弄清楚如何对齐它们。)

ready case not-ready case combined cases

查看最后一个“组合案例”图,注意第一个“就绪案例”替代方案是A和B各一个激活,C没有。但是,因为这个替代方案为B创建了新的激活C,第二个“未就绪案例”替代方案提供了一组不同的激活。我可以在“准备案例”结束时添加各种消息,以使其最初遇到的相同激活,但肯定有更好的方法,或者我错过了一些东西,例如,我使用alt不正确?

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

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

我会使用两个名为ready casenot-ready case的单独SD。您不应该尝试使用SD实现图形编程。如果您可以轻松地使用图表传输消息,那么就走这条路。正如奥卡姆经常使用的那样。

答案 2 :(得分:0)

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

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