Kwaliteitsproducten en -diensten met Scrum

05-02-2013 10:22 | Door Ben Linders | Lees meer artikelen over: IT-auditing, Testing, Agile, Scrum | Er zijn 20 reacties op dit artikel | Dit artikel heeft nog geen cijfer (te weinig beoordelingen) | Permalink
Computable Expert
Ben Linders
Ben Linders

Senior Consultant

Expert van Computable voor de topics: Management en BPM

Meer

Steeds meer organisaties passen Agile toe om softwareproducten en -diensten te ontwikkelen. Redenen die genoemd worden om Scrum te gebruiken zijn: flexibel inspelen op wensen van de klant, sneller ontwikkelen, en hogere software kwaliteit. Over flexibiliteit en snelheid is al veel geschreven, dit artikel vertelt wat Scrum voor de kwaliteit van producten en diensten kan doen en beschrijft de Agile kwaliteitstechnieken die daarbij gebruikt worden.

Even vooraf: Agile is geen silver bullit voor kwaliteit, er bestaat geen specifieke Agile kwaliteitsaanpak en Agile pretendeert ook niet dat het alle kwaliteitsproblemen kan oplossen. Maar een Agile werkwijze, bijvoorbeeld met Scrum kan zeker bijdragen aan een hogere kwaliteit. Laten we eens kijken hoe dat dat mogelijk is.

Wat is Kwaliteit?

Om te beginnen, mijn definitie van kwaliteit: Kwaliteit is de mate waarin voldaan wordt aan de behoeften van de gebruikers, en aan de eisen van de opdrachtgevers. Dat kunnen zowel functionele behoeften zijn (iets wat het product of dienst moet doen), of “performance”of niet-functionele eisen (hoe snel, hoe veel, de betrouwbaarheid, etc), vaak is het een combinatie van beide. De gebruikers zijn diegenen die met het product of dienst iets doen en er voordeel aan hebben. De opdrachtgever is de eindverantwoordelijke die beslist heeft dat het product of de dienst ontwikkelt moest worden en die de middelen (geld, mensen, etc) beschikbaar heeft gesteld.

Met bovenstaande definitie wordt de kwaliteit van een softwareproduct of -dienst dus duidelijk bepaald door de gebruikers en opdrachtgevers, en niet door het Scrum team. Scrum teams kunnen m.i. alleen kwaliteit leveren als ze de behoeften van de gebruikers kennen en een daarbij passende oplossing leveren.

Agile waarden

Het belang van kwaliteit wordt door de waarden waar Agile op gebaseerd is onderstreept. Het agile manifest beschrijft de waarden:

Manifest voor Agile Software Ontwikkeling
'Wij laten zien dat er betere manieren zijn om software te ontwikkelen door in de praktijk aan te tonen dat dit werkt en door anderen ermee te helpen. Daarom verkiezen we
Mensen en hun onderlinge interactie boven processen and tools
Werkende software boven allesomvattende documentatie
Samenwerking met de klant boven contractonderhandelingen
Inspelen op verandering boven het volgen van een plan
Hoewel wij waardering hebben voor al hetgeen aan de rechterkant staat vermeld, hechten wij méér waarde aan wat aan de linkerzijde wordt genoemd.'

Mijn mening is dat de Agile waarden de levering van kwaliteitssoftware ondersteunen. Bijvoorbeeld door 'werkende software boven allesomvattende documentatie', wat het belang aangeeft van het leveren van producten aan gebruikers. Agile moedigt aan om vroeg en vaak te leveren, waardoor gebruikers de software kunnen gaan gebruiken en die voor hun waarde oplevert, kwaliteit dus. Ook 'inspelen op verandering boven het volgen van een plan' resulteert in hogere kwaliteit omdat het Agile-teams aanmoedigt om software aan te passen die niet aan de behoeften van de gebruiker voldoet. 

Vaker en tijdiger actie ondernemen

Agile verschilt met 'traditionele' kwaliteitssystemen die de nadruk leggen op het borgen van de kwaliteit met documenten. Die systemen hanteren veelal een waterval aanpak met milestones waarop documenten formeel geïnspecteerd en goedgekeurd moeten worden. Ze kennen kwaliteitsdoelen, rapportages en audits, en geven veel aandacht aan het testen van producten. Maar de kwaliteit van een product kun je er niet in 'controleren'. Van milestone checks, reviews en testen wordt het niet beter. Een controle geeft signalen, maar pas als je met die signalen wat doet dan wordt het product of de dienst beter. Het gaat om een balans tussen controleren en het nemen van actie en daar gaat het vaak mis.

Projectteams komen om in de grote hoeveelheid fouten die gevonden zijn en kunnen maar een deel ervan oplossen. De diepere oorzaken van de fouten zijn onbekend en daar wordt niets aan gedaan, waardoor er steeds nieuwe fouten bijkomen. Kwaliteitssystemen die voornamelijk gebaseerd zijn op controleren blijken vaak niet de gewenste kwaliteit op te leveren, of doen dat tegen zulke hoge kosten dat ze in de praktijk niet uitvoerbaar zijn.

Een Agile-aanpak gaat uit van minder controleren en van beter gebruiken van de  resultaten van de controles door vaker en tijdiger acties te ondernemen. En van leren van fouten en de manier van werken (het proces) te veranderen. Daarmee wordt de kwaliteit beter en gaan de kosten omlaag. Scrum levert, door het kortcyclisch werken in sprint en de frequente feedback, volop informatie over de kwaliteit van de producten. Deze informatie wordt gebruikt om de producten te verbeteren (Sprint Review / Demo -> Planning Game) of om effectiever samen te werken (Sprint Retrospective -> Definition of Done). Op die manier wordt continu het product en de manier van werken verbeterd.

Samenwerken met gebruikers

Samenwerking met de gebruikers van de software is essentieel als je wilt begrijpen welke kwaliteit nodig is. Bij het plannen en ook tijdens de ontwikkeling werken de eigenaar van het product en het Scrum-team nauw samen om zo de vereisten te kunnen definiëren en te bepalen wat prioriteit heeft, door gebruik te maken van gebruikersverhalen (User Stories). 

Het begint al met de planningsgame, waarin het team en de Product Owner (die de gebruikers vertegenwoordigt) afstemmen wat de gebruiker van de volgende sprint mag verwachten. Telkens opnieuw wordt gekeken wat de hoogste prioriteit heeft, om ervoor te zorgen dat de juiste dingen gemaakt worden waar de gebruikers wat aan hebben. In de dagelijkse stand-up bespreken de teams hun voortgang en benoemen dingen die mogelijk de levering kunnen bemoeilijken. Aan het einde van de sprint is er de product review waarin met de gebruikers bekeken wordt of het product voldoet. Die product review geeft veel bruikbare feedback, die meegenomen wordt in de plannings game van de volgende sprint.

Samenwerken met korte communicatielijnen is een sterkte van Scrum, die helpt om de kwaliteit te verhogen. Ontwikkelaars hebben een beter inzicht wat gebruikers willen en waarom. Gebruikers zien het product in een vroeg stadium, en kunnen het ook eerder gaan gebruiken. Een duidelijke win-win!

Agile kwaliteitstechnieken

Omdat de Agile-waarden kwaliteit onderstrepen en de Scrum-teams intensief samenwerken met de gebruikers, is het geen verrassing dat veel Scrum-teams software van hoge kwaliteit leveren. Maar hoe doen ze het, welke technieken gebruiken ze?

Een voorbeeld is 'pair Programming', waarbij twee ontwikkelaars samen een keyboard en scherm delen. De ene ontwikkelaar typt terwijl de ander de code leest en mogelijke problemen aankaart en daar verbeteringen voorstelt. Bij pair programming wordt de code nagekeken terwijl hij geschreven wordt, waardoor er snel feedback wordt gegeven aan de ontwikkelaar en fouten voorkomen worden. Bijkomend voordeel is dat meerdere ontwikkelaars de code leren, waardoor men minder afhankelijk is van individuele teamleden.

Een andere manier die de kwaliteit van producten verhoogt is Test Driven Design (TDD).  Als eerst de test geschreven wordt en daarna pas de code, dan weet je door het uitvoeren van de test dat de software werkt. Tests worden toegevoegd aan de regressietest, die het team tijdens de ontwikkelingsfase gebruikt om te controleren dat de software correct blijft werken. 

'Refactoring' past bestaande code aan, waarbij het product hetzelfde blijft werken. Het kan gebruikt worden om de prestatie van een product te vergroten of om het voor te bereiden zodat een nieuwe functionaliteit toegevoegd kan worden. Teamleden ontwikkelen hun ‘refactoring’ vaardigheden, zodat zij de code efficiënt kunnen aanpassen en tegelijkertijd de kwaliteit van het softwareproduct kunnen waarborgen. Om er zeker van te zijn dat het product correct blijft werken worden regressietesten gedaan, TDD en refactoring worden op die manier gecombineerd.

Scrum-teams verbeteren hun manier van werken constant door te werken met retrospectives. Door te reflecteren na een sprint kan het team zien welke dingen goed gingen en welke beter kunnen en ze evalueren ook wat ze geleerd hebben. Agile vindt verbetering erg belangrijk en teams leren constant om beter te worden in wat ze doen, waardoor zowel hun effectiviteit als efficiency vergroot worden.

Conclusie

Scrum-teams worden gedreven door de Agile-waarden die kwaliteit ondersteunen. Door frequente feedback nemen Scrum-teams vaker en tijdiger actie om de kwaliteit te verbeteren. Ze werken nauw samen met de gebruikers van de software en gebruiken kwaliteitstechnieken om softwareproducten en diensten van hoge kwaliteit te leveren.

Deel dit artikel via LinkedIn
Deel dit artikel via Facebook
Deel dit artikel via Twitter

Gerelateerde artikelen

30-05-13  Scrum wint populariteit buiten ICT-afdeling

30 vacatures
Ondernemer die bereid is tot Management Buy-in (MBI)

DicoLab (via GITP) , Almere

Manager ICT

DTZ Zadelhoff , Amsterdam

Informatiseringsadviseur

WonenBreburg , Tilburg

Manager ICT

Hogeschool van Hall Larenstein , Velp GD

Sharepoint ontwikkelaar Junior Senior

Deventer Ziekenhuis , Deventer

Top 10 Reagerende bezoekers
   Aantal
reacties
Gemiddelde
waardering
Klik voor meer info1 1830 6,9
Klik voor meer info2 1409 6,6
Klik voor meer info3 1349 6,4
Klik voor meer info4 1144 6,5
Klik voor meer info5 1087 6,4
Klik voor meer info6 1032 5,9
Klik voor meer info7 820 6,6
Klik voor meer info8 609 5,8
Klik voor meer info9 501 6,3
Klik voor meer info10 428 5,9