【问题标题】:The tricky case of state representation in UML State Machine Diagram. Orthogonal or not?UML 状态机图中状态表示的棘手案例。正交与否?
【发布时间】:2012-06-01 11:05:21
【问题描述】:

UML 2.0 中有限状态机的分层表示提供了很好的信息压缩,因此您不必描述所有可能的状态组合。 UML 还提供了所谓的正交状态,它们不是相互排斥的。 据我理解这个想法,如果一个对象在这些状态下产生一些活动以响应相同的事件,那么对应于每个状态的活动应该简单地组合起来。在从遗留 C++ 代码对 UML 状态机图进行逆向工程时出现了这个问题。给出精炼的C++代码和UML图:

void CSomeClass::somePublicMethod()
{
    if (false == m_A)
    {
        return;
        }

    if (true == m_B)
    {
        m_C = otherMethodWithSideEffects();
    }

    if (false == m_C)
    {
        // some logic with side effects and state transitions
        return;
    }

    // other complex logic with side effects and state transitions
}

UML状态机图:

一方面状态 B 和 C 不是完全独立的,另一方面并发状态的概念使图表更简单。您能否提出更好的解决方案或 告诉我哪里错了?

【问题讨论】:

    标签: uml diagram state-machine


    【解决方案1】:

    在应用“并行”或“非独占”状态机时,您有真正的问题吗?

    看来您正在寻找一个非常理论化的概念。您的图表示例,不显示任何“转换值”,看起来更像标准流程图。 (是的,我知道,状态机是专门的流程图)

    分层状态机也应该具有“封装”或“隐藏”转换值。

    U.M.L.流程图还支持表示“并行”或“非排他”路径,因此如果您必须对这种情况进行建模,您可能希望从它们开始,而不是状态机。

    我工作的唯一分层状态机与解析器有关,当然,我知道它们也用于电路。

    祝你好运。

    【讨论】:

      猜你喜欢
      • 2014-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-15
      • 2014-08-12
      • 1970-01-01
      相关资源
      最近更新 更多