【问题标题】:UML State Machine: Class diagram of a state with Transitions, Triggers and EventsUML 状态机:具有转换、触发器和事件的状态类图
【发布时间】:2012-09-18 11:30:39
【问题描述】:

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

event(event_parameters) [guard_condition] / doStuff()

在我的 BSc 论文项目中,我正在使用 UML StateMachines(行为,无协议 SM)。除了状态机图表示之外,我还需要对象图。

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

我已经搜索了相关问题(this one 很接近,但没有提供我正在寻找的确切信息),并阅读了 UML 上层结构的相关部分,但仍然无法弄清楚出来吧。

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

包含状态 S1 的状态机图

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

【问题讨论】:

  • 我无法直接发布图片,因为我没有 10 个代表。然而,因此将它们更改为链接。
  • @David 感谢您将链接改回图片

标签: uml transitions class-diagram object-diagram


【解决方案1】:

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

【讨论】:

  • 我想你误解了他的问题(或者我做了^^)。问题是如何在对象图中表示图的抽象语法并且是完全有效的。
  • @Christian 是正确的。我假设,只要 StateMachine 对象存在(或者包含 S1、S2 和 S3 的区域),所有四个转换也都存在,并且 - 因此- 可以在对象图中表示。不过,我不确定 SignalEvent 实例的生命周期。
【解决方案2】:

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

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

如果您不关心 UML2 合规性,而只是想要与上述图表类似的东西,则此解决方案会导致对象图比必要的更复杂。

【讨论】:

  • 我会尝试并发布结果,谢谢。实际上,UML2 合规性非常重要
  • Topcased 极大地帮助了我,引导我朝着正确的方向前进,并提供了一种验证方式。结合 UML 上层结构和 Eclipse 社区论坛上的两个帖子,我能够弄清楚这一点。毕竟我的对象图似乎是正确的。我稍后会更新问题,目前正忙于写我的论文。
【解决方案3】:

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

【讨论】:

  • 很遗憾,由于版权原因,我无法复制抽象语法图像。如果对任何人有帮助,我稍后可能会添加一个对象图。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-03-12
  • 1970-01-01
  • 2015-04-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多