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.
To learn how to execute this sequence diagram to simulate the model, see Simulate Sequence Diagrams for Traffic Light Example.
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:
The traffic signal cycles from red to green to yellow.
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.
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.
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 sends information from one lifeline to another. Messages are specified with a message label.
Navigate to Modeling > Sequence Diagram to open sequence diagrams in the Architecture Views Gallery.
To create a new sequence diagram, click New > Sequence Diagram.
A new sequence diagram called
SequenceDiagram1is created in the View Browser, and the Sequence Diagram tab becomes active. Under Sequence Diagram Properties, rename the sequence diagram
Select Component > Add Lifeline to add a lifeline. A new lifeline with no name is created and is indicated by a dotted line.
Click the down arrow and select
sourcelifeline detects when the pedestrian presses the crossing button. Add four more lifelines using the down arrow named
pollerlifeline checks if the pedestrian crossing button has been pressed,
switchprocesses the signal,
controllerdetermines which color the pedestrian lamp and traffic light should display, and
lampControllerchanges the traffic light colors.
Draw a line from the
sourcelifeline to the
pollerlifeline. Start to type
swin the To box, which will automatically fill in as you type. Once the text has filled in, select
swport are connected in the model, a message is created from the
switchoutport to the
swport in the sequence diagram.
A message label has a trigger and a constraint. A trigger determines whether the message occurs. 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.
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.
The message will be triggered when the
swsignal rises from below
1to a value of
1or above. The constraint in square brackets indicates that if
swis not equal to
1, the message is invalid.
Only destination elements are supported for message labels. In this example,
switchoutis a source element and cannot be included.
The signal name
swis valid input data on the port for a Stateflow chart behavior. The
pollercomponent with state chart behavior has
swin the Symbols pane.
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
1, the pedestrian crossing button has been pressed, and a message to the
pollerlifeline is recognized.
In addition to signal events, sequence diagrams also support message events. Create a message by drawing a line from the
pollerlifeline to the
switchlifeline. Start typing
switchEventin the To box until
switchEventis available to select.
Since there is an existing connection in the architecture model, a message is created from source port
Click the message and double-click the empty message label that appears. Enter this condition representing the port and constraint.
When the message
switchEventis 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 it execute or interact.
A fragment is used to model complex sequences, such as alternatives, in a sequence 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 input signal of any lifeline.
To access the menu of fragments:
Click and drag to select two messages.
Pause on the ellipsis (...) that appears to access the action bar.
A list of fragments appears:
Weak sequencing (
Strict sequencing (
For more information, see Author Sequence Diagram Fragments.
Select the Alt Fragment fragment.
The Alt Fragment fragment is added to the sequence diagram with a single operand that contains the selected messages.
Select the fragment to enter an operand condition. Choose a fully qualified name for input data and use a constraint condition relation.
This constraint is a precondition that determines when the operand is active. This constraint specifies that the
inhibitflag is set to
0. Thus, pedestrian crossing is allowed at this intersection using a pedestrian lamp.
The messages inside an operand can only be executed if the constraint condition is true.
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
elseifcondition for which the message will be executed.
This constraint represents when the
inhibitflag 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.
For the first operand in the Alt Fragment fragment, since the
inhibitflag is set to
0, the first message to the
controllerlifeline is recognized when the
pedRequestmessage is valid. Then, when the
switchPedmessage value is
lampControllercomponent behavior allows pedestrians to cross.
For the second operand in the Alt Fragment fragment, since the
inhibitflag is set to
controller. The message
switchPedwith a value of
2goes directly to the
lampcontrollerwhich does not affect the traffic signal. Pedestrian crossing is not specifically supported in this traffic intersection.