环在UML活动图使用的区域(Loop in UML activity diagram using a

2019-08-19 06:52发布

我在建模的UML活动图的循环。 它以简单的条件节点(图1)效果很好,但是我正在寻找一个更有表现力的方式来强调循环语义 。 于是,我来到了“区域”或显示“可中断的区域” 在这里和那里 ,但我无法找到许多真正令人满意的例子。

我的例子是处理一个给定列表的消息的功能。 环路中止尽快找到的第一个有效的消息,则处理该消息和函数返回true。 否则,它将返回false(请在感觉或无义没有意见,这只是一个样品的缘故)。

图1:使用好老活动图条件节点。 这是比较容易沿着沿箭头,无可否认的控制流,但没有“循环”,也仅仅是一个“如果”。

图2:

  • 是(正)退出条件正确,使用中断边缘? 真实的,它可以是环的与所述迭代器沿[测试]部分的一部分。
  • BTW:怎么是一个for循环中最好的UML表示的迭代人物?
  • 在循环体里面正确的活动最终节点(即当条件“的消息是否有效?”收益率“不”)? 它在某种程度上感觉错在这里使用最后一个节点,但我还能怎么表达一个循环的控制流程?

两个图表的功能应该是等价的:


编辑:它实现了从斯蒂芬建议的另一个图:

  • 循环体内部的初始和最终节点
  • “进一步处理”是现在的循环体内部。 嗯... OK这里,但有可能是其他地方的循环,我宁愿把它外面。 然后,我可能会改变反正设计...
  • “下一个消息”也可以被看作是迭代器对象本身代替的作用 “(提供)下一个消息”从原始图。
  • 这两个对象流箭头可能是有点矫枉过正,但我​​认为他们是正确的。

Answer 1:

在UML中,活动最后一个节点代表一个完成,所以它是正确的环区域中,你使用它,它是你的循环(这反过来导致下一次迭代)的含量正常完成。 作为一个方面说明,我劝你也可以使用一个初始节点的循环的开始。

而且还有流量最后一个节点,表示代替完成退出。 因此,你可以用它来代表“破发”的语句,而不是使用中断边缘。 在这种情况下,你刚才这个流程的最终节点之前的“进一步的消息处理节点”,整合“是”分支。

中断边缘是相当用于中断从当前处理外部的。 该区域是中断的,还有一些事件(通常注意到接收节点)可能会完全中断它,不管该区域内容的进度。 这是不是这样的。

关于迭代字符,没有什么很直观,很遗憾。 我倾向于使用一个对象节点上的区域的顶部上,就在初始节点的旁边。



文章来源: Loop in UML activity diagram using a region