Achtergrond:
Bij IT-projecten met lange ontwikkelingscycli kunnen vereisten vaak veranderen, waardoor de documentatie snel verouderd raakt. Dit leidt tot inconsistentie tussen ontwikkelaars en de opdrachtgever, verhoogt de onderhoudskosten en bemoeilijkt de implementatie van veranderingen.
Probleem:
Het probleem is dat onnauwkeurige, onvolledige of verouderde beschrijvingen van vereisten voldoende zijn om fouten, misverstanden in het team, groei van technische schuld en lage efficiëntie van QA-werk te veroorzaken.
Oplossing:
De systeemanalist implementeert processen voor levendige documentatie en regelmatige herziening van artefacten. Het gebruik van benaderingen zoals Documentation as Code (documentatie in git-repositories), nauwe integratie met taaktools (Jira, Confluence), automatisering van het koppelen van vereisten aan taken en testcases, organisatie van documentatiereviews en herziening van vereisten. Het is belangrijk om een cultuur van "één enkele bron van waarheid" voor alle belanghebbenden te ontwikkelen.
Belangrijkste kenmerken:
Wat is het verschil tussen Levendige documentatie (Living Documentation) en gewoon goede specificatie?
Levendige documentatie is niet alleen relevantie, maar ook integratie met ontwikkelingshulpmiddelen (bijvoorbeeld, tests via BDD kunnen zelf het actuele document genereren), automatische wijzigingscontrole en gemakkelijke audit van de geschiedenis.
Kan men volledig afzien van formele documentatie door alleen user stories en backlog tickets te gebruiken?
Nee, user stories dekken niet de integratie-interfacen, details van bedrijfsregels en edge case-scenario's voldoende: er is harmonie nodig tussen bondigheid en volledigheid van specificaties.
Als de vereisten zijn gewijzigd, is het voldoende om gewoon de tekst in Confluence bij te werken?
Nee, het is belangrijk om deze update te synchroniseren met alle gerelateerde artefacten: testcases, taken, datamodellen. Een goede praktijk zou automatisering van dergelijke koppelingen zijn, anders ontstaan er desynchronisaties en fouten.
Negatieve case:
In een groot fintech-project werden vereisten ondersteund in Word-documenten, via e-mail verzonden en werd er geen enkele geschiedenis bijgehouden. Na de release voldeed een deel van de functionaliteit niet aan de verwachtingen van de opdrachtgever, en een deel van de bugs werd niet in de specificaties weerspiegeld.
Voordelen:
Nadelen:
Positieve case:
In een ander project werd documentatie ondersteund in dezelfde repository als de code (Asciidoc + Gitlab), elke wijziging onderging code review. Gelinkte relaties tussen vereisten, testcases en taken werden opgezet.
Voordelen:
Nadelen: