Difference Between Iterative and Incremental Development in Agile

The Agile project methodology can work in either iterative or incremental development approaches. Given below is the definition for both of the terms.

Incremental Development approach

In the incremental development approach, the new functionality gets added in small chunks. These small chunks get integrated to complete the working software functionality.

Iterative Development approach

In the iterative development approach, the new functionality developed gets performed repeatedly in a cyclic manner i.e. adding new functionality in a repetitive manner. The iterative approach has invented to overcome the problems and inefficiencies of the waterfall model. The rationale behind the iterative development approach is to develop an application through repeated cycles where a small portion of the application gets developed in an incremental manner to build the complete application. The developers maintain the application code version in the repository is the current iteration gets completed. In this model, the developers keep on learning from the last iteration and implement the best practices in the next iteration and so on which brings quality development to the overall application development.

Iterative and Incremental Development

Such an iterative approach that yields a subset of the software requirements in every cycle results in the evolution of the full working application. The iterative approach can easily absorb the design changes made in each cycle and convert them into the working functions as a part of the working software. In other words, the application or software functionality is split into multiple portions as increments and these portions are implemented as a working software functionality in each increment. Each cycle of the iterative model is committed to the delivery of the working software version for a particular feature to the end-users. Since the software version is available to the end-user who can provide the feedback and based on the feedback the design can be altered or further improved to evolve the next software version.

Iterative vs Incremental Development

Let’s understand the iterative as well as incremental software development and delivery approach with the help of an example in an agile context. Consider that we want to introduce a new login functionality to an existing website in order to enhance its security using the Agile methodology. We agreed to deliver the new login functionality on the website in the two-week delivery cycles or iterations.

First iteration

In this iteration, the team agreed to deliver the working version of the login functionality on the website through which the users can log in. The story can be further split into the following tasks.

  • Task 1: Develop a new web page that enables the users to load the login form on the website.
  • Task 2: On the web page, add a login form that has the two mandatory fields. They are the username and password. The web page should have the login button at the bottom of the form elements. The task just requires the traditional HTML form without styling or validation.
  • Task 3: Develop a new welcome web page that should be displayed post successful user log in. The authenticated users should see the success message.

It is just the first version that is expected to work with limited functionality. The software functionality procured after the completion of the first iteration is called the first iteration deliverable. The login feature functionality has properly gone through the design, development, and testing process as a part of the current iteration.

Second iteration

In the second iteration, the team has agreed to enhance the login functionality developed in the first iteration. The story can be further split into the following tasks.

  • Task 1: Develop the validation rules on both input fields i.e. password and username such as both fields are mandatory, special characters are not allowed in the username field, etc.
  • Task 2: On the new login page, add CSS to glorify the web page.
  • Task 3: Develop the feature to display the messages when the user enters invalid login credentials.

In this iteration, we have included the enhanced features to the existing log in functionality on the web page created as a part of first iteration. Therefore, we can say that we have incremented the existing login functionality to the next level features to add validation and glorify the look and feel of the web page.

Third iteration

In the third iteration, the team has agreed to further enhance the new login functionality, by adding the following features.

  • Task 1: Include the Forgotten password functionality to recover the password.
  • Task 2: Include the Remember me checkbox, so that the login credentials can be cached into the cookie for future login from the trusted computers.
  • Task 3: Include the redirection mechanism to redirect the control to home pages where the authenticated user can do the required operations with the current application.

We can notice that in each iteration, the login functionality has incremented from the basic functionality to the complete features for the users. In each iteration, the developers are getting the feedback from the end users through which they kept enhancing the application features in each iteration and after the three iterations the full solution has delivered to the end user with which they have become comfortable in each cycle.

Over to you:

Both increment and iterative development approaches are different from each other. In the former approach, the software functionality has developed in chunks or increments whereas, in the latter the full software has developed in iterations following the feedback from the end user in each iteration.


⇓ Subscribe Us ⇓


If you are not regular reader of this website then highly recommends you to Sign up for our free email newsletter!! Sign up just providing your email address below:


 

Check email in your inbox for confirmation to get latest updates Software Testing for free.


  Happy Testing!!!
 

Leave a Comment

Share This Post