La metodologia Waterfall rappresenta un approccio di Project Management che segue un modello lineare, caratterizzato dalla suddivisione in fasi sequenziali, ciascuna delle quali deve essere completata prima di procedere alla successiva.

Rappresenta una pratica consolidata in diversi ambiti ed utilizzata da molti anni e, sviluppata per la prima volta nel 1970, è diventata uno dei modelli più diffusi per lo sviluppo del software.

Metodologia Waterfall: la Cascata

Il termine “Waterfall” (cascata) è utilizzato per descrivere la metodologia waterfall perché ogni fase ha una posizione specifica all’interno del processo e viene svolta consecutivamente, dalla prima all’ultima. Questo modello è anche definito come il modello dei “vasi comunicanti”, poiché simboleggia il passaggio dell’acqua da un contenitore all’altro, seguendo una direzione verticale verso il basso.

La metodologia Waterfall può essere applicata in diversi settori ed è solitamente utilizzata quando si affrontano progetti composti da attività complesse e onerose, che richiedono un’attenta pianificazione e una precisa esecuzione suddividendo l’intero processo in fasi cronologiche distinte e consentendo ai membri del team di valutare facilmente i propri progressi in qualsiasi momento.

Dalla pianificazione all’esecuzione: impara le basi del project management

Facendo un passo indietro, si potrebbe cominciare specificando che, indipendentemente dal modello scelto, il ciclo di vita di un progetto (anche noto come SDLC, Software Development Life Cycle) si compone di 4 fasi principali:

  1. Avvio del progetto
  2. Organizzazione e preparazione
  3. Svolgimento del lavoro
  4. Termine del progetto

In particolare, nell’ambito del project management, queste 4 fasi principali sono definite  PROCESSI. I processi, specificamente riferiti al progetto, sono 5. In aggiunta, all’inizio e alla fine del ciclo di vita del progetto, possono essere aggiunti rispettivamente altri due processi.

  • Processi di Studio di fattibilità (Concept)
  1. Processi di Avvio (Data Gathering)
  2. Processi di pianificazione (Design)
  3. Processi di esecuzione (Development)
  4. Processi di monitoraggio e controllo (Testing)
  5. Processi di chiusura (Deployment)
  • Processi di Manutenzione (Maintenance)

In generale sono sempre previsti una serie di passaggi sequenziali che consentono di gestire il progetto dall’ideazione fino alla fase di mantenimento post-rilascio indipendentemente dal modello scelto.

Waterfall e progetti IT

Indubbiamente la metodologia Waterfall, al netto delle sue peculiari caratteristiche descritte in questa guida, in ambito IT è stata ampiamente superata da metodologie più recenti e flessibili che garantiscono metodi di sviluppo estremamente efficienti e fluidi.

La struttura lineare del Waterfall non sempre si adatta perfettamente ai progetti iterativi. In questi casi può essere più efficace applicare altri modelli di project management, come ad esempio Agile (Scrum), il Rapid Prototype, lo Spiral Model o il B-Model, al fine di gestire al meglio questo tipo di sviluppi.

SDLC Waterfall

Metodologia Waterfall: Capire le fasi del modello

Il metodo Waterfall, che rimane probabilmente il modello di gestione di progetto (Project Management) più diffuso e certamente il più antico, è definito come “predittivo” e richiede una pianificazione accurata e una documentazione dettagliata in ogni fase del progetto alla fine delle quali, vengono rilasciati i cosiddetti “deliverable” che fungono da input per la fase successiva.

In linea teorica, una volta completata una fase nel modello non dovrebbe essere possibile tornare indietro, ed eventuali modifiche devono essere affrontate nella fase successiva. La verità è che questa regola non viene assolutamente rispettata (sicuramente nell’IT) perché la flessibilità dell’ambito consente di agire in modo molto più “disinvolto”.

Ideazione progetto (Concept)
È il primo passo di un qualsiasi progetto, il momento in cui obiettivo principale è quello di identificare la necessità di sviluppare un nuovo prodotto software o un nuovo sistema e di definirne il suo scopo e gli obiettivi generali.

Analisi dei requisiti (Data Gathering)
Durante questa fase vengono definiti i requisiti del sistema da sviluppare, cioè le funzionalità che il software dovrà possedere per soddisfare le necessità dell’utente.

Progettazione (Design)
Durante questa fase viene definita l’architettura del sistema e viene creato il modello dei dati. Viene inoltre scelto l’approccio tecnologico più adeguato e si stima la quantità di lavoro necessaria per completare ciascuna fase del progetto.

Implementazione (Development)
In questa fase viene redatto il codice del software e vengono sviluppate le funzionalità previste nella fase di analisi dei requisiti.

Test
Durante questa fase si effettuano test di verifica e validazione per assicurarsi che il software funzioni come previsto.

Rilascio (Deployment)
Durante questa fase, il prodotto software viene distribuito e installato nell’ambiente operativo in cui dovrà essere eseguito, in modo che gli utenti possano utilizzarlo.

Manutenzione (Maintenance)
Durante questa fase, vengono svolte attività di manutenzione del software, come la correzione di bug, il miglioramento delle funzionalità esistenti e l’aggiornamento del software alle nuove esigenze degli utenti.

Metodologia Waterfall: Le Fasi

Metodologia Waterfall: Ideazione del progetto

Durante la fase di concept, il project manager ed il team di sviluppo lavorano a stretto contatto con gli stakeholder del progetto per comprendere le loro esigenze e le loro aspettative. In questa fase si definiscono i requisiti iniziali del progetto e si effettua una prima analisi di fattibilità per comprendere se il progetto è realizzabile e se il team di sviluppo ha le competenze necessarie per portarlo a termine.

Metodologia Waterfall: Analisi dei requisiti

Nella fase di analisi dei requisiti, gli Stakeholder, ovvero i clienti che hanno commissionato lo sviluppo del software, vengono raccolte e analizzate tutte le informazioni necessarie per entrare nel dettaglio rispetto all’obiettivo, le esigenze e le aspettative del committente.

C’è da considerare che a seconda dello sviluppo richiesto ci potrebbe essere più di uno stakeholder ed è essenziale un’interazione efficace con il project manager. Quest’ultimo dovrà inoltre coinvolgere il team di sviluppo, o almeno i technical leader, per garantire una comprensione completa delle necessità.

Metodologia Waterfall: fare i compiti a casa!

Dopo le analisi fatte, la comprensione delle richieste funzionali e l’identificazione di eventuali incongruenze, il Project Manager dovrà sintetizzare i requisiti del progetto in un documento formale ed esaustivo in cui siano descritte le funzionalità e le caratteristiche richieste al fine di evitare ambiguità e fraintendimenti durante il processo di sviluppo.

È importante prestare attenzione ad aspetti aggiuntivi come la fattibilità tecnica, la conformità alle normative e alle leggi, la sicurezza del sistema e l’usabilità. Inoltre, non bisogna trascurare i requisiti non funzionali, come le prestazioni, la scalabilità, la facilità di manutenzione e la compatibilità con altri sistemi esistenti.

Se si commettono errori durante l’analisi dei requisiti e si prendono decisioni sbagliate, si rischia di compromettere l’intero progetto, aumentando drasticamente il rischio di fallimento (puoi approfondire le cause di fallimento di un progetto).

È quindi fondamentale che la documentazione di progetto venga valutata e revisionata costantemente in collaborazione con gli stakeholder e i referenti tecnici, per garantire la coerenza tra le aspettative del committente e la realizzazione finale.

Metodologia Waterfall: Progettazione

Anche questa fase ha la sua buona dose di importanza poiché durante questa viene definita l’architettura del sistema e le soluzioni applicative necessarie per lo sviluppo del progetto.

L’architettura del software è la struttura generale del sistema software e comprende la definizione delle sue componenti, le relazioni tra le componenti e le interfacce tra le componenti, l’approccio tecnologico più adeguato, il modello dei dati ed il tipo di archiviazione ed aggregazione degli stessi. Influisce sull’usabilità del software, sulla facilità di manutenzione, sulla scalabilità e sulla sicurezza. Una buona architettura dovrebbe essere modulare, flessibile e adattabile al cambiamento.

In sostanza, questa fase richiede una profonda conoscenza delle funzionalità richieste dal sistema, delle tecnologie disponibili e delle possibili alternative. Dato che ogni progetto ha le proprie caratteristiche specifiche, il supporto dei team tecnici è fondamentale per definire correttamente tutte le parti da sviluppare.

Una volta identificate tutte le parti da sviluppare e implementare, i “tech leader” coinvolti in base alla tipologia del progetto (ad esempio, programmatori, sistemisti, designer, visual designer, copywriter, ecc.) dovranno procedere alla stima della quantità di lavoro necessaria per completare ciascuna fase del progetto.

Questa attività richiede una valutazione accurata delle risorse disponibili, delle attività necessarie e delle interazioni tra le diverse fasi del progetto, al fine di garantire che la stima della quantità di lavoro garantisca che il progetto sia completato entro i tempi previsti e con i costi previsti. Per fare questo si possono adottare diversi modelli di calcolo previsionale, tra cui uno dei più celebri in project management: il diagramma di Pert.

Metodologia Waterfall: Implementazione

La fase di Implementazione è ovviamente la più lunga e onerosa in termini di tempo ed è anche quella che impiega il maggior numero di risorse poiché rappresenta il momento in cui il codice del software viene scritto per dare vita alle funzionalità previste nella fase di analisi dei requisiti funzionali.

Durante questa fase, il team di sviluppo traduce le specifiche funzionali in codice eseguibile, utilizzando le tecnologie e gli strumenti scelti in fase di progettazione, definendo e sviluppando la struttura del software sulla base dell’architettura progettata precedentemente.

È importante sottolineare come le competenze del team siano fondamentali per la qualità del risultato finale, considerando l’utilizzo dei linguaggi di programmazione e degli strumenti scelti durante la progettazione.

L’aspettativa è che il codice scritto rispetti coerentemente le specifiche funzionali, tuttavia in questo aspetto il project manager non ha margine di manovra (non più incidere in alcun modo) ed il livello di competenza e “seniority” del team a garantire la qualità del prodotto finale. Sebbene il PM non possa scegliere direttamente i membri del team, può comunque svolgere un ruolo di coordinamento e supporto per garantire che ogni componente lavori al meglio delle proprie capacità (per es.) rimuovendo ostacoli e problemi che limiterebbero la linearità a la concentrazione del team sul proprio lavoro.

Project Management Information System: PMIS

Durante il processo di implementazione, il project manager, insieme al team di sviluppo, per gestire in modo efficace il flusso di lavoro, può fare affidamento sul cosiddetto PMIS Project Management Information System, che altro non è che la definizione e l’utilizzo di una suite di applicazioni a supporto delle attività operative quotidiane e che servono per:

  • Tracciare le attività in corso
  • Favorire la collaborazione del team
  • Documentare il progetto
  • Gestire il “versioning” del codice
  • Gestire i processi di deployment (CI, Staging e Production)

In definitiva, la fase di “Implementazione” del modello Waterfall rappresenta il passaggio chiave che permette di trasformare le specifiche funzionali raccolte e analizzate in codice eseguibile. Una buona implementazione garantisce la qualità del software e permette di evitare costose correzioni durante le fasi di testing e manutenzione.

Metodologia Waterfall: Test

Questa è la fase più sottovalutata e quella che riceve il più basso livello di attenzione all’interno dell’intero flusso di sviluppo di un software in modalità Waterfall. In tutti i modelli che si fondano sull’iterazione continua (come Agile, Spiral, ecc.), la fase di testing è parte integrante del ciclo stesso e non si rilascia il singolo pezzetto di codice se non è testato dal team. In Waterfall, invece, è una fase ben distinta e spesso si tende a ridurne drasticamente il tempo ad essa dedicata per cercare di recuperare il ritardo che tipicamente si è accumulato durante le fasi precedenti (soprattutto quella di implementazione).

Riuscendo a non trascurare questa fase, la fase di “Test” consente di verificare che il software funzioni correttamente e sia conforme alle specifiche funzionali, effettuando una serie di validazioni per assicurarsi che esegua ciò per cui è stato progettato.

Durante la fase di progettazione, è importante definire i processi da testare attraverso una strategia ben delineata. Questa strategia deve consentire di verificare singolarmente tutte le funzionalità del software e le relative correlazioni, al fine di individuare eventuali problemi o errori. Inoltre, la strategia di testing deve essere definita in base alle specifiche funzionali e deve comprendere sia test funzionali che test non funzionali.

Metodologia Waterfall: Test funzionali

I test funzionali consistono nella verifica delle funzionalità del software e nella valutazione del loro comportamento in diverse situazioni. Questi test consentono di verificare che il software risponda correttamente alle richieste dell’utente e che le funzionalità siano conformi alle specifiche funzionali.

Metodologia Waterfall: Test non funzionali

In particolare, i test non funzionali consentono di verificare le caratteristiche del software che non riguardano direttamente le funzionalità, come ad esempio la sicurezza, le prestazioni, la scalabilità e la compatibilità con altri sistemi.

Durante la fase di testing saranno utilizzate diverse tecniche e strumenti per valutarne la qualità e la stabilità, tra cui i test unitari, i test di integrazione, i test di sistema e i test di accettazione, per valutare la qualità del software:

  • i test unitari consistono nella verifica delle singole unità di codice;
  • i test di integrazione consentono di verificare la corretta integrazione delle diverse unità di codice;
  • i test di sistema consentono di verificare il corretto funzionamento del software nel suo complesso;
  • i test di accettazione consentono di verificare che il software sia conforme alle specifiche funzionali e che soddisfi le esigenze dell’utente.

Tutti i test eseguiti dovranno essere registrati e documentati al fine di identificare facilmente i problemi ed effettuare le correzioni necessarie, nonché per consentire una corretta manutenzione del software nel tempo.

Nonostante la tentazione di sfruttare scorciatoie e omissioni, la fase di ‘Test’ è un passaggio cruciale per verificare la qualità del software, individuare eventuali problemi o errori e minimizzare i rischi, assicurando così la massima qualità del prodotto finale.

Metodologia Waterfall: Deployment

Completati i processi descritti in precedenza, il passaggio successivo è la fase di ‘Deployment’, che consente di distribuire e installare il prodotto software nell’ambiente operativo in cui dovrà essere eseguito.

In caso di soluzioni stand-alone, ovvero da installare fisicamente su delle macchine (locali o server di rete), il team di sviluppo si occuperà di preparare il software per il rilascio creando pacchetti di installazione e definendo le procedure di installazione. In caso di soluzioni web-based, invece, si provvederà alla pubblicazione del software sui web server.

Questa attività richiede una conoscenza approfondita dell’ambiente operativo in cui il software dovrà essere installato e delle procedure necessarie per distribuirlo, sia che si tratti di soluzioni stand-alone, ovvero da installare fisicamente su delle macchine, o di soluzioni web-based, che richiedono invece la pubblicazione online del software.

Durante questa fase, sarà necessario effettuare ulteriori attività di testing del software per verificare che la procedura di installazione e il software stesso siano conformi alle specifiche funzionali e funzionino correttamente nell’ambiente operativo previsto.

Dovranno essere svolte ulteriori attività di testing del software durante questa fase per verificare che la procedura di installazione e il software stesso siano conformi alle specifiche iniziali e funzionino correttamente nell’ambiente operativo previsto. Anche in questa fase saranno necessari una serie di di test sulle procedure di aggiornamento del software in caso di nuovi rilasci, di re-installazione in caso di cambiamenti o aggiornamenti del sistema operativo e le procedure di riconoscimento dell’utente in caso di nuova installazione su un server diverso.

Insomma, il software deve essere testato non solo per garantire il corretto funzionamento una volta terminato lo sviluppo, ma anche per verificare che continui ad essere perfettamente funzionante in caso di azioni – anche imprevedibili – di vario genere.

Documentare tutte le procedure di deployment insieme alla documentazione sul funzionamento del software, dalla prima installazione alle procedure di aggiornamento per le nuove versioni e le procedure per la migrazione del software, per renderle disponibili a tutti gli utenti è la cosiddetta “ciliegina sulla torta”. Infatti troppo spesso la documentazione sia tecnica che funzionale è misera e assolutamente inutile.

Metodologia Waterfall: Maintenance

La fase di “Maintenance” (mantenimento post rilascio) rappresenta l’ultima fase del modello Waterfall ed è fondamentale per garantire la corretta funzionalità e la longevità del software. Durante questa fase, il team di sviluppo si occuperà di effettuare aggiornamenti, correzioni di eventuali problemi e di fornire supporto all’utente finale. Considerando la natura iterativa delle attività da svolgere in questa fase, spesso si utilizza il metodo B-Model.

In questa fase, il team di sviluppo si occupa delle attività di manutenzione del software, tra cui la correzione dei bug, il miglioramento delle funzionalità esistenti e l’adeguamento del software alle nuove esigenze degli utenti.

Metodologia Waterfall: Correzione bug

In primo luogo, il team di sviluppo deve individuare e correggere eventuali bug o problemi riscontrati dagli utenti e che costituiranno un’importante fonte di feedback per migliorare il software. Sarà quindi necessario prevedere un sistema di tracciamento degli errori sia automatico, sia gestito direttamente dagli utenti.

Metodologia Waterfall: nuove funzionalità

Successivamente, si dovrà procedere al miglioramento delle funzionalità esistenti, per rendere il software più efficiente e più facile da utilizzare. Questa opportunità è impagabile: sfruttando i sistemi di segnalazione degli errori si riceveranno anche molti suggerimenti. Aggregando le richieste degli utente, in modo statistico si potrà valutare quale funzionalità avrà la priorità per soddisfare il numero maggiore di utilizzatori.

Metodologia Waterfall: Testing

Durante la fase di maintenance, il team di sviluppo dovrà continuare a testare il software per verificare la conformità delle correzioni e dei miglioramenti alle specifiche funzionali e per accertarsi che non siano stati introdotti nuovi problemi o errori.

Metodologia Waterfall: Documentazione

Infine, durante la fase di maintenance, il team di sviluppo deve gestire la documentazione del software e delle attività di manutenzione e miglioramento che sono state svolte nel tempo.

La fase di maintenance consente di mantenere il software in ottimo stato e di garantirne la corretta fruizione da parte degli utenti. Grazie al contributo degli utilizzatori, è possibile soddisfare le loro esigenze e le evoluzioni del mercato, mantenendo il software competitivo e all’avanguardia.

Conclusione

Poiché si basa sulla capacità di prevedere con precisione i risultati delle diverse fasi del progetto, nonostante i suoi svantaggi e le sue limitazioni, Waterfall rappresenta ancora oggi uno dei modelli più utilizzati nello sviluppo del software.

Sebbene la capacità di garantire la qualità del software e di minimizzare i rischi di fallimento rappresenti una caratteristica fondamentale del modello Waterfall, tale metodo è meno adatto ai progetti che richiedono maggiore flessibilità e adattabilità in cui le esigenze di sviluppo (in base al mercato di riferimento) sono molto più fluide e incerte.

In questi casi, approcci SDLC come ad esempio il modello Agile, si basano sulla flessibilità e sull’adattabilità, consentendo di gestire i cambiamenti e le evoluzioni del progetto in modo più efficace. Nello specifico, il modello Agile prevede infatti cicli di sviluppo brevi e iterativi che consentono di verificare e adattare continuamente il prodotto alle esigenze degli utenti.

Tuttavia, il modello Waterfall rimane uno dei modelli più utilizzati, soprattutto in progetti di grandi dimensioni e di lunga durata, poiché garantisce maggiore affidabilità e prevedibilità dei risultati, consentendo di gestire il progetto in modo efficace e riducendo i rischi di fallimento.

Un’altra caratteristica è la suddivisione del lavoro e la maggiore specializzazione dei ruoli. Da un lato, questo permette di svolgere le attività in modo più efficace e di garantire una maggiore qualità del prodotto; dall’altro, questa suddivisione può comportare una maggiore rigidità e difficoltà nell’adattarsi ai cambiamenti del progetto.

Personalmente, ritengo che un buon project manager, con la giusta esperienza e competenze, dovrebbe essere in grado di capire quando scegliere e applicare il modello Waterfall per gestire i propri progetti in modo sicuro ed efficace (rispetto ad altre metodologie).

Luca Cipicchia
Luca

La metodologia Waterfall rappresenta un approccio di Project Management che segue un modello lineare, caratterizzato dalla suddivisione in fasi sequenziali, ciascuna delle quali deve essere completata prima di procedere alla successiva.

Rappresenta una pratica consolidata in diversi ambiti ed utilizzata da molti anni e, sviluppata per la prima volta nel 1970, è diventata uno dei modelli più diffusi per lo sviluppo del software.

Metodologia Waterfall: la Cascata

Il termine “Waterfall” (cascata) è utilizzato per descrivere la metodologia waterfall perché ogni fase ha una posizione specifica all’interno del processo e viene svolta consecutivamente, dalla prima all’ultima. Questo modello è anche definito come il modello dei “vasi comunicanti”, poiché simboleggia il passaggio dell’acqua da un contenitore all’altro, seguendo una direzione verticale verso il basso.

La metodologia Waterfall può essere applicata in diversi settori ed è solitamente utilizzata quando si affrontano progetti composti da attività complesse e onerose, che richiedono un’attenta pianificazione e una precisa esecuzione suddividendo l’intero processo in fasi cronologiche distinte e consentendo ai membri del team di valutare facilmente i propri progressi in qualsiasi momento.

Dalla pianificazione all’esecuzione: impara le basi del project management

Facendo un passo indietro, si potrebbe cominciare specificando che, indipendentemente dal modello scelto, il ciclo di vita di un progetto (anche noto come SDLC, Software Development Life Cycle) si compone di 4 fasi principali:

  1. Avvio del progetto
  2. Organizzazione e preparazione
  3. Svolgimento del lavoro
  4. Termine del progetto

In particolare, nell’ambito del project management, queste 4 fasi principali sono definite  PROCESSI. I processi, specificamente riferiti al progetto, sono 5. In aggiunta, all’inizio e alla fine del ciclo di vita del progetto, possono essere aggiunti rispettivamente altri due processi.

  • Processi di Studio di fattibilità (Concept)
  1. Processi di Avvio (Data Gathering)
  2. Processi di pianificazione (Design)
  3. Processi di esecuzione (Development)
  4. Processi di monitoraggio e controllo (Testing)
  5. Processi di chiusura (Deployment)
  • Processi di Manutenzione (Maintenance)

In generale sono sempre previsti una serie di passaggi sequenziali che consentono di gestire il progetto dall’ideazione fino alla fase di mantenimento post-rilascio indipendentemente dal modello scelto.

Waterfall e progetti IT

Indubbiamente la metodologia Waterfall, al netto delle sue peculiari caratteristiche descritte in questa guida, in ambito IT è stata ampiamente superata da metodologie più recenti e flessibili che garantiscono metodi di sviluppo estremamente efficienti e fluidi.

La struttura lineare del Waterfall non sempre si adatta perfettamente ai progetti iterativi. In questi casi può essere più efficace applicare altri modelli di project management, come ad esempio Agile (Scrum), il Rapid Prototype, lo Spiral Model o il B-Model, al fine di gestire al meglio questo tipo di sviluppi.

SDLC Waterfall

Metodologia Waterfall: Capire le fasi del modello

Il metodo Waterfall, che rimane probabilmente il modello di gestione di progetto (Project Management) più diffuso e certamente il più antico, è definito come “predittivo” e richiede una pianificazione accurata e una documentazione dettagliata in ogni fase del progetto alla fine delle quali, vengono rilasciati i cosiddetti “deliverable” che fungono da input per la fase successiva.

In linea teorica, una volta completata una fase nel modello non dovrebbe essere possibile tornare indietro, ed eventuali modifiche devono essere affrontate nella fase successiva. La verità è che questa regola non viene assolutamente rispettata (sicuramente nell’IT) perché la flessibilità dell’ambito consente di agire in modo molto più “disinvolto”.

Ideazione progetto (Concept)
È il primo passo di un qualsiasi progetto, il momento in cui obiettivo principale è quello di identificare la necessità di sviluppare un nuovo prodotto software o un nuovo sistema e di definirne il suo scopo e gli obiettivi generali.

Analisi dei requisiti (Data Gathering)
Durante questa fase vengono definiti i requisiti del sistema da sviluppare, cioè le funzionalità che il software dovrà possedere per soddisfare le necessità dell’utente.

Progettazione (Design)
Durante questa fase viene definita l’architettura del sistema e viene creato il modello dei dati. Viene inoltre scelto l’approccio tecnologico più adeguato e si stima la quantità di lavoro necessaria per completare ciascuna fase del progetto.

Implementazione (Development)
In questa fase viene redatto il codice del software e vengono sviluppate le funzionalità previste nella fase di analisi dei requisiti.

Test
Durante questa fase si effettuano test di verifica e validazione per assicurarsi che il software funzioni come previsto.

Rilascio (Deployment)
Durante questa fase, il prodotto software viene distribuito e installato nell’ambiente operativo in cui dovrà essere eseguito, in modo che gli utenti possano utilizzarlo.

Manutenzione (Maintenance)
Durante questa fase, vengono svolte attività di manutenzione del software, come la correzione di bug, il miglioramento delle funzionalità esistenti e l’aggiornamento del software alle nuove esigenze degli utenti.

Metodologia Waterfall: Le Fasi

Metodologia Waterfall: Ideazione del progetto

Durante la fase di concept, il project manager ed il team di sviluppo lavorano a stretto contatto con gli stakeholder del progetto per comprendere le loro esigenze e le loro aspettative. In questa fase si definiscono i requisiti iniziali del progetto e si effettua una prima analisi di fattibilità per comprendere se il progetto è realizzabile e se il team di sviluppo ha le competenze necessarie per portarlo a termine.

Metodologia Waterfall: Analisi dei requisiti

Nella fase di analisi dei requisiti, gli Stakeholder, ovvero i clienti che hanno commissionato lo sviluppo del software, vengono raccolte e analizzate tutte le informazioni necessarie per entrare nel dettaglio rispetto all’obiettivo, le esigenze e le aspettative del committente.

C’è da considerare che a seconda dello sviluppo richiesto ci potrebbe essere più di uno stakeholder ed è essenziale un’interazione efficace con il project manager. Quest’ultimo dovrà inoltre coinvolgere il team di sviluppo, o almeno i technical leader, per garantire una comprensione completa delle necessità.

Metodologia Waterfall: fare i compiti a casa!

Dopo le analisi fatte, la comprensione delle richieste funzionali e l’identificazione di eventuali incongruenze, il Project Manager dovrà sintetizzare i requisiti del progetto in un documento formale ed esaustivo in cui siano descritte le funzionalità e le caratteristiche richieste al fine di evitare ambiguità e fraintendimenti durante il processo di sviluppo.

È importante prestare attenzione ad aspetti aggiuntivi come la fattibilità tecnica, la conformità alle normative e alle leggi, la sicurezza del sistema e l’usabilità. Inoltre, non bisogna trascurare i requisiti non funzionali, come le prestazioni, la scalabilità, la facilità di manutenzione e la compatibilità con altri sistemi esistenti.

Se si commettono errori durante l’analisi dei requisiti e si prendono decisioni sbagliate, si rischia di compromettere l’intero progetto, aumentando drasticamente il rischio di fallimento (puoi approfondire le cause di fallimento di un progetto).

È quindi fondamentale che la documentazione di progetto venga valutata e revisionata costantemente in collaborazione con gli stakeholder e i referenti tecnici, per garantire la coerenza tra le aspettative del committente e la realizzazione finale.

Metodologia Waterfall: Progettazione

Anche questa fase ha la sua buona dose di importanza poiché durante questa viene definita l’architettura del sistema e le soluzioni applicative necessarie per lo sviluppo del progetto.

L’architettura del software è la struttura generale del sistema software e comprende la definizione delle sue componenti, le relazioni tra le componenti e le interfacce tra le componenti, l’approccio tecnologico più adeguato, il modello dei dati ed il tipo di archiviazione ed aggregazione degli stessi. Influisce sull’usabilità del software, sulla facilità di manutenzione, sulla scalabilità e sulla sicurezza. Una buona architettura dovrebbe essere modulare, flessibile e adattabile al cambiamento.

In sostanza, questa fase richiede una profonda conoscenza delle funzionalità richieste dal sistema, delle tecnologie disponibili e delle possibili alternative. Dato che ogni progetto ha le proprie caratteristiche specifiche, il supporto dei team tecnici è fondamentale per definire correttamente tutte le parti da sviluppare.

Una volta identificate tutte le parti da sviluppare e implementare, i “tech leader” coinvolti in base alla tipologia del progetto (ad esempio, programmatori, sistemisti, designer, visual designer, copywriter, ecc.) dovranno procedere alla stima della quantità di lavoro necessaria per completare ciascuna fase del progetto.

Questa attività richiede una valutazione accurata delle risorse disponibili, delle attività necessarie e delle interazioni tra le diverse fasi del progetto, al fine di garantire che la stima della quantità di lavoro garantisca che il progetto sia completato entro i tempi previsti e con i costi previsti. Per fare questo si possono adottare diversi modelli di calcolo previsionale, tra cui uno dei più celebri in project management: il diagramma di Pert.

Metodologia Waterfall: Implementazione

La fase di Implementazione è ovviamente la più lunga e onerosa in termini di tempo ed è anche quella che impiega il maggior numero di risorse poiché rappresenta il momento in cui il codice del software viene scritto per dare vita alle funzionalità previste nella fase di analisi dei requisiti funzionali.

Durante questa fase, il team di sviluppo traduce le specifiche funzionali in codice eseguibile, utilizzando le tecnologie e gli strumenti scelti in fase di progettazione, definendo e sviluppando la struttura del software sulla base dell’architettura progettata precedentemente.

È importante sottolineare come le competenze del team siano fondamentali per la qualità del risultato finale, considerando l’utilizzo dei linguaggi di programmazione e degli strumenti scelti durante la progettazione.

L’aspettativa è che il codice scritto rispetti coerentemente le specifiche funzionali, tuttavia in questo aspetto il project manager non ha margine di manovra (non più incidere in alcun modo) ed il livello di competenza e “seniority” del team a garantire la qualità del prodotto finale. Sebbene il PM non possa scegliere direttamente i membri del team, può comunque svolgere un ruolo di coordinamento e supporto per garantire che ogni componente lavori al meglio delle proprie capacità (per es.) rimuovendo ostacoli e problemi che limiterebbero la linearità a la concentrazione del team sul proprio lavoro.

Project Management Information System: PMIS

Durante il processo di implementazione, il project manager, insieme al team di sviluppo, per gestire in modo efficace il flusso di lavoro, può fare affidamento sul cosiddetto PMIS Project Management Information System, che altro non è che la definizione e l’utilizzo di una suite di applicazioni a supporto delle attività operative quotidiane e che servono per:

  • Tracciare le attività in corso
  • Favorire la collaborazione del team
  • Documentare il progetto
  • Gestire il “versioning” del codice
  • Gestire i processi di deployment (CI, Staging e Production)

In definitiva, la fase di “Implementazione” del modello Waterfall rappresenta il passaggio chiave che permette di trasformare le specifiche funzionali raccolte e analizzate in codice eseguibile. Una buona implementazione garantisce la qualità del software e permette di evitare costose correzioni durante le fasi di testing e manutenzione.

Metodologia Waterfall: Test

Questa è la fase più sottovalutata e quella che riceve il più basso livello di attenzione all’interno dell’intero flusso di sviluppo di un software in modalità Waterfall. In tutti i modelli che si fondano sull’iterazione continua (come Agile, Spiral, ecc.), la fase di testing è parte integrante del ciclo stesso e non si rilascia il singolo pezzetto di codice se non è testato dal team. In Waterfall, invece, è una fase ben distinta e spesso si tende a ridurne drasticamente il tempo ad essa dedicata per cercare di recuperare il ritardo che tipicamente si è accumulato durante le fasi precedenti (soprattutto quella di implementazione).

Riuscendo a non trascurare questa fase, la fase di “Test” consente di verificare che il software funzioni correttamente e sia conforme alle specifiche funzionali, effettuando una serie di validazioni per assicurarsi che esegua ciò per cui è stato progettato.

Durante la fase di progettazione, è importante definire i processi da testare attraverso una strategia ben delineata. Questa strategia deve consentire di verificare singolarmente tutte le funzionalità del software e le relative correlazioni, al fine di individuare eventuali problemi o errori. Inoltre, la strategia di testing deve essere definita in base alle specifiche funzionali e deve comprendere sia test funzionali che test non funzionali.

Metodologia Waterfall: Test funzionali

I test funzionali consistono nella verifica delle funzionalità del software e nella valutazione del loro comportamento in diverse situazioni. Questi test consentono di verificare che il software risponda correttamente alle richieste dell’utente e che le funzionalità siano conformi alle specifiche funzionali.

Metodologia Waterfall: Test non funzionali

In particolare, i test non funzionali consentono di verificare le caratteristiche del software che non riguardano direttamente le funzionalità, come ad esempio la sicurezza, le prestazioni, la scalabilità e la compatibilità con altri sistemi.

Durante la fase di testing saranno utilizzate diverse tecniche e strumenti per valutarne la qualità e la stabilità, tra cui i test unitari, i test di integrazione, i test di sistema e i test di accettazione, per valutare la qualità del software:

  • i test unitari consistono nella verifica delle singole unità di codice;
  • i test di integrazione consentono di verificare la corretta integrazione delle diverse unità di codice;
  • i test di sistema consentono di verificare il corretto funzionamento del software nel suo complesso;
  • i test di accettazione consentono di verificare che il software sia conforme alle specifiche funzionali e che soddisfi le esigenze dell’utente.

Tutti i test eseguiti dovranno essere registrati e documentati al fine di identificare facilmente i problemi ed effettuare le correzioni necessarie, nonché per consentire una corretta manutenzione del software nel tempo.

Nonostante la tentazione di sfruttare scorciatoie e omissioni, la fase di ‘Test’ è un passaggio cruciale per verificare la qualità del software, individuare eventuali problemi o errori e minimizzare i rischi, assicurando così la massima qualità del prodotto finale.

Metodologia Waterfall: Deployment

Completati i processi descritti in precedenza, il passaggio successivo è la fase di ‘Deployment’, che consente di distribuire e installare il prodotto software nell’ambiente operativo in cui dovrà essere eseguito.

In caso di soluzioni stand-alone, ovvero da installare fisicamente su delle macchine (locali o server di rete), il team di sviluppo si occuperà di preparare il software per il rilascio creando pacchetti di installazione e definendo le procedure di installazione. In caso di soluzioni web-based, invece, si provvederà alla pubblicazione del software sui web server.

Questa attività richiede una conoscenza approfondita dell’ambiente operativo in cui il software dovrà essere installato e delle procedure necessarie per distribuirlo, sia che si tratti di soluzioni stand-alone, ovvero da installare fisicamente su delle macchine, o di soluzioni web-based, che richiedono invece la pubblicazione online del software.

Durante questa fase, sarà necessario effettuare ulteriori attività di testing del software per verificare che la procedura di installazione e il software stesso siano conformi alle specifiche funzionali e funzionino correttamente nell’ambiente operativo previsto.

Dovranno essere svolte ulteriori attività di testing del software durante questa fase per verificare che la procedura di installazione e il software stesso siano conformi alle specifiche iniziali e funzionino correttamente nell’ambiente operativo previsto. Anche in questa fase saranno necessari una serie di di test sulle procedure di aggiornamento del software in caso di nuovi rilasci, di re-installazione in caso di cambiamenti o aggiornamenti del sistema operativo e le procedure di riconoscimento dell’utente in caso di nuova installazione su un server diverso.

Insomma, il software deve essere testato non solo per garantire il corretto funzionamento una volta terminato lo sviluppo, ma anche per verificare che continui ad essere perfettamente funzionante in caso di azioni – anche imprevedibili – di vario genere.

Documentare tutte le procedure di deployment insieme alla documentazione sul funzionamento del software, dalla prima installazione alle procedure di aggiornamento per le nuove versioni e le procedure per la migrazione del software, per renderle disponibili a tutti gli utenti è la cosiddetta “ciliegina sulla torta”. Infatti troppo spesso la documentazione sia tecnica che funzionale è misera e assolutamente inutile.

Metodologia Waterfall: Maintenance

La fase di “Maintenance” (mantenimento post rilascio) rappresenta l’ultima fase del modello Waterfall ed è fondamentale per garantire la corretta funzionalità e la longevità del software. Durante questa fase, il team di sviluppo si occuperà di effettuare aggiornamenti, correzioni di eventuali problemi e di fornire supporto all’utente finale. Considerando la natura iterativa delle attività da svolgere in questa fase, spesso si utilizza il metodo B-Model.

In questa fase, il team di sviluppo si occupa delle attività di manutenzione del software, tra cui la correzione dei bug, il miglioramento delle funzionalità esistenti e l’adeguamento del software alle nuove esigenze degli utenti.

Metodologia Waterfall: Correzione bug

In primo luogo, il team di sviluppo deve individuare e correggere eventuali bug o problemi riscontrati dagli utenti e che costituiranno un’importante fonte di feedback per migliorare il software. Sarà quindi necessario prevedere un sistema di tracciamento degli errori sia automatico, sia gestito direttamente dagli utenti.

Metodologia Waterfall: nuove funzionalità

Successivamente, si dovrà procedere al miglioramento delle funzionalità esistenti, per rendere il software più efficiente e più facile da utilizzare. Questa opportunità è impagabile: sfruttando i sistemi di segnalazione degli errori si riceveranno anche molti suggerimenti. Aggregando le richieste degli utente, in modo statistico si potrà valutare quale funzionalità avrà la priorità per soddisfare il numero maggiore di utilizzatori.

Metodologia Waterfall: Testing

Durante la fase di maintenance, il team di sviluppo dovrà continuare a testare il software per verificare la conformità delle correzioni e dei miglioramenti alle specifiche funzionali e per accertarsi che non siano stati introdotti nuovi problemi o errori.

Metodologia Waterfall: Documentazione

Infine, durante la fase di maintenance, il team di sviluppo deve gestire la documentazione del software e delle attività di manutenzione e miglioramento che sono state svolte nel tempo.

La fase di maintenance consente di mantenere il software in ottimo stato e di garantirne la corretta fruizione da parte degli utenti. Grazie al contributo degli utilizzatori, è possibile soddisfare le loro esigenze e le evoluzioni del mercato, mantenendo il software competitivo e all’avanguardia.

Conclusione

Poiché si basa sulla capacità di prevedere con precisione i risultati delle diverse fasi del progetto, nonostante i suoi svantaggi e le sue limitazioni, Waterfall rappresenta ancora oggi uno dei modelli più utilizzati nello sviluppo del software.

Sebbene la capacità di garantire la qualità del software e di minimizzare i rischi di fallimento rappresenti una caratteristica fondamentale del modello Waterfall, tale metodo è meno adatto ai progetti che richiedono maggiore flessibilità e adattabilità in cui le esigenze di sviluppo (in base al mercato di riferimento) sono molto più fluide e incerte.

In questi casi, approcci SDLC come ad esempio il modello Agile, si basano sulla flessibilità e sull’adattabilità, consentendo di gestire i cambiamenti e le evoluzioni del progetto in modo più efficace. Nello specifico, il modello Agile prevede infatti cicli di sviluppo brevi e iterativi che consentono di verificare e adattare continuamente il prodotto alle esigenze degli utenti.

Tuttavia, il modello Waterfall rimane uno dei modelli più utilizzati, soprattutto in progetti di grandi dimensioni e di lunga durata, poiché garantisce maggiore affidabilità e prevedibilità dei risultati, consentendo di gestire il progetto in modo efficace e riducendo i rischi di fallimento.

Un’altra caratteristica è la suddivisione del lavoro e la maggiore specializzazione dei ruoli. Da un lato, questo permette di svolgere le attività in modo più efficace e di garantire una maggiore qualità del prodotto; dall’altro, questa suddivisione può comportare una maggiore rigidità e difficoltà nell’adattarsi ai cambiamenti del progetto.

Personalmente, ritengo che un buon project manager, con la giusta esperienza e competenze, dovrebbe essere in grado di capire quando scegliere e applicare il modello Waterfall per gestire i propri progetti in modo sicuro ed efficace (rispetto ad altre metodologie).

Luca Cipicchia

Mi occupo della gestione e dello sviluppo di soluzioni Digitali dalla fine del '95. Ho lavorato per diverse aziende di primaria importanza nel panorama Web Italiano. Mi piace sfruttare il mio blog come palestra per continuare a studiare gli argomenti che tratto quotidianamente.

Chi Sono