Il successo o il fallimento di qualsiasi iniziativa di sviluppo software, interna o affidata all’esterno, dipende in larga misura dalla pianificazione del progetto software. Un piano ben strutturato aiuta i team a definire obiettivi chiari, gestire le risorse in modo efficiente, ridurre i rischi e fornire valore nei tempi previsti. Senza solide basi di pianificazione, anche i progetti tecnicamente validi possono subire ritardi, sforamenti di budget o risultati non allineati.
In HDWEBSOFT abbiamo trascorso oltre un decennio a perfezionare il nostro approccio alla pianificazione dei progetti software, imparando che nessun metodo è adatto a ogni situazione. La strategia di pianificazione giusta dipende dal modello di sviluppo software scelto, poiché ciascun modello presenta flussi di lavoro, priorità e sfide specifici.
Pianificazione dei progetti software con i modelli Agile
Scrum
In HDWEBSOFT utilizziamo il framework Scrum per organizzare la pianificazione dei progetti software in cicli di sviluppo brevi e mirati, noti come sprint. Ogni sprint dura in genere da una a quattro settimane. Durante questo periodo, il team si concentra sulla realizzazione di una funzionalità specifica basata su una user story.
In particolare, queste user story descrivono le funzionalità dal punto di vista dell’utente finale o le azioni che un utente desidera eseguire. Ad esempio: caricare una foto, modificare un video o inserire dati in un database.
Chi partecipa alla pianificazione?
Un piano efficace per un progetto software in Scrum coinvolge un team cross-funzionale. Ne fanno parte un responsabile del progetto, un project manager, analisti di business, un responsabile dei test e i team di sviluppo e QA. Ogni partecipante contribuisce con competenze preziose per definire obiettivi realistici e garantire l’allineamento con le esigenze degli utenti e le priorità aziendali.
Come pianifichiamo ogni sprint
A differenza dei modelli tradizionali, Scrum si concentra su una pianificazione iterativa a breve termine. In questo caso, elaboriamo un piano dettagliato solo per lo sprint successivo, non per l’intero progetto in anticipo. L’ambito di lavoro di ogni sprint viene selezionato dal product backlog. Per chi non lo conoscesse, si tratta di un elenco dinamico di tutte le potenziali funzionalità e idee per la soluzione software.
Come perfezioniamo il backlog prima della pianificazione
Prima dell’inizio della pianificazione dello sprint, il responsabile del progetto conduce il backlog grooming (chiamato anche refinement). Questo processo continuo di pianificazione del progetto software comprende:
- Aggiungere nuove user story per riflettere l’evoluzione delle esigenze degli utenti o dell’azienda
- Rimuovere le user story obsolete o non pertinenti
- Dividere le user story troppo grandi in attività più piccole e gestibili
- Stabilire la priorità degli elementi per gli sprint successivi
All’inizio di ogni sprint, il team di pianificazione si riunisce per definire un obiettivo chiaro dello sprint. Durante questo incontro, finalizza l’ambito di lavoro, stima l’impegno richiesto e definisce le tempistiche di consegna. Quando i requisiti degli utenti sono ampi o astratti, gli analisti di business possono intervenire per chiarirli e suddividerli in attività operative di sviluppo e test.
Extreme Programming (XP)
XP è un modello di sviluppo software che applica le pratiche tradizionali di ingegneria a livelli significativamente più intensi. Sebbene le revisioni del codice siano ampiamente riconosciute come una buona pratica, XP si spinge oltre promuovendo la revisione continua del codice attraverso la programmazione in coppia. Questo è un metodo centrale della metodologia XP.
In XP, la pianificazione dei progetti software è strutturata intorno alle release. Ogni release è suddivisa in brevi iterazioni che durano in genere circa una settimana.
Chi è coinvolto nel processo di pianificazione?
Il processo di pianificazione coinvolge diversi ruoli chiave, tra cui il responsabile del progetto, il project manager e gli analisti di business. Sono inclusi anche i team di sviluppo e test.
Il Planning Game in XP
In Extreme Programming, il piano del progetto software viene chiamato Planning Game. In particolare, è diviso in due fasi principali: pianificazione della release e pianificazione dell’iterazione. Entrambe le fasi comprendono tre momenti chiave: esplorazione, impegno e orientamento.
Il processo di pianificazione
Fase 1: Pianificazione della release
Durante la fase di pianificazione della release, il team definisce i requisiti generali, insieme ai vincoli di tempo e budget.
- Fase di esplorazione: il responsabile del progetto condivide i requisiti di alto livello, che il team di pianificazione trasforma insieme in user story.
- Fase di impegno: ogni user story viene suddivisa in funzionalità rilasciabili, ordinata in base al valore e inserita nel piano della release. Il team concorda inoltre costi e date di consegna.
- Fase di orientamento: il piano concordato viene esaminato e modificato secondo necessità prima dell’approvazione finale.
Fase 2: Pianificazione dell’iterazione
Successivamente, la pianificazione del progetto software per l’iterazione si concentra sulla definizione delle attività specifiche per l’iterazione successiva. A differenza della pianificazione della release, questa fase non coinvolge il responsabile del progetto.
- Fase di esplorazione: il project manager converte le funzionalità pianificate in attività operative per sviluppatori e tester.
- Fase di impegno: il manager stima il tempo necessario per ogni attività e la assegna ai membri del team.
- Fase di orientamento: le attività vengono aggiornate o riassegnate secondo necessità per assicurarsi che nessun membro del team sia sovraccarico.
Kanban
In HDWEBSOFT adottiamo l’approccio Kanban per pianificare i progetti software che non seguono iterazioni definite. Invece di sprint fissi, suddividiamo le attività del progetto in compiti piccoli e gestibili, che in genere possono essere completati nell’arco di pochi giorni lavorativi.
Queste attività vengono quindi assegnate a membri specifici del team e aggiunte a una board Kanban, in cui ogni colonna rappresenta uno stato dell’attività, come «Da fare», «In corso» e «Completato». Man mano che un’attività avanza, il membro del team responsabile la sposta da una colonna all’altra, creando un flusso di lavoro chiaro e visivo.
Partecipanti alla pianificazione Kanban
Kanban non richiede una fase dedicata di pianificazione del progetto software. La comunicazione con il responsabile del progetto avviene invece continuamente durante l’incarico. Nuove richieste e aggiornamenti possono essere aggiunti alla board Kanban in qualsiasi momento, consentendo di avere un piano flessibile per il progetto software che si adatta in tempo reale.
In genere, il team di pianificazione comprende un responsabile del progetto, un project manager, analisti di business e i team leader di ogni disciplina. A seconda dell’ambito del progetto, partecipano anche designer, sviluppatori, specialisti QA e altre figure.
Come vengono pianificate e gestite le attività
Sulla base degli input del responsabile del progetto, il project manager definisce le attività necessarie per raggiungere gli obiettivi di breve termine del progetto. Ad esempio, i designer possono lavorare sulle landing page di un sito eCommerce. Nel frattempo, gli sviluppatori realizzano la funzionalità di aggiunta al carrello e gli specialisti QA testano l’usabilità. In alcuni casi, un analista di business conduce un colloquio iniziale con il responsabile del progetto per trasformare esigenze aziendali generiche in requisiti operativi.
A questo punto, i team leader assumono la responsabilità della pianificazione dettagliata del progetto software. Suddividono le attività di alto livello in unità più piccole, completabili in uno o pochi giorni. Successivamente, le priorità vengono definite come alta, media o bassa. Inoltre, le attività vengono aggiunte alla board Kanban e assegnate ai membri del team per l’esecuzione.
Pianificazione dei progetti software con i modelli lineari
Waterfall
Nella metodologia Waterfall, la pianificazione di un progetto software segue un percorso rigorosamente lineare. Sorprendentemente, nonostante gli svantaggi e la disponibilità di tecnologie più recenti, il 22% dei software legacy utilizza ancora il modello Waterfall come principale approccio di sviluppo software. Il progetto viene suddiviso in fasi distinte e non sovrapposte: analisi dei requisiti, progettazione del sistema, implementazione, test, distribuzione e manutenzione. Ogni fase deve essere completata interamente prima dell’inizio della successiva, poiché il risultato di una diventa l’input per quella seguente.
Questo modello strutturato è quindi più adatto ai progetti con requisiti chiaramente definiti e poche modifiche previste. A meno che non si verifichi un problema rilevante, il processo non torna alle fasi precedenti.
Partecipanti chiave nella pianificazione Waterfall
Un processo di pianificazione di un progetto software Waterfall coinvolge diversi ruoli chiave, ciascuno dei quali contribuisce a costruire le fondamenta del progetto. Tra questi figurano il responsabile del progetto, il project manager, gli analisti di business e un responsabile dei test. La loro collaborazione garantisce che l’intero progetto sia definito e documentato in ogni dettaglio prima dell’inizio dello sviluppo.
Pianificazione iniziale con fasi definite
A differenza degli approcci iterativi, il metodo Waterfall richiede che tutti i requisiti del progetto e le decisioni di pianificazione siano finalizzati prima dell’inizio di qualsiasi attività di sviluppo. HDWEBSOFT comincia elaborando un piano che definisce l’intera sequenza delle attività, i deliverable previsti e le tempistiche di ogni fase. In questo modo, il progetto dispone di una roadmap chiara dall’inizio alla fine, con meno ambiguità e una gestione più efficiente delle risorse.
Processo di pianificazione passo dopo passo
Il processo inizia con la fase di analisi dei requisiti. In questa fase i nostri analisti di business si consultano con il responsabile del progetto per comprendere i risultati desiderati e raccogliere specifiche dettagliate. Utilizzando queste informazioni, il project manager costruisce un flusso di lavoro lineare, documentando tutte le attività e i deliverable principali in un piano strutturato.
Questa pianificazione del progetto software funge da riferimento per l’intero ciclo di sviluppo e favorisce un monitoraggio costante dei progressi e una chiara attribuzione delle responsabilità.
Altri modelli lineari
Sebbene Waterfall sia il metodo lineare più conosciuto, diversi modelli seguono un approccio strutturato simile alla pianificazione dei progetti. Anche questi modelli suddividono il progetto in fasi distinte, con una pianificazione iniziale o organizzata in fasi controllate. L’idea di fondo rimane la stessa: una pianificazione dettagliata guida il processo e le modifiche sono limitate una volta iniziata l’esecuzione. Tuttavia, ogni modello introduce variazioni nel modo in cui la pianificazione viene strutturata, verificata o adattata.
Di seguito sono riportati i modelli più rilevanti che condividono questa base di pianificazione, con differenze lievi ma significative:
Modello V (modello di verifica e validazione)
Il modello V è un’estensione diretta del modello Waterfall, con maggiore enfasi sulle attività di test. Ogni fase di sviluppo è allineata a una corrispondente fase di test.
- La pianificazione del progetto software nel modello V avviene ancora in anticipo, ma include la pianificazione dei test insieme a quella dello sviluppo.
- Ogni fase sul lato sinistro della «V» ha una corrispondente fase di validazione sul lato destro.
- Questo modello garantisce una forte attenzione a qualità e verifica fin dall’inizio.
Modello incrementale e iterativo
Questi modelli suddividono il progetto in parti più piccole e gestibili, che vengono pianificate e consegnate per fasi.
- Il piano del progetto software viene diviso in cicli, in cui ogni incremento viene pianificato separatamente ma contribuisce al sistema complessivo.
- L’aspetto iterativo consente ai team di perfezionare e migliorare il prodotto nel tempo, sulla base del feedback ricevuto dalle iterazioni precedenti.
- Sebbene siano più flessibili di Waterfall, questi modelli si basano comunque su una roadmap chiara e su deliverable definiti per ogni iterazione.
Modello a spirale
Il modello a spirale combina la pianificazione strutturata con la gestione dei rischi ed è ideale per progetti grandi e ad alto rischio.
- Ogni ciclo della spirale comprende pianificazione, analisi dei rischi, sviluppo e valutazione.
- La pianificazione avviene all’inizio di ogni ciclo; di conseguenza, la pianificazione dei progetti software è ripetuta e in evoluzione.
- L’enfasi sull’identificazione e sulla gestione precoce dei rischi distingue questo modello. Tuttavia, il processo complessivo rimane basato su fasi e controllato.
Rational Unified Process (RUP)
RUP è un modello basato su framework che combina elementi dello sviluppo lineare e iterativo.
- Suddivide il progetto in quattro fasi: Inception, Elaboration, Construction e Transition.
- La pianificazione viene adattata a ogni fase; il piano del progetto software più dettagliato viene elaborato durante la fase di elaborazione.
- RUP introduce iterazioni all’interno di ogni fase, consentendo di perfezionare il lavoro pur mantenendo un approccio strutturato generale.
Dove la pianificazione può fallire
Secondo la nostra esperienza, pianificare un progetto software va oltre il semplice rispetto di passaggi predefiniti. Richiede anche di anticipare le possibili insidie. Poiché ogni modello di sviluppo ha una struttura di pianificazione specifica, anche le sfide da affrontare varieranno di conseguenza.
Insidie comuni dell’Agile
I metodi Agile enfatizzano la pianificazione dei progetti software a breve termine, che può rallentare involontariamente l’avanzamento complessivo del progetto. Sebbene le singole iterazioni possano avere successo, una pianificazione insufficiente può ritardare il raggiungimento degli obiettivi più ampi. Per evitarlo, noi di HDWEBSOFT definiamo traguardi intermedi, come obiettivi mensili, e li riesaminiamo regolarmente.
In particolare, durante un progetto software per un’agenzia di viaggi, organizzavamo riunioni Scrum quotidiane per monitorare i progressi ed eliminare gli impedimenti. Il nostro team teneva inoltre il cliente aggiornato tramite chiamate settimanali sullo stato del progetto.
Un altro problema comune nella pianificazione Agile è la difficoltà di stimare la capacità del team, soprattutto per i team di nuova formazione. Senza una conoscenza accurata della velocità dei team di sviluppo e QA, gli sprint possono durare più del previsto. Per contrastare questo rischio, monitoriamo la velocità del team fin dal primo sprint e utilizziamo questi dati per perfezionare la pianificazione delle iterazioni future, riducendo al minimo il rischio di slittamenti nelle tempistiche.
Ostacoli dei modelli lineari da tenere d’occhio
Nei modelli lineari, qualsiasi modifica alla pianificazione del progetto software spesso richiede di rivalutare l’intero ambito di lavoro e rivedere i traguardi. Questo può allungare significativamente le tempistiche e aumentare i costi. Per ridurre al minimo questo rischio, lavoriamo a stretto contatto con il responsabile del progetto fin dall’inizio per individuare tutte le esigenze aziendali. I nostri analisti di business traducono quindi con attenzione queste esigenze in requisiti chiari e operativi che guidano il piano del progetto software dall’inizio alla fine.
Un’altra insidia comune nei modelli come Waterfall è la sottostima del tempo necessario per il debugging. Anche quando nel piano sono inclusi test approfonditi, una bassa qualità del codice può causare ritardi. Per questo integriamo controlli della qualità del codice durante tutto il ciclo di vita del progetto, aiutandoci a rispettare le scadenze e a mantenere standard elevati.
Qual è il modello di pianificazione dei progetti software più adatto?
Se non sei ancora sicuro dell’approccio più adatto alla tua iniziativa di sviluppo software, HDWEBSOFT è qui per aiutarti. Con oltre 14+ anni di esperienza, possiamo supportarti con servizi di sviluppo software qualificati. Che tu voglia definire una strategia efficace di pianificazione del progetto o affidarcene la gestione completa, siamo pronti ad aiutarti.