Che cos'è il modello di prototipazione throw-away nell'ingegneria del software e perché ne abbiamo bisogno? Come si differenzia dalla prototipazione evolutiva?
La prototipazione Throw-away riguarda la creazione, il più rapidamente possibile, di una parte dell'applicazione futura per garantire che una funzionalità sia tecnicamente fattibile o per mostrare la funzionalità agli stakeholder o ai potenziali utenti al fine di raccogliere feedback da loro.
Dal momento che il codice sorgente di questo prototipo non è riutilizzato più avanti nello sviluppo dell'applicazione stessa, ne fa un prototipo da buttare via. Sapere che si tratta di un codice "usa e getta" aiuta a concentrarsi sulla funzionalità reale, lasciando da parte aspetti come la manutenibilità del codice, lo stile, i modelli di progettazione o il test. Ciò rende possibile terminare il prototipo molto velocemente, senza influire negativamente sul debito tecnico del prodotto finale.
La prototipazione Throw-away è diversa da sketching . Lo sketch è più grafico e orientato alle interfacce utente e all'esperienza utente e non consiste nella scrittura di codice di programmazione. La prototipazione a gettoni viene solitamente utilizzata quando lo schizzo non è sufficiente (ad esempio quando è necessario mostrare come una funzione verrà eseguita su diversi smartphone o quando è necessario mostrare le prestazioni e la reattività effettive).
La prototipazione a distanza può rappresentare un rischio quando si tratta di stakeholder privi di background tecnico e in un contesto di scadenze ravvicinate e risorse molto limitate: le parti interessate possono cercare di convincerti a riutilizzare nel prodotto finale il codice sorgente dal prototipo. È naturale credere che ridurrà il tempo necessario per rilasciare il prodotto, ma in realtà, ritarderà solo la data di spedizione. Un modo per evitare ciò è utilizzare per il prototipo un linguaggio che non può essere utilizzato in produzione (ad esempio, usa C # quando sai che il prodotto finale sarà ospitato su server Linux con solo Python installato).
Fig.1:Prototipazioneedisegnoatratteggio:iprototipiaiutanoaraccoglierefeedbackprecociprimadiiniziareasvilupparelafunzioneeffettiva.
Laprototipazioneevolutivaconsistenellacostruzionediunprototipochevienepoiperfezionatosullabasedelfeedbackregolaredeglistakeholderodeipotenzialiutenti.
Qui,lamanutenibilitàdelcodice,lostile,imodellidiprogettazioneoilconteggiodeitestfindall'inizio,cherendepossibilel'evoluzionedelprototipoinunprodottodilivelloaziendalecompletoecompleto.Lefasiprecedentidelprototipocontengonosololapartecentraledelprodottofuturo,quindilefunzionalitàvengonoaggiunteprogressivamente.
Fig. 2: Prototipazione evolutiva : le funzionalità sono aggregate al prototipo per creare il prodotto finale.
La prototipazione evolutiva è diversa dalla prototipazione incrementale . La prototipazione incrementale consiste nella creazione di diversi prototipi, ognuno dei quali rappresenta una parte del sistema futuro e quindi li combina. La prototipazione evolutiva è più vicina ad Agile: spesso, è possibile ottenere in anticipo un prodotto funzionante con funzionalità limitate e estenderlo fino a quando i soggetti interessati non hanno denaro. La prototipazione incrementale, d'altra parte, è più adatta per progetti di grandi dimensioni con molti team che contribuiscono, ogni team lavora su un prototipo separato.
Fig. 3: Prototipazione incrementale : diversi prototipi vengono combinati per formare il prodotto finale.
La prototipazione evolutiva è diversa anche dalle metodologie Agili . Agile riguarda le iterazioni e le pietre miliari frequenti in cui un prodotto completamente funzionale può essere rilasciato alla produzione. Se hai un prodotto funzionante ogni giovedì, stai facendo Agile. Nella prototipazione evolutiva, espandi il prototipo, ma nulla ti obbliga ad avere un prodotto pienamente funzionale regolarmente. Puoi passare due mesi a creare il primo prototipo, piuttosto che espanderlo con alcune funzionalità in due o tre giorni e poi passare tre mesi su un'altra funzione. Non puoi avere questo tipo di pattern irregolari in Agile.
Metodologie Agile specifiche applicano regole aggiuntive. Ad esempio, se non si esegue la pairing di programmazione, non è possibile affermare che si sta eseguendo la programmazione estrema. Se la tua squadra non ha riunioni giornaliere, non stai facendo Scrum.
Il prototipo viene utilizzato per molte ragioni. Forse vuoi valutare l'esperienza dell'utente in una nuova applicazione per stimare se vale la pena costruire, senza incorrere nelle spese di effettivamente costruendolo. Forse hai bisogno di qualcosa che comunichi con un programma esistente sulla rete per eseguire l'integrazione o caricare i test sulla tua rete, prima che tu abbia il tempo di finire il software in esecuzione sul tuo nodo. Forse hai bisogno di mostrare ai tuoi investitori qualcosa che sembra quasi come un programma finito in modo che siano più disposti a trovare l'investimento necessario a in realtà per finire il programma. (Questo non ha nulla a che fare con l'inganno. Utenti e manager giudicano il software esclusivamente tramite la sua interfaccia, quindi è importante presentarli con una buona interfaccia in modo che credano che il progetto sia il più lontano possibile.)
Un prototipo di throwaway è semplicemente uno che non verrà trasformato in modo incrementale nella soluzione reale, ma sostituito da uno nuovo. Ovviamente ci sono alcuni sprechi coinvolti nel buttare via il codice che già fa almeno alcuni di quello che vuoi, ma la migliore integrità architettonica del codice corretto può facilmente compensare tale svantaggio.
Leggi altre domande sui tag development-process prototyping