O próximo modelo que eu quero discutir é prototipagem
evolutiva, que funciona em quatro fases principais. Nós começamos
por um conceito inicial, então nós desenhamos e criamos
um protótipo baseado neste conceito inicial, refinamos o protótipo
até que ele se torne aceitável e finalmente nós completamos e
liberamos o protótipo. Desta maneira, quando desenvolvemos um sistema usando
prototipagem evolutiva, o sistema é constantemente refinado e refeito.
Então este é o processo ideal quando nem todos os requisitos
estão bem compreendidos. O que é uma situação bastante usual. Então, olhando
para isso um pouco mais detalhadamente, o que ocorre é que
os desenvolvedores começam no desenvolvimento das partes do sistema que eles
compreendem, ao invés de trabalhar no desenvolvimento do sistema com um tido, incluindo as
parte que não estão ainda muito claras. O sistema
parcial é então mostrado ao cliente e a opinião do cliente
é usada para guiar a próxima iteração, na qual tanto modificações
são feitas nas atuais feições, como novas feições são adicionadas.
Assim, ou o protótipo atual é melhorado ou o
protótipo é aumentado. E finalmente, quando o cliente concorda de
que o protótipo está suficientemente bom, os desenvolvedores irão completar todo
o trabalho faltante no sistema e liberar o protótipo
como o produto final. Então vamos discutir como fizemos
para os modelos de processos anteriores, quais são as principais vantagens
e desvantagens de prototipagem evolutiva. Neste caso, a principal
vantagem é apreciação imediada. Os desenvolvedores recebem a opinião imediatamente,
tão logo eles produziram o protótipo e o mostraram para o
cliente e desta maneira, o risco de implementar erradamente o sistema é
minimizado. O principal ponto negativo é que isso é difícil de planejar.
Quando é usada a prototipagem evolutiva é difícil de antecipar por
quanto tempo o desenvolvimento irá levar, porquê nós não sabemos quantas
iterações serão necessárias. E outro inconveniente é que isso pode facilmente
se tornar uma desculpa para começar a fazer aquele tipo de abordagem de
"corte-e-correção" na qual nós começamos a enjambrar as coisas, corrigir os
principais defeitos quando o cliente nos dá sua opinião e então continuamos desta
maneira, até que o produto final se torne tipo algo que
funciona, mas que não é de fato um produto de alta qualidade. Outra coisa
que eu quero apontar antes de irmos ao próximo
modelo de criação de software é que existem diversas maneiras de
prototipagem, então a prototipagem evolutiva é apenas
uma delas. Por exemplo, prototipagem
descartável é outra maneira de prototipagem na qual o protótipo é
usado apenas para coletar requisitos, mas é descartado ao final
da coleta de requisitos, ao invés de ser evoluído, como ocorre aqui.