Binnen het vakgebied van requirements engineering wordt onderscheid gemaakt tussen functionele requirements en niet-functionele requirements:
-
Functionele requirements: requirements die de vereiste werking beschrijven van een systeem; het door een systeemfunctie uit te voeren gedrag.
-
Niet-functionele requirements: requirements die de manier beschrijven waarop het systeem deze werking moet aanbieden.
Volgens Cannegieter, De Swart en Zandhuis gaan functionele requirements gaan over het gewenste gedrag van het systeem. Ze definiëren functionaliteit als de mogelijkheden die het systeem moet bieden zoals gesteld in de functionele requirements. Een rammelende definitie omdat een systeem blijkbaar alleen functionaliteit kan bieden zodra er een functionele requirement aan ten grondslag ligt. Lijkt een kip-ei-discussie, maar functionaliteit is m.i. niets anders dan een de 'werkzaamheid' van een systeem: het systeem is, wat het systeem doet!
Cannegieter, De Swart en Zandhuis definiëren niet-functionele requirements als de kwaliteitseisen of beperkingen voor een systeem: hoe moet het beoogde systeem haar functionaliteit aanbieden. Een kwaliteitseis betreft een kwaliteitseigenschap die niet door de functionele requirements wordt afgedekt. Een beperking gaat over de oplossingsruimte in aanvulling op de functionele en kwaliteitsrequirements. Beperkingen kun je - in tegenstelling tot functionele requirements en kwaliteitseisen niet implementeren. Ze beperken alleen de oplossingsruimte (en daarmee het ontwikkelproces) en verkleinen daarmee de bewegingsvrijheid van de ontwikkelaars. Een voorbeeld van een beperking is bijvoorbeeld dat het systeem gebruik moet maken van een Oracle-database.
Volgens Agterbosch, Raemakers, Tijdink e.a. is het ontbreken van nadrukkelijke aandacht voor niet-functionele requirements een vaak voorkomend punt van zorg bij opdrachtgevers, "met name als ze de consequenties ervan ondervinden. Juist de niet-functionele requirements kunnen doorslaggevend zijn voor de keuze van de uiteindelijke oplossingsrichting.
De bekendste classificering van kwaliteitsrequirements is die van ISO/IEC 25010. De belangrijkste aandachtspunten bij het opstellen van de kwaliteitsrequirements zijn: beveiiligbaarheid, functionele correctheid, betrouwbaarheid (bedrijfszekerheid, fouttolerantie en herstelbaarheid), bruikbaarheid, efficiënte werking van het systeem (snelheid, middelenbeslag), de onderhoudbaarheid (analyseerbaarheid, aanpasbaarheid en testbaarheid van de software), en de overdraagbaarheid van het systeem (aanpasbaarheid, installeerbaarheid, vervangbaarheid.
Bron:
- Succes met opdrachtgeverschap! Tips voor ICT opdrachtgeverschap en regievoering, Olaf Agterbosch, Wouter Raemaekers, Ton Tijdink, e.a.
- Grip op requirements - IREB foundation examenstof uitgelegd en praktisch gemaakt, Jan Jaap Cannegieter, Nicole de Swart, Johan Zandhuis