Sei sulla pagina 1di 11

From use cases

to classes (in UML)


A use case
for writing use cases
Use case: writing a use case
Actors: analyst, client(s)
Client identifies and write down all the actors.
Analyst writes down all the actors.
Client identifies the use cases, i.e., goals that actors can
achieve step by step.
Analyst draws a use case diagram documenting the
relationships between the actors and use cases.
Analyst describes main scenario for a use case, step by step.
Analyst describes any alternatives to the main case.
Analyst reviews the use case with client to make sure it is
understandable and correct.
Alternative: Refine use case
7a. If client may request changes then go to relevant step above
Exercise
I am the manager of a theatre.
I want to create an automated movie ticket machine.
You are analysts who need to describe
what the customer wants as a set of use cases
Simplifying assumptions:
 One movie showing at a time
 Movie time is same every day, only one time, same price
 Only manager can change/add movie
 Customer can only buy tickets
Who or what are the actors?
What are the use cases (goals of actors)?
Use case diagram
for Movie Ticket Machine

Why are there three Actors?


Why three use cases for Customer?
Which use cases look easy to write?
Use cases for Manager
Use case: Set title
Actors: Manager, Machine
1. Manager requests a change of movie title
2. Machine asks manager for new movie title
3. Manager enters movie title

Use case: Set price


Actors: Manager, Machine
1. Manager requests a change of ticket price
2. Machine asks manager for new price for movie title
3. Manager enters ticket price
Alternatives: Invalid price
If manager enters price below $1 or greater than $10
3a. Machine asks manager to reenter price

Use case: Set seats


Actors: Manager, Machine
1. Manager requests a change in number of seats
2. Machine asks manager for number of seats in theatre
3. Manager enters number of seats
Alternatives: Invalid number of seats
If manager enters number less than 20 or greater than 999
3a. Machine asks manager to reenter number of seats
Use cases for Customer

Use case: # of tickets Use case: Buy tickets


Actors: Customer, Machine Actors: Customer, Machine
1. Customer enters number of tickets 1. Customer requests tickets
2. Machine displays total balance due 2. Machine tells customer to put
Alternative: Customer wants zero tickets balance due in money slot
At step 1, customer enters zero tickets 3. Customer enters money in money slot
1a. Display thank you message 4. Machine updates customer balance
1b. Set balance to $0.0 5. Customer requests tickets
6. Machine prints tickets
7. Machine updates number of seats
Use case: Return change to customer Alternative: Insufficient seats
Actors: Customer, Machine At step 1, if number of tickets requested
1. Customer requests change is less than available seats,
2. Machine dispenses money 1a. Display message and end use case
3. Machine updates customer balance Alternative: Insufficient funds
At step 5, if money entered < total cost,
5a. Display insufficient amount entered
5b. Go to step 3
Domain analysis
So far we’ve looked at requirements analysis—
understanding what the customer wants.
Domain analysis understands the customer’s problem—
by identifying the classes comprising a problem domain.
Booch: "an attempt to identify the objects, operations,
and relationships [that] domain experts perceive to be
important about the domain.“
Result of OO analysis is a UML class diagram modeling
the concepts and relationships in problem domain.
Separation of concerns principle: Keep problem domain
model distinct from user interface or database modeling.
Why?
Identifying classes is category-formation
Objects simulate a slice of the world which a computer system models
Why are objects are a natural construct for simulation?
 Classes of objects are a natural way to organize classes
 Infants learn to recognize objects and how to categorize them in
their first few months
 A key insight of the child psychologist Piaget and cognitive science
 Adults rely on categorization to understand the world
 We create new categories all the time. Examples?
 New makes of cars, new technological gadgets, new courses and
curricula….
Natural categories, can be hard to define precisely
 Natural kinds: how do you define an elephant? a game?
 Prototypes: people see how close objects match a prototypical
member of a category
 Why is the fuzziness of natural kinds a problem for OOSE?
 It's hard to be precise about defining categories
That's why we need methodology for OO analysis and design
Candidates for classes
Tangible things referred to by common nouns in requirements spec
 I.e., cookie, factory, triangle
Events with associated information (i.e., flight, game).
Abstract data stores (i.e., buffer, tree, hash table)
External interface ports (i.e., terminal, printer, window, menu)
Complex processes or operations (i.e., sort, edit command)
Note: verbs can also be classes!
 Especially processes than store state information
 Parsing -> Parser, Scanner as a subclass of String
Can anything be a class? What isn't a class?
 Indeed, category-formation is a fundamental human activity
 Proper nouns are instances of classes, not classes
 Classes have content: store state information and perform operations
 If it doesn’t store state and perform multiple operations, keep it simple
 Classes with just one or two routines (probably not worth classifying)
 Redundant classes: merge synonyms, reuse classes in libraries
Defining terms
Why is defining a glossary of terms
especially helpful to OO analysis?
Brief dictionary-like definitions describe
how the term is used in domain
Terms can help with the discovery of
classes and their structure
Maintain glossary files throughout
development, finally as documentation
From use cases to classes
1. Identify classes of objects in the problem description
Heuristic: nouns may be classes
But: verbs can be nominalized
(iterate->iteration, withdraw->withdrawal)
Heuristic: does it store state (does it have attributes)
and does it have operations?
2. Identify attributes of each class:
What characteristics are important to keep track of?
What data must be maintained or remembered during object’s life?
3. Identify methods of each class:
What actions must the object be able to perform?
What actions can be done to the object (e.g., to change its state)?
Use cases may correspond to methods
4. Identify parameters and return types of methods:
What input does a method need from caller? These are parameters.
Does the method generate a result value?
The return type must match the data type of data to be returned.

Potrebbero piacerti anche