Ecco un elenco dei modelli di sviluppo produttivo più usati e che andremo a vedere. Nel tempo si è visto che possa andare a mescolare un pochino questo ingredienti e lo andremo a vedere attraverso diversi modelli, soprattutto quelli usati in passato:
Nella realtà i modelli più usati sono quelli iterativi (evolutivo ed incrementale) e poi quello waterfall.
Partiamo in realtà da un non modello: code and fix. In questo ci sono solamente due fasi: scrivi il codice e lo fixi (aggiusti). Purtroppo ancora molto diffuso anche se non è un vero modello. Sembra che all’inizio si risparmi, ma alla fine spendi tutto quanto nel fix che il tempo risparmiato nell’evitare analisi e progetto. Praticamente tu inizi a scrivere subito direttamente il codice, ma saltando tutta la parte di progettazione risulta innanzitutto difficile riuscire ad ottenere una forma che sia ottimale del progetto e anche in termini di manutenzione diventa sicuramente più complesso andare a fare fix. Manca una visione di insieme e si fanno sicuramente le cose all’acqua di rose. Anche modifiche piccole rischiano di impegnare davvero moltissimo lavoro. Potrebbe funzionare davvero per modelli minuscoli, altrimenti no. Questo modello è molto diverso dalla metodologia agile anche se sembra simile, ma questo ha molta progettazione e scheduling (che il code and fix non ha).
Nel metodo waterfall facciamo una specifica totale di tutti i requisiti e passiamo il tutto a chi progetta software, infinte implementiamo. Ecco le fasi:
Requirementes Analysis and Specification
System and Software Design
Implementation and Unit Testing
Integration and System Testing (testing large)
Deployment and Maintenance

Si chiama a cascata perché ogni processo praticamente cade sulla fase successiva, tutto quanto in maniera sequenziale e per step. Non abbiamo ritorni indietro se qualcosa non funziona. Io vado comunque avanti e solamente alla fine, in fase di maintenance torno a rifare alcune parti. Non ho loop all’interno del processo. Si arriva in fondo e torna indietro solamente alla fine. Soprattutto dagli svantaggi capiamo la nascita delle metodologie agili.
| pro | contro |
|---|---|
| tutto quanto ben definito | processo molto rigido (difficoltà di gestione del cambiamento) |
| posso andare a fare delle buone stime temporali | difficoltà nella gestione dei cambiamenti, soprattutto per quel che riguardo i requisiti |
| ottimo per sistemi conosciuti | non abbiamo alcun tipo di flessibilità nelle diverse fasi |
| ben documentato |
Potrei andare a fare un leggero fix con il metodo waterfall model with feedback, ma sicuramente non è comodissimo andare indietro totalmente.