Sempre più spesso nel mondo del lavoro si sente parlare di Agile. Ma cosa è davvero questo Agile? E rispetto al Project Management tradizionale come si differenzia?
Con questo articolo cercherò di rispondere a queste domande e a mettere in chiaro cosa si intende con questi termini.
Di seguito un breve video per introdurvi nell’argomento:
Metodologia Waterfall
L’approccio waterfall allo sviluppo del software è altamente sequenziale e può essere diviso in fasi distinte.
Esistono una serie di fasi che devono essere completate una dopo l’altra. Ad esempio la fase due non può iniziare fino al completamento della fase uno.
Le fasi nella metologia tradizionale sono:
Concezione: la fase dell’idea, quando gli sviluppatori decidono cosa vogliono progettare e perché. Questa fase dipende dal tipo di progetto e società. Se lavoriamo in una società di consulenza allora questa fase la farà direttamente il cliente, mentre se lavoriamo in una start-up ad esempio questa fase sarà svolta dai componenti del team di lavoro.
Raccolta requisiti e analisi funzionale: questa fase prevede la raccolta e la documentazione di ciò che richiederà il progetto di sviluppo software, inclusi i requisiti di sistema e software per il prodotto o progetto.
Progettazione (analisi tecnica): in questa fase, gli sviluppatori determinano come vogliono che il loro pezzo di software funzioni e determinano quali pezzi siano necessari.
Sviluppo: questa fase prevede la scrittura del codice per ogni parte del software, nonché l’integrazione in base all’architettura scelta nella fase di progettazione.
Test: verrà testato software a livello di sistema; può includere test utente, e nel caso di bug è previsto di tornare indietro per risolvere eventuali problemi specifici.
Rilascio: in molti casi, ciò significa consegnare il prodotto “finito” agli stakeholders o portare gli sviluppi in “Produzione”.
Vantaggi della metodologia Waterfall
Piano chiaro e definito: esiste una chiara comprensione della tempistica e dei risultati del progetto prima che questo inizi. L’intero ambito del progetto viene concordato in anticipo dal team di sviluppo e dai loro stakeholders.
Documentazione: ogni fase del processo è documentata in dettaglio per eliminare eventuali malintesi o scorciatoie.
Carico condiviso: non richiede sempre tutto il tempo e l’attenzione di un team di sviluppo. A seconda della fase, i singoli membri del team possono concentrarsi su altri aspetti del loro lavoro.
Contatto iniziale con il cliente: Una volta che la progettazione iniziale e il piano di progetto sono in atto, non è necessaria una presenza continua del cliente fino alla fase di revisione.
Potenziali svantaggi
Nessun approccio allo sviluppo del software funzionerà sempre, per ogni team. Ci sono alcuni inconvenienti nell’approccio a cascata.
Basso coinvolgimento del cliente: un approccio in cui il cliente è coinvolto solo inizialmente non è adatto per ogni tipo di progetto. Alcuni clienti vorranno essere più coinvolti man mano che questo procede. Se non esiste un piano per tale coinvolgimento, l’approccio a cascata potrebbe portare frustrazione da entrambe le parti.
Le modifiche possono essere difficili: il punto centrale della metodologia a cascata è che segue passaggi chiari in un periodo di tempo prestabilito. Una volta che questi elementi sono definiti, può essere difficile apportare modifiche se il team di sviluppo incontra un ostacolo. L’adattabilità è una parte cruciale da considerare nello sviluppo del software, soprattutto perché può essere difficile per i clienti avere una conoscenza completa del progetto prima che questo inizi.
Test dell’ultimo minuto: ancora una volta, uno degli svantaggi della metodologia tradizionale rispetto all’Agile è che i test vengono svolti a ridosso della consegna e che quindi c’è molto meno tempo per poter rimediare in caso di imprevisti, o che questi possano costare molto in termini economici.
Agile Development
La principale differenza tra agile e waterfall potrebbe essere riassunta dicendo che l’approccio a cascata valorizza la pianificazione in anticipo, mentre l’approccio agile valorizza l’adattabilità e il coinvolgimento.
Esistono diversi tipi di sviluppo agile che condividono alcune somiglianze di base. Questi includono:
Extreme Programming (XP)
Scrum
Kanban
Lean Software Development
Agile Unified Process
La metodologia agile ha due elementi fondamentali: lavoro di squadra e tempo. Invece di creare una sequenza temporale per un grande progetto di sviluppo software, l’Agile suddivide il progetto in singole parti consegnabili. Queste fasi “time-boxed” sono chiamate “sprint” e durano in media 1-4 settimane. Una volta completato ogni sprint, il feedback della fase precedente viene utilizzato per pianificare quello successivo.
Principi fondamentali dello sviluppo agile
Ci sono diversi principi fondamentali che qualsiasi progetto di sviluppo agile seguirà:
Adattabilità: lo sviluppo agile evidenzia l’importanza di poter modificare il design, l’architettura, i requisiti e i risultati finali in corso d’opera.
Coinvolgimento del cliente: a causa dei continui cambiamenti nella progettazione e nelle unità consegnabili, lo sviluppo agile del software richiede una stretta collaborazione tra lo stakeholder e il team di sviluppo.
Sviluppo snello: si deve puntare a rendere il prodotto finale il più semplice possibile. Se lo stesso risultato finale può essere ottenuto con due passaggi anziché cinque, lo sviluppo agile mirerà a progettare il software di conseguenza.
Lavoro di squadra: come abbiamo detto sopra, l’Agile valorizza il lavoro di squadra quasi sopra ogni altra cosa. I team devono valutare continuamente come possono diventare più efficaci e adattare il progetto man mano che procedono. Extreme Programming (all’altezza del suo nome), ad esempio, insiste sul fatto che gli sviluppatori lavorino in coppia sul principio che due teste sono meglio di una.
Tempo: la durata dello sviluppo viene divisa in slot temporali molto ridotto chiamati “sprint”.
Sostenibilità: invece di spingere per scadenze più veloci in cambio di un progetto incompiuto, lo sviluppo agile attribuisce valore alla definizione di un ritmo sostenibile per lo sviluppo del software.
Test: a differenza degli approcci a cascata in cui è prevista una fase di test distinta, gli approcci agili insistono sul test in ogni fase del progetto (in ogni sprint).
Vantaggi per lo sviluppo Agile
I vantaggi dello sviluppo agile hanno tutto a che fare con la soddisfazione del cliente e il risultato finale del progetto e sono:
Coinvolgimento degli stakeholder: l’adozione di un approccio agile consente - e incoraggia effettivamente - un impegno continuo tra il team di sviluppo e il cliente.
Risultati flessibili: Agile consente alle parti interessate di prioritizzare i risultati finali in ordine di importanza. In altre parole, se un cliente desidera rilasciare il software di base prima della suite completa, questo è esattamente ciò che consente l’agile.
Adattabilità: abbiamo menzionato l’adattabilità sopra come un elemento cruciale dello sviluppo agile, ed è anche uno dei suoi principali vantaggi. Man mano che i clienti ottengono un’idea migliore di ciò di cui hanno bisogno dal software, lo sviluppo può adattare di conseguenza gli sprint pianificati.
Un prodotto di qualità superiore e facile da usare: poiché i clienti possono fornire feedback dopo ogni sprint, i prodotti sviluppati utilizzando la metodologia agile spesso finiscono per essere molto facili da usare e più robusti.
Potenziali svantaggi
L’agile può avere svantaggi per determinate situazioni o team e possono essere:
Impegno intenso: a differenza della modalità tradizionale, lo sviluppo agile funziona bene solo quando l’intero team di sviluppo è impegnato nel progetto per tutta la sua durata. Questa potrebbe essere una sfida per alcune società di sviluppo che hanno molto da fare contemporaneamente e potrebbe persino rivelarsi impegnativa per i singoli sviluppatori.
Potenziale per un costo più elevato e una scadenza più lunga: mentre gli sprint time-boxed consentono la pianificazione, è sempre possibile che alcuni deliverable non vengano completati in tempo. La creazione degli sprint aggiuntivi necessari può significare un costo del progetto più elevato..
Comunicazione: poiché l’agile richiede un alto livello di collaborazione, i progetti di sviluppo che utilizzano questa metodologia richiederanno anche un alto livello di comunicazione.
Quindi riassumendo quando va usato l’Agile e quando il metodo Waterfall?
Il project management classico funziona benissimo quando i requisiti sono chiari e quello che si sta cercando di sviluppare è in qualche modo simile a qualcosa che è stato sviluppato in passato.
Nel caso in cui il proprio progetto non abbia requisiti chiari e definiti o il cliente non sia in grado di definire i propri desideri allora la metodologia Agile può fare al caso vostro. Questo sicuramente vi eviterà di arrivare a ridosso della consegna con un prodotto non in linea con le aspettative dello stakeholder.
Utilizziamo i cookie su questo sito Web per offrirti la migliore esperienza sul nostro sito. Per saperne di più, leggi la nostra privacy policy.