Il modello a cascata , o " cascata " in inglese, è un'organizzazione delle attività di un progetto sotto forma di fasi lineari e sequenziali, dove ogni fase corrisponde a una specializzazione dei compiti e dipende dai risultati della fase precedente. Comprende le fasi di requisiti, progettazione, implementazione e messa in servizio.
Il modello a cascata è un ciclo di vita del progetto derivante dalle industrie manifatturiere e dal settore delle costruzioni , dove è necessaria una progettazione preliminare, tenendo conto dei forti vincoli materiali e degli alti costi associati alle modifiche progettuali in corso. Viene utilizzato in particolare nei settori dell'ingegneria e dello sviluppo software .
La prima presentazione che descrive un modello di fase per lo sviluppo del software è quella di Herbert D. Benington al "Symposium on Advanced Programming Methods for Digital Computers" su 29 giugno 1956. Lo sfondo dell'articolo era lo sviluppo di un sistema militare chiamato SAGE . Ha descritto un processo di sviluppo con una fase di pianificazione a monte, diverse fasi di specifica, una fase di programmazione ("codifica"), diverse fasi di test successive e una fase di convalida finale. L'articolo fu ripubblicato nel 1983 con una prefazione di Benington che specificava che la separazione in fasi corrispondeva ad una logica di specializzazione per mestiere, e che sottolineava di aver omesso nelle attività un prototipo prima della realizzazione del progetto.
La prima descrizione del modello a cascata è spesso considerata quella dell'articolo di Winston W. Royce nel 1970. L'articolo fornisce una rappresentazione grafica della cascata senza però mai utilizzare il termine. Ironia della sorte, il post di Royce era una critica delle carenze del modello. È così che il termine si è diffuso.
La prima citazione provata del termine "prodezza" appare in un articolo del 1976 di Bell e Thayer che attribuisce a Royce il termine.
Nel 1985, il Dipartimento della Difesa degli Stati Uniti ha adottato l'approccio a cascata nel suo standard DOD-STD-2167A che specifica i rapporti con i subappaltatori per lo sviluppo del software e che specifica che "l'appaltatore deve implementare un ciclo di sviluppo del software che include le seguenti sei fasi : pre-design, progettazione di dettaglio, programmazione, unit test, integrazione e test ”. Questo standard sarà sostituito nel 1994 dalla specifica MIL-STD-498 che non fa più riferimento al modello a cascata e promuove invece un processo di acquisizione evolutivo e metodi di sviluppo iterativi e incrementali.
Il modello a cascata include le seguenti fasi e risultati finali:
Ogni fase non inizia finché i risultati della fase precedente non sono stati convalidati. Il punto di forza di questo approccio è garantire l'esistenza di una documentazione ben strutturata.
Esistono diverse varianti del modello, tra cui l'aggiunta di una fase di progettazione a monte, la produzione preliminare di un prototipo, la scomposizione della fase di validazione e il ritorno alle fasi precedenti in caso di guasti scoperti a valle.
Nello sviluppo del software, la fase di progettazione determina l' architettura del sistema, l'implementazione corrisponde principalmente alle attività di programmazione e la fase di convalida coinvolge in gran parte il test.
Nel suo articolo fondamentale, WW Royce critica il modello a cascata. Osserva che ogni fase deve necessariamente poter tornare alla fase precedente in caso di guasti osservati a valle (ad esempio, in caso di errore scoperto durante i test, è necessario tornare alla fase di programmazione). Rileva inoltre che i requisiti e la progettazione influiscono su tutte le fasi a valle, quindi spesso è necessario tornare a tali passaggi. Infine, raccomanda l'uso di un progetto preliminare. Il suo modello rivisto, tuttavia, rimane vicino al modello originale.
Il modello a cascata si basa sui requisiti espressi all'inizio del progetto. Tuttavia, i requisiti e le esigenze possono essere incompleti o di qualità insufficiente (ambiguità, incoerenza, ecc.). Inoltre, il cliente potrebbe non essere pienamente consapevole delle proprie esigenze finché non vede il software in funzione. Ciò può portare alla revisione del design, alla riqualificazione di parte del software e al nuovo test del prodotto e quindi all'aumento dei costi. Questo è il motivo per cui il modello a cascata è particolarmente adatto a progetti le cui esigenze sono ben comprese e robuste, realizzate con una tecnologia ben padroneggiata.
La strutturazione delle fasi per specializzazione dell'attività consigliata dal modello a cascata è fonte di rigidità nell'organizzazione del lavoro, non favorisce sufficientemente il coinvolgimento del cliente durante tutto il progetto e scoraggia la presa in considerazione dei cambiamenti. Quest'ultimo punto spiega l'emergere negli anni '80 di un approccio incrementale allo sviluppo.
Il ciclo V utilizza una scomposizione di fase simile alla cascata, ma con una convalida più forte. Ciò avviene in più fasi distinte, ciascuna delle quali verifica mediante opportune prove la conformità di una delle fasi a monte. La presentazione grafica del modello rappresenta quindi una V quando le fasi di validazione vengono confrontate con le fasi validate.
Gli autori del Processo Unificato riconoscono l'interesse della fase sequenziale del progetto. Ma invece di separare artificialmente le attività per fase, sostengono attività integrate, all'interno di fasi organizzate in base al grado di maturazione del prodotto: creazione (" inizio " in inglese), sviluppo, costruzione e transizione e di eliminare ciascuna di queste. Fasi in diverse iterazioni .