Whitepaper Kwaliteit binnen Agile Building the right thing
Paul Meek
[email protected] Versie 1.0 (24-02-2010)
LinkiT projects Rijnzathe 9 3454 PV De Meern
Tel 030 - 2650265 Web linkit-projects.nl Twitter @linkitprojects
Kwaliteit binnen Agile
Building the right thing
Inleiding Agile is “hot”. Agile projecten beloven sneller software te leveren, die na elke iteratie onmiddellijk in productie kan. Daarnaast zou de software beter moeten zijn. Dus sneller en beter, … daar moeten de klanten toch wel tevreden mee zijn? Business managers zijn tegenwoordig ook meer “aware” en vragen soms letterlijk aan hun ICT-afdeling om een meer “agile” aanpak. Toch lossen agile projecten in de praktijk vaak deze beloftes niet in. Het één op één toepassen van de “regels” van bijvoorbeeld Scrum blijkt vaak onvoldoende. Het goed begrijpen van de principes van agile software development kan al een hoop ellende voorkomen. Theoretische kennis (opgedaan in een eenmalige cursus al dan niet met certificering) en het dogmatisch toepassen van de agile procedures en “regeltjes” alleen is onvoldoende garantie voor succes. Elk project kan weliswaar putten uit dezelfde pot met agile methoden, technieken en tools, maar wat als de ingezette set in de context van een specifiek project onvoldoende blijken te werken? De agilisten onder ons zullen zeggen: “Daar hebben we toch de retrospective voor?” Inderdaad, maar het is dan wel de kunst om de werkwijze zodanig aan te passen, dat het wel gaat werken voor het project. Hiervoor is het nodig om echte agile ervaring in het project in te brengen, zeker als agile nieuw is. Het is ook zeer belangrijk om de discipline vast te houden. Wat we in de praktijk regelmatig tegenkomen, is dat van principiële keuzes, zoals een gezamenlijke sprint planning, TDD (test driven development), refactoring of pairing gedurende het project wordt afgestapt. Meestal wordt dit ingegeven door een korte termijn doelstelling van de project manager: tijdswinst. Wat daarmee vaak wordt opgeofferd is kwaliteit en dus ook … tijd. Immers de op korte termijn “gewonnen” tijd wordt later in veelvoud weer ingeleverd door meer bug fixing, testwerk, etcetera. Verder is het belangrijk om de juiste focus te houden op het doel: het opleveren van werkende en voor de klant waardevolle software. Het proces is hieraan ondergeschikt en slechts een middel om op effectieve wijze de software op te leveren. Wat we vaak tegenkomen is het halsstarrig vasthouden aan templates en werkafspraken, terwijl die voor het betreffende team onvoldoende blijken te werken. Het gaat hierbij om het handhaven van de agile principes en is de invulling hiervan – het proces – flexibel. Het team is hierbij in principe zelfsturend en de agile coach ondersteunend (een goede agile coach zal het team hier en daar een beetje moeten masseren). Stand-up meetings en retrospectives zijn uitermate geschikte momenten om het proces met het gehele team tegen het licht te houden. Dit drieluik van whitepapers gaat in op kwaliteit binnen agile sofware development. Hoe kunnen we ervoor zorgen dat de sofware, die een agile project elke iteratie opnieuw oplevert, inderdaad van hoge kwaliteit is. Immers, pas dan heeft de business lead (product owner in Scrum terminologie) werkelijk de keuze om na elke iteratie in productie te gaan met de opgeleverde software. In deze whitepaper gaan we verder in op het kwaliteitsaspect “building the right thing”. De volgende twee whitepapers zullen ingaan op respectievelijk “building the thing right” en “fitness for change”.
2
LinkiT projects Rijnzathe 9 3454 PV De Meern
Tel 030 - 2650265 Web linkit-projects.nl Twitter @linkitprojects
Kwaliteit binnen Agile
Building the right thing
Terminologie
Alvorens in te gaan op het antwoord hoe we kwaliteit kunnen garanderen in een agile project omgeving, dienen we eerst de volgende termen nader te verklaren: agile en kwaliteit. Voor een korte introductie in agile ontwikkelen, zie de bijlage.
Kwaliteit in het heden is geen garantie voor kwaliteit in de toekomst…
Wat is kwaliteit?
Een simpele, algemene definitie van kwaliteit is “de mate waarin het geleverde aan de verwachtingen van de klant voldoet”. Volgens ISO 8402 is kwaliteit: het geheel van eigenschappen en kenmerken van een product of dienst dat van belang is voor het voldoen aan vastgestelde of vanzelfsprekende behoeften. De auteur Joseph Juran beschrijft kwaliteit als “fitness for use” en Prince2 hanteert de definitie “fitness for purpose” of “conforms to requirements”. “Fitness for purpose” kan worden gesplitst in: “Building the right thing” “Building the thing right” In de eerste plaats moet je de juiste requirements ontwikkelen (“building the right thing”), en deze moet je op de juiste wijze implementeren (“buidling the thing right”). Binnen Linkit projects is “fitness for purpose” alleen niet voldoende. Het is mooi, dat de software nu precies doet wat de klant ervan verwacht. Maar wat als de verwachtingen van de klant wijzigen, bijvoorbeeld als gevolg van veranderingen in markt? Iedereen kent de uitspraak “resultaten behaald in het verleden bieden geen garantie voor de toekomst”. Met kwaliteit is dit net zo: “kwaliteit in het heden is geen garantie voor kwaliteit in de toekomst”.
De software dient te kunnen meebewegen met de eisen en wensen van de klant. En dan wel in het tempo van die klant!
3
Om software van blijvende waarde te laten zijn voor de klant, dient de software mee te kunnen bewegen met de eisen en wensen van de klant. En dan wel in het tempo van de klant! En niet alleen na het project, maar ook al gedurende het project… Dit houdt in, dat we naast “fitness for use” ook “fitness for change” als een belangrijke peiler van kwaliteit zien.
LinkiT projects Rijnzathe 9 3454 PV De Meern
Tel 030 - 2650265 Web linkit-projects.nl Twitter @linkitprojects
Kwaliteit binnen Agile
Building the right thing
Om aan het kwaliteitsaspect “building the right thing” te voldoen hebben we binnen een agile project veel handvatten tot onze beschikking.
Building the right thing
De meeste mensen in de ICT kennen het onderstaande plaatje wel. Door miscommunicatie, de vele overdrachten van de ene projectrol naar de andere en de daarmee samenhangende interpretatieverschillen, herkent de gebruiker aan het einde van het project zijn/haar eigen requirements niet meer…
Om aan het kwaliteitsaspect “building the right thing” te voldoen hebben we binnen een agile project veel handvatten tot onze beschikking op alle verschillende niveaus.
4
LinkiT projects Rijnzathe 9 3454 PV De Meern
Tel 030 - 2650265 Web linkit-projects.nl Twitter @linkitprojects
Kwaliteit binnen Agile
Building the right thing
Feedback cycles De product owner zit gedurende de gehele looptijd van het project in de “driving seat”. De product owner heeft de mogelijkheid om tussentijds al met een simpele versie in productie te gaan en daarmee al business value te genereren.
Een belangrijk onderscheid tussen agile en traditionele ontwikkelprocessen, zoals waterval en het V-model, zijn de korte iteraties (sprints in Scrum) binnen agile. Een watervaltraject begint met de fase “requirements gathering”, waarbinnen de gebruikers 100% van de scope volledig in detail dienen te specificeren. Binnen agile gaan we ervan uit, dat de gebruiker bij de start van een project in grote lijnen wel weet wat hij wil, maar nog niet precies alle details kan overzien. Daarnaast is het natuurlijk mogelijk, dat gedurende een project de gebruiker zijn wensen wil bijstellen bijvoorbeeld als gevolg van ontwikkelingen in de markt, zoals een nieuwe prospect. Binnen agile passen we het principe “reflecteren en leren” toe, voor het gehele projectteam, dus ook voor de gebruikers. Een project kent diverse terugkoppelcycli (feedback cycles) op verschillende niveaus. Hierbij de feedback cycles in het kader van “building the right thing” op een rij: Een project duurt doorgaans in de orde van maanden. Een project start met een chartering sessie, waarna één of meerdere sprints worden uitgevoerd. De product owner heeft de gelegenheid om tussen 2 sprints de product backlog en project roadmap aan te passen aan nieuwe inzichten of omstandigheden. De product owner zit daarmee gedurende de gehele looptijd van het project in de “driving seat”. Het project sluit af met een retrospective. Een sprint is een fixed time box van 2-4 weken. Een sprint begint met een sprint planningssessie, waarna binnen de sprint één of meerdere user stories worden ontwikkeld en getest. Een sprint eindigt met een sprint review en een sprint retrospective. In elke sprint wordt geteste, productierijpe software opgeleverd. Dit geeft de product owner de mogelijkheid om tussentijds al met een simpele versie in productie te gaan en daarmee al business value te genereren. Een user story is een stukje functionaliteit met business value voor de gebruikers, dat doorgaans binnen één of enkele dagen kan worden ontwikkeld en getest. Een user story wordt opgesplist in één of meerdere ontwikkel- en testtaken. Voordat met de user story wordt begonnen wordt door de ontwikkelaar en tester een intake bij de gebruiker gedaan. Aan het einde vindt de beoordeling van het geleverde resultaat door de tester en gebruiker plaats (sign-off). Elke dag vindt een daily scrum plaats, waarbij het projectteam in een korte standup meeting bij elkaar komt om onderling belangrijke informatie uit te wisselen. Naast de ontwikkelaars zijn ook de gebruikers en testers een actieve deelnemer aan de daily scrum. Het gaat immers om informatie-uitwisseling tussen alle projectleden.
5
LinkiT projects Rijnzathe 9 3454 PV De Meern
Tel 030 - 2650265 Web linkit-projects.nl Twitter @linkitprojects
Kwaliteit binnen Agile
Building the right thing
Chartering Doel van een chartering sessie is om het project een goede start (richting) te geven en commitment van de deelnemers te verkrijgen
Ieder project dat we doen, begint met een chartering sessie. Dit is veel meer dan een standaard kick-off meeting met een praatje van de executive en een gezamenlijk etentje of andere activiteit om elkaar te leren kennen. Een chartering is “hard work”. Doel van een chartering sessie is om het project een goede start (richting) te geven en commitment van de deelnemers te verkrijgen door de volgende zaken duidelijk te maken: Visie, missie statement, (hoofd)doelstellingen van het project Business case Scope (ook explicitiet benoemen hetgeen buiten scope is) Belangrijke constraints en aannames Succesfactoren Project community (deelnemers, met welk commitment, in welke rol, verantwoordelijkheden, bevoegdheden) Afspraken over aanpak, samenwerking, communicatie (intern en extern) Initiële product backlog Initiële project roadmap (of release plan) Een goede chartering sessie zal vaak meerdere dagdelen in beslag nemen. De deelnemers bestaan uit de sponsor, de beslissingsbevoegden van de stakeholders (in termen van Prince2: executive, senior user, senior supplier) en alle uitvoerende projectleden. Het zijn immers de projectleden die het project tot een succes moeten maken! Het meest kritische aan de chartering is het proces zelf. Persoonlijke vetes, big ego’s, “politiek” en dubbele agenda’s kunnen zeer frustrerend werken. Er worden dan ook hoge eisen gesteld aan de facilitator van de chartering sessie.
Missie statement Bij een goed missie statement en heldere project doelstellingen zijn alle te nemen detailbeslissingen veel gemakkelijker te toetsen op de toegevoegde waarde aan het project (business value).
De formulering van een goed missie statement en heldere project doelstellingen wordt vaak onderschat. Gedurende een project worden allerlei beslissingen op allerlei niveaus genomen. Bij een goed missie statement en heldere project doelstellingen zijn alle te nemen detailbeslissingen door gebruikers, ontwikkelaars en testers veel gemakkelijker te toetsen op de toegevoegde waarde aan het project (business value). Daarnaast zijn een goed missiestatement en heldere projectdoelstellingen een zeer belangrijke “motivator” voor de projectleden: iets waarmee de projectleden zich kunnen identificeren, iets waar ze het voor (willen) doen. Door de gebroeders Heath is onderzoek gedaan, waarom bepaalde berichten wel en andere niet aanspreken en beklijven (ofwel SUCCES hebben). Goede berichten hebben de volgende kenmerken gemeen:
Simple: Ze zijn simpel Unexpected: Ze zijn onverwacht (vangen de aandacht) Concrete: Ze zijn concreet Credible: Ze zijn geloofwaardig Emotional: Ze roepen emoties op (enthousiasme, blijdschap, verdriet, …) Story: Ze “vertellen” een kort verhaal De boodschap van J.F. Kennedy in mei 1961 over zijn voorgenomen ruimte programma Apollo voldoet aan al deze kenmerken:
“… achieve the national goal … before this decade is out … bringing a man to the moon and returning him safely to the earth…”
6
LinkiT projects Rijnzathe 9 3454 PV De Meern
Tel 030 - 2650265 Web linkit-projects.nl Twitter @linkitprojects
Kwaliteit binnen Agile
Building the right thing
Product Backlog Dit is een activiteit die we bewust door de business community en ontwikkel- en testteam gezamenlijk laten uitvoeren.
Binnen agile projecten wordt gefocust op opgeleverde waarde (“business value”).
De product backlog bestaat uit alle functionaliteit (in de vorm van user stories) en nonfunctional requirements (in de vorm van constraints), die door de ontwikkelaars moeten worden opgeleverd, door de testers getest en door de gebruikers geaccepteerd. Nadat de product backlog is gecompleteerd worden de user stories en constraints geschat op benodigde capaciteit. Dit is een activiteit die we bewust door de business community en ontwikkel- en testteam gezamenlijk laten uitvoeren. Hierbij leren de business community en developers van elkaar, hetgeen later in het project tot meer onderling begrip zal leiden. De gebruikers leren waarom bepaalde functionaliteit gemakkelijk of juist moeilijk is te ontwikkelen (technische complexiteit). De ontwikkelaars leren beter de waarde van de te bouwen functionaliteit kennen, en wat de functionele complexiteit van de software is.
Project Roadmap
Hierna kan de business community onder leiding van de product owner de user stories en constraints gaan prioriteren. De capaciteit van het ontwikkel- en testteam bepaalt vervolgens hoeveel “story points” per sprint of iteratie kunnen worden opgeleverd. Op basis van de prioriteit, kosten en beschikbare capaciteit worden de user stories en constraints over de iteraties (sprints) verdeeld. Hierbij dient wel rekening gehouden te worden met onderlinge afhankelijkheden. Het zou kunnen, dat de gebruiker het liefst eerst de zeer waardevolle user story A heeft, maar dat deze pas ontwikkeld kan worden, nadat de minder waardevolle user story B of constraint C is ontwikkeld. In de meeste projecten wordt vaak gedurende de projectuitvoering gefocust op de benodigde capaciteit (kosten). Ervan uitgaande, dat we elke sprint of iteratie dezelfde totaal hoeveelheid ontwikkel- en testcapaciteit beschikbaar hebben, zullen de kosten per sprint uitgedrukt in manuren gelijk zijn. In bovenstaand voorbeeld is de hoeveelheid geleverd werk per sprint 3.0 eenheden. Binnen agile projecten wordt gefocust op opgeleverde waarde (“business value”). Aangezien eerst ontwikkeld wordt wat het meest waardevol is voor de gebruiker, zullen we in de eerste sprints meer waarde per sprint opleveren dan in latere sprints. In bovenstaand voorbeeld leveren we in de eerste sprint 4.5 eenheden waarde op, terwijl we in de 6e sprint slechts 1.2 eenheden opleveren (let wel, met dezelfde kosten). Hierdoor heeft de product owner de mogelijkheid om reeds na 4 van de 6 sprints het systeem vervroegd in productie te brengen: immers op dat moment is al meer dan 80% van de totale “business value” volledig getest en gereed voor productie! Sterker, de product owner zou er zelfs voor kunnen kiezen om de overige sprints niet eens meer uit te voeren, indien hij/zij vindt dat het restant te weinig “business value” vertegenwoordigd. Bij de watervalmethode ontbreekt deze mogelijkheid, aangezien in elke fase steeds 100% van de functionaliteit wordt meegenomen.
7
LinkiT projects Rijnzathe 9 3454 PV De Meern
Tel 030 - 2650265 Web linkit-projects.nl Twitter @linkitprojects
Kwaliteit binnen Agile
Building the right thing
Architectural Baseline Voor alle projecten (klein of groot), maar in elk geval voor de grotere projecten, is het van belang om zo snel mogelijk een systeem te hebben, dat volledig “end-to-end” werkt.
De product owner heeft zijn specifieke achtergrond en wensen (bijvoorbeeld front office), waardoor hij bepaalde onderdelen in het systeem zou kunnen overschatten (front office functionaliteit) ten koste van andere functionaliteit (bijvoorbeeld de back office functionaliteit). Daarom heeft de product owner soms enige “hulp” nodig om de project roadmap samen te stellen. Voor alle projecten (klein of groot), maar in elk geval voor de grotere projecten, is het van belang om zo snel mogelijk een systeem te hebben, dat volledig “end-to-end” werkt. Hierbij wordt in de eerste paar iteraties de “main flow” standaard functionaliteit van het systeem ontwikkeld, en in de volgende iteraties pas de excepties of special cases. De voordelen hiervan zijn: Risicobeperking (zo snel mogelijk een “end-to-end” werkend systeem). 80/20 regel: 80% van de standaard transacties worden verwerkt door 20% van de functionaliteit. Dit geeft de zekerheid, dat de product owner na een aantal iteraties een levensvatbaar systeem heeft (het systeem werkt immers “end-to-end”) en dus al snel met een simpele versie in productie kan. Dit geeft een betere focus per iteratie: de eerste 2 of 3 iteraties zijn erop gericht om een eenvoudige versie van het gehele systeem “end-to-end” werkend op te leveren. Daarna kan per iteratie de focus op specifieke onderdelen binnen het systeem komen te liggen. De gebruiker kan meestal veel beter de excepties en special cases bepalen, nadat hij de standaard “main flow” heeft zien werken. Een product owner gebruikte eens de volgende metafoor voor de architectural baseline. Het optuigen van een kerstboom: Eerst wordt de kerstboom opgezet (de standaard functionaliteit) Vervolgens wordt de verlichting aangebracht (standaard “error flows”) Ten slotte wordt de rest van de versiering aangebracht (“special cases” en specifieke “error flows”)
8
LinkiT projects Rijnzathe 9 3454 PV De Meern
Tel 030 - 2650265 Web linkit-projects.nl Twitter @linkitprojects
Kwaliteit binnen Agile
Building the right thing
Persona’s Het is als ontwikkelaar, tester of user proxy gemakkelijker om je in te leven in een (levend) persoon met een naam, een karakter en een achtergrond dan in een abstracte rol.
Om goede user stories te kunnen schrijven, moeten we eerst weten voor wie we het doen. In de standaard software development trajecten wordt meestal gesproken in termen van gebruikersrollen. Gebruikersrollen blijven vaak wat abstract. Het is als ontwikkelaar, tester of user proxy veel gemakkelijker je in te leven in een (levend) persoon met een naam, een karakter en een achtergrond dan in een abstracte rol. Vandaar dat persona’s vaak meer tot de verbeelding spreken, tot betere user stories en daarmee tot betere software leiden. Als de user proxy, ontwikkelaar en tester in de huid van een persona kunnen kruipen, is de kans groot dat de software beter op de uiteindelijke users is afgestemd. Hierbij hebben we niet alleen de functionaliteit voor ogen, maar juist ook de zogenaamde nonfunctional requirements, zoals performance en gebruikersgemak. Door in een korte workshop met het hele projectteam alle persona’s te benoemen en definiëren, neemt de kans aanzienlijk toe, dat de software voor alle toekomstige gebruikers goed zal werken. In de praktijk zien we vaak dat de requirements van de meer “speciale” users, zoals functionele en technische beheerders worden vergeten, of pas in een heel laat stadium aan de orde komen.
Sprint De sprint planning is een activiteit, die we bewust door de business community en ontwikkel- en testteam gezamenlijk laten uitvoeren.
Een sprint (of iteratie) is een fixed timebox van doorgaans 2 tot 4 weken lang. De sprint begint met een sprint planning, waarin de sprint backlog (de binnen de sprint op te leveren user stories en taken per user story) wordt vastgesteld. Ook wordt er een gemeenschappelijke sprint doelstelling (sprint goal) gedefinieerd. Net zoals het definiëren van de product backlog als onderdeel van de chartering is de sprint planning een activiteit, die we bewust door de business community en ontwikkel- en testteam gezamenlijk laten uitvoeren. Hierbij leren de business community en developers van elkaar, hetgeen gedurende de uitvoering van de sprint tot meer onderling begrip zal leiden. De gebruikers leren waarom bepaalde functionaliteit gemakkelijk of juist moeilijk is te ontwikkelen (technische complexiteit). De ontwikkelaars leren beter de waarde van de te bouwen functionaliteit kennen, en wat de functionele complexiteit van de software is. Gedurende de uitvoering van de sprint worden de user stories parallel aan elkaar ontwikkeld. Aan het einde van de sprint wordt een sprint review uitgevoerd, waarin de resultaten van de sprint door de ontwikkelaars worden gepresenteerd aan de gebruikers, testers en andere belangstellenden (zoals de toekomstige gebruikers die niet in het projectteam vertegenwoordigd zijn). Tevens wordt vastgesteld of de resultaten van sprint in lijn zijn met de vooraf bepaalde doelstellingen, ofwel de sprint goal.
9
LinkiT projects Rijnzathe 9 3454 PV De Meern
Tel 030 - 2650265 Web linkit-projects.nl Twitter @linkitprojects
Kwaliteit binnen Agile
Building the right thing
User stories De user story is bedoeld om de communicatie tussen ontwikkelaar, gebruiker en tester op gang te brengen. Het is dus geen verkapt ontwerp document.
Een user story is te beschouwen als een stuk(je) functionaliteit, dat voor de gebruiker waarde (business value) vertegenwoordigd, en dat binnen één sprint getest en productierijp kan worden opgeleverd. Voor user stories gebruiken we een template met de volgende onderdelen: Een korte titel (bijv. “Registreer klant”) is bedoeld als “placeholder”, dat gemakkelijk in gesprekken gebruikt kan worden. De “Description” omvat een verplicht deel, waaruit moet blijken voor wie het is, wat het moet doen en waarom (business value). Omdat sommige gebruikers en user proxies zoals analisten het nu eenmaal niet kunnen laten (of nog moeten leren), geven we ze een beetje vrijheid in de vorm van een optioneel deel (“More…”). Let wel, de hele user story moet wel op 1 A4’tje blijven passen, anders schiet het zijn doel voorbij. Tom Poppendieck, co-auteur van het boek “Lean Software Development” merkte eens op, dat indien de user (proxy) van mening is dat hij onvoldoende ruimte heeft voor het definiëren van de user story op een A4-formaat, we hem kunnen helpen door hem minder (!) ruimte (bijvoorbeeld een A5-formaat) te geven. Ten slotte de definitie van “Done”: dit zijn de acceptatietesten zoals gedefiniëerd door de gebruiker, hierbij vaak geholpen door de tester (die vaak veel meer ervaring heeft bij het formeel beschrijven van testen). De user story is bedoeld om de communicatie tussen ontwikkelaar, gebruiker en tester op gang te brengen. Het is dus geen verkapt ontwerp document, hetgeen we in de praktijk nogal vaak tegenkomen, met name wanneer business of informatie analisten de rol van user proxy op zich nemen. Ontwerpdocumenten vergroten de kans om de communicatie te smoren: immers alles staat er toch in? En we willen juist het tegendeel: de communicatie tussen ontwikkelaar, tester en gebruiker bevorderen.
Voordat de ontwikkelaar met de eerste taak van een user story begint, doet hij samen met de tester een intake met de gebruiker. Sign-off: hierbij toont de ontwikkelaar de ontwikkelde software aan de tester en gebruiker, en stellen ze samen vast of dit voldoet aan de in de user story opgenomen acceptatie testen.
10
Voordat de ontwikkelaar met de eerste taak van een user story begint, doet hij samen met de tester een intake met de gebruiker. Tijdens deze intake worden de details van de beoogde functionaliteit besproken. Als gevolg van de intake is het mogelijk, dat de ontwikkelaar een aantal taken van de user story herplant (immers hij/zij heeft nieuwe informatie verkregen) of nieuwe taken toevoegt. Vervolgens gaat de ontwikkelaar aan de slag met de geplande taken. Hierbij blijft hij in contact met de gebruiker om nieuwe vragen te kunnen stellen, en om tussenresultaten aan de gebruiker te tonen; dit allemaal om op het juiste pad te blijven. Nadat de ontwikkelaar alle taken heeft afgerond, vindt de sign-off plaats. Hierbij toont de ontwikkelaar de ontwikkelde functionaliteit aan de tester en gebruiker, en stellen ze samen vast of dit voldoet aan de in de user story opgenomen acceptatie testen. Alleen het verplichte deel van de “Description” en “Done” zijn formeel genoeg om te gebruiken bij het bepalen of de software gereed is. Het optionele gedeelte van de “Description” mag hiervoor niet worden gebruikt!
LinkiT projects Rijnzathe 9 3454 PV De Meern
Tel 030 - 2650265 Web linkit-projects.nl Twitter @linkitprojects
Kwaliteit binnen Agile
Building the right thing
Daily scrum Het gaat om informatieuitwisseling en commitment tussen de projectteamleden onderling.
De daily scrum is een dagelijkse stand-up meeting, waarin ieder projectlid de volgende vragen beantwoordt: Wat heb je sinds de vorige Daily Scrum gedaan? Wat ga je tot aan de volgende Daily Scrum doen? Welke problemen of obstakels ondervind je? Naast het uitwisselen van informatie is het doel ook: Het zo snel mogelijk aan de oppervlakte krijgen van risico’s (problemen, obstakels) Afleggen van (impliciete) commitments door elk teamlid ten opzichte van zijn of haar collega teamleden; en dus niet ten opzichte van de Scrum Master of (project)manager Bevorderen “bonding” en cohesie in het team Naast de ontwikkel- en testteamleden zijn ook de product owner en gebruikers aanwezig. Zij verrichten immers ook taken binnen het project (zoals schrijven user stories, acceptatietesten en beoordelen van de opgeleverde software) en dienen derhalve dezelfde vragen te beantwoorden. Het is belangrijk dat men zich zo veel mogelijk houdt aan de 3 vragen. Inhoudelijke en/of ontwerpdiscussies moeten worden vermeden (kunnen na afloop in kleiner comité worden gevoerd). Het gaat om het uitwisselen van informatie, waaronder ondervonden problemen. Hierbij moet een ieder zich “veilig” voelen om problemen aan te kaarten en moet de nadruk liggen op het zo snel mogelijk oplossen ervan. Er mag geen “blame game” of “indek gedrag” ontstaan. Ook dienen er geen vragen te worden gesteld en beantwoord, zoals “Hoe lang heb je gebruikt voor of nog nodig voor taak …”. Voorkomen moet worden, dat de meeting verzandt in het schatten en gereedmelden van uren. Voor het schatten en gereedmelden van uren zijn andere simpele processen binnen het agile proces voor handen. De Scrum Master treedt op als facilitator en ziet erop toe, dat de focus op de 3 vragen gericht blijft. Hierbij dient hij of zij de voortgang van de meeting strak te sturen, maar aan de andere kant de teamleden niet het gevoel te geven, dat de meeting “een feestje” voor de Scrum Master of het projectmanagement. Het gaat om informatie-uitwisseling en commitment tussen de projectteamleden onderling.
Volgende afleveringen
In de volgende twee afleveringen gaan we verder in op de kwaliteitsaspecten “building the thing right” en “fitness for change”.
11
LinkiT projects Rijnzathe 9 3454 PV De Meern
Tel 030 - 2650265 Web linkit-projects.nl Twitter @linkitprojects
Kwaliteit binnen Agile
Building the right thing
Paul Meek is managing director van LinkiT projects. Hij heeft meer dan 20 jaren ervaring in de software ontwikkeling in het algemeen en agile software ontwikkeling in het bijzonder. LinkiT projects voert software ontwikkelingsprojecten uit van A tot Z. Hierbij maken we gebruik van agile projectmanagement methoden en ontwikkeltechnieken (Scrum, Lean, XP). Daarmee garanderen we onze klanten, dat in onze projecten snel resultaten kunnen worden getoond en maximale business value wordt opgeleverd. We doen dit al vanaf de oprichting in 2001, en kunnen daarmee worden gezien als een van de pioniers op het gebied van agile software ontwikkeling in Nederland. Projecten voeren wij uit op basis van "time & materials", maar ook op basis van fixed date en/of fixed price. Hierbij maken wij bij voorkeur gebruik van OO-technologieën, zoals Java, .NET en Ruby/RAILS, waarin we ons de afgelopen jaren hebben gespecialiseerd. Uiteraard blijven wij continu op de hoogte van nieuwe ontwikkelingen in de markt. Naast projecten doen wij ook coaching en consultancy op het gebied van agile project management, agile methoden en technieken en software ontwikkeling in het algemeen. We helpen hierbij klanten te transformeren van de meer traditionele methoden naar een agile werkwijze. Tevens geven wij trainingen/workshops, en verzorgen wij presentaties op (internationale) conferenties op het gebied van ag ile projectmanagement en software ontwikkeling. LinkiT projects is onderdeel van de LinkiT enterprise.
12
LinkiT projects Rijnzathe 9 3454 PV De Meern
Tel 030 - 2650265 Web linkit-projects.nl Twitter @linkitprojects
Kwaliteit binnen Agile
Building the right thing
Bijlage: Korte introductie in agile ontwikkelen Agile betekent letterlijk vertaald: wendbaar. In de context van software ontwikkeling kun je agile beschouwen als op een natuurlijke wijze kunnen inspelen op onverwachte omstandigheden, vragen en wijzigingen. In februari 2001 kwamen een aantal guru's op het gebied van software ontwikkeling (met vertegenwoordigers vanuit XP, Scrum, DSDM, FDD, etcetera) samen in Utah om tot een gemeenschappelijke basis te komen voor software ontwikkeling als reactie op de traditionele, "high ceremony", bureaucratische, door documenten gedreven ontwikkelmethodes. Ze kwamen tot een soort van declaratie voor software ontwikkeling met basis principes waaraan agile development methoden voldoen. Voor ons gaat agile ontwikkelen uit van een aantal basis principes, waaronder: Communicatie: rechtstreekse communicatie tussen ontwikkelaar, gebruiker en tester. Business value: lever waarde voor de gebruiker; begin met de functionaliteit die voor de gebruiker de meeste waarde vertegenwoordigt Korte iteraties: lever snel en vaak, maar lever alleen geteste en werkende software Simpel: ontwikkel steeds de simpelste oplossing voor de huidige business requirements Wijzigingen: wees gereed voor wijzigingen in requirements; wijzigingen horen erbij Reflecteren en leren: leer gaandeweg door regelmatige reflectie Voortgang: de enige maat voor de voortgang is geteste en werkende software Sustainable pace: nadruk ligt op snel en vaak leveren, maar dan wel in een tempo dat goed is vol te houden door ontwikkelaars, testers en gebruikers Door deze principes toe te passen (in plaats van een aantal voorafgedefiniëerde methoden, technieken en/of tools) kunnen sneller betere applicaties worden opgeleverd. De gebruiker zit hierbij niet alleen bij de start van het project, maar gedurende de gehele uitvoering van het project in de “driving seat”. Met “beter” wordt hier overigens bedoeld: beter voldoen aan de verwachtingen van de gebruiker en zo snel mogelijk zo veel mogelijk business value genereren. Ontwikkelaars (development community) en gebruikers (business community) werken nauw samen in een agile project. Naast de development en business communities spelen ook de testers een actieve rol in elke fase van het project. Het testen maakt een geïntegreerd deel uit van elke iteratie (of sprint). Immers het is de “belofte” om aan het einde van elke iteratie geteste en productierijpe software op te leveren. Veelal wordt het (functioneel) testen als verlengstuk gezien van de gebruiker: de tester verifieert dat de door developer community ontwikkelde software voldoet aan de requirements van de business community. Testers worden daarmee ook vaak als lid gezien van de business community. Wij vinden het zinvol om een test community te identificeren. Binnen een Agile project zullen de testers niet alleen het werk van de ontwikkelaars verifieren, maar ook veel samenwerken met zowel de gebruikers als de ontwikkelaars. Met tools zoals FitNesse, Cucumber en WatiN kunnen door tester opgestelde testscenario’s gemakkelijk geautomatiseerd worden. Hiermee kunnen deze testen een vast onderdeel gaan vormen van de opgebouwde regressietestset, die door de ontwikkelaars wordt gebruikt en (meerdere keren) per dag wordt gedraaid (bijvoorbeeld na elke build).
13
LinkiT projects Rijnzathe 9 3454 PV De Meern
Tel 030 - 2650265 Web linkit-projects.nl Twitter @linkitprojects
Kwaliteit binnen Agile
Building the right thing
De business community bestaat bij voorkeur uit echte gebruikers, maar kan ook zogenaamde user proxies, zoals business analisten, bevatten. De product owner is onderdeel en meestal “primus inter pares” van de business community. Dit is de persoon, die volledig beslissingsbevoegd – en natuurlijk ook beslissingsbereid – dient te zijn ten aanzien van de te ontwikkelen functionaliteit (scoping, prioritering, etc.). De product owner is de enige eigenaar van de product backlog en project roadmap. De scrum master is de coach van het ontwikkelteam, en faciliteert de samenwerking met de business community en test community. In grotere projecten kan het zinvol zijn deze rol te verdelen tussen 2 personen: de ‘near coach’ richt zich op het ontwikkelteam, en de ‘far coach’ faciliteert de samenwerking met de business en test communities, en neemt vaak het algehele project management op zich.
14
LinkiT projects Rijnzathe 9 3454 PV De Meern
Tel 030 - 2650265 Web linkit-projects.nl Twitter @linkitprojects