Implementação progressiva versus não-progressiva

A figura abaixo exemplifica e resume as diferenças ente a abordagem progressiva (Com o Pim) a a não-progressiva (Sem o Pim).

Se não utilizarmos a abordagem progressiva teremos um desenvolvimento como acontece de maneira usual. Neste caso, tanto os requisitos funcionais quanto os não-funcionais devem ser implementados "ao mesmo tempo". Isto significa que a apresentação para o cliente (Sergio) só acontece depois de implementadas a persistência e a distribuição.

Por outro lado, quando usamos uma abordagem progressiva, alguns requisitos não-funcionais, como persistência e distribuição, devem ser implementados apenas depois dos requisitos funcionais do caso de uso ou cenário em questão terem sido implementados, testados e validados pelo analista e/ou cliente. Ou seja, o protótipo funcional deve ser apresentado ao cliente antes de proceder a implementação da persistência e da distribuição. Porém, faz-se necessária a implementação do requisito não-funcional interface com o usuário e do armazenamento de dados não persistente de modo a permitir testar o sistema e identificar eventuais problemas. Tais problemas devem ser corrigidos antes de implementar os demais requisitos não-funcionais. Dessa forma os requisitos não-funcionais de armazenamento persistente de dados e distribuição serão implementados a partir um protótipo funcional validado.

Além disso, no caso da implementação progressiva, algumas informações devem ser cadastradas em algumas coleções voláteis de modo a simular a carga de dados feita no banco de dados pelos scripts de inicializaçõ da base, permitindo os testes com o sistema. Tais informações são apresentadas na página de dicas.