Iterative Model in Software Engineering
The iterative model is one of the easiest to implement software development life cycle models. There are certain scenarios where the initial or the core software requirements are clearly defined, but the actual span or the full set of features of the project are unknown.
Moreover, the development company might decide to not give the full functionality of the software in one go. Rather they prefer to give it out through periodic updates. Or the client requests some functionality enhancements during the process of development.
In such cases, the iterative model is used.
What is Iterative Model?
The iterative process model is the implementation of the software development life cycle in which the initial development is started based on the initial requirements and more features are added to the base software product with the ongoing iterations until the final system is created.
In essence, the iterative model breaks down the software development process of a very big application into smaller pieces.
The benefit of this model is that it is employed during the earlier stages of SDLC. This permits the project developers and testers to find practical or design-related flaws as early as possible. This furthermore permits them to take corrective measures in a restricted budget.
Features of Iterative Model
The iterative model was designed as an improvement to the existing waterfall model. The waterfall model is a linear SDLC model whereas the iterative model is cyclical in nature.
Once the initial requirement planning process is completed, some of the other stages are repeated. As these cycles are completed and implemented, the overall end product is improved and iterated on.
- The first stage is the planning stage. It is used to map out the particular requirements. Be it either hardware or software. Here, we also prepare for the other stages to follow.
- The second stage is the analysis stage. It is performed to check if the required models, business logic are incorporated into the project or not.
Here, we breakdown the expected deliverables into more detailed business requirements. A Requirement Management Plan is created to define how the requirements will be documented, communicated, tracked, and changed throughout the rest of the project.
The direction that the project will take through and the use of project strategy documents is also defined during this stage.
- Then comes the design stage. In this stage, the team on the project should have a complete set of requirements to work from along with the direction which is to be taken for the project and a Conceptual Systems Design.
Even if the project is small and the requirements for the project are simple, still there is a mental design process that takes place in between understanding the requirements of the project and starting to build it.
Design becomes more and more important as the size of the project becomes larger and more complex. The Design stage is where many potential solutions for the project are analyzed. The solutions are narrowed down. After that, the most effective and efficient way to construct the system is decided.
The technical requirements for the project are detailed to meet any needs which are found out during the analysis stage.
- The fourth stage is the implementation and coding stage. All the requirements, planning, and design plans are implemented and coded in this stage. This is the point in the project when the actual construction of the system starts.
This is the time to start writing the program code for the project.
- The fifth stage is the testing stage. Here the current build iteration is tested against some standards and norms to check if they satisfy them. These testing procedures are set in place to find out any bugs or errors in our system.
The solution of the project is revalidated for stability. In other words, it is ensured that the correction of one bug does not lead to any new bugs in our system.
There are various types of testing techniques that can be implemented by the team so as to test their system. This includes – performance testing, stress testing, security testing, requirements testing, usability testing, multi-site testing, disaster recovery testing, etc.
- Finally, when all these stages are completed. A meticulous evaluation is done on the system developed up until this stage. The development team and the stakeholders are able to examine the system and give their feedback regarding various aspects of the system.
These stages are repeated if any new requirements pop up, or any error/ bug is identified in our system.
Once these stages are finished. In other words, all the requirements are fulfilled and meticulously checked. The most recently built iteration of the system is given to the end-user.
Advantages of Iterative Model
- This model produces a working software much quickly and early during the SDLC.
- This model is very flexible. As new functionality can be added to it at any time of development.
- This model is considerably cheap as it is less costly to change requirements as compared to the other process models.
- The end-user or the stakeholders can give their feedback quickly, which can then be implemented into the system.
- The errors and bugs in the system can be identified early.
- Takes smaller development teams as compared to other process models.
Disadvantages of Iterative Model
- Problems pertaining to the system architecture can come up because all the requirements are not gathered upfront.
- It is not a good choice for small projects.
- More resource-intensive than waterfall model.
- Risk analysis requires highly qualified specialists to check the risks in our system.
- The whole process is difficult to manage.
The iterative model iterates planning, design, implementation, and testing stages again and again. This helps in ensuring that the final product built iteratively, is according to the standards required by the user.
This model gives an opportunity to identify and rectify any major design or planning flaws in the process model. This is because of its cyclic nature. Furthermore, the iterative model is really beneficial as it can accommodate changes in the initially specified requirements for the system.