Object-Oriented Design I
The Waterfall Model
and Unit Testing
Grady Booch, James Rumbaugh, Ivar Jacobson, The Unified
Modeling Language. Addison-Wesley 1999.
Grady Booch, Object-Oriented Analysis and Design with
Applications, second edition. Benjamin/Cummings 1994.
Rob Pooley, Perdita Stevens, Using UML Software
Engineering with Objects and Components. Addison-Wesley
The Importance of Modeling
• A model is a simplification of reality.
• We build models so that we can better understand the
system we are developing.
• We build models of complex system because we cannot
comprehend such a system in its entirety.
Models can be informal or formal. The more complex the
project the more valuable a formal model becomes.
Principles of Modeling
• The choice of what models to create has a profound
influence on how a problem is attacked and how a
solution is shaped.
• Every model can be expressed at different levels of
• The best models are connected to reality.
• No single model is sufficient. Every nontrivial
system is best approached through a small set of
nearly independent models.
The Unified Modeling Language
UML is a standard language for modeling software systems.
• Serves as a bridge between the requirements specification
and the implementation.
• Provides a means to specify and document the design of a
• Is process and programming language independent.
• Is particularly suited to object-oriented program
A class is a description of a set of objects that share the same
attributes, operations, relationships and semantics.
An interface is a collection of operations that specify a
service of a class or component, i.e., the externally
visible behavior of that element.
Notation: Collaboration & Use Case
A collaboration defines an interaction, i.e., a society of
roles and other elements that work together to provide some
A use case is a description of a set of sequence of actions
that a system performs that yields an observable result.
Notation: Active Class
An active class is a class whose objects own one or
more processes or threads and therefore can initiate
Notation: Component & Node
A component is a physical and replaceable
part of a system that conforms to and provides
the realization of a set of interfaces.
A node is a physical element that exists at run
time and represents a computational resource.
Notation: Behavioral Things:
Messages & States
An interaction is a behavior that comprises a set of messages
exchanged among a set of objects within a particular context to
accomplish a specific purpose.
A state machine is a behavior that specifies the sequence of
states an object or an interaction goes through during its
lifetime in response to events.
Notation: Grouping and Annotation
A package is a general-purpose mechanism for organizing
elements into groups.
A note is a symbol for rendering constraints and
comments attached to an element or a collection of
A dependency is a semantic relationship between two things in
which a change to one may effect the semantics of the other.
An association is a structural relationship that describes
a set of links, a link being a connection among objects.
Notation: Relationships (continued)
A generalization is a specialization/generalization
relationship is which objects of the specialized
element (child) are substitutable for objects of the
generalized element (parent).
A realization is a semantic relationship between
classifiers, wherein one classifier specifies a
contract that another classifier guarantees to carry
Diagrams in UML
A diagram is the graphical representation of a set of
elements, usually rendered as a connected graph of vertices
(things) and arcs (relationships).
• Class diagram shows a set of classes, interfaces, and
collaborations with their relationships.
• Object diagram shows a set of objects and their
• Use case diagram shows a set of use cases and actors (a
special kind of class) and their relationships.
Diagrams in UML (continued)
• Interaction diagram shows an interaction, consisting
of a set of objects and the relationships, including the
messages that may be dispatched among them.
=> A sequence diagram emphasizes the time ordering.
=> A collaboration diagram emphasizes the structural
organization of the objects that send and receive messages.
Diagrams in UML (continued)
• Statechart diagram shows a state machine consisting
of states, transitions, events, and activities.
• Activity diagram is a statechart diagram that shows the
flow from activity to activity within a system.
• Component diagram shows the organization and
dependencies among a set of components.
• Deployment diagram shows the configuration of
processing nodes and the components that live on them.
The HelloWorld Example
Abstraction for HelloWorld
("HelloWorld", 0, 10)"