Extreme programmering versus SCRUM | XP versus SCRUM
Er zijn in de loop der jaren een aantal verschillende softwareontwikkelingsmethodologieën gebruikt in de software-industrie, zoals de Waterfall-ontwikkelingsmethode, V-Model, RUP en enkele andere lineaire, iteratieve en gecombineerde lineair-iteratieve methoden. Agile-model (of beter gezegd, een groep methodologieën) is een recenter softwareontwikkelingsmodel dat door het Agile-manifest is geïntroduceerd om de tekortkomingen aan te pakken die in die traditionele softwareontwikkelingsmethodologieën worden aangetroffen.
Agile-methoden zijn gebaseerd op iteratieve ontwikkeling en gebruiken de feedback van de gebruikers als het belangrijkste controlemechanisme. Agile kan een mensgerichte benadering worden genoemd dan traditionele methoden. Agile-model levert heel vroeg een werkende versie van het product op door het systeem op te splitsen in zeer kleine en beheersbare subonderdelen, zodat de klant al vroeg enkele voordelen kan realiseren. De testcyclustijd van Agile is relatief kort in vergelijking met traditionele methoden, omdat het testen parallel aan de ontwikkeling gebeurt. Vanwege al deze voordelen hebben Agile methoden op dit moment de voorkeur boven de traditionele methodieken. Scrum- en Extreme-programmering zijn twee van de meest populaire varianten van Agile-methoden.
Wat is SCRUM?
Zoals hierboven vermeld, is SCRUM een incrementeel en iteratief projectmanagementproces, dat behoort tot de familie van Agile-methoden. SCRUM is gebaseerd op het vroeg in de ontwikkelingscyclus hoge prioriteit geven aan de klantparticipatie. Het raadt aan om het testen door de klant zo vroeg en zo vaak mogelijk op te nemen. Elke keer dat er een stabiele versie beschikbaar komt, wordt er getest. De basis van SCRUM is gebaseerd op het starten met testen vanaf het begin van het project en doorgaan tot het einde van het project.
De belangrijkste waarde van SCRUM is "kwaliteit is de verantwoordelijkheid van het team", wat benadrukt dat de kwaliteit van de software de verantwoordelijkheid is van het hele team (niet alleen het testteam). Een ander belangrijk aspect van SCRUM is het opsplitsen van de software in kleinere beheersbare delen en deze zeer snel aan de klant te leveren. Het leveren van een werkend product is van het grootste belang. Daarna blijft het team de software verbeteren en continu leveren bij elke belangrijke stap. Dit wordt bereikt door zeer korte releasecycli (sprints genoemd) te hebben en feedback te krijgen voor verbetering aan het einde van elke cyclus.
SCRUM definieert verschillende sleutelrollen voor de goede werking van een ontwikkelteam. Dit zijn de Product owner (die de klant vertegenwoordigt en de product backlog onderhoudt), Scrum master (die optreedt als organisator en coördinator van het team door scrum meetings te houden, sprint backlog en burn down grafieken bij te houden) en andere teamleden. Een team kan bestaan uit traditionele rollen, maar zijn meestal zelfsturende teams. De belangrijkste Scrum-artefacten zijn Product backlog/release backlog (verlanglijstje), Sprint backlogs/defect backlogs (taken in elke iteratie), Burn-down grafieken (resterend werk versus datum). De belangrijkste SCRUM-ceremonies zijn Product backlog meeting, Sprint meeting en Retrospect meeting.
Wat is extreem programmeren?
Extreme Programming (afgekort XP) is een softwareontwikkelingsmethodologie die behoort tot het Agile-model. Extreme programmering voert fasen uit in zeer kleine continue stappen (vergeleken met traditionele methoden). De eerste pas, die slechts een dag of een week duurt, is opzettelijk onvolledig. Om concrete doelen voor de ontwikkeling van de software te geven, worden bij de start geautomatiseerde tests geschreven. Vervolgens doen de ontwikkelaars de codering. De focus ligt op het programmeren in paren. Zodra alle tests zijn geslaagd, wordt de codering als voltooid beschouwd. De volgende fase is ontwerp en architectuur, die zich bezighoudt met het refactoren van de code door dezelfde set programmeurs. Aan het einde van deze fase wordt een onvolledig (maar functioneel) product gepresenteerd aan de stakeholders. Direct daarna begint de volgende fase (die zich richt op de volgende reeks belangrijkste functies).
Wat is het verschil tussen Extreme Programming en SCRUM?
Extreme Programming en SCRUM zijn begrijpelijkerwijs zeer vergelijkbare en op elkaar afgestemde methodologieën. Er zijn echter subtiele maar belangrijke verschillen tussen deze twee methoden. SCRUM-sprints duren 2-4 weken, terwijl typische XP-iteraties korter zijn (de laatste 1-2 weken). Gewoonlijk staan SCRUM-teams geen wijzigingen in sprints toe, maar XP-teams zijn weinig flexibeler voor wijzigingen binnen iteraties. Na de sprintplanning blijft de set items van die sprint bijvoorbeeld ongewijzigd, maar een functie waaraan nog niet is begonnen te werken, kan op elk moment worden verwisseld met een andere functie in XP. Een ander verschil tussen XP en SCRUM is dat de volgorde van de functies die in XP zijn ontwikkeld, strikt geprioriteerd wordt door de klant, terwijl het SCRUM-team de volgorde van items bepa alt (nadat de productachterstand is geprioriteerd door de producteigenaar van SCRUM).
In tegenstelling tot XP legt SCRUM geen technische praktijken vast. XP wordt bijvoorbeeld gedreven door praktijken zoals test-driven development (TDD), pair programming, refactoring, enz. Sommigen zijn echter van mening dat het verplicht stellen van een reeks praktijken aan zelforganiserende teams een negatief effect kan hebben, en dit kan worden overwogen een tekortkoming van XP. Een andere tekortkoming van Extreme-programmering is dat onervaren teams de neiging hebben om te refactoren zonder geautomatiseerde tests of TDD (of gewoon hacken). Daarom suggereren sommigen dat SCRUM beter is om te staren (omdat het grote verbeteringen brengt door simpelweg gerichte timebox-iteraties) en XP geschikt is voor enigszins volwassen teams die de waarde van bovengenoemde praktijken hebben ontdekt (in plaats van ze te gebruiken omdat ze zijn gevraagd om dit te doen).