Ekstrem programmering vs SCRUM | XP vs SCRUM
Der har været antal forskellige softwareudviklingsmetoder, der er anvendt i softwareindustrien gennem årene, såsom Waterfall-udviklingsmetode, V-Model, RUP og få andre lineære, iterative og kombinerede lineære iterative metoder. Agile model (eller mere korrekt, en gruppe metodologier) er en nyere softwareudviklingsmodel introduceret af Agile-manifestet for at tackle manglerne i de traditionelle softwareudviklingsmetoder.
Agile metoder er baseret på iterativ udvikling og bruger feedback fra brugerne som den vigtigste kontrolmekanisme. Agile kan kaldes en folkecentrisk tilgang end traditionelle metoder. Agile model leverer en fungerende version af produktet meget tidligt ved at nedbryde systemet til meget små og håndterbare underdele, så kunden tidligt kan realisere nogle af fordelene. Testcyklustiden for Agile er relativt kort sammenlignet med traditionelle metoder, fordi testen udføres parallelt med udviklingen. På grund af alle disse fordele foretrækkes agile metoder frem for de traditionelle metoder i øjeblikket. Scrum og Extreme programmering er to af de mest populære variationer af Agile-metoder.
Hvad er SCRUM?
Som nævnt ovenfor er SCRUM en inkrementel og iterativ projektstyringsproces, der hører til familien af agile metoder. SCRUM er baseret på at prioritere kundedeltagelsen højt tidligt i udviklingscyklussen. Det anbefales at inkorporere test af kunden tidligt og ofte som muligt. Testning udføres på hvert punkt, når en stabil version bliver tilgængelig. Grundlaget for SCRUM er baseret på at starte test fra projektets begyndelse og fortsætte til slutningen af projektet.
Nøgleværdien af SCRUM er ”kvalitet er teamets ansvar”, som understreger, at kvaliteten af softwaren er ansvaret for hele teamet (ikke kun testteamet). Et andet vigtigt aspekt af SCRUM er at nedbryde softwaren til mindre håndterbare dele og levere dem til kunden meget hurtigt. Det er yderst vigtigt at levere et arbejdsprodukt. Derefter fortsætter teamet med at forbedre softwaren og leverer kontinuerligt på hvert større trin. Dette opnås ved at have meget korte frigivelsescyklusser (kaldet sprints) og få feedback til forbedring i slutningen af hver cyklus.
SCRUM definerer flere nøgleroller for en smidig drift af et udviklingshold. De er produktejer (som repræsenterer kunden og vedligeholder produktets efterslæb), Scrum-master (som fungerer som organisator og koordinator for teamet ved at gennemføre scrum-møder, opretholde sprint-efterslæb og nedbrændte diagrammer) og andre teammedlemmer. Et team kan bestå af traditionelle roller, men for det meste er de selvledende teams. Hovedartikler fra Scrum er produktets efterslæb / frigørelsestilbaggrund (Ønskeliste), Sprint-efterspørgsler / defekte efterspørgsler (opgaver i hver iteration), Udbrænd diagrammer (arbejde tilbage vs. dato). Hoved SCRUM-ceremonier er produktets backlog-møde, Sprint-møde og Retrospect-møde.
Hvad er ekstrem programmering?
Extreme Programming (forkortet XP) er en softwareudviklingsmetode, der hører til Agile-modellen. Ekstrem programmering udfører faser i meget små kontinuerlige trin (sammenlignet med traditionelle metoder). Det første pas, der kun tager en dag eller en uge, er med vilje ufuldstændig. For at give konkrete mål for udvikling af softwaren skrives automatiserede test i starten. Derefter foretager udviklerne kodningen. Fokus er på at udføre programmering som par. Når alle testene er bestået, betragtes kodningen som komplet. Den næste fase er design og arkitektur, der beskæftiger sig med refactoring af koden af det samme sæt programmerere. I slutningen af denne fase præsenteres ufuldstændigt (men funktionelt) produkt for interessenterne. Lige efter dette starter den næste fase (som fokuserer på det næste sæt vigtigste funktioner).
Hvad er forskellen mellem ekstrem programmering og SCRUM?
Ekstrem programmering og SCRUM er forståeligt nok meget ens og tilpassede metoder. Der er imidlertid subtile, men vigtige forskelle mellem disse to metoder. SCRUM-sprints varer i 2-4 uger, mens typiske XP-iterationer er kortere (sidste 1-2 uger). Normalt tillader SCRUM-hold ikke ændringer i sprints, men XP-hold er lidt mere fleksible til ændringer inden for iterationer. For eksempel efter sprintplanlægningen forbliver sætet af elementer i den sprint uændret, men en funktion, der ikke er begyndt at arbejde på, kan når som helst byttes med en anden funktion i XP. En anden forskel mellem XP og SCRUM er, at rækkefølgen af funktioner, der er udviklet i XP, er en prioriteret af kunden, mens SCRUM-teamet bestemmer rækkefølgen af varer (efter at produktets efterslæb er prioriteret af SCRUMs produktsejer).
I modsætning til XP fastlægger SCRUM ingen teknisk praksis. For eksempel er XP drevet af praksis som testdrevet udvikling (TDD), parprogrammering, refactoring osv. Dog mener nogle, at det at have mandat til et sæt praksis for selvorganiserende teams kan have en negativ indvirkning, og dette kan overvejes en mangel på XP. En anden mangel ved ekstrem programmering er, at uerfarne teams kan have tendens til at refaktorere uden automatiserede tests eller TDD (eller blot hacking). Derfor antyder nogle, at SCRUM er bedre til at stirre af (da det bringer store forbedringer blot gennem fokuserede tidsboksede iterationer) og XP er velegnet til let modne hold, der har opdaget værdien af ovennævnte praksis (snarere end at bruge dem, fordi de er blevet spurgt for at gøre det).