2

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

事件(event_parameters) [guard_condition] / doStuff()

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

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

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

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

包含状态 S1 的状态机图

包含状态 S1 的状态机图

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

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

4

3 回答 3

1

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

于 2012-09-27T08:29:51.583 回答
1

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

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

如果您不关心 UML2 合规性并且只想要类似于您上面的图表的东西,那么这个解决方案将导致比必要的更复杂的对象图表。

于 2012-09-27T08:32:01.150 回答
0

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

于 2018-11-16T12:20:46.533 回答