Ciclos: releases e iterações
Uma das principais características da complexa tarefa de desenvolver produtos de software que funcionem corretamente e atendam as expectativas do cliente é a imprevisibilidade. Na tentativa de diminuir esta imprevisibilidade processos tradicionais de desenvolvimento confiam em planejamentos intensivos para longos períodos, tentando identificar e mitigar todos os riscos possíveis logo de início. Ao longo dos anos descobriu-se que esta estratégia não é eficaz devido à própria natureza incerta do desenvolvimento de software e dos negócios onde normalmente softwares são aplicados.
Através deste aprendizado, as metodologias ágeis propõem ciclos curtos de planejamento e entrega, nos quais uma parte do produto final é projetada, desenvolvida e testada dentro de um período curto, chamado iteração. Nota-se, neste ponto, que não se fala de protótipos, fala-se de uma parte do produto final que pode potencialmente ser utilizada em produção e será continuamente melhorada e incrementada, iteração após iteração, respondendo às mudanças impostas pelo mercado e pela tecnologia, até que atinja o escopo necessário. A figura abaixo demonstra os vários ciclos que ocorrem durante o desenvolvimento do software e quais aspectos são tratados em cada um deles:

Ciclos de desenvolvimento
Ciclos curtos de desenvolvimento proporcionam maior feedback e aprendizado para todos os envolvidos no processo de desenvolvimento. Com mais informações, as equipes passam a diminuir a incerteza e trabalhar ancoradas em um processo confiável de entregas de produto de alta qualidade e valor agregado. A figura abaixo demonstra o ganho de produtividade do time de desenvolvimento, no uso de ciclos curtos:

Ganho de produtividade em ciclos curtos
Com maior confiabilidade e previsibilidade é possível fazer um planejamento de releases para o projeto, sempre considerando as regras adequadas de priorização e a velocidade da equipe de desenvolvimento. Desta forma, os releases são entregas maiores que contemplam o que foi desenvolvido durante algumas iterações e, associado a um objetivo bem definido, o planejamento de releases passa a ser uma forma valiosa de satisfazer as necessidades de mercado do cliente. Como são priorizadas principalmente as funcionalidades que geram maior valor e tem maior risco para o projeto, os ciclos curtos propiciam um produto de alto valor agregado, diminuindo os riscos e o time-to-market. Consequentemente, a vantagem competitiva do cliente torna-se indiscutível.