0% found this document useful (0 votes)
29 views22 pages

Incremental and Iterative Development (IID) : Key Characteristics

Uploaded by

Aayush Thapa
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
29 views22 pages

Incremental and Iterative Development (IID) : Key Characteristics

Uploaded by

Aayush Thapa
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 22

Incremental and Iterative Development (IID)

Key characteristics
Builds system incrementally
Consists of a planned number of iterations
Each iteration produces a working program
Benefits
Facilitates and manages changes
Foundation of agile techniques and the basis for
Rational Unified Process (RUP)
Extreme Programming (XP)
Customer’s Perspective

A AB A

B B
Incremental Model

Requirements Split into


Outline Features Design

Develop Validate Integrate Validate


Increment Increment Increment System
Final
System
Incremental Model: Requirements
Split into Features

Requirements: High Level Analysis

Slice
Slice

Slice

Slice

Slice

Slice

Slice

Slice

Slice

Slice

Slice

Slice
Incremental Model
Waterfall: single release

Iterative: many releases (increments)

First increment: core functionality

Successive increments: add/fix functionality

Final increment: the complete product

Each iteration: a short mini-project with a separate


lifecycle

e.g., waterfall
Incremental delivery
increment design
1 build

install
Customer
Feedback
design
increment
build
2
install
Customer
Feedback
design
increment
build
3
install
Customer
Feedback
Incremental process

Planned Identify System Objectives


incremental
Plan increments
delivery
Incremental delivery plan

Design increment

Build the increment


Repeat for each Feedback
increment Implement the increment

Evaluate the results


Which step first?

 Some steps will be pre-requisite because of physical


dependencies
 Others may be in any order
 Value to cost ratios may be used
V/C where
V is a score 1-10 representing value to customer
C is a score 0-10 representing cost to developers
V/C ratios: an example

step value cost ratio

profit reports 9 2 4.5 2nd

online database 1 9 0.11 5th

ad hoc enquiry 5 5 1 4th

purchasing plans 9 4 2.25 3rd

profit-based pay for 9 1 9 1st


managers
Evolutionary Model with Iterations
An Evolutionary and Iterative Development Process...
Recognizes the reality of changing requirements
Capers Jones’s research on 8000 projects: 40% of final
requirements arrived after development had already
begun
Promotes early risk mitigation:
Breaks down the system into mini-projects and focuses
on the riskier issues first.
 “plan a little, design a little, and code a little”
Encourages all development participants to be involved
earlier on,:
End users, Testers, integrators, and technical writers
Evolutionary Model with Iteration

 “A complex system will be most successful if


implemented in small steps… “retreat” to a previous
successful step on failure… opportunity to receive
some feedback from the real world before throwing in
all resources… and you can correct possible errors…”
Tom Glib in Software Metrics
Evolutionary model with iteration

 Evolutionary iterative development implies that the


requirements, plan, estimates, and solution evolve or are
refined over the course of the iterations, rather than fully
defined and “frozen” in a major up-front specification
effort before the development iterations begin.
Evolutionary methods are consistent with the pattern of
unpredictable discovery and change in new product
development.” Craig Larman
Evolutionary Model

 First develop the core modules of the software.

 The initial skeletal software is refined into increasing


levels of capability: (Iterations)

By adding new functionalities in successive versions.


Activities in an Iteration

Software developed over several “mini waterfalls”.

The result of a single iteration:

Ends with delivery of some tangible code

An incremental improvement to the software ---


leads to evolutionary development
Evolutionary Model with Iteration
Outcome of each iteration: tested, integrated, executable
system

Iteration length is short and fixed

 Usually between 2 and 6 weeks

Development takes many iterations (for example: 10-15)

Does not “freeze” requirements and then conservatively design


:

Opportunity exists to modify requirements as well as the


design…
Evolutionary Model (CONT.)

 Successive versions:

Functioning systems capable of performing some


useful work.

A new release may include new functionality:

Also existing functionality in the current release


might have been enhanced.
Evolutionary Model
Evolves an initial implementation with user feedback:
Multiple versions until the final version.

Initial
Specification version
Initial Rough
Intermediate
Requirements
Development versions

Final
Validation version
Advantages of Evolutionary Model

 Users get a chance to experiment with a partially


developed system:
Much before the full working version is released,
 Helps finding exact user requirements:
Software more likely to meet exact user requirements.
 Core modules get tested thoroughly:
Reduces chances of errors in final delivered software.
Advantages of evolutionary model

Better management of complexity by developing one


increment at a time.

Better management of changing requirements.

Can get customer feedback and incorporate them much


more efficiently:

As compared when customer feedbacks come only


after the development work is complete.
Advantages of Evolutionary Model with
Iteration

 Training can start on an earlier release

customer feedback taken into account

 Frequent releases allow developers to fix unanticipated


problems quicker.
Evolutionary Model: Problems

The process is intangible:


No regular, well-defined deliverables.
The process is unpredictable:
Hard to manage, e.g., scheduling, workforce
allocation, etc.
Systems are rather poorly structured:
Continual, unpredictable changes tend to degrade
the software structure.
Systems may not even converge to a final version.

You might also like