The requirements are collected upfront and split into small increments or slices. In the first increment, some of the core functionalities are implemented, and then these are given to the customer who gives feedback. And based on the feedback, the software is refined. This is called an iteration with fixed functionalities. Further, the same functionality gets refined iteratively, and also, at the same time, new functionalities are implemented; these are called increments. So, this model is called an incremental model with iterations.
The key characteristics of incremental and iterative development are that, built the system incrementally with small parts. There are a number of iterations for each Increment and each time a deliverable is given to the customer in the form of a working program which the customer can use and give feedback.
Each deliverable to the customer would have incorporated the feedback he had given in the previous increment and added new functionalities. It can be easily seen that this is a good way to manage changes; the customer is encouraged to feedbacks and incorporated by the developers.
The main idea behind the incremental model, according to Victor Basili
The basic idea is to take advantage of what was being learned during earlier, incremental, deliverable versions of the system. Learning comes from both the development and use of the system. Start with the simple implementation of a subset of the software requirements and iteratively enhance the evolving sequence of versions. At each version, design modifications are made, along with adding new functional capabilities.
Key Characteristics
- Builds system incrementally.
- It consists of a planned number of iterations.
- Each iteration produces a working system.
- It facilitates and manages changes.
It is a foundation of agile techniques and the basics for Rational Unified Process (RUP) and Extreme Programming (XP).
A detailed description of the Incremental Model
In a waterfall model, there is a single release initially. All the functionality requirements are collected, designed, coded, tested, and given to the customer as a single release, whereas, in incremental many releases are there. After each release, customer feedback is taken, and the functionality that was already delivered is again changed to meet the customer’s requirements.
The first increment is typically the core functionality, then the successive increments refine the existing functionality and add or fix functionality. The final increment is the complete product. This is called the incremental model with iteration.
The purely incremental model: There is no iteration in which the system is just developed in small increments and given to the customer, but the customer feedback is not really taken to change the existing functionality; there is no iteration.
The Incremental model with iteration: The functionalities are delivered to the customer in increments. But, also the customer feedback is taken after each functionality is delivered, and those are incorporated in the next iteration. Of course, each increment or iteration is a small and a sort of mini-project with a separate life cycle. For example, in each small increment, maybe a waterfall model can be used.
Incremental delivery Process
Incremental delivery
The initial requirements are split into increments increment 1, 2, 3; increment 1 is developed, increment 2 gets developed. So, this is like a waterfall model design built to install customer feedback. Increment 1 is first developed, then increment 2 is developed, then increment 3 gets developed.
The Incremental Process
The development model is that first, we gather all customer requirements, document them, and plan the increments and the incremental delivery plan. Then design the increment, build the increment, implement the increment, give it to the customer for evaluation, get feedback, incorporate feedback, take the next increment, etc.
Because there are several increments out of which the designer needs to choose one of the increments for delivery in the next iteration, which increment should be selected first?
Criteria to choose increment order
- Some parts will be prerequisites of the other parts; without that, the system will not work.
- The V by C ratio, where V is the value to the customer, is graded on a scale of 1 to 10, and C is a score of 0 to 10 representing the cost to the developers. So, whichever increment ratio is higher, and no prerequisites exist.
- Purchasing plans
- Ad hoc inquiry
One of the incremental model derivatives is the RAD model, and RAD stands for Rapid Application Development.
Reference
- Fundamentals of Software Engineering Book & NPTEL Video Lectures by Rajib Mall.
521 total views, 1 views today