2

Our lecture provides us students a quiz to revise the material learnt of the last study session.

The answer to the following questions was stated as "Yes":

"The receiver of a message does not have to be known, when the message was sent."

This really confused me, cause thus far I expected a sequence diagram to visualize the flow of data in a system and data is exchanged between actors/senders. It doesn't seem to make sense for me to send data to a seemingly arbitrary target and hope that by magic its receiver can work with the data and everything runs smoothly.

Does someone have a concrete example and illustration of such a case? I am interested in first how such a sequence diagram looks like and secondly, what a real world example would be.

I also believe the answer to be correct, cause the quiz hasn't changed since the past 5 years or so.

2

Edit: Unknown receiver (for updated wording "the receiver doesn't have to be known")

The sequence diagram may use lifelines for known or unknown receivers. Unknown receivers are unnamed objects of a given class. This article explains the graphical notation. The ":class" notation is quite common and googling for sequence diagrams will return you plenty of examples.

Another case where the receiver is unknown (at least according to my own understanding), would be when you send a create message that instantiates a new object (that was not known at the moment the message was initiated). Example here.

Message timing (for your initial wording "the receiver doesn't have to know when")

For asynchronous messages, the principle is to avoid that senders have to wait for feedback and that receivers have to act immediately.

So yes, the receiver doesn't need to know when the message was sent: it's just that he has to act on the message (immediately for synchronous messages, or asap for asynchronous).

The viewpoint of the receiver is different from your point of view of human reading the diagram : the diagram as a whole should give you some idea about sequence and kind of interactions (to see if there could be delays or not).

Here you can find some real life message scenario for Apache-Sandesha with some asynchronous messages. By the way, you can also show on the diagram that you expect delays with non-horizontal arrows (see example in this SO question).

  • How does this diagram look like? What would be a real world example? – Imago Jul 6 '16 at 19:59
  • @Imago I've edited with links to real life examples in the last para. – Christophe Jul 6 '16 at 20:17
  • I corrected one typo in the quiz question in case someone ignored title and rest of the post. Nonetheless, thank you for replying to my post. – Imago Jul 6 '16 at 20:21
  • 1
    @Imago Thanks for pointing it out, I was just reading again our question. So it's no longer about timing but about receiver ! I'll edit – Christophe Jul 6 '16 at 20:23
  • 1
    Wow, thank you :), I just browsed through the links and it looks good thus far. I also believe this is the first time one has actually been nice to me on the internet. This is incredible. – Imago Jul 6 '16 at 20:42
1

There is a specific notation for sending a message to a receiver whose identity is unknown. It is called a Lost Message. It is drawn as a normal message but instead of ending at a lifeline, it ends in a solid ball.

This is interpreted as a message to some receiver outside the scope of the diagram, whose identity is unknown or not relevant.

There is a similar notation for a Found Message, from a ball to a lifeline, that indicates a message from a sender whose identity is unknown or not relevant.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.