The iterative enhancement model counters the third limitation of the waterfall model and tries to combine a benefit of both prototyping and the waterfall model. The basic idea is that the software should be developed in increments, each increment adding some functional capability to the system until the full system is implemented. At each step, extensions and design modifications can be made.
An advantage of this approach is that it can result in better testing because testing each increment is likely to be easier than testing the entire system as in the waterfall model. The models provide feedback to the client i.e., useful for determining the requirements of the system.
In the first step of this model, a simple initial implementation is a subset of the overall problem. This subset contains s key aspects of the problem that are easy to understand and impl which form a useful and usable system. A project control list is c contains, in order, all the tasks that must be performed to obtain implementation. This project control list gives an idea of how far is at any given step from the final system.
Each step consists of removing the next task from the list, dei implementation for the selected task, coding and testing the simple performing an analysis of the partial system obtained after updating the list as a result of the analysis. These three phases are the design phase, implementation phase, and analysis phase.
is integrated until the project control list is empty, at which time the implementation of the system will be available.
The project control list guides the iteration steps and keeps track of what must be done. Based on the analysis, one of the tasks includes a redesign of defective components or redesign of the ent Redesign of the system will occur only in the initial steps.
The design would have stabilized and there is less chance of redE entry in the list is a task that should be performed in one step of t enhancement process and should be completely understood tasks in this manner will minimize the chance of error and reduce the redesign work.
The design and implementation phases of each step can be performed in a top-down manner or by using some other technique.
One effective use of this type of model is for product development, in which the developers themselves provide the specifications and therefore have a lot of control on what specifications go in the system and what stays out.
In a customized software development, where the client has to essentially provide and approve the specifications, it is not always clear how this process can be applied. Another practical problem with this type of development project comes in generating the business contract-how will the cost of additional features be determined and negotiated, particularly because the client organization is likely to be tied to the original vendor who developed the first version.
Overall, in these types of projects, this process model can be useful if the "core" of the applications to be developed is well understood and the "increments" can be easily defined and negotiated. In client-oriented projects, this process has the major advantage that the client's organization does not have to pay for the entire software together, it can get the main part of the software developed and perform a cost-benefit analysis for it before enhancing the software with more capabilities