De functionaliteit en capaciteit van een systeem worden op verschillende manieren gespecificeerd, afhankelijk van de complexiteit van het systeem en het doel van de specificatie. Deze specificaties zijn cruciaal voor ontwerp, ontwikkeling, testen en implementatie. Hier zijn enkele belangrijke benaderingen:
1. Functionele vereisten: Deze beschrijven *wat* het systeem zou moeten doen. Ze worden vaak uitgedrukt als:
* Gebruiksscenario's: Beschrijf de interacties tussen gebruikers (of andere systemen) en het systeem, en schets een specifieke reeks acties en verwachte resultaten.
* Gebruikersverhalen: Kortere, meer informele beschrijvingen van functionaliteit vanuit het perspectief van een gebruiker (bijvoorbeeld:"Als klant wil ik artikelen aan mijn winkelwagentje kunnen toevoegen, zodat ik ze later kan kopen.").
* Functielijsten: Een eenvoudige opsomming van de functies van het systeem. Minder gedetailleerd dan gebruiksscenario's, maar nuttig voor planning op hoog niveau.
* Statusdiagrammen: Laat de verschillende toestanden zien waarin een systeem zich kan bevinden en hoe het daartussen overgaat. Handig voor systemen met complex statusbeheer.
* Gegevensstroomdiagrammen: Illustreer de gegevensstroom door het systeem.
2. Niet-functionele vereisten (of kwaliteitskenmerken): Deze beschrijven *hoe* het systeem zou moeten presteren. Ze hebben vaak te maken met:
* Prestaties: Reactietijden, doorvoer, transactiesnelheden, resourcegebruik (CPU, geheugen, netwerk). Vaak kwantitatief uitgedrukt (bijvoorbeeld:"Het systeem reageert binnen twee seconden op gebruikersverzoeken").
* Schaalbaarheid: Mogelijkheid om de toenemende belasting (gebruikers, gegevens, transacties) aan te kunnen. Vaak gespecificeerd in termen van verwachte groei en systeemprestaties onder die groei.
* Beveiliging: Bescherming tegen ongeautoriseerde toegang, datalekken en andere bedreigingen. Gedefinieerd door beveiligingsbeleid en toegangscontrolemechanismen.
* Betrouwbaarheid: Frequentie en duur van storingen, gemiddelde tijd tussen storingen (MTBF), gemiddelde tijd tot herstel (MTTR).
* Beschikbaarheid: Percentage tijd dat het systeem operationeel is.
* Onderhoudbaarheid: Gemakkelijk om het systeem aan te passen en bij te werken.
* Bruikbaarheid: Gebruiksgemak voor de beoogde gebruikers. Vaak gemeten via gebruikerstests en feedback.
* Draagbaarheid: Mogelijkheid om op verschillende platforms en omgevingen te draaien.
3. Capaciteitsvereisten: Deze beschrijven het vermogen van het systeem om een bepaalde werklast aan te kunnen. Dit omvat:
* Gegevensvolume: Hoeveelheid gegevens die het systeem moet opslaan en verwerken.
* Gelijktijdigheid van gebruikers: Aantal gelijktijdige gebruikers dat het systeem kan ondersteunen.
* Transactietarief: Aantal transacties dat het systeem per tijdseenheid kan verwerken.
* Bronnenlimieten: Limieten op CPU, geheugen, opslag, netwerkbandbreedte.
Methoden voor het specificeren van functionaliteit en capaciteit:
* Natuurlijk taalgebruik: Vaak gebruikt voor beschrijvingen op hoog niveau, maar kan dubbelzinnig zijn.
* Formele specificatietalen: Gebruik nauwkeurige wiskundige of logische notaties om dubbelzinnigheid te voorkomen (bijvoorbeeld Z, VDM). Deze zijn strenger, maar vereisen gespecialiseerde expertise.
* Modeltalen: Gebruik visuele notaties om de systeemstructuur en het gedrag weer te geven (bijvoorbeeld UML). Een goede balans tussen precisie en begrijpelijkheid.
* Systeemvereistenspecificatie (SRS) Document: Een formeel document dat alle functionele en niet-functionele vereisten uitgebreid beschrijft.
De keuze van de methoden hangt af van factoren zoals de projectgrootte, complexiteit, budget en de technische expertise van het team. Vaak wordt een combinatie van deze methoden gebruikt om tot een uitgebreide en duidelijke specificatie te komen. Het is van cruciaal belang dat de specificaties ondubbelzinnig, volledig, consistent en verifieerbaar zijn. Traceerbaarheid tussen vereisten, ontwerp en implementatie is ook belangrijk voor effectieve systeemontwikkeling en onderhoud. |