Fase de levantamento de requisitos onde são levantadas quais as necessidades do cliente e o que o software deve fazer.
Fase de desenho/projeto em que é desenhada a arquitetura do software (os vários módulos, como funcionam e como comunicam entre eles).
Fase de teste e integração onde o software é testado com base numa lista de testes criados para validar se CADA UM dos requisitos foi cumprido e se os vários sistemas funcionam entre si.
Este modelo implica muitas vezes que não se passa à fase seguinte até o produzido (por exemplo o documento de requisitos) ser aprovado pelo cliente. Traz alguma dificuldade em acomodar alterações ou correção de erros.
Com o tempo, e à medida que os projetos de software foram crescendo em dimensão e complexidade, foram sendo criadas metodologias denominadas ágeis que nasceram para acomodar as derrapagens de tempo, custo e a criação de software que responda às reais necessidades.