Planmatig Werken


Een systeemontwikkelingstraject bestaat uit alle stappen die moeten worden doorlopen om ervoor te zorgen dat er software wordt opgeleverd dat aansluit bij de wens van een opdrachtgever. Dit klinkt eenvoudig, maar in praktijk blijkt dit alles behalve vanzelfsprekend. Schattingen geven aan dat circa een kwart van de informatiesysteem projecten volledig mislukken (projecten waarbij uiteindelijk niets bruikbaars wordt opgeleverd). Een duidelijk uitgewerkt stappenplan vergroot de kans dat een traject van systeemontwikkeling uiteindelijk wèl succesvol kan worden afgerond.

Lineaire modellen

De softwarecrisis (eind jaren 60 van de vorige eeuw) heeft duidelijk gemaakt wat het belang is van een goede methode voor systeemontwikkeling. De aandacht hiervoor heeft geleid tot de definitie van het watervalmodel (W.W. Royce, 1970). In dit model loopt de ontwikkeling door een aantal fasen, namelijk: definitiestudie/analyse (requirements), functioneel/technisch ontwerp (design), bouw (construction), testen (verification) en onderhoud (maintenance). Het watervalmodel wordt ook wel een lineair model genoemd omdat de fasen achtereenvolgens worden doorlopen. Voordelen van deze gefaseerde aanpak zijn: inzichtelijkheid van de projectvoortgang (mijlpalen); het verschaft duidelijkheid en voorkomt verrassingen. Verder biedt het werken met een dergelijk gefaseerde aanpak de mogelijkheid tot taakverdeling (specialisaties). Binnen deze module worden methoden besproken waarmee invulling is gegeven aan dit watervalmodel (zoals SDM). Daarnaast komen ook verbeterde versies van dit model aan bod (zoals het 'Sashimi model').


Cyclische modellen

Het werken volgens het watervalmodel bleek niet altijd succesvol. Als antwoord op de beperkingen van het watervalmodel werd midden jaren 80 in de vorige eeuw een cyclische benadering van systeemontwikkeling gedefinieerd. In tegenstelling tot bij een lineaire aanpak is het bij een cyclische methode niet altijd noodzakelijk om alle eisen eerst volledig te beschrijven. Bij een cyclische benadering wordt het systeem in opvolgende delen ontwikkeld (gebouwd en getest), waarbij ieder deel een subset aan functionaliteiten bevat. Binnen deze module wordt onderscheid gemaakt tussen iteratieve en incrementele (evolutionaire) systeemontwikelling. Bij de bespreking van het cyclisch ontwikkelen van software wordt aandacht besteed aan begrippen als timeboxing, prioteiten (MoSCoW) en prototyping. Er wordt verder aandacht besteed aan de kenmerken van 'Agile'-methoden, waarbij enkele methoden in het bijzonder worden toegelicht (DSDM, RUP, Scrum, Kanban, eXtreme Programming).