Agile systeemontwikkeling Een introductie
Algemene informatie voor medewerkers van SYSQA B.V.
Organisatie Titel Onderwerp
SYSQA B.V. Agile systeemontwikkeling Een introductie
Pagina Versie Datum
2 van 10 1.1 12-04-2011
Inhoudsopgave 1.
Inleiding ............................................................................................................ 3
2.
Terminologie..................................................................................................... 4
3.
Uitgangspunten ................................................................................................ 6
4.
Agile ontwikkelmethodes ................................................................................ 7
5.
Kanttekeningen ................................................................................................ 9
6.
Literatuurverwijzingen ................................................................................... 10
Almere © 2004
Quality Assurance in ICT
Organisatie Titel Onderwerp
SYSQA B.V. Agile systeemontwikkeling Een introductie
Pagina Versie Datum
3 van 10 1.1 12-04-2011
1. Inleiding De traditionele systeemontwikkelmethodes zoals SDM I, SDM II en LAD hebben, zo blijkt in de praktijk, een aantal nadelen. Zo wordt de fasering als rigide ervaren, is de doorlooptijd vaak langer dan gewenst, zijn de kosten hoog en is de gebruikersparticipatie te laag. Ook worden riskante activiteiten, zoals de integratie van modules en een load test, pas in een laat stadium uitgevoerd. Als gevolg hiervan zijn er aan het einde van de 20e eeuw een aantal systeemontwikkelmethodes ontstaan die tegemoetkomen aan deze tekortkomingen. De methodes worden gekenmerkt door een hoge gebruikersparticipatie en het iteratief ontwikkelen. Met dit laatste wordt bedoeld dat er meerdere ontwikkelrondes na elkaar plaatsvinden. In plaats van ernaar te streven in één keer het systeem te bouwen worden meerdere versies gemaakt en steeds verbeterd en verfijnd. Deze methodes staan bekend als Iterative and Incremental Development (IID). Verwant aan IID zijn de zogenaamde ‘agile’ methodes, waarbij ‘agile’ staat voor ‘snel en flexibel reagerend op veranderingen’. Deze agile methodes zijn behalve iteratief ook gebaseerd op evolutionaire ontwikkelmethodes. Daarnaast speelt flexibiliteit een grote rol, het vermogen om het systeem tijdens de ontwikkeling snel aan te passen aan veranderende eisen. Agile ontwikkelmethodes zijn dus iteratief, evolutionair en flexibel. Er zijn vier verschillende Agile ontwikkelmethodes te onderscheiden, namelijk: XP; Scrum; Evo; UP. Van deze methoden staan in deze intro kort de belangrijkste uitgangspunten beschreven. Meer over de verschillende methoden is te vinden in de introducties voor elk van de ontwikkelmethoden die ook in deze kennisbank te vinden zijn.
Almere © 2004
Quality Assurance in ICT
Organisatie Titel Onderwerp
SYSQA B.V. Agile systeemontwikkeling Een introductie
Pagina Versie Datum
4 van 10 1.1 12-04-2011
2. Terminologie Hieronder worden een aantal termen besproken die te maken hebben met agile ontwikkelmethodes. Agile Agile is een Engelse term die staat voor snel en flexibel reagerend op veranderingen. Agile zou vertaald kunnen worden als behendig of bewegelijk en agility als behendigheid of bewegelijkheid. Maar omdat er in relatie tot softwareontwikkelmethodes niet echt een goede vertaling beschikbaar is, wordt de term agile ook in het Nederlands gebruikt. Agile methodes zijn een deelverzameling van de iteratieve en evolutionaire methodes. Dat betekent dat hij systeem in herhaalde stappen wordt ontwikkeld en voortdurend wordt aangepast aan veranderingen en wijzigingen. Maar behalve deze flexibiliteit zijn agile methodes ook licht en snel. Dat wil zeggen dat de nadruk ligt op principes als eenvoud, communicatie en zelforganiserende teams. Iteratief Een ontwikkelmethode is iteratief als de software in iteraties ontwikkeld wordt. Aan het einde van elke iteratiestap wordt er een tussenversie van het te ontwikkelen systeem aan de gebruikers voorgelegd. De iteratiestap wordt net zolang herhaald als nodig is om aan alle eisen van de gebruikers van het systeem te voldoen. Pas dan wordt het systeem daadwerkelijk opgeleverd. In moderne iteratieve methodes is de aanbevolen lengte van de iteratiestappen één tot zes weken. Iteratiestappen worden ook wel als cycli aangeduid. Een wezenlijk kenmerk van zo’n iteratiestap is dat er tijdens de uitvoering daarvan geen nieuwe eisen en wensen kunnen worden ingebracht door een van de externe stakeholders. Aan het begin van een iteratiestap is het voor de ontwikkelaars duidelijk wat er moet gebeuren. Veranderingen en uitbreidingen van de gewenste functionaliteit kunnen pas bij een volgende iteratiestap worden meegenomen. Incrementeel Een ontwikkelmethode is incrementeel als niet in een keer het hele systeem ontwikkeld wordt, maar eerst een deel. Vaak wordt met het eenvoudigste deel begonnen. Zodra dat eerste deel naar wens van de gebruikers is, wordt het opgeleverd. Daarna wordt het in stappen uitgebreid, tot uiteindelijk het gehele systeem is gerealiseerd. Iteratief versus incrementeel Incrementeel is niet hetzelfde als iteratief. Bij een incrementele ontwikkelmethode wordt het systeem in stappen opgeleverd en elke oplevering kan meerdere iteratiestappen omvatten, maar dat hoeft niet. Er kan ook incrementeel ontwikkeld worden zonder iteraties. Dan is elke oplevering het resultaat van een traditioneel, lineair proces. Een ontwikkelmethode die zowel iteratief als incrementeel is, wordt dus stapsgewijs opgeleverd (incrementeel) en elke oplevering is tot stand gekomen in meerdere iteraties (iteratief). Evolutionair Met evolutionair wordt bedoeld dat iets zich voordurend aanpast aan een veranderende omgeving. In het geval van ontwikkelmethodes kan de term evolutionair van toepassing zijn op (de oplevering van) het te ontwikkelen systeem, de eisen en wensen van de gebruikers, de geschatte hoeveelheid werk of de planning. De gedachte achter evolutionaire ontwikkelmethodes is dat het vooraf nooit helemaal duidelijk is hoe het te ontwikkelen Almere © 2004
Quality Assurance in ICT
Organisatie Titel Onderwerp
SYSQA B.V. Agile systeemontwikkeling Een introductie
Pagina Versie Datum
5 van 10 1.1 12-04-2011
systeem er moet gaan uitzien. Dit kan het gevolg zijn van onvolledig inzicht van de gebruikers in hun wensen en eisen, maar ook van veranderende omstandigheden (waardoor uiteindelijk een ander systeem vereist is dan oorspronkelijk werd gedacht). Daarom wordt er bij evolutionaire ontwikkelmethodes niet naar gestreefd het te ontwikkelen systeem vooraf volledig te specificeren. Tijdens elk ontwikkeltraject treden er onvoorspelbare veranderingen en wijzigingen op Als gevolg daarvan evolueren de eisen en wensen, de hoeveelheid werk, de planning en dus het systeem. Evolutionair versus incrementeel Wanneer een systeem evolutionair wordt ontwikkeld kan er sprake zijn van incrementele oplevering, maar dat hoeft niet. Bij een puur incrementele ontwikkelmethode worden alle opleveringen juist vooraf gepland, terwijl bij een evolutionaire methode elke oplevering afhangt van veranderingen en wijzigingen die na de vorige oplevering onverwacht kunnen optreden. Adaptief De term adaptief is gerelateerd aan evolutionair. Iets wat adaptief is, past zich ook voortdurend aan, maar bij adaptief wordt er specifiek gedoeld op aanpassingen naar aanleiding van feedback. Tijdens een ontwikkeltraject wordt het adaptieve systeem aangepast naar aanleiding van feedback van gebruikers, testers, ontwikkelaars e.a.
Almere © 2004
Quality Assurance in ICT
Organisatie Titel Onderwerp
SYSQA B.V. Agile systeemontwikkeling Een introductie
Pagina Versie Datum
6 van 10 1.1 12-04-2011
3. Uitgangspunten Door een groep geïnteresseerden in agile methodes zijn in 2001 de uitgangspunten van agile ontwikkelmethodes geformuleerd. Dit gebeurde in de vorm van een manifest en 13 principes. De hoofdlijnen van het manifest en de principes worden hieronder beschreven. Manifest Individuen en interactie Werkende software Samenwerking met de klant Reageren op veranderingen
boven boven boven boven
processen en tools volledige documentatie contractonderhandeling een plan volgen
Let wel: de elementen aan de rechterkant zijn waardevol, maar de elementen links zijn waardevoller. Principes 1. Het tevreden stellen van de klant staat voorop. Dit wordt bereikt door vroegtijdige en voortdurende opleveringen van waardevolle software. 2. Veranderende eisen worden verwelkomd, zelfs tegen het einde van het project. Agile processen zijn juist in sterke mate gericht op verandering, ten behoeve van het concurrentievoordeel van de klant. 3. Lever regelmatig werkende software op, in periodes van enkele weken tot enkele maanden, met een voorkeur voor korte periodes. 4. Gedurende het gehele project moeten ontwikkelaars en gebruikers samenwerken. 5. Zet projecten op rond gemotiveerde individuen. Geef hun de steun en omgeving die ze nodig hebben en vertrouw erop dat zij de klus kunnen klaren. 6. De meeste efficiënte en effectieve methode om informatie over te dragen aan en binnen een ontwikkelteam is mondeling overleg. 7. Werkende software is de belangrijkste maat voor vooruitgang. 8. Agile processen propageren duurzame ontwikkeling. 9. De financiers, ontwikkelaars en gebruikers moeten in staat zijn het projecttempo vol te houden tot in het oneindige. 10. Een voortdurende aandacht voor technische excellentie en goed ontwerp bevordert ‘agility’. 11. Eenvoud – de kunst van het maximaliseren van de hoeveelheid werk die niet wordt gedaan – is essentieel. 12. De beste softwarearchitectuur, eisen en ontwerpen komen voort uit zelforganiserende teams. 13. Het ontwikkelteam bezint zich met enige regelmaat op zijn effectiviteit. Afhankelijk van de resultaten van die evaluatie, past het team zijn gedrag daarna aan.
Almere © 2004
Quality Assurance in ICT
Organisatie Titel Onderwerp
SYSQA B.V. Agile systeemontwikkeling Een introductie
Pagina Versie Datum
7 van 10 1.1 12-04-2011
4. Agile ontwikkelmethodes In dit hoofdstuk worden de vier agile ontwikkelmethodes kort besproken. Uitgebreidere informatie over deze methodes staan in de introducties over deze methodes in de kennisbank. De belangrijkste uitgangspunten bij XP (Extreme Programming) zijn: Samenwerking; Snelle en vroegtijdige ontwikkeling van software; Professionele ontwikkelmethodes. XP is gebaseerd op 4 principes: Communicatie; Eenvoud; Feedback; Moed. De belangrijkste uitgangspunten bij Scrum zijn: Ontwikkelen in zelfsturende teams van ontwikkelaars, Dagelijkse afstemming binnen een team, Ontwikkel in iteratiestappen van 30 kalenderdagen, Opleveren van een demoversie voor de externe stakeholders aaan het eind van elke iteratiestap, Het vermijden van vooraf gedefinieerde stappen. De belangrijkste uitgangspunten bij Evo (Evolutionary Project Management) zijn: Korte iteratiestappen (1-2 weken) met evolutionaire oplevering in elke stap; Eisen en ontwerp ontwikkelen zich evolutionair; Adaptieve planning gericht op de klant of op kosten; Kwantificering van de opbrengsten en de voortgang; Kwantificering van alle kwaliteitseisen; Optioneel gebruik van een eigen taal, Planguage, voor de specificatie. De belangrijkste uitgangspunten bij UP (Unified Process) zijn: Ontwikkeling in korte iteratiestappen (2-6 weken); Ontwikkel in de eerste iteratiestappen die delen het eerst die veel risico hebben en/of veel toegevoegde waarde opleveren; Zorg ervoor dat het project voor de klant meer oplevert dan kost; Reageer zo vroeg mogelijk in het project op veranderingen; Werk samen als een team. Ontwikkelmethodes kunnen worden geclassificeerd aan de hand van het aantal en de lengte van de iteratiestappen (verticaal weergegeven) en de mate van formalisering, d.w.z. hoeveelheid documentatie, aantal reviews, vooraf gedefinieerde stappen et cetera (horizontaal weergegeven). Zie figuur 1.
Almere © 2004
Quality Assurance in ICT
Organisatie Titel Onderwerp
SYSQA B.V. Agile systeemontwikkeling Een introductie
Pagina Versie Datum
8 van 10 1.1 12-04-2011
Veel korte iteratiestappen
Evo
XP
UP
Scrum Formeel
Informeel
Waterval Geen iteratiestappen
Figuur 1: classificering agile systeemontwikkelmethodes
Almere © 2004
Quality Assurance in ICT
Organisatie Titel Onderwerp
SYSQA B.V. Agile systeemontwikkeling Een introductie
Pagina Versie Datum
9 van 10 1.1 12-04-2011
5. Kanttekeningen Voor medewerkers van SYSQA gelden per methode de volgende aandachtspunten. Aandachtspunten XP Er is geen vaste specificatie vooraf op basis waarvan gestructureerd testen kan worden voorbereid; De testspecificaties worden vastgelegd in (geautomatiseerde) testscripts; Bij XP wordt testdriven development toegepast; Veranderingen worden informeel doorgegeven waardoor kwaliteitsborging wordt gehinderd; Het begrip ‘ontwikkelen heeft binnen XP een ruimere betekenis dan alleen het schrijven van programmacode; Ontwerpen is (bij grotere projecten) ook een wezenlijke activiteit binnen XP; Als de XP-methodiek niet in z’n geheel wordt gevolgd, dan werkt men feitelijk zonder methodiek. Aandachtspunten Scrum Er is geen vaste specificatie vooraf op basis waarvan gestructureerd testen kan worden voorbereid; veranderingen zijn op een centraal punt geregistreerd en worden per iteratie verwerkt, dus moet men goed in de gaten houden wat wel en niet in een tussenversie is meegenomen. Aandachtspunten EVO Er is geen vaste specificatie vooraf op basis waarvan gestructureerd testen kan worden voorbereid. Per cyclus is wel goed vastgelegd wat wanneer opgeleverd wordt; Kosten/baten zijn leidend in plaats van kritische succesfactoren voor het hele systeem; Frequente raadpleging van gebruikers en andere stakeholders kan gemakkelijk tot verschuiving van doelstellingen van het totale project leiden. Mensen kunnen beter aangeven wat ze willen wanneer ze wat zien, maar door wat ze zien raakt wat ze niet zien sneller uit het oog verloren; Aandachtspunten UP Er is geen vaste specificatie vooraf op basis waarvan gestructureerd testen kan worden voorbereid; Meestal worden use cases als basis gebruikt bij de ontwikkeling, deze vormen dan ook de basis voor het testen; Specificaties worden aangepast aan de hand van testresultaten, na elke testcyclus kan er dus een herziening van de specificaties plaatsvinden. Bij alle agile methodes wordt gesteld dat testen zo vroeg mogelijk moeten worden betrokken en tests ook zo vroeg mogelijk moeten worden uitgevoerd. Met testen wordt bij agile methodes ook vaak het zo vroeg mogelijk reviewen bedoeld.
Almere © 2004
Quality Assurance in ICT
Organisatie Titel Onderwerp
SYSQA B.V. Agile systeemontwikkeling Een introductie
Pagina Versie Datum
10 van 10 1.1 12-04-2011
6. Literatuurverwijzingen 1. Larman, C. 2004. ‘Agile and Iterative Development. A Manager’s Guide’. Addison-Wesley. 2. www.agilealliance.com 3. www.agilemodeling.com
Almere © 2004
Quality Assurance in ICT