You develop the concept in the first few cycles, and then it evolves into an implementation. Though this model is great for managing uncertainty, it can be difficult to have stable documentation. The spiral model can be used for projects with unclear needs or projects still in research and development.
Agile model#
The agile process model encourages continuous iterations of development and testing. Each incremental part is developed over an iteration, and each iteration is designed to be small and manageable so it can be completed within a few weeks.
Each iteration focuses on implementing a small set of features completely. It involves customers in the development process and minimizes documentation by using informal communication.
Agile development considers the following:
- Requirements are assumed to change
- The system evolves over a series of short iterations
- Customers are involved during each iteration
- Documentation is done only when needed
Though agile provides a very realistic approach to software development, it isn’t great for complex projects. It can also present challenges during transfers as there is very little documentation. Agile is great for projects with changing requirements.
Some commonly used agile methodologies include:
- Scrum: One of the most popular agile models, Scrum consists of iterations called sprints. Each sprint is between 2 to 4 weeks long and is preceded by planning. You cannot make changes after the sprint activities have been defined.
- Extreme Programming (XP): With Extreme Programming, an iteration can last between 1 to 2 weeks. XP uses pair programming, continuous integration, test-driven development and test automation, small releases, and simple software design.
- Kanban: Kanban focuses on visualizations, and if any iterations are used they are kept very short. You use the Kanban Board that has a clear representation of all project activities and their numbers, responsible people, and progress.