L'antipattern waterfall model (modello a cascata) è legato ad un preciso schema di sviluppo del software. L'affermazione tipica di chi sta per incorrere in questo antipattern è: «Conclusa questa fase del ciclo di vita del software non dovremo mai più tornarci».
Contesto
Il modello a cascata è una metodologia di progettazione/sviluppo del software costituita da diverse fasi "esplose" a cascata.
Ma come può un approccio nato per lo sviluppo del software essere un antipattern? Il modello a cascata nasce negli anni '50 e trova notevoli sostenitori negli anni '70, tanto da diventare parte integrante dell'ingegneria del software.
Col passare del tempo tale procedimento viene pian piano abbandonato a favore di altri più articolati e flessibili (es. modello a spirale), i vantaggi dei nuovi modelli mettono ben presto messo in evidenza i limiti del vecchio, esponendolo a numerose critiche ed etichettandolo come "problematico" e "limitativo".
Nonostante venga ancora utilizzato da alcuni sostenitori della sua efficacia, è ormai considerato una soluzione inefficace: quindi un antipattern. Per molti versi è simile all'analysis paralysis, è infatti una sua derivazione o sottoinsieme, ma diversamente da questa non nasce da una molteplicità di fattori ma solo da una tipologia d'approccio ormai obsoleta.
Senza scendere troppo in particolari, il ciclo di vita a cascata prevede 5 fasi: analisi dei requisiti, progettazione, implementazione, verifica (o validazione) e manutenzione. L'output di ogni fase diviene l'input per la successiva, è quindi evidente come sia sempre necessario terminare una fase prima di procedere con quella seguente. Tale "requisito" è il reale limite del modello che lo rende poco flessibile e poco adattabile alle reali necessità di progettazione e sviluppo.
Sintomi
In questo caso non vi sono particolari sentinelle di cui tener conto in quanto l'antipattern è direttamente identificabile con la scelta progettuale.
Cause
Le cause che portano all'introduzione di questo antipattern sono legate a:
- eccessiva linearità nel processo di sviluppo che non permette di tornare indietro
- rigidità del modello, ogni fase terminata diventa "intoccabile" e quindi viene a mancare qualsiasi
tipo di interazione - fasi a "tenuta stagna", ogni processo e implementato come se fosse isolato dagli altri
- non sempre sono noti a priori tutti gli elementi necessari per terminare una fase
Conseguenze
Le conseguenze di questo antipattern sono:
- assenza di qualsiasi tipo di flessibilità
- difficoltà nella correzione di errori
- tempi lunghissimi per inserire nuove funzionalità
- aumento dei costi (in caso di aggiunta di nuove funzioni i costi crescono in maniera vertiginosa)
Soluzione
Per evitare questo antipattern possiamo ricorrere a modelli alternativi. Uno dei più apprezzati è il modello a spirale, decisamente più flessibile e realista. Tuttavia sono presenti diversi modelli derivanti da quello a cascata che con le opportune modifiche effettuate risultano funzionali.