UML 中的信号和异步操作有什么区别?

What's the difference between a signal and asynchronous operation in UML?

制作时序图我的工具允许同步操作、异步操作和信号的通信。

最后两个在程序流程上有什么区别?

信号 用于异步事件驱动的通信。这些信号是 class 描述符,描述了它们出现的属性。 类 自己并在接收部分指出它们能够处理哪些信号,然后在交互图中您可以使用这些信号。

在序列图中,两条生命线之间的通信是使用Messages:

实现的

The signature of a Message refers to either an Operation or a Signal. The name of the Message must be the same as the name of the referenced Operation or Signal.

时序图中操作和信号的图形符号是相同的;只是信号必然总是异步的。好消息是您可以从一个开始,然后决定切换到另一个,而无需从根本上改变您的序列图。

没有使用其中之一的规则。您可以使用一个或另一个对非常相似的设计进行建模。通常,您可能更喜欢信号而不是异步操作:

  • 如果您正在设计 event-driven 系统,
  • 如果您正在设计一个分布式系统,有许多中间人中继您的消息
  • 无论接收者如何,消息对发送者是否有意义。这种情况的一个症状是可能不相关的 classes(具有不同的操作)可能对接收和处理此类消息感兴趣。
  • 如果消息的内容很复杂:而不是具有许多参数的操作,而不是使用 class 参数的操作,其中 class 只是为了简化调用参数而创建的, 信号可以允许对消息的内容进行建模。