Ekstrem programmering vs SCRUM | XP vs SCRUM
Der har været en række forskellige softwareudviklingsmetoder brugt i softwareindustrien gennem årene, såsom Waterfall-udviklingsmetode, V-Model, RUP og få andre lineære, iterative og kombinerede lineære iterative metoder. Agil model (eller mere korrekt, en gruppe af metoder) er en nyere softwareudviklingsmodel, der blev introduceret af Agile-manifestet for at løse de mangler, der findes i disse traditionelle softwareudviklingsmetoder.
Agile metoder er baseret på iterativ udvikling og bruger feedback fra brugerne som den vigtigste kontrolmekanisme. Agile kan kaldes en folkecentreret tilgang end traditionelle metoder. Agile-modellen leverer en fungerende version af produktet meget tidligt ved at nedbryde systemet i meget små og håndterbare underdele, så kunden tidligt kan indse nogle af fordelene. Testcyklustiden for Agile er relativt kort sammenlignet med traditionelle metoder, fordi test udføres parallelt med udvikling. 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 tilhører familien af Agile metoder. SCRUM er baseret på at prioritere kundedeltagelse højt tidligt i udviklingscyklussen. Det anbefaler at indarbejde test af kunden tidligt og ofte som muligt. Test udføres på hvert punkt, når en stabil version bliver tilgængelig. Grundlaget for SCRUM er baseret på at starte test fra projektets start og fortsætte igennem til projektets afslutning.
Nøgleværdien af SCRUM er "kvalitet er holdets ansvar", hvilket understreger, at kvaliteten af softwaren er hele teamets ansvar (ikke kun testteamet). Et andet vigtigt aspekt af SCRUM er at nedbryde softwaren til mindre håndterbare dele og levere dem meget hurtigt til kunden. At levere et fungerende produkt er yderst vigtigt. Derefter fortsætter teamet med at forbedre softwaren og levere kontinuerligt ved 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 velfungerende drift af et udviklingsteam. De er produktejeren (der repræsenterer kunden og vedligeholder produktets bagud), Scrum master (der fungerer som arrangør og koordinator af teamet ved at gennemføre scrummøder, opretholder sprintbacklog og nedbrændte diagrammer) og andre teammedlemmer. Et hold kan bestå af traditionelle roller, men for det meste er det selvadministrerende hold. Vigtigste Scrum-artefakter er produktbacklog / frigivelsesbacklog (ønskeliste), Sprint-backlogs / defekt backlogs (opgaver i hver iteration), nedbrændte diagrammer (resterende arbejde vs. dato) De vigtigste SCRUM-ceremonier er Product 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 forsætligt ufuldstændigt. For at give konkrete mål for udvikling af softwaren skrives automatiske tests i starten. Derefter foretager udviklerne kodningen. Fokus er på programmering som par. Når alle testene er bestået, betragtes kodningen som fuldført. 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 derefter starter den næste fase (som fokuserer på det næste sæt af de vigtigste funktioner).
Hvad er forskellen mellem ekstrem programmering og SCRUM?
Extreme Programming og SCRUM er forståeligt nok meget ens og justerede metoder. Der er dog 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-teams er lidt mere fleksible for ændringer inden for iterationer. For eksempel forbliver sættet med emner fra denne sprint uændret efter sprintplanlægningen, men en funktion, der ikke er begyndt at arbejde på, kan til enhver tid 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 strengt prioriteret af kunden, mens SCRUM-teamet beslutter rækkefølgen af varer (efter at produktets efterslæb prioriteres af SCRUMs produktejer).
I modsætning til XP fastlægger SCRUM ingen tekniske fremgangsmåder. For eksempel er XP drevet af praksis som testdrevet udvikling (TDD), parprogrammering, refactoring osv. Nogle mener dog, at mandat til et sæt praksis for selvorganiserende hold kan have en negativ indvirkning, og dette kan overvejes en mangel på XP. En anden mangel ved ekstrem programmering er, at uerfarne hold kan have tendens til at refactor uden automatiserede tests eller TDD (eller simpelthen hacking). Derfor antyder nogle, at SCRUM er bedre til at stirre ud (da det medfører store forbedringer blot gennem fokuserede tidsbokse-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 bedt om for at gøre det).