You are on page 1of 28

Sequence Diagrams

Software Design Methodology

Outline
Introduction
Basic notation
Alternating paths
Modularity

Modeling Process
Phase

Actions

Outcome
Business
documents

Initiation

Raising a business need

Requirements

Interviewing stakeholders, exploring the Organized


documentation
system environment

Specification

Analyze the engineering aspect of the


system, building system concepts

Formal
specification

Design

Define architecture, components, data


types, algorithms

Formal
Specification

Implementation

Program, build, unit-testing, integrate,


documentation

Testable
system

Testing &
Integration

Integrate all components, verification,


validation, installation, guidance

Testing results,
Working sys

Maintenance

Bug fixes, modifications, adaptation

System
versions
3

Why to Model Behavior?

How do we use the SMS Server interface? What


is the order of executing the operations?
sendMessage,

getStatus, Resend?
getStatus, sendMessage, checkForMessages?

When do we use resend?


4

Behavioral Modeling

Where are people coming from?


Where are they going?
How do they move from one space to the other?
5

Behavior Modeling
Sequence Diagrams

Activity Diagrams

Checkout
Manager

Order

Add to cart
message: create

In process
Check
availability

Order
message: change
status

State Diagrams

[problem]

supplied
[okay]

Inventory
Notify
User

Supply
Order

* We will not talk about


collaboration diagrams
6

Building a Sequence Diagrams


Sequence diagrams capture the use-case
behavior using the foundation of the
Use Case 1
Class C
classes.
Class A
Use Case 3

Use Case 2
Class D
Class B

therefore

Sequence =

Objects

messages
7

Sequence Diagrams

A simple sequence diagram:


objects

sd Product Buying

Diagram
Name

p : Product

: ShooppingCart

customer
display()

message

getPrice()

activation
(focus of
control)

addProduct (p)
checkout ()

Life line
8

Object Control
obj1 : Class1

obj2 : Class2

user

Object
Creation

operate()
do ()
create ()

: Class3

Return
Message
foo()

Messages to
self

Object
Destruction
Illustration
9

Corresponding Class Diagram

Notice that a dependency


exists whenever
messages are passed
between instances of the
class

Dependencies can
be overridden by
associations,
aggregations etc.

Illustration

10

Sequences and Use-Cases


p : Product

: ShooppingCart

customer
display()
getPrice()
addProduct (p)
checkout ()
create ()
: Order

Visible part

Hidden part
11

Full Message Attributes


[sequence-expression]
[return-value :=] [message-name] [(argument-list)]

C3.1: res := getLocation (fig)

sequence number

message name argument list

return value

12

Different Kinds of Messages


Synchronous Message

asynchronous Message

Return Message

13

Synchronous & Asynchronous Messages


Nested Flow
teller

: Order

Asynchronous Flow

: Article

getValue

appl

err handl

alarm

unknown
ring

price

setID

log

Example

Price need to be
finished, before teller
can do another operation
(getName)

Example

Ring is executed, while


the control flow is
returned to err handle
and appl
14

Outline
Introduction
Basic elements
Alternating paths
Modularity

15

Flow Constructs

If Loop
ElseRepeat
Jump

When we tell a scenario, which types of alternatives


do we need?
16

Options
msg : Message

: Database

Fragment

opt
[msg.status=confirmed]

Condition

archive(msg)

Do something...

Used for modeling simple


optional blocks.
Has one operand; no
"else" guard.
Example

17

Alternatives
msg : Message

: Database

: Admin

alt
[msg.status=confirmed]
archive(msg)

Alternative
Fragment group

Condition
[msg.status=error]
notify(msg.getID())

[else]
wait()

Else
condition
(optional)

Execution regions. At
most one will execute.

18

Loops
: OS

: Folder

: File

loop

Loop
Fragment

[for each Folder]


Display()

loop
[for each File]
Display()

Condition
Nested
Loop
Fragment
19

Breaks
: User

: User Manager

: Policy

isLooged = login(name,pass)

If the condition is met,


the break fragment is
executed, and the
reminder of the
sequence is ignored

break
[isLooged]
addBadLogin(name)

Do something
Do something

Handy in model
exception
handling

20

Examples of Guards
[for each Object]
[5]
[i=1..5]
[status = okay]
No guard means an infinite loop

21

Outline
Introduction
Basic elements
Alternating paths
Modularity

22

Modularity

We need ways to create modular scenarios


23

Referencing a diagram
: User

: User Manager

login(name,pass)

: Policy

ref
Login Handling(user,pass) :
bool

Reference
Gate

Do something
Do something

24

Referenced Diagram
Diagram
name

sd Login Handling
: User Manager

: UserAccount

loop

Input
message

login(name,pass)
[for each UserAccount]
cName -= getUseNamer()

opt

Output
message

[cName = name]
isInSystem(true)
true

false

25

Parallel Fragments
: Checkout
Handler

: User

: Shipping
Handler

: Transaction
Handler

provideDetails()

performCheckout()

par
Ship(address,products)

chargeMoney(CC,sum)

26

Critical Fragment

the region is treated atomically by the enclosing


fragment (i.e. parallel fragment)
No other operations can interfere while a critical
region is executed

27

Summary
9

Behavior Modeling
Sequence models interaction

Language
Objects + lifeline
Messages

Alternations
Loops
Alternatives

Modularity
Referencing
Parallel
28

You might also like