Wat is requirements engineering?
Grote hardware- of softwaresystemen, zoals een ruimtevaartuig, hebben complexe eisen. Vereisten zijn een specificatie van wat moet worden gebouwd, hoe het systeem zich moet gedragen of beperkingen aan het proces van het bouwen van het systeem. Requirements engineering is het gebruik van goede engineeringmethoden om de vereisten te begrijpen voordat een systeem wordt gebouwd. Het is belangrijk omdat de belanghebbenden van het systeem zelf niet duidelijk zijn over hun behoeften en uiteenlopende behoeften hebben.
Een complex systeem kan veel belanghebbenden hebben, zoals de mensen die het systeem in bedrijf stellen, gebruikers die een of meer aspecten van het systeem gebruiken en mensen die van het systeem profiteren. Het is ook mogelijk dat belanghebbenden leden van het publiek zijn die worden getroffen door bepaalde eigenaardigheden van het systeem. Stakeholders hebben hun eigen speciale behoeften. Aan de andere kant zijn mensen die het systeem ontwikkelen technisch mogelijk, maar begrijpen ze het standpunt van de belanghebbenden mogelijk niet volledig. Requirements engineering is de essentiële mogelijkheid die deze kanten verbindt.
Formeel is de requirements engineering activiteit onderverdeeld in requirements ontwikkeling en requirements management. De ontwikkeling van vereisten bestaat uit elicitatie, analyse, specificatie en verificatie. Vereistenbeheer is de besturing van het hele vereistenproces, met name het verwerken van wijzigingen in vereisten. Sommige beoefenaars noemen de hele activiteit daarentegen gewoon als behoeftenanalyse.
Elicificatie van eisen van belanghebbenden wordt noodzakelijk omdat belanghebbenden hun behoeften vaak niet volledig specificeren en de implicaties van het nieuwe systeem niet begrijpen. Stakeholders kunnen zich niet openstellen, omdat ze bang kunnen zijn voor de impact op hun huidige banen. Elicitatie is dus een zorgvuldig en mogelijk een lang proces waarbij empathie en subtiele psychologie nodig is. Men moet oppassen dat culturele verschillen tussen verschillende stakeholders en de ontwikkelaars worden overbrugd.
Verschillende technieken worden gebruikt om eisen op te wekken. Vereisten kunnen worden opgedaan via individuele interviews, groepsbijeenkomsten en het observeren van mensen bij hun taken. Technieken die vereisten kunnen opleveren, zijn onder meer focusgroepen, het maken van prioriteitenlijsten, prototyping en vergelijking met andere actieve systemen. De vereisten om op te wekken omvatten de zakelijke behoeften van het systeem, de bedrijfsprocessen van de gebruikers tijdens het gebruik van het systeem en de functionele kenmerken van het systeem. Bovendien moeten de niet-functionele vereisten zoals responstijd, systeembeschikbaarheid en gebruiksgemak worden opgespoord.
De analysestap in requirements engineering vormt vereisten op laag niveau die zullen voldoen aan de oorspronkelijke vereisten op hoog niveau. Dit omvat het maken van conceptuele modellen en prototypes om de volledigheid van de vereisten vast te stellen. Conflicten in de behoeften van verschillende belanghebbenden worden vaker gevonden door modellen en prototypes dan uit een loutere lijst van eisen. Gewenste systeemkenmerken zoals beveiliging, flexibiliteit en onderhoudbaarheid moeten door de analisten aan de eisen worden toegevoegd.
De vereisten zijn gespecificeerd in een document voor een gemakkelijk begrip van alle belanghebbenden. In het softwareveld wordt het document de SRS genoemd, wat staat voor Software Requirements Specification. De vereisten worden geverifieerd door de belangrijkste belanghebbenden. Dit gebeurt voornamelijk via presentaties en het specificatiedocument, maar soms ook met testcases die aan de eisen voldoen.
Requirements engineering is primair een communicatie, activiteit in plaats van een technische. Het heeft multidisciplinaire vaardigheden nodig. Requirements engineering helpt stakeholders en ontwikkelaars conflicten op te lossen en verenigt ze in hun doelen; Dit leidt tot een robuust systeem.