terça-feira, 29 de julho de 2008

Desenvolvimento incremental x iterativo

Um exemplo prático :)

[Editado: resolvi colocar a explicação do Abu, que é muito boa]

Quando eu era mais novo e possuía uma empresa de desenvolvimento de software, eu costumava ir ate o cliente, fazer o levantamento de requisitos, o entendimento de cada requisito, prototipação das telas, rascunho do banco de dados, etc etc etc. Minhas atividades tinha o objetivo de sair com todas as informações necessárias para a construção do sistema inteiro (quando ele era pequeno) ou de alguns módulos (quando o sistema tinha um porte maior).
Mas este trabalho tinha o foco de garantir que a minha entrega não teria retrabalho, isto é, após eu entregar o sistema o cliente estaria satisfeito e eu receberia a minha recompensa ($$$).
O problema desta técnica é que ela exigia do cliente uma visão muito assertiva do que ele realmente desejava, mas nem sempre o cliente tinha total informação e visão do que ele desejava de sistema.
O cliente passava a ter uma noção do que ele realmente queria quando estava utilizando o software e desta maneira ele passava a gerar solicitações de mudança.
O sistema nem tinha nascido direito e já estava com solicitações de modificação, e vinha a minha pergunta, onde eu errei na analise ou o cliente não sabe o que deseja.
Este modelo de desenvolvimento de software é o que se chama de “Incremental”.
Já no desenho de baixo é mostrada a pintura de forma “Iterativa”, onde as definições dos requisitos são realizadas junto com o desenvolvimento do software. Nesta técnica não quer dizer que nos não sabemos do que se trata o sistema e passamos a descobrir no decorrer do desenvolvimento. Vocês podem observar que o esboço da pintura já existia, isto é, “ESCOPO INICIAL”.
Mas os detalhes de cada item do sistema são definidos conforme o sistema vai sendo desenvolvido, isto é, a pintura tem que ter olhos e dois olhos, porem a cor de cada olho e os seus detalhes serão definidos no decorrer do desenvolvimento.
A pintura tem que ter boca, mas se ela vai sorrir ou vai ficar seria, é uma opção definida no decorrer da execução da pintura. Desta maneira podemos ate mesmo tentar qual fica melhor, sorrindo ou serio.
A diferença entre as duas técnicas esta no fato do cliente saber tudo o que ele deseja com o mínimo dos detalhes desde o inicio do projeto (Incremental) ou ir colocando os detalhes na execução do projeto (Iterativo).
Ambas as técnicas podem levar ao resultado final, sim, podem, porem devemos lembrar que os requisitos (Itens de Backlog) sempre mudam, a questão é como vamos trabalhar com esta mudança. Na técnica Iterativa nos conseguimos absolver as mudanças com um impacto menor, pois esta técnica já é feita para se trabalhar com as mudanças.


Extraído do blog do Abu

2 comentários:

Anônimo disse...

Essa figura passa com exatidão a diferença entre uma e outra.

Muito show o blog estou sempre passando por aki e lendo os materiais.

Parabéns Flávio!

Anônimo disse...

Cara, legal....

Porém, sua explicação sobre o processo incremental ficou muito parecida com o que o modelo em Cascata, não ficou?

Seguindo a mesma didática, (figura) como seria o modelo em Cascata? Ou a diferença seria que a figura nem existiria até o projeto sair?

Grata,

Patrícia