Por que precisamos de prototipagem descartável?


9

O que é um modelo de prototipagem descartável em engenharia de software e por que precisamos dele? Como ele se diferencia da Prototipagem Evolucionária?


5
Há uma antiga piada / diretriz de que todo software é péssimo até a versão 3. A primeira versão é descobrir o que você precisa, a segunda é descobrir como fazê-lo (bem).
Telastyn

2
Você pode ler mais sobre isso em um livro chamado "Desenvolvimento Rápido", Steve McConnell. E talvez "Mês do homem mítico" se o histórico de desenvolvimento de software lhe interessar.
precisa saber é o seguinte

2
@ andrew.fox "Construir um para jogar fora" é útil para ter em contexto ( wired.com/2010/07/ff_fred_brooks ) - "Quando escrevi The Mythical Man-Month pela primeira vez em 1975, aconselhei os programadores a“ jogar o primeiro versão ausente "e, em seguida, crie uma segunda".

@ MichaelT, sim, tanto quanto me lembro, está no apêndice do livro (a edição mais recente).
precisa saber é o seguinte

1
@ Telastyn Eu não acho que é uma piada.
RubberDuck #

Respostas:


21

Prototipagem descartável

A criação de protótipos descartáveis consiste em criar, o mais rápido possível, uma parte do futuro aplicativo para garantir que um recurso seja tecnicamente viável ou para mostrar o recurso aos interessados ​​ou usuários em potencial, a fim de obter feedback deles.

Como o código-fonte desse protótipo não é reutilizado posteriormente no desenvolvimento do aplicativo, ele é um protótipo descartável. Saber que é um código descartável ajuda a focar no recurso real, deixando de lado aspectos como capacidade de manutenção do código, estilo, padrões de design ou teste. Isso permite concluir o protótipo com muita rapidez, sem afetar negativamente a dívida técnica do produto final.

A prototipagem descartável é diferente do desenho . O esboço é mais gráfico e orientado para interfaces e experiência do usuário, e não consiste em escrever código de programação. A prototipagem descartável geralmente é usada quando o desenho não é suficiente (por exemplo, quando você precisa mostrar como um recurso será executado em diferentes smartphones ou quando você precisa mostrar o desempenho e a capacidade de resposta reais).

A prototipagem descartável pode representar um risco ao lidar com partes interessadas sem formação técnica e em um contexto de prazos apertados e recursos muito limitados: as partes interessadas podem tentar convencê-lo a reutilizar no produto final o código-fonte do protótipo. É natural acreditar que reduzirá o tempo necessário para liberar o produto, mas, na verdade, apenas atrasará a data de envio. Uma maneira de evitar isso é usar para o protótipo uma linguagem que não possa ser usada na produção (por exemplo, use C # quando você souber que o produto final será hospedado em servidores Linux com apenas o Python instalado).

insira a descrição da imagem aqui

Fig. 1: Prototipagem e desenho descartáveis : os protótipos ajudam a obter feedback antecipado antes de começar a desenvolver o recurso real.

Prototipagem evolutiva

A prototipagem evolutiva consiste na construção de um protótipo que é refinado com base no feedback regular das partes interessadas ou dos usuários em potencial.

Aqui, a manutenção do código, estilo, padrões de design ou testes conta desde o início, o que torna possível evoluir o protótipo para um produto de nível empresarial com todos os recursos. As etapas anteriores do protótipo contêm apenas a parte principal do produto futuro e, em seguida, os recursos são adicionados progressivamente.

insira a descrição da imagem aqui

Fig. 2: Prototipagem evolutiva : os recursos são agregados ao protótipo para construir o produto final.

A prototipagem evolutiva é diferente da prototipagem incremental . A criação de protótipos incrementais consiste em construir vários protótipos, cada um representando uma parte do sistema futuro, e depois combiná-los. A criação de protótipos evolucionários está mais próxima do Agile: geralmente, você poderá obter cedo um produto funcional com recursos limitados e estendê-lo até que as partes interessadas tenham dinheiro. A prototipagem incremental, por outro lado, é mais adequada para grandes projetos com muitas equipes contribuintes, cada equipe trabalhando em um protótipo separado.

insira a descrição da imagem aqui

Fig. 3: Prototipagem incremental : vários protótipos são combinados para formar o produto final.

A prototipagem evolucionária também é diferente das metodologias ágeis . O Agile trata de iterações e marcos frequentes em que um produto totalmente funcional pode ser liberado para fabricação. Se você tem um produto em funcionamento toda quinta-feira, está fazendo o Agile. Na prototipagem evolutiva, você expande o protótipo, mas nada obriga a ter um produto totalmente funcional regularmente. Você pode passar dois meses criando o primeiro protótipo, depois expandi-lo com alguns recursos em dois e três dias, respectivamente, e depois passar três meses em outro recurso. Você não pode ter esse tipo de padrão irregular no Agile.

Metodologias ágeis específicas aplicam regras adicionais. Por exemplo, se você não faz programação emparelhada, não pode afirmar que está fazendo Programação Extrema. Se sua equipe não tem reuniões diárias, você não está fazendo o Scrum.


Portanto, a principal diferença entre prototipagem ágil e evolutiva é que, nos protótipos ágeis, siga o ciclo de liberação com um comprimento fixo?
Giorgio

@Giorgio: como expliquei na minha resposta, as diferenças são: (1) ciclo de liberação com duração fixa, (2) iterações curtas, (3) produto totalmente funcional no final de cada iteração e (4) regras adicionais para metodologias ágeis específicas. OMI, não há diferença "principal" entre os quatro.
Arseni Mourzenko

Como regras adicionais se aplicam apenas a metodologias específicas do Agile, (4) não caracteriza o Agile. Por exemplo, a programação em pares não caracteriza o Agile. Além disso, para mim (1) parece implicar (3): se você liberar algo, deve ser um produto totalmente funcional ou será possível lançar um protótipo não totalmente funcional na prototipagem evolutiva? (2) também é importante: as iterações devem ser curtas, enquanto eu acho que na prototipagem evolutiva há liberdade para escolher iterações longas ou curtas. Então, parece-me que (1) e (2) caracterizam o Agile (eu tinha esquecido (2) no meu comentário anterior).
Giorgio

Mas talvez eu esteja errado porque interpretei (3) e (4) o caminho errado.
Giorgio

@ Giorgio: "se você lançar algo, deve ser um produto totalmente funcional" Não necessariamente. Quando você lança um protótipo, ele não é um produto totalmente funcional, pois alguns recursos realmente disponíveis para os usuários finais podem estar completamente danificados. Quanto ao (4), eu concordo com você, ele não caracteriza o próprio Agile.
Arseni Mourzenko

4

A prototipagem é usada por vários motivos. Talvez você queira avaliar a experiência do usuário em um novo aplicativo para estimar se vale a pena construir, sem incorrer na despesa de realmente construí-lo. Talvez você precise de algo que converse com um programa existente na rede para executar testes de integração ou carregamento na sua rede, antes de ter tempo para concluir o software real em execução no seu nó. Talvez você precise mostrar a seus investidores algo que parece quase um programa concluído, para que eles estejam mais dispostos a inventar o investimento necessário para realmentetermine o programa. (Isso não tem nada a ver com engano. Usuários e gerentes julgam o software apenas por sua interface, por isso é importante apresentá-los com uma boa interface para que eles acreditem que o projeto está tão adiantado quanto realmente é.)

Um protótipo descartável é simplesmente aquele que não será transformado de forma incremental na solução real, mas substituído por um novo. Obviamente, há algum desperdício em jogar fora o código que já faz pelo menos parte do que você deseja, mas a melhor integridade arquitetural do código adequado pode facilmente compensar essa desvantagem.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.