ASPNL logo (1 kb)
Saturday, February 04, 2012




Microsoft MVP

.NET Codewise Community
<< vorige | overzicht | volgende >>

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.