Professional Documents
Culture Documents
Objectives
•Describe the book goals and scope
•Define OOA/D (Object-Oriented Analysis and Design)
•Illustrate a brief OOA/D example
•Overview UML and visual agile modeling
Applying UML and Patterns
r 3
Fig. 1.1 Topics and skills covered in the book.
OOA/D
Iterative
development with
an agile Unified
Process
The book illustrates this in the context of long-running case studies that evolve over
several iterations.
4
Analysis
r 5
Use Cases
r 6
Design
r 7
Object-Oriented Analysis and Design
(OOA/D)
• During OOA, the emphasis is on finding and
describing the objects (or concepts) in the
problem domain, i.e., domain objects.
r 8
Fig. 1.2 Object-orientation emphasizes representation of objects
Plane
visualization of
domain concept tailNumber domain concept
r 9
Responsibility-Driven Design
r 10
Design Patterns
r 11
The Unified Process (UP)
r 12
Unified Modeling Language (UML)
r 13
Three ways people apply UML are ...
• UML as sketch
– Informal and incomplete diagrams (often hand sketched on
whiteboards) created to explore difficult parts of the problem
or solution space
– Agile modeling emphasizes UML as sketch.
• UML as blueprint
– relatively detailed design diagrams used either for reverse
engineering to visualize and better understand existing code,
– or for forward engineering to guide for code generation, either
manually or automatically with a tool.
r 14
Three perspectives to apply UML are ...
• Conceptual perspective – the diagrams are
interpreted as describing things in a situation of
the real world or domain of interest.
r 15
Fig. 1.6 Different perspectives with UML
Conceptual Perspective
DiceGame Die (domain model)
1 Includes 2
faceValue Raw UML class diagram
notation used to visualize
real-world concepts.
Specification or
DiceGame Die Implementation
Perspective
die1 : Die 2 faceValue : int (design class diagram)
die2 : Die
getFaceValue() : int Raw UML class diagram
play() roll() notation used to visualize
software elements.
r 17
A Short Example
r 18
Define Use Cases
Use Case: Play a Dice Game
r 19
Define a Domain Model
Fig. 1.3 Partial domain model (conceptual object model) of the dice game
Player Die
1 Rolls 2
name faceValue
1 2
Plays
1
DiceGame
1 Includes
Domain model shows the noteworthy domain concepts as objects, their attributes, and
associations.
r 20
Define Object Responsibilities and Draw Interaction Diagrams
Fig. 1.4 Sequence diagram illustrating messages between software objects
r 21
Fig. 1.4 Sequence diagram illustrating messages between software objects
play()
roll()
fv1 := getFaceValue()
roll()
fv2 := getFaceValue()
A sequence diagram (a kind of UML interaction diagram) shows the flow of messages
between software objects and thus the invocation of objects.
r 22
Define Design Class Diagrams
Fig. 1.5 Partial design class diagram (software classes)
DiceGame Die
A static view of the class (including its attributes and methods) definitions is usefully
shown with a UML class diagram.
r 23
Chapter 2
ITERATIVE, EVOLUTIONARY, AND AGILE
Objectives
• Provide motivation for the content and order of the
book
• Define an iterative and agile process
• Define fundamental concepts in the Unified Process.
24
Waterfall (Sequential) Lifecycle
25
Why the waterfall lifecycle fails?
r 26
Fig. 2.3 Percentage of change on software projects of varying sizes. (Jones 1997)
40
35
30
Requirements change
25
20
15
10
0
10 100 1000 10000
Project Size in Function Points
r 27
Iterative and Evolutionary Development
• involves early programming and testing of a partial system,
in repeating cycles.
r 28
Fig. 2.2 Iterative feedback and evolution leads towards the desired system. The
requirements and design instability lowers over time.
r 29
Timeboxing
r 30
Fig. 2.1 Iterative and Evolutionary Development (also known as iterative and
inceremental development; spiral development and evolutionary development)
3 weeks(for example)
The system
Iterations are fixed in grows
.
incrementally
length or timeboxed.
r 31
Fig. 2.4 Evolutionary analysis and design – the majority in early iterations.
1 2 3 4 5 ... 20
requirements workshops
requirements
requirements
software
software
In evolutionary iterative
development , the
requirements evolve
over a set of the early
iterations , through a
series of requirements
90 % 90 %
workshops (for
example ). Perhaps
after four iterations and
50 %
workshops , 90 % of the
requirements are 30 %
defined and refined . 20 % 20 %
5% 8% 10 %
Nevertheless , only 2%
10 % of the software is
Iteration 1 Iteration 2 Iteration 3 Iteration 4 Iteration 5
built .
week 2 week 3
week 1T W Th F M T W Th F M T W Th F
M
kickoff meeting team agile start de-scope final check-in demo and next
clarifying iteration modeling& coding& iteration and code- 2-day iteration
goals with the team . design, testing goals if freeze for the requirements planning
1 hour UML too much iteration workshop meeting;
whiteboard work baseline 2 hours
sketching.
5 hours Most OOA/D and
Use-case modeling
applying UML during
during the workshop
this period
r 32
Build-Feedback-Adapt Cycles
r 33
Benefits to Iterative Development
• Less project failure, better productivity, and lower defect
rates
• Early rather than late mitigation of high risks
• Managed complexity;
– the team is not overwhelmed by “analysis paralysis” or very long
and complex steps
• The learning within an iteration can be methodically used to
improve the development process itself, iteration by
iteration.
r 34
The Unified Process (UP)
35
Unified Process (UP)
36
Advantages of UP
The main focus remains the software product itself, and its
quality.
r 37
Fig. 2.6 Schedule-oriented terms in the UP
development cycle
iteration phase
r 38
UP Best Practices
• Get high risk and high value first
• Constant user feedback and engagement
r 39
UP Phases
1 Inception
Inception is not a requirements phase; rather a feasibility
phase, where just enough investigation is done to support a
decision to continue or stop.
The life-cycle objectives of the project are stated, so that the
needs of every stakeholder are considered. Scope and
boundary conditions, acceptance criteria and some
requirements are established.
Approximate vision, business case, scope, vague estimates.
2 Elaboration
An analysis is done to determine the risks, stability of vision of
what the product is to become, stability of architecture and
expenditure of resources.
Refined vision, iterative implementation of core architecture,
resolution of high risks, identification of most requirements
and scope, more realistic estimates.
r 40
UP Phases (2)
3 Construction
– The Construction phase is a manufacturing process. It
emphasizes managing resources and controlling operations to
optimize costs, schedules and quality. This phase is broken into
several iterations.
– Iterative implementation of the remaining lower risk and easier
elements, and preparation for deployment.
4 Transition
– The transition phase is the phase where the product is put in
the hands of its end users. It involves issues of marketing,
packaging, installing, configuring, supporting the user-
community, making corrections, etc.
– Beta tests, deployment.
r 41
Fig. 2.7 UP disciplines
Test
Deployment
Project Management
Environment
r Iterations 42
r 43
Business Modeling Discipline
r 44
Requirements Discipline
r 45
Analysis & Design Discipline
r 46
Environment Discipline
• The purpose of this discipline is to support
development work. Practically all the work in this
workflow are done in Inception phase.
r 47
Agile Methods and Attitudes
r 48
Existing Agile Methods
Rational Unified Process (RUP)
Extreme Programming (XP)
Agile Modeling
Pragmatic Programming
r 49
The Agile Manifesto
• In 2001 a group interested in iterative and agile methods
met to find common ground. Out of this came the Agile
Alliance with a manifesto and statement of principles to
capture the spirit of agile methods:
r 50
The Agile Principles
1. Our highest priority is to satisfy the customer through
early and continuous delivery of valuable software.
2. Welcome changing requirements, even late in development.
Agile processes harness change for the customer’s
competitive advantage.
3. Deliver working software frequently, from a couple of
weeks to a couple of months, with a preference to the
shorter time scale.
4. Business people and developers must work together daily
throughout the project.
5. Build projects around motivated individuals. Give them the
environment and support they need, and trust them to get
the job done.
6. The most efficient and effective method of conveying info
to and within a development team is face-to-face
conversation.
51
The Agile Principles
r 52
Agile Modeling
r 53
Agile Modeling Principles and Values
(Ambler, 2002)
• Adopting an agile method does not mean avoiding any
modeling.
• Know that all models will be inaccurate, and the final code or
design different – than the model. Only tested code
demonstrates the true design.
r 55
Agile UP
• Prefer a small set of UP activities and artifacts.
r 56