Incremental Vs Iterative Methodology

Incremental Vs Iterative Methodologies

Incremental Vs Iterative Methodologies

The software development methodologies have evolved over the years. We started with sequential methodology (Waterfall) and adopted Incremental and Iterative methodologies, as methodologies evolved.
We use Incremental and Iterative methodologies interchangeably though they are different in their approaches. In this post, we would discuss the differences between Incremental and Iterative Methodologies.
These are approaches rather than specific methodologies. We can group SDLC methodologies under these approaches, just like we have Waterfall as a sequential methodology

Incremental Methodology

Incremental methodology refers to building the product in increments, one piece at a time. These increments are typically complimentary to each other. Once we complete all the increments, the product is complete.
It’s like constructing a house from scratch. We first get the Foundation level constructed. Then the ground floor, First floor, Second Floor and so on. This is a good example of an incremental approach.
The diagram below demonstrates the approach:
Incremental Methodology

As you can see in the diagram, each of the increments essentially follow all the phases of software development. Each increment provides inputs to the next increment.

Characteristics of Incremental Methodologies

Incremental methodologies have evolved from the sequential methodologies. This approach of software development has proved to be more effective as compared to Sequential approach.
Sequential Approach
The key characteristics of this approach provides the reasons:
Risk mitigation for Customers: The software is built in increments, thereby reducing the overall risk. In sequential approach, the customers get to test the software only at the end of all the phases. In case of big projects, the wait could be 9-12 months or even more.
Having a product/software built in 9-12 months and finding it to be not as per expectations is a massive risk for the customers. Using incremental approach, we minimize the risk as each increment can be delivered in 2-3 months.
Improved Customer Collaboration: Short increment cycles improve the customer collaboration with the development. This is an important improvement over sequential approach. It’s good for the development team as well as it allows them to understand customer expectations on a rather regular basis.
Using Incremental approach: An incremental approach will always be beneficial compared to sequential approach, specially when the project size is not small.
Examples of Iterative software development methodologies are:

  • Multiple Waterfall methodology

Iterative Approach

Iterative approach has a major difference with the incremental approach. Each increment in incremental approach is developed assuming it is done correctly, without having the need to reverse it.
In our example of a house, each level of the house is constructed one after the other. Once the Foundation level is completed, reversing it (if we find issues with it) is still a significant effort and will not be feasible as it will increase the cost as well as timeline.
In a frequently changing requirements scenario, even incremental approach is not a suitable approach. We need an approach, which needs to achieve the following:

  • Ability to incorporate changes at any stage 
  • Involving customers more frequently 

An iterative approach of development does precisely that.
The software is developed in extremely short iterations involving customer collaboration at the end of each iteration. Even during the iteration, the developers follow an approach, which allows them to get their work validated every day.
For example, If I am a developer developing several screens in an iteration as:

  • User Master
  • User Roles
  • Role assignment etc

Typically, My approach would be to develop one screen, say User Master and immediately show it to the customer or a Product Owner. In case, it is not right, I can discard it and re-develop it the next day.
Even if I have to re-do it, the team looses one person day of work.
This is the key Characteristic of doing, undoing and redoing (DUR) without incurring too much of cost or risks.
Another important characteristic of this approach is the frequent customer collaboration at the end of every iteration. Since the iteration is small, customer collaboration provides an early feedback on the product, thereby mitigating the risk of gap in the customer expectations and software team’s understanding.
Using Iterative approach: An Iterative approach will always be beneficial compared to Incremental approach, specially when the project requirements are expected to change a lot.
Examples of Iterative software development methodologies are:

  • Spiral Methodology
  • DSDM
  • Extreme Programming
  • Pair Programming etc

About Techcanvass

Techcanvass is an IT certifications training academy for professionals offering courses in Business Analysis, automation testing and analytics. We are an IIBA Endorsed education provider (EEP) and iSQI authorized training partner for conducting business analyst certification courses.

Leave a Reply

Your email address will not be published. Required fields are marked *