【发布时间】:2019-03-09 20:28:53
【问题描述】:
在 UML 2.5.1 中,状态机的 initial 伪状态定义如下:
一个初始的 Pseudostate 代表一个 Region 的起点;那 是,它是执行其包含的行为的点 当通过默认激活进入区域时开始。它是 最多一个转换的来源,这可能会产生相关的影响 行为,但不是相关的触发器或防护。可以在 一个区域中最多一个初始顶点。
换句话说,UML 状态机应该几乎总是包含一个初始伪状态,它应该有一个输出转换。
但是,初始伪状态是否也可以有传入转换?例如:
我在 UML 规范中找不到任何禁止它的东西,但是我在网上找不到任何发生这种情况的示例,因此我想知道我是否忽略了任何东西。
编辑: 更详细地说,如果我们查看规范中所述的 OCL 约束,我们只能找到以下影响传出转换的约束(第 14.5.6.7 节):
inv: (kind = PseudostateKind::initial) implies (outgoing->size() <= 1)
但我找不到关于传入转换的任何限制
EDIT2: 我刚刚意识到我的模型是错误的!考虑到规范中的这句话(上面引用):“它是至多一个转换的来源,它可能具有关联的效果行为,但不是关联的触发器或守卫。”
因此 init 和 s1 之间的转换实际上应该有零个触发器,而不是将 e1 作为触发器。
请注意,虽然这不会使最初的问题无效。
【问题讨论】:
标签: uml