Extreme programmering vs SCRUM | XP tegen SCRUM
Er zijn in de software-industrie door de jaren heen verschillende softwareontwikkelingsmethodologieën gebruikt, zoals de Waterfall-ontwikkelmethode, V-Model, RUP en enkele andere lineaire, iteratieve en gecombineerde lineair-iteratieve methoden. Agile model (of meer correct, een groep van methodologieën) is een meer recent softwareontwikkelingsmodel dat door het Agile-manifest is geïntroduceerd om de tekortkomingen aan te pakken die zijn aangetroffen in die traditionele softwareontwikkelingsmethodieken.
Agile-methoden zijn gebaseerd op iteratieve ontwikkeling en gebruiken de feedback van de gebruikers als het belangrijkste besturingsmechanisme. Agile kan een op mensen gerichte benadering worden genoemd dan traditionele methoden. Agile model levert een werkende versie van het product al heel vroeg door het systeem op te delen in zeer kleine en beheersbare subonderdelen, zodat de klant al vroeg voordelen kan realiseren. De testcyclustijd van Agile is relatief kort in vergelijking met traditionele methoden, omdat het testen parallel aan de ontwikkeling wordt gedaan. Vanwege al deze voordelen hebben Agile-methoden op dit moment de voorkeur boven de traditionele methodologieën. 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 projectbeheerproces dat tot de Agile-familie behoort. SCRUM is gebaseerd op het geven van hoge prioriteit aan de klantparticipatie in het begin van de ontwikkelingscyclus. Het adviseert om testen door de klant vroeg en vaak mogelijk op te nemen. Testen gebeurt op elk punt waarop een stabiele versie beschikbaar komt. De basis van SCRUM is gebaseerd op het starten van testen vanaf het begin van het project en loopt door tot het einde van het project.
De kernwaarde 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 (en niet alleen van het testteam). Een ander belangrijk aspect van SCRUM is het onderverdelen van de software in kleinere, hanteerbare onderdelen en deze zeer snel aan de klant te leveren. Het leveren van een werkend product is van het grootste belang. Vervolgens blijft het team de software verbeteren en continu leveren bij elke belangrijke stap. Dit wordt bereikt door het hebben van zeer korte vrijgavecycli (sprints genaamd) en het krijgen van feedback voor verbetering aan het einde van elke cyclus.
SCRUM definieert een aantal sleutelrollen voor de goede werking van een ontwikkelteam. Zij zijn de Producteigenaar (die de klant vertegenwoordigt en de productachterstand bijhoudt), Scrum-master (die optreedt als de organisator en coördinator van het team door scrumbijeenkomsten te houden, sprintachterstand in stand te houden en diagrammen op te blazen) en andere teamleden. Een team kan bestaan uit traditionele rollen, maar meestal zijn het zelfsturende teams. Belangrijkste Scrum-artefacten zijn Productachterstand / release-backlog (verlanglijst), Sprint-achterstanden / defect-achterstanden (taken in elke iteratie), Burn-down-grafieken (resterend werk versus datum). Belangrijkste SCRUM-ceremonies zijn productachterstandvergadering, Sprintvergadering en Retrospect-vergadering.
Wat is extreem programmeren?
Extreme Programming (afgekorte XP) is een software-ontwikkelingsmethode die tot het Agile-model behoort. Extreem programmeren 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 te stellen voor het ontwikkelen van de software, worden in het begin geautomatiseerde tests geschreven. Dan doen de ontwikkelaars de codering. De nadruk ligt op het programmeren als 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 belanghebbenden. Direct hierna begint de volgende fase (die zich richt op de volgende reeks van belangrijkste functies).
Wat is het verschil tussen Extreme Programming en SCRUM?
Extreme programmering en SCRUM zijn begrijpelijkerwijs vergelijkbare en uitgelijnde methodieken. Er zijn echter subtiele maar belangrijke verschillen tussen deze twee methoden. SCRUM sprints duren 2-4 weken, terwijl typische XP-iteraties korter zijn (afgelopen 1-2 weken). Meestal laten SCRUM-teams wijzigingen in sprints niet toe, maar XP-teams zijn weinig flexibeler voor wijzigingen binnen iteraties. Na de sprintplanning blijft de set items van die sprint bijvoorbeeld onveranderd, maar een functie die niet is begonnen met 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 in XP ontwikkelde functies een strikt prioriteit heeft van de klant, terwijl het SCRUM-team de volgorde van de items bepaalt (nadat de productbacklog prioriteit heeft gekregen van de eigenaar van het SCRUM-product).
In tegenstelling tot XP legt SCRUM geen enkele technische praktijk vast. XP wordt bijvoorbeeld gedreven door praktijken zoals testgestuurde ontwikkeling (TDD), paarprogrammering, refactoring, enz. Sommigen zijn echter van mening dat het verplicht stellen van een reeks praktijken voor zelforganiserende teams een negatieve impact 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 eenvoudigweg hacken). Daarom suggereren sommigen dat SCRUM beter is om naar te staren (omdat het grote verbeteringen oplevert eenvoudigweg door gerichte timeboxed 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).