A Abordagem Incremental usa um número definido de etapas e o desenvolvimento vai do início ao fim em um caminho linear de progressão.
O desenvolvimento incremental é feito nas etapas de projeto, implementação, teste / verificação, manutenção. Eles podem ser divididos ainda mais em sub-etapas, mas a maioria dos modelos incrementais segue o mesmo padrão. O Modelo Waterfall é uma abordagem tradicional de desenvolvimento incremental.
A Abordagem Iterativa não possui um número definido de etapas, mas o desenvolvimento é feito em ciclos.
O desenvolvimento iterativo está menos preocupado em acompanhar o progresso de recursos individuais. Em vez disso, o foco é criar primeiro um protótipo funcional e adicionar recursos nos ciclos de desenvolvimento, onde as etapas de Incremento de Desenvolvimento são realizadas para cada ciclo. A modelagem ágil é uma abordagem iterativa típica.
O modelo incremental foi originalmente desenvolvido para seguir o modelo tradicional de linha de montagem usado nas fábricas. Infelizmente, o design e o desenvolvimento de software têm pouco em comum com a fabricação de bens físicos. Código é o modelo, não o produto final do desenvolvimento. Boas opções de design são frequentemente 'descobertas' durante o processo de desenvolvimento. Bloquear os desenvolvedores em um conjunto de suposições sem o contexto apropriado pode levar a projetos ruins, na melhor das hipóteses, ou a um descarrilamento completo do desenvolvimento, na pior das hipóteses.
A abordagem iterativa agora está se tornando prática comum, porque se encaixa melhor no caminho natural da progressão no desenvolvimento de software. Em vez de investir muito tempo / esforço perseguindo o 'design perfeito' com base em suposições, a abordagem iterativa trata de criar algo que seja 'bom o suficiente' para começar e evoluí-lo para atender às necessidades do usuário.
tl; dr - Se você estivesse escrevendo um ensaio sob o Modelo Incremental, tentaria escrevê-lo perfeitamente do início ao fim de uma frase de cada vez. Se você o escreveu sob o Modelo Iterativo, redigiria um rascunho rápido e trabalharia para aprimorá-lo através de um conjunto de fases de revisão.
Atualizar:
Modifiquei minha definição para 'Abordagem incremental' para se encaixar em um exemplo mais prático.
Se você já teve que lidar com a contratação da Abordagem Incremental, é como a maioria dos contratos é realizada (especialmente para os militares). Apesar das muitas variações sutis do típico "Modelo em cascata", a maioria / todas elas são aplicadas da mesma maneira na prática.
Os passos são os seguintes:
- Adjudicação de Contrato
- Revisão preliminar do projeto
- Revisão crítica do projeto
- Congelamento da especificação
- Desenvolvimento
- Fielding / Integração
- Verificação
- Teste de confiabilidade
O PDR e o CDR são onde as especificações são criadas e revisadas. Depois que a especificação estiver concluída, ela deverá ser congelada para evitar a fluência do escopo. A integração ocorre se o software for usado para estender um sistema pré-existente. A verificação é para verificar se o aplicativo corresponde à especificação. Confiabilidade é um teste para provar que o aplicativo será confiável a longo prazo; isso pode ser especificado como um SLA (Service Level Agreement), em que o sistema é necessário para manter uma certa porcentagem de tempo de atividade (ex 99% de atividade por 3 meses) )
Esse modelo funciona muito bem para sistemas simples de especificar no papel, mas difíceis de produzir. É muito difícil especificar o software no papel com qualquer grau de detalhe apreciável (ex UML). A maioria dos 'tipos de negócios' encarregados do gerenciamento / contratação não consegue perceber que - quando se trata de desenvolvimento de software - o próprio código é a especificação. As especificações do papel costumam levar tanto ou mais tempo / esforço para escrever quanto o próprio código e geralmente se mostram incompletas / inferiores na prática.
Abordagens incrementais tentam desperdiçar tempo / recursos tratando o próprio código como a especificação. Em vez de executar a especificação do papel através de várias etapas de revisão, o próprio código passa por vários ciclos de revisão.