In this post
What are the usual phases?
- Requirements: find out what users and the business need.
- Design: decide how the system will be structured.
- Implementation: write the code.
- Testing: check that it works and meets the need.
- Release: put it in front of users.
- Maintenance: fix, improve and eventually retire it.
What is the difference between waterfall and iterative models?
In a waterfall approach each phase is finished before the next begins, so feedback from users arrives late. In an iterative or agile approach the team repeats the whole cycle in short rounds, delivering something usable each time and changing course as it learns. Royce’s 1970 paper, often cited for waterfall, itself warned that a single sequential pass is risky.
Where does testing fit?
Throughout, not only after coding. Requirements can be reviewed, designs can be challenged, and code can be tested as it is written. The earlier a mistake is found, the cheaper it is to fix, which is why modern teams run automated checks on every change.
Does the life cycle end at release?
No. Most of a product’s life is spent in operation, where the team monitors it, fixes defects, answers support questions and adds features. Planning for maintenance from the start, with logs, tests and documentation, makes that long stretch easier.
Which model should a team choose?
Choose by how well the requirements are known and how costly a mistake is. Work with fixed, well-understood requirements and heavy regulation may suit more up-front planning. Work where needs are uncertain suits short iterations with frequent feedback. Many teams blend the two.
Sources and further reading
- Royce, W. W. (1970). “Managing the Development of Large Software Systems.” Proceedings of IEEE WESCON.
- ISO/IEC/IEEE 12207. Systems and software engineering: software life cycle processes.
- Sommerville, I. Software Engineering. Pearson.
Go deeper: CTP™ credential · the TPBOK™ standard · Check your experience
IICTP is an independent technical credentialing body.