UML状态机:具有转换,触发器和事件的状态的类图

时间:2012-09-26 18:55:17

标签: uml transitions class-diagram object-diagram

TL; DR:我应该如何在UML对象图中表示UML转换(参见下一行)?

  

event(event_parameters)[guard_condition] / doStuff()

在我的BSc论文项目中,我正在使用UML StateMachines(行为,没有协议SM)。除了State Machine Diagram表示,我还需要Object Diagrams。

然而,到目前为止,我还没有设法准确地表示过渡。我希望能够显示具有触发器(事件),保护(约束)和/或行为的转换。

我搜索了相关的问题(this one接近,但没有提供我正在寻找的确切信息),以及阅读UML超结构的相关部分,但仍然不能非常清楚。

到目前为止,我已经根据下面状态机图中显示的状态S1(以及所有转换)创建了一个对象图。我应该注意到我只添加了事件,因为警卫和行为给了我类似的问题(并且会使图表混乱)。

包含状态S1的状态机图

State Machine Diagram containing state S1

(不正确)S1的对象图,包括所有转换(我假设至少SignalEvent实例(有些)不正确。)

(incorrect) Object Diagram for S1, including all transitions (I'm assuming that at least the SignalEvent instances are (somewhat) incorrect.)

3 个答案:

答案 0 :(得分:1)

状态机显示系统如何对刺激作出反应,而对象图表示系统在某个时间点的特定状态。由于对象图是静态的,因此您无法在其中表示状态机转换。你可以做的是创建两个对象图,并告诉第二个图是将指定的状态转换应用于第一个图的结果。但我认为没有正式的方法可以做到这一点。

答案 1 :(得分:1)

UML2元模型非常复杂。如果你想让它符合UML2,我建议如下:使用一个带有org.eclipse.uml元模型的工具,它能够绘制状态图。一个开源的将是Topcased。可以找到完整列表here(但并非所有列表都支持状态图)。

绘制图表后,将其另存为.uml文件。该文件包含XMI,非常易读。如果使用EMF查看器(安装在Topcased中)打开它会更容易,只需使用“打开方式”。)

如果您不关心UML2合规性并且只想要与上图相似的内容,则此解决方案将导致更复杂的对象图表。

答案 2 :(得分:0)

当前的UML规范(请参阅https://www.omg.org/spec/UML/)具有答案。它具有一个描述状态机抽象语法的图。结合触发器的抽象语法,该规范提供了足够的信息来创建对象图。