【问题标题】:How to interpret a UML 2.5 State Machine diagram?如何解释 UML 2.5 状态机图?
【发布时间】:2016-04-23 12:58:13
【问题描述】:

我需要确定 UML 2.5 状态机图的所有基本元素。不幸的是,这些图表的符号似乎有很多歧义,因为网上有很多不同的变化。

我的解释是,每个状态机图都由多个状态和多个转换组成。

每个州都有:

  • 一个可选的entry操作
  • 可选的执行操作
  • 可选的退出操作

每个过渡都有:

  • 触发事件
  • 可选的前提条件
  • 过渡动作(后置条件)。

我对符号工作原理的理解可以总结在图 1 中(符号 [precondition] Event / [Transition Action] 之后的电动门功能示例)并在图 2 中。

示例:当一个事件被触发(例如关闭按钮被按下)时,前置条件 (如果有)被评估(例如门口是空的),如果满足 前提条件,则 过渡动作(例如关门)被触发。

图 1

图 2

我的问题:

  1. Transition Action是实现过渡还是 只是在过渡期间发生的动作。简单来说, 如果过渡动作/s出错,过渡(新 州)成功?我的问题基本上源于事实 许多消息来源建议不要使用 transition action,当你到达新的 状态。在我的理解中,虽然 transition action 是 实现过渡,因此发生在进入之前 新状态,与发生的进入操作相比 到达新状态后立即。因此,就过渡本身和时间而言,这是两种完全不同类型的动作。了解这些操作的时机对我来说至关重要。
  2. 我的一般解释正确吗? (例如,我对图 1 中的事件、后置条件和转换动作的理解)

我知道状态机图有十几种变体,因此有不同的表示/解释,但我对 UML 2.5 很感兴趣。

【问题讨论】:

    标签: uml state statechart


    【解决方案1】:

    Transition Action 是 UML 2.5 声明为转换的关联结束:

    effect : Behavior [0..1]{subsets Element::ownedElement}(与 A_effect_transition::transition 相反)指定在转换触发时要执行的可选行为。

    虽然状态的<<entry>> 是分配给状态本身的行为。也就是说,它将从转换的来源触发。相比之下,上面的效果只是在过渡时触发。

    效果不能“出错”。任何行为被执行,被执行。此处不检查任何条件。

    是否触发转换可以由您错误命名为[precondition][guard] 控制。 (可以开始争论,但你需要使用[guard]。)

    guard:约束 [0..1]{subsets Namespace::ownedRule}(与 A_guard_transition::transition 相反) 守卫是一个约束,它提供对转换触发的细粒度控制。当 StateMachine 调度事件发生时,就会评估守卫。如果当时守卫为真,则可以启用转换,否则禁用。守卫应该是没有副作用的纯表达式。带有副作用的守卫表达式格式不正确。

    关于时间,您可以想象一个令牌沿着各州移动。当守卫让您通过时,将执行<<exit>> 行为。然后是转换的effect,最后是下一个状态的<<entry>> 行为。

    【讨论】:

    • 托马斯感谢您的回答。关于过渡动作/效果,您是在暗示这不是“过渡的实现”吗?它可以是任何动作/行为?我从风险分析的角度来看待它,所以我试图准确地理解图中的每个元素以及出现问题的原因。顺便说一句,什么是理解图表的好来源?我使用了uml-diagrams.org(其中guard实际上称为前置条件..)
    • 嗯,过渡的实现是全套(守卫,效果,触发器)。您可以将任何行为放入效果中,它会与通过转换的令牌一起执行。我不能推荐太多。 uml 图表肯定是一个很好的来源。 UML 规范本身不是学习资源。它是为工具开发人员(也许还有书呆子)编写的。当然,您可以通过提问的方式在这里学到很多东西:-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-12
    • 2014-08-12
    相关资源
    最近更新 更多