uml - UML 状态机中 Fork 和 Join 的语义

标签 uml state-machine

谁能告诉我下面的两个模型(来自 UML 上层结构规范的顶部模型)在语义上是否等效?
Fork & Join versus entering parent state
我希望将 Fork 和 Join 伪状态类型添加到我的状态机库中,这对我来说似乎是一种有用的实现方式。

最佳答案

这两个图并不等价。

用两个首字母代替 fork 是没有问题的:在上面的状态机中,A1 和 B1 同时激活,下面的也是如此。

但是,用两个最终状态替换 Join 是有问题的。在大写中,(Process, A2, B2) 是清理激活之前的最后一个状态配置。在每次运行中,在 Cleanup 处于事件状态之前,Process、A2 和 B2 处于事件状态。在小写中,它是 (Process, final, final) 必须处于事件状态。

换句话说,(Process, A2, B2) 和 (Cleanup) 是大写的“邻居”状态配置,但它们不是小写的。中间有(过程,最终,最终)。

“语义等价”取决于您定义为语义相关的内容。对我来说,清理是 (Process, A2, B2) 之后的下一步还是下一步是有区别的。

更多

在大写 A2 和 B2 必须同时处于事件状态,然后再离开 Process。在较小的情况下,没有这样的需要。一个trace可能是... (Process, final, B1), (Process, final B2), (Process, final, final),然后就剩下Process了。

关于uml - UML 状态机中 Fork 和 Join 的语义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22974776/

相关文章:

uml - UML 2.X 事件图中的对象流是否作为前面操作的前提条件?

java - UML 书籍或引用资料

UML 状态机 : How to exit orthogonal child regions?

java - 如何在 Java 中创建一个简单的状态机

uml - 在 MDriven 中嵌入类之间的连接

uml - 包含和扩展用例模型

UML:如何表示两个参与者的用例扩展

javascript - 如何处理 React/Flux 组件中的状态转换

c - 在 C 中实现分层状态机

eclipse - 使用 Eclipse 而不是 QM 的 QP(量子平台)状态图