In this topic, we described about the below sections -
Why Iterative Model?
There are some scenarios that client may have only basic requirements in hand. Client might required to see how the software behaves after adding new requirements to improve the further requirements. Incremental model fits for the above scenaio. However, there are some scenarios where client do not want to deploy the developed product with basic requirements. These type of scenario requires the need of new SDLC model. Iterative Model designed to fulfil these scenarios.
When to use Iterative Model?
Iterative model is used -
- When the system requirements can be categorized and understood.
- When primary requirements of the system can be defined at the initial, the improvements can be defined based on the developed product with basic requirements.
- When the technology identified before design, this model is useful.
- When the developing new requirements are at higher risks.
- When the team has less experience on the technology.
- When the skilled team is not available.
- When the project is big.
What is Iterative Model?
Iterative model gives the similar or most exact peformance of software development life cycle and follows all phases of SDLC. In this model, the total software development is divided into iterations and each iteration has design, development, testing and review. The remaining phases, planning and requirement analysis, deployment and maintenance are one time and doesn't involve in interations.
This model do not start with full set of requirements. Design and development starts with basic requirements. Once the product is developed with basic requirement, it got reviewed in order to identify or define further requirements. Once the review phase completed, it specifies the end of current iteration. Based on the first iteration review, the further or next set of requirements defined. Once the improved requirements defined, second iteration design and development get started. Once the product developed with second iteration requirements, it got reviewed in order to identify or define further requirements. These iterations will continue until the final product is developed. They can concluded that iteration is last iteration if no further requirements.
In in simple words, iterative process is begin with the basic implementation of specific set of requirements that iteratively improves and developing the software until the entire system is ready for deploymment.
There are various important phases in the Iterative Model as follows -
- Requirement Gathering & Analysis -
In this phase, requirements gathered from customers and verified by the analyst whether the requirements would fulfill or not. Once all these things are cross checked, the team would proceed to next phase.
- Design -
Once the Requirements gathering and Analysis phase is completed, Design phase would start. In this phase, technical requirements are defined from business requirements. Team designs the software by using different diagrams such as Data Flow diagram, Class Diagram, Activity Diagram, State Transition Diagram, etc.
- Development -
In this phase, development team starts coding using the technical requirements. All the specifications, planning and design documents till this point are used for coding and implemented into the initial iteration of the project.
- Testing -
Once the current build has been coded and implemented, the next phase would be the Testing phase in which a series of Testing process would go through and find any potential defects that have cropped up.
- Review -
Once all the above phases are completed, now it is time for a perfect evaluation of development till this phase. This would allow the entire team and clients as well as other teams to assess the stage of the project, where it needs to be, what can be done and so on.
- Certain operating functionalities can built rapidly and early in the life cycle.
- Debugging and testing in a smaller iteration would be easy.
- Parallel development can be planned.
- Easily acceptable model for frequently changing requirements of the project.
- Identification and Resolution of risks would be easy during the iteration.
- Spending limited time on the documentation and Extra time on Design.
- More cost effective.
- Reliable user feedback on each iteration.
- Product is built and improved step by step. So, defect tracking is possible in early phases.
- Challenges, issues and risks that are identified from each increment would be applied to the next increment.
- Initial operation time is less.
- Suits for agile organizations.
- More resources required.
- Not so suitable for frequently changing requirements though the cost of change is low.
- Management complexity is more.
- Project completion date is not known at the beginning which is a risk.
- Highly skilled resources required for Risk Analysis.
- More management attention is required.
- System Architecture or design issues would arise as not all requirements are gathered in the beginning of the entire life cycle.
- Increments definition would require the definition of a complete system.
- Project process highly dependent on the risk analysis phase.
- Design might have to be changed frequently as the requirements keep-on changing.
- Changing requirements may lead to increase in budget.
- Limited time spent on documentation and extra time on design.
- Not suitable for small projects.
- Difficult to add the change requests.
- Phases overlapping not supported.