The Vision Column - Extreme Programming: Op survival in programmeerland
The Vision Column wordt verzorgd door ontwikkelaars van
The Vision Web (tegenwoordig Ordina).
Door Erwin Werkman
10 augustus 2005
Extreme Programming klinkt als iets waarbij ontwikkelaars bij voorkeur midden in de
nacht werken, uiteraard voorzien van grote hoeveelheden pizza en cola. Niets is echter
minder waar...
Extreme Programming (XP) is een systeem ontwikkelmethode die een beetje vergelijkbaar is met DSDM, maar in tegenstelling tot DSDM staat bij XP het “programmeren” centraal. De reden daarvan is volgens Kent Beck, de geestelijk vader van XP en schrijver van een hele armada aan boeken over dit onderwerp, dat eigenlijk alles wat je doet om code draait, dus waarom zou je dat dan niet centraal stellen.
XP is geschikt voor kleine tot middelgrote ontwikkelprojecten (de projecten die het meest voorkomen) waarbij de requirements relatief vaak veranderen.
Ondanks dat het programmeren centraal staat wil dit niet zeggen dat er weinig aandacht wordt geschonken aan de klant, projectplanning of andere zaken. In tegendeel zelfs: XP vraagt dat de klant continu beschikbaar is om requirements te schrijven (dat gebeurt in de vorm van ‘stories’), te verduidelijken of om mee te denken over nieuwe requirements.
Rond het ontwikkelen kent XP een aantal belangrijke begrippen:
Continu testen
Een van de belangrijkste onderwerpen binnen XP is het continu testen. Dit is zelfs zo
belangrijk dat je binnen XP eerst de test code schrijft en daarna pas de functionele
code. Wat bereik je daar mee? Door veel test scripts te schrijven maak je het mogelijk
om op elk moment vast te stellen of de code nog steeds doet wat het zou moeten doen.
En dat is wel een geruststellende gedachte.
Pair Programming
Pair programming houdt in dat je stukken code niet alleen schrijft maar dat altijd met
een andere ontwikkelaar doet. Een van de ontwikkelaars bedient het toetsenbord, de ander
kijkt en denkt mee over test scripts, code conventies, schrijft documentatie etc. Dit
lijkt contra productief, maar volgens Beck is het even wennen, maar daarna wil je niet
anders meer.
Simpel design
Wat voor rol speelt design in XP? In XP is de strategie om altijd het simpelste design
te hebben waarmee het programma alle tests kan uitvoeren. XP gaat dus niet uit van
verschrikkelijk ingewikkelde ontwerpen, waarin rekening wordt gehouden met allerlei
zaken die nu nog niet van belang zijn maar in de toekomst wel eens van belang zouden
kunnen zijn. De reden hiervoor is dat XP er vanuit gaat dat al die ingewikkelde designs
veel te duur zijn om te bouwen. Maar wat nu als in de toekomst blijkt dat dat ingewikkelde
design wel degelijk nodig was? In dat geval komen we uit bij een ander belangrijk
begrip in XP: refactoring.
Refactoring
Refactoring is de mogelijkheid om op elk moment het design van je code aan te passen
om het geschikt te maken voor het doel waar je op dat moment mee bezig bent. Daarbij
moet je niet alleen denken aan het uitbreiden van je design: het simpeler maken van je
design is minstens zo belangrijk. Maar is het steeds wijzigen van je code dan niet eng?
Hoe weet ik dan dat de code nog goed werkt als ik het wijzig? Simpel: omdat je ook steeds
bezig bent met het schrijven van test-scripts hoef je na het refactoren alleen maar je
tests te draaien en je weet zeker dat je programma nog steeds dat doet wat het hoort
te doen. In Visual Studio 2005 bevat de editor speciale faciliteiten om je te helpen
met een aantal vaak voorkomende refactorings.
Naast deze begrippen heeft XP uiteraard ook wat te zeggen over de planning, de bemensing
van een project en alle andere zaken die je bij een project tegen kunt komen.
Is dit nu de ideale ontwikkelmethode? Ik heb persoonlijk geen ervaring met XP, maar er
zitten wel een aantal elementen in die in de praktijk zeer goed toepasbaar zijn. Test
driven development klinkt erg goed, net als pair programming, refactoring en het simpel
houden van het ontwerp van je applicatie. Het is dus (zoals gewoonlijk) erg afhankelijk
van het project, de klant en het contract welke elementen van XP je kunt gebruiken.
Voor de geinteresseerden: het boek eXtreme Programming explained (Kent Beck – Addison-Wesley – ISBN 0-201-61641-6)
is een mooie inleiding op XP. Daarnaast is er nog een hele vloot aan boeken die specifiek
ingaan op onderdelen van XP.
|