SDLC - Iterative Model
The iterative model is a type of software development life cycle model that focuses on an initial, basic implementation that gradually adds more complexity and a broader feature set until the final system is complete. Iterative development, in a nutshell, is a method of breaking down the software development of a massive program into smaller components.
What is the Iterative Model in Software Engineering?
The iterative model is a software development life cycle (SDLC) approach in which initial development work is carried out based on well-stated basic requirements, and successive enhancements are added to this base piece of software through iterations until the final system is built. We get a working piece of software very early in the lifecycle because the iterative model begins with a simple execution of a small collection of software requirements, which iteratively improves the evolving variants until the entire system is executed and ready to be redistributed. Every Iterative model release is created over a certain and predetermined time period known as iteration. Bugs and errors from the previous iteration do not propagate to the next iteration, and this model is flexible enough to incorporate customer feedback in every iteration.
Features of the Iterative Model
- In the iterative model, an initial base software is created using the set of requirements. Then features are constantly added to this base product in successive iterations until we have a final product satisfying all requirements. We build and improve the product step by step.
- The functionality of the software product boosts incrementally as we progress through various iterations.
- It is often referred to as the cyclic model. Following the initial phase, some phases repeatedly occur, expecting some improvement with the fulfillment of each phase.
- Customer feedback can be incorporated easily into this model. Since there are no feedback pathways in the standard waterfall model, there is no mechanism for error correction. However, in the iterative waterfall model, the feedback channel from one phase to the preceding step allows for the correction of errors, and these changes are propagated in subsequent phases.
Phases of Iterative Model
1. Requirement Gathering & Analysis
The business requirements are gathered during this phase of the iterative model. Then, an analyst determines whether they can be met within the financial constraints. This phase details the business needs, and system information (hardware or software) is acquired and assessed for viability.
During this phase of the iterative model, the project team receives the complete list of criteria for starting work in a specific direction. Then, they use various diagrams, like a data flow diagram, class diagram, activity diagram, state transition diagram, and so on, to gain explicit knowledge of the program design and to help them progress with development. Based on their investigation, developers provide viable solutions. Furthermore, the project's scale and criticality are crucial factors in deciding the complexity of the design for the project.
At this point in the project, according to the iterative model, the actual coding of the system begins. This stage will be influenced by the Design Stage's analysis and design. All needs, planning, and design plans have been carried out. The chosen design will be implemented by the developer using predefined coding and metrics standards. They must implement a unit test at each stage of code development and should strive to produce a fully functional, testable system for that iteration. The complexity of work and time spent on this iteration will vary depending on the project.
This stage entails comparing the current build iteration to a set of rules and norms to determine whether or not it fits them. This sort of testing includes performance testing, stress testing, security testing, requirements testing, usability testing, multi-site testing, disaster recovery testing, and so on. The tester can create new test cases or reuse those from previous releases, but testing is a key priority because any failures would affect the software's specification, affecting the business. We can also check in with the project stakeholders to perform some tests and get their input. A developer or tester must guarantee that correcting one bug does not result in the appearance of new bugs in the system.
After completing all the phases, the software is deployed to its work environment.
In this phase, after the product deployment, we check the behavior and validity of the deployed product. And if any errors are found, the process starts again from requirement gathering.
In the maintenance phase, after software deployment in the working environment, there may be some bug fixes or new updates required.
When to Use the Iterative Model?
The iterative model is suitable for the following use cases:
- When the project is huge, it can be broken down into smaller pieces and developed by adhering to the iterative paradigm.
- When the requirements can be understood and defined clearly at the beginning of the project.
- When there is a need to incorporate customer feedback at every stage - The major requirements are laid down initially; however, as the development process progresses, some functionalities are altered, and additions are suggested.
- While working on the project, the development team is experimenting with and learning new technology.
Advantages of the Iterative Model
- The most important advantage of this approach is that software is built in iterations, allowing developers and testers to identify design or functionality faults as quickly as possible, allowing them to take corrective actions within a limited budget. Here is a list of advantages of this SDLC model:
- A working product is produced much early in the lifecycle, unlike the waterfall model, where a working product is available only at the end of the lifecycle.
- We can detect errors and bugs at an early stage and prevent them from flowing downwards. We test the output of every iteration and do not let bugs from the previous iteration propagate to the next iteration.
- Changing the requirements does not incur much cost in this model, although it may not always be possible to accommodate new requirements due to system structure and design constraints.
- Customer feedback can be incorporated in every iteration and implemented quickly.
- In this model, less time is spent on documenting and more time on designing and developing.
Disadvantages of the Iterative Model
- Although the iterative model is hugely beneficial, it has various faults and drawbacks. The biggest one is system structure or design issues may arise since not all requirements are collected at the advent of the entire life cycle. The disadvantages of the iterative model are listed below:
- Problems relating to the system architecture can arise because all the requirements are not gathered upfront. Design can be changed repeatedly because of defective requirements gathered in the first phase.
- Although the cost of change is lower, it is not well suited to frequently shifting requirements.
- It is not a good option for small projects as it may not be realistic or possible to break down a small project into smaller parts.
- It is more resource-intensive than the waterfall model. To avoid risk, this strategy necessitates the use of highly trained resources for the project's analysis.
- The entire procedure is challenging to manage.
- The iterative model is prevalent in the area of electronics. The evolution of mobile phones over time, how speakers have become smaller and more portable over time, or even how refrigerators from the same company have altered to accommodate new family needs. These are all iterative procedures. Every day, the industry is changing itself in response to client feedback.
- Digital marketing teams test different advertising methods to discover which one generates the most engagement. They comprehend the advertisement's requirements, build appealing designs based on thorough analysis, and implement them in their product marketing. These copies are then distributed to members for input, and modifications are made. This strengthens their marketing strategies.
- The iterative model is an improvement over the waterfall model. The waterfall model is linear, while the iterative model is cyclical.
- In this model, you can begin with some basic specs to build an initial version of the software and work your way up to developing the final version. If there is a need to alter the program after the first version, a new version of the software is developed with a new iteration.
- Every Iterative Model release is completed in an exact and definite period known as iteration.
- This model is suitable for identifying risks associated with the requirements early and mitigating them.