Um processo iterativo é aquele que faz progresso através de tentativas sucessivas de refinamento. Por exemplo, uma equipe de desenvolvimento faz sua primeira tentativa para construção de um software, porém, existem pontos de informação falhos ou incompletos em algumas (talvez muitas) partes. A equipe de forma iterativa refina essas partes até que o produto atinja o ônus de satisfatório. Com cada iteração, o software é melhorado através da adição de mais e mais detalhes.
Vamos a outro exemplo, em uma primeira iteração, temos que codificar uma tela de relatórios que suporte apenas o tipo mais simples para exibição. Na segunda iteração, podemos adicionar critérios de pesquisa para ampliar o leque de opções no relatório. Finalmente, em uma terceira iteração, poderíamos adicionar gráficos para explanar visualmente o relatório.
Um processo incremental é aquele em que o software/produto é construído e entregue por pedaços. Cada pedaço ou incremento representa um subconjunto de funcionalidades completas. O incremento pode ser pequeno ou grande, por exemplo, ele pode variar apenas de uma tela de relatórios simples, para um conjunto altamente flexível de telas de gerenciamento de dados. Cada incremento é totalmente codificado e testado, e a expectativa geral é que o trabalho tenha a conclusão mais completa possível.
Métodos ágeis são tanto iterativos, quanto incrementais. São iterativos por que o trabalho realizado é sempre melhorado em ciclos subsequentes. São também incrementais, por que o trabalho planejado é entregue em partes que são adicionadas ao todo do projeto.
Modelo Espiral é um exemplo Iterativo e Incremental
Ao termos um processo que é Iterativo e Incremental, permitimos ao desenvolvedor tirar vantagem daquilo que foi aprendido durante a fase inicial de desenvolvimento de uma versão do sistema. O aprendizado ocorre simultaneamente tanto para o desenvolvedor, quanto para o usuário do sistema.
Como todo modelo, o Iterativo e Incremental está sujeito a riscos de projeto. Podemos notar dificuldades de gerenciamento pois as fases do ciclo podem estar ocorrendo de forma simultânea.
Outro ponto a ser levado em consideração é que o usuário pode se entusiasmar demais com a primeira versão do sistema e pensar que tal versão já corresponde ao sistema como um todo. Lidar com as expectativas dos clientes é fundamental neste momento.