Bij systeemanalyse en -ontwerp verwijst het abstractieniveau naar de mate van detail en complexiteit die is opgenomen in een model of representatie van een systeem. Het gaat erom hoeveel u "inzoomt" of "uitzoomt" wanneer u het systeem bekijkt. Verschillende niveaus zijn geschikt voor verschillende doeleinden en doelgroepen. Hogere abstractieniveaus tonen het grote geheel, terwijl lagere niveaus een fijnere granulariteit bieden.
Hier volgt een overzicht van de gebruikelijke abstractieniveaus:
* Abstractie op hoog niveau (conceptueel niveau): Dit is de breedste kijk op het systeem. Het richt zich op het algemene doel, de belangrijkste componenten en de interacties daartussen, zonder in details te treden. Zie het als een vogelvluchtperspectief. Voorbeelden zijn onder meer:
* Dataflowdiagrammen (DFD's): Het toont de gegevensstroom door het systeem, maar niet de interne werking van processen.
* Gebruiksvoorbeelddiagrammen: Het illustreren van interacties tussen gebruikers en het systeem, zonder de implementatie in detail te beschrijven.
* Contextdiagrammen: Het tonen van de grenzen van het systeem en zijn interacties met de externe omgeving.
* Abstractie op middenniveau (logisch niveau): Dit niveau biedt meer details dan het hoge niveau, maar vermijdt nog steeds implementatiedetails. Het richt zich op *wat* het systeem doet, niet op *hoe* het het doet. Voorbeelden zijn onder meer:
* Entiteit-relatiediagrammen (ERD's): Modelleren van data-entiteiten en hun relaties, zonder databasetechnologie te specificeren.
* Gedetailleerde DFD's: Processen op hoog niveau opsplitsen in kleinere, beter beheersbare subprocessen.
* Statusovergangsdiagrammen: Het tonen van de verschillende toestanden waarin een systeem zich kan bevinden en hoe het daartussen overgaat.
* Abstractie op laag niveau (fysiek niveau): Dit is het meest gedetailleerde niveau, waarbij de nadruk ligt op het *hoe*. Het behandelt de concrete implementatiedetails, inclusief hardware, software en specifieke algoritmen. Voorbeelden zijn onder meer:
* Klassediagrammen (in objectgeoriënteerd ontwerp): met klassen, attributen, methoden en relaties.
* Volgordediagrammen: ter illustratie van de volgorde van berichten die tussen objecten worden uitgewisseld.
* Databaseschema's: tabellen, kolommen en gegevenstypen definiëren.
* Broncode: de daadwerkelijke implementatie van het systeem.
De keuze van het abstractieniveau hangt af van de fase van de levenscyclus van de systeemontwikkeling en het publiek. In de vroege stadia worden over het algemeen hogere abstractieniveaus gebruikt om het algehele ontwerp aan belanghebbenden te communiceren. Latere fasen gaan geleidelijk naar lagere niveaus, waardoor ontwikkelaars en implementeerders steeds meer details krijgen. Effectieve systeemanalyse en -ontwerp vereisen een soepele overgang tussen deze niveaus, waardoor consistentie wordt gewaarborgd en onnodige complexiteit in elke fase wordt vermeden. |