Kennisbank

Het verzamelen van vereisten

Wat zijn vereisten?

Vereisten zijn essentieel om te ontdekken voordat je begint met het bouwen van software. Ze beschrijven wat de software moet doen of welke eigenschappen de software moet hebben.

glenn-carstens-peters-RLw-UC03Gwc-unsplash.jpg

Ze vallen grofweg in drie categorieën uiteen:

  1. Functioneel — Iets wat de software moet doen, bijv. “De software zal een e-mail versturen wanneer een bestelling wordt geplaatst”
  2. Non-functioneel — Een eigenschap of kwaliteit die het product moet hebben, zoals prestaties, bruikbaarheid, beveiliging of betrouwbaarheid. bijv. “De software moet draaien op een 1024×768 monitor”
  3. Beperkingen — Globale kwesties die alle andere requirements vormgeven bijv., “De software zal draaien op Windows” of “Geen internettoegang beschikbaar”

Waarom vereisten belangrijk zijn


“Het moeilijkste onderdeel van het bouwen van een softwaresysteem is het nauwkeurig bepalen wat je moet bouwen. Geen enkel ander deel van het conceptuele werk is zo moeilijk als het vaststellen van de gedetailleerde technische requirements, inclusief alle interfaces naar mensen, machines en andere softwaresystemen. Geen enkel ander deel van het werk verlamde het resulterende systeem zo erg als het verkeerd wordt gedaan. Geen enkel ander deel is moeilijker om later te corrigeren.”

Frederick Brooks, The Mythical Man-Month: Essays on Software Engineering, Anniversary Edition (2nd Edition), Addison Wesley Professional, Boston, 1995.


Het verzamelen van nauwkeurige vereisten zorgt ervoor dat we:

  • De software goed bouwen
  • De juiste software bouwen

De tijd nemen om vereisten uit te werken voordat de ontwikkeling begint, zal leiden tot minder wijzigingen later in de ontwikkelingscyclus. Het leidt meestal tot een hogere klanttevredenheid over de software.

Wat maakt een goede vereiste?

Een goede vereiste moet:

  • Testbaar zijn
  • Duidelijk en ondubbelzinnig zijn
  • Correct en consistent zijn
  • Atomair of op zichzelf staand zijn
  • Onafhankelijk van andere vereisten zijn

Voorbeelden

Het ontdekken van functionele vereisten

Als je de klant vraagt wat ze willen, krijg je meestal een brede vereiste.

“De software moet de gebruiker in staat stellen om een bestelling in te voeren.”

mediamodifier-yx17UuZw1Ck-unsplash.jpg

Met verdere discussie kun je dit opsplitsen in kleinere vereisten:

“De software moet de gebruiker in staat stellen om een klant te selecteren.” “De software moet de gebruiker in staat stellen om een product te selecteren.” “Na het plaatsen van een bestelling moet de software de klant een e-mail sturen.”

Blijf deze vereisten opsplitsen totdat ze voldoen aan de criteria voor goede vereisten.

Niet-functionele vereisten

Vereisten van dit type hebben betrekking op kwaliteiten van de software en vallen doorgaans in categorieën zoals deze:

  • Prestaties
  • Schaalbaarheid
  • Draagbaarheid
  • Bruikbaarheid
  • Compatibiliteit
  • Lokalisatie
  • Betrouwbaarheid
  • Beveiliging
  • Onderhoudbaarheid
  • Beschikbaarheid

Non-functionele vereisten kunnen moeilijk te specificeren of te ontdekken zijn. Voor bijvoorbeeld een prestatie-vereiste krijg je waarschijnlijk iets te horen als “het systeem moet snel zijn”. Dit is natuurlijk niet testbaar en we kunnen niet garanderen dat we aan die vereiste hebben voldaan zodra we de software hebben gebouwd. Stel vragen om deze vereisten te achterhalen: Welk proces? Hoe lang duurt het proces momenteel? Wat is een acceptabele tijdsduur?

Bruikbaarheidseisen kunnen bijzonder moeilijk te ontdekken zijn, omdat een gebruiker deze vereisten vaak niet kan zien of vertellen. Een goede manier om deze te ontdekken is door iemand te observeren die de software gebruikt.

  • Hoe snel kunnen gebruikers bereiken wat ze willen doen?
  • Hoe vaak maken ze fouten?
  • Wisselen ze vaak tussen toetsenbord en muis?
  • Is de informatie die ze nodig hebben direct beschikbaar?

Aannames

Aannames in softwareontwikkeling kunnen tot verdere problemen leiden en deze moeten tot een minimum worden beperkt. Als je merkt dat je aannames maakt bij het verzamelen van vereisten, controleer deze dan met de klant. Documenteer alle aannames die je maakt voor toekomstige referentie.

Conclusie

  • Nauwkeurige vereisten zijn essentieel voor softwareontwikkeling
  • Vereisten kunnen moeilijk te vinden zijn
  • Praat met de klant
  • Demonstreer indien nodig prototypes aan de klant
  • Observeer gebruikers die de software bedienen
  • Wees op je hoede voor het maken van aannames

Geschreven door James Goodger
Directeur, UK

Contact

Laat ons helpen jouw ambities concreet te maken.