02 Iterative and Agile Development
02 Iterative and Agile Development
http://flic.kr/p/7GereG http://flic.kr/p/5w9rXP
Practical issue:
What order should tasks be done in?
That is, what process to use?
http://flic.kr/p/9ksxQa
The old way: Waterfall (sequential) model
http://en.wikipedia.org/wiki/File:Waterfall_model_%281%29.svg
Using Waterfall turns out to be a poor practice
• High failure rates
• Low productivity
• High defect rates
Statistic
45%: of features Statistic
in requirements Early
: schedule
never used and estimates
off by up to 400%
Why Waterfall doesn’t work
False assumption:
Specifications predictable and stable,
and can be correctly defined at the start,
with low change rates
Statistic
25%: change in Statistic
requirements 35% to: 50% change
for large projects
Waterfall is a “defined”
process control model
(think mass manufacturing)
Software development
needs an “empirical” model
(think new product development)
http://flic.kr/p/4Xt7Xe http://flic.kr/p/9xmccb
Basis of empirical process model:
Feedback and adaptation
• Feedback from early development
– Programmers reading specifications
Feedback
– Client demos
• Feedback from tests to refine
design/implementation
• Feedback from progress to refine
schedules/estimates Adaptation
• Feedback from client/marketplace
to refine/re-prioritize features
Iterative and incremental development
also called iterative and evolutionary
How long should iterations be?
• Short is good
• 2 to 6 weeks
• 1 is too short to get meaningful feedback
• Long iterations subvert the core motivation
http://flic.kr/p/368zW7
Example from Larman
As an example (not a recipe), in a two-week iteration half-way
through a project, perhaps:
•Monday is spent primarily on distributing and clarifying the
tasks and requirements of the iteration, while one person
reverse-engineers the last iteration's code into UML diagrams
(via a CASE tool), and prints and displays noteworthy diagrams.
•Tuesday is spent at whiteboards doing pair design work drawing
rough UML diagrams captured on digital cameras, and writing
some pseudocode and design notes.
•The remaining eight days are spent on implementation, testing
(unit, acceptance, usability, ...), further design, integration, daily
builds, system testing, and stabilization of the partial system.
•Other activities include demonstrations and evaluations with
stakeholders, and planning for the next iteration.
System converges over time
http://flic.kr/p/7fD777
Iterative and incremental development
is a broad approach
Types of advice
more general more specific
values principles practices
values,
Agile values, beget
Agile method principles,
principles
practices
Recall: Agile Values
From the Agile Manifesto
http://flic.kr/p/6Ag67y
Can you think of a principle and a practice
that might be based on the agile values?
http://flic.kr/p/9ksxQa
• Agile is an approach to software development under
which requirements and solutions evlove thru the
collaborative effort of self organizing and cross
functional teams and their customer/end user
• Both development and testing activities are
concurrent
• There is no separate teams all are in one team i.e
agile team
Examples of agile methods and their practices
• Scrum
– Common project workroom
– Self-organizing teams
– Daily scrum
– …
• Extreme programming (XP)
– Pair programming
– Test-driven development
– Planning game
– …
http://flic.kr/p/8Mbo3N