Hoe kan je een webapplicatie effectief documenteren?
Documentatie is een fundamenteel onderdeel van de ontwikkeling van software. Tegelijkertijd kan documenteren veel tijd en geld kosten, terwijl uit ervaring blijkt dat de resultaten hun doel vaak voorbij schieten. In dit artikel bespreek ik verschillende documentatievormen en hun effectiviteit voor, tijdens en na de ontwikkeling van webapplicaties.
Onze op Scrum gebaseerde werkwijze heeft als belangrijk principe dat het besteden van tijd, geld en energie aan overbodige activiteiten (met als resultaat: ‘waste’) zo veel mogelijk moet worden voorkomen. Dat is een uitgangspunt dat is overgenomen van de ‘lean manufactoring’ aanpak zoals die oorspronkelijk door Toyota is uitgedacht. Het doel van onze aanpak is om zo snel mogelijk werkende, waardevolle en gebruiksvriendelijke functionaliteit aan eindgebruikers te leveren en om eventueel voortschrijdend inzicht (in het product én het proces) snel te verwerken.
Er wordt soms -onterecht- gedacht dat het maken van documentatie niet bij deze manier van werken past, omdat het vertragend zou werken en geen directe waarde voor de eindgebruiker oplevert. Maar documenteren is wel degelijk heel belangrijk; de uitdaging is om slim te documenteren, zodat er geen overbodige ‘waste’ ontstaat. De sleutel tot effectieve documentatie is om alleen de écht belangrijke informatie vast te leggen zonder het creatieve proces te beperken en de organisatie op kosten te jagen.
Voor de ontwikkeling
Documentatie die vóór de ontwikkeling van de software wordt gemaakt, bijvoorbeeld tijdens het offertetraject of “Sprint 0” (de eerste sprint waarin alle belangrijke voorbereidingen worden getroffen), heeft tot doel om de requirements en de high-level architectuur van de oplossing in kaart te brengen. We werken hier niet de complete oplossing uit, maar trachten de functionele en architecturale uitgangspunten te identificeren. In deze fase zijn veelvoorkomende vormen van documentatie functionele specificaties, user stories en ERD-diagrammen.
Functionele specificaties zijn tekstuele lijsten van functionele requirements, die klanten veelal bij hun offerteaanvraag meesturen. Een specificatie is doorgaans op een vrij abstract niveau uitgewerkt, waardoor het een globaal beeld van de wensen geeft. Teveel detaillering is in deze fase niet wenselijk. Soms bevat de specificatie ook technische eisen. Dat is niet altijd gunstig, want het kan de developers in de weg staan om daadwerkelijk de beste oplossingen uit te denken.
User stories zijn een handig hulpmiddel om de gewenste functionaliteit vanuit het perspectief van verschillende type gebruikers te identificeren en beschrijven. Bovendien kunnen user stories gebruikt worden als acceptatiecriteria en helpen ze de developers om het business domain van de opdrachtgever te doorgronden. Zie ook ons eerdere artikel over user stories voor een uitgebreidere toelichting.
Een Entity Relationship Diagram (ERD) toont gebruikers en objecten (entiteiten), hun onderlinge relaties en de bijbehorende attributen in een grafische vorm. Met name in complexe projecten met grotere ontwikkelteams kunnen ERD’s bijdragen aan een gedeeld begrip over de relaties tussen de verschillende objecten, voordat de ontwikkeling daadwerkelijk start.
Hoewel het belangrijk is om de requirements op hoog niveau in kaart te brengen voordat de ontwikkeling van de webapplicatie begint, kan teveel of te gedetailleerde documentatie het proces vertragen en het team hinderen in het ontwikkelen van de beste oplossingen. Bovendien kan blijken dat de geproduceerde documentatie overbodig is als nieuwe eisen, inzichten en details tijdens het project naar voren komen.
"Door de juiste middelen toe te passen, kunnen webapplicaties adequaat gedocumenteerd worden zonder dat het de creativiteit en productiviteit van het team in de weg zit."
Tijdens de ontwikkeling
Het is belangrijk om tijdens de ontwikkeling van de software de high-level architectuur en afwijkingen van eventuele standaarden vast te leggen. Tijdens deze fase vindt het documenteren meestal niet handmatig plaats, maar ontstaat het min of meer automatisch doordat de programmeurs specifieke programmeerprincipes aanhouden. Die principes hangen onder meer af van het gebruikte framework, de programmeertaal en vastlegging van wijzigingen in de broncode in een versiebeheersysteem.
Frameworks zijn in feite gespecialiseerde softwarebibliotheken, die vaak niet alleen een grote hoeveelheid standaardfunctionaliteit leveren, maar ook een vaste structuur voor de broncode en functies bieden. Ruby on Rails was het eerste framework dat specifiek is bedacht voor de ontwikkeling van webapplicaties en wordt door velen gezien als de ‘gouden standaard’ waarop veel andere frameworks zijn gebaseerd.
De keuze voor de programmeertaal beïnvloedt de mate en de vorm van documentatie binnen de broncode zelf, bijvoorbeeld in de vorm van commentaarregels. Bij programmeertalen die relatief dicht bij natuurlijke taal liggen, is het minder noodzakelijk om externe documentatie of aanvullend commentaar aan de broncode toe te voegen. Eén van de voordelen van Ruby, de programmeertaal die we bij Inspire gebruiken, is dat het een zeer duidelijke vorm en structuur heeft, waardoor het als een zichzelf beschrijvende taal kan worden gezien.
Het versiebeheersysteem is ook onderdeel van de documentatie, niet alleen omdat het alle versies van de broncode bevat, maar ook omdat developers bij het indienen van een wijziging in de code een toelichting kunnen schrijven. Zo kan op een later moment altijd bekeken worden waarom een bepaalde verandering werd doorgevoerd. Dat is overigens ook een reden waarom developers nieuwe code en wijzigingen bij voorkeur telkens in compacte delen bij het versiebeheersysteem indienen.
De middelen die hierboven beschreven zijn stellen teams in staat om vrijwel zonder extra moeite effectieve documentatie vast te leggen tijdens de ontwikkeling van de software. Voor opdrachtgevers levert dat een belangrijk kostenvoordeel op ten opzichte van andere documentatievormen.
Na de ontwikkeling
Documentatie die na de initiële ontwikkeling wordt geproduceerd heeft over het algemeen tot doel om de developers die de software onderhouden te ondersteunen of als handleiding voor eindgebruikers.
Als de hierboven beschreven documentatievormen goed zijn toegepast, dan is het vastleggen van alle ideeën en overwegingen uit het project meestal niet nodig. Wel is het belangrijk om nauwkeurig te beschrijven hoe de webapplicatie moet worden geïnstalleerd en geconfigureerd, zodat beheerders en toekomstige ontwikkelaars de software snel kunnen opzetten. Bij Inspire noemen we dat een delivery document, waarin we voor de hostingprovider en andere belanghebbenden beschrijven wat de eisen aan de hostingomgeving zijn en hoe de software geinstalleerd en geconfigureerd dient te worden.
Wij zien dat de noodzaak voor uitgebreide gebruikershandleidingen afneemt nu webapplicaties steeds intuïtiever en gebruiksvriendelijker worden. Bovendien geven veel mensen nu de voorkeur aan audiovisuele screencasts en presentaties ten opzichte van tekstuele handleidingen.
Conclusie
Door de juiste middelen toe te passen, kunnen webapplicaties adequaat gedocumenteerd worden zonder dat het de creativiteit en productiviteit van het team in de weg zit en het een zware financiële last op de organisatie legt. Het ontwikkelen van effectieve documentatie gaat hand in hand met het doel om zo snel mogelijk waardevolle, gebruiksvriendelijke functionaliteit aan eindgebruikers op te leveren.
Kom langs in Utrecht en we leggen het je uit.
Wij zijn altijd op zoek naar enthousiaste en talentvolle ontwikkelaars. Mensen die niet voor doorsnee gaan en die hun talent willen inzetten om (web)apps te bouwen die betekenisvolle impact hebben.