Investigate Phase
- Problem description: Gather requirements from stakeholders through interviews, surveys, focus groups, etc. Understand the problem to be solved, user needs, and project goals.
- Define requirements: Document detailed functional (what it needs to do) and non-functional requirements (how it needs to perform). Prioritise requirements.
- Development schedule: Develop initial timeline estimates and a development roadmap. Conduct risk analysis and plan risk mitigation strategies. The schedule is written/presented as a GANTT chart.
Design Phase
- Design data structures: Design database schema, data models, API specifications, etc. Focus on flexibility, scalability and ease of maintenance.
- Design and test algorithms: Design core algorithms and logic. Analyse time and space complexity. Use trace tables and desk checking to test algorithms.
Develop Phase
- Develop and debug code: Code implementation guided by coding standards and design documentation. Fix bugs (errors) in the code.
- Unit testing: Automate repeatable tests.
Evaluate Phase
- User acceptance testing: User acceptance testing with stakeholder sign-off. This is the final testing phase, based on user needs, in which the functional requirements gathered during the Investigate stage are verified to ensure the software works as intended.
- Developer retrospective: The team will review the project to analyse what worked well and what could be improved in the development process, and make recommendations to enhance workflow, collaboration, and product quality on future projects.