Be sure to visit the Trace Modeler website for updates and UML sequence diagram resources!
All communication in an interaction happens by message passing (i.e. message calls) between targets.
A message call consists of three elements :
Message calls are shown as arrows on the diagram, different arrows are used to distinguish the different kinds of messages. The message return is also shown with an arrow.
Trace Modeler lays out message arrows and activations automatically based on the positions of sender and receiver and the 'Message spacing', 'Activation width', 'Layout direction' and 'Found call length' properties of a diagram style.
Note that the message return arrow may be hidden depending on the 'Empty returns' diagram style setting. Such hidden arrows will be invisible when the diagram is exported to a graphics file or exported the clipboard, but they will be drawn very faintly on-screen to allow you to interact with them.
At any given time in a control flow, only one target can possibly send a message.
Trace Modeler will automatically determine a message's sender (i.e. the target where the message originates) based on the time at which the message is sent. This feature ensures that all interactions are well-formed.
If there is no flow of control at the time the message is sent, it will be displayed as a found message.
If a found message has no call or return label, its call and return arrows will be hidden.
A hidden call arrow will be invisible when the diagram is exported to a graphics file or exported to the clipboard, but is drawn very faintly on-screen. This allows you to recognize it as such and interact with it (e.g. select it, edit its text, etc.).
The message receiver is the target that receives the message.
A call usually has a label to indicate what message is being sent including any parameters that are passed along with it.
A return from a message can have a label to record the optional returned value. You might want to hide empty return arrows to reduce the clutter on your diagram.
Each message is of a certain kind, it is either a regular message call, a constructor message, a destructor message or a signal.
![]() |
A regular message call is used for normal communication between targets. |
![]() |
A constructor message creates its receiver. Targets that already exist at the start of the interaction are placed at the top of the diagram. Targets that are created during the interaction by a constructor call are automatically placed further down the diagram. |
![]() |
A destructor message destroys its receiver. There are other ways to indicate that a target is destroyed during an interaction. Only when a target's destruction is set to 'after destructor' do you have to use a destructor. |
![]() |
A signal is an asynchronous message that has no reply.
|
Naturally, when these kinds of messages are sent to the same target in an interaction there is an inherent ordering
Trace Modeler will automatically enforce the following constraints
The delivery of a message from its sender to its receiver can be characterized as follows :
Messages can be sent either synchronously or asynchronously and are shown with different arrowheads.
A synchronous message call blocks the sender until the receiver has finished handling the message.
An asynchronous message call lets the sender continue its work immediately without waiting for the receiver to finish with the message. In effect, this creates a new flow of control in the receiver. In general, showing two simultaneous flows of control on a single sequence diagram is difficult.
Messages can be transmitted either instantaneously or not.
Messages are often considered to be instantaneous, i.e. the time it takes to arrive at the receiver is negligible. For example, an in-process method call. Such messages are drawn as a horizontal arrow. To indicate that it takes a certain while before the receiver actually receives a message, a slanted arrow is used.