Agile vs Waterfall - quale metodologia di gestione del progetto scegliere?
Qual è la migliore metodologia da utilizzare per lo sviluppo del software? La decisione non è sempre un compito facile. Il progetto aggiunge valore per il cliente, il business o né?
Mantenendo questi fattori in mente, abbiamo deciso di effettuare un confronto frontale di due delle metodologie di sviluppo software più utilizzate (Agile VS cascata) e valutare dove ognuno può essere il meglio impiegato.
Cosa è agile?
Agile è un approccio magro e moderno allo sviluppo del software, creato essenzialmente come risposta di soluzione agli svantaggi delle metodologie precedenti. Dato il nome, Agile enfatizza la consegna anticipata del prodotto e supporta modifiche adattative e flessibili che possono essere effettuate in qualsiasi punto del ciclo di vita del progetto.
Le metodologie agili contengono una vasta gamma di forme diverse: Scrum, Programmazione Extreme (XP), Sviluppo guidato da funzionalità (FDD) e Crystal.
9. Global Project Management Survey 2017, ha rivelato che circa il 71% delle organizzazioni utilizza approcci agili.
Principali meccanismi di agilità
Il flusso di lavoro agile opera sui seguenti principi:
Approccio iterativo -Lo sviluppo è frammentato in brevi cornici di tempo noto come iterazioni, che durano 2-4 settimane. Ogni iterazione coinvolge prestazioni del team intercrocio che si concentra sulla consegna del prodotto finito entro la fine del timebox indicato.
Cambio gestione -Ogni fase di sviluppo subisce la revisione e l'analisi dei progressi per garantire che la soddisfazione del cliente si allinea con la portata del progetto. Le modifiche sono incoraggiate a essere effettuate e adottate quando richiesto per scopi di ottimizzazione e miglioramento.
Prioritazione -La squadra lavora in completa armonia in tutti i domini di una fase di sviluppo: pianificazione, progettazione, codifica, test e valutazione. Ogni unità di squadra comunica con l'altra unità per condividere la loro relazione sui progressi e lavorare in collaborazione per mitigare scappatoie esistenti o imminenti blocchi di blocco.
Dai un'occhiata ad altri articoli agili sulUDN Task Manager.Blog:
Ciclo di vita di sviluppo agile
Il ciclo di vita di sviluppo Agile è una rottura che funziona tutti in sei passaggi:
Piano:Una volta completata l'immagine più ampia per la portata del progetto, il contorno è suddiviso in obiettivi più piccoli e facilmente realizzabili. Ognuno di questi obiettivi viene quindi assegnato alle iterazioni che hanno obiettivi e caratteristiche esclusivi a se stessi.
Analisi:Nella fase di analisi, il team si riunisce per delineare le principali esigenze del progetto. Le riunioni tra parti interessate e manager sono condotte per realizzare lo scopo e i dati demografici dell'utilizzo del prodotto.
Design:La squadra inizia a lavorare sulla progettazione del software e sulla progettazione del sistema utilizzando i requisiti stabiliti nella fase di analisi.
Codifica:Questa è la fase di implementazione in cui lo sviluppo inizia con la prima iterazione. Le caratteristiche e gli aspetti dello sviluppo vengono creati e quindi testati per funzionalità impeccabili.
Test:Una volta completata la codifica e lo sviluppo, viene quindi testata per i requisiti aziendali e i possibili bug. Questa fase è caratterizzata da tutti i tipi di test che possono migliorare le efficienze della produzione come il test dell'unità, i test dei sistemi, i test di integrazione e i test di accettazione.
Distribuzione:Questa è l'ultima fase di un ciclo iterativo in cui viene schierato il prodotto finito ai clienti. Si ottiene il feedback del cliente e eventuali modifiche probabili o miglioramenti necessari per essere effettuati sono quindi incorporati nel prossimo ciclo iterativo.
Framework Agile popolari e metodologie
Agile è un ampio ombrello che comprende molteplici quadri e metodologie per implementarlo nel modo più semplice possibile. Uno dei più popolari sono:
1. Scrum.
Indubbiamente uno dei framework agile più popolari ampiamente adottato dai team è Scrum. Il framework è destinato a gestire progetti attraverso mezzi iterrativi e incrementali. Scrum si basa sulla continua collaborazione sistematica tra i membri del team tra il ciclo del progetto.
Ci sono tre ruoli principali nella Scrum, Master Scrum, proprietario del prodotto e il team di sviluppo.
Passiamo attraverso questi elementi per capire meglio il loro ruolo:
Il Master Scrum, noto anche come "facilitatore" aiuta il team di comprendere la portata del progetto e funge da figura centrale all'interno di un progetto. I suoi primi compiti includono la cancellazione di eventuali ambiguità che i membri del team potrebbero avere per quanto riguarda l'ambito del progetto e rimuovere eventuali ostacoli che stanno fermando il team da lavorare in modo efficiente.
Un proprietario del prodotto è in genere un interesse chiave di un progetto. Comunica la visione del prodotto con il team di sviluppo e fornisce un feedback tempestivo sul lavoro svolto. Inoltre, è anche responsabile della priorità alle attività che avrebbero fatto il backlog.
Il team di sviluppo è la squadra che sta lavorando su tutti i lavori di sviluppo del prodotto. Conosciuto anche come "team di scrum", è un gruppo cross-funzionale che è responsabile dello sviluppo del prodotto o del servizio effettivo.
A parte questo, il ciclo di lavoro è diviso in "Sprint", che di solito dura da 2 a 4 settimane. Durante gli sprint, gli elementi giornalieri hanno luogo per riferire sui progressi del progetto e le modifiche richieste.
2. Kanban.
Un'altra delle più popolari metodologie agile adottata da team è Kanban. Questa metodologia agile si concentra sulla dividere il lavoro in piccole parti e visualizzando il flusso di lavoro attraverso le carte in un modo che rende facile l'identificazione di colli di bottiglia.
Tipicamente, il.Kanban System.lavora attraverso il principio di categorizzazione del lavoro nelle rispettive categorie di "da fare", "in corso", e 'fatto'. Puoi facilmente spostare le carte per rappresentare i progressi. Imposta inoltre i limiti di lavoro in corso (WIP) per limitare il numero di elementi che possono essere aggiunti a una particolare colonna per aiutare a mantenere la messa a fuoco solo sulle attività correnti.
Kanban è un sistema leggero e flessibile che funziona meglio per progetti in cui i requisiti spesso cambiano, poiché le carte flottanti consentono di effettuare rapidi cambiamenti nel flusso di lavoro e dare alla squadra una testa per quello che viene prossimo.
19 migliori strumenti Kanban da utilizzare nel 2022
Dai un'occhiata ad altri articoli agili sulUDN Task ManagerBlog:
3. Lean.
La metodologia snella di Agile si concentra sull'eliminazione degli sprechi e dell'edificio flussi di lavoro efficiente attraverso continui miglioramenti nel ciclo di vita del progetto. Questa metodologia funziona interamente sul principio di aggiungere solo ciò che crea valore e rimuovendo il resto.
I "rifiuti" qui si riferiscono a qualsiasi attività, riunioni, processi di lavoro o documentazione che potrebbero farti rallentare. Eliminali, quindi puoi ottenere più in meno tempo. La metodologia Lean raccomanda di eliminare tre nemici di Lean - Muda (rifiuti), Mura (irregolarità) e Muri (sovraccarico).
In poche parole, la snella cambia il modo in cui i team operano e mantengono la loro concentrazione focalizzata laser per ottimizzare il più possibile i processi di lavoro.
4. XP (programmazione estrema)
Programmazione estremaLa metodologia di Agile Project Management è diretta a migliorare la qualità del software sviluppata e la reattività nei confronti delle esigenze dei clienti in evoluzione. La metodologia funziona per aumentare la produttività degli sviluppatori e impostare le regole di messa a terra quando si tratta di codifica e test.
Alcune delle regole quando si tratta di XP includono storie utente, programmazione delle coppie, sviluppo guidato dal test e altro ancora. La programmazione estrema è anche incline verso il rilascio di software in brevi cicli di sviluppo, quindi può adattarsi in base alle esigenze dei clienti in arrivo nel tempo.
Le pratiche generali di programmazione estrema concentrano su una continua revisione e test in tutto il progetto per correggere eventuali bug e problemi il più attivamente possibile. E quando è seguito correttamente, queste pratiche causano un software di qualità superiore.
5. Crystal.
Il cristallo è una delle metodologie agili più flessibili là fuori. Il punto focale di questa metodologia è individuale e le loro interazioni, piuttosto che i processi. Crystal si concentra principalmente su 6 aspetti quando si tratta di sviluppo del software - persone, interazioni tra loro, comunità, comunicazione, abilità e talento.
La metodologia è in realtà una famiglia di altre metodologie come cristalline, giallo cristallino, cristallo arancione e altri.
Il Genius Behind Crystal, Alistair Cockburn, ha sviluppato linee guida per la collaborazione del team e il lavoro di squadra, invece delle strategie di sviluppo passo-passo per un progetto. La metodologia supporta la responsabilità e la trasparenza del team e fornisce un approccio adattivo per consentire al team rispondere efficacemente ai modifiche dei requisiti.
6. Sviluppo guidato con funzionalità (FDD)
Come suggerisce il nome, le caratteristiche sono al centro di questa metodologia agile. Le funzionalità di FDD non si riferiscono necessariamente alle funzioni del prodotto, piuttosto storie utente in Scrum. Lo sviluppo guidato da caratteristiche è composto da 5 attività di base - sviluppo di un modello complessivo, la costruzione di un elenco di funzionalità, progettando per caratteristica, progettando per caratteristica e edificio per caratteristica.
L'elenco delle caratteristiche viene solitamente generato dall'unicità di ciascun modello di progetto e lo scopo principale di FDD è quello di offrire un prodotto software centrico client.
FDD incoraggia anche la segnalazione dello status a tutti i livelli per tenere d'occhio i progressi del progetto e i risultati che vengono nel tempo. Ciò elimina anche la confusione e la rielaborazione eccessiva tra il team di sviluppo.
7. Metodo di sviluppo dei sistemi dinamici (DSDM)
DSDM è un quadro agile che fornisce una base completa per pianificare ed eseguire progetti di sviluppo del software. Risalente al 1994, il metodo di sviluppo dei sistemi dinamici è stato ideato per creare un quadro standard del settore per la consegna di software di qualità.
I 8 principi di base su cui opera DSDM sono:
Come quadro flessibile agile, il DSDM può essere facilmente utilizzato per IT e progetti non IT.
Dai un'occhiata ad altri articoli agili sulUDN Task Manager.Blog:
Qual è il modello della cascata?
Risalente fino al 1970,Cascata, è un metodo tradizionale di sviluppo del software che funziona in un formato sequenziale di sviluppo. Comprende una progressione passo-passo del processo, in cui ogni fase procede in modo lineare, rendendo facile da gestire e capire.
Secondo un rapporto pubblicato da Gartner nel 2015, Il 56% dei metodi di gestione dei progetti comprendevano la metodologia della cascata.
Meccanica principale su quale modello della cascata opera
Il modello della cascata opera sui seguenti principi:
Obiettivi distinti:L'ambito a lungo termine del progetto è determinato prima dell'inizio dello sviluppo. I project manager, gli stakeholder e i clienti hanno bisogno di avere una visione chiara di ciò che il prodotto finale si modellerà per essere.
Time-box:Ogni fase è designata una quantità fissa di tempo. Una volta completata la fase, è fatto congelare in modo che non vi sia un percorso di ritorno per il passaggio precedente.
Modalità di lavoro indipendenti:Ogni squadra per un dominio specifico, funziona sugli obiettivi individuali con poca o nessuna collaborazione con i team che lavorano in altre unità.
Aspetti chiave della metodologia della cascata
Il Flusso di lavoro della cascatapuò essere visualizzato nei seguenti passaggi:
Requisiti:Proprio come Agile, questa è la prima fase che si blocca tutti i requisiti tecnici e non tecnici del progetto in un documento specifico dei requisiti. Questi requisiti sono strettamente permanenti che definiscono il ruolo e le prospettive del prodotto finale.
Analisi:Il team conduce un'analisi dei sistemi e delle tecniche utilizzate per condurre lo sviluppo del prodotto.
Design:Le specifiche di progettazione come servizi, linguaggi di programmazione e strati di dati sono determinati e finalizzati.
Codifica:In riferimento ai requisiti, all'analisi e agli obiettivi creati nelle fasi precedenti, il team di sviluppo scrive il codice sorgente nella quarta tappa.
Test:In questa fase, tutti i tipi di tester, inizia a testare la versione finita del prodotto per qualsiasi numero di errori e bug.
Operazioni:La fase operativa è responsabile della distribuzione della versione completa e testata del prodotto nel mercato.
Agile vs Cascata Pro & AMP; CONS.
Dal momento che Agile è una metodologia di sviluppo del software contemporaneo, fornisce una miriade di benefici e vantaggi alle squadre IT che scelgono di lavorare usando la loro metodologia primaria.
In un Sondaggio online HP di 601 Sviluppo e professionisti IT Il 54% degli intervistati ha dichiarato che dopo aver adottato metodologie agile, hanno sperimentato una collaborazione avanzata tra le squadre che non esistevano altrimenti. Considerando che il 43% ha detto che il tempo impiegato sul mercato è stato massicciamente ridotto.
Tuttavia, non tutti i tipi di progetto e gli scenari addio con le caratteristiche liberali di Agile.
Diamo un'occhiata a entrambi i vantaggi che gli svantaggi di Agile.
Questo è il vantaggio più importante di Agile. Dato che lo sviluppo viene fatto nelle iterazioni, il team ha accesso flessibile per tornare alla fase precedente per effettuare qualsiasi tipo e dimensione delle modifiche.
Poiché un progetto agile funziona in brevi cicli di iterazioni, può essere difficile assegnare una data di scadenza definita alla timeline del progetto.
Il lavoro eseguito in pezzi più piccoli consente ai membri del team di finire in tempo. Inoltre, poiché la codifica e il test sono condotti in modo sincrono con il piano e la fase di progettazione dello sviluppo, tutte le modifiche e i miglioramenti sono fatti in modo conteggiato con il flusso di lavoro in movimento.
Ciò aumenta anche la probabilità di lancio dei primi prodotti.
Le correzioni e i miglioramenti effettuati ad ogni ciclo aggiungono un ulteriore carico di lavoro su parte del team di sviluppo. È probabile che questo risulta in un momento aggiuntivo se la dedizione e la competenza non sono esposte dai membri del team di sviluppo.
Il feedback del cliente alla fine di ciascun ciclo iterativo consente una partecipazione uguale al cliente-partecipazione al risultato e alla progettazione del prodotto.
Poiché i team Agile sono costruiti per una comunicazione a maglia da vicino, tutti i membri del team devono essere in prossimità di prossimità in ogni momento durante il lavoro per trasportare in modo efficace il livello di comunicazione.
Agile incoraggia i team a lavorare insieme fissando un allineamento con i loro obiettivi e obiettivi. La comunicazione trasparente e frequente tra diverse unità di squadra consente un maggiore grado di produttività e cancella le possibilità di un conflitto.
Poiché Agile non applica il progetto di avere un profilo rigoroso all'inizio, il risultato finale del prodotto può modellare completamente inaspettato e grossolanamente diverso da ciò che è stato il requisito iniziale delle imprese.
Agile facilita una stanza costante per il miglioramento. Alla fine di ciascuna iterazione, il prodotto finito viene testato per scappatoie e realizzato per migliorare dopo che ogni ciclo di test è stato completato.
I miglioramenti sono anche una parte continua dello sviluppo in quanto il feedback dei clienti viene recuperato in tutto il ciclo di vita del progetto.
Poiché i progressi stanno accadendo attraverso i cicli in Agile, diventa difficile misurare le prestazioni. Non è possibile impostare un sacco di KPI definiti all'inizio del progetto, quindi non sai cosa cercare durante il ciclo di vita del progetto.
Agile supporta idee e decisioni in evoluzione per adattarsi alla finestra di ambito e sviluppo del progetto. Questo è particolarmente vantaggioso per app e strumenti software che non hanno un obiettivo finale definito e sono sottoposti a modifiche basate sull'esperienza del cliente.
Poiché non esiste un obiettivo fisso alla fine del progetto, diventa una sfida per prevedere accuratamente le risorse richieste all'inizio del progetto.
L'incapacità di decidere il costo, il tempo e le risorse comportano una povera pianificazione delle risorse e potrebbe rivelarsi un problema più grande una volta che il progetto avanza.
Sebbene sia da quando Agile entrò sotto la ribalta, la metodologia della cascata è diventata in gran parte hackney ma l'approccio lineare allo sviluppo del software ha ancora una serie di benefici esclusivi per sé.
Ecco una serie di vantaggi e svantaggi della metodologia della cascata: