An iterative life cycle model does not attempt to start with a full specification of requirements. Instead, development begins by specifying and implementing just part of the software, which can then be reviewed in order to identify further requirements. This process is then repeated, producing a new version of the software for each cycle of the model.
The iterative model is best thought of as a cyclical process. After an initial planning phase, a small handful of stages are repeated over and over, with each completion of the cycle incrementally improving and iterating on the software. Enhancements can quickly be recognized and implemented throughout each iteration, allowing the next iteration to be at least marginally better than the last.
Planning & Requirements:
As with most any development project, the first step is go through an initial planning stage to map out the specification documents, establish software or hardware requirements, and generally prepare for the upcoming stages of the cycle.
Analysis & Design:
Once planning is complete, an analysis is performed to nail down the appropriate business logic, database models, and the like that will be required at this stage in the project. The design stage also occurs here, establishing any technical requirements (languages, data layers, services, etc) that will be utilized in order to meet the needs of the analysis stage.
With the planning and analysis out of the way, the actual implementation and coding process can now begin. All planning, specification, and design docs up to this point are coded and implemented into this initial iteration of the project.
Once this current build iteration has been coded and implemented, the next step is to go through a series of testing procedures to identify and locate any potential bugs or issues that have have cropped up.
Once all prior stages have been completed, it is time for a thorough evaluation of development up to this stage. This allows the entire team, as well as clients or other outside parties, to examine where the project is at, where it needs to be, what can or should change, and so on.
Advantages of Iterative model:
In iterative model we can only create a high-level design of the application before we actually begin to build the product and define the design solution for the entire product. Later on we can design and built a skeleton version of that, and then evolved the design based on what had been built.
In iterative model we are building and improving the product step by step. Hence we can track the defects at early stages. This avoids the downward flow of the defects.
In iterative model we can get the reliable user feedback. When presenting sketches and blueprints of the product to users for their feedback, we are effectively asking them to imagine how the product will work.
In iterative model less time is spent on documenting and more time is given for designing.
Disadvantages of Iterative model:
Costly Late-Stage Issues: While not necessarily a problem for all projects, due to the minimal initial planning before coding and implementation begin, when utilizing an iterative model, it is possible that an unforeseen issue in design or underlying system architecture will arise late into the project.
Increased Pressure on User Engagement: Unlike the waterfall model, which emphasizes nearly all user/client engagement within the initial stages of the project during a brief crunch time period, the iterative model often requires user engagement throughout the entirety of the process. This is sometimes an unfortunate obligation, since each new iteration will likely require testing and feedback from users in order to properly evaluate any necessary changes.
Feature Creep: Not only does the iterative model require user feedback throughout the process, but this also inherently means the project may be subject to undesired feature creep, whereby users experience the changes in each iteration, and are inclined to constantly put forth new requests for additional features to be added to future versions.
There is various software development models in SDLC approach available and used by all software application development industries. Each software development application has different requirements based on internal and external factors. There have some situations where the software development has highly required the use of iteration model is more suitable and handle the problem very smartly:
When the requirements of the complete system are clearly defined and understood by the development expertise.
Major requirements of the system must be defined initially; however, some functionalities or requested enhancements may evolve with time to time.
Resources with required skill set are not available and are planned to be used on contract basis for specific iterations.
A new technology is being used and is being learnt by the development team while working on the project.
There are some high risk features and goals which may change in the future.
There is a time to the market constraint.