title: Modello evolutivo
text: # Modello evolutivo
  
  Il modello evolutivo è uno dei modelli del ciclo di vita del software che cerca di superare i limiti principali del modello a cascata. Si basa sulla prototipizzazione che consiste nell'uso di specifici strumenti software per la realizzazione rapida di una versione semplificata del sistema informativo, con la quale sperimentare le sue funzionalità. La verifica del prototipo può portare a una modifica dei requisiti e una eventuale revisione del progetto.
  
  ## Descrizione
  
  Con il fallimento della prima versione software, infatti, occorre rifare buona parte dell'applicazione. In tal modo conviene considerare la prima versione di una unica funzionalità del progetto (abbassando i costi) come un throw-away (un prototipo "cestinabile") che è valido finché non fornisce al progettista un feed-back sufficiente alle richieste del cliente. La versione iniziale o prototipo viene utilizzata temporaneamente dopo di che viene cestinata e si procede a produrre l'applicazione vera e propria. La seconda versione può essere sviluppata seguendo il modello cascata.
  
  È un modello costituito, quindi, da poche fasi che si ripetono (quindi introduco il ciclo che non esiste nel waterfall)
  
  * Costruisci qualcosa
  * Consegnalo all'utente
  * Ottieni delle valutazioni
  * Modifica il progetto in funzione delle valutazioni
  
  di solito si seguono 2 approcci , o lo sviluppo dei soli mock up cioè le sole interfacce per capire cosa si aspetta il cliente, o breadboard cioè sviluppo di sole funzionalità critiche del modulo per valutazioni e validazioni prestazionali .Questo approccio fornisce solo una soluzione parziale ai problemi del modello a cascata per cui elimina gli errori nei requisiti ma non riduce la distanza temporale per il completamento del ciclo di sviluppo.
  
  Per tale motivo il modello si è evoluto nel modello incrementale perché alcune fasi possono essere rimandate in modo da produrre comunque un insieme utile di funzionalità. In tal modo si forniscono al cliente una serie di prototipi successivi funzionanti e si integrano i feedback in maniera incrementale. Questa fase viene detta modello di sviluppo e rilascio incrementale.cioè si hanno contemporaneamente 2 versioni una in utilizzo e una in prova.
  
  Il modello si può complicare ulteriormente per cui le fasi possono anche essere concorrenti, ad esempio mentre si integra una versione, già si lavora sul design di quella successiva. I tempi si riducono di parecchio ma i rischi sono tantissimi.
  
  Il problema maggiore di questo modello è che si rischia di essere indisciplinati. È necessario far uso di standard di processo e non perdere i punti migliori del modello a cascata. In tal modo scompare la fase di manutenzione e si parla di evoluzione continua. A volte il modello throw-away si può sostituire con un prototipo evolutivo che poco per volta si trasforma nell'applicazione finale. Il modello comunque è molto utile per verificare alcune componenti del software come le interfacce, infatti in questo modo si possono creare interfacce adatte all'utente e ben testate.
  
  