Extreme Programming vs SCRUM | XP vs SCRUM
Nel corso degli anni sono state utilizzate diverse metodologie di sviluppo del software nell'industria del software, come il metodo di sviluppo Waterfall, V-Model, RUP e pochi altri metodi lineari, iterativi e combinati linear-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 tradizionali metodologie di sviluppo del software.
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 offre una versione funzionante del prodotto molto presto, suddividendo il sistema in parti secondarie molto piccole e gestibili, in modo che il cliente possa realizzare alcuni dei benefici in anticipo. Il tempo di ciclo di prova di Agile è relativamente breve rispetto ai metodi tradizionali, poiché i test vengono eseguiti parallelamente allo sviluppo. A causa di tutti questi vantaggi, i metodi Agile sono preferiti rispetto alle metodologie tradizionali al momento. La programmazione Scrum e Extreme sono due delle varianti più popolari dei metodi Agile.
Cos'è SCRUM?
Come accennato in precedenza, SCRUM è un processo di gestione dei progetti 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 integrare i test del cliente in anticipo e spesso il più possibile. Il test viene eseguito in ciascun punto in cui diventa disponibile una versione stabile. La base di SCRUM è basata sull'avvio dei test dall'inizio del progetto e continua fino alla fine del progetto.
Il valore chiave di SCRUM è "la qualità è la 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 è la suddivisione del software in parti gestibili più piccole e la consegna al cliente molto rapidamente. La consegna di un prodotto funzionante è della massima importanza. Quindi il team continua a migliorare il software e fornire continuamente in ogni fase importante. 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 proprietario del prodotto (che rappresenta il cliente e gestisce il backlog del prodotto), Scrum master (che funge da organizzatore e coordinatore del team conducendo riunioni di scrum, mantenendo lo sprint backlog e masterizza grafici) e altri membri del team. Una squadra può consistere in ruoli tradizionali, ma principalmente si tratta di team autogestiti. Gli artefatti principali di Scrum sono il backlog di prodotto / backlog di rilascio (elenco di desideri), i backlog di Sprint / backlog di errori (attività in ogni iterazione), i grafici di masterizzazione (lavoro rimanente rispetto alla data). Le principali cerimonie SCRUM sono la riunione Product backlog, Sprint meeting e Retrospect meeting.
Cos'è la programmazione estrema?
Extreme Programming (XP abbreviato) è una metodologia di sviluppo software che appartiene al modello Agile. La programmazione estrema esegue fasi in passi continui molto piccoli (rispetto ai metodi tradizionali). Il primo passaggio, che richiede solo un giorno o una settimana, è intenzionalmente incompleto. Per fornire obiettivi concreti per lo sviluppo del software, i test automatici vengono scritti all'inizio. Quindi gli sviluppatori eseguono la codifica. L'attenzione si concentra sulla programmazione in coppia. Una volta superati tutti i test, la codifica è considerata completa. La fase successiva è la progettazione e l'architettura, che riguarda il refactoring del codice dallo stesso set di programmatori. Alla fine di questa fase, il prodotto incompleto (ma funzionale) viene presentato agli stakeholder. Subito dopo, inizia la fase successiva (che si concentra sulla prossima serie 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 per 2-4 settimane, mentre le iterazioni tipiche di XP sono più brevi (ultime 1-2 settimane). Di solito, i team SCRUM non consentono di apportare modifiche agli sprint, ma i team di XP sono poco più flessibili per le modifiche all'interno delle iterazioni. Ad esempio, dopo la pianificazione sprint, l'insieme di elementi di quello sprint rimane invariato, ma una funzionalità che non ha iniziato a lavorare può essere scambiata in qualsiasi momento con qualche altra funzionalità in XP. Un'altra differenza tra XP e SCRUM è che l'ordine delle funzionalità sviluppate in XP è strettamente definito dal cliente, mentre il team SCRUM decide l'ordine degli articoli (dopo che il backlog del prodotto ha la priorità del proprietario del prodotto SCRUM).
A differenza di XP, SCRUM non stabilisce alcuna pratica ingegneristica. Ad esempio, XP è guidato da pratiche come lo sviluppo basato sui test (TDD), la programmazione delle coppie, il refactoring, ecc. Tuttavia, alcuni ritengono che imporre una serie di pratiche ai team auto-organizzanti potrebbe avere un impatto negativo, e questo può essere considerato una mancanza di XP. Un altro inconveniente della programmazione Extreme è che i team inesperti possono tendere al refactoring senza alcun test automatico o TDD (o semplicemente hacking). Pertanto, alcuni suggeriscono che SCRUM è migliore per lo staring off (dato che porta grandi miglioramenti semplicemente attraverso iterazioni focalizzate timeboxed) e XP è adatto per i team leggermente maturi che hanno scoperto il valore delle pratiche sopra menzionate (piuttosto che usarle perché sono state poste fare così).