ISTQB definition:
Not all life cycles are sequential. There are also iterative and incremental life cycles where, instead of one large development timeline from beginning to end, we cycle through a number of smaller self-contained life cycle phases for the same project. As with the V-model, there are many variants of the iterative and incremental life cycle.
Incremental: complete one piece at a time (scheduling or staging strategy). Each increment may be delivered to the customer
Iterative: start with a rough product and refine it, iteratively (rework strategy). The final version is only delivered to the customer (although in practice, intermediate versions may be delivered to selected customers to get feedback).
Human language:
Different types of projects have different life cycles, management styles, and organizational structures. The iterative and incremental development process is closely associated with Agile project management, most notably the Scrum methodology.
Iterative and incremental development are two different ways of managing a project. These development models are developed in multiple cycles of iterations. In both models, the features to be implemented are grouped together.
Iterative
An iterative model means software development activities are systematically repeated in cycles known as iterations. The basic idea behind the iterative method is to develop a system through repeated cycles (iterations). It is a repeated process, a series of steps of developing, reviewing, and testing the product until improved results are achieved. In terms of developing software, a purely iterative model does not produce a working system until the final iteration. A company takes a general idea of what it is building without having a clear picture of it and layers everything else on top over time. In the iterative model, the requirements are broken down into multiple pieces or modules that are developed separately and integrated one after another.
Teams gradually build up the features and functions but don’t wait until each of these is complete before releasing, the goal for this each initial iteration is to create a product to which the user can react. Each module is a standalone product, which can be presented to a client. The rest of the modules are added with every new release.
In the iterative development model, learning and feedback on the product come from both the development and use of the system. When you move from one version to another, you decide (based on feedback) what you need in the new version as a better choice and what you need to discard.
The iterative solution is applicable when the deadlines are tight or there is a need to get the application to the market early and the features may evolve with time without waiting for each of them to be completed before a release.
The Benefits of an Iterative Model
Suitability for large, complex, high-risk projects with unclear requirements;
Early user engagement;
Flexibility;
The rapid development of functionality;
Simplicity in risk management;
Easiness in testing and debugging due to small iterations, which means fewer defects in a product;
High-quality feedback to a client;
More than one activity in one iteration;
Iterative development provides an opportunity to see the picture from the beginning and guide the whole development process. We didn't carve things in stone from the beginning, which makes it easier for us to change them later, and we know we need to.
Incremental
It is an approach that breaks the software development process down into small, manageable portions known as increments. The project is started with a comparatively small task or component, and increments are made in each cycle of the iterations until the desired product is reached.
In each increment, a slice of functionality is delivered through cross-discipline work, from the requirements to the deployment. Each increment is based on the previous one. The incremental model is where you build the entire solution in parts, but at the end of each phase or section, you have nothing to review or feedback on.
The Benefits of an Incremental Model
Reduced overall product failure risks;
Parallel development;
The ability to complete modules at different times.
The main downside of incremental development is the fact that a system has to be fully defined at the very beginning of the life cycle before it is broken down into several modules and constructed incrementally. The incremental solution would be great if you deal with new technology and dynamic requirements, or expect small working deliveries with a high speed of getting the product to market with frequent releases as soon as possible.
Compared to the iterative model, the incremental approach requires a higher number of resources as well as proper planning and designing. It provides deliverables that can be used by a user immediately. Because the increment is done in detail, a lot of energy is wasted when a piece needs to be reworked. Although both programs aim at the same goal, incremental planning does not really reduce the risk of delivering unsuitable things to customers.
Life example:
Let's take a look at the example of Iterative and incremental development models. Imagine that our development team builds a product detail page for the website
Example 1: Our development team uses an Iterative development model
So, using the Iterative development model, our development team split our development into 5 iterations with a duration of 2 weeks each. During the first iteration, our team build the model of our product detail page
After the first iteration was passed, the development team received our developed page, made a review, got feedback from the client, and list of improvements that should be done on the page in the next iteration:
2. Improvement of Product info block
3. Improvements in the product images block
4. Improvements in the menu
5. Improvement of the Header
As you can see, our page has the functionality to buy a product, so it can be released, but make mentioned improvements during the next iteration. For example, after the second iteration, we improved the product info block
After the third iteration, we improved the product images block
After the fourth iteration, we improved the menu
And after the fifth iteration, we improved the header
Now let's consider the same page and scenario but if we were using the incremental development model
Example 2: Our development team uses an incremental development model
So, using the incremental development model our development team split our development into 5 iterations with a duration of 2 weeks each, the same as in example 1, but, instead of developing a model with components for the whole page, and then improving them, now we concentrate on 1 component during one iteration, and our development process looks like this: Iteration 1. We build only the Product info block but with all details
Iteration 2. We add Account and Card components
Iteration 3. We add a Search component
Iteration 4. We add a navigation menu
Iteration 5. We add product images and carousels to them
As you can see, both the Iterative and incremental development models use iteration to build the product, but the way how they do that is slightly different.
Conclusion:
So, if you are asked at an interview: What are Iterative and incremental development models? The best way to answer is:
An iterative model - means software development activities are systematically repeated in cycles known as iterations. The basic idea behind the iterative method is to develop a system through repeated cycles (iterations). It is a repeated process, a series of steps of developing, reviewing, and testing the product until improved results are achieved.
An Incremental - It is an approach that breaks the software development process down into small, manageable portions known as increments. The project is started with a comparatively small task or component, and increments are made in each cycle of the iterations until the desired product is reached.
Comments