lecture 4 - cse.chalmers.se...uml sequence diagrams – write contracts for system operations in...

99
Datavetenskap Rogardt Heldal Use Cases - 1 - Lecture 4 Use cases Rogardt Heldal

Upload: others

Post on 16-Jul-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Lecture 4 - cse.chalmers.se...UML sequence diagrams – Write contracts for system operations in natural language . Datavetenskap ... System returns that the student has been registered

Datavetenskap

Rogardt Heldal Use Cases - 1 -

Lecture 4

Use cases

Rogardt Heldal

Page 2: Lecture 4 - cse.chalmers.se...UML sequence diagrams – Write contracts for system operations in natural language . Datavetenskap ... System returns that the student has been registered

Datavetenskap

Rogardt Heldal Use Cases - 2 -

Objectives •  To be able to

–  describe the behaviour of a system using use cases

–  Show interaction between actors, systems using UML sequence diagrams

– Write contracts for system operations in natural language

Page 3: Lecture 4 - cse.chalmers.se...UML sequence diagrams – Write contracts for system operations in natural language . Datavetenskap ... System returns that the student has been registered

Datavetenskap

Rogardt Heldal Use Cases - 3 -

CourseADM

System courseADM:

:Student Register on course

Page 4: Lecture 4 - cse.chalmers.se...UML sequence diagrams – Write contracts for system operations in natural language . Datavetenskap ... System returns that the student has been registered

Datavetenskap

Rogardt Heldal Use Cases - 4 -

Problem: Brief Use Cases •  Write a brief use case for “register for course”.

– Use Case Name: ? – Actor Name: ? – Goal: ? – Description: ?

Page 5: Lecture 4 - cse.chalmers.se...UML sequence diagrams – Write contracts for system operations in natural language . Datavetenskap ... System returns that the student has been registered

Datavetenskap

Rogardt Heldal Use Cases - 5 -

Brief Use Cases •  A short description of the use case,

for example: –  Name: Register on course –  Actor: Student –  Goal: Register on a particular course –  Description: Student will be registered

on a course if (s)he has all the require courses for it and the course has enough places.

Page 6: Lecture 4 - cse.chalmers.se...UML sequence diagrams – Write contracts for system operations in natural language . Datavetenskap ... System returns that the student has been registered

Datavetenskap

Rogardt Heldal Use Cases - 6 -

Complete Use Case •  Template

–  Use Case Name –  Use Case Goal –  Actor Names –  Main Flow of Event (sequence of action steps) –  Alternative Flows (sequence of action steps) –  Pre-Condition (if any) –  Post-Condition

Page 7: Lecture 4 - cse.chalmers.se...UML sequence diagrams – Write contracts for system operations in natural language . Datavetenskap ... System returns that the student has been registered

Datavetenskap

Rogardt Heldal Use Cases - 7 -

Domain Model (Meta-Model)

Flow

alternative *

Use Case

1

condition

Name Goal

pre

post

main 1

* * *

* *

Page 8: Lecture 4 - cse.chalmers.se...UML sequence diagrams – Write contracts for system operations in natural language . Datavetenskap ... System returns that the student has been registered

Datavetenskap

Rogardt Heldal Use Cases - 8 -

Action Block parts

Event Flow

action block1 action block2 …

User input System responsibility System response

action stepn+1 ... action stepm

Then one can have “assume” action steps when needed and a “choice” steps after return if necessary.

action step1 ... action stepn action stepm+1 ... action stepq

Page 9: Lecture 4 - cse.chalmers.se...UML sequence diagrams – Write contracts for system operations in natural language . Datavetenskap ... System returns that the student has been registered

Datavetenskap

Rogardt Heldal Use Cases - 9 -

Example: Flow of Events Main flow of “Register student on a course”: 1.  Student gives login name and password for identification 2.  Assume that login name and password are correct 3.  Student registers for a course 4.  Assume that the course exist 5.  Assume that the student has enough course points 6.  Assume that the course has enough places 7.  System registers the student on the course 8.  System returns that the student has been registered on the

course

Page 10: Lecture 4 - cse.chalmers.se...UML sequence diagrams – Write contracts for system operations in natural language . Datavetenskap ... System returns that the student has been registered

Datavetenskap

Rogardt Heldal Use Cases - 10 -

Activity Diagram

Enter login Enter password

Enter course name

Valid password and same login less than 3 times Same login 3 times,

but not correct password or not valid password

Course not found ...

Course adm

Cancel

Course found

Correct password and login

Page 11: Lecture 4 - cse.chalmers.se...UML sequence diagrams – Write contracts for system operations in natural language . Datavetenskap ... System returns that the student has been registered

Datavetenskap

Rogardt Heldal Use Cases - 11 -

Alternative 2a Assume login is valid name and password is not correct and the same

login name has been used less than four times 1. Ask for a new login name and password 2. System remember how many times the login name has been used with wrong password. 3. Go to 2 2-8 Assume login name is valid and password is not correct and the same

login name has been used four times 1. Inform that the student has used more than four tries with the same login 2. Make the login name not valid 2-8 Assume login name not valid 1. Inform that it is not possible to login

Page 12: Lecture 4 - cse.chalmers.se...UML sequence diagrams – Write contracts for system operations in natural language . Datavetenskap ... System returns that the student has been registered

Datavetenskap

Rogardt Heldal Use Cases - 12 -

Numbering of Alternative Flows 1.  … 2.  … 3.  … 4.  …

3a – instead of point 3 in the main flow do this … 3b - instead of point 3 in the main flow do this … 2-3a – instead of point 2 to 3 in the main flow do this … 2-4a – instead of point 2 to 4 in the main flow do this … 2-4b – instead of point 2 to 4 in the main flow do this …

* Whenever

Page 13: Lecture 4 - cse.chalmers.se...UML sequence diagrams – Write contracts for system operations in natural language . Datavetenskap ... System returns that the student has been registered

Datavetenskap

Rogardt Heldal Use Cases - 13 -

When to use the Pattern •  Complete use cases

–  Contain all the important parts, in particular main and alternative flows.

•  Essential style –  Does not contain implementation issues –  No interface details –  …

•  System use cases (not business use cases), for example:

Withdraw Money

ATM:System

Customer

Page 14: Lecture 4 - cse.chalmers.se...UML sequence diagrams – Write contracts for system operations in natural language . Datavetenskap ... System returns that the student has been registered

Datavetenskap

Rogardt Heldal Use Cases - 14 -

Not good style

Book taxi

Taxi:System

Customer Operator

Not the way of doing it: 1) Customer calls operator 2) Customer give bla bla to operator 3) Operator enter info bla bla into the system 4) Operator gives info bla bla back to customer

Only include interaction between actor and system!

Page 15: Lecture 4 - cse.chalmers.se...UML sequence diagrams – Write contracts for system operations in natural language . Datavetenskap ... System returns that the student has been registered

Datavetenskap

Rogardt Heldal Use Cases - 15 -

Complete Use Case •  Template

–  Use Case Name –  Use Case Goal –  Actor Names –  Main Flow of Event (sequence of action steps) –  Alternative Flows (sequence of action steps) –  Pre-Condition (if any) –  Post-Condition

Page 16: Lecture 4 - cse.chalmers.se...UML sequence diagrams – Write contracts for system operations in natural language . Datavetenskap ... System returns that the student has been registered

Datavetenskap

Rogardt Heldal Use Cases - 16 -

Pre- and Post-condition •  Pre-condition is what holds, whenever the use case

takes place, before the action steps happen. –  For example “Withdraw Money”:

•  Customer has account •  Customer has a bank card •  …

–  But: Usually trivial stuff is left out •  Post-condition is what holds after the use case has

taken place. –  Examples later

•  Beware: Conditions and action steps have to fit together!

Page 17: Lecture 4 - cse.chalmers.se...UML sequence diagrams – Write contracts for system operations in natural language . Datavetenskap ... System returns that the student has been registered

Datavetenskap

Rogardt Heldal Use Cases - 17 -

Problems with pre-conditions •  Let us consider having “the customer entered the

correct PIN” as a pre-condition: –  This means that we will not specify what happens if the

customer enters a wrong PIN. –  Making the use case very weak!

•  One should avoid pre-conditions as much as possible in use cases, because the usual understanding of a pre-condition is that the post-condition need only be guaranteed if the pre-condition is met before the use case.

Page 18: Lecture 4 - cse.chalmers.se...UML sequence diagrams – Write contracts for system operations in natural language . Datavetenskap ... System returns that the student has been registered

Datavetenskap

Rogardt Heldal Use Cases - 18 -

Examples for post-conditions •  Post-condition for “Withdrawal”

–  If the customer entered the PIN on the Card, and the customer's balance was greater or equal to the requested amount, then the customer got the requested amount and the amount was deducted from the balance.

–  If the customer entered the wrong PIN three times, the card was retained.

–  If the customer requested too much money, the card was returned to the customer.

Page 19: Lecture 4 - cse.chalmers.se...UML sequence diagrams – Write contracts for system operations in natural language . Datavetenskap ... System returns that the student has been registered

Datavetenskap

Rogardt Heldal Use Cases - 19 -

Problem •  Write a post-condition for “register for course”?

Page 20: Lecture 4 - cse.chalmers.se...UML sequence diagrams – Write contracts for system operations in natural language . Datavetenskap ... System returns that the student has been registered

Datavetenskap

Rogardt Heldal Use Cases - 20 -

Primary Actor •  A use case is always started by some actor : most

often the primary actor •  There are also other types of actors:

–  Secondary actor –  Helper actor –  Time

Page 21: Lecture 4 - cse.chalmers.se...UML sequence diagrams – Write contracts for system operations in natural language . Datavetenskap ... System returns that the student has been registered

Datavetenskap

Rogardt Heldal Use Cases - 21 -

Requirements on Use Cases •  Shall be a complete process •  Shall result in a given goal

Page 22: Lecture 4 - cse.chalmers.se...UML sequence diagrams – Write contracts for system operations in natural language . Datavetenskap ... System returns that the student has been registered

Datavetenskap

Rogardt Heldal Use Cases - 22 -

External and Internal View

Page 23: Lecture 4 - cse.chalmers.se...UML sequence diagrams – Write contracts for system operations in natural language . Datavetenskap ... System returns that the student has been registered

Datavetenskap

Rogardt Heldal Use Cases - 23 -

External View

identify himself

present choices choose

dispense money take money

User System

Can be viewed as a role play between user and system.

Page 24: Lecture 4 - cse.chalmers.se...UML sequence diagrams – Write contracts for system operations in natural language . Datavetenskap ... System returns that the student has been registered

Datavetenskap

Rogardt Heldal Use Cases - 24 -

Example: Internal View

identify himself

present choices

choose dispense money

take money

User System

verify identity

Page 25: Lecture 4 - cse.chalmers.se...UML sequence diagrams – Write contracts for system operations in natural language . Datavetenskap ... System returns that the student has been registered

Datavetenskap

Rogardt Heldal Use Cases - 25 -

Example: Internal View

1. User identify himself 2. System verify identity 3. System present choices 4. User choose 5. System dispense money 6. User take money

Page 26: Lecture 4 - cse.chalmers.se...UML sequence diagrams – Write contracts for system operations in natural language . Datavetenskap ... System returns that the student has been registered

Datavetenskap

Rogardt Heldal Use Cases - 26 -

Action Block Details •  Two types:

–  Black box •  User intention •  System response

–  White box •  User intention •  System responsibility This is extra •  System response

•  In the white box case system response can often be left out if it is clear from the system responsibility how the system will respond.

Page 27: Lecture 4 - cse.chalmers.se...UML sequence diagrams – Write contracts for system operations in natural language . Datavetenskap ... System returns that the student has been registered

Datavetenskap

Rogardt Heldal Use Cases - 27 -

Abstraction level

Page 28: Lecture 4 - cse.chalmers.se...UML sequence diagrams – Write contracts for system operations in natural language . Datavetenskap ... System returns that the student has been registered

Datavetenskap

Rogardt Heldal Use Cases - 28 -

Real Use Cases •  Contain design details. •  Different aspects:

–  Internal view of the system –  Also gives information about user interface (i.e., not

essential use case) –  Consider also technology issues (like databases)

Page 29: Lecture 4 - cse.chalmers.se...UML sequence diagrams – Write contracts for system operations in natural language . Datavetenskap ... System returns that the student has been registered

Datavetenskap

Rogardt Heldal Use Cases - 29 -

Real Use Case? •  Is this a real use case?

–  User authenticates himself by PIN –  System validates that PIN is correct

•  Less abstract than –  Customer identifies himself –  System verifies identity

•  But the first fragment makes more sense for people working in the banking industry.

•  The second fragment is often too general, can be used in several contexts: –  ATM –  Library system –  Student Registration system

Page 30: Lecture 4 - cse.chalmers.se...UML sequence diagrams – Write contracts for system operations in natural language . Datavetenskap ... System returns that the student has been registered

Datavetenskap

Rogardt Heldal Use Cases - 30 -

Which abstraction level to use? •  During analysis, one should write essential

use cases. •  Later, during design, essential use cases can

be refined to real use cases. •  But we believe that there are better ways

of defining the design than using real use cases

Page 31: Lecture 4 - cse.chalmers.se...UML sequence diagrams – Write contracts for system operations in natural language . Datavetenskap ... System returns that the student has been registered

Datavetenskap

Rogardt Heldal Use Cases - 31 -

Process for Brief Use Cases •  Find actors •  Consider the goals of each actor •  Write brief use cases, based on the goals of the

use case: –  Give a name of the use case –  Give the actor(s) –  Write the goal as one sentence –  Write a brief description

Page 32: Lecture 4 - cse.chalmers.se...UML sequence diagrams – Write contracts for system operations in natural language . Datavetenskap ... System returns that the student has been registered

Datavetenskap

Rogardt Heldal Use Cases - 32 -

Prioritize Use Cases •  Based on the importance of a brief use case, a

complete use case should be written. •  For ordering use cases take into consideration:

–  How important is the use case for the business? –  Does the use case have important consequences for the

system (technological, architectural)? These use cases should come early.

Page 33: Lecture 4 - cse.chalmers.se...UML sequence diagrams – Write contracts for system operations in natural language . Datavetenskap ... System returns that the student has been registered

Datavetenskap

Rogardt Heldal Use Cases - 33 -

Process for Complete Use Case •  Based on a brief use case

–  Write the main flow of control using –  Write the alternative –  Write pre-conditions (if any) –  Write the post-conditions

Page 34: Lecture 4 - cse.chalmers.se...UML sequence diagrams – Write contracts for system operations in natural language . Datavetenskap ... System returns that the student has been registered

Datavetenskap

Rogardt Heldal Use Cases - 34 -

Advance topics

Page 35: Lecture 4 - cse.chalmers.se...UML sequence diagrams – Write contracts for system operations in natural language . Datavetenskap ... System returns that the student has been registered

Datavetenskap

Rogardt Heldal Use Cases - 35 -

”Include” •  Often used to catch common action steps

•  Important: one has to leave and come back to the main flow at the same place.

•  In the flow which is included add action step: •  include (the name of the included use case)

Main flow

Included flow

Page 36: Lecture 4 - cse.chalmers.se...UML sequence diagrams – Write contracts for system operations in natural language . Datavetenskap ... System returns that the student has been registered

Datavetenskap

Rogardt Heldal Use Cases - 36 -

UML-syntax •  Use cases A and B includes C:

–  A and B know about C, but not the other way round. –  C must have at least as high priority as A and B.

A

B C

<<include>>

Page 37: Lecture 4 - cse.chalmers.se...UML sequence diagrams – Write contracts for system operations in natural language . Datavetenskap ... System returns that the student has been registered

Datavetenskap

Rogardt Heldal Use Cases - 37 -

”Extend” •  Sometimes one wants to include extra action steps in a use case.

Then ”extend” might be useful:

•  Important: one has to leave and come back to the main flow at the same place.

Main flow

Extended flow

Page 38: Lecture 4 - cse.chalmers.se...UML sequence diagrams – Write contracts for system operations in natural language . Datavetenskap ... System returns that the student has been registered

Datavetenskap

Rogardt Heldal Use Cases - 38 -

UML Syntax

•  A is extended with B •  Some condition has to be satisfied for the use case

B to be used. •  A has to be a full use case without B.

B A

<<extend>>

Page 39: Lecture 4 - cse.chalmers.se...UML sequence diagrams – Write contracts for system operations in natural language . Datavetenskap ... System returns that the student has been registered

Datavetenskap

Rogardt Heldal Use Cases - 39 -

extend

•  In the use case IssueFine’s flow: •  … •  … •  Extension point:overdueBook •  …

IssueFine <<extend>>

Return Book Extension points overdueBook

Page 40: Lecture 4 - cse.chalmers.se...UML sequence diagrams – Write contracts for system operations in natural language . Datavetenskap ... System returns that the student has been registered

Datavetenskap

Rogardt Heldal Use Cases - 40 -

Inherit relation •  It might happen that several use cases have action steps

which are similar. In this case one can use abstract use cases:

•  A inherits from B.

B

A

Page 41: Lecture 4 - cse.chalmers.se...UML sequence diagrams – Write contracts for system operations in natural language . Datavetenskap ... System returns that the student has been registered

Datavetenskap

Rogardt Heldal Use Cases - 41 -

Example

Give loan

Give loan private customer

Give loan organisation

PrivateCustomer Organisation

Customer

Page 42: Lecture 4 - cse.chalmers.se...UML sequence diagrams – Write contracts for system operations in natural language . Datavetenskap ... System returns that the student has been registered

Datavetenskap

Rogardt Heldal Use Cases - 42 -

Uses •  Whether to use ”include”, ”extend”, and inherit is

discussed a lot. •  Most important reason for using these features:

they can improve readability

Page 43: Lecture 4 - cse.chalmers.se...UML sequence diagrams – Write contracts for system operations in natural language . Datavetenskap ... System returns that the student has been registered

Datavetenskap

Rogardt Heldal Use Cases - 43 -

Split

One full use case

Split

Two full use cases

Page 44: Lecture 4 - cse.chalmers.se...UML sequence diagrams – Write contracts for system operations in natural language . Datavetenskap ... System returns that the student has been registered

Datavetenskap

Rogardt Heldal Use Cases - 44 -

Vertical split Condition for the taking an alternative way.

Same action steps

Different Action steps

Same action steps

Page 45: Lecture 4 - cse.chalmers.se...UML sequence diagrams – Write contracts for system operations in natural language . Datavetenskap ... System returns that the student has been registered

Datavetenskap

Rogardt Heldal Use Cases - 45 -

When to split •  If it is not important to show the condition •  If main flow and alternative flow do not have many

steps in common •  If the two flows are complete use cases in

themselves

•  Sometimes one might want to combine use cases as well.

Page 46: Lecture 4 - cse.chalmers.se...UML sequence diagrams – Write contracts for system operations in natural language . Datavetenskap ... System returns that the student has been registered

Datavetenskap

Rogardt Heldal Use Cases - 46 -

Actor Specialisation •  Vertical split can lead to more specialised actors, for example:

Customer

Private Organisation

Page 47: Lecture 4 - cse.chalmers.se...UML sequence diagrams – Write contracts for system operations in natural language . Datavetenskap ... System returns that the student has been registered

Datavetenskap

Rogardt Heldal Use Cases - 47 -

Example of Actor Inheritance

Customer

Operator

Booking

Page 48: Lecture 4 - cse.chalmers.se...UML sequence diagrams – Write contracts for system operations in natural language . Datavetenskap ... System returns that the student has been registered

Datavetenskap

Rogardt Heldal Use Cases - 48 -

Horizontal Split

Two full use cases

One full use case

Page 49: Lecture 4 - cse.chalmers.se...UML sequence diagrams – Write contracts for system operations in natural language . Datavetenskap ... System returns that the student has been registered

Datavetenskap

Rogardt Heldal Use Cases - 49 -

Business Use Cases •  Describe how a business works. Might describe

human behaviour as well. •  Might contain system use cases.

Page 50: Lecture 4 - cse.chalmers.se...UML sequence diagrams – Write contracts for system operations in natural language . Datavetenskap ... System returns that the student has been registered

Datavetenskap

Rogardt Heldal Use Cases - 50 -

System Sequence Diagram

Page 51: Lecture 4 - cse.chalmers.se...UML sequence diagrams – Write contracts for system operations in natural language . Datavetenskap ... System returns that the student has been registered

Datavetenskap

Rogardt Heldal Use Cases - 51 -

Use case: Withdraw Money Only main flow: 1.  user identifies himself by a card 2.  system reads the bank ID and account number from card and

validates them 3.  user authenticates by PIN 4.  system validates that PIN is correct 5.  user requests withdrawal of an amount of money 6.  system checks that the account balance is high enough 7.  system subtracts the requested amount of money from

account balance 8.  system returns card and dispenses cash

Suggested names for operations

Page 52: Lecture 4 - cse.chalmers.se...UML sequence diagrams – Write contracts for system operations in natural language . Datavetenskap ... System returns that the student has been registered

Datavetenskap

Rogardt Heldal Use Cases - 52 -

System Sequence Diagram Withdraw Money

ATM:System

identify(card)

authenticate(pin)

:Customer

withdraw(amount)

Page 53: Lecture 4 - cse.chalmers.se...UML sequence diagrams – Write contracts for system operations in natural language . Datavetenskap ... System returns that the student has been registered

Datavetenskap

Rogardt Heldal Use Cases - 53 -

Kinds of Sequence Diagrams •  Interaction Diagrams can be used on

different levels: –  System level (“System sequence diagrams”): Interaction

between actors (primary, secondary, …) and system –  Component level: Interaction between components –  Object level: Interaction between objects, maybe in one

system or component

•  Notation is always the same

Page 54: Lecture 4 - cse.chalmers.se...UML sequence diagrams – Write contracts for system operations in natural language . Datavetenskap ... System returns that the student has been registered

Datavetenskap

Rogardt Heldal Use Cases - 54 -

System Sequence Diagram Withdraw Money

ATM:System

identify(card)

authenticate(pin)

:Customer

withdraw(amount)

Problem: Does this diagram show a realistic picture of the ATM?

Page 55: Lecture 4 - cse.chalmers.se...UML sequence diagrams – Write contracts for system operations in natural language . Datavetenskap ... System returns that the student has been registered

Datavetenskap

Rogardt Heldal Use Cases - 55 -

System Sequence Diagram Actor

System

Page 56: Lecture 4 - cse.chalmers.se...UML sequence diagrams – Write contracts for system operations in natural language . Datavetenskap ... System returns that the student has been registered

Datavetenskap

Rogardt Heldal Use Cases - 56 -

Other Systems

Problem: Does this diagram show all the uses of the ATM?

NO!

Page 57: Lecture 4 - cse.chalmers.se...UML sequence diagrams – Write contracts for system operations in natural language . Datavetenskap ... System returns that the student has been registered

Datavetenskap

Rogardt Heldal Use Cases - 57 -

System Class •  We can consider system class as a façade for the

whole system.

identify(card) authenticate(pin) withdraw(amount)

ATMSystem

Page 58: Lecture 4 - cse.chalmers.se...UML sequence diagrams – Write contracts for system operations in natural language . Datavetenskap ... System returns that the student has been registered

Datavetenskap

Rogardt Heldal Use Cases - 58 -

Problem •  Write system sequence diagram for “register on

course”.

Page 59: Lecture 4 - cse.chalmers.se...UML sequence diagrams – Write contracts for system operations in natural language . Datavetenskap ... System returns that the student has been registered

Datavetenskap

Rogardt Heldal Use Cases - 59 -

Contract

System operations

Page 60: Lecture 4 - cse.chalmers.se...UML sequence diagrams – Write contracts for system operations in natural language . Datavetenskap ... System returns that the student has been registered

Datavetenskap

Rogardt Heldal Use Cases - 60 -

Example: Contract

•  Operation: withdraw(amount:int) •  Postcondition:

–  If account contains enough cash then the balance of the account for the inserted card is decreased by “amount” AND the card has been returned AND cash had been dispensed else the account balance has not been changed AND card had been returned

Page 61: Lecture 4 - cse.chalmers.se...UML sequence diagrams – Write contracts for system operations in natural language . Datavetenskap ... System returns that the student has been registered

Datavetenskap

Rogardt Heldal Use Cases - 61 -

Contract Template •  The signature of the operation:

–  Name, parameters, return value •  Description of the operation (optional), for instance

–  Informal meaning of operation –  Implementation in pseudo-code

•  Description of the parameters (optional) •  Description of the operation’s result (optional) •  Cross-reference •  Precondition •  Postcondition

Page 62: Lecture 4 - cse.chalmers.se...UML sequence diagrams – Write contracts for system operations in natural language . Datavetenskap ... System returns that the student has been registered

Datavetenskap

Rogardt Heldal Use Cases - 62 -

Use Domain Model to obtain pre- and post-conditions

•  Furthermore, the domain model can be used as the basis for the creation of the contracts. –  The precondition specifies what has to hold in the domain model

before the call to the operation. –  The postcondition has to specify what has to hold in the domain

model after the execution of the call.

Page 63: Lecture 4 - cse.chalmers.se...UML sequence diagrams – Write contracts for system operations in natural language . Datavetenskap ... System returns that the student has been registered

Datavetenskap

Rogardt Heldal Use Cases - 63 -

Postcondition •  The postcondition has to specify the following

things: –  What instances have been created? –  What attributes are modified? –  What associations (to be precise, UML links) are formed and

broken? –  What value is returned from the operation?

Page 64: Lecture 4 - cse.chalmers.se...UML sequence diagrams – Write contracts for system operations in natural language . Datavetenskap ... System returns that the student has been registered

Datavetenskap

Rogardt Heldal Use Cases - 64 -

Example: Withdraw Money •  What attributes are modified?

–  The balance attribute in the concept Account might be changed.

Account balance:Integer

Page 65: Lecture 4 - cse.chalmers.se...UML sequence diagrams – Write contracts for system operations in natural language . Datavetenskap ... System returns that the student has been registered

Datavetenskap

Rogardt Heldal Use Cases - 65 -

Problem Write a contract for the operation authenticate. … 4. user authenticates himself by PIN 5. system validates that PIN is correct …

•  4a. Wrong pin less than 3 times: –  1. System updates number of tries –  2. start from action step 3

•  4-8a. Wrong pin 3 times: –  1. System keeps the card

Page 66: Lecture 4 - cse.chalmers.se...UML sequence diagrams – Write contracts for system operations in natural language . Datavetenskap ... System returns that the student has been registered

Datavetenskap

Rogardt Heldal Use Cases - 66 -

Part of the solution •  Operation: Authenticate (userPin: Integer):PinResult

•  Cross-ref: Withdraw Money •  Result:

–  PinResult::Correct if authentication successful, –  PinResult::Wrong if authentication failed, but further tries

possible –  PinResult::Abort if authentication failed

•  post-condition: ? <<enumeration>> PinResult

Correct Wrong Abort

Page 67: Lecture 4 - cse.chalmers.se...UML sequence diagrams – Write contracts for system operations in natural language . Datavetenskap ... System returns that the student has been registered

Datavetenskap

Rogardt Heldal Use Cases - 67 -

Solution •  Operation: Authenticate (userPin: Integer):

PinResult •  … •  post-condition:

–  if userPin was equal to the pin of the inserted card then PinResult::Correct has been returned else if tries was at most 3 then tries has been incremented by 1 AND PinResult::Wrong has been returned else card has been kept AND PinResult::Abort has been returned

Page 68: Lecture 4 - cse.chalmers.se...UML sequence diagrams – Write contracts for system operations in natural language . Datavetenskap ... System returns that the student has been registered

Datavetenskap

Rogardt Heldal Use Cases - 68 -

More details into Contracts •  In contracts, one often is more precise than in use

cases, even formal. •  On the next slide we show a formal contract

written in Object Constraint Language (OCL) for Withdraw Money.

•  We will come back to OCL later in this course.

Page 69: Lecture 4 - cse.chalmers.se...UML sequence diagrams – Write contracts for system operations in natural language . Datavetenskap ... System returns that the student has been registered

Datavetenskap

Rogardt Heldal Use Cases - 69 -

Formal Contract Context ATMController::giveAmount(amount:long) post: if ( amount <= bank.getBalance(card.getID()) ) then cashDispenser^giveOutCash(amount) and bank.getBalance(card.getID()) = bank.getBalance@pre(card.getID()) - amount and card^returnCard() else not cashDispenser^giveOutCash(?) and bank.getBalance(card.getID()) = bank.getBalance@pre(card.getID()) and card^returnCard()

Page 70: Lecture 4 - cse.chalmers.se...UML sequence diagrams – Write contracts for system operations in natural language . Datavetenskap ... System returns that the student has been registered

Datavetenskap

Rogardt Heldal Use Cases - 70 -

Problem •  Write contract for the system operations obtained

from “register on course”.

Page 71: Lecture 4 - cse.chalmers.se...UML sequence diagrams – Write contracts for system operations in natural language . Datavetenskap ... System returns that the student has been registered

Datavetenskap

Rogardt Heldal Use Cases - 71 -

What next?

Essential use cases Domain model (contracts)

code

real use cases

further modelling interaction diagram class diagram …

Design Analysis

Page 72: Lecture 4 - cse.chalmers.se...UML sequence diagrams – Write contracts for system operations in natural language . Datavetenskap ... System returns that the student has been registered

Datavetenskap

Rogardt Heldal Use Cases - 72 -

Applications of Use Cases

Appendix

Page 73: Lecture 4 - cse.chalmers.se...UML sequence diagrams – Write contracts for system operations in natural language . Datavetenskap ... System returns that the student has been registered

Datavetenskap

Rogardt Heldal Use Cases - 73 -

Problem •  Why using Use Cases? •  Because:

–  Describing the behavior of the system –  Communicating with the customer –  Catching functional requirements on the system –  Obtaining the user interface –  Driving the development process, deciding what should be

done in each iteration –  Obtaining tests for the system

Page 74: Lecture 4 - cse.chalmers.se...UML sequence diagrams – Write contracts for system operations in natural language . Datavetenskap ... System returns that the student has been registered

Datavetenskap

Rogardt Heldal Use Cases - 74 -

Communication

Customer Developers Create a dialog between the customer and developers.

But also a dialog among developers.

Page 75: Lecture 4 - cse.chalmers.se...UML sequence diagrams – Write contracts for system operations in natural language . Datavetenskap ... System returns that the student has been registered

Datavetenskap

Rogardt Heldal Use Cases - 75 -

Requirement analysis •  Often these kinds of requirements have to

be identified (FURPS+): –  Functionality – Usability –  Reliability –  Performance –  Supportability –  ”+” represents further requirements

Page 76: Lecture 4 - cse.chalmers.se...UML sequence diagrams – Write contracts for system operations in natural language . Datavetenskap ... System returns that the student has been registered

Datavetenskap

Rogardt Heldal Use Cases - 76 -

Example: ATM 1.  ATM saves information about withdrawals 2.  Can be given a code 3.  Gives customer amount X of money if customer has at least X on the

account. 4.  Can be given a card 5.  Can return a card when withdrawal is finished or when transaction is

cancelled. 6.  Can make transactions between accounts 7.  Can insert money into the account 8.  The amount of money inserted should be added to the account 9.  Reduce the account by the amount withdrawn. 10.  Can choose an amount. 11.  Can choose to withdraw. 12.  Check amount on account 13.  Can obtain a receipt. 14.  Can stop the process of withdrawal. 15.  Can give code up to three times. 16.  If wrong code three times then the ATM keeps the card. 17.  …

Page 77: Lecture 4 - cse.chalmers.se...UML sequence diagrams – Write contracts for system operations in natural language . Datavetenskap ... System returns that the student has been registered

Datavetenskap

Rogardt Heldal Use Cases - 77 -

Problem •  What is the problem with the list of requirements

on the previous slide? •  Problems:

–  How to priorities requirements –  How to group requirements –  Often imprecise –  Hard to obtain an overview –  Is it a complete list of requirements? –  Many!!! Can be several thousands.

Page 78: Lecture 4 - cse.chalmers.se...UML sequence diagrams – Write contracts for system operations in natural language . Datavetenskap ... System returns that the student has been registered

Datavetenskap

Rogardt Heldal Use Cases - 78 -

Different kinds of functional requirements

•  Business requirements: –  A customer shall be able to book a taxi via telephone

•  System requirements: –  The system should estimate the time until a taxi arrives

•  Use cases will help to separate these two types of requirements, since we write use cases only for describing system behavior.

•  We will obtain system requirements from use cases.

Page 79: Lecture 4 - cse.chalmers.se...UML sequence diagrams – Write contracts for system operations in natural language . Datavetenskap ... System returns that the student has been registered

Datavetenskap

Rogardt Heldal Use Cases - 79 -

Grouping Requirements •  Requirements can be grouped in several ways •  One way: Use cases •  For example, Withdraw Money relates to the

requirements: –  R1, R2, R3, …

•  Implementing a requirement might not make a system more useful; implementing a use case does!

•  Use cases tackle the problem of making requirements readable, understandable, and to choose priorities

Page 80: Lecture 4 - cse.chalmers.se...UML sequence diagrams – Write contracts for system operations in natural language . Datavetenskap ... System returns that the student has been registered

Datavetenskap

Rogardt Heldal Use Cases - 80 -

Functional requirements • Use cases capture most functional

requirements. • But: Some functionality can be

”hidden” in several/all use cases – For instance: Logging occurring events

Page 81: Lecture 4 - cse.chalmers.se...UML sequence diagrams – Write contracts for system operations in natural language . Datavetenskap ... System returns that the student has been registered

Datavetenskap

Rogardt Heldal Use Cases - 81 -

Dealing with Requirements •  Different ways of dealing with functional

requirements: – Only having a requirement list – Only having use cases – A combination of both

Page 82: Lecture 4 - cse.chalmers.se...UML sequence diagrams – Write contracts for system operations in natural language . Datavetenskap ... System returns that the student has been registered

Datavetenskap

Rogardt Heldal Use Cases - 82 -

Example: ATM

Withdraw Money

Check Balance

Transaction :Customer

Dispose Money

Page 83: Lecture 4 - cse.chalmers.se...UML sequence diagrams – Write contracts for system operations in natural language . Datavetenskap ... System returns that the student has been registered

Datavetenskap

Rogardt Heldal Use Cases - 83 -

Use Case/Requirement Matrix

x x x x x

x

x x x x

x

Withdraw Money Check Balance Transaction Dispose Money

R1

R2

R3

R4

R5

Page 84: Lecture 4 - cse.chalmers.se...UML sequence diagrams – Write contracts for system operations in natural language . Datavetenskap ... System returns that the student has been registered

Datavetenskap

Rogardt Heldal Use Cases - 84 -

Non-functional requirements •  Non-functional requirements are hard to handle by

use cases, but sometimes one can relate them to use cases.

•  Further documents (apart from use cases) are needed

Page 85: Lecture 4 - cse.chalmers.se...UML sequence diagrams – Write contracts for system operations in natural language . Datavetenskap ... System returns that the student has been registered

Datavetenskap

Rogardt Heldal Use Cases - 85 -

Example (1) •  Usability

– ATM should be usable for colour blind persons •  Reliability

–  Frequency of failure •  At most one failure per year (or per 10 sec)

–  Restart after an error •  When restarting, account balance should be checked

against bank to ensure right value (in case of unfinished transactions)

Page 86: Lecture 4 - cse.chalmers.se...UML sequence diagrams – Write contracts for system operations in natural language . Datavetenskap ... System returns that the student has been registered

Datavetenskap

Rogardt Heldal Use Cases - 86 -

Example (2) • Supportability

– ATM system should be adaptable to • Different currencies • Different languages • Different bank computer systems • Different card types

Page 87: Lecture 4 - cse.chalmers.se...UML sequence diagrams – Write contracts for system operations in natural language . Datavetenskap ... System returns that the student has been registered

Datavetenskap

Rogardt Heldal Use Cases - 87 -

User interface •  Usually an ”user interface expert” will

derive the user interface from use cases •  For instance:

•  … and make a description of the interface

100

300

500

1000

2000

Cancel

Balance

Withdrawal

Page 88: Lecture 4 - cse.chalmers.se...UML sequence diagrams – Write contracts for system operations in natural language . Datavetenskap ... System returns that the student has been registered

Datavetenskap

Rogardt Heldal Use Cases - 88 -

Connecting user interface and use cases

•  For instance: ”Customer chooses amount in window A”

•  Dangerous: Such use cases are very fragile concerning changes in user interface

A

B 100

300

500

1000

2000

Cancel

Balance

Withdrawal

Page 89: Lecture 4 - cse.chalmers.se...UML sequence diagrams – Write contracts for system operations in natural language . Datavetenskap ... System returns that the student has been registered

Datavetenskap

Rogardt Heldal Use Cases - 89 -

Problem •  Should one consider user interface details when

writing use cases? •  Should use cases contain information about the

interface? •  Should one make the user interface before or after

the use cases?

Page 90: Lecture 4 - cse.chalmers.se...UML sequence diagrams – Write contracts for system operations in natural language . Datavetenskap ... System returns that the student has been registered

Datavetenskap

Rogardt Heldal Use Cases - 90 -

Interface first or last? •  Most people agree that use cases should be

written before user interface is designed •  Exception: Interface can be given, no

changes are possible •  (Some people even recommend designing the

user interface first) •  Interface is important, because customers

might get new ideas by looking at it (less abstract than use cases, easier to understand, things become more concrete and more obvious)

Page 91: Lecture 4 - cse.chalmers.se...UML sequence diagrams – Write contracts for system operations in natural language . Datavetenskap ... System returns that the student has been registered

Datavetenskap

Rogardt Heldal Use Cases - 91 -

Essential Use Cases •  A use case which abstracts from user

interface, implementation details etc. •  Avoids premature design decisions of how to

develop the system, such as the look of user interface, whether to use a database etc.

Page 92: Lecture 4 - cse.chalmers.se...UML sequence diagrams – Write contracts for system operations in natural language . Datavetenskap ... System returns that the student has been registered

Datavetenskap

Rogardt Heldal Use Cases - 92 -

Summary •  We have considered •  How to write brief use cases •  How to write complete use cases

–  How to write main flow –  How to write alternative flows –  How to write post-conditions –  …

Page 93: Lecture 4 - cse.chalmers.se...UML sequence diagrams – Write contracts for system operations in natural language . Datavetenskap ... System returns that the student has been registered

Datavetenskap

Rogardt Heldal Use Cases - 93 -

Appendix •  Will go through this slides if time permit, otherwise

the students have to read them home.

Page 94: Lecture 4 - cse.chalmers.se...UML sequence diagrams – Write contracts for system operations in natural language . Datavetenskap ... System returns that the student has been registered

Datavetenskap

Rogardt Heldal Use Cases - 94 -

Role play •  To illustrate one flow through a use case, one can

use a concrete case. •  One can play the interaction between the system

and the actor. •  One person plays the system and for each actor

there is a person playing the actor.

Page 95: Lecture 4 - cse.chalmers.se...UML sequence diagrams – Write contracts for system operations in natural language . Datavetenskap ... System returns that the student has been registered

Datavetenskap

Rogardt Heldal Use Cases - 95 -

Problem •  One plays the ATM •  One plays the customer which wants to take out

money •  Write down the lines for each role, and then play it.

Page 96: Lecture 4 - cse.chalmers.se...UML sequence diagrams – Write contracts for system operations in natural language . Datavetenskap ... System returns that the student has been registered

Datavetenskap

Rogardt Heldal Use Cases - 96 -

Goal •  In books

– Often the goal are the use cases themselves.

•  In industry – The goal is the complete running system.

gap

Page 97: Lecture 4 - cse.chalmers.se...UML sequence diagrams – Write contracts for system operations in natural language . Datavetenskap ... System returns that the student has been registered

Datavetenskap

Rogardt Heldal Use Cases - 97 -

Gap between Analysis and Design

• Often the case: • Analysis

– Use cases

• Design – Realization of use cases

Often different people

Page 98: Lecture 4 - cse.chalmers.se...UML sequence diagrams – Write contracts for system operations in natural language . Datavetenskap ... System returns that the student has been registered

Datavetenskap

Rogardt Heldal Use Cases - 98 -

Trend • Use cases are good in grouping

requirements

• Why not use them for everything?

Page 99: Lecture 4 - cse.chalmers.se...UML sequence diagrams – Write contracts for system operations in natural language . Datavetenskap ... System returns that the student has been registered

Datavetenskap

Rogardt Heldal Use Cases - 99 -

Gap between use cases and code • Often the case:

– Use cases

– Code (Being modified)

(Might not be modified after code produced)

gap