Its seven commonly used phases are planning, requirements analysis, design, coding, testing, deployment and maintenance. Each produces something the next activity needs: an agreed problem, defined behavior, a design, working code, test evidence, a controlled release or operational feedback.