我正在学习UML序列图,并遇到了方法调用。我注意到在统一建模语言(UML)中有两种方法可以调用方法行为,分别是信号和消息,但我不知道如何指定哪个以及基于什么?我的意思是什么时候使用消息,什么时候使用信号,因为我认为这是一个非常重要的设计决策,应该仔细选择。
我正在学习UML序列图,并遇到了方法调用。我注意到在统一建模语言(UML)中有两种方法可以调用方法行为,分别是信号和消息,但我不知道如何指定哪个以及基于什么?我的意思是什么时候使用消息,什么时候使用信号,因为我认为这是一个非常重要的设计决策,应该仔细选择。
Kirill Fakhroutdinov的页面http://www.uml-diagrams.org/sequence-diagrams.html解释了消息的含义
按操作类型分类的消息
除了消息的同步/异步性质外,它还指出了在活动图中使用的“发送信号操作”
异步信号
..异步信号消息对应于异步发送信号操作..
对我来说,在建模消息与信号时一个重要的区别是单播/多播(广播)语义。信号可以从一个地方发送(带有所有必要的参数打包),并在多个地方接收。
序列图允许使用“找到消息”和“丢失消息”的概念对多播行为进行建模。
(我不是100%确定,但我相信我很接近)
编辑:添加更加正式的解释支持我的论点,即信号与单播/多播(广播)有关,以回应@Aleks的评论。
"统一建模语言参考手册"(James Rumbaugh,Ivar Jacobson,Grady Booch著,Addison Wesley Longman,Inc.版权所有©1999年)解释了消息和信号之间的区别,例如使用以下词汇:
..消息是从一个对象(发送者)向一个或多个其他对象(接收者)发送信号,或者是另一个对象(发送者或调用者)对一个对象(接收者)进行操作的调用。消息的实现可以采取各种形式...
.. 信号具有显式参数列表。它由一个对象明确地发送到另一个对象或一组对象。事件的一般广播可以被视为向所有对象集发送信号,尽管..
.. 信号是对象之间可以异步通信的显式手段。要执行同步通信,必须使用两个异步信号,在通信的每个方向上使用一个信号..
编辑:添加企业架构可视化的三种不同消息表示法
请注意,由于信号的异步和多播特性(如上所述),相应的表示法不包括“返回值”部分。