0

我正在教授一门使用 UML 作为系统建模工具的课程。在我们教授序列图的课程中,在准备课程时,我发现“执行发生”的语义没有明确的定义。例如。如果一个对象进行自我调用“等待输入”并且此调用在执行事件中,该对象可以接收消息吗?显然我认为是的,因为它正在等待消息。

但这反驳了执行事件意味着对象当前“忙碌”或“活动”的想法。

任何帮助/想法?我的结论是离开主题并告诉学生不要理会处决事件。有更好的想法吗?

4

1 回答 1

2

总的来说,请注意,序列图没有精确的语义(和 AFAIK,它们不包含在新的基本 UML 语义中),因此它们或多或少地“对解释开放”,以满足您特定的草图绘制需求。

一般来说,序列图是什么意思?它是一个通用规范(“这是系统将始终表现的方式”,因此没有其他允许的行为)?或者它是一个存在规范(“这是一个系统应该支持的场景”,因此一个不正确的系统)?或者它仅仅是一个描述(“这可能会发生”)。没有答案,因为 SD 没有这样的精确语义。

(当然,确实存在一些形式化,但这取决于你想教什么。)

因此,我不认为这个问题有一个独特的答案:

“如果一个对象进行自我调用“等待输入”并且此调用在执行事件中,该对象可以接收消息吗?

那说:

根据本教程,执行发生(EO)表示:

控制焦点的执行发生或激活

还请查看下一个关于自我消息传递的图表,其中您有嵌套的执行事件。

此外,这里简单地说EO是:

动作或行为开始或结束的时刻

最后,EO 参考执行规范,这些规范代表:

参与者生命周期中的一个时期,它正在 (a) 在生命线内执行一个行为或动作单元,(b) 向另一个参与者发送信号或 (c) 等待来自另一个参与者的回复消息。

我希望它有帮助:)

于 2011-11-30T18:47:53.290 回答