In incremental model the requirement is divided into various sub components. Multiple development cycles take place here, making the life cycle a “multi waterfall” cycle. Each sub component passes through the requirements, design, implementation and testing phases. There is no sequence. Modules are integrated later.
Agile is a group of software development methods which promotes evolutionary development prototyping and continuous improvement. Agile methods are based on a linear combined iterative approach to software development. A series of mini-waterfalls can be performed. Overall requirements are defined before preceding to evolutionary. Agile methodology is the most used methodology nowadays.
- Generates working software quickly and easily during the software life cycle.
- More flexible since changes can be applied anywhere during the development.
- Easier to test and debug during a smaller iteration.
- Promote adaptive planning.
- Less costly to change scope.
- Once a step has been completed, developers can go back.
- Doesn’t rely on initial requirements.
- If a requirement error is found, it can be modified without going back.
- The plan does take into account a client’s evolving needs.
- We don’t have to wait until the end of the project to realize value.
- Less risky.
- Optimal balance between quality and productivity.
- Moderate control is maintained over the life of the project through the use of written documentation.
- Stakeholders can be given concrete evidence of project status throughout the life cycle.
- Allows delivery of a series of implementations that are gradually more complete.
- Gradual implementation provides the ability to monitor the effect of incremental changes.
- Focus on the code rather than the design.
- Problems in scaling because developers can’t identify how many iterations will happen.
- There is usually a lack of overall consideration of the business problem.
- Well-defined interfaces are required.
- Difficult problems tend to be pushed to the future.
Situations where most appropriate
- Product development where a software company is developing a small product for sale.
- Large projects where requirements are not well understood.
- Web Information Systems since this supports changes.
- Leading edge applications.
Situations where least appropriate
- Long-duration project because it needs sufficient amount of resources.
- Very small projects of very short duration.
- Integration risks are very low.
- Highly interactive applications where the data for the project already exists.
SELECTING A DEVELOPMENT APPROACH. (2005). 3rd ed. [ebook] Centers for Medicare and Medicaid Services, pp.1-10. Available at: https://www.cms.gov/Research-Statistics-Data-and-Systems/CMS-Information-Technology/XLC/Downloads/SelectingDevelopmentApproach.pdf [Accessed 6 March. 2017].