Programmazione estrema vs SCRUM | XP vs Scrum
Nel corso degli anni sono state utilizzate diverse metodologie di sviluppo software utilizzate nell'industria del software, come il metodo di sviluppo Waterfall, V-Model, RUP e pochi altri metodi lineari, iterativi e combinati lineare-iterativi. Il modello Agile (o più correttamente, un gruppo di metodologie) è un modello di sviluppo software più recente introdotto dal manifesto Agile per affrontare le carenze riscontrate in quelle metodologie di sviluppo software tradizionali.
I metodi agili si basano sullo sviluppo iterativo e utilizzano il feedback degli utenti come meccanismo di controllo principale. Agile può essere definito un approccio incentrato sulle persone rispetto ai metodi tradizionali. Il modello Agile fornisce una versione funzionante del prodotto molto presto, scomponendo il sistema in parti secondarie molto piccole e gestibili, in modo che il cliente possa realizzare presto alcuni dei vantaggi. Il tempo del ciclo di test di Agile è relativamente breve rispetto ai metodi tradizionali, perché il test viene eseguito parallelamente allo sviluppo. Per tutti questi vantaggi, al momento i metodi Agile sono preferiti rispetto alle metodologie tradizionali. La programmazione Scrum ed Extreme sono due delle varianti più popolari dei metodi Agile.
Cos'è SCRUM?
Come accennato in precedenza, SCRUM è un processo di gestione del progetto incrementale e iterativo, che appartiene alla famiglia dei metodi Agile. SCRUM si basa sul dare alta priorità alla partecipazione del cliente all'inizio del ciclo di sviluppo. Raccomanda di incorporare i test da parte del cliente il più presto e spesso possibile. Il test viene eseguito in ogni momento quando diventa disponibile una versione stabile. La base di SCRUM si basa sull'avvio dei test dall'inizio del progetto e sul proseguimento fino alla fine del progetto.
Il valore chiave di SCRUM è "la qualità è responsabilità del team", che sottolinea che la qualità del software è responsabilità dell'intero team (non solo del team di test). Un altro aspetto importante di SCRUM è suddividere il software in parti gestibili più piccole e consegnarle al cliente molto rapidamente. Fornire un prodotto funzionante è della massima importanza. Quindi il team continua a migliorare il software e a fornire continuamente in ogni fase principale. Ciò si ottiene attraverso cicli di rilascio molto brevi (chiamati sprint) e ottenendo feedback per il miglioramento alla fine di ogni ciclo.
SCRUM definisce diversi ruoli chiave per il buon funzionamento di un team di sviluppo. Sono il Product Owner (che rappresenta il cliente e mantiene il product backlog), lo Scrum master (che funge da organizzatore e coordinatore del team conducendo gli Scrum Meeting, mantenendo lo sprint backlog e bruciando i grafici) e altri membri del team. Un team può essere costituito da ruoli tradizionali, ma per lo più sono team autogestiti. I principali artefatti di Scrum sono Product backlog/release backlog (lista dei desideri), Sprint backlog/defect backlog (attività in ogni iterazione), Burn down chart (lavoro rimanente rispetto alla data). Le principali cerimonie SCRUM sono la riunione del Product Backlog, la riunione Sprint e la riunione Retrospect.
Cos'è la programmazione estrema?
Extreme Programming (abbreviato in XP) è una metodologia di sviluppo software che appartiene al modello Agile. La programmazione estrema esegue fasi in piccolissimi passi continui (rispetto ai metodi tradizionali). Il primo passaggio, che richiede solo un giorno o una settimana, è volutamente incompleto. Per fornire obiettivi concreti per lo sviluppo del software, all'inizio vengono scritti test automatizzati. Quindi gli sviluppatori eseguono la codifica. L'obiettivo è fare la programmazione in coppia. Una volta superate tutte le prove, la codifica si considera completata. La fase successiva è la progettazione e l'architettura, che si occupa del refactoring del codice da parte dello stesso gruppo di programmatori. Al termine di questa fase, il prodotto incompleto (ma funzionale) viene presentato agli stakeholder. Subito dopo, inizia la fase successiva (che si concentra sulla serie successiva di funzionalità più importanti).
Qual è la differenza tra Extreme Programming e SCRUM?
Extreme Programming e SCRUM sono comprensibilmente metodologie molto simili e allineate. Tuttavia, ci sono differenze sottili ma importanti tra questi due metodi. Gli sprint SCRUM durano 2-4 settimane, mentre le tipiche iterazioni XP sono più brevi (ultime 1-2 settimane). Di solito, i team SCRUM non consentono modifiche agli sprint, ma i team XP sono leggermente più flessibili alle modifiche all'interno delle iterazioni. Ad esempio, dopo la pianificazione dello sprint, l'insieme di elementi di quello sprint rimane invariato, ma una funzionalità su cui non ha iniziato a funzionare può essere sostituita in qualsiasi momento con un' altra funzionalità in XP. Un' altra differenza tra XP e SCRUM è che l'ordine delle funzionalità sviluppate in XP è strettamente prioritario dal cliente, mentre il team SCRUM decide l'ordine degli articoli (dopo che il product backlog è stato assegnato alla priorità dal Product Owner di SCRUM).
A differenza di XP, SCRUM non prevede pratiche ingegneristiche. Ad esempio, XP è guidato da pratiche come lo sviluppo guidato dai test (TDD), la programmazione di coppie, il refactoring, ecc. Tuttavia, alcuni ritengono che imporre una serie di pratiche sui team che si auto-organizzano potrebbe avere un impatto negativo e questo può essere considerato un difetto di XP. Un' altra lacuna della programmazione Extreme è che i team inesperti possono tendere al refactoring senza test automatizzati o TDD (o semplicemente hacking). Pertanto, alcuni suggeriscono che SCRUM sia migliore per guardare fuori (poiché apporta grandi miglioramenti semplicemente attraverso iterazioni timebox mirate) e XP è adatto a team leggermente maturi che hanno scoperto il valore delle pratiche sopra menzionate (piuttosto che usarle perché è stato loro chiesto per farlo).