Quiz 1
Quiz 1
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 11
1 - What is the purpose of modeling? (One or two sentences)
2 - Draw a use case diagram for a ticket distributor for a train system. The system
includes two actors: a traveler, who purchases different types of tickets, and a
central computer system, which maintains a reference database for the tariff. Use
cases should include: BuyOneWayTicket, BuyWeeklyCard, BuyMonthlyCard,
UpdateTariff. Also include the following exceptional cases: Time-Out (i.e., traveler
took too long to insert the right amount), TransactionAborted (i.e., traveler selected
the cancel button without completing the transaction), DistributorOutOfChange,
and DistributorOutOfPaper.
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 22
SOLUTIONS
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 33
1 - The purpose of modeling is to reduce complexity by building a simplified
representation of reality which ignores irrelevant details. What is relevant or
not is defined by the questions the model will be used to answer.
2-
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 44
Object-Oriented Software Engineering
Using UML, Patterns, and Java
Elicitation
Chapter 4,
Requirements
Software Lifecycle Activities
Implemente
Expressed in d
Structured Realized By By
Terms Of By Verified
By
class...
class...
class... ?
class....?
Use Case Application Solution
Domain Subsystems Source Test
Model Domain
Objects Code Cases
Objects
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 66
Scenario-Based Design
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 77
Types of Scenarios
• As-is scenario:
• Describes a current situation. Usually used in re-
engineering projects. The user describes the system
• Example: Description of Chess
• Visionary scenario:
• Describes a future system. Usually used in greenfield
engineering and reengineering projects
• Can often not be done by the user or developer alone
• Example: Description of an interactive internet-
based Tic Tac Toe game tournament
• Example: Description - in the year 1954 - of the
Home Computer of the Future.
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 88
Additional Types of Scenarios (2)
• Evaluation scenario:
• Description of a user task against which the system is
to be evaluated.
• Example: Four users (two novice, two experts) play
in a TicTac Toe tournament in ARENA.
• Training scenario:
• A description of the step by step instructions that guide
a novice user through a system
• Example: How to play Tic Tac Toe in the ARENA
Game Framework.
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 99
NEXT:
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 10
10
Scenario example from earlier:
Warehouse on Fire
• Bob, driving down main street in his patrol car notices
smoke coming out of a warehouse. His partner, Alice,
reports the emergency from her car.
• Alice enters the address of the building into her wearable
computer , a brief description of its location (i.e., north
west corner), and an emergency level.
• She confirms her input and waits for an acknowledgment.
• John, the dispatcher, is alerted to the emergency by a
beep of his workstation. He reviews the information
submitted by Alice and acknowledges the report. He
allocates a fire unit and sends the estimated arrival time
(ETA) to Alice.
• Alice received the acknowledgment and the ETA.
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 11
11
Observations about Warehouse on
Fire Scenario
• Concrete scenario
• Describes a single instance of reporting a fire
incident.
• Does not describe all possible situations in
which a fire can be reported.
• Participating actors
• Bob, Alice and John
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 12
12
After the scenarios are formulated
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 13
13
Use Case Model for Incident
Management
<<initiates>>
<<initiates>>
FieldOfficer Dispatcher
OpenIncident
<<initiates>>
ReportEmergency
AllocateResources
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 14
14
How to find Use Cases
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 15
15
Use Case Example:
ReportEmergency
• Use case name: ReportEmergency
• Participating Actors:
• Field Officer (Bob and Alice in the Scenario)
• Dispatcher (John in the Scenario)
• Exceptions:
• The FieldOfficer is notified immediately if the
connection between terminal and central is lost.
• The Dispatcher is notified immediately if the
connection between a FieldOfficer and central is lost.
• Flow of Events: on next slide.
• Special Requirements:
• The FieldOfficer’s report is acknowledged within 30
seconds. The selected response arrives no later than
30 seconds after it is sent by the Dispatcher.
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 16
16
Use Case Example:
ReportEmergency
Flow of Events
1. The FieldOfficer activates the “Report Emergency”
function of her terminal. The system responds by
presenting a form to the officer.
2. The FieldOfficer fills the form, by selecting the
emergency level, type, location, and brief description
of the situation. The FieldOfficer also describes a
response to the emergency situation. Once the form
is completed, the FieldOfficer submits the form, and
the Dispatcher is notified.
3. The Dispatcher creates an Incident in the database
by invoking the OpenIncident use case. He selects a
response and acknowledges the report.
4. The FieldOfficer receives the acknowledgment and
the selected response.
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 17
17
Order of steps when formulating use
cases
• First step: Name the use case
• Use case name: ReportEmergency
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 18
18
Use Case Associations
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 19
19
<<include>>: Functional
Decomposition
• Problem:
• A function in the original problem statement is too
complex
• Solution:
• Describe the function as the aggregation of a set of
simpler functions. The associated use case is
decomposed into shorter use cases
ManageIncident
<<include>> <<include>>
<<include>>
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 20
20
<<include>>: Reuse of Existing
Functionality
• Problem: There are overlaps among use cases. How can
we reuse flows of events instead of duplicating them?
• Solution: The includes association from use case A to
use case B indicates that an instance of use case A
performs all the behavior described in use case B (“A
delegates to B”)
• Example: Use case “ViewMap” describes behavior that
can be used by use case “OpenIncident” (“ViewMap” is
factored out)
<<include>>
OpenIncident
ViewMap
Base Use
Case <<include>>
Supplier
AllocateResources Use Case
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 21
21
<<extend>> Association for Use
Cases
• Problem: The functionality in the original
problem statement needs to be extended.
• Solution: An extend association from use case A
to use case B
• Example: “ReportEmergency” is complete by
itself, but may be extended by use case “Help”
for a scenario in which the user requires help
Help
FieldOfficer
<<extend>>
ReportEmergency
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 22
22
Generalization in Use Cases
• Problem: We want to factor out common (but not
identical) behavior.
• Solution: The child use cases inherit the behavior
and meaning of the parent use case and add or
override some behavior.
• Example: “ValidateUser” is responsible for verifying
the identity of the user. The customer might require
two realizations: “CheckPassword” and
“CheckFingerprint”
Child
Use Case
CheckPassword
Parent
ValidateUser
Case
CheckFingerprint
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 23
23
Another Use Case Example
Initiatiating actor:
• Bank Customer
Preconditions:
• Bank Customer has opened a Bank Account with the
Bank and
• Bank Customer has received an ATM Card and PIN
Postconditions:
• Bank Customer has the requested cash or
• Bank Customer receives an explanation from the
ATM about why the cash could not be dispensed
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 25
25
Use Case Flow of Events
Actor steps System steps
1.The Bank Customer inputs the
card into the ATM.
2.The ATM requests the input of
a four-digit PIN.
3. The Bank Customer types in
PIN.
4. If several accounts are recorded
on the card, the ATM offers a choice
of the account numbers for selection
by the Bank Customer
5. The Bank Customer selects an
account. 6.If only one account is recorded on
the card or after the selection, the
ATM requests the amount to be
withdrawn.
7. The Bank Customer inputs an
amount.
8.The ATM outputs the money and a
receipt and stops the interaction.
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 26
26
Use Case Exceptions
[Invalid card]
The ATM outputs the card and
Actor steps stops the interaction.
1. The Bank Customer inputs
her card into the ATM.
[Invalid card] [Invalid PIN]
The ATM announces the failure
and offers a 2nd try as well as
3. The Bank Customer types canceling the whole use case.
in PIN. [Invalid PIN] After 3 failures, it announces
the possible retention of the
card. After the 4th failure it
5. The Bank Customer keeps the card and stops the
selects an account . interaction.
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 28
28
Guidelines for Formulation of Use
Cases (2)
Flow of events:
• Use the active voice. Steps should start either
with “The Actor” or “The System …”.
• The causal relationship between the steps
should be clear.
• All flow of events should be described (not only
the main flow of event).
• The boundaries of the system should be clear.
Components external to the system should be
described as such.
• Define important terms in the glossary.
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 29
29
Example of a badly written Use Case
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 30
30
Example of a badly written Use Case
It contains no actors
It is not clear which action triggers the ticket
being issued
Because of the passive form, it is not clear
who opens the gate (The driver? The
computer? A gate keeper?)
It is not a complete transaction. A complete
transaction would also describe the driver
paying for the parking and driving out of the
parking lot.
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 31
31
How to write a use case (Summary)
• Name of Use Case
• Actors
• Description of Actors involved in use case
• Entry condition
• “This use case starts when…”
• Flow of Events
• Free form, informal natural language
• Exit condition
• “This use cases terminates when…”
• Exceptions
• Describe what happens if things go wrong
• Special Requirements
• Nonfunctional Requirements, Constraints
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 32
32
Summary
• Scenarios:
• Great way to establish communication with client
• Different types of scenarios: As-Is, visionary,
evaluation and training
• Use cases
• Abstractions of scenarios
• Use cases bridge the transition between
functional requirements and objects.
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 33
33