Softwareontwikkeling was tot voor kort een vrij traag proces, uitgevoerd volgens een strak, vooraf bepaald stappenplan. Tegenwoordig werken steeds meer organisaties met een agile methode om software te laten maken. Maar wat is agile softwareontwikkeling eigenlijk en wat zijn de belangrijkste verschillen ten opzichte van de traditionele methoden?
Wat is agile softwareontwikkeling?
Het Engelse begrip agile (uitspraak: èdjaail, met de klemtoon op de è) laat zich nog het beste vertalen als vlug en flexibel. De term agile software development is bedacht in februari 2001, toen een groep softwareontwikkelaars bijeenkwam in Utah. Zij waren op zoek naar een alternatief voor de gangbare manier van softwareontwikkeling, die zich kenmerkte door een log, bureaucratisch en met documentatie overladen werkproces. Die werkwijze voldeed niet meer in een softwarewereld die continu veranderde.
In plaats van vastomlijnde, tijdrovende processen streefden de ontwikkelaars naar een werkwijze die meer vaart in het traject bracht. Een methode die daadwerkelijk de behoeften van de klant centraal stelde en die voortdurend inspeelde op de wijzigingen die zich voordeden tijdens het ontwikkelproces. Kortom: een manier van werken die nog altijd zeer professioneel was, maar ook veel flexibeler, minder tijdrovend en daardoor een stuk klantvriendelijker.
Bij het opstellen van deze nieuwe uitgangspunten werd ook input gehaald uit bestaande ontwikkelmethoden zoals Extreme Programming, SCRUM, DSDM Adaptive Software Development, Crystal, Feature-Driven Development, en Pragmatic Programming. De groep ontwikkelaars, die zich de Agile Allegiance noemden, bestond dan ook uit een groep afgevaardigde van deze verschillende ontwikkelmethodes.
De Agile Allegiance formuleerde daarop vier kernwaarden en twaalf onderliggende principes die samen de blauwdruk voor de agile softwareontwikkelmethode vormden: het Agile Manifesto.
Agile Manifesto
Het Agile Manifesto beschrijft vier kernwaarden die aangeven hoe de visie op het softwareontwikkelproces verandert:
- Liever aandacht voor het individu en interactie dan voor processen en tools;
- Werkende software krijgt voorrang boven uitgebreide documentatie;
- Samenwerking met de klant is belangrijker dan onderhandelen over het contract;
- Inspelen op veranderingen is beter dan vasthouden aan een vooropgezet plan.
Principes van agile softwareontwikkeling
De vier kernwaarden in het Agile Manifesto zijn gebaseerd op 12 principes:
- Verbeter de klanttevredenheid door snel en voortdurend bruikbare software te leveren.
- Verwelkom veranderingen in de wensen van de klant, ook als ze in een laat stadium naar voren komen.
- Lever eens in de paar weken nieuwe, goed werkende software.
- Laat de softwareontwikkelaars dagelijks samenwerken met de mensen die de business goed kennen.
- Laat projecten uitvoeren door gemotiveerde personen, maak beschikbaar wat zij nodig hebben en vertrouw op hun expertise.
- Deel informatie binnen (en met) het ontwikkelteam door te praten.
- Het opleveren van werkende software bepaalt de mate van vooruitgang.
- Het agile werkproces zorgt voor een continue ontwikkelstroom, zowel voor de opdrachtgever en ontwikkelaar als voor de gebruiker.
- Een hoge technische kwaliteit en een goed ontwerp zijn belangrijk voor het agile werkproces en krijgen daarom steeds de volle aandacht.
- Houd het proces zo eenvoudig mogelijk. Hoe minder extra werk, hoe beter.
- Zelfsturende teams brengen de beste architecturen, eisen en ontwerpen voort.
- De teams onderzoeken regelmatig of en hoe het ontwikkelproces beter kan en passen daarop hun werkwijze aan.
Leuk natuurlijk, al die principes, maar hoe vertaalt dit zich in de praktijk?
Agile softwareontwikkeling in de praktijk
Bij agile softwareontwikkeling wordt het ontwikkelproces opgedeeld in meerdere korte periodes. Tijdens deze zogenaamde ‘iteraties’, die meestal een week of twee tot vier duren, wordt een nieuw prototype ontwikkeld, opgeleverd en getest. Na het testen kunnen eventuele aanpassingen direct worden verwerkt in het volgende prototype. Zo kan er snel worden bijgestuurd als dat nodig is en wordt het product continue verbeterd.
Bij Agile softwareontwikkeling ligt de focus dus niet op een van te voren gedefinieerd eindproduct, maar op het creëren van een product dat gaandeweg wordt geperfectioneerd. Tijdens dit werkproces zijn een paar dingen belangrijk:
- Het werk wordt uitgevoerd door kleine, multidisciplinaire teams van ervaren en gedreven ontwikkelaars.
- Rechtstreekse communicatie is essentieel om de vaart in het project te houden. De softwareontwikkelingsteams werken daarom bij voorkeur op één en dezelfde locatie.
- Agile werken lukt alleen in een relatief platte organisatiestructuur. De ontwikkelteams zijn in principe zelfsturend en vormen met elkaar een netwerk dat de wensen van de klant als gemeenschappelijk doel heeft. Dit proces stagneert in een organisatie die een sterke hiërarchie kent.
Agile versus traditionele ontwikkelmethoden
Tegenover de agile ontwikkelmethoden staan de traditionele werkwijzen die vasthouden aan een gedetailleerde planning. De watervalmethode, met modellen als SDM, Jackson System Development en Bottom Up, is daar de bekendste van. Hierbij wordt de voortgang van het ontwikkelproces niet gemeten aan de hand van tussentijdse opleveringen, maar aan de hand van een vaststaand stappenplan.
Bij de traditionele ontwikkelingsmethoden ligt de focus vooral op het beoogde eindproduct: ‘wij maken wat u bestelt, en u koopt het eindproduct zoals afgesproken’. Die mindset is nogal naar binnen gericht. Een agile methode zet juist de (fluctuerende) wens van de opdrachtgever centraal: ‘wij maken wat u nodig heeft, ook als dat beeld gaandeweg verandert’.
Welke voordelen heeft de agile methode?
Een van de grootste voordelen van de agile softwareontwikkelmethode is de flexibiliteit. Door de korte iteraties kan er snel worden ingespeeld op veranderingen. Bijvoorbeeld als de klant ineens met een aanvullende wens komt of als tijdens de testfase van het prototype blijkt dat er iets niet werkt.
Een ander voordeel is snelheid. Bij een agile werkmethode wordt gebruik gemaakt van zelfsturende teams en een plattere organisatiestructuur. Dat vermindert de mate van bureaucratie, wat weer veel extra werk en dus tijd scheelt.
Agile softwareontwikkeling heeft bovendien de positieve ervaring van de klant als hoogste doel. Bij een agile werkwijze wordt het product gedurende het traject voortdurend hierop aangepast. Daardoor is er vrijwel nooit sprake van een teleurstellend eindproduct en/of een ontevreden opdrachtgever.
Zitten er ook nadelen aan de agile methode?
Het is heus niet alleen maar goud wat er blinkt als het gaat om agile softwareontwikkeling. Zoals bij alle ontwikkelingsmethoden, kleven er ook aan agile minpunten:
- Juist omdat er tijdens het ontwikkelproces zoveel kan veranderen, is een vaste opleverdatum niet goed te voorspellen. Dat geldt ook voor de uiteindelijke prijs. Dat is soms lastig voor de klant, maar ook als ontwikkelaar moet je met deze onzekerheden kunnen omgaan.
- Tijdens het agile softwareontwikkelingsproces wordt er regelmatig software opgeleverd. Dat betekent ook dat er veel getest moet worden. Er zijn dus meer testers nodig dan bij een traditionele ontwikkelingsmethode.
- De gebruikers worden intensief betrokken bij het ontwikkelingsproces. Zij zijn er dus ook meer tijd aan kwijt, en dat moet maar net passen in hun schema. Werken de gebruikers niet mee, dan stagneert het agile ontwikkelingsproces.
Wanneer is de agile-methode geschikt?
Een agile software-ontwikkelmethode is niet altijd de beste oplossing. Het is namelijk niet zomaar een kwestie van zelfsturende teams samenstellen. Voor het langetermijnsucces van interne agile teams moet de hele organisatie de agile werkwijze omarmen. Heerst er een strakke top-down-hiërarchie binnen het bedrijf, dan zal een agile ontwikkelingsteam er waarschijnlijk niet in slagen om snel, flexibel en via korte lijnen te werken. Maar er zijn meer factoren die bepalen of agile softwareontwikkeling de juiste keuze is.
Agile softwareontwikkeling is een prima optie als:
- De klant (nog) niet precies weet wat hij wil, waardoor het wensen-/eisenlijstje steeds wordt bijgesteld;
- Er snel resultaten geboekt moeten worden;
- Het ontwikkelteam goed kan omgaan met de veranderingen die tijdens het ontwikkelproces naar voren komen;
- De klant bereid en beschikbaar is om tijdens het ontwikkelproces mee te denken en de tussentijds opgeleverde software te testen.
Je kiest liever voor een traditionele, voorschrijvende ontwikkelmethode als:
- De klant vaststaande, specifieke wensen heeft waarbij het einddoel duidelijk omschreven is;
- De klant niet in de gelegenheid of bereid is om tijdens het ontwikkelproces input te geven;
- De bedrijfscultuur niet gebaat is bij een agile werkmethode of als die niet flexibel genoeg is om op een agile manier te werken (bijvoorbeeld bij overheidsinstellingen);
- Het ontwikkelteam niet gemotiveerd is om een andere aanpak te omarmen/aan te leren;
- Het ontwikkelteam vooral bestaat uit jonge en/of minder ervaren ontwikkelaars die niet gewend zijn om te werken met de agile ontwikkelmethode.
Ook de omvang van het project speelt een rol. Een klassieke watervalmethode is bijvoorbeeld een slimmere keuze als het gaat om een klein project waarbij het einddoel vrijwel volledig bepaald is. Gaat het om een grotere opdracht, dan zal er vooraf minder vastliggen en heeft agile softwareontwikkeling juist weer de voorkeur.
De verschillende agile softwareontwikkelmethoden
Agile softwareontwikkeling is een overkoepelende term voor een aantal verschillende ontwikkelmethoden. Scrum valt daaronder, net als Kanban, DSDSM (dynamic systems development method), Extreme Programming (XP) en Lean software development. In feite zijn alle ontwikkelmethoden die openstaan voor veranderingen en aanpassingen tijdens het ontwikkelproces agile te noemen.
Ook bij Web Whales werken we op een agile manier. Het ontwikkelen van webapplicaties doen we bijvoorbeeld volledig of grotendeels op basis van Scrum. De doorlooptijd is snel: na sprints van twee weken staat er al een nieuwe demo klaar om getest te worden. De product owner wordt intensief bij dit project betrokken en krijgt alle gelegenheid om mee te denken en bij te sturen. Bij grotere projecten stellen we zelfs vaak een persoonlijk ontwikkelteam samen. Op die manier zijn onze klanten altijd verzekerd van het beste resultaat.
Lees ook: Softwareonwikkeling met de Scrum-methodeWil je meer weten over onze agile softwareontwikkelmethode? Of wil je weten wat jouw webapplicatie kost? Neem vrijblijvend contact op, we vertellen je graag alles!