No history yet

Basic Sequence Elements

The Cast and the Stage

A sequence diagram tells a story over time. Like any story, it has characters and a timeline. The main characters are the objects or components involved in an interaction. We represent these with a box at the top and a vertical dashed line extending downwards. This entire structure, the box and the line, is called a lifeline because it shows the object's existence throughout the sequence.

Lifeline

noun

In a UML sequence diagram, a lifeline represents an individual participant (an object, component, or actor) in an interaction. It is depicted as a rectangle with a vertical dashed line that shows the object's existence over time.

The lifeline acts as a timeline for that specific object, with time flowing from top to bottom. When an object is actively doing something, like executing a method or processing data, we draw a thin rectangle over its lifeline. This is called an activation bar or execution specification. It clearly marks the period when the object is busy. If that object calls another, a new activation bar starts on the second object's lifeline.

Passing Messages

Objects communicate by sending messages to each other. In sequence diagrams, these messages are arrows between lifelines. The type of arrow tells you about the nature of the communication.

A synchronous message is a call where the sender waits for the receiver to finish its task and return a response. Think of it like making a phone call. You wait for the person on the other end to reply before you can proceed. We draw this with a solid line and a solid arrowhead. The sender's activation bar continues until it receives a response.

An asynchronous message is different. The sender sends the message and immediately continues with its own work, without waiting for a reply. It’s like sending a text message or an email; you send it and move on. This is shown with a solid line and an open arrowhead (like ->).

Synchronous: I'll wait. Asynchronous: Just letting you know.

Finally, when an operation started by a synchronous message is complete, a return message is sent back to the original caller. This signifies the end of that specific interaction. We draw this with a dashed line and an open arrowhead. In many modern tools, return messages are often omitted if the return is obvious, as it helps reduce clutter in complex diagrams. However, showing them explicitly can make the flow of control crystal clear, especially when learning.

A Simple Conversation

Let's trace a simple request-response cycle. Imagine you are logging into a website.

  1. You (:User) send a synchronous message login(username, password) to the :Application.
  2. The :Application lifeline receives the message and an activation bar begins. It then sends its own synchronous message, authenticate(credentials), to a :AuthService.
  3. The :AuthService becomes active. It checks the credentials against a :Database. This is another synchronous message: findUser(username).
  4. The :Database finds the user record and sends a return message with the user data back to :AuthService.
  5. The :AuthService now verifies the password. It sends a return message, authenticationSuccess, back to the :Application.
  6. Finally, the :Application sends a return message to you, the :User, indicating a successful login, perhaps by loading your dashboard.

Each step is a clear cause and effect, with synchronous calls creating a nested chain of execution. The diagram makes it easy to see who is talking to whom and who is waiting for whom at any given moment.

Time to check your understanding of these foundational components.

Quiz Questions 1/6

In a sequence diagram, what does a lifeline represent?

Quiz Questions 2/6

Which type of message is represented by a solid line with a solid, filled arrowhead?

By mastering these simple building blocks, you can clearly map out the logic of almost any basic interaction within a system.