The Iterative Model is a particular implementation of a software development life cycle (SDLC) that focuses on an initial, simplified implementation, which then progressively gains more complexity and a broader feature set until the final system is complete. Iterative Model in Software Development Process Iterative development is a way of breaking down the software development of a large application into smaller chunks. In iterative development, feature code is designed, developed and tested in repeated cycles. With each iteration, additional features can be designed, developed and tested until there is a fully functional software application ready to be deployed to customers. Iterative and incremental development are key practices in Agile Development methodologies. In Agile methodologies, the shorter development cycle, referred to as an iteration or sprint, is time- boxed(limited to certain increment of time, such two weeks). At the end of the iteration, working code is expected that can be demonstrated for a customer. Iterative development contrasts a traditional waterfall method in which phase of the software development cycle is “gated”. Coding doesn’t begin until design of the entire software application is complete and has gone through a phase gate review. When to use Iterative Model? Iterative model is used in the following scenarios: • The requirement of the system are defined and understood clearly. • New technology is being used and is being learned by the development team. • There are some high-risk features and goals, which might change in the future. • The resources with needed skill sets are unavailable and are planned to be used on a contract basis for specific iterations. The Iterative Model Phases of Iterative Model The iterative life cycle model comprises repeating the below-mentioned four stages as a sequence. These are: Requirements Phase: In the requirement phase of software development, the system related information is gathered and analyzed. The collected requirements are then planned accordingly for developing the system. Design Phase: In the Design phase, the software solution is prepared to meet the necessities for the design. The system design may be a new one or the extension of a previous build one. Implementation and Test: In the implementation as well as a test phase, the system is developed by coding and building the user interface and modules which is then incorporated and tested. Review Phase: The review phase is where the software is estimated and checked as per the current requirement. Then, further requirements are reviewed discussed and reviewed to propose for an update in the next iteration. • At every stage and cycle of this model, the decision is taken if the system created by the iteration or cycle will be rejected or not, or needs to process further for next cycle which is technically termed as incremental prototyping. Key to successful use of an iterative software development life cycle is: • Rigorous validation of requirements and verification (including testing) of each version of the software against those requirements within each cycle of the model. The first three phases of the example of iterative model is in fact an abbreviated form of sequential V-Model or Waterfall Model of development. Each cycle of the model produces software that requires testing at the unit level, for software integration, for system integration and for acceptance. As the software evolves through successive cycles, tests have to be repeated and extended to verify each version of the software. Iterative Development Advantages Generates working software quickly and early during the software life cycle. More flexible – less costly to change scope and requirements. Easier to test and debug during a smaller iteration. Easier to manage risk because risky pieces are identified and handled during its iteration. Each iteration is an easily managed milestones. Iterative Development Disadvantages Each phase of an iteration is rigid and do not overlap each other. Problems may arise pertaining to system architecture because not all requirements are gathered up front for the entire software life cycle. It is not suitable for smaller projects. Highly skilled resources are required for skill analysis. Thank you :)