0% found this document useful (0 votes)
25 views

02 Iterative and Agile Development

Uploaded by

siddhu k
Copyright
© © All Rights Reserved
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
25 views

02 Iterative and Agile Development

Uploaded by

siddhu k
Copyright
© © All Rights Reserved
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 18

Engineering software is a big job

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

Larman Figure 2.2


More benefits of iterative development

• Less failure, better productivity,


fewer defects
• Early mitigation of risk
• Early visible progress
• Better meet real needs of
stakeholders
• No “analysis paralysis”
• Iterative process improvement

http://flic.kr/p/7fD777
Iterative and incremental development
is a broad approach

But how to operationalize?

To help with that, there are


more specific methods and practices

In particular, there are agile methods


What is an agile method?
Where does it come from?

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

Individuals and interactions over processes and tools


Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan

http://flic.kr/p/6Ag67y
Can you think of a principle and a practice
that might be based on the agile values?

Individuals and interactions over processes and tools


Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan

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

You might also like