Iterative Enhancement Model
The iterative enhancement life cycle model counters the third limitation of thewaterfall modeland tries to combine the benefits of bothprototypingand thewaterfall model.The basic idea is
that the software should be developed in increments, where each increment adds some functionalcapability to the system until the full system is implemented. At each step extensions and designmodifications can be made. An advantage of this approach is that it can result in better testing,since testing each increment is likely to be easier than testing entire system like in the waterfallmodel. Furthermore, as inprototyping,the increments provides feedback to the client which isuseful for determining the final requirements of the system.In the first step of iterative enhancement model, a simple initial implementation is done for asubset of the overall problem. This subset is the one that contains some of the key aspects of theproblem which are easy to understand and implement, and which forms a useful and usablesystem. A project control list is created which contains, in an order, all the tasks that must beperformed to obtain the final implementation. This project control list gives an idea of how farthe project is at any given step from the final system.Each step consists of removing the next step from the list. Designing the implementation for theselected task, coding and testing the implementation, and performing an analysis of the partialsystem obtained after this step and updating the list as a result of the analysis. These three phasesare called the design phase, implementation phase and analysis phase. The process is iterateduntil the project control list is empty, at the time the final implementation of the system will beavailable. The process involved in iterative enhancement model is shown in the figure below.
The Iterative Enhancement Model
The project control list guides the iteration steps and keeps track of all tasks that must be done.The tasks in the list can be include redesign of defective components found during analysis. Eachentry in that list is a task that should be performed in one step of the iterative enhancementprocess, and should be simple enough to be completely understood. Selecting tasks in thismanner will minimize the chances of errors and reduce the redesign work.
The waterfall model is viable for software products that do not change very much once they arespecified. But for software products that have their feature sets redefined during developmentbecause of user feedback and other factors, the traditional waterfall model is no longerappropriate.- The Evolutionary EVO development model divides the development cycle into smaller,incremental waterfall models in which users are able to get access to theproduct at the end of each cycle.