Sempre me perguntei algo ao ler sobre todo esse "desenvolvimento ágil" aqui no SE e em outros sites:
Na engenharia de software "tradicional", você
- coletar os requisitos do usuário,
- escreva uma especificação com base nesses requisitos,
- entregá-lo ao cliente e cobrá-lo pelo trabalho realizado até agora,
- faça um projeto técnico (aproximado), para que você possa estimar o custo da implementação,
- forneça ao usuário uma cotação de preço para a implementação,
- aguarde o cliente assinar a especificação e aceitar a oferta,
- projetar, implementar, testar,
- conta.
Se, durante o processo, os requisitos forem alterados, você enviará uma oferta (com um preço) para as alterações desejadas (ou faça gratuitamente se a alteração for pequena, você gosta do cliente e o cliente não faz isso com muita frequência) .
Então, como isso funciona (financeiramente) em um projeto ágil, onde mudanças frequentes de requisitos fazem parte do processo?
- Você escreve uma oferta para cada alteração de design? (Isso não seria uma bagunça?)
- Ou você negocia um preço fixo e espera que o cliente não altere os requisitos com muita frequência? (Pode ser arriscado, conheço clientes que usariam essa oportunidade para solicitar novos recursos por anos antes de aceitar que o projeto foi concluído.)
- Ou você apenas cobra o cliente pelo tempo total necessário? (Pode ser arriscado para o cliente, que não conhece o custo antecipadamente.)