A strong end-to-end process can be organized into 10 major stages, with specific deliverables/documents at each stage.
# | Stage | Main question | Key outputs / documents |
1 | Idea & Discovery | What are we trying to solve? | Product Vision, Problem Statement, Business Case |
2 | Feasibility & Planning | Is it possible and worthwhile? | Feasibility Study, Project Charter, Initial Plan |
3 | Requirements | What exactly should the system do? | BRD, PRD, SRS, User Stories, Use Cases |
4 | Analysis | How should the requirements work together? | Process Models, Use Cases, Domain Model, Data Requirements |
5 | Architecture & Design | How will we build it? | Architecture Document, HLD, LLD, API/Data Design |
6 | Development | How do we implement it? | Source Code, Code Standards, Build Configuration |
7 | Testing & Quality | Does it work correctly and safely? | Test Strategy, Test Plan, Test Cases, Automation, Defects |
8 | Release Preparation | Is it ready for production? | Release Plan, Release Notes, Deployment Plan, Go-Live Checklist |
9 | Deployment & Delivery | How do we put it into production? | Deployment Scripts, CI/CD Pipeline, Runbook |
10 | Operations & Maintenance | How do we keep improving it? | Monitoring, Incident Reports, Change Requests, Maintenance Releases |
And then the lifecycle repeats:
Idea → Requirements → Design → Development → Testing → Release → Production → Feedback → Change → Development…
Thinking about the lifecycle as four connected chains:
1. Business chain
Problem → Business Goal → Product → Requirements
2. Engineering chain
Requirements → Analysis → Architecture → Design → Code
3. Quality chain
Requirements → Risk → Test Analysis → Test Design → Automation
→ Evidence → Quality Decision
4. Delivery chain
Code → Build → Test → Deploy → Monitor → Feedback
This gives you a much more mature view of software engineering than simply:
Requirements → Development → Testing → Deployment.