Os dois métodos de prototipagem são usados quando há algum aspecto do sistema que você não entende completamente. No entanto, a principal diferença é a metodologia do ciclo de vida que você usa. Com a prototipagem evolutiva, você normalmente entende alguns aspectos do sistema e não tem certeza sobre outros. Na prototipagem descartável, você tem uma falta geral de entendimento que precisa concluir antes de poder construir um sistema pronto para produção.
Observe que existem muitos tipos de prototipagem descartável e nenhuma delas se limita a todo o sistema. Por exemplo, o uso de esboços em papel ou quadro branco de uma interface do usuário pode ser considerado prototipagem descartável. Sim, você pode passar por várias iterações e jogar fora um design anterior, mas também não usará o protótipo final no sistema (não é fisicamente possível, por exemplo).
Se você estiver interessado nos tópicos gerais de engenharia de software e na amplitude do SE, sugiro que pegue o livro de Sommerville que cito. É realmente bom para cobrir a variedade de tópicos. Se você estiver mais interessado em modelos e metodologias de processo e em como aplicá-los a vários projetos, recomendo o livro da McConnell - ele tem um capítulo inteiro dedicado à prototipagem evolutiva e outro capítulo dedicado à prototipagem descartável.
Também dei uma rápida olhada no artigo da Wikipedia sobre prototipagem de software . Algumas partes são um pouco estranhas (pelo menos na minha leitura rápida), mas não parece haver nada que eu discorde totalmente. Parte disso é um pouco focada em um aspecto específico, mas não é verdade que eu esteja errado. Prefiro as definições abaixo, mas pode ser uma leitura interessante sobre vários tipos de prototipagem.
Prototipagem Evolutiva
Desenvolvimento exploratório em que o objetivo do processo é trabalhar com o cliente para explorar seus requisitos e entregar um sistema final. O desenvolvimento começa com as partes do sistema que são entendidas. O sistema evolui adicionando novos recursos propostos pelo cliente. (Sommerville: Engenharia de Software, 8ª Edição)
A prototipagem evolutiva é um modelo de ciclo de vida no qual o sistema é desenvolvido em incrementos para que possa ser facilmente modificado em resposta ao feedback do usuário final e do cliente. A maioria dos esforços de prototipagem evolucionária começa com a prototipagem da interface do usuário e, em seguida, com a evolução do sistema completo, mas a prototipagem pode começar com qualquer área de alto risco. Prototipagem Evolucionária não é a mesma que Prototipagem Descartável, e fazer a escolha certa sobre o desenvolvimento de um protótipo evolutivo ou de um protótipo descartável é a chave para o sucesso. Outras chaves para o sucesso incluem o uso de desenvolvedores experientes, o gerenciamento de expectativas de cronograma e orçamento e o gerenciamento da atividade de prototipagem. (McConnell: Desenvolvimento rápido: domesticando agendas de software selvagens)
Prototipagem descartável:
A prototipagem descartável é onde o objetivo do processo de desenvolvimento evolutivo é entender os requisitos do cliente e, portanto, desenvolver uma melhor definição de requisitos para o sistema. O protótipo se concentra em experimentar os requisitos do cliente que são pouco compreendidos. (Sommerville: Engenharia de Software, 8ª Edição)
Com a Prototipagem Throwaway, o código é desenvolvido para explorar fatores críticos para o sucesso do sistema e, em seguida, esse código é descartado. A implementação de prototipagem usa linguagens de programação ou práticas de desenvolvimento ou ambas muito mais rápidas que a linguagem e as práticas de destino. A interface do usuário é prototipada com muito mais frequência do que qualquer outra parte do sistema, mas outras partes de alguns sistemas também podem se beneficiar da prototipagem. Quando usada como um auxílio à especificação de requisitos, a prática de Prototipagem descartável pode acelerar projetos com base nos modelos tradicionais de ciclo de vida, como projetos do Departamento de Defesa. Pode ser iniciado no nível técnico ou de gerenciamento. (McConnell: Desenvolvimento rápido: domesticando agendas de software selvagens)