Main Content

Author Sequence Diagram for Traffic Light Example

You can create, edit, and simulate sequence diagrams in System Composer™ by accessing the Architecture Views Gallery. You will learn about the basic terminology and functions of a sequence diagram in two stages.

  • Add lifelines and messages with message labels including triggers and constraints to represent interactions.

  • Include fragments and operands with constraints to further specify the behavior of the interaction.

A lifeline in a sequence diagram represents a component in the architecture. A message represents a communication across a path between the source lifeline and destination lifeline. The path for a message must consist of at least two ports and one connector from the architecture model. With nested messages, the path is more complex due to the hierarchy to be navigated.

For a roadmap of the sequence diagram topics, see Describe System Behavior Using Sequence Diagrams.

This figure shows a traffic light architecture model and a corresponding sequence diagram that describes one operative scenario. The traffic light model describes a cycling traffic light, the pedestrian crossing button being pressed, and the lights changing so pedestrians can cross.

An architectural model and a sequence diagram with a lifeline, operand, message, and fragment.

Note

This example uses Stateflow® blocks. If you do not have a Stateflow license, you can open and simulate the model but can only make basic changes, such as modifying block parameters.

Traffic Light Example

This traffic light example contains sequence diagrams to describe pedestrians crossing an intersection. The model describes these steps:

  1. The traffic signal cycles from red to yellow to green.

  2. When the pedestrian crossing button is pressed, if the traffic signal is green, the traffic signal transitions from yellow to red for a limited time.

  3. The pedestrians cross while the walk signal is active.

Open the System Composer model that contains the sequence diagrams.

model = systemcomposer.openModel('TLExample');

Open the Architecture Views Gallery to view the sequence diagrams.

openViews(model)

You can execute the model after setting these variables.

createWorkSpaceVar("SwitchInputs",[0 11 18],[-1 1 -1]);
createWorkSpaceVar("inhibitFlag",1,0);

Add Lifelines and Messages

A lifeline is represented by a head and a timeline that proceeds down a vertical dotted line.

The head of a lifeline represents a component in an architecture model.

A message includes a send event and a receive event. You can draw messages from one lifeline to another on the vertical dotted lines in a sequence diagram. Messages are clarified with a message label.

A message label has a trigger and a constraint. A trigger determines whether the message occurs. A constraint determines whether the message is valid.

  1. Navigate to Modeling > Sequence Diagram to open sequence diagrams in the Architecture Views Gallery.

  2. To create a new sequence diagram, click New > Sequence Diagram.

  3. A new sequence diagram called SequenceDiagram1 is created in the View Browser, and the Sequence Diagram tab becomes active. Under Element Properties, rename the sequence diagram Inhibit.

  4. Select Component > Add Lifeline to add a lifeline. A new lifeline with no name is created and is indicated by a dotted line.

    A new lifeline being created in a sequence diagram.

  5. Click the down arrow and select source. The source lifeline detects when the pedestrian presses the crossing button. Add four more lifelines using the down arrow named poller, switch, controller, and lampController. The poller lifeline checks if the pedestrian crossing button has been pressed, switch processes the signal, controller determines which color the pedestrian lamp and traffic light should display, and lampController changes the traffic light colors.

    A sequence diagram with five lifelines.

  6. Draw a line from the source lifeline to the poller lifeline. Start to type sw in the To box, which will automatically fill in as you type. Once the text has filled in, select sw.

    A sequence diagram with a message between the source and poller lifelines.

    Since the switchout port and sw port are connected in the model, a message is created from the switchout port to the sw port in the sequence diagram.

  7. A message label has a trigger and a constraint. A trigger determines whether the message occurs, and a constraint determines whether the message is valid. For signal messages, the trigger is called an edge.

    You can enter a condition that specifies a triggering edge with a direction and an expression. You can also optionally add a constraint in square brackets to the message. Constraints consist of a MATLAB® Boolean expression acting on the inputs of the destination lifeline.

    direction(signalPort(+|-)positiveReal)[booleanExpression]

    There are three directions for edges:

    • crossing — The edge expression is either rising or falling past zero.

    • rising — The edge expression is rising from strictly below zero to a value equal to or greater than zero.

    • falling — The edge expression is falling from strictly above zero to a value equal to or less than zero.

    Click on the message and double-click on the empty message label that appears. Enter this condition and constraint.

    rising(sw-1)[sw==1]

    The message will be triggered when the sw signal rises from below 1 to a value of 1 or above. The constraint in square brackets indicates that if sw is not equal to 1, the message is invalid.

    Note

    Only destination elements are supported for message labels. In this example, switchout is a source element and cannot be included.

    A sequence diagram with a message condition between the source and poller lifelines.

    The signal name sw is valid input data on the port for a Stateflow chart behavior. The poller component with state chart behavior has sw in the Symbols pane.

    State chart behavior with the sw value displayed in the Symbols pane.

    Note

    The signal name can also be a data element on a data interface on a port. Enter Tab to autocomplete the port and data element names. For more information, see Represent System Interaction Using Sequence Diagrams.

    In this example, when the sw signal becomes 1, the pedestrian crossing button has been pressed, and a message to the poller lifeline is recognized.

  8. In addition to signal events, sequence diagrams also support message events. Create a message by drawing a line from the poller lifeline to the switch lifeline. Start typing switchEvent in the To box until switchEvent is available to select.

    A selected message event switch event for the message ends of the message between the poller and switch lifelines.

    Since there is an existing connection in the architecture model, a message is created from source port switchEvent.

  9. Click the message and double-click the empty message label that appears. Enter this condition representing the port and constraint.

    switchEvent[switchEvent==1]

    Sequence diagram with a message constraint and a condition for a message event switch event.

    When the message switchEvent is received and its value is 1, the message has occurred and is valid.

Add Fragments and Operands

A fragment indicates how a group of messages within are executed or interact in a sequence diagram.

A fragment is used to model complex sequences, such as alternatives, in a message-based behavior diagram.

An operand is a region in a fragment. Fragments have one or more operands depending on the kind of fragment. Operands can contain messages and additional fragments.

Each operand can include a constraint to specify whether the messages inside the operand execute. You can express the precondition of an operand as a MATLAB Boolean expression using the inputs of any lifeline.

To access the menu of fragments:

  1. Click and drag to select two messages.

    Two messages are selected with blue highlighting in a sequence diagram.

  2. Pause on the ellipsis (...) that appears to access the action bar.

    An ellipsis displays in the lower right part of the sequence diagram.

  3. A list of fragments appears:

    • Alternative (Alt) fragment

    • Optional (Opt) fragment

    • Loop (Loop) fragment

    • Weak sequencing (Seq) fragment

    • Strict sequencing (Strict) fragment

    • Parallel (Par) fragment

    For more information, see Implement Sequence Diagram Fragments.

    Select the Alt Fragment fragment.

    The Alt Fragment is selected in a list of composite fragments.

  4. The Alt Fragment fragment is added to the sequence diagram with a single operand that contains the selected messages.

    The alt fragment appears in the sequence diagram.

  5. Select the fragment to enter an operand condition. Choose a fully qualified name for input data and use a constraint condition relation.

    switch/inhibit==0

    This constraint is a precondition that determines when the operand is active. This constraint specifies that the inhibit flag is set to 0. Thus, pedestrian crossing is allowed at this intersection using a pedestrian lamp.

    The Alt Fragment displays an operand condition.

    The messages inside an operand can only be executed if the constraint condition is true.

  6. Highlight the first operand under the Alt Fragment fragment and select from the toolstrip Fragment > Add Operand > Insert After. A second operand is added.

    Add a constraint condition relation to the second operand. The second operand in an Alt Fragment fragment represents an elseif condition for which the message will be executed.

    switch/inhibit==1

    This constraint represents when the inhibit flag is set to 1. Thus, pedestrian crossing is not controlled by a walk signal on that intersection.

    Create a message with a message label inside the second operand.

    The second Alt Fragment operand displays a constraint condition.

    For the first operand in the Alt Fragment fragment, since the inhibit flag is set to 0, the first message to the controller lifeline is recognized when the pedRequest message is valid. Then, when the switchPed message value is 1, the lampController component behavior allows pedestrians to cross.

    For the second operand in the Alt Fragment fragment, since the inhibit flag is set to 1, the switch bypasses the controller. The message switchPed with a value of 2 goes directly to the lampcontroller which does not affect the traffic signal. Pedestrian crossing is not specifically supported in this traffic intersection.

Related Topics