UML Unified Modeling Language

UML
Unified Modeling Language
UML
© Wolfgang Pelz 2000-04
1
Chapter One
Introduction
UML
© Wolfgang Pelz 2000-04
2
District Module
Order Initiated
Application Server
Semi-Auto Fill
Order
Requested
Central-Office Module
Order Approved
Database Server
Delivery Status
Sign-Shop Module
Order Filled
Figure 4 Data Flow of Sign Orders
UML
© Wolfgang Pelz 2000-04
3
Engineering and Blueprints
• standard notation
• communication tool
UML
© Wolfgang Pelz 2000-04
4
History
•
•
•
•
•
CASE Tools: Automation of Software Development
People-to-People
People-to-Computer
Rational Software (An IBM Company)
Rational Rose / MS Visio:
Converting UML-Diagrams-to-Programs
• OMG: Object Management Group
UML
© Wolfgang Pelz 2000-04
5
History
•
•
•
•
UML
Booch: Booch Method
Rumbaugh: OMT (object modeling tech.)
Jacobson: OOSE (OO software engrg.)
Three amigos: UML
© Wolfgang Pelz 2000-04
6
History
• UML: an open standard controlled by OMG
• UML 1.0 (1997)
• UML 2.0 (2004)
UML
© Wolfgang Pelz 2000-04
7
Meta-Model
• a diagram that defines the notation to be
used in the modeling language
UML
© Wolfgang Pelz 2000-04
8
UML supported diagrams
• class
• object
• use case
• interaction
» component
• package
• deployment
–
–
–
–
communication
sequence
collaboration
timing
• activity
• state/statechart
UML
© Wolfgang Pelz 2000-04
9
Brief Overview
• class - set of classes, interfaces,
collaboration, relationships
• object - set of objects and their relationships
• use case - description of functionality
provided by system along with actors and
their connection to the use case
UML
© Wolfgang Pelz 2000-04
10
Overview (cont.)
• interaction - set of objects and their
relationships including messages
• state/statechart - a state machine showing
states, transitions, events, and activities
• activity - statechart sequential flow of
activities
• component - physical structure of code in
terms of code components
UML
© Wolfgang Pelz 2000-04
11
Overview (cont.)
• deployment - physical architecture of
hardware and software in the system
• package - shows packages of classes and
dependencies among them
– grouping mechanism
– form of class diagram
– also called subsystem
UML
© Wolfgang Pelz 2000-04
12
Organization of Diagrams
domain expert
• use case
• activity
• interaction
UML
system designer
• class
• component
• deployment
• state
• package
© Wolfgang Pelz 2000-04
13
Another Organization
static
• class
• component
• package
• deployment
UML
dynamic
• use case
• interaction
• state
• activity
© Wolfgang Pelz 2000-04
14
Another Organization
UML
© Wolfgang Pelz 2000-04
15
Model Terminology
• user model view - problem and solution
from the perspective of the users
• structural model view - static or structural
aspects of a problem and solution
• behavioral model view - dynamic or
behavioral aspects; interactions or
collaborations among problem and solution
elements
UML
© Wolfgang Pelz 2000-04
16
Model Terminology
• implementation model view - structural and
behavioral aspects of the solution’s
realization
• environment model view - structural and
behavioral aspects of the domain in which a
solution must be realized
UML
© Wolfgang Pelz 2000-04
17
Language versus Method
• A (software engineering) method is composed of a language
and a process.
• UML is a language, not a method, since it has no notion of
process
• process can be:
UML
© Wolfgang Pelz 2000-04
18
UML
© Wolfgang Pelz 2000-04
19
Terminology
• inception - a few days’ work to decide if a
few months of elaboration is worth it
• elaboration - risk assessment, about 1/5 of
project time; includes planning based on use
cases; generates a commitment schedule
• construction - composed of iterations that
include refactoring, frameworks & patterns
• transition - beta testing, optimizing, training
UML
© Wolfgang Pelz 2000-04
20
Refactoring
the process of changing the internal structure
of a program or system to make it easier to
understand or change while maintaining its
functionality
UML
© Wolfgang Pelz 2000-04
21
Frameworks & Patterns
• frameworks are reusable designs of all or
part of a software system described by a set
of abstract classes and the way instances of
those classes collaborate
• patterns are common designs that have
repeating themes
UML
© Wolfgang Pelz 2000-04
22
Chapter Three
Class Diagram
UML
© Wolfgang Pelz 2000-04
23
Class Diagram
• static view of a system in terms of classes
and relationships among the classes
– associations
– subtypes
• typically done in parallel with interaction
diagrams
• a more graphical alternative to CRC cards
UML
© Wolfgang Pelz 2000-04
24
Important Questions
(Finding classes)
• Is there information to be stored/analyzed?
• Do external systems exist?
• Are there patterns, class libraries,
components, etc?
• Must the system handle devices?
• Are there organizational parts (business
model)?
• Do actors have roles to play in the system?
UML
© Wolfgang Pelz 2000-04
25
Common Uses
• Objective: provide a view of services the
system should provide to its end user
• model the vocabulary of a system
• model simple collaborations
• model a logical database schema
UML
© Wolfgang Pelz 2000-04
26
Terminology
• association: a description of a related set of
links between objects of two classes
• subtype: “is a” or “is a kind of”
• generalization: relationship between a more
general and a more specific element - see
subtype
UML
© Wolfgang Pelz 2000-04
27
Terminology (cont.)
• dependency: relationship where a change in
the independent element affects the
dependent element
• refinement: relationship between two
descriptions of the same thing, but at
different levels of abstraction
UML
© Wolfgang Pelz 2000-04
28
Terminology (cont.)
• Aggregation: association specifying a whole-part
relationship between the aggregate (whole) and a
component (part). An aggregation may not have
any components and a component may not belong
to any aggregation.
• composition: special form of aggregation (a
component must belong to a composition and only
to one composition)
– strong ownership
– coincident lifetime of parts and whole
UML
© Wolfgang Pelz 2000-04
29
Notation
UML
© Wolfgang Pelz 2000-04
30
More Notation
UML
© Wolfgang Pelz 2000-04
31
Aggregation/Composition
UML
© Wolfgang Pelz 2000-04
32
Example
UML
© Wolfgang Pelz 2000-04
33
Levels of Abstraction
• conceptual model: class name
– associations are conceptual relationships
• specification model: above + behavior
– associations and responsibilities
• implementation model: above + state
– probably too low-level for design stage
UML
© Wolfgang Pelz 2000-04
34
Another Example
UML
© Wolfgang Pelz 2000-04
35
Associations
• Describe relations between classes
• associations have roles (given at the end of
the association) which have multiplicities
• associations have navigability
– A sends a message to B
– A creates an instance of B
– A needs to maintain a connection with B
• navigability is identified from collaboration
diagrams
UML
© Wolfgang Pelz 2000-04
36
Associations (cont.)
• navigability in one direction is termed unidirectional association and has an arrow
• two-way navigability is bi-directional
association and has no arrow
• an association with no arrow could also
mean that the direction is unknown
• bidirectional requires inverse relationship
f ( f -1(y)) = y
UML
f -1( f (x)) = x
© Wolfgang Pelz 2000-04
37
Operation Signatures
visibility name (parameters) : return type
optional
optional
+ public
# protected
- private
• Example:
+ getData (pos : Position) : Data
UML
© Wolfgang Pelz 2000-04
38
Operations & Methods
• Operation
– something invoked on an object which in turn
is implemented by a method
• Method (in coding not design method)
– body of the procedure
• polymorphism forces a distinction between
the two (all siblings have the same
operation but different methods)
UML
© Wolfgang Pelz 2000-04
39
Steps to create a Class Diagram
• Identify classes using the interaction
diagram and place them in the class diagram
• get attributes from the conceptual model
and the method names from the interaction
diagram
• add type information and associations based
on attribute visibility
• add navigability arrows and dependencies
UML
© Wolfgang Pelz 2000-04
40
Another Example
UML
© Wolfgang Pelz 2000-04
41
Cautions
• start small
• perspective should match activity
– analysis: conceptual model
– software: specification model
• don’t go to details too early
UML
© Wolfgang Pelz 2000-04
42
Dependency Relationship
• One element (of any kind, including classes,
use cases, etc.) has knowledge of another
element
• if one element changes, the other might
have to change as well
• differs from plain attribute visibility which
uses regular association line and a
navigability arrow
UML
© Wolfgang Pelz 2000-04
43
Example revisited
UML
© Wolfgang Pelz 2000-04
44
Example with Dependency
UML
© Wolfgang Pelz 2000-04
45
Interface
• Interface is a class of abstract/pure virtual
functions.
• All functions in the interface are public.
• Interface cannot be used to instantiate
objects.
• There is no data members in an interface
class.
• UML: use <<interface>> to prefix the class
name.
UML
© Wolfgang Pelz 2000-04
46
Abstract Class
• An abstract class has one or more
abstract/pure virtual functions.
• An abstract class cannot be used to
instantiate objects.
• An abstract class can contain data members.
• UML: use Abstract to prefix the class name.
UML
© Wolfgang Pelz 2000-04
47
Examples
Figures in UML Distilled.
UML
© Wolfgang Pelz 2000-04
48
Chapter 6
Object Diagrams
UML
© Wolfgang Pelz 2000-04
49
Object Diagrams
•
•
•
•
A snapshot of the objects in a system at a point in time.
Also called instance diagrams.
Useful of showing object connections (not interactions)
Can be thought of as collaboration/communication
diagram without messages.
• Naming convention (did not change as sequence diagram
did):
UML
© Wolfgang Pelz 2000-04
50
UML
© Wolfgang Pelz 2000-04
51
Object Diagrams (try this example)
class Pet { // define a class
protected: string name; // protected members can be accessed by child classes
public:
Pet() {name = "";} // default constructor
Pet(string nm){name = nm;} // constructor
string getName() {return name;} // to be inherited by child classes
//virtual method, to be overridden
virtual string speak() const { return “’I can't speak.’”; }
};
...
int main() {
vector<Pet *> pets;
pets.push_back(new Dog("Midnight"));
pets.push_back(new Cat("Ginger"));
pets.push_back(new Pet("Dummy"));
}
UML
© Wolfgang Pelz 2000-04
52
Chapter 9
Use Case Diagram
UML
© Wolfgang Pelz 2000-04
53
Use Case Diagram
• For capturing the functional requirements of a
system.
• Typical interaction between user and system
– captures some user-visible function
– achieves a discrete goal for the user
note the distinction between the user goal and
system interaction in which system interaction is
the low-level work that ultimately achieves the
user goal
UML
© Wolfgang Pelz 2000-04
54
Notation
UML
© Wolfgang Pelz 2000-04
55
An Example (UML 1.3)
UML
© Wolfgang Pelz 2000-04
56
Another Example (UML 1.1)
UML
© Wolfgang Pelz 2000-04
57
Common Uses
• to model the context of a system
– system, actors, and their interactions with it
• to model the requirements of a system
– what system should do
– independent of how it is done
– point of view outside of system
UML
© Wolfgang Pelz 2000-04
58
Caution
• it is easy to get too low-level
A use case is a relatively large end-to-end
process description that typically includes
many steps or transactions; it is not
normally an individual step or activity in a
process.
– Larman [1998] Applying UML and Patterns
UML
© Wolfgang Pelz 2000-04
59
Steps
• capture normal case first
• for every step, ask:
“What can go wrong”
“How might this work differently”
• each variation is plotted as an extension
• common behavior can be encapsulated in
another use case to be used by other cases
UML
© Wolfgang Pelz 2000-04
60
Steps (cont.)
• after creating the diagram, write a generic
scenario (called a use case description)
which is a series of sentences describing
each step in the interaction
• Each step in a use case is an element of the
interaction between an actor and the system.
• use case description can be used to generate
specific scenarios and interaction diagrams
UML
© Wolfgang Pelz 2000-04
61
Scenario
• a thread through a use case
• a sequence of steps describing an
interaction between a user and a system.
• A use case is a set of scenarios tied together
by a common user goal.
UML
© Wolfgang Pelz 2000-04
62
Exercise
• Produce a use case diagram for an ATM
UML
© Wolfgang Pelz 2000-04
63