Ing. Nyree Lemmens PH.D. IT Business Manager
Agile Software Ontwikkeling
Levert het op wat de klant wil?
Inhoudsopgave Inleiding 1.
De klant is koning?
2.
Het traditioneel ontwikkelmodel is niet meer van deze tijd
3.
Agile samenwerking tussen ontwikkelpartij en klant
4.
Agile heeft verwachtingen van ontwikkelteam en klant
5.
Agile: een projectvoorbeeld
Samenvatting: Agile levert!
Inleiding
“Agile projects succeed three times as often as Waterfall projects.”,
The Standish Group
Maatwerk software levert wat standaardpakketten niet bieden Hoe uitgebreid een aangekocht software pakket ook is, geen enkel pakket biedt precies dat wat een bedrijf nodig heeft; “Het schaap met 5 poten bestaat niet!” Om het functioneel gat op te vullen, en een standaard pakket beter aan te laten sluiten op de bedrijfsprocessen, kiezen bedrijven voor aanvullende `maatwerk’ software oplossingen. Dergelijke projecten worden veelal uitbesteed aan gespecialiseerde leveranciers van maatwerk software. De verwachting van het bedrijf, als klant, is vervolgens dat de leverancier middels analyse en interactie het te leveren maatwerk afstemt op de wensen van de klant. Een typisch en traditioneel model waarbinnen een maatwerk oplossing ontwikkelt wordt bestaat, kort door de bocht, uit de volgende 3 fasen en wordt ook wel het “waterval” model genoemd. 1) Een analyse fase; Binnen de analyse fase wordt bepaald wat de wensen/eisen zijn van de klant (e.g., management, medewerkers) voor de maatwerk oplossing en hoe de oplossing het proces completeert. Als eindproduct wordt heel typisch een wensen/ eisen document opgeleverd wat als input gebruikt wordt voor de volgende fase. 2) Een ontwikkel fase; Op basis van het wensen/eisen document wordt een ontwikkel project gestart. Het bevat ook de inschatting van kosten/baten, kwaliteit vereisten, doorlooptijd e.d. Op basis van de project documentatie wordt vervolgens richting klant en ontwikkel bedrijf regelmatig gerapporteerd over de ontwikkelingsvoortgang en consequenties. 3) Een oplever fase. Wanneer de ontwikkelfase voltooid is en het product voldoet aan het wensen/eisen document start de oplever fase waarin het product uitgerold wordt bij de klant. Een dergelijk traject schijnt op het eerste gezicht heel rationeel en effectief te zijn en precies dat op te leveren wat een klant verwacht. Iedereen tevreden dus? Aan het eind van een ontwikkeltraject precies opleveren wat de klant wil is, bizar genoeg, niet precies wat de klant wil. De praktijk is dat gedurende het ontwikkeltraject de wensen en eisen van de klant veranderen. Binnen het traditionele ontwikkelmodel is er beperkte ruimte voor deze veranderingen. Elke verandering heeft consequenties (e.g., financieel, doorlooptijd) en deze worden zo goed als mogelijk ingeschat. Een inschatting is echter niet meer dan dat: een inschatting. Aan het eind van het project komen zowel klant als leverancier pas achter de daadwerkelijke impact van veranderingen met alle gevolgen van dien.
Doelstelling Zowel klant als leverancier is op zoek naar manieren om deze uitdagingen het hoofd te bieden. Voor beide partijen is het belangrijk dat de methode i) controle oplevert en ii) producten oplevert die voldoen aan de (uiteindelijke) wensen van de klant. Hoe kunnen, naar tevredenheid van zowel klant als bedrijf, maatwerkoplossingen gemaakt worden? En wat wordt dan verwacht van klant en bedrijf?
1. De klant is koning? Leveranciers adverteren scherp en hard met hoe zij de klant tot dienst kunnen zijn en bijgevolg vallen de leveranciers over elkaar heen met aanbiedingen. De klant hoeft maar aan te geven wat ze wil. De ene leverancier kan de oplossing nog sneller, beter, foutlozer en goedkoper aanbieden dan de ander. De klant is koning! 55 procent1,2, van de klanten in Nederland geeft echter aan dat een leverancier `niet altijd haar uiterste best doet’ om klanten te helpen haar problematiek op te lossen. Dat wat leveranciers zien als `wat de klant wil’ is niet `wat de klant wil’ Begrijpt de leverancier ten volle de problematiek van de klant? Alhoewel kosten en tijd besparing zeker aspecten zijn die een klant meeneemt in haar beslissing wie de opdracht te gunnen is betrokkenheid bij het tot stand komen van de oplossing ook zeker belangrijk, alhoewel dit inzicht nooit direct door klanten uitgesproken wordt. Een klant die proactief `in the loop’ gehouden wordt heeft een beter gevoel over en invloed op de voortgang van een project en voelt zich geruster bij het uiteindelijke resultaat van het project. HR- afdelingen in de zorg ontevreden • Software niet gebruiksvriendelijk • Interfaces met andere systemen • Veel bugs bij oplevering • Onvolledige ondersteuning na implementatie Doet het product wat de klant wil? Ook bij oplevering? Tijdens de analyse fase bepaalt het bedrijf welke wensen en eisen er voor een product bestaan. Aan de hand van deze wensen en eisen ontwikkelt het bedrijf het product. Aan het eind van het ontwikkeltraject levert het bedrijf het product op en gaat er daarmee vanuit dat de wensen en eisen van de klant ingewilligd zijn. Echter is dat in veel gevallen niet zo. Ook de klant ontwikkelt zich gedurende het ontwikkeltraject De wensen en eisen van de klant wijzigen in veel gevallen. Vaak komen veel wensen en eisen zelfs pas bovendrijven als de klant met het uiteindelijk opgeleverde product gaat werken. Het traditionele ontwikkel model biedt dus een gebrekkige interactie gedurende de ontwikkeling. De strikte ontwikkeling op het starre wensen/ eisen document en daaraan gerelateerde testen leveren niet dat wat door de (ontwikkelende) klant gewenst is. Problemen rondom pakketten in de zorg Bij selectie: • Tegenstrijdige belangen tussen afdelingen • Moeilijk te becijferen baten • Beperkte financiële middelen. Bij aanschaf: • Vrees voor een langdurig implementatietraject • `Gebrekkig intern projectmanagement’. Bij invoering: • Cultuur van eigen organisatie zorgt voor weerstand • Onwil om werkprocessen aan te passen. Service heeft toegevoegde waarde! Na oplevering van het product is de taak van de leverancier volbracht. De klant betaalt de factuur en iedereen leeft nog lang en gelukkig. Toch?! Neen! Zelfs al is een klant tevreden over het opgeleverde resultaat, dat betekent nog niet automatisch dat de klant ook al weet hoe het resultaat te benutten. De klant heeft behoefte aan service! 1 2
“Het Nationale Klantbelevingsonderzoek 2012”, http://bit.ly/12dPAhu “Koning klant is fabeltje”, http://bit.ly/15fFjVp
2. Het traditioneel ontwikkelmodel is niet meer van deze tijd In een traditioneel, zogenaamd “waterval”, ontwikkelproject wordt voortgang gezien als een gestage, afdalende flow door 7 verschillende project fases, als in een waterval. 1) Analyse 2) Ontwerp 3) Ontwikkeling 4) Integratie 5) Testen/Debugging 6) Productie/Installatie 7) Beheer Idealiter wordt iedere volgende fase pas gestart worden wanneer de voorgaande fase, succesvol, afgesloten is. Het ontwikkelmodel komt van origine uit de fabrieks- en bouwwereld waarin het kostbaar is om veranderingen door te voeren op een eenmaal vervaardigde producten. Binnen software ontwikkeling is dit model eenvoudigweg overgenomen omdat er bij de opkomst van software ontwikkeling geen ander model bestond. Nadruk op, op voorhand, goede documentatie Het idee achter het “waterval” model is dat het loont om in een vroeg stadium uitdagingen te identificeren (e.g., middels de analyse) en af te handelen (i.e., middels het ontwerp). Het is eenvoudiger om een twijfelachtig ontwerp voor de ontwikkelfase te optimaliseren dan, op basis van het twijfelachtig design, componenten te ontwikkelen en deze niet blijken samen te werken. Achteraf deze componenten aanpassen aan een nieuw design is kostbaar en in veel gevallen zelfs onmogelijk. Het afhandelen van uitdagingen in een vroeg stadium bespaart dus kosten, tijd, en effort. Een dergelijk model verwacht dat alle keuzes en beslissingen perfect gedocumenteerd worden. Dientengevolge reduceert een bedrijf ook het risico op kennis verlies, door bijvoorbeeld ontwikkelteam veranderingen. De kwaliteiten van het “waterval” model zijn tevens haar zwakke punten Hoe eenvoudig is het om perfecte documentatie op te leveren? Klanten kunnen in veel gevallen niet, op voorhand, inschatten waaraan een product uiteindelijk moet voldoen. Die inschatting kan de klant vaak pas maken wanneer het eerste prototype opgeleverd wordt. Zonder prototype hebben de wensen/eisen van de klant vaak een ad-hoc aard. Dit stelt de analist voor de onmogelijke opgave om alle mogelijke scenario’s te voorspellen. Hoe perfect is de documentatie dus aan het eind? Het “waterval” model is niet, in alle fasen, robuust tegen veranderingen. Het “waterval” model heeft moeilijkheden met `scope creep’ en inschatten van financiële gevolgen Het moment waarop klanten veranderingen in wensen en eisen aangeven (zogenaamde `scope creep’) heeft een grote invloed op de voortgang van het project. Wanneer veranderingen in of gedurende de ontwerp fase worden aangegeven beperken de problemen zich veelal. Het resultaat zal vooral de doorlooptijd van het project beïnvloeden. Wanneer veranderingen zich aandienen nadat het ontwerp gecompleteerd is en/of de ontwikkelfase gestart of gepasseerd is, zijn de consequenties grootschaliger. In het ergste geval zal er een nieuw ontwerp gemaakt moeten worden en zullen eventueel al gemaakte producten in de prullenbak verdwijnen. Daardoor zijn de financiële gevolgen, doorlooptijd en oplevertermijn moeilijk in te schatten.
3. Agile samenwerking tussen ontwikkelpartij en klant Het “waterval” model lijkt op het eerste gezicht de communicatie tussen leverancier en klant ten goede te komen. Beide moeten op voorhand goed met elkaar communiceren om het project een succes te laten worden. Toch is, zoals al eerder genoemd, de praktijk dat deze samenwerking vaak niet tot de gewenste resultaten leidt. Gerichte klant feedback kan pas geleverd worden in de latere fasen, wanneer feedback niet meer eenvoudig verwerkt kan worden. Het Agile model verzacht de problematiek. Het Agile model maximaliseert de samenwerking en leermomenten tussen klant en leverancier Het Agile model bestaat typisch uit 6 onderdelen. • Planning • Analyse • Ontwerp • Ontwikkeling • Unit testen • Acceptatie Een Agile uitgevoerd project bestaat uit kleine iteraties met elk minimale planning, variabele wensen/eisen maar met vastgestelde tijdsduur en/of duidelijk einddoel. Om het einddoel te bereiken kunnen meerdere iteraties noodzakelijk zijn. Elke iteratie bestaat uit bovenstaande onderdelen. In tegenstelling tot het waterval model worden deze onderdelen niet in sequentie afgehandeld maar in parallel door de leden in een Agile team. Aan het eind van elke iteratie wordt een werkend (prototype) product opgeleverd. Op basis van dit prototype kan bepaald worden of een bepaald doel bereikt is, voldoet aan de wensen/eisen van de klant, en er eventueel aanpassingen uitgevoerd moeten worden. I.e., het is een `Inspect-and-adapt’ model en de voordelen zijn redelijk eenvoudig te zien. Ruwe vergelijking Traditioneel (e.g., Waterval)
Agile
Uitgebreide, allesomvattende wensen/eisen
Workshop wensen/eisen per functionaliteit
Complexe status rapporten
Regelmatige “Taken-bord” discussie
Uitgebreide project totaalplannen
Bepaling wat juist is voor het project per iteratie
Change Management comité
Team verantwoordelijkheid
De belangrijkste lessen die over software geleerd kunnen worden komen van klanten De klant kan in veel gevallen pas gericht wensen/eisen benoemen wanneer er meer bekend is over de implementatie van het product. Dit is zowel voor klanten als ontwikkelteam voordelig. De grootste lessen die geleerd kunnen worden komen namelijk uit het gebruik door en de functionaliteit van het product voor de klant. Binnen het Agile model wordt het project opgebroken in afzonderlijke functionaliteiten. Elk van deze functionaliteiten worden vervolgens, middels iteraties, in sequentie ontwikkeld. In essentie betekent dit dus dat er meerdere malen tijdens het project analyse wordt verricht, een design gecreëerd, en een prototype ontwikkelt, getest, geëvalueerd en aangepast. Een directe consequentie is dus dat er veelvoudig contact is tussen klant en ontwikkelpartij. Waarde voor klanten en project controle is hoofdzaak Door het veelvuldige contact tussen klant en ontwikkelteam is het voor beide partijen duidelijk wat de status is van het project, het product, prioriteit van de eigenschappen, en alle financiële consequenties. Met deze informatie kan ook makkelijk gestuurd worden op resultaat en veranderingen binnen de klant organisatie. Project veranderingen (e.g., prioritering, team) hebben een minder grote impact Veranderingen gedurende het project, of dat nu prioriteringsveranderingen of team veranderingen betreft, hebben minder grote impact. Door de veelvuldige communicatie en nauwgezette samenwerking binnen een ontwikkelteam wordt het ontwikkeltraject robuuster tegen dit soort veranderingen.
4. Agile heeft verwachtingen van ontwikkelteam en klant Agile is een mindset en cultuur3. Het is niet een set van best-practices, processen en tools. Agile is niet het hebben van een `test’ team! Agile is het hebben van een `feature’ team! I.e., een team dat de capaciteiten heeft voor analyse én ontwerp én software ontwikkeling én testen. Er is binnen Agile geen plaats voor jouw taak en mijn taak. Er is alleen plaats voor onze taak! Iedereen binnen een team (incl. de klant) brengt eigen kwaliteiten mee. Teams zijn multifunctioneel, zelf-organiserend, en hebben geen relatie tot bedrijfshiërarchie Een team bestaat heel typisch uit 5-9 mensen met daarin tenminste de volgende rollen: 1) Klant vertegenwoordiger Handelt in naam van de klant en heeft een persoonlijke commitment om beschikbaar te zijn voor ontwikkelaars om tijdens iteraties vragen te beantwoorden. 2) Analist Analyseert de wensen en eisen van de klant. 3) Architect Verwerkt de wensen en eisen in een ontwerp. 4) Ontwikkelaar Ontwikkelt aan de hand van het ontwerp. 5) Tester Stelt testplannen op en test ontwikkelde onderdelen aan de hand van deze plannen. Bovengenoemde rollen kunnen door meerdere mensen vervuld worden binnen een project. De stakeholders van een project zijn alle projectdeelnemers met bovengenoemde rollen plus de klant zelf. Zonder communicatie geen samenwerking Traditionele waterval gedragingen verschuilen zich vaak achter het Agile jargon. I.e., ontwikkelaars hebben hun traditionele waterval technieken, door jaren ervaring, geoptimaliseerd voor hun job. Deze optimalisaties zorgen ervoor dat de ontwikkelaars efficiënt zijn in hun huidige methode, maar deze optimalisaties ondermijnen het Agile model. Agile: via teamwerk en goede communicatie, werkende, nuttige software opleveren Meer communicatie betekent niet automatisch efficiënter en/of beter; er moet op een gestructureerde manier gecommuniceerd worden. Binnen Agile wordt op routinebasis gecommuniceerd. Daarbij heeft communicatie-in-persoon de voorkeur. De communicatie bevat, buiten het ontwikkelteam, tenminste de klant vertegenwoordiger en eventueel elke andere stakeholder die geïnteresseerd is. In de korte, maximaal 15 minuten durende, communicatie sessie, een zogenaamde stand-up, vertellen de teamleden elkaar: 1) De mijlpalen van de vorige dag; 2) De mijlpaal voor de huidige dag; 3) De “drempels” waar tegenaan gelopen wordt. De stand-up vindt elke dag plaats op dezelfde locatie, op hetzelfde tijdstip.
3
Er moet opgelet worden dat een bedrijf dat zegt `Agile’ te ontwikkelen niet alleen in naam `Agile’ ontwikkeld.
Agile valkuilen waar leveranciers in kunnen trappen Door de toename in communicatie ontstaat snel het gevoel dat documenteren minder noodzakelijk is. Sommige leveranciers zullen het `Agile manifesto’4 zelfs zo interpreteren dat documenteren vervangen is door communicatie. Deze houding is gevaarlijk; er wordt van uitgegaan dat alle stakeholders in staat zijn al het besprokene, alle besluiten, en alle details van het opgeleverde te onthouden. In de praktijk is het zo dat veel stakeholders moeite hebben met het onthouden van inhoud. Bovendien vermindert het enkel oraal communiceren de robuustheid tegen veranderingen. Het is echter wel zo dat het team enkel documenteert wat noodzakelijk is. Bijvoorbeeld, een team zal pas een architectuur document opstellen nadat de architectuur gecodeerd en getest is. Het team werkt allereerst met een ruwe schets van de architectuur. Bedrijven die Agile ontwikkelen moeten ook hoeden voor het gebruik van waterval fasering (i.e., wachten tot iets compleet, “perfect” voltooid is). Software engineering, (eventueel) hardware engineering en requirement engineering gebeuren parallel binnen Agile, niet serieel. Requirement engineering zal wel altijd kort voorop moeten blijven lopen op de anderen. Ook moeten ontwikkelteams in overleg met de klant bepalen binnen welke tijd een iteratie als voltooid beschouwd mag worden.
4
Manifesto for Agile Software Development, http://agilemanifesto.org/
4. Agile: een project voorbeeld Een Agile project bestaat uit iteraties die door een team ingeschat, ingepland en georganiseerd worden. Iteratie duur is constant en is overeengekomen met klant. Typisch is de duur gemiddeld 1 of 2 weken. Het product van elke iteratie is werkende software die besproken kan worden. Gedurende de eerste paar iteraties kan de software draaien op een test omgeving. De regelmaat van oplevering stelt het team in staat een meetbare ontwikkelsnelheid, zogenaamde `effort’, te laten behalen. `Effort’ wordt uitgedrukt in punten. `Effort’ kan gebruikt worden om het ontwikkel plan en het voortgangsproces te kalibreren ten behoeve van management data. Bijvoorbeeld, als een team ongeveer 20 punten per iteratie completeert en er zijn 200 punten in het proces, dan zal ontwikkeling ongeveer 10 iteraties kosten. Als het plan nog maar 8 iteraties toelaat, dan zal management moeten ingrijpen. Belangrijk is echter dat het laatste uur nog niet geslagen heeft en dat het niet te laat is om additionele mensen toe te voegen, de deadline te verschuiven, of functionaliteit te verplaatsen.
Wensen/eisen worden opgebroken in kleine, inschatbare, testbare en opleverbare eenheden, zogenaamde `stories’. Ze zijn klein genoeg (in `effort’) om binnen een enkele iteratie afgemaakt te worden. Wanneer ontwikkelaars een `story’ opleveren krijgt de klant zicht- en voelbare feedback op de requirements. Gedurende de eerste iteraties kan de feedback de vorm hebben van een test of simulatie en zullen de features een `high-value/high-risk’ waarde hebben. De feedback helpt zowel de klant als de ontwikkelaars om de risico’s op product of architectuur fouten te verminderen. De feedback die de ontwikkelaars op hun beurt van de klanten ontvangen geven hen de nodige input voor het verbeteren van het design, de requirements, en de veranderde prioriteiten. Het is essentieel dat code robuust gebouwd is. Ook na oplevering is de kans groot dat het design en code zal blijven veranderen. Geautomatiseerde tests garanderen dat bestaande functionaliteit blijft bestaan terwijl nieuwe features toegevoegd worden.
Samenvatting: Agile levert! De snelheid van de markt dicteert dat ook de organisaties en wensen van klanten snel evolueren. Dit heeft vergaande consequenties voor maatwerk software projecten. Waar voorheen het “waterval” ontwikkelmodel (i.e., op voorhand specificeren, daarna ontwikkelen, daarna opleveren) een grote kans van slagen had, voldoet dit traditionele model, voor software ontwikkeling, in de tegenwoordige wereld niet meer. I.e., tegen de tijd dat een product opgeleverd wordt, zijn de wensen en eisen van de klant ook verder ontwikkeld. Daardoor voldoet het uiteindelijk opgeleverde product niet meer. Om deze uitdaging het hoofd te bieden hebben ontwikkelteams de wens om klanten bij de ontwikkeling van het product te betrekken. Tegelijkertijd heeft dat tot effect dat klanten meer tevreden zijn met de leverancier. De opvolger van het traditionele model is het `Agile Ontwikkeling’ model. Het model levert die eigenschappen die in de huidige markt gevraagd worden (e.g., betrokkenheid, markt snelheid, doeltreffendheid). Meer nog, het levert deze voordelen gedurende het ontwikkelproces terwijl het product zich blijft door ontwikkelen. I.e., bèta’s kunnen in een vroeg stadium geëvalueerd worden. Agile verwacht veranderingen! In plaats van een specificatie bevriezing, bevriest Agile de ontwikkeltijd. Binnen deze, met de klant overeengekomen, ontwikkeltijd mogen zaken veranderen. Kleine ontwikkeliteraties maken het makkelijker om problemen op te sporen en daarop te reageren. Risico is dus makkelijker te managen. Agile verwacht actieve medewerking van de klant Van de klant wordt verwacht dat deze proactief meedenkt, prioriteert en rationeel kan inschatten wat de consequenties van veranderingen zijn, zoals bijvoorbeeld doorlooptijd effecten en effort. I.e., als er veel veranderingen zijn dan zal niet alles binnen de overeengekomen ontwikkeltijd ontwikkeld kunnen worden. Binnen een project moet een ontwikkelteam samen met de klant goed afwegen of een scope verandering de extra ontwikkeltijd en investering waard is.
Agile biedt controle, accuratere voorspellingen, en doeltreffendheid
KEMBIT betrekt de klant nauw bij het ontwikkeltraject. Hierdoor is de voortgang duidelijk zichtbaar voor alle stakeholders. Dit heeft als additioneel voordeel dat verwachtingen van beide kanten gemanaged zijn. De klant weet wat er geleverd wordt, heeft zekerheid dat het product aansluit bij de huidige organisatie, en kennis van de wijze hoe het ontwikkelteam tot dat resultaat gekomen is. Daarbovenop weet het KEMBIT dat het product dat opgeleverd wordt voldoet aan de kwaliteit verwachtingen van de klant.
Make your IT agile Over KEMBIT Andere tijden vragen om een andere benadering. Informatie Technologie moet u niet binden, maar moet juist meebewegen met die veranderingen. KEMBIT anticipeert op marktontwikkelingen en zet uw IT vraagstukken om in kansen voor uw business. Onze aanpak is erop gericht uw organisatie met behulp van onze IT expertise optimaal te laten presteren, nu en in de toekomst. Mede door de sterke focus op de inhoudelijke en persoonlijke ontwikkeling van onze circa 100 medewerkers, levert KEMBIT al sinds 1996 hoogwaardige IT-professionals en IT-oplossingen. Onze kennis en kunde zetten wij in voor een breed spectrum van organisaties, variërend van lokale MKB bedrijven tot grote landelijk opererende bedrijven en multinationals. De organisatie opereert vanuit drie locaties te weten, Kasteel Wijnandsrade, Chemelot Campus in Geleen en de High Tech Campus in Eindhoven. Onze vier disciplines IT Services IT Development IT Consultancy IT Knowledge Center Meer weten? Discussiëren over dit E-book? Neem contact met ons op via onderstaande gegevens of ga naar onze website.
KEMBIT Kasteel Wijnandsrade KEMBIT High Tech Campus KEMBIT Chemelot Campus T: +31 (0) 45 - 524 10 21 E:
[email protected] W: www.kembit.nl