In Formatie System en
In Formatie System en
Academiejaar 2024–2025
Inhoudsopgave
Inhoudsopgave i
Inleiding 2
1 Informatie en informatiesystemen 3
1.1 Situering Beleidsinformatica . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 Informatie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.2.1 De rol van informatie bij bedrijfskundige beslissingen . . . . . . . . . 9
1.2.2 Wat is informatie? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.2.3 Informatie als een model van de reële wereld . . . . . . . . . . . . . . 10
1.2.4 Data representatie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.2.5 Verwerking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
1.2.6 Kwaliteit van data en informatie . . . . . . . . . . . . . . . . . . . . . 21
1.2.7 Syntaxis en semantiek . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
1.3 Informatiesystemen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
1.3.1 Definitie informatiesystemen . . . . . . . . . . . . . . . . . . . . . . . 24
1.3.2 Typologie op basis van de informatie-spiegel . . . . . . . . . . . . . . 27
1.3.3 Typologie qua integratie: departementaal tot inter-organisatorisch . . 30
1.3.4 Andere soorten informatiesystemen . . . . . . . . . . . . . . . . . . . 31
1.3.5 Informatiesystemen en strategische impact . . . . . . . . . . . . . . . 31
2 Hardware en netwerken 33
2.1 Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
2.1.1 Hardware componenten . . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.1.2 Data centers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
2.1.3 Besturingssysteem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
2.1.4 Evolutie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
2.2 Netwerken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
2.2.1 Packet Switching netwerken . . . . . . . . . . . . . . . . . . . . . . . 44
2.2.2 Internet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
2.2.3 Mobiele netwerken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
2.2.4 Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
2.2.5 Bluetooth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
2.3 Cloud computing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
2.4 Quantum computing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
3 Informatiesysteemontwikkeling 50
3.1 Golf 1 - maatwerk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
3.1.1 Programmeertalen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
i
ii
3.1.2 Modulariteit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
3.1.3 Relationele databanken . . . . . . . . . . . . . . . . . . . . . . . . . . 56
3.2 Golf 2 - pakketten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
3.2.1 Standaardpakketten . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
3.2.2 ERP-systemen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
3.3 Golf 3 - web services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
3.3.1 Meerlagige architecturen . . . . . . . . . . . . . . . . . . . . . . . . . 60
3.3.2 Invulling van 4-lagen architectuur: webtechnologie . . . . . . . . . . . 63
3.3.3 Web services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
1
Wikipedia. (2014). Beleidsinformatica . https://nl.wikipedia.org/wiki/Beleidsinformatica
1
2
“Die Wirtschaftsinformatik ist eine Wissenschaft, die sich mit Entwicklung und
Anwendung von Informations- und Kommunikationssystemen in Wirtschaftsun-
ternehmen befasst. Aus Sicht der Informatik handelt es sich bei der Wirtschafts-
informatik um eine Angewandte Informatik. Durch ihre Interdisziplinarität hat
sie ihre Wurzeln in den Wirtschaftswissenschaften, insbesondere der Betriebswirt-
schaftslehre, und der Informatik.” 2
ICT kan worden ingezet in de primaire en secundaire activiteiten van een organisatie. De
beleidsinformatica heeft zich in het verleden vooral gericht op de secundaire activiteiten, of
nog, de inzet van ICT in de functionele deelgebieden van de bedrijfskunde die het (soms
fysieke) productieproces van diensten en producten ondersteunen.
In hoofdstuk 1 beschouwen we het perspectief waarin ICT wordt ingezet voor bedrijfsactivitei-
ten, en gaan we dieper in op de begrippen ‘informatie’ en ‘informatiesystemen’. In hoofdstuk 2
bespreken we de belangrijkste technologieën op het gebied van hardware en netwerken die
worden gebruikt voor het bouwen van informatiesystemen. In hoofdstuk 3 besteden we aan-
dacht aan informatiesysteemontwikkeling. Vervolgens beschrijven we in hoofdstuk 4 hoe het
ontwikkelproces van een informatiesysteem eruitziet, en welke rol de bedrijfskundige daarin
kan en moet spelen. In hoofdstuk 5 besteden we aandacht aan recente en nieuwe technolo-
gieën.
Deze syllabus wordt u ter beschikking gesteld in het kader van het opleidingsonderdeel
“Informatiesystemen”, en valt onder het auteursrecht van de Universiteit Antwerpen.
2
Wikipedia. (2022). Wirtschaftsinformatik. https://de.wikipedia.org/wiki/Wirtschaftsinformatik
HOOFDSTUK 1
Informatie en informatiesystemen
In paragraaf 1.1 behandelen we een situering van de beleidsinformatica aan de hand van twee
perspectieven, namelijk het ondersteunend en innovatief perspectief. Verder beschrijven we
in paragraaf 1.2 de definitie van informatie en data representatie, en de rol van informatie in
bedrijfskundige beslissingen. Tenslotte behandelen we de definitie en een aantal typologieën
van informatiesystemen in paragraaf 1.3.
Het ontstaan van de beleidsinformatica, ongeveer 50 jaar geleden, heeft te maken met het toe-
nemend belang van ICT in de bedrijfskunde, maar evenzeer met de vaststelling dat er destijds
een grote (kennis-)kloof bestond tussen bedrijfskundigen en programmeurs in hun samenwer-
king bij het bouwen van informatiesystemen. Beide partijen hadden elkaar nodig omdat
bedrijfskundigen te weinig technische kennis bezaten om zelf de systemen te bouwen, terwijl
technici veelal over te weinig bedrijfskundige kennis beschikten om te weten welke systemen
denkbaar zijn of tenminste wat de precieze, gedetailleerde vereisten van dergelijke systemen
zijn. Die kloof was 50 jaar geleden bijzonder groot, in die zin dat de meeste bedrijfskundigen
zelf geen computer hadden (of er zelfs nooit één met eigen ogen gezien hadden), terwijl de
technici dikwijls werkten in een informatica-afdeling die grotendeels geïsoleerd was van de rest
van de organisatie, en vooral communiceerden in technisch jargon dat voor bedrijfskundigen
niet te begrijpen was.
Om deze kloof te overbruggen is de beleidsinformatica ontstaan, als een domein dat een brug
tussen bedrijfskunde en ICT moest slaan, of nog, die ‘alignment’ tussen bedrijfskunde en ICT
moest realiseren. Hierdoor is de positie van de beleidsinformaticus enigszins vergelijkbaar met
deze van de architect in de burgerlijke bouwkunde. Ook een architect bepaalt de vereisten
van de bouwheer en ontwerpt dan een huis dat gebouwd wordt door technici zoals loodgieters,
elektriciens, verwarmingstechnici, enzovoort. Ook hier zou kunnen gesteld worden dat er een
kloof is tussen de wereld van de bouwheer enerzijds, en deze van de technici anderzijds.
Ook nu is er nog steeds sprake van een kloof tussen bedrijfskundigen en technici, alhoewel
deze wellicht aanzienlijk kleiner is dan vroeger. De bedrijfskundigen hebben meer kennis
van ICT dan in het verleden, terwijl er in de ICT-opleidingen ook meer aandacht is voor de
bedrijfskunde dan vroeger en de technologie zelf veel toegankelijker is geworden, zowel qua
financiële investering als gebruiksgemak.
Een eerste deelgebied van de beleidsinformatica is gericht op het bouwen van informatiesys-
temen. We kunnen dit bouwperspectief beschouwen aan de hand van het begrip functioneel-
constructieve kloof, die grotendeels samenvalt met hoger beschreven (kennis-)kloof. Deze
functioneel-constructieve kloof beschrijft de essentie van het ontwerpen van artefacten:
in de functionele laag (F-laag) wordt beschreven wat de functies of vereisten zijn van het
te ontwerpen artefact, of nog, ‘wat’ het artefact moet doen zonder te bepalen ‘hoe’ dit moet
gebeuren. In de constructieve laag (C-laag) wordt beschreven ‘hoe’ het artefact deze func-
ties realiseert, of nog, de structuur van het artefact. De stap van het functionele naar het
constructieve niveau is de kern van ontwerp.
Een belangrijk kenmerk is dat beide lagen gebruik maken van verschillende constructen of
primitieven. De bouwheer van een huis wenst bijv. een ruim maar energiezuinig huis. De
constructen op het functioneel niveau zijn hier de ruimte en het energieverbruik, en de spreker
drukt zijn/haar vereisten uit in termen van deze primitieven of constructen. In de construc-
tieve laag beschouwen we de constructen of primitieven van de structuur van een huis, zoals
muren, isolatie, ramen, dak, centrale verwarming, enz. Het is aan de ontwerper om een
combinatie van deze constructen en primitieven te vinden die aan de vereisten of wensen op
functioneel niveau in termen van ruimte en energieverbruik, voldoet. Merk op dat dit niet
1.1 Situering Beleidsinformatica 5
evident is en zelfs zeer moeilijk, bijv. wanneer de gewenste oppervlakte zeer groot is, zal het
moeilijker zijn om het energieverbruik laag te houden dan wanneer de gewenste oppervlakte
klein is. Omdat de vertaling van de functionele naar de constructieve laag niet evident is, en
bij sommige ontwerpvraagstukken juist zeer complex, is er sprake van een kloof tussen het
functionele en het constructieve niveau.
Als we deze kloof toepassen op het situeren van het domein van de beleidsinformatica, verwijst
de F-laag naar de bedrijfskundige laag, o.m. het bepalen van de vereisten van informatie-
systemen. De C-laag verwijst dan naar de mogelijkheden van de ICT, met inbegrip van
hardware, software, netwerken en andere, om aan deze vereisten tegemoet te komen. De be-
leidsinformatica is als domein te situeren tussen de F- en de C-laag: de beleidsinformatica is
gericht op de studie van het realiseren van de F-laag met de technologische mogelijkheden die
worden geboden door de C-laag. Hierbij is het ontwerp-karakter van beleidsinformatica zeer
duidelijk: het gaat om het bouwen of ontwerpen van informatiesystemen op basis van ICT die
beide moeten voldoen aan de bedrijfskundige vereisten. Dit kan gaan van een zeer eenvou-
dig rekenblad om een kosten-baten analyse te automatiseren, tot grootschalige en complexe
informatiesystemen voor een 24/7-operatie van voorraadsystemen van grote multinationals.
In de bouwkunde beschikt de architect sedert decennia en zelfs eeuwen over een arsenaal van
wetenschap en technieken om deze ontwerptaak tot een goed eind te brengen. Meer bepaald
wordt een gans ontwerpproces doorlopen, waarbij kennis van vele verschillende domeinen
(isolatie, verwarming, energie, …) wordt aangewend om bijv. een energie-efficiënte woning te
realiseren. Een halve eeuw geleden, bij het ontstaan van de beleidsinformatica, bestonden
er nog geen ontwerpprocessen voor informatiesystemen. In antwoord hierop werd een grote
hoeveelheid onderzoek verricht onder de noemer van de systeemontwikkeling, waarvan enkele
onderwerpen aan bod komen in deze cursus. Deze stappen in de ontwikkeling van systemen,
kunnen sterk vergeleken worden met de stappen in een bouwproces:
• Project management: elk project (een bouwproject of een ICT project) dient opgevolgd
te worden inzake de timing en budgettering van het project. Dit vakgebied is eerder
bedrijfskundig dan technisch en sluit aan bij het tweede deelgebied van de beleidsinfor-
matica (zie hieronder).
• Systeemontwerp: na een analyse van de behoeften zal een architect aanvankelijk een
schets en later een plan tekenen. Op dezelfde manier zal de beleidsinformaticus een
ontwerp maken: de vereisten van de bedrijfskundige worden vertaald in een ontwerp
waarmee de technologische specialisten aan de slag kunnen.
De bespreking van de twee hogergenoemde deelgebieden mag niet verhullen dat de beleids-
informatica een zeer breed domein is, wat samen hangt met haar brugfunctie.
Ten eerste zijn er raakpunten met de gebieden aan beide uiteinden van het spectrum: ener-
zijds is kennis van bedrijfskundige domeinen zoals accounting, marketing, financiering, logis-
tiek enz. noodzakelijk om een rol te kunnen spelen in het (bestuderen of managen van het)
bepalen van de vereisten van informatiesystemen in deze domeinen. Anderzijds is kennis van
de ICT-kant van het spectrum eveneens van belang voor de beleidsinformatica om bijv. een
realistische inschatting te kunnen maken van de kosten van de bouw van een informatiesys-
teem.
Ten tweede is er op het raakpunt tussen de beide disciplines een enorme waaier van activiteiten
zoals systeemontwikkeling met inbegrip van ICT project management, ICT investeringsbe-
slissingen, productiviteitsstudies van ICT, organisatie van het IT-departement, change mana-
gement, adoptiestudies enz. De combinatie van al deze gebieden maakt de beleidsinformatica
een zeer breed en multidisciplinair gebied.
Hierbij dient opgemerkt te worden dat domeinen zoals o.m. investeringsbeslissingen en pro-
ject management vanzelfsprekend ontwikkeld werden buiten de context van ICT en beleids-
informatica en pas later binnen deze context werden toegepast. Niettemin kan aangestipt
worden dat ze wel degelijk relevant zijn voor de brugfunctie van de beleidsinformatica en in
die zin als een onderdeel van de beleidsinformatica kunnen worden beschouwd. In die zin is
de beleidsinformatica ook moeilijk af te bakenen als een volledig afgescheiden domein.
Laten we als primaire activiteiten beschouwen degene die rechtstreeks de kern van de
organisatie uitmaken, en die rechtstreeks betrekking hebben op het productieproces van het
product of de dienst van de organisatie (en die dikwijls in afdelingen zoals productie, operaties,
Research en Development (R&D) enz. plaatsvinden), terwijl we de secundaire activiteiten als
ondersteunend aan de primaire beschouwen. Gegeven dat in een economie sectoren zoals
landbouw, industrie, diensten en overheid worden onderscheiden, zouden we de primaire
activiteiten van een gegeven organisatie kunnen karakteriseren in (hoofdzakelijk) één van
deze sectoren. Een bedrijf dat auto’s assembleert zou dan primaire activiteiten in de industrie
hebben, terwijl een consultingbedrijf primaire activiteiten zou hebben in de dienstensector.
Bij de secundaire activiteiten onderscheiden we dan de bedrijfskundige domeinen: human
resources, marketing, accounting, financiering, logistiek, maar ook ICT (in een niet-ICT
bedrijf).
Echter werd het al snel duidelijk dat ook de primaire activiteiten van organisaties in de dien-
stensector en de overheid konden worden geautomatiseerd met behulp van inzichten uit de
beleidsinformatica, omdat deze primaire activiteiten in deze sectoren bedrijfskundig/econo-
misch van aard zijn (in tegenstelling tot in de industrie, waar de primaire activiteiten zeer
technisch van aard zijn). Dit deed het belang van ICT in dergelijke organisaties vanzelfspre-
kend sterk toenemen, omdat niet alleen de omvang van de automatisatie toenam (de organi-
satie werd steeds meer digitaal), maar ook de kern van de organisatie werd geautomatiseerd.
Bovendien kon de automatisatie van die kern efficiëntiewinsten realiseren die rechtstreeks
zichtbaar waren voor externe partijen zoals klanten en concurrenten, en rechtstreeks bijdra-
gen tot de winst van de organisatie. Dit leidde tot het inzicht dat ICT strategisch kon ingezet
worden binnen organisaties, en niet uitsluitend in een ondersteunende rol: met name in de
dienstensector en de overheid, die in moderne economieën het merendeel van de economische
activiteiten vertegenwoordigen.
Bij het tweede perspectief is het belang van ICT in de context van bedrijfskunde en economie
nog groter: hierbij wordt vertrokken vanuit de nieuwe mogelijkheden van de ICT, en wordt er
beschouwd of het gebruik van deze technologie nieuwe mogelijkheden biedt op bedrijfskundig
of economisch vlak. Dit betekent dat de aandacht hier niet ligt op automatisering van een
gegeven of vastliggend bedrijfskundig of economisch doel, maar dat er net wordt beschouwd
of er door de nieuwe technologische mogelijkheden nieuwe diensten, producten, organisatie-
structuren, marktstructuren of andere bedrijfskundige doelen haalbaar zijn, in een poging om
door innovatie een voorsprong te ontwikkelen in de markt, of minimaal om geen achterstand
op te lopen.
Ook in deze innovatieve context, zijn inzichten m.b.t. bouw- en managementaspecten re-
levant. Bij het bouwen van innovatieve systemen, ligt de problematiek echter deels anders
dan bij klassieke informatiesystemen. Ten eerste hebben veel nieuwe technologieën (lichtjes)
andere manieren van ontwerpen en programmeren. Ten tweede wordt van een innovatief
systeem dikwijls in een eerste, experimentele fase een kleinschalig prototype gemaakt dat los
staat van de andere informatiesystemen. Nadat deze prototypes succesvol zijn bevonden,
dienen deze te worden aangepast om op realistische, meer grootschalige volumes te werken in
een productie- i.p.v. experimentele context. Dit verwijst naar de problematiek van het scha-
len van informatiesystemen, die niet evident is, maar wel vereenvoudigd wordt door recente
technologieën zoals de cloud, waar een grotere schaal kan worden bereikt door op relatief
eenvoudige wijze meerdere processoren in te schakelen. Ten tweede is er de problematiek
van het integreren van het prototype met de overige informatiesystemen. Al bestaan er ook
hiervoor hulpmiddelen, innovatieve informatiesystemen blijven zorgen voor uitdagingen wat
betreft bouwaspecten.
1.2 Informatie
We kunnen het DIKAR-model illustreren aan de hand van de beslissingen die een bedrijf
zou kunnen nemen om te komen tot een verbetering van het marktaandeel van een bepaald
product.
Ten eerste moet data beschikbaar zijn over het huidig aantal verkopen van het product.
Hierbij moet bepaald worden hoe gedetailleerd de data verzameld wordt (moet van elke klant
bijv. het adres en de leeftijd gekend zijn?).
Op basis van deze data moet dan relevante informatie geaggregeerd worden. Zo kan op
basis van de adressen van klanten een overzicht gemaakt worden van de verkopen per regio,
per leeftijdscategorie, of per combinatie van regio en leeftijdscategorie. Deze informatie zou
kunnen tonen dat een bepaalde leeftijdsgroep in een regio minder goed vertegenwoordigd is
in vergelijking met diezelfde leeftijdsgroep in andere regio’s.
In de derde stap (kennis) kan deze informatie verder onderzocht worden en aangevuld met
andere informatie, ervaring en expertise. Zo zou men kunnen argumenteren dat er in die regio
minder bekendheid is omdat er minder evenementen gesponsord worden door het bedrijf.
Gebaseerd op deze kennis kan men actie ondernemen en specifieke evenementen voor die
leeftijdsgroep in die regio gaan ondersteunen (actie).
Via het monitoren van de verkoopcijfers in die regio kan men dan het succes van het initiatief
opvolgen en vergelijken met de verrichte investeringen (resultaat).
In de literatuur wordt, net als in het DIKAR-model, een onderscheid gemaakt tussen data,
informatie en kennis. Bij data gaat het om ‘ruwe feiten die een bepaald fenomeen,
concept of gebeurtenis beschrijven’. Het gaat dan om feiten, zonder verdere betekenis
of interpretatie. Voorbeelden zijn bijv. het getal ‘18’, of het woord ‘Kerkstraat’.
Bij informatie gaat het om ‘data die een specifieke betekenis heeft in een specifieke
context’. Dat is het geval wanneer duidelijk wordt dat ‘18’ het aantal bestellingen is van
een klant bij een organisatie in 2019, of dat ‘Kerkstraat’ de straatnaam van het leverings-
adres van die klant is. Het getal ‘18’ en het woord ‘Kerkstraat’ krijgen in deze context een
bedrijfskundige betekenis.
1.2 Informatie 10
Deze definities betekenen dat het onderscheid tussen data en informatie enigszins relatief en
zelfs subjectief is. Het hogergenoemde getal ‘18’ kan voor één persoon geen zinvolle betekenis
hebben, terwijl het voor een andere persoon juist cruciale informatie is. Het is zelfs mogelijk
dat het getal ‘18’ voor dezelfde persoon na verloop van tijd geen betekenis meer heeft in
de context van de bedrijfskundige beslissingen die moeten genomen worden en dus opnieuw
louter data is.
Bij kennis gaat het om ‘het begrijpen van een bepaald onderwerp, onder meer door
gebruik van bepaalde hoeveelheden informatie, ervaring en expertise’. Of nog, bij
kennis gaat het om meer dan louter informatie, een soort ‘know how’. Het gaat bijv. over
het weten hoe er moet omgegaan worden met klanten die tot op vandaag in een jaar 18
bestellingen hebben geplaatst. Weten we uit ervaring of uit expertise (in deze sector) of het
dan aangewezen is om extra marketing inspanningen te leveren? Het zou bijv. kunnen dat
een terugval in bestellingen jaarlijks voorkomt rond een zekere tijdsperiode of in een seizoen,
maar dat marketing inspanningen in het verleden al hebben bewezen daar weinig impact op
te hebben.
Reële wereld
Klant Werknemer
Feedback
DIKAR's
Verwerking actie / resultaat
Data Informatie
Modellen
Dit perspectief stelt in feite dat informatie en informatiesystemen een model vormen van de
reële wereld. Een model is een abstractie: bepaalde aspecten van de reële wereld worden
in het model opgenomen en beschouwd, terwijl andere aspecten niet worden beschouwd (er
1.2 Informatie 11
wordt abstractie van gemaakt). Een model is hierdoor partieel en minder complex dan de
achterliggende reële wereld. Een model wordt uitgedrukt in tekens of symbolen, zoals getallen
en cijfers. Daarbij is het van belang dat deze tekens of symbolen syntactisch correct zijn naar
vorm, terwijl ook de semantiek of betekenis van belang is (zie paragraaf 1.2.7).
Er zijn veel voordelen aan het maken van een informatie-spiegel: soms is het sneller of
efficiënter om een berekening te maken op basis van de informatie-spiegel dan in de reële
wereld. Dit geldt bijv. bij het bepalen van de fysieke voorraad van een product: het kan veel
sneller zijn om op papier of met software de voorraad te bepalen dan door fysiek door een
magazijn te lopen. De informatie-spiegel kan ook veel preciezer zijn. Met name computers
kunnen berekeningen maken met een precisie die in de reële wereld moeilijk te behalen is. Een
voorwaarde is wel dat de kwaliteit van de informatie-spiegel goed is: als het model niet correct
is door bijv. onvolledigheden, vervallen deze voordelen. Verschillende kwaliteitskenmerken
van de informatie-spiegel worden besproken in deelparagraaf 1.2.6.
De informatie-spiegel veronderstelt dat we de reële wereld kunnen voorstellen door middel van
symbolen of tekens die het model bruikbaar en leesbaar maken voor mensen en computers.
Een eerste categorie data representatie is gericht op mensen en verwerking door mensen.
Klassiek wordt de reële wereld beschreven door bijv. getallen die voorraadniveaus, bestel-
lingen enz. voorstellen. Recent worden, door de steeds grotere noden en mogelijkheden aan
informatieverwerking, ook nieuwe representatiewijzen voorgesteld zoals bijv. tag clouds, word
clouds en data clouds. Dit zijn visuele weergaven van de inhoud van bijv. een pagina op een
website, of een tekst, waarbij termen die meer voorkomen op de pagina of tekst groter worden
weergegeven dan andere.
Een tweede categorie data representatie is gericht op verwerking door machines of computers.
Computers werken sinds hun ontstaan intern met binaire data representaties. Een recente
evolutie is bijv. dat er ook gegevens worden voorgesteld m.b.v. Quick Response (QR) codes.
QR codes zijn gericht op gebruik door computers, waarbij ze ingescand worden en intern
binair voorgesteld. Alle informatie in een computer wordt opgeslagen als een serie bits (van
binary digit). Elke bit wordt opgeslagen in een transistor, die de waarde 0 of 1 kan voorstellen.
Een processor in een PC bestaat tegenwoordig uit miljarden transistoren. Deze transistoren
hebben de miniaturisatie van computers mogelijk gemaakt, aangezien ze veel kleiner gemaakt
kunnen worden dan de lampen waarmee in vroege computers bits werden opgeslagen.
Een groepering van een afgesproken aantal bits wordt een byte genoemd. Een veelvoorko-
mende afspraak voor een byte-lengte is 8 bits, waardoor 28 of 256 verschillende mogelijke
combinaties gevormd kunnen worden. Een getal dat opgeslagen is in een byte kan dus een
waarde van 0 tot 255 hebben.
Bij deze tweede categorie wordt er een onderscheid gemaakt tussen gestructureerde, semi-
gestructureerde en ongestructureerde data.
Bij gestructureerde data gaat het om enkelvoudige datatypes zoals getallen en strings,
alsook geaggregeerde datatypes zoals arrays en records.
1.2 Informatie 12
Enkelvoudige datatypes bevatten één enkel stuk data. Ze kunnen bijv. de prijs van een
product bevatten. De volgende enkelvoudige datatypes komen veel voor:
• Integer: een geheel getal. Het aantal bytes dat in het geheugen toegewezen wordt
bepaalt hoe groot het getal is dat opgeslagen kan worden.
• Real: een rationeel (of komma-)getal. Een rationeel getal wordt intern voorgesteld als
een geheel getal en een exponent, die de plaats van de komma bepaalt.
• Datum: een datatype dat een specifieke syntax voorschrijft om een datum op te slaan
(bijv. YYYY-DD-MM).
Indien tekst opgeslagen wordt zoals bij een string, worden bits en bytes geïnterpreteerd als
letters d.m.v. een tekenset. Een tekenset bevat dan de afspraken over welke letter of karakter
door welke byte worden gerepresenteerd. Belangrijke tekensets zijn:
• EBCDIC : de Extended Binary Coded Decimal Interchange Code (EBCDIC) werd ont-
wikkeld door IBM voor gebruik op mainframe computers. EBCDIC gebruikt 8-bit
bytes. De representatie van karakters is gebaseerd op de ponskaarten die vroeger in
mainframes gebruikt werden. In EBCDIC wordt de letter ‘a’ weergegeven door de byte
10000001.
• Unicode: Unicode is ontwikkeld met als doel alle gebruikte schriften (inclusief bijv.
het Griekse en het Chinese schrift en braille) te kunnen weergeven. Gezien het groot
aantal tekens dat hierdoor beschouwd wordt, gebruikt de volledige Unicode tekenset
maar liefst 32 bits (UTF-32 genaamd). Om opslagvereisten toch te kunnen beperken,
kunnen kleinere versies van de Unicode tekenset gebruikt worden. UTF-16 gebruikt 16
bits en bevat geen Chinese tekens. UTF-8 gebruikt 8 bits en biedt dezelfde tekens als
extended ASCII. In UTF-8 wordt de letter ‘a’ weergegeven door 00111101.
Dit overzicht maakt duidelijk waarom bij gestructureerde informatie in bestanden steeds
de tekenset moet aangeduid worden: een bepaalde serie bits kan immers op verschillende
manieren geïnterpreteerd worden.
index gebruiken, spreken we van een ééndimensionale array. Zo geeft figuur 1.3 de prijzen
van 5 verschillende producten weer. We kunnen echter ook meerdere indices gebruiken.
Veronderstel dat we de prijzen per product willen laten variëren in verschillende landen. Om
alle prijzen van onze 5 producten in drie verschillende landen weer te geven, hebben we een
lijst nodig met twee dimensies, zoals getoond in figuur 1.4. Deze figuur toont eigenlijk een
rekenblad, zoals gebruikt in verschillende spreadsheet-pakketten zoals bijv. Microsoft Excel.
We moeten nu één index gebruiken om het product aan te geven waarvan we de prijs willen
kennen en één index om het land aan te duiden. Veronderstel nu dat men over de tijd wil
bijhouden wat, per product, de verschillende prijzen per jaar waren in elk land. Men zal dan
nog een index moeten toevoegen om aan te geven van welk jaar de prijs is. Zo ontstaat er
een drie-dimensionale lijst. We kunnen deze visualiseren als verschillende tabbladen van een
rekenblad, zoals getoond in figuur 1.5. Het is ook mogelijk om 4, 5,…-dimensionale lijsten te
definiëren. Deze zijn echter moeilijk te visualiseren.
120
85
137
415
65
Indien we verschillende gegevens willen opslaan die niet van hetzelfde enkelvoudig datatype
zijn, worden records gebruikt. Veronderstel bijv. dat de personeelsdienst het personeels-
nummer, de voornaam, de achternaam en het uurloon van een personeelslid wil opslaan. We
kunnen hiervoor geen lijst gebruiken, omdat we verschillende types van gegevens hebben.
1.2 Informatie 14
We kunnen een record voorstellen als een steekkaart, waarop verschillende soorten data zijn
weergegeven. In figuur 1.6 zijn bijv. een integer, twee strings en een real datatype weergege-
ven.
Net zoals we meerdere enkelvoudige waarden bijhouden in een array, kunnen we ook meerdere
records weergeven. We krijgen zo als het ware een array van records, zoals afgebeeld in
figuur 1.7.
Relationele databanken, die tegenwoordig het meest gebruikte type databanken zijn, gebrui-
ken intern een data representatie op basis van tabellen (of nog, relationele tabellen), wat
neerkomt op een array van records. In een tabel geven de kolommen aan welke gegevens in
elk record moeten worden opgeslagen. Bij een tabel worden dit de attributen genoemd.
In figuur 1.8 zijn de attributen CustomerId, CompanyName, ContactName, ContactPhone,
ContactEmail en DeliveryAddress. De rijen in de tabel geven dan de verschillende records
weer. Dit illustreert de tabel als een array van records. De sleutel van een tabel is een
combinatie van één of meer attributen die een rij of record uniek identificeren. Bij een tabel
wordt dus een sleutel gebruikt om naar een bepaald record te verwijzen, geen index zoals bij
een array.
Tabellen kunnen in isolatie van elkaar gebruikt worden. Echter, een attribuut kan naast
een enkelvoudige waarde ook een verwijzing naar een record in een andere tabel bevatten.
Zo verwijst een record van een klant in figuur 1.8 naar een adres-record bij het attribuut
deliveryAddress. In plaats van de eigenlijke data van het adres, wordt hier de waarde van
1.2 Informatie 15
de sleutel van een record in de adres-tabel bijgehouden. De data over het eigenlijke adres
bevindt zich dan in die tabel.
Het gebruik van relationele tabellen veronderstelt echter dat de opgeslagen data homogeen
is.1 Elk record van een bepaald type bevat steeds dezelfde attributen. Dit noemen we hori-
zontale homogeniteit. Bovendien bevat elk veld voor alle records hetzelfde type informatie.
Dit noemen we verticale homogeniteit. In gevallen waar de data niet homogeen is, is een
relationele tabel echter geen optimale manier om data op te slaan. Stel dat er data over
kledij opgeslagen moet worden. Hoewel we het eens kunnen zijn dat broeken, sokken, on-
dergoed en hoeden kledij zijn, is het moeilijk om een type van record te specificeren waar
alle velden steeds relevant zijn. Dit is een voorbeeld waar de horizontale homogeniteit ont-
breekt. Een andere mogelijkheid is het ontbreken van verticale homogeniteit. Veronderstel
dat bedrijfswagens toegewezen kunnen worden aan ofwel individuele werknemers, ofwel aan
departementen voor wisselend gebruik. Aangezien de verwijzing naar een werknemer waar-
schijnlijk een andere vorm heeft dan de verwijzing naar een departement, is het moeilijk om
een vaste vorm vast te leggen voor de record die de toewijzing van wagens beschrijft.
De structuur die opgelegd wordt aan data binnen bijv. relationele tabellen of boomstructuren
bestaat niet altijd. Bij ongestructureerde data gaat het over bijv. afbeeldingen, audio en
video. Dit soort informatie wordt als één grote, lange rij bits gerepresenteerd in een computer.
Dit wordt een Binary Large OBject (BLOB) genoemd. Een computer kan de interne structuur
van muziek (bijv. strofen en refreinen) niet opmaken uit die BLOB representatie, vandaar
de term ongestructureerd.
Afbeeldingen worden ook in bits opgeslagen, waardoor een andere interpretatie van bits dan
met een tekenset nodig is. Een afbeelding wordt weergegeven door een bitmap, wat een
raster is waarvan de cellen pixels genoemd worden. Van elke cel wordt de kleur opgeslagen.
Als we uitgaan van een tweekleurige weergave, kan de bitmap-representatie van een afbeelding
weergegeven worden zoals in figuur 1.9. Hier wordt een gekleurde pixel opgeslagen als een
1-bit en een niet-gekleurde pixel als een 0-bit. Het teken voor de letter ‘a’ wordt hier dus
weergegeven als 001000101010001111111000110001. Merk op dat een interpretatie van deze
bits als afbeelding wel voor eindgebruikers duidelijk maakt dat de letter ‘a’ weergegeven
wordt, maar dat een informatiesysteem deze weergave niet begrijpt.
1
Kent W. (1979). Limitations of Record Based Information Models. ACM Transactions on Database
Systems 4(1).
1.2 Informatie 16
Bij semi-gestructureerde data gaat het over bijv. teksten, documenten en e-mails. Bij de
representatie van een e-mail is er wel een interne structuur: er wordt bijv. aangegeven wie
de verzender en de bestemmeling(en) zijn, alsook wat het onderwerp is. Echter, de tekst van
de boodschap kan opnieuw beschouwd worden als één geheel waarin de computer weinig of
geen structuur onderkent.
Een voorbeeld van een XML-document, genaamd CustomerOrders.xml, ziet er als volgt uit2
2
https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/linq/sample-xml
-file-customers-and-orders-linq-to-xml-2
1.2 Informatie 17
33 <CustomerID>ACW</CustomerID>
34 <EmployeeID>6</EmployeeID>
35 <OrderDate>2024-05-06T00:00:00</OrderDate>
36 <RequiredDate>2024-05-20T00:00:00</RequiredDate>
37 <ShipInfo ShippedDate="2024-05-09T00:00:00">
38 <ShipVia>2</ShipVia>
39 <Freight>3.35</Freight>
40 <ShipName>Hoofdwinkel Antwerpse Chocolade</ShipName>
41 <ShipAddress>Hagedoornstraat 20</ShipAddress>
42 <ShipCity>Antwerpen</ShipCity>
43 <ShipRegion>AN</ShipRegion>
44 <ShipPostalCode>2000</ShipPostalCode>
45 <ShipCountry>België</ShipCountry>
46 </ShipInfo>
47 </Order>
48 <Order>
49 <CustomerID>EUNV</CustomerID>
50 <EmployeeID>3</EmployeeID>
51 <OrderDate>2023-12-06T00:00:00</OrderDate>
52 <RequiredDate>2024-01-03T00:00:00</RequiredDate>
53 <ShipInfo ShippedDate="2023-12-09T00:00:00">
54 <ShipVia>2</ShipVia>
55 <Freight>20.12</Freight>
56 <ShipName>Export United Warehouse A</ShipName>
57 <ShipAddress>Koolmijnenkaai 1E</ShipAddress>
58 <ShipCity>Brussel</ShipCity>
59 <ShipRegion>BR</ShipRegion>
60 <ShipPostalCode>1000</ShipPostalCode>
61 <ShipCountry>België</ShipCountry>
62 </ShipInfo>
63 </Order>
64 </Root>
Merk op dat het gebruik van kleur in het voorbeeld louter illustratief is om dit leesbaarder
te maken. In realiteit bestaat een XML-document uit tekst zonder opmaak.
Elementen worden omringd door < en > tekens, bijvoorbeeld de elementen ‘Customers’,
‘Customer’ en ‘CompanyName’. Een XML-element kan ook attributen bevatten. Zulke attri-
buten worden opgegeven als key-value pairs: attribuut=”waarde”. Een attribuut kan slechts
één waarde bevatten, en maar één keer voorkomen in één element. In dit voorbeeld is ‘Cus-
tomerID’ een attribuut van het element ‘Customer’.
De boomstructuur van dit XML-document kan worden voorgesteld zoals in figuur 1.10.
Een XML Schema Definition (XSD) is een taal voor het beschrijven van de structuur van
XML-documenten, vastgelegd in standaarden. Hiermee kan men schema’s maken voor XML-
documenten, waarmee deze documenten formeel worden gespecificeerd, en op grond waarvan
zij kunnen worden gevalideerd.
1.2 Informatie 18
Root
Customers
Customer CustomerID
CompanyName
...
FullAddress
Address
...
Orders
Order
CustomerID
...
ShipInfo
ShipVia
...
3
https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/linq/sample-xsd
-file-customers-and-orders1
1.2 Informatie 19
13 <xs:element name='Orders'>
14 <xs:complexType>
15 <xs:sequence>
16 <xs:element name='Order' type='OrderType' minOccurs='0'
,→ maxOccurs='unbounded' />
17 </xs:sequence>
18 </xs:complexType>
19 </xs:element>
20 </xs:sequence>
21 </xs:complexType>
22 <xs:key name='CustomerIDKey'>
23 <xs:selector xpath='Customers/Customer'/>
24 <xs:field xpath='@CustomerID'/>
25 </xs:key>
26 <xs:keyref name='CustomerIDKeyRef' refer='CustomerIDKey'>
27 <xs:selector xpath='Orders/Order'/>
28 <xs:field xpath='CustomerID'/>
29 </xs:keyref>
30 </xs:element>
31 <xs:complexType name='CustomerType'>
32 <xs:sequence>
33 <xs:element name='CompanyName' type='xs:string'/>
34 <xs:element name='ContactName' type='xs:string'/>
35 <xs:element name='ContactTitle' type='xs:string'/>
36 <xs:element name='Phone' type='xs:string'/>
37 <xs:element name='Fax' minOccurs='0' type='xs:string'/>
38 <xs:element name='FullAddress' type='AddressType'/>
39 </xs:sequence>
40 <xs:attribute name='CustomerID' type='xs:token'/>
41 </xs:complexType>
42 <xs:complexType name='AddressType'>
43 <xs:sequence>
44 <xs:element name='Address' type='xs:string'/>
45 <xs:element name='City' type='xs:string'/>
46 <xs:element name='Region' type='xs:string'/>
47 <xs:element name='PostalCode' type='xs:string' />
48 <xs:element name='Country' type='xs:string'/>
49 </xs:sequence>
50 <xs:attribute name='CustomerID' type='xs:token'/>
51 </xs:complexType>
52 <xs:complexType name='OrderType'>
53 <xs:sequence>
54 <xs:element name='CustomerID' type='xs:token'/>
55 <xs:element name='EmployeeID' type='xs:token'/>
56 <xs:element name='OrderDate' type='xs:dateTime'/>
57 <xs:element name='RequiredDate' type='xs:dateTime'/>
58 <xs:element name='ShipInfo' type='ShipInfoType'/>
59 </xs:sequence>
60 </xs:complexType>
61 <xs:complexType name='ShipInfoType'>
62 <xs:sequence>
63 <xs:element name='ShipVia' type='xs:integer'/>
64 <xs:element name='Freight' type='xs:decimal'/>
65 <xs:element name='ShipName' type='xs:string'/>
66 <xs:element name='ShipAddress' type='xs:string'/>
67 <xs:element name='ShipCity' type='xs:string'/>
68 <xs:element name='ShipRegion' type='xs:string'/>
69 <xs:element name='ShipPostalCode' type='xs:string'/>
70 <xs:element name='ShipCountry' type='xs:string'/>
71 </xs:sequence>
72 <xs:attribute name='ShippedDate' type='xs:dateTime'/>
73 </xs:complexType>
74 </xs:schema>
Aan de elementen en attributen wordt een datatype toegewezen, bijvoorbeeld op lijn 56 van
het XSD-document wordt bepaald dat de ‘OrderDate’ een geldige dateTime moet zijn.
1.2 Informatie 20
Zo’n XML-boomstructuur is heel geschikt voor teksten, die volgens een boomstructuur ge-
organiseerd zijn. Er bestaan zelfs standaarden zoals OpenDocument die het representeren
en opslaan van documenten, rekenbladen en presentaties in XML-formaat mogelijk maken.
Indien data zeer fijn wordt beschreven door middel van XML-tags, kan deze zelfs als gestruc-
tureerd beschouwd worden. Bij gestructureerde data zoals records wordt XML bijv. gebruikt
om deze te versturen over netwerken.
Een andere mogelijkheid is het toevoegen van gestructureerde data aan ongestructureerde
data. Zo kunnen aan ongestructureerde MP3 muziekbestanden tags worden toegevoegd die
onder meer de titel en artiest van het nummer beschrijven. Deze gestructureerde informatie
wordt als XML-data na de ongestructureerde BLOB ‘geplakt’, zodat bepaalde verwerkingen
toch uitgevoerd kunnen worden.
Over het algemeen geldt: hoe meer structuur in de data representatie aanwezig is of wordt
toegevoegd, hoe meer verwerkingsmogelijkheden de computer heeft.
De hogergenoemde vormen van data representatie hebben het mee mogelijk gemaakt dat
een enorme waaier aan informatie tegenwoordig digitaal beschikbaar is. Initieel was er in
de beleidsinformatica vooral aandacht voor het representeren van transacties. Transacties
worden gezien als de elementaire gebeurtenissen in een organisatie, zoals een aankoop, een
voorraadbeweging en een verkoop.
Echter, recent is ook steeds meer gedragsgerelateerde informatie beschikbaar, met name door
de aanwezigheid van ICT in producten zoals smartphones, auto’s en andere. Zo bieden
smartphones bijv. informatie over de locatie van klanten, en sociale media websites over
voorkeuren qua meningen en producten. Deze gedragsgerelateerde informatie komt de afge-
lopen jaren in enorme hoeveelheden beschikbaar, en heeft de hoeveelheid en waaier digitale
informatie die beschikbaar is, sterk doen toenemen.
Deze enorme waaier kan verhullen dat er tegelijkertijd ook beperkingen zijn aan de represen-
tatie van de reële wereld. Hierboven vermeldden we al de beperkingen van ongestructureerde
data. Zo is het momenteel nog niet echt mogelijk om aan een computer te vragen “geef me
alle foto’s met gele auto’s”, omdat een computer de objecten (of nog, structuren) op de foto
niet herkent – tenzij er artificiële intelligentie wordt ingeschakeld (zie hoofdstuk 5). Sommige
begrippen zijn ook niet zo evident om digitaal voorgesteld te worden. Denk maar aan bijv.
“geef me alle leuke e-mails in mijn inbox”.
Tenslotte vermelden we qua beperking ook het begrip ‘tacit knowledge’. Tacit knowledge is
ontastbare kennis en kan daardoor moeilijk of niet geëxpliciteerd of gecommuniceerd en over-
gedragen worden. Soms wordt het begrip ‘know how’ met tacit knowledge geassocieerd. Tacit
knowledge wordt opgebouwd door ervaring. Organisaties hebben in vele gevallen aanzienlijke
hoeveelheden tacit knowledge over hun werknemers. Die kennis kan betrekking hebben op
productieprocessen, maar ook marketing- of accountancy ervaring. Doordat dit soort ken-
nis moeilijk kan worden geëxpliciteerd, is het duidelijk dat de informatie-spiegel die we in
1.2 Informatie 21
deze paragraaf hebben behandeld, ondanks de enorme hoeveelheid digitale informatie die er
momenteel beschikbaar is, toch nog beperkingen vertoont.
1.2.5 Verwerking
In de vorige deelparagraaf hebben we gezien hoe data kan gerepresenteerd worden voor ver-
werking door mens en/of computer. Deze verwerking zet data om naar informatie, waardoor
data zinvol wordt in een beslissingsperspectief. In vergelijking met andere types computer-
systemen (zoals schaakcomputers) moeten informatiesystemen in organisaties doorgaans geen
complexe algoritmes voor deze verwerking uitvoeren: de nadruk ligt veeleer op het verwerken
van grote hoeveelheden data.
Een typische verwerking bestaat uit het selecteren van data, waarbij uit een grote hoeveel-
heid data precies het relevante stuk kan worden geselecteerd. Een voorbeeld hiervan is het
opzoeken van een telefoonnummer van een klant in een databank. Een andere vorm is het
aggregeren van data. Dat gebeurt bijv. bij het bepalen van het totaal bedrag aan verkopen
per verkoper per maand. Het aggregatieniveau kan sterk oplopen, tot het totaal van alle
verkopen van alle verkopers gedurende meerdere jaren. Een andere soort verwerking is het
sorteren van data volgens één of meerdere criteria. Deze vormen van verwerking zijn allemaal
relatief eenvoudig in de zin dat er geen complexe verwerking in de vorm van statistische of
wiskundige algoritmes voor nodig is.
De kwaliteit van informatie en de data waarop ze gebaseerd is, kan beschreven worden aan
de hand van verschillende kenmerken.
• Correctheid: op zich verwijst correctheid naar het fouten-vrij zijn van data en infor-
matie. De kost van het fouten-vrij zijn houden stijgt echter met de hoeveelheid en
complexiteit van de onderliggende data. Daarom wordt dikwijls naar een kosteneffici-
ënte vorm van correctheid gezocht, in plaats van volledige correctheid.
4
http://www.gps.gov/systems/gps/performance/accuracy/
1.2 Informatie 22
• Beschikbaarheid: informatie heeft geen waarde als ze niet beschikbaar is. Is er toegang
tot de informatie wanneer het nodig is en waar ze nodig is? Als er een besluit genomen
moet worden om een bepaald aandeel al dan niet te kopen, is er op dat moment toegang
nodig tot de prijs van dat aandeel. Bovendien moet de informatie beschikbaar zijn
vanop een bepaalde locatie. Idealiter maakt het niet uit waar de informatie opgeslagen
is, indien ze via een netwerk beschikbaar is. Als er problemen met het netwerk zijn, kan
echter voorkomen worden dat informatie voor bepaalde gebruikers niet beschikbaar is.
Syntaxis en semantiek zijn twee aspecten van informatie die behoren tot de semiotiek, die
tekens en tekensystemen bestudeert. Traditioneel ligt de focus vooral op tekens die een na-
tuurlijke taal weergeven, zoals het Nederlands. Informatie wordt echter ook steeds met een
tekensysteem weergegeven, zodat de semiotiek ook belangrijk is voor de studie van informa-
tiesystemen.
De tweede zin gaat in tegen een aantal afspraken die vastliggen in de Nederlandse taal: de zin
begint niet met een hoofdletter, eindigt niet met een punt en het onderwerp en werkwoord
staan in de verkeerde volgorde. Deze zin is dan ook slechter verstaanbaar dan de eerste,
grammaticaal correcte, zin.
Natuurlijke talen (zoals Nederlands) zijn minder strikt in het volgen van syntaxis dan formele
talen, zoals wiskunde of programmeertalen. Denk aan het huidig gebruik van zogenaamde
sms-taal, die door vele mensen als verstaanbaar wordt beschouwd, maar die niet de syntaxis-
regels van het Nederlands volgt. Een fout tegen de syntaxis in een computerprogramma zorgt
echter voor het niet kunnen uitvoeren van het programma.
Zinnen of informatie die een correcte syntaxis hebben, zijn daarom nog niet betekenisvol.
De beroemde taalwetenschapper Chomsky gebruikte hiervoor als voorbeeld de zin “Colorless
green ideas sleep furiously”. Deze zin heeft een correcte syntaxis, maar mist betekenis. We
noemen de studie van de betekenis de semantiek. De semantiek of betekenisleer beschrijft
de betekenis van een boodschap overgebracht tijdens een communicatieve daad. Semantiek
van informatie heeft betrekking op bijv. de definitie van concepten zoals klant, leverancier,
verkoop, product enz. Op dit moment is het zo dat bij de bouw van informatiesystemen de
nadruk ligt op het laten bepalen van de semantiek door toekomstige eindgebruikers van het
informatiesysteem. Deze werkwijze heeft als voordeel dat de definities nauw zouden aansluiten
bij de noden en wensen van eindgebruikers, maar zorgt er ook voor dat de definities van deze
concepten kunnen verschillen tussen verschillende systemen.
Stel bijv. dat een eerste eindgebruiker uit de logistieke afdeling met het ‘adres’ van een
klant het leveringsadres bedoelt. Een tweede eindgebruiker in de financiële afdeling kan
voor zijn/haar informatiesysteem met ‘adres’ het facturatie-adres bedoelen, wat voor grote
organisaties kan verschillen van het leveringsadres.
Dit heeft verschillende nadelen, bijv. als systemen met verschillende semantiek moeten geïnte-
greerd worden. Het zou dan kunnen dat bijv. bepaalde ‘producten’ uit één informatiesysteem
niet overeenkomen met producten uit een tweede informatiesysteem. Ook kunnen er inter-
pretatieproblemen ontstaan waardoor foutieve bedrijfskundige conclusies worden getrokken.
Zo moet bijv. opgelet worden om klanten met verschillende leverings- en facturatie-adressen
niet foutief te interpreteren als twee verschillende klanten van de organisatie. Dergelijke pro-
blemen voeden een tendens naar standaardisatie van semantiek. Op meerdere deeldomeinen
van de bedrijfskunde zijn er XML-gebaseerde standaarden voorgesteld die afspraken rond de
semantiek vastleggen, zoals Human Resources-XML (HR XML) en de eXtensible Business
Reporting Language (XBRL).
1.3 Informatiesystemen 24
1.3 Informatiesystemen
Deze typologieën zouden de indruk kunnen wekken dat een concreet informatiesysteem in de
praktijk moet behoren tot slechts één soort in één classificatie. Dit is echter onwaarschijnlijk.
Deze typologieën behandelen verschillende aspecten van informatiesystemen. Daardoor zal
een concreet informatiesysteem in de praktijk aspecten bevatten van meerdere soorten infor-
matiesystemen, nog los van het feit dat er soms sprake is van beperkte overlapping tussen
bepaalde soorten informatiesystemen in de typologieën.
Enge, technische definitie: Een enge, technische definitie kan bestaan uit het feit dat
een informatiesysteem input uit de reële wereld (data) opslaat en verwerkt tot output voor
een specifiek doel van een gebruiker. We illustreren dit in figuur 1.11.
Informatiesysteem
Applicatie-
software
Input Output
Reële wereld
Bestanden, Eindgebruiker
databanken
Een dergelijke definitie vinden we bijv. terug bij Turban, die stelt dat “Informatiesystemen
systemen zijn die informatie produceren als output door data te verzamelen, te verwerken,
op te slaan, te analyseren en te verspreiden voor een bepaald doel”5 . Het informatiesysteem
vervult dus drie functies: het opslaan van gegevens (statisch), het verwerken van gegevens via
processen (dynamisch) en het rapporteren van gegevens. Aangezien de gebruiker van deze
informatiesystemen een onderdeel vormt van de reële wereld en beslissingen neemt die de reële
wereld beïnvloeden, is er sprake van feedback in het systeem. Naarmate informatiesystemen
5
Turban, E. (2012). Information Technology Management.
1.3 Informatiesystemen 25
meer worden ingevoerd en beslissingen vaker genomen worden op basis van hun output,
neemt de digitalisering toe. In toenemende mate wordt de gebruiker dan vervangen door een
automatische beslisser (auto-control).
Deze definitie is niet in tegenstelling met de vorige, maar breidt ze uit met aanvullende
elementen, zoals organisatorische en menselijke aspecten. Door deze toevoegingen worden
informatiesystemen beschouwd als sociotechnische systemen. Vragen over de strategische in-
tegratie, het ontwerp, de implementatie en toepassing van informatiesystemen kunnen niet
volledig beantwoord worden met enkel de technische benadering. De toevoeging van bedrijfs-
processen en mensen in de definitie van informatiesystemen zorgt dan ook voor het betrekken
van de organisatorische omgeving bij de beleidsinformatica.
• Software (programma’s)
• Data
• Bedrijfsprocessen/procedures
• Mensen
De term bedrijfsprocessen dateert van het begin van de jaren ’90. Toen werd vastgesteld
dat veel departementen over hun eigen informatiesystemen beschikten, maar dat deze niet of
nauwelijks geïntegreerd waren met de informatiesystemen van andere departementen. Men
sprak dan ook van eiland-automatisering. Soms was er zelfs sprake binnen één departement
sprake van onvoldoende integratie tussen systemen.
Bedrijfsprocessen (zie voorbeeld in figuur 1.12) werden voorgesteld als oplossing hiervoor.
Een bedrijfsproces is een sequentie, selectie en/of iteratie van activiteiten over departemen-
ten heen. Bedrijfsprocessen zijn dan ook zeer gestructureerd: elke stap wordt vooraf bepaald
of ontworpen en neergeschreven in notaties zoals stroomschema’s (flowcharts) of Business
Process Modeling Notation (BPMN)-modellen. De activiteiten in een bedrijfsproces kunnen
manueel (door een mens) of geautomatiseerd (door software) uitgevoerd worden. Dit impli-
ceert dat volgens deze brede definitie er dus is sprake van geautomatiseerde en manuele delen
van een informatiesysteem.
Een WorkFlow Management System (WFMS) is een informatiesysteem dat gebruikt kan wor-
den ter ondersteuning van een bedrijfsproces. Het zorgt ervoor dat de activiteiten uitgevoerd
worden in de volgorde die beschreven staat in het model van het bedrijfsproces. Een bepaalde
activiteit wordt uitgevoerd door een bepaald informatiesysteem aan te sturen (geautomati-
seerde activiteit), of door een taak aan een medewerker te bezorgen (manuele activiteit).
Bedrijfsprocessen worden tegenwoordig zeer veel gebruikt in organisaties. Er kan dus ge-
steld worden dat de organisatiestructuur tegenwoordig in een aanzienlijke mate bestaat uit
de combinatie van departementen met een aantal bedrijfsprocessen. De voordelen van be-
drijfsprocessen zijn onder meer:
• Bedrijfsprocessen die over meerdere departementen heen gaan, zorgen voor integratie
over departementen heen. De departementen werken minder op zichzelf, maar optima-
liseren de werking van het ganse proces. Dat leidt bijv. tot kortere doorlooptijden en
minder voorraden.
• Het werken met bedrijfsprocessen vereist dat departementen over informatie beschik-
ken over stappen die worden uitgevoerd in andere departementen. Zo moet bijv. het
departement marketing en verkoop inzicht hebben in de productieplanning en in de
boekhouding. ICT is vereist om dit mogelijk te maken en daarom wordt ook wel gesteld
dat ICT de ‘enabling technology’ is van bedrijfsprocessen. Zonder deze automatisatie
zou de doorstroming van informatie veel te traag en incorrect zijn om de verschillende
departementen te coördineren en integreren. Door deze beschikbaarheid van informatie
wordt ook wel gesteld dat bedrijfsprocessen leiden tot hogere transparantie.
Van de voordelen van bedrijfsprocessen werd initieel zeer veel verwacht. Er werd gesteld dat
het invoeren van bedrijfsprocessen in feite neer kwam op een herontwerp van de organisa-
tie, of nog, Business Process Re-engineering (BPR). Bedrijfsprocessen werden gezien als een
fundamenteel nieuwe manier van denken over organisaties die tot grote efficiëntiewinsten kon
leiden. Hammer en Champy stelden bijvoorbeeld:
7
Hammer, M. and Champy, J. A. (1993). Reengineering the Corporation: A Manifesto for Business
Revolution.
1.3 Informatiesystemen 27
Een eerste typologie van informatiesystemen heeft betrekking op de rol die informatiesys-
temen spelen in de opslag van data en de verwerking van data tot informatie. De invoer
en opslag van data vindt vooral plaats in Transaction Processing Systems (TPS) voor ge-
structureerde data en Enterprise Collaboration Systems (ECS) voor semi-gestructureerde en
ongestructureerde data. De verwerking van data tot informatie vindt vooral plaats in Mana-
gement Information Systems (MIS) en Decision Support Systems (DSS). Voor de presentatie
van informatie wordt in toenemende mate gebruik gemaakt van portalen.
Het aggregatieniveau van de data in een TPS is dus het niveau van één transactie. Dat
betekent dat een TPS zeer gedetailleerde informatie bevat over de werking en toestand van
een organisatie, dikwijls zelfs de meest gedetailleerde van alle soorten informatiesystemen.
Doordat een TPS instaat voor het opslaan van deze transacties, speelt het een belangrijke
rol bij de aanmaak van het model, of nog, de informatie-spiegel van de organisatie. De
verwerking van een TPS heeft meestal betrekking op het creëren, lezen, updaten, verwijderen
en zoeken van transacties. In het Engels is er sprake van Create, Read, Update, Delete, Search
(CRUDS) verwerking.
Grote organisaties hebben zeer grote hoeveelheden transacties. Dat betekent dat de
performantie-vereisten die aan een TPS worden gesteld zeer hoog kunnen zijn. Indien moge-
lijk worden de transacties in real-time verwerkt, d.w.z. van zodra een transactie in de reële
wereld voorkomt, wordt deze onmiddellijk in het informatiesysteem ingevoerd en verwerkt.
Dit heeft als belangrijk voordeel dat de informatie-spiegel in tijd steeds gelijk loopt met de
reële wereld. Echter, dit vereist een zeer hoge performantie, met name op piekmomenten qua
aantal transacties. De vraag is dan of er op die momenten voldoende verwerkingscapaciteit
(en dus hardware) beschikbaar kan zijn, en hoe deze capaciteit benut kan worden op momen-
ten dat er minder capaciteit nodig is. In het verleden was er minder verwerkingscapaciteit ter
beschikking en werd er gebruik gemaakt van zogenaamde batch-verwerking. Daarbij worden
transacties uit de reële wereld niet onmiddellijk verwerkt, maar opgespaard in groepen (bat-
ches) die dan verwerkt werden op momenten dat er meer verwerkingscapaciteit beschikbaar
is (bijv. ’s nachts). Het nadeel hiervan is echter dat de informatie-spiegel dan een bepaalde
tijd niet actueel is, met name tot de batch verwerkt is.
Aangezien een TPS instaat voor de verwerking van elementaire gebeurtenissen van de organi-
satie, wordt ook wel gesteld dat zulke een systeem bedrijfskritisch is. Dit betekent dat het
cruciaal is voor het functioneren van een organisatie. Of nog, als een TPS onbeschikbaar is,
kan een organisatie haar kerntaken niet meer naar behoren vervullen. Ook wordt gesteld dat
een TPS voornamelijk wordt gebruikt door operationele werknemers die rechtstreeks betrok-
ken zijn in de transacties en bedrijfsprocessen. Voor management en beslissingsondersteuning
is de data in een TPS immers te gedetailleerd. Meestal is het zo dat een TPS data aanlevert
aan andere soorten informatiesystemen (zie verder) die hogere aggregatieniveaus van data
manipuleren en daardoor meer beslissingsondersteunend zijn.
1.3 Informatiesystemen 28
Qua ICT wordt een TPS dikwijls ondersteund door een databank, aangezien de meeste trans-
acties gestructureerde data met zich mee brengen, maar in toenemende mate wordt ook
semi-gestructureerde informatie verwerkt in een Content Management System.
Een intranet is eveneens een voorbeeld van een ECS. Een intranet is een netwerk binnen een
organisatie (intra) waar op internet-achtige wijze data, documenten en multimedia worden
gedeeld over producten/diensten, bedrijfsprocessen en andere aspecten van de organisatie.
Een intranet wordt afgeschermd van de buitenwereld door beveiligingsmaatregelen. Soms
wordt er ook toestemming gegeven aan leveranciers of klanten om informatie te lezen of
schrijven op het intranet. Dan spreekt men van een extranet. Qua ICT zijn ECS dikwijls
gebaseerd op Content Management Systems en Document Management Systems.
Een belangrijk onderscheidend kenmerk van een MIS is dat het gaat om vooraf gedefinieerde
rapporten. Dit betekent dat er vooraf wordt bepaald welke data geaggregeerd wordt in
het rapport en hoe deze gepresenteerd wordt. Dat betekent ook dat een MIS gericht is op
ondersteuning van beslissingen waarvoor de benodigde informatie vooraf gekend is. Dit wordt
soms een gestructureerde beslissing genoemd.
Een tweede onderscheidend kenmerk is het aggregatieniveau: dit kan variëren van laag tot
hoog (bijv. alle verkopen van één week, tot alle verkopen van een jaar). Over het algemeen
is de vereiste verwerkingscapaciteit echter lager dan bij de soorten informatiesystemen die
we verder behandelen. De timing waarop het rapport wordt aangemaakt kan meer variëren:
het kan gaan om een rapport op periodieke basis (bijv. per week), maar ook een rapport dat
op onregelmatige tijdstippen wordt opgevraagd door een beslissingsnemer (ad hoc). Het kan
echter ook gaan om rapporten die automatisch worden geproduceerd als een bepaalde status
wordt bereikt, zoals een minimumniveau van de voorraad van een bepaald product.
Qua invoer neemt een MIS data uit het TPS en zorgt het voor aggregatie en presentatie van
de informatie. Typische verwerking bestaat uit het lezen, zoeken, aggregeren en sorteren van
data. De verwerkingscapaciteit voor een MIS varieert. Echter, tegenwoordig worden zeer veel
rapporten in real-time geproduceerd, terwijl enkel degene die zeer veel performantie vragen
nog in batch worden aangemaakt. Een MIS is veelal ook iets minder bedrijfskritisch dan een
TPS: als een MIS even onbeschikbaar is, wordt de transactie zelf niet vertraagd. Aangezien
1.3 Informatiesystemen 29
een MIS data aggregeert over meerdere transacties, is de gebruiker ervan niet noodzakelijk de
operationele werknemer, maar gaat het dikwijls om een gebruiker uit het middenmanagement.
Qua ICT ondersteuning bestaat een MIS dikwijls uit rapporten of formulieren in een data-
bank, met gestructureerde informatie, eventueel aangevuld met grafieken. Een rapport in
een rekenblad behoort ook tot de mogelijkheden, maar we merken op dat een MIS gericht is
op vooraf gedefinieerde rapporten, terwijl rekenbladen juist dikwijls worden gebruikt om ad
hoc rapporten te produceren.
Een eerste onderscheidende karakteristiek is het ad hoc karakter. Terwijl een TPS en MIS
beide omgaan met vooraf gedefinieerde transacties en rapporten, gaat het bij een DSS veelal
om informatieverwerking die moeilijker vooraf te definiëren is en daardoor meer ad hoc is,
zowel qua timing als qua informatie. Het gaat dus om beslissingen die minder frequent of ad
hoc voorkomen, of die elke keer (ietwat) andere informatiebehoeften impliceren. Dit houdt
ook in dat een DSS meer interactief is: terwijl bij een MIS een voorgedefinieerd rapport wordt
geproduceerd, zal er bij een DSS interactie zijn tussen de gebruiker en het systeem waarbij
het probleem vanuit verschillende hoeken wordt bestudeerd, tot een oplossing is gevonden.
Een tweede onderscheidende karakteristiek is dat de verwerking in een DSS niet beperkt
is tot een relatief eenvoudige aggregatie, zoals bij een MIS. Meestal gaat het over model-
gebaseerde verwerking. Deze modellen kunnen bijv. verschillende scenario’s met elkaar
vergelijken. Een voorbeeld hiervan is een model dat de invloed van verschillende marke-
tingcampagnes op de verkoopcijfers toont. Sensitiviteitsanalyse wordt dan bijv. gebruikt om
te analyseren wat de impact is van wijzigingen in variabelen op een doelvariabele.
De verwerkingscapaciteit die DSS vereisen, varieert sterk door deze modelgebaseerde ver-
werking. Eenvoudige modellen kunnen zonder problemen in real-time ondersteund worden,
waardoor het interactief karakter van het DSS kan worden gerealiseerd. Meer geavanceerde
berekeningen kunnen echter enorme capaciteit vragen en tot op vandaag test dergelijke ver-
werking de limieten van de beschikbare rekencapaciteit van hardware.
DSS maken gebruik van gegevens uit TPS en MIS, eventueel aangevuld met gegevens uit
andere bronnen. Qua ICT ondersteuning werden vroegere DSS gebouwd door gegevens uit
TPS en MIS te kopiëren naar bijv. een databank of rekenblad. Ook de modelgebaseerde
verwerking werd uitgevoerd door een rekenblad, een statistisch pakket of gespecialiseerde
software, die meteen ook instonden voor de presentatie van de resultaten.
De aandacht voor DSS is sinds 2000 sterk toegenomen. Door de beschikbaarheid van steeds
krachtiger hardware, kunnen steeds uitgebreidere modellen en/of algoritmes gebruikt worden,
die nieuwe mogelijkheden bieden in vele bedrijfskundige domeinen zoals marketing, financie-
ring en andere. Samen met deze evolutie, is ook de naamgeving geëvolueerd: eerst naar de
term Data Warehouse, terwijl nu onder meer sprake is van Business Intelligence , Big Data,
Data Science en Data Mining (zie paragraaf 5.2).
1.3 Informatiesystemen 30
Een eerste kenmerk is dat een portaal gepersonaliseerd is, wat impliceert dat één of andere
vorm van authenticatie plaatsvindt bij gebruik (bijv. een gebruikersnaam en wachtwoord) .
Hierdoor weet het portaal wie de gebruiker is en wordt enkel die informatie weergegeven die
voor die gebruiker relevant is. Bij sommige portalen wordt vooraf bepaald welke informatie
moet worden getoond aan de gebruiker. Dat kan bijv. samenhangen met de bedrijfsprocessen
waarin de gebruiker betrokken is en waarin hij of zij een manuele actie of taak moet uitvoeren
(zie ook workflow management systemen). Anderzijds is het typisch voor portalen dat de
gebruiker ze zelf kan aanpassen of customiseren, of nog, de gebruiker zelf kan beslissen om
additionele informatie op het portaal te plaatsen.
Een tweede kenmerk is dat een portaal een geïntegreerde toegang biedt tot achterliggende
informatiesystemen. De integratie bestaat eruit dat de toegang tot al deze verschillende
informatiesystemen (TPS, MIS, DSS, ECS, …) aan de gebruiker wordt aangeboden op één of
een beperkt aantal schermen. Een portaal zorgt niet voor verdere integratie, zoals bijv. het
weergeven van bedragen in dezelfde munt in verschillende achterliggende informatiesystemen.
De integratie van een portaal situeert zich voornamelijk op het niveau van de user interface,
d.w.z. het louter tonen van de achterliggende data op hetzelfde scherm.
Een veelvoorkomend formaat van een portaal is een zogenaamd dashboard, waar op één
scherm alle belangrijke informatie voor de gebruiker grafisch wordt weergegeven. Dikwijls
gaat het hierbij om key performance indicators (KPIs) die grafisch worden voorgesteld.
Deze typologie heeft betrekking op de context of omgeving van het informatiesysteem. Som-
mige informatiesystemen hebben een departementale context. Ze bevatten data en infor-
matie die betrekking heeft op één departement en hebben weinig of geen verbanden of inte-
gratie met andere departementen. Zo kan een HR-departement bijv. een informatiesysteem
hebben over alle werknemers in de organisatie. Een beperking van deze informatiesystemen
is de beperkte integratie: er wordt gesproken van ‘eilanden’ van informatiesystemen, omdat
ze moeilijk te integreren zijn met informatiesystemen van andere departementen.
De term embedded systems wordt frequent gebruikt voor ICT of software die ingebed zit in een
fysiek product. De software die in een auto wordt ingebouwd, wordt bijv. hieronder begrepen.
We merken op dat dit in strikte zin niet valt onder de definitie van een informatiesysteem,
omdat de reële wereld die hier beschreven wordt geen bedrijfskundige realiteit is, maar wel
deze van bijv. het functioneren van een auto. De technische uitdagingen voor embedded
systems liggen ook aanzienlijk anders dan voor de bouw van informatiesystemen: doordat
ze ingebouwd worden is er dikwijls een heel beperkte hoeveelheid intern en extern geheugen
beschikbaar alsook een relatief minder performante processor.
Process control systems zijn systemen of software die industriële processen aansturen en
beheren. Zo wordt bijv. de software die de robots in een autoassemblagelijn aanstuurt, gezien
als een process control system. Ook zij vallen niet onder de definitie van informatiesystemen
in strikte zin, omdat de reële wereld die ze beschrijven geen bedrijfskundige realiteit is.
Eerder hebben we gesteld dat dit hoofdstuk vertrekt van de positie dat een gegeven be-
drijfskundige vraagstelling dient ondersteund te worden door informatiesystemen, wat het
ondersteunend perspectief op de beleidsinformatica is. In deze typologie van informatiesys-
temen, vermelden we eveneens de strategische informatiesystemen.
In de literatuur bestaan er een aantal raamwerken waarvan gesteld wordt dat die het iden-
tificeren van zo’n innovatieve toepassingen vergemakkelijken. Zo is er het five-forces model
van Porter (zie figuur 1.13).
Dit model stelt dat de competitieve positie van een organisatie onderhevig is aan 5 krachten:
de macht van leveranciers, de macht van afnemers, de mate waarin substituten bestaan voor
de producten in de markt, de dreiging van nieuwe toetreders tot de markt en de concurrentie
tussen de huidige spelers op de markt. Het model stelt dat de organisatie haar competitieve
positie kan verbeteren door ICT in te zetten om de hogergenoemde krachten te beïnvloeden.
Op deze manier kan de identificatie van nieuwe strategische informatiesystemen ondersteund
worden.
1.3 Informatiesystemen 32
Potentiële
toetreders
Substituten
Hardware en netwerken
In dit hoofdstuk gaan we dieper in op de technische bouwblokken (de ICT). Het is niet de be-
doeling om in erg technische details te treden, noch om een overzicht te geven van de talloze
tijdelijke evoluties (hypes), maar wel om de bedrijfskundige/econoom een inzicht te geven
in de fundamentele ontwikkelingen die hardware en netwerken, als onderliggende technolo-
gieën voor bedrijfsinformatiesystemen, hebben doorgemaakt – los van hypes en leverancier-
specifieke details. Inzicht in deze fundamentele ontwikkelingen op basis van een diepere
technologische reflectie laat de bedrijfskundige/econoom toe om verdedigbare inschattingen
te maken m.b.t. waar een organisatie staat qua infrastructuur en inzichten in ICT, welke
geschikte nieuwe innovatie-opportuniteiten zijn, en wat de risico’s van investeringen in inno-
vatieve ICT zouden kunnen zijn. Dit zijn vraagstukken waarmee de bedrijfskundige/econoom
in de toekomst nagenoeg zeker geconfronteerd zal worden.
2.1 Hardware
Alle taken van een informatiesysteem moesten initieel, in de jaren ’60 en ’70, door één machine
worden uitgevoerd. Zulke mainframe computers ondersteunden een hele organisatie met
vele gebruikers. Mainframes hadden een voor die tijd aanzienlijke verwerkingscapaciteit,
maar waren groot en duur.
De eindgebruikers van deze systemen gebruikten deze machines via thin clients of dumb
terminals. Dit zijn computers met een zeer beperkte processor- en geheugencapaciteit die
de input van de gebruiker doorgeven aan het mainframe en de output op een beeldscherm
tonen. Een mainframe verzorgt dus de verwerking van gegevens tot en met de opmaak van
de output. Deze terminals hadden enkel een tekst-gebaseerde interface en een toetsenbord
om gegevens in te geven. Van een grafische user interface (GUI) of besturing via een muis
was nog geen sprake.
Naarmate mainframes meer gebruikt werden in organisaties, groeide de nood aan meerdere
systemen en werden computers gemaakt die minder krachtig en minder duur waren dan main-
frames. De vorderingen op technologisch gebied (met name de overgang van vacuümlampen
naar transistoren) lieten bovendien toe dat computers kleiner konden worden gemaakt. Deze
machines werden ook wel mini-computers genoemd (zie figuur 2.1).
2.1 Hardware 34
Qua architectuur had dit echter geen invloed: mini-computers werden soms in verschillende
afdelingen in een organisatie gebruikt, maar van integratie tussen deze systemen was nog
geen sprake.
De toenemende mogelijkheden van hardware zorgden tevens voor meer betaalbare computers.
Een Personal Computer (PC) is een computer bestemd voor de verwerking van een aantal
persoonlijke werkzaamheden van de gebruiker, dikwijls met betere grafische mogelijkheden
in vergelijking met een mainframe. Typische PC-toepassingen zijn de Office-programma’s
(Word, Excel, Powerpoint, Access, Outlook). Met behulp van deze (en andere, meer domein-
specifieke) programma’s kunnen eindgebruikers zelfstandig aan bepaalde behoeften voor in-
formatiesystemen voldoen, zonder afhankelijk te zijn van een mainframe. Via een PC was
immers eigen verwerkingscapaciteit en opslagruimte ter beschikking, in tegenstelling tot een
‘dumb terminal’. Een traditionele PC wordt meestal aangeduid met de term desktop PC.
Reeds in de jaren ’80 was er sprake van de eerste, maar zware en eerder onhandige, (relatief)
draagbare computers, of laptops. Deze computers waren niet meer dan een draagbare versie
van gewone desktop computers. Laptops zijn echter sterk geëvolueerd. Recente laptops zijn
geoptimaliseerd qua energieverbruik (bijvoorbeeld mobiele versies van CPUs met een lager
verbruik) en gewicht. Veel componenten zijn vast en niet vervangbaar.
Tegenwoordig zijn er meer en meer laptops met functionaliteiten die men nauwelijks kent bij
gewone computers: aanraakschermen en zelfs een “tablet” modus.
Op dit moment worden alle computers gebouwd op basis van transistoren. Dat is al zo sinds
de jaren ’70, en ondanks alle talloze verbeteringen is de architectuur van computerchips en
processoren, meer bepaald de central processing unit (CPU), relatief onveranderd gebleven.
De vorm, het ontwerp en de implementatie zijn uiteraard veranderd en verbeterd, maar de
werking ervan is fundamenteel hetzelfde gebleven. Bijvoorbeeld bestond de Intel CPU 8086
van 1978, gebruikt in de eerste IBM PC’s, uit 29000 transistoren. Een recente Intel CPU
bestaat uit miljarden transistoren. Nochtans ligt de architectuur, genaamd x86 naar die pro-
cessor, nog steeds aan de basis van de meest recente Intel processoren in hedendaagse desktop-
2.1 Hardware 35
en laptopcomputers. Merk op dat de eerste versies van het grafisch besturingssysteem Mi-
crosoft Windows al op computers met een 8086 processor draaiden (zie deelparagraaf 2.1.3).
Een nieuwe evolutie is de introductie van CPU’s voor (Microsoft Windows ondersteunende)
desktop- en laptopcomputers die niet meer gebaseerd zijn op de x86 architectuur, maar de
ARM architectuur, die met een andere instructieset werkt. Dit verandert echter niets aan de
principes die we hier bespreken.
Moederbord Secundair
geheugen
USB Muis
Bus
Toetsenbord
Grafische bus
Scherm
Control
ALU
Unit
Primair
Geheugen
Socket Registers
CPU
Moederbord
Het moederbord is de basis van een computer, waarop verschillende componenten aange-
sloten worden. Het moederbord biedt eveneens de communicatiepaden of bussen tussen
de verschillende componenten. Het type aansluitingen of sockets op het moederbord be-
paalt welk type componenten gebruikt kunnen worden. Zo vereisen verschillende processoren
andere sockets en passen dus niet op eender welk moederbord.
Componenten kunnen apart toegevoegd worden, maar zijn tegenwoordig ook dikwijls geïn-
tegreerd op het moederbord of in andere componenten. Zo was de grafische kaart, die zorgt
voor de beelden die op het scherm getoond worden, vroeger steeds een aparte insteekkaart.
Hetzelfde gold voor aparte geluids- en netwerkkaarten. Recente moederborden of zelfs CPU’s
hebben een geïntegreerde grafische processor (GPU). Een aparte kaart is noodzakelijk als de
computer zwaardere grafische taken moet vervullen. Hetzelfde geldt voor de geluidskaart en
netwerkkaart, die tegenwoordig meestal geïntegreerd zijn in het moederbord.
CPU
De verwerking van instructies van een softwareprogramma gebeurt door een processor of
Central Processing Unit (CPU). Een processor bestaat uit drie hoofdcomponenten: een con-
trol unit, een Arithmetic-Logic Unit (ALU) en geheugenregisters. De ALU voert basisbereke-
ningen uit, zoals optellen, aftrekken, vermenigvuldigen, delen, vergelijken en bepalen of een
getal groter, kleiner, of gelijk is aan 0. Alle computerprogramma’s worden uiteindelijk herleid
tot deze basisberekeningen. De ALU voert deze berekeningen sequentieel uit en wordt hierbij
aangestuurd door de control unit. De control unit zorgt ervoor dat de data die bewerkt moet
worden en de instructie om op de data uit te voeren in de registers van de processor geladen
wordt. Registers zijn zeer kleine, zeer snelle geheugeneenheden. Deze snelheid is nodig omdat
een ALU miljoenen bewerkingen per seconde moet kunnen uitvoeren.
De snelheid van een processor wordt door een aantal factoren bepaald. Ten eerste bepaalt
de kloksnelheid van de processor hoeveel keer per seconde een stuk data verplaatst kan
worden of een instructie uitgevoerd kan worden. De kloksnelheid van een processor wordt
uitgedrukt in een aantal gigahertz (GHz). Ten tweede beschrijft de woordlengte het aantal
bits dat tegelijkertijd door de processor verwerkt kan worden. Huidige processoren hebben
meestal een woordlengte van 64 bits, oudere hadden 32 bits of minder. Ten derde bepaalt
het aantal kernen op de processor de totale verwerkingssnelheid. In een CPU met meerdere
kernen (multi-core) worden meerdere “processoren” verwerkt op één chip (bijv. twee kernen
bij een dual-core processor) om meer gegevens te kunnen verwerken zonder de snelheid van de
individuele kernen te moeten verhogen. Het verhogen van de snelheid van een processor met
één enkele kern (single-core) zorgt namelijk voor een te grote toename van warmte, waardoor
er sneller defecten voorkomen. Tegenwoordig bevatten processoren 4, 8 of zelfs meer kernen.
Zelfs smartphones hebben vandaag processoren met meerdere kernen.
Tot enkele jaren geleden waren de kernen in een CPU voor een desktop- of laptopcomputer
meestal identiek qua structuur en werking. In zulke homogene CPU’s hebben alle kernen de-
zelfde maximale kloksnelheid. Het besturingssysteem kan echter wel beslissen hoeveel perfor-
mantie er nodig is (P-state), waardoor de processor bijv. de kloksnelheid verlaagt of verhoogt
naargelang de vraag. Ten tweede beslist het besturingssysteem hoe threads (onderdelen van
processen, bijvoorbeeld wanneer een spreadsheet cellen herberekent na een wijziging) verdeeld
worden over de kernen.
Hiermee zal een CPU bij een lagere werkbelasting zuiniger functioneren en minder hitte
veroorzaken.
Echter wordt de balans tussen performantie en efficiëntie in homogene CPU’s slechts in be-
perkte mate geregeld. Nieuwere types CPU’s bevatten een mengeling van verschillende soor-
ten kernen, bijv. (voor Intel) P-cores (performantie) en E-cores (efficiëntie). Zulke hybride
aanpak laat toe om bij lage belasting enkel de efficiëntere, maar minder performante kernen
in te zetten. De verschillende kernen zijn anders opgebouwd, en werken dikwijls ook met
andere kloksnelheden. Zulke CPU’s worden al sinds 2011 gebruikt in smartphones, en dit
principe wordt nu ook toegepast in recente computers.
Eén van de merkbare effecten van het gebruik van zulke CPU’s is veel langere batterijduur
in draagbare toestellen (smartphones, tablets, laptopcomputers) bij lage belasting.
2.1 Hardware 37
Tenslotte, sinds 2017 werd een nieuwe component toegevoegd aan CPU’s, als eerste aan
een CPU van Apple voor iPhones1 : de NPU of neural processing unit. Ondertussen werd
deze component ook toegevoegd aan nieuwe processoren van bijv. Intel, AMD, Snapdragon,
Exynos, (Google) Tensor enz. Een neural processing unit, ook AI accelerator genoemd, is een
component die instaat voor het versnellen van AI gerelateerde taken. Typisch is dit vandaag
beeldverwerking, spraakherkenning enz. Tegenwoordig worden AI enabled smartphones en
laptops (bijv. Copilot+ laptopcomputers) sterk aangeprijsd door de producenten.
Primair geheugen
De gegevens die de processor nodig heeft voor verwerkingen worden opgeslagen in het pri-
maire geheugen of Random Access Memory (RAM-geheugen). Dit wordt gebruikt om
tijdelijk de instructies van de actieve programma’s en de daarbij horende gegevens op te slaan.
Wanneer men de computer uitschakelt, wordt het geheugen gewist. Primair geheugen kan
sneller gegevens aanleveren dan secundair geheugen. Dit is nodig om de verwerkingssnelheid
van de processor niet te vertragen. Ook RAM geheugen evolueert in snelheid en capaciteit.
Recente processoren/moederborden ondersteunen DDR5, dat is een type geheugen dat maar
liefst 4000 MT/s tot 6400 MT/s (megatransfers per second = miljoen gegevensoverdrachten
per seconde) toelaat. Een nog recenter type geheugen is DDR5X, dat ontworpen is om te
werken met snelheden tot meer dan 8000 MT/s.
De grootte van een geheugen wordt uitgedrukt in het aantal bytes dat opgeslagen kan worden.
Een byte wordt hier beschouwd als 8 bits. De capaciteit van geheugenmodules wordt tegen-
woordig uitgedrukt in gigabytes: 8GB, 16GB of meer – maar de processor en het moederbord
bepalen welke types RAM en capaciteit deze aankan.
Secundair geheugen
Gegevens die bewaard moeten worden voor toekomstig gebruik, worden opgeslagen in het
secundair geheugen. Dit is bijv. de harde schijf van een computer. De opslag van gegevens
op secundair geheugen is permanent, m.a.w. er wordt niets gewist indien men de computer
uitschakelt. Secundair geheugen is trager maar goedkoper dan primair geheugen, waardoor
grotere volumes beschikbaar zijn om gegevens op te slaan. De capaciteit wordt tegenwoordig
uitgedrukt in gigabytes of zelfs terabytes (1 terabyte = 1000 gigabyte).
Secundair geheugen bestond initieel uit één of meerdere schijven waarop in de vorm van
magnetische polarisatie gegevens werden weggeschreven, en nadien uitgelezen met behulp
van mechanische lees/schrijfkoppen. Dit is geëvolueerd van zachte schijven met een beperkt
geheugen (floppy disks) tot de harde schijven die vandaag nog steeds worden gebruikt als
de goedkoopste vorm van opslag (hard disks). Sinds 2009 is het mogelijk de harde schijf
te vervangen door een solid state disk (SSD). SSD’s bestaan uit chips, net zoals RAM-
geheugen, die veel sneller zijn en minder wegen dan een klassieke harde schijf, en bovendien
geen geluid produceren vermits er geen bewegende onderdelen zijn. SSD’s zijn echter duurder
per eenheid opslagruimte. Zulke SSD’s kunnen op dezelfde manier als harde schijven worden
aangesloten, maar sinds 2013 zijn er ook SSD’s die op een andere manier aangesloten worden
1
Zie https://machinelearning.apple.com/research/neural-engine-transformers
2.1 Hardware 38
op het moederbord via een zogenaamd M2 slot, wat veel hogere snelheden toelaat. SSD’s zijn
factoren sneller dan conventionele harde schijven. Desktops en laptops worden vandaag bijna
altijd uitgerust met een snelle SSD waarop zich minimaal het besturingssysteem bevindt.
Net zoals het primaire geheugen worden SSD’s steeds sneller – maar ook hier bepaalt het
moederbord welke types deze aankan.
Invoer en uitvoer
Uitvoer-apparaten (output devices) laten dan weer toe om de verwerkte gegevens weer te
geven in een formaat dat voor eindgebruikers te begrijpen is (bijv. scherm of printer).
GPU
Een graphics processing unit (GPU) of grafische processor is een processor die gebruikt wordt
voor alle videotaken. Hiermee neemt hij deze taken van de CPU over. Recente CPU’s bevat-
ten een geïntegreerde GPU (integrated Graphics Processor of iGP), maar men kan ook een
grafische kaart gebruiken met een krachtigere GPU en eigen RAM-geheugen. Sinds de jaren
’90 en ’2000 werden steeds krachtigere grafische kaarten ontwikkeld, bedoeld voor grafische
toepassingen en games in PC’s en workstations. De bekendste producenten van grafische
kaarten zijn Nvidia en AMD. Een losse grafische kaart heeft dikwijls geavanceerde moge-
lijkheden, onder andere nodig voor gaming: vloeiende bewegingen (zogenaamde framerates
uitgedrukt in “fps” oftewel beeldverversingssnelheid), beeldkwaliteit (aantal pixels, schadu-
wen, reflecties,...) enz.
GPU computing
Koeling
De vroege mainframes scheidden heel wat hitte af, maar ook hedendaagse servers en com-
puters vergen heel wat koeling. De twee vormen van actieve koeling zijn: luchtkoeling en
waterkoeling. In PC’s wordt meestal luchtkoeling toegepast, met name ventilatoren (fans),
waarvan de snelheid dynamisch geregeld wordt volgens de temperatuur van de componenten.
2.1 Hardware 39
Passieve koeling bestaat enkel uit een koelblok, bijvoorbeeld voor recente snelle SSD’s.
Overclocking
Omdat server computers niet rechtstreeks door eindgebruikers gebruikt worden, kunnen be-
paalde componenten weggelaten of geminimaliseerd worden. Zo heeft een server computer
meestal geen geluidskaart, een beperkte grafische kaart en weinig aansluitingen voor invoer-
en uitvoerapparaten. Hierdoor kunnen deze computers in een klein formaat gebouwd worden
en samen in een server rack geplaatst worden. Men kan eenvoudig modules toevoegen of
verwijderen terwijl de computers blijven draaien (hot pluggable). Door het samen plaatsen
van zulke serverrekken in zogenaamde data centers kan men specifieke infrastructuur (zoals
koeling) om servers draaiende te houden, centraliseren. Dit zorgt voor betere schaalbaarheid
en kostenreductie. Een data center is een gebouw of groep van gebouwen, specifiek bedoeld
voor het onderbrengen van servers, netwerk- en opslagapparatuur.
Ondertussen bestaan er ook mobiele data centers: complete werkende data centers die
geïnstalleerd zijn in containers en verplaatst kunnen worden met vrachtwagens. Die containers
bevatten alle infrastructuur, inclusief koeling, dieselgeneratoren en dieseltanks om het data-
center te kunnen laten werken.
2.1 Hardware 40
2.1.3 Besturingssysteem
Bovenop de hardware draait een besturingssysteem of operating system (OS), zoals voorge-
steld in figuur 2.3.
Toepassingslaag
Gebruikersinterface
Besturingssysteem
Hardware
Dit zijn alle programma’s die nodig zijn voor het geheugen- en processorbeheer, en voor
het functioneren van het systeem, bijvoorbeeld programma’s om bestanden te kopiëren, te
verwijderen, mappen aan te maken en de inhoud van een bestandssysteem zichtbaar te maken.
Aan de hand van prioriteiten bepaalt het besturingssysteem welke jobs hoeveel processor-
kracht kunnen gebruiken en met welke prioriteit uitgevoerd worden. Resource management
is het toewijzen van geheugen volgens prioriteiten, bijvoorbeeld het vooraf laden van pro-
grammacode in het RAM geheugen en RAM geheugen toewijzen voor de data die verwerkt
wordt.
Het bestaan van verschillende lagen van hardware, besturingssysteem en applicaties, kon
vroeger bijv. geïllustreerd worden a.d.h.v. het opstarten van Microsoft Windows: bovenop
de hardware draaide in de vroege PC’s MS-DOS, wat een besturingssysteem met tekst-
gebaseerde user interface was. In MS-DOS kon dan het commando worden gegeven om
Microsoft Windows op te starten (later gebeurde dit automatisch), waardoor een grafische
user interface zichtbaar werd, die in vele opzichten dezelfde commando’s aanbood aan de
gebruiker dan het onderliggende MS-DOS besturingssysteem, maar dan grafisch in een menu
2.1 Hardware 41
i.p.v. met een tekst-gebaseerd commando. Vanaf Windows XP, vroege jaren 2000, werd
Windows niet meer opgestart via MS-DOS maar rechtstreeks als besturingssysteem.
In Microsoft Windows kan men de command line interface openen met behulp van het pro-
gramma ‘Opdrachtbeheer’ (Command Prompt). Men kan bijvoorbeeld de inhoud van de
hoofdfolder C:\ bekijken met de instructie: ‘dir C:\’, of een bestand genaamd ‘test.txt’ ko-
piëren naar ‘test2.txt’ met ‘copy test.txt test2.txt’. In Linux gelden andere instructies maar
het bekijken en bewerken van folders en bestanden is zeer gelijkaardig: ‘ls’ (list) gebruikt
men voor het bekijken van de inhoud van een folder, terwijl ‘cp’ de kopieerfunctie is.
Linux is het meest voorkomende besturingssysteem, vermits deze aan de basis ligt van on-
der andere Android (smartphones en tablets), en ook gebruikt wordt in allerlei apparatuur
zoals netwerk routers, infotainment systemen zoals in auto’s, beveiligingscamera’s, Internet
of Things (zie hoofdstuk 5), servers/cloud enz. Microsoft Windows en MacOS zijn dan weer
voornamelijk gericht op desktopcomputers en laptops.
Dankzij besturingssystemen hoeft een toepassing zich niet bezig te houden met de technische
details van de hardware- en netwerkcomponenten, en kan deze eenvoudig uitgevoerd worden
op alle systemen waarop hetzelfde besturingssysteem geïnstalleerd is. Enkel voor bepaalde
toepassingen die extra vereisten opleggen zoals minimaal geheugen of grafische mogelijkheden
(bijvoorbeeld videobewerkingssoftware), is het mogelijk dat niet alle computers geschikt zijn.
Interactieve toepassingen, zoals bijna alle toepassingen die gebruikers installeren - waaronder
tekstverwerkers en een web browser – maken gebruik van de gebruikersinterface API’s van
het besturingssysteem. Elke toepassing kan zo gebruik maken van dezelfde mogelijkheden
zoals een menu, knoppen, enz. Het meest bekende besturingssysteem met een ingebouwde
grafische gebruikersinterface is Microsoft Windows.
Sommige toepassingen draaien echter op de achtergrond als een service of anders genoemd
een proces. Een typisch voorbeeld is een geïnstalleerde virusscanner die het webverkeer en
het bestandssysteem in het oog houdt.
2.1.4 Evolutie
Hardware onderging een enorme evolutie gedurende de eerste decennia (jaren ’60 tot jaren
’80). Dat betekent niet dat de toenmalige technologie zoals mainframes vandaag niet meer
bestaat.
De wet van Moore werd reeds in 1965 geformuleerd, maar is slechts een beschrijvende wet:
er wordt enkel gesteld dat er een verdubbeling is, niet waarom of hoe die plaatsvindt (zie
figuur 2.42 ).
2
Max Roser, Hannah Ritchie. https://commons.wikimedia.org/wiki/File:Moore%27s_Law_Transistor
_Count_1970-2020.png
2.1 Hardware 43
Bovendien kunnen we nu al de wet van Moore niet meer zomaar toepassen op de toename van
performantie van processoren door de huidige evolutie naar heterogene CPU’s, met verschil-
lende soorten kernen, maar ook door bijv. de toevoeging van een NPU (neural processing
unit) component zoals eerder besproken werd in deelparagraaf 2.1.1.
2.2 Netwerken 44
2.2 Netwerken
Van echte netwerken was in de jaren ’60 en ’70 nog geen sprake. De verbinding tussen een
mainframe en de terminals waar eindgebruikers op werkten kan beschouwd worden als een
vorm van netwerk, maar dit was in werkelijkheid een zeer trage verbinding.
De basis van alle moderne netwerken is het principe van packet switching. De gegevens worden
opgesplitst in kleine pakketten en verzonden over het netwerk, waardoor meerdere computers
tegelijkertijd gebruik kunnen maken van het netwerk. De pakketten worden door elkaar en
zonodig via verschillende wegen verstuurd, geadresseerd aan één computer. De computer
die de pakketten ontvangt, plaatst de pakketten terug in de juiste volgorde en stelt dan de
originele gegevens weer samen.
2.2.2 Internet
Aan het einde van de jaren ’60 werd het ARPANET, het eerste operationele packet switching
netwerk, ontwikkeld en geïmplementeerd door militaire onderzoeksinstellingen van de Ameri-
kaanse overheid. Hierbij werden wel mainframes op verschillende locaties met elkaar verbon-
den, maar elke nieuwe locatie vereiste een specifieke integratie met de rest van het netwerk
en de lage bandbreedte zorgde voor een beperking van het aantal aangesloten mainframes.
De regels en afspraken die ervoor zorgen dat computers op een netwerk met elkaar kunnen
communiceren (het netwerk-protocol) verschilden bovendien bij verschillende netwerken.
Hierdoor konden computers op verschillende netwerken niet met elkaar communiceren.
ARPANET evolueerde in de jaren ’80 tot het internet zoals we het nu kennen: een robuust,
wereldwijd en uitbreidbaar netwerk. Door de standaardisatie van de protocollen naar TCP/IP
in 1983 en vervolgens het ontstaan van het Domain Name System (DNS) dat domeinnamen
toekent aan IP-adressen, werd het internet dat we vandaag zo goed kennen een feit.
Maar toen was er ook al sprake van problemen waarmee we vandaag geconfronteerd wor-
den. Al in 1978 vertrok de eerste spam-mail3 , en een decennium later in ’88 legde de eerste
computerworm genaamd Morris worm 4 10 % van alle 60.000 verbonden systemen plat. Ro-
bert Tappan Morris was bij wijze van spreken meteen ook de eerste ethische hacker van het
internet.
3
Wikipedia. (2020). History of email spam. https://en.wikipedia.org/wiki/History_of_email_spam
4
https://en.wikipedia.org/wiki/Morris_worm
2.2 Netwerken 45
De belangrijkste ontwikkeling in de jaren ’90 was het openstellen van het internet in
1993 voor particulieren en bedrijven. Tot dan waren enkel gespecialiseerde netwerken opgezet
voor overheids- of onderzoeksinstellingen, of bleven netwerken beperkt tot één organisatie.
Door het aanleggen van backbones (snelle netwerk-verbindingen die aparte netwerken zoals
NSFNET en BITNET verbonden) konden computers in gescheiden netwerken met elkaar
communiceren. Algemeen wordt aanvaard dat “het internet” begon toen de Amerikaanse
overheid de controle over grote netwerken opgaf. Hierdoor kon de netwerkinfrastructuur voor
commerciële en particuliere doeleinden gebruikt worden.
Standaardisatie is de sleutel tot het succes van het internet. Op verschillende vlakken werden
standaarden ingevoerd:
• HTTP (HyperText Transfer Protocol) laat toe om hypertexts (teksten met hyperlinks)
over het internet te verzenden. Het is een laag boven TCP/IP, en bevat instructies hoe
de data moet gelezen (of verzonden) en verwerkt worden.
In de jaren ’70 startte men ook met de ontwikkeling van mobiele netwerken. Al in 1973 werd
de eerste mobiele telefoon voorgesteld (Motorola). Aan het einde van dat decennium werd
met de ontwikkeling van het eerste mobiele netwerk gestart. In de jaren ’80 ontstond het
eerste commerciële netwerk en had de Vodafone voorzitter, Sir Ernest Harrison, de eer om
de allereerste oproep via het mobiele netwerk te ontvangen.
Naast het internet werd in de jaren ’90 het GSM-netwerk opgebouwd. Hiervoor worden op
regelmatige afstand masten geplaatst (maximum 35 km van elkaar, factoren zoals een ste-
delijke omgeving vereisen veel meer masten), die voor een draadloos signaal zorgen. Initieel
werd het GSM-netwerk echter voornamelijk voor spraak en SMS gebruikt, niet voor dataver-
keer. Nadien werd dit netwerk ook ingezet voor het internet (via 3G, 4G, 4G LTE en 5G),
tegenwoordig met snelheden van tientallen megabits/sec tot zelfs meer dan 1 gigabit/sec in
het geval van 5G verbindingen. Door de komst van 4G en 5G worden oudere technologieën
zoals 2G en 3G geleidelijk aan afgeschaft.
Door de ontwikkeling van mobiele netwerken (vooral 4G en 5G) werd het ook gemakkelij-
ker om Internet of Things (IoT) apparaten in te zetten (zie hoofdstuk 5), vermits een
netwerkverbinding niet meer via bekabeling of Wi-Fi moet verlopen, en bovendien mobiele
netwerken een zeer groot percentage van het land afdekken. De term ‘Internet of Things’ ver-
wijst naar de apparaten die informatie (zoals temperatuur, positie, luchtkwaliteit) verzamelen
en doorgeven voor verwerking. Dit wordt in detail besproken in paragraaf 5.1.
2.2 Netwerken 46
2.2.4 Wi-Fi
Een belangrijke nieuwe ontwikkeling aan het einde van de jaren ’90 was Wi-Fi. Wi-Fi is de
technologie voor lokale draadloze netwerken, gebaseerd op een protocol genaamd 802.11.
Wireless access points zijn apparaten die men op het lokale bekabelde netwerk aansluit en via
antennes het netwerk draadloos beschikbaar stellen aan andere apparaten zoals een laptop
of smartphone. Het bereik is beperkt tot enkele tientallen meters (naargelang demping van
de signalen door muren of andere constructies), maar laat in optimale omstandigheden hoge
snelheden toe.
Het grote voordeel van Wi-Fi is het wegvallen van de noodzaak van bekabeling, zodat
het in- of opbouwen van kabels niet meer nodig is. Initieel liet de Wi-Fi standaard snelheden
van 1 megabit/sec toe, maar dit is ondertussen opgelopen tot snelheden boven 1 gigabit/sec
(1000 maal meer), waardoor Wi-Fi een volwaardig alternatief geworden is voor bekabelde
netwerken. Daardoor moeten kabels bij de bouw van bijvoorbeeld huizen niet meer voorzien
worden. Smartphones, tablets en andere slimme toestellen zoals intelligente koelkasten en
deurbellen kunnen via Wi-Fi verbonden worden met het lokale netwerk en het internet.
Wardriving is de activiteit waarbij men met een auto en een laptop met software voor sniffing
rondrijdt, op zoek naar onbeveiligde netwerken, maar zonder effectief verbinding te maken
- men luistert enkel verkeer af. Wardrivers loggen dikwijls de locatie van zulke netwerken,
of publiceren deze informatie op het internet. Zulke activiteiten zijn in de meeste landen
illegaal.
Ondertussen werden nieuwe systemen op de markt gebracht om nog meer Wi-Fi dekking te
bieden. Sommige internetproviders bieden een Wi-Fi functie aan in hun routers, waarbij een
eindgebruiker waar ook in het land en soms in het buitenland gebruik kunnen maken van
Wi-Fi, indien men zich dichtbij een aansluitingspunt bevindt van dezelfde provider of een
provider die samenwerkt de provider van de klant. Men noemt dit soms Public Wi-Fi of
Public Internet. Uiteraard is deze publieke toegang strikt afgescheiden van het lokale netwerk
van de aangesloten klant. Mobiele abonnementen die steeds meer dataverbruik toelaten, en
die bovendien binnen heel Europa gebruikt kunnen worden zonder meerkost, maken het
gebruik van zulke Wi-Fi toegangspunten minder noodzakelijk.
Repeaters of versterkers laten toe om het bereik te vergroten, echter ten koste van snelheid.
Draadloze mesh netwerken daarentegen bestaan uit verschillende apparaten die op een
intelligente wijze zorgen voor de verbinding met het netwerk en andere apparaten, in plaats
van meervoudige bekabeling of (domme) repeaters. Oorspronkelijk werd dit ontwikkeld voor
militaire doeleinden voor radiosignalen, maar na de eeuwwisseling werd dit ontwikkeld en
geïmplementeerd voor Wi-Fi. Mesh netwerken kunnen lokaal zijn (in huis of organisaties), of
grote landelijke gebieden van internet voorzien.
2.2 Netwerken 47
Figuur 2.55 toont een voorbeeld van een draadloos mesh netwerk, toegepast op een landelijk
gebied.
2.2.5 Bluetooth
Bluetooth is een andere technologie, bedoeld om apparaten op een goedkope wijze en over een
korte afstand (typisch maximaal 10 meter) met elkaar te verbinden. Het werd in de jaren ’90
ontwikkeld, en sinds de jaren 2000 gebruikt. Bluetooth is een systeem waarbij een toestel met
meerdere andere, nabije, apparaten kan verbinden. Belangrijke toepassingen zijn het afdruk-
ken van documenten op printers met bluetooth, sommige draadloze toetsenborden, draadloze
hoofdtelefoons, draadloze luidsprekers, streamen naar de autoradio enzovoort. Sommige ont-
vangers kunnen zelfs gekoppeld worden aan meerdere zenders tegelijkertijd, zoals bepaalde
hoofdtelefoons aan een computer én een smartphone (Bluetooth multipoint).
In tegenstelling tot Wi-Fi vergt Bluetooth geen routers en netwerken. Bluetooth ondersteunt
daarentegen ook authenticatie en versleuteling, zodat men verbindingen niet kan afluis-
teren.
5
Johnson, D., Matthee, K., Sokoya, D., Mboweni, L., Makan, A., Kotze, H. Wireless Africa, Meraka
Institute, South Africa (2021). Building a Rural Wireless Mesh Network: A do-it-yourself guide to planning
and building a Freifunk based mesh network. CC BY-SA 2.5. https://commons.wikimedia.org/w/index.ph
p?curid=30799980
2.3 Cloud computing 48
De uitbesteding van software nam na het jaar 2000 onder meer de vorm aan van cloud-
computing. Hierbij worden delen van een informatiesysteem als dienst aangeboden. Zo wordt
bijv. een bepaalde server-capaciteit voor een bepaalde tijd verkocht. Als men toegang tot
de hardware aanbiedt, spreek men van Infrastructure as a Service (IaaS). De eindgebruiker
gebruikt de server dan alsof deze in eigen beheer is, buiten het feit dat de fysieke computer op
een andere locatie staat. Op deze manier kan eenvoudig extra rekenkracht bijgekocht worden
wanneer ze nodig is, zonder zelf investeringen te doen.
Ook servers waarbij het besturingssysteem vooraf geïnstalleerd en up-to-date gehouden wordt,
worden als dienst aangeboden. Net zoals bij IaaS, verkopen aanbieders van deze dienst het
gebruik per tijdseenheid. Dit wordt Platform as a Service (PaaS) genoemd en is een tweede
vorm van cloud computing.
Ook volledige applicaties kunnen gebruikt worden via het internet. Net zoals bij IaaS en
PaaS zorgt een externe leverancier voor de servers en het besturingssysteem en draait daarop
de applicatie-software die gebruikt kan worden. De eindgebruiker hoeft zelf dus niet voor de
installatie en het onderhoud van de applicatie- software te zorgen. Dit wordt Software as a
Service (SaaS) genoemd en is de derde vorm van cloud computing. Een voorbeeld van SaaS
in een organisatorische context is salesforce.com, een Customer Relationship Management
(CRM)-applicatie. Een voorbeeld van SaaS in een particuliere context is Google Docs.
Een andere vorm van cloud computing is Desktop as a Service (DaaS). Het is een cloud-
gebaseerd serviceconcept waarbij virtuele desktopomgevingen worden gehost en beheerd in
de cloud, in plaats van lokaal op individuele computers of apparaten. Met DaaS kunnen
gebruikers toegang krijgen tot hun persoonlijke bureaublad, applicaties en gegevens vanaf
elk apparaat met een internetverbinding. Bij DaaS worden de fysieke aspecten van het be-
heer van hardware en software, zoals upgrades, onderhoud en beveiliging, uitbesteed aan
een externe dienstverlener. Gebruikers kunnen inloggen op hun virtuele desktops vanaf ver-
schillende apparaten, waaronder pc’s, laptops, tablets en smartphones, wat flexibiliteit en
mobiliteit bevordert. Dit model kan voordelig zijn voor organisaties omdat het kosten kan
besparen op hardware-investeringen en IT-beheer, terwijl het tegelijkertijd schaalbaarheid en
eenvoudig beheer mogelijk maakt.
En verder kan men ook de grafische rekenkracht uitbesteden aan de cloud. Dit noemt men
Graphics as a Service (GaaS), wat verwijst naar een cloudgebaseerde dienst waarbij grafische
rekenkracht en mogelijkheden worden geleverd aan gebruikers via het internet. Deze dienst
stelt gebruikers in staat om complexe grafische taken uit te voeren zonder dat ze krachtige
lokale hardware nodig hebben. In plaats daarvan worden de grafische berekeningen uitge-
voerd op krachtige servers in de cloud en wordt het resultaat via internet aan de gebruiker
geleverd. GaaS is vooral handig voor taken zoals 3D-rendering, videobewerking, simulaties en
andere grafisch intensieve processen. Het geeft gebruikers toegang tot geavanceerde grafische
mogelijkheden zonder de noodzaak van dure hardware-upgrades. Eén voorbeeld is gaming
via GaaS.
2.4 Quantum computing 49
Een kwantumcomputer (of quantumcomputer)6 is een nieuw soort computer waarbij de pro-
cessor gebruik maakt van de principes van de kwantummechanica. Quantum computing is
niet gebaseerd op bits, maar qubits. Zo’n kwantumprocessor kan in één keer (parallel)
dezelfde berekeningen uitvoeren over een zeer grote hoeveelheid data. Deze zal daardoor
vele malen sneller zijn dan een conventionele computer maar wel slechts inzetbaar zijn voor
specifieke taken, zoals wetenschap en simulaties.
Quantum computing is nog in een prototype stadium, maar indien de doorbraak komt, lij-
ken de mogelijkheden zeer groot. Echter er zijn ook nadelen: indien quantum computing
doorbreekt, zal dit een gevaar betekenen voor de huidige versleuteling van data. Immers,
het kraken van gebruikte sleutels, wat vandaag met conventionele computers niet binnen een
redelijke tijd kan gebeuren, zal met quantum computing wel binnen de mogelijkheden val-
len. Dit betekent bovendien dat men vandaag versleutelde informatie kan opslaan om in de
toekomst te kraken, en dus te misbruiken.
6
Wikipedia. (2019). Kwantumcomputer. https://nl.wikipedia.org/wiki/Kwantumcomputer
HOOFDSTUK 3
Informatiesysteemontwikkeling
Tenslotte werd rond 2000 een belangrijke nieuwe ontwikkeling voorgesteld, nl. web services
(Golf 3). Dit zijn software modules die over het internet met elkaar kunnen communiceren,
wat het perspectief opent dat informatiesystemen kunnen worden ontwikkeld als wereld-
wijde, geïntegreerde systemen, met een zeer hoge mate van hergebruik van services i.p.v. het
klassieke maatwerk. Zulke modules hebben het potentieel om een ongekend niveau van flexi-
biliteit en evolueerbaarheid van ICT te realiseren, wat een noodzaak is om de steeds snellere
ontwikkelingen in de maatschappij, de economie en de bedrijfskunde te kunnen ondersteunen.
Merk op, dat deze golven elkaar niet sequentieel opvolgen, maar vandaag tegelijkertijd ge-
bruikt worden. Een informatiesysteem bestaat dikwijls uit het aanroepen van web services,
het gebruiken van pakketten, én maatwerk.
De eerste technologische golf (’60 - ’80) op gebied van software werd gekenmerkt door maat-
werk. Hierbij bouwen organisaties zelf softwaresystemen volledig naar hun eigen wensen,
gebruik makend van een waaier aan programmeertalen.
3.1 Golf 1 - maatwerk 51
3.1.1 Programmeertalen
De tweede generatie programmeertalen (2GL) zijn assembly talen, die programmeren toegan-
kelijker moesten maken door een betere begrijpelijkheid. Assembly introduceert korte tekst-
codes die gebruikt kunnen worden ter vervanging van de numerieke instructies. Dit maakt
het makkelijker deze instructies te onthouden en reeds geschreven programma’s te begrijpen.
Eén programmeerinstructie komt evenwel nog steeds overeen met één processor-instructie,
waardoor het schrijven van assembly zeer complex is en nog steeds processor-afhankelijk.
Het uitdrukken van programmeerinstructies in een andere taal dan machinetaal heeft echter
ook tot gevolg dat computers de instructies niet langer begrijpen. Deze instructies moeten
dus vertaald worden voor de computer. Assembly-broncode wordt door een assembler
vertaald naar machinecode.
Procedurele talen vormen de derde generatie programmeertalen (3GL). Deze talen vereisen
niet meer dat er per processor-instructie een programmeer-instructie wordt ingegeven. Een
programmeur geeft in een procedurele taal stap voor stap op hoe een bepaalde taak moet
uitgevoerd worden. Eén programmeer-instructie wordt vervolgens vertaald naar verschillende
processor-instructies, waardoor de constructen waarmee de instructies worden uitgedrukt
meer op natuurlijke taal lijken. Procedurele talen maken dus abstractie van de individuele
processor-instructies. De instructies zoals ze door de programmeur worden opgesteld, worden
samen de broncode genoemd en dit wordt opgeslagen in een bronbestand. De vertaalde
code wordt opgeslagen in een object file. Deze object file wordt bij het uitvoeren van
een programma in het primaire geheugen geladen en bevat de instructies voor de processor.
Dit maakt het productiever om software te schrijven en makkelijker om reeds geschreven
programma’s te begrijpen.
if(a>0) {
100010
...
011010
} else { Compiler
100010
...
010100
}
Figuur 3.1: Een compiler zet een bronbestand om in een object file.
per instructie om in machinetaal. Er wordt geen object file aangemaakt. Een interpreter zal
dus, telkens wanneer het programma uitgevoerd wordt, de machinecode genereren.
Een veelgebruikte programmeertaal uit de beginperiode is COBOL. COBOL staat voor COm-
mon Business Oriented Language, wat aangeeft dat de taal specifiek voor zakelijke omgevin-
gen bedoeld was. COBOL is een derde generatie taal en werd gebruikt met als doel pro-
gramma’s te maken die makkelijker door een programmeur te schrijven waren, en later ook
beter te lezen en aan te passen. Een andere taal uit deze periode, Pascal, werd vooral voor
educatieve doeleinden gebruikt.
Talen zoals COBOL en Pascal, maar ook de recentere talen zoals Python, zijn zogenaamde
gestructureerde programmeertalen, of kunnen gebruikt worden om gestructureerd te pro-
grammeren. Typisch voor deze talen is dat programma’s bestaan uit een hiërarchie van
functies en procedures.
Sinds de jaren ’80 zijn veel talen object-georiënteerd, zoals Java, .NET en Python. Object-
georiënteerde talen zijn een specifiek type derde generatie programmeertaal. Een object-
georiënteerd programma bestaat uit objecten die met elkaar communiceren. Een object is
vaak een digitale representatie van een ding in de reële wereld. Dit wordt antropomorfisme
genoemd. Objecten bevatten data of attributen (bijv. naam, adres en geboortedatum van
een klant), en procedures of methoden (bijv. voor het berekenen van de leeftijd van de
klant op basis van de geboortedatum).
Een klasse beschrijft de algemene kenmerken (attributen en methoden) van een bepaald type
objecten. Objecten (bijv. Jan Peeters) zijn dan steeds instanties van een bepaalde klasse
(bijv. Klant). Een instantie is het concreet maken van de kenmerken van de klasse door
specifieke waarden toe te kennen aan de attributen.
De communicatie tussen objecten gebeurt via berichten of messages. De ontvanger van
een bericht reageert op een bericht door een methode uit te voeren met de naam van het
bericht. Het resultaat van deze methode wordt vervolgens naar de zender van het bericht
teruggestuurd. Het versturen van berichten tussen objecten is de enige manier om data te
verkrijgen, omdat de attributen van een object niet rechtstreeks toegankelijk zijn. Dit wordt
encapsulatie of information hiding genoemd en is een belangrijk kenmerk van object-
oriëntatie. Encapsulatie verbergt de complexiteit van de specifieke programmatie van de
klasse (bijv. de naam en het datatype van de attributen) voor objecten van andere klassen.
Bij niet-procedurele talen of vierde generatie talen (4GL) moet de programmeur niet
langer de procedure specificeren die het programma moet volgen, maar moet het gewenste
resultaat opgegeven worden. Dit zou het programmeer-proces moeten vereenvoudigen en
fouten-vrij maken. SEQUEL (Structured English Query Language), later genoemd SQL
(Structured Query Language) werd in de jaren ’70 ontworpen om data uit het IBM relationele
databanksysteem SystemR te halen, en is vandaag nog steeds één van de meest gebruikte
vierde generatie talen. In de volgende deelparagraaf 3.1.3 wordt uitgelegd wat een relationele
databank is. In SQL kan bijvoorbeeld de volgende query opgesteld worden:
Merk op dat vierde generatietalen zeer goed leesbaar zijn omdat ze veel commando’s in
natuurlijke taal bevatten. Om aan te tonen dat het in dergelijke talen niet moeilijk program-
meren is, wordt het gebruik van SQL uitgelegd in het practicum appendix A.
3.1 Golf 1 - maatwerk 53
In een procedurele taal zou voor deze functionaliteit volgend programma geschreven moeten
worden:
positioneer op de eerste verkoop
zolang er verkopen zijn:
is het aantal groter dan 1000?
indien ja: toon deze verkoop
indien nee: ga verder
positioneer op de volgende verkoop
3.1.2 Modulariteit
Vanuit een modulariteitsperspectief bestaat software uit modules en komt het bouwen van
software neer op het bouwen van een modulaire structuur. Een module wordt in het algemeen
gedefinieerd als een deel van systeem, die een duidelijke grens of interface heeft met de rest
van het systeem. Deze interface kan beschreven worden als een ingang-uitgang model
waarbij invloeden van de omgeving op de module (de ingangen) leiden tot bepaalde effecten
(de uitgangen) die door de module in de omgeving veroorzaakt worden. In software wordt een
module dus beschouwd als een afgescheiden deel met de naam van de module (die de functie
of verantwoordelijkheid van de module beschrijft en gebruikt wordt om de module aan te
roepen), inkomende gegevens (input-parameters), en uitgaande gegevens (return-waarden).
Een applicatie of programma bestaat uit een hoeveelheid modules die door de programmeur
worden gemaakt. De programmeur gebruikt hiervoor een programmeertaal die zogenaamde
constructen bevat. Bepaalde constructen kunnen worden gezien als instructies in een pro-
grammeertaal waarbij een module wordt aangemaakt. Bijvoorbeeld is een functie in Python
enigszins vergelijkbaar met een wiskundige functie. De functie bevat een aantal instructies,
heeft inkomende parameters en een resultaatwaarde of uitgaande parameter. Andere con-
structen zijn procedures en units. In recentere, object-georiënteerde talen (zie paragraaf 3.1.1)
zoals Python of Java zijn dat bijv. klassen. Klassen zijn vergelijkbaar met een record (zie
hoger), in combinatie met een aantal functies. Ze bestaan dus uit een aantal variabelen (ook
attributen genoemd) en een aantal functies die betrekking hebben op die attributen (ook
methoden genoemd).
Recent zijn nog meer geavanceerde constructen voorgesteld, zoals bijv. componenten en
services. Met deze constructen wordt een artefact (de applicatie) gebouwd. Zo’n artefact
bestaat uit een modulaire structuur met een aantal modules en de interacties ertussen (zie
bijv. figuur 3.2).
Deze interacties bestaan onder andere uit de aanroepen tussen modules. De aanroep van
een module, is eigenlijk het ‘gebruik’ van een module. De module wordt erdoor uitgevoerd.
Bij de aanroep van een module worden eerst de inkomende parameters verstuurd, dan de
instructies uitgevoerd en dan worden de uitgaande parameters verstuurd.
3.1 Golf 1 - maatwerk 54
Applicatie voor
The Antwerp Company
Abonnement Aankopen (TPS)
De 'applicatie'
Buy subscription
customer data customer data, Aggregatie van
type, price functies/procedures
customer data type, price
Functie/procedure
Modules kunnen beschouwd worden vanuit een black box- en een white box-perspectief. Het
black box-perspectief (zie figuur 3.3) houdt in dat een module kan aangeroepen worden zonder
dat de aanroeper (mens of software) kennis heeft van de binnenkant van de module, of nog, de
instructies. Een voordeel hiervan is dat dit perspectief complexiteit reduceert. Het volstaat
immers dat de aanroeper de naam van de module en de parameters kent van de module om
de aanroep te doen. Echter, soms is een white box-perspectief nodig (zie figuur 3.4), bijv.
als de module een foutief resultaat produceert. Dan moeten de instructies van de module
nagekeken worden en is er geen of minder sprake van complexiteitsreductie. Alle details van
de module zijn dan zichtbaar.
In talen zoals Python, ontstaat door deze aanroepen een hiërarchie of boom van functies. bo-
venaan staat de functie die wordt aangeroepen bij de start van een applicatie of programma;
deze roept één of meerdere andere functies aan die allemaal op hun beurt nog andere func-
ties aanroepen. Zo’n boom wordt ook een systeemnetwerkdiagram genoemd. Zo kan een
applicatie of programma voor het verkopen van abonnementen voor events bij ‘The Antwerp
Company’ bijv. bestaan uit modules (bijv. functies) voor het berekenen van de prijs, het
wegschrijven van de gegevens van de klant in een databank en een module voor het afdrukken
van het abonnement.
Een artefact kan in meer of mindere mate ‘modulair’ zijn of ‘modulariteit’ als eigenschap
vertonen. Deze termen verwijzen naar de granulariteit of fijnmazigheid van het artefact. Bij
lage granulariteit zijn er slechts weinig modules in het artefact, of bestaat het artefact zelf
uit slechts één grote module. Bij hoge granulariteit zijn er meerdere kleine modules in het
artefact. Deze eerste variant wordt ook wel een monolithische structuur genoemd, terwijl de
laatste variant een voorbeeld van modulariteit is.
Een tweede voordeel dat geassocieerd wordt met modulariteit is evolueerbaarheid. Deze
term verwijst naar flexibiliteit en aanpasbaarheid tijdens de onderhoudsfase. In deze context
wordt gesteld dat een modulaire structuur betere evolueerbaarheid biedt, omwille van de
hogergenoemde complexiteitsreductie, maar ook omdat veranderingen aan de instructies van
een module geen impact kunnen hebben op andere modules (zogenaamde ripple-effects).
Hergebruik en evolueerbaarheid samen verwijzen naar een soort plug-and-play beeld van
software, waarbij applicaties initieel worden ontwikkeld met hoge niveaus van hergebruik
(eigenlijk worden ze geassembleerd in plaats van geprogrammeerd) en dan goed evolueerbaar
blijven omdat er voortdurend modules kunnen worden vervangen met weinig inspanning. We
zullen verderop zien dat dit ideaalbeeld, ondanks grote vooruitgang, echter nog steeds niet
bereikt wordt.
Deze voordelen van modulaire structuren zijn in de complexe, snel wijzigende hedendaagse
wereld van groot belang. Dat betekent dat het bepalen van een kwalitatief hoogstaande
modulaire structuur een zeer belangrijk aandachtspunt is bij de bouw van een informatiesys-
teem en meer bepaald bij de ontwerpfase van software. Die ontwerpfase kan gezien worden als
het overbruggen van een zogenaamde functioneel/constructieve kloof. Deze term geeft aan
dat het niet evident is om een oplossing te bouwen in de ontwerpfase (constructief niveau)
voor een probleem dat beschreven is in de analysefase (functioneel niveau). Integendeel, bij
ontwerp is er dikwijls sprake van een wicked problem.
Databanken zijn ontstaan als antwoord op de beperkingen van het opslaan van data in be-
standen of files (zie figuur 3.5). De meeste besturingssystemen laten toe dat de gebruiker
gegevens wegschrijft in een extern geheugen zoals een harde schijf, bijv. een tekst, rekenblad,
of een lijst van records met klanten. Dat gebeurt in de vorm van een bestand of file. Elke
applicatie of programma maakte dan een eigen bestand of file aan om data in op te slaan.
Bestandssystemen Databank
DBMS
Bestand Bestand
Database
Marketing Logistiek
• Integratie: elke applicatie slaat data op in een bestand dat specifiek was voor dat pro-
gramma. Dat betekende dat de marketing applicatie een bestand ‘klanten’ gebruikte,
terwijl de logistieke applicatie een bestand ‘leveringen’ gebruikte, enzovoort. Het pro-
bleem hiermee was dat gegevens redundant werden opgeslagen: bijv. het nummer, de
naam en het adres van de klant zaten dikwijls zowel in de marketing applicatie als
in de logistieke applicatie. Naarmate de hoeveelheid redundantie toeneemt, leidde dit
tot zogenaamde update anomalieën: als het adres veranderde, werd soms één van
de redundante kopieën van het adres vergeten, waardoor de data in een inconsistente
status terecht kwam.
Databanken bieden naast een geïntegreerde en gelijktijdige toegang tot data, ook
functionaliteit op het gebied van beveiliging. Qua verwerking laten ze snelle CRUDS (create-
read-update-delete-search) operaties toe, maar ze bieden zelf geen complexe, algoritmische
verwerking aan.
Qua terminologie wordt het begrip databank (database) voor twee zaken gebruikt: enerzijds
voor de data zelf, anderzijds voor de programmatuur die toelaat dat er een gecentraliseerde
en geïntegreerde toegang tot de data is qua lezen, schrijven, opvragen en verwijderen van
gegevens. De software die voor dit laatste instaat, wordt ook wel een database management
system (DBMS) genoemd.
RDBMS
Toepassingslaag
Besturingssysteem
Hardware
Figuur 3.6 toont een vereenvoudigde weergave van een server, waarop databanksoftware is
geïnstalleerd. Het besturingssysteem beheert één of meerdere databankprocessen, waarbij
een administrator via command line of via een grafische gebruikersinterface de configuratie
kan beheren en/of de databank monitoren. Toepassingen op diverse systemen, clients en
servers, kunnen gelijktijdig de databank benaderen.
De relationele database (RDBMS) is momenteel wellicht het meest gebruikte type databank.
Vroeger was er ook sprake van hiërarchische databanken, die gestructureerde data in de vorm
van bomen opsloegen. Daarna kwamen de netwerk databanken, die data in de vorm van
netwerken opsloegen (in een netwerk kan een knooppunt, in tegenstelling tot bij een boom,
meer dan één ouder hebben). Daarna kwamen de relationele databanken, die net zoals
haar voorgangers, voornamelijk geschikt waren voor het opslaan van gestructureerde data en
minder geschikt voor semi-gestructureerde en ongestructureerde data. Dit maakt relationele
databanken niettemin zeer geschikt als basis van Transaction Processing Systems.
3.2 Golf 2 - pakketten 58
In deelparagraaf 1.2.4 werd al toegelicht dat relationele databanken alle data opslaan in
zogenaamde tabellen. Een rij stelt hierbij een record voor (zoals bijv. één klant), terwijl de
kolommen de attributen of eigenschappen van de klant voorstellen. Elke rij in een relationele
tabel moet een zogenaamde unieke sleutel hebben. Dit is een attribuut of een combinatie van
attributen die de rij uniek identificeert (bijv. een klantnummer). Verbanden tussen tabellen
worden gelegd doordat de sleutel van een rij (bijv. een klantnummer) wordt opgeslagen in
een kolom van een andere tabel (bijv. in een kolom van de tabel factuur om aan te geven
aan welke klant de factuur gericht is).
Ondertussen werden sommige relationele databanken wel uitgebreid met datatypes en functies
voor het verwerken en berekenen van geografische data.
Eind jaren ’80 was het duidelijk dat er een aantal zwakke punten waren qua software: ten
eerste was maatwerk zeer duur en ten tweede was er in vele grote organisaties sprake van
eilandautomatisering, d.w.z. departementale informatiesystemen waartussen geen of zeer
beperkte integratie bestond. In de jaren ’90 werden deze nadelen geadresseerd door een
grotere nadruk op software pakketten: software die niet op maat ontwikkeld is van een
specifieke organisatie, maar die aangekocht kan worden en door verschillende organisaties
gebruikt kan worden. In deze context wordt ook gesproken van Make or Buy beslissingen.
3.2.1 Standaardpakketten
Sinds de jaren ’80 maakten standaardpakketten opgang, ook al waren deze pakketten vooral
gericht op productiviteitstoepassingen voor eindgebruikers (zoals tekstverwerking en reken-
bladen) en was het aanbod van pakketten gericht op marketing, accounting en andere be-
drijfskundige domeinen, nog beperkt.
Softwarebedrijven gingen zich specialiseren op het ontwikkelen van zulke pakketten, waar-
bij dikwijls slechts één of twee pakketten overbleven en de markt domineerden. Een goed
voorbeeld hiervan is de Microsoft Office suite. Zulke pakketten zorgden voor een de facto
standaardisatie van functionaliteiten, opslagwijze en workflows.
3.2.2 ERP-systemen
nodig over wanneer welke producten klaar moeten zijn, uit welke onderdelen de producten
bestaan en wat de levertijd/productietijd van elk onderdeel/grondstof is. Op basis van deze
gegevens kan een aankoopplanning opgesteld worden om tijdig alle grondstoffen en onderdelen
beschikbaar te hebben voor productie.
Deze manier van aankoopplanning bleek echter nog heel wat tekortkomingen te hebben. Zo
hield ze geen rekening met de beschikbare capaciteit van machines of personeel in een orga-
nisatie, zodat sommige onderdelen niet tijdig gemaakt werden, ondanks de beschikbaarheid
van alle grondstoffen. Bovendien werd ook geen rekening gehouden met de capaciteit van le-
veranciers. Daarom werden Manufacturing Resource Planning (MRP II) pakketten gemaakt,
die dergelijke factoren mee in rekening brachten.
Enterprise Resource Planning (ERP)-pakketten gingen nog een stap verder: omdat ERP-
pakketten functionaliteit bevatten voor quasi alle afdelingen van een organisatie, kunnen
we zeggen dat het gaat om bedrijfsbrede standaardpakketten. Deze functionaliteiten
werden bovendien geïntegreerd op databankniveau (door gebruik van een centrale relationele
databank) en zelfs op het semantische niveau.
Figuur 3.7 toont een vereenvoudigde weergave van een ERP implementatie, waarbij een ERP
systeem bestaat uit een applicatie en een databank, beide geïmplementeerd op verschillende
servers. Het besturingssysteem beheert resp. de applicatie- en databankprocessen. ERP
client toepassingen kunnen zowel desktop- als webapplicaties zijn.
Toepassingslaag Toepassingslaag
Besturingssysteem Besturingssysteem
Hardware Hardware
Intern is zo’n ERP-pakket meestal een zeer grote relationele databank met honderden of
zelfs duizenden tabellen, aangevuld met standaard-rapporten, -formulieren, -berekeningen en
-bedrijfsprocessen. Bij het installeren van zo’n ERP-pakket wordt dan bekeken welke aan-
passingen moesten worden uitgevoerd. Een pakket levert immers nooit volledig de nodige
functionaliteit. Men kan, binnen de voorziene mogelijkheden, een pakket wel configureren.
Indien dit niet volstaat, moet het pakket aangepast worden, of moet het pakket worden uit-
gebreid met eigen ontwikkelde programmatuur, dikwijls in een programmeertaal die specifiek
3.3 Golf 3 - web services 60
was voor het pakket. Dat worden ook wel customisaties genoemd. Tenslotte kan ook beslist
worden om bepaalde functionaliteit buiten het pakket te realiseren, in maatwerk.
Een veel gehoord standpunt is echter dat ERP-pakketten best ‘vanilla’ worden gebruikt, of
nog, dat er best ‘vanilla’-implementaties van een ERP-pakket worden gedaan. Dat betekent
dat het pakket zoveel mogelijk wordt gebruikt zonder aanpassingen, omdat de aanpassingen
moeilijk en duur zijn gebleken. Echter, dat impliceert dat de organisatie niet alle vereis-
ten gerealiseerd krijgt, of nog, dat de organisatie wordt aangepast aan de software i.p.v.
omgekeerd.
De opkomst van web services sinds het jaar 2000 vormt de derde golf in dit overzicht van
de informatiesysteemontwikkeling. We behandelen eerst de meerlagige architecturen van
informatiesystemen om dan dieper in te gaan op webtechnologie en tenslotte de plaats van
web services in meerlagige architecturen.
Het gebruik van lagen is een uiterst belangrijk ontwerpprincipe bij de bouw van informatiesys-
temen. Het gaat hierbij om het bepalen van welke software (en/of hardware) verantwoordelijk
is voor het uitvoeren van welke functionaliteit. Hierbij is over de jaren een evolutie van 1-laag
naar 2-lagen en n-lagen architecturen merkbaar.
1-laag architectuur
Bij een 1-laag architectuur worden alle kerntaken van informatiesystemen, zoals input, ver-
werking en output uitgevoerd op dezelfde hardware en software. Dit was bijvoorbeeld het
geval op de eerste mainframes in de jaren ’60 en ‘70. Die mainframes beschikten over een pro-
cessor, terwijl de terminals (schermen) en toetsenborden die ermee verbonden waren en die
gebruikt werden door de eindgebruikers, geen processor bevatten. Vandaar dat men spreekt
over zgn. dumb terminals. Het gevolg hiervan was dat elke berekening, maar ook elke input
en output door de centrale mainframe diende te worden uitgevoerd. Dat betekent ook dat
de applicaties die uitgevoerd werden op de mainframe zowel input, als verwerking en output
dienden te verzorgen. Dus de term 1-laag architectuur verwijst naar een zeer gecentraliseerde
manier van verwerking, waarbij alle input, verwerking en output door één hard- en software
platform werden uitgevoerd.
3.3 Golf 3 - web services 61
2-lagen architectuur
In de jaren ’80 werd de personal computer (PC) geïntroduceerd, die de poort opende voor
meer decentrale verwerking. De PC beschikte immers over een processor, die weliswaar veel
minder krachtig was dan deze van de toenmalige mainframes, maar voldoende was voor
kleine informatiesystemen, of applicaties zoals rekenbladen en tekstverwerkers. Bovendien
beschikten PC’s over kleurenschermen en muizen, die qua bediening veel gebruiksvriendelijker
waren dan de terminals van mainframes. Dit heeft geleid tot een architectuur waarbij de
mainframe zich richtte op functionaliteit waarvoor veel processorkracht is vereist, terwijl de
PC werd gebruikt voor functionaliteit met beperkte processorkracht en interactie met de
eindgebruiker, of nog, de user interface. Of met andere woorden, de PC verzorgde veelal
input en output (laag 1) terwijl de mainframe specialiseerde in verwerking (laag 2).
Deze architectuur wordt ook wel de client/server architectuur genoemd. In deze architectuur
beschikt de server over bepaalde diensten (zoals applicaties of resources) die gebruikt kunnen
worden door clients. De communicatie tussen server en client verloopt meestal over een
computernetwerk. De clients initiëren de communicatie met de server door een service request
te sturen. De server luistert dus naar deze requests op het netwerk. Afhankelijk van de dienst
die de server aanbiedt, wordt een specifieke naam gebruikt: een mail-server biedt als dienst het
verspreiden van e-mail aan, een application server biedt toegang tot een bepaalde applicatie
en een database-server tot een databank. Een print-server verwerkt printopdrachten.
Indien de client zelf nog relatief veel taken uitvoert, wordt gesproken van een ‘fat client’
of ‘thick client’. Als de client relatief weinig taken uitvoert, wordt gesproken van een ‘thin
client’. Door het onderscheid tussen de rollen van client en server wordt deze architectuur
een two-tier (2-tier) architectuur genoemd.
3- en 4-lagen architecturen
In de jaren ’90 waren er nog steeds mainframes met een gecentraliseerde architectuur, maar de
opkomst van het internet leidde tot meer gedecentraliseerde architecturen. Soms wordt er dan
ook gesproken van gedistribueerde verwerking, omdat de verwerking steeds meer gebeurt
op meerdere hardware- en software-platformen (van verschillende types en op verschillende
locaties) i.p.v. op één gecentraliseerd platform.
Qua software was het een kwestie om systemen te bouwen die allemaal via het internet met
elkaar verbonden zijn en dat heeft een overgang van de 2-lagen architecturen uit de jaren ’80
naar 3-lagen en 4-lagen architecturen (algemeen: n-lagen architecturen) veroorzaakt.
Een eerste laag is de databank-laag, die toegang biedt tot opgeslagen gegevens. De servers
op deze laag zorgen ervoor dat applicaties die gegevens nodig hebben, deze kunnen lezen en
dat applicaties die nieuwe gegevens hebben, deze kunnen opslaan op een uniforme manier.
Relationele databanken worden hier dikwijls gebruikt, met SQL als gestandaardiseerde taal
om met de databanken te communiceren.
Een tweede laag bevat de applicaties, die gegevens uit verschillende databanken gebruiken.
Op deze laag worden bewerkingen uitgevoerd die specifiek voor de applicatie op het
toepassingsdomein zijn, zoals het controleren van de juistheid van kredietkaart-gegevens,
het berekenen van een bepaalde korting, of het selecteren van de juiste advertenties voor een
bepaalde gebruiker.
3.3 Golf 3 - web services 62
Via de derde laag, die de user interface bevat, kunnen de eindgebruikers dan op hun compu-
ter via een client toegang krijgen tot de applicatie op de applicatie-server. De user interface
die de gebruiker ziet bevat verschillende elementen die door verschillende servers geleverd
worden, zoals de juiste gegevens, of de advertenties. Op zich zorgen de objecten in de user
interface laag enkel voor het weergeven van vensters, knoppen, afbeeldingen en tekstvelden.
In deze drie lagen-architectuur wordt dus een thin client gebruikt, in tegenstelling tot een
thick client.
Door het toenemend gebruik van het internet werden bovendien veel applicaties via een web
browser aangeboden, in plaats van via een aparte client. De functionaliteit om webpagina’s
aan te bieden wordt dan ook nog afgescheiden van de eigenlijke domeinspecifieke verwerking.
Op deze manier ontstaat een vier-lagen architectuur. We bespreken de webtechnologie in de
volgende deelparagraaf.
In deze architectuur wordt een software-module zoals die op een mainframe gebouwd zou zijn,
dus opgedeeld in verschillende stukken. In een object-georiënteerde taal worden dus speci-
fieke objecten gemaakt om data te behandelen, domeinlogica te verwerken en een user inter-
face weer te geven. Deze verschillende software-objecten kunnen over verschillende hardware-
machines verdeeld worden: zo kunnen de databank en applicatie-objecten op éénzelfde com-
puter staan, of verspreid over verschillende machines.
De voordelen van zulke 4-lagen architecturen worden duidelijk als we ook de hardware-
ontwikkeling in beschouwing nemen. De verdere ontwikkeling op hardware-vlak richting
clients, servers, smartphones, tablets... laat ten eerste toe toe om de 4-lagen architectuur
te verdelen over die clients en servers op verschillende manieren. Men kan op die wijze de
implementatie optimaliseren qua performantie en schaalbaarheid. Men kan niet alleen
elke laag installeren op verschillende servers, maar ook zelfs meerdere servers inzetten voor
elke laag (wat men ook load balancing noemt).
Het tweede voordeel is de aanpasbaarheid van de architectuur. Men kan stukken software
vervangen zonder dat dit gevolgen heeft voor de werking van het volledige programma.
Het derde voordeel van een 4-lagen architectuur is de mogelijkheid om berekeningen centraal
uit te voeren en aan te roepen vanuit meerdere toepassingen.
Het vierde voordeel is complexiteitsreductie en specialisatie. Men kan één deel van de
architectuur bouwen zonder rekening te moeten houden met de andere delen. Bijvoorbeeld
kan men de user interface (web browser) onafhankelijk ontwikkelen van de achterliggende
databank, application server of web server. Men kan zo ook zeer sterk specialiseren in één
technologie. De 4-lagen architectuur laat specialisatie toe.
3.3 Golf 3 - web services 63
Front-end
In de jaren ’90 lanceerde Tim Berners-Lee, software engineer van het Conseil Européen pour
la Recherche Nucléaire (CERN) en de grondlegger van het World Wide Web, de allereerste
website ter wereld. Hij ontwikkelde daarvoor Hypertext Markup Language (HTML), wat de
standaard opmaaktaal van het internet werd, en tevens de allereerste web browser. In
1993 ontstond de Netscape web browser, die ook grafische inhoud kon tonen. Enkele jaren
later werden Internet Explorer (Microsoft), Mozilla Firefox, Google Chrome, Safari en Opera
geïntroduceerd.
Een website bestaat uit verschillende webpagina’s, ook documenten genoemd. Hedendaagse
webpagina’s bestaan uit niet enkel uit HTML maar uit drie verschillende componenten, na-
melijk HTML, CSS en Javascript (zie figuur 3.8). We bespreken elk van die componenten.
Webpagina
Front-end: HTML
HTML of Hypertext Markup Language is een relatief eenvoudige taal waarin men websites
kan bouwen, die men via het internet kan opvragen met behulp van een web browser:
• Hypertext: een document met gemarkeerde stukken tekst (of afbeeldingen) waarop men
kan klikken, wat men hyperlinks noemt, om naar een andere webpagina te gaan. Een
hyperlink laat toe om rechtstreeks te springen van de ene plaats in de ene hypertext
naar een andere plaats in een andere hypertext.
• Markup: HTML-tags zijn speciale commando’s om stukken van een webpagina te mar-
keren, bijvoorbeeld om tekst schuin te presenteren of om een pagina op te delen in
verschillende blokken. Een HTML-element kan bijvoorbeeld een paragraaf zijn, met
<p> voor de start, en </p> voor het einde van de paragraaf.
3.3 Golf 3 - web services 64
Een HTML-element is het geheel van een tag die het element opent, de inhoud, en een tag
die het element sluit. Voor een paragraaf is dit bijv. <p>Dit is een paragraaf.</p> .
Er zijn ook HTML-elementen die géén inhoud hebben, enkel attributen. Bijvoorbeeld <img
src="/logo.png"> toont een afbeelding genaamd ‘logo.png’. In dat geval verwijzen de begrip-
pen ‘tag’ en ‘element’ naar hetzelfde. In HTML wordt zulk een element niet afgesloten met
een tag.
HTML kent gelijkenissen met XML (zie deelparagraaf 1.2.4), en bestaat op dezelfde manier
uit een boomstructuur, die men voor HTML het DOM of Document Object Model noemt.
In tegenstelling tot XML zijn de mogelijke tags en attributen op voorhand vastgelegd.
We tonen hier een voorbeeld van een eenvoudige maar correcte HTML-pagina, waarbij de
inhoud van het <body> element bestaat uit twee paragrafen met tekst, en waarbij de tweede
paragraaf een hyperlink bevat.
1 <!DOCTYPE html>
2 <html>
3 <head>
4 <title>Systeemontwerp</title>
5 </head>
6 <body>
7 <h1>Netwerken</h1>
8 <p>De belangrijkste ontwikkeling in de jaren '90 was het
9 openstellen van het Internet in 1993 voor particulieren
10 en bedrijven.</p>
11 <p>
12 <a href="https://en.wikipedia.org/wiki/History_of_the_Internet">
13 Klik hier
14 </a>
15 om de historiek van het internet te lezen.
16 </p>
17 </body>
18 </html>
Web browsers interpreteren HTML en zetten die om in een bruikbare vorm voor de eind-
gebruiker. Men noemt dit in het Engels ook het werkwoord render. Figuur 3.9 toont het
bovenstaand HTML voorbeeld op een web browser.
Element Tekst
<p> "De belangrijkste..."
Tekst
"Klik hier"
Tekst
"om de historiek..."
HTML bestaat uit de volgende soorten markup tags, waarmee een webpagina opgebouwd
kan worden:
• Structural markup: tags waarmee de structuur van een document gedefinieerd wordt,
bijvoorbeeld kopteksten, paragrafen, een footer enz.
• Presentational markup: tags waarmee men de presentatie (voorstelling) van tekst kan
wijzigen ongeacht het doel van de tekst, bijvoorbeeld vette of schuine tekst. Sinds
de komst van stylesheets (zie verder) wordt het aangeraden om alle stijlkenmerken in
stylesheets te definiëren. Regeleinden zijn mogelijk met een <br> tag, maar ook hier
geldt dat elementen zoals paragrafen al voorzien in een regeleinde aan het einde van
het element.
• Hypertext markup: dit zijn links naar een ander segment van een pagina, een andere
pagina op dezelfde website of naar een pagina op een andere website. Verwijzingen naar
afbeeldingen, die de web browser dan laadt, zijn ook een vorm van hypertext markup:
<img src="images/netwerktopologie.png"> .
• Form markup: dankzij specifieke tags kan een gebruiker formulieren invullen, waarvan
de data verzonden wordt naar de server. Deze data kan zowel tekst, getallen, als
bestanden zijn. Form tags zijn essentieel voor de interactiviteit met applicaties op de
applicatieserver.
Front-end: stylesheets
Met cascading bedoelt men dat de stijlkenmerken volgens een prioriteit worden toegepast op
de respectievelijke HTML-elementen.
Een stylesheet is een opeenvolging van regels, die elk bestaan uit een selector en een de-
claration block. Selectoren kunnen slaan op tags, id’s, classes en een positie. Een id is een
attribuut dat een unieke naam geeft aan één enkel element op de pagina. Een class is een at-
tribuut om één of meerdere elementen op de pagina aan te duiden met dezelfde klassennaam.
Selectoren kunnen gecombineerd worden, waarbij de volgorde bepalend is. Het declaratieblok
bevat een lijst van declaraties, waarbij elke declaratie een key-value pair is: een eigenschap
en een waarde.
Bij het verwerken van de stylesheet regels berekent de web browser een gewicht voor elke
regel volgens de selector. Zo zal de declaratie voor een gecombineerde .header-top .left a
selector voorrang krijgen op .header-top a indien de HTML-pagina hyperlinks
( <a href="/nl/jobs/">Jobs</a> ) bevat die zich in een element met de klasse ‘left’ bevinden
binnen een element met de klasse ‘header-top’. Dit noemt men ook selector specificity.
Als voorbeeld nemen we een klein deel van de stylesheet voor de website van de Universiteit
Antwerpen en illustreren enkele mogelijkheden. Figuur 3.11 toont de top menu van de website,
die met behulp van een stylesheet een specifieke vorm krijgt.
32 <li>
33 <a href="/nl/activiteiten/">Kalender</a></li>
34 <li>
35 <a href="/nl/personeel/">Contact</a></li>
36 </ul>
37 </div>
38 <div class="wrap">
39 <div id="search">
40 <form class="search" id="frm-search" method="get"
41 action="/nl/zoeken/"
42 data-suggest="https://searchapi.uantwerpen.be/search/website/website/all/">
43 <div class="label"><label for="inp-search"></label></div>
44 <div class="inputWrap">
45 <div class="control"><input type="text" id="inp-search"
46 name="inp-search" autocomplete="off">
47 </div>
48 <div class="advance">
49 <div class="action actSearch ghost iconLeft">
50 <button type="ghost">zoek</button>
51 </div>
52 </div>
53 </div>
54 <div class="suggestions"></div>
55 </form>
56 </div>
57 <div class="navLogin stateClosed buttoned" data-pattern="collapse">
58 <header>
59 <h2 class="heading"><a href="#">Login</a></h2></header>
60 <ul>
61 <li>
62 <a href="https://student.uantwerpen.be">
63 Studentenportaal
64 </a>
65 </li>
66 <li>
67 <a href="https://pintra.uantwerpen.be">
68 Personeelsportaal
69 </a>
70 </li>
71 <li>
72 <a href="/nl/studeren/inschrijven/nu-inschrijven/">
73 Online aanmelding
74 </a>
75 </li>
76 <li>
77 <a href="https://admin.www.uantwerpen.be/contentManagement/page-layout/988?tab=3"
78 target="_blank" rel="noopener">Webadmin</a>
79 </li>
80 </ul>
81 </div>
82 <div class="navLang">
83 <ul>
84 <li class="active">
85 <a>nl</a></li>
86 <li>
87 <a href="/en/">en</a></li>
88 </ul>
89 </div>
90 </div>
91 </div>
92 </nav>
Toelichting: het element ‘div’ is een blok, en ‘ul’ een ongenummerde lijst. Elk ‘li’ element
is één lijst item. Zonder opmaak zou dit gerepresenteerd worden als een opeenvolgende lijst
met bullets (bolletjes).
3.3 Golf 3 - web services 68
En het relevante stuk van de stylesheet, bijvoorbeeld voor het ‘div’ element met de klassen
‘siteHeader’ en ‘full’:
In dit voorbeeld, zonder erg technisch te gaan, krijgt het menu standaard een rechtermarge
van 16 pixels ( margin ), maar wanneer de (scherm)breedte minstens 768 pixels is, is de marge
links én rechts 24 pixels. Daarnaast krijgt het menu, onder die voorwaarde, ook witruimte
boven en onder de tekst, aangeduid door padding , van 16 pixels. Ook de de achtergrond
wordt in dat geval wit ( background ), namelijk door de aanduiding met de hexadecimale code
#fff wat overeenkomt met volledig wit (maximaal rood, groen en blauw).
Dit voorbeeld toont meteen het concept media queries. Hiermee kan men verschillende stij-
len toepassen afhankelijk van het medium waarvoor de pagina bestemd is (bijvoorbeeld
screen of print), maar ook afhankelijk van de eigenschappen van het scherm zoals
schermbreedte, hoogte, oriëntatie... Met behulp van media queries kan men dezelfde website
geschikt maken voor gebruik op verschillende apparaten en schermen zoals een PC, tablet of
smartphone, zonder specifieke websites te moeten maken voor elke schermgrootte of elk ap-
paraat. De syntaxis van media queries laat toe om verschillende voorwaarden te combineren.
Dit is zichtbaar in bovenstaand voorbeeld, met name wanneer de breedte, op elke mediavorm,
minstens 768 pixels is.
Men noemt deze techniek ook responsive design, omdat de presentatie van de website
automatisch geoptimaliseerd wordt volgens bepaalde schermeigenschappen. Men kan ook
via de CSS eigenschap display bepaalde elementen al dan niet verbergen voor specifieke
schermgroottes of mediatypes. Op smartphone schermen zal men dikwijls het menu verbergen
en vervangen door een hamburger symbool, dat is een vierkante knop in de vorm van enkele
horizontale lijnen.
Echter illustreert dit voorbeeld ook het concept ‘cascading’. Immers, zoals gezegd is de
rechtermarge 16 pixels (links, boven en onder is er geen marge), maar dit wordt overschreven
door de mediaquery, die een hogere prioriteit heeft.
3.3 Golf 3 - web services 69
De CSS standaard werd stelselmatig verfijnd en uitgebreid met nieuwe eigenschappen, zoals
bijvoorbeeld fade-in en fade-out effecten, beweging en visuele positionering van elementen
op elke plaats op het scherm in plaats van enkel waar het element in de HTML-pagina
gedefinieerd is.
De stylesheets hoeven zich niet op de webserver te bevinden, ook kan de webpagina bepalen
om externe stylesheets te laden (die dus ergens anders gehost wordt). Dikwijls gebruikt
men bibliotheken en thema’s, waarbij de presentatie van webpagina’s door middel van extern
ontwikkelde stylesheets (soms met Javascript) voorgedefinieerd wordt en de programmeur zich
niet meer uitgebreid moet bezighouden met de visualisatiekenmerken zelf. Zulke bibliotheken
ontstaan dikwijls binnen één organisatie en worden dan beschikbaar gesteld voor iedereen,
bijvoorbeeld Bootstrap als raamwerk voor het sociale mediaplatform X (voorheen Twitter).
Bij het gebruik van zulke bibliotheken wordt een website dikwijls automatisch geschikt voor
meerdere apparaten (PC, tablet, smartphone).
Figuur 3.12 toont een demo pagina gemaakt met Bootstrap, geschikt voor zowel een PC web
browser (links) als een smartphone (rechts)1 .
Front-end: javascript
1
https://getbootstrap.com/docs/4.5/examples/
3.3 Golf 3 - web services 70
Web browsers voorzien in Application Programming Interfaces of API’s, die door Javascript
aangeroepen kunnen worden:
• Het DOM (HTML boomstructuur) kan door Javascript gelezen en aangepast worden,
en men kan reageren op events (gebeurtenissen) zoals het klikken op een bepaald ele-
ment, het scrollen, invullen van een veld, of berekeningen maken enz. Dit maakt een
interactieve applicatie mogelijk.
• Audio en video API’s laten toe om audio en video af te spelen, bijvoorbeeld de webcam
te gebruiken.
• Third party API’s zoals Google Maps geven de mogelijkheid om interactieve kaarten
op een webpagina te integreren.
Javascript wordt net zoals stylesheets geladen dankzij speciale HTML-elementen. Een web-
pagina kan eveneens externe scripts laden, bijvoorbeeld van andere partijen zoals Google, X,
Facebook enz.
Voorbeeld:
Door de toename van performantie van PC’s en laptops zijn er steeds meer geavanceerde
interactieve webapplicaties mogelijk. Dikwijls worden er standaard bibliotheken van
Javascript geladen die dynamische functionaliteit toelaten, zoals pop-up vensters, validaties
enz.
Back-end
Figuur 3.13 toont een vereenvoudigde weergave van een server, waarop webserver-software
is geïnstalleerd. Webserver-software luistert naar een netwerkpoort voor binnenkomende
HTTP requests, en bepaalt het antwoord via het aanroepen van een CGI-script of een externe
applicatieserver. Het besturingssysteem beheert één of meerdere webserver-processen, waarbij
een administrator via command line of via een grafische gebruikersinterface de configuratie
kan beheren en/of de webserver kan monitoren. Web browers op clients kunnen gelijktijdig
de webserver benaderen.
3.3 Golf 3 - web services 71
Webserver
Toepassingslaag
Besturingssysteem
Hardware
Figuur 3.14 toont de implementatie van een 4-lagen webarchitectuur, in dit geval vraagt de
gebruiker een webpagina op, al dan niet met een invulformulier, bijvoorbeeld de zoekfunctie
op https://www.google.com.
Server Client(s)
URL
URL Parameters
Parameters Module
Formuliergegevens
Formuliergegevens
HTML pagina
Applicatie HTML pagina Web
Webserver
server browser
Vraag CSS, Javascript
Afbeeldingen
Gebruiker
CSS, Javascript
Afbeeldingen
CSS
Javascript
Afbeeldingen
Databank Bestandssysteem
De client stuurt een verzoek naar de webserver, met parameters of formuliergegevens, die
dan de applicatie oproept en dit verzoek en de parameters doorgeeft. De applicatie verwerkt
het verzoek, voert geprogrammeerde acties uit, en stuurt het resultaat als een HTML-pagina
3.3 Golf 3 - web services 72
terug. De webserver stuurt deze pagina door naar de web browser, die dan de pagina inter-
preteert en stylesheets, afbeeldingen en javascript opvraagt bij de webserver.
Het resultaat van de applicatie kan in plaats van een HTML-pagina ook eender welk ander
formaat zijn, zoals gewone tekst, XML of JSON (JavaScript Object Notation), een PDF, enz.
Javascript kan op de achtergrond verzoeken naar de webserver verzenden, en het resultaat in
bijvoorbeeld JSON verwerken zonder dat de HTML-pagina opnieuw geladen wordt. Dit laat
een hoge graad van interactiviteit toe.
De technische architectuur achter web services (zie deelparagraaf 3.3.3) is in wezen dezelfde als
deze webarchitectuur. Het verzoek wordt naar de webserver verzonden door een applicatie in
plaats van een eindgebruiker. De technologiestack is in vele gevallen identiek of gelijkaardig
aan de stack gebruikt voor websites. In plaats van HTML-pagina’s stuurt de applicatie
boodschappen terug in bijvoorbeeld XML of JSON, die de webserver dan doorgeeft aan de
externe applicatie. Deelparagraaf 3.3.3 behandelt web services meer in detail.
Meestal worden objecten zoals stylesheets, javascript en afbeeldingen opgeslagen op het be-
standssysteem en zijn dus statisch. Statisch betekent dat deze object niet veranderen, ten-
minste voor minstens een lange tijd. Cache mechanismen in de web browser zorgen ervoor
dat statische objecten, waaronder stylesheets, javascript en afbeeldingen niet opnieuw opge-
vraagd worden indien de web browser die reeds eerder ontvangen heeft. In zeer specifieke
gevallen is het mogelijk dat ook deze objecten dynamisch gegenereerd worden door de appli-
catie, bijvoorbeeld wanneer een afbeelding aan de hand van parameters gegenereerd wordt.
Voor audio en video zou statische opslag echter betekenen dat men moet wachten tot het
bestand gedownload is vooraleer men dit kan afspelen. Daarom werd streaming uitgevonden.
Tijdens het streamen wordt continu een gedeelte van de data in een buffer geplaatst, zodat
een programma dit al kan afspelen vóór het volledige bestand gedownload is, of wanneer het
gaat over live streaming. Om streaming toe te laten werden diverse formaten ontwikkeld,
waarbij de audio of video gecodeerd worden met codecs, bijvoorbeeld MP3 (audio), MP4
(audio en video) en DivX (audio en video) of de open source variant Xvid.
3.3 Golf 3 - web services 73
Een groot verschil met intra- of inter-organisatorische applicaties via eigen netwerken, is het
gebruik van het internet als transportmedium. Dit heeft verregaande implicaties, omdat
het internet per definitie voor iedereen toegankelijk is. In 2024 zijn er geschat ongeveer 34
miljard systemen aangesloten op het internet2 : computers, smartphones, tablets, IoT devices
(24 miljard), routers, smart TVs enz. Dat zijn meer dan 4 toestellen per aardbewoner.
Elk systeem heeft een uniek adres, namelijk een IP adres en dikwijls ook een unieke naam
(toegekend door DNS, zie ook paragraaf 2.2). Deze connectiviteit brengt een aantal grote
uitdagingen met zich mee.
Echter kunnen beschikbaarheid en performantie ook op een malafide wijze negatief beïnvloed
worden. Distributed Denial of Service (DDoS) aanvallen zijn pogingen om een dienst of
een server zodanig te belasten, dat de toegang tot die dienst bemoeilijkt wordt. Voor DDoS
gebruikt men talloze computers, die gecoördineerd in de vorm van een botnet tegelijkertijd
een groot aantal verzoeken sturen naar één server. Een botnet bestaat uit computers (bots)
die dikwijls gehackt zijn door geïnstalleerde software via computerwormen of achterdeuren.
Men noemt deze geïnfecteerde computers ook zombies. De grote hoeveelheid aangesloten
systemen op het internet maakt zulke botnets mogelijk, omdat men altijd wel systemen
kan vinden die slecht beveiligd zijn of niet beschikken over de laatste veiligheidspatches.
Vele systemen worden zo ongemerkt misbruikt. Een PC kan immers met gemak duizenden
geheime verzoeken sturen zonder dat de gebruiker het zelfs merkt.
Versleuteling is echter enkel een garantie voor de veiligheid van gegevensoverdracht. Cri-
minelen worden steeds professioneler, en kunnen dankzij beveiligingsproblemen nog steeds
2
https://www.statista.com/statistics/1101442/iot-number-of-connected-devices-worldwide/
3.3 Golf 3 - web services 74
In bijna alle gevallen is het motief van een crimineel financieel. Indien een crimineel er
in slaagt via een gehackte website bepaalde software op een PC te installeren, kan men niet
alleen privé gegevens lezen en misbruiken, maar ook geld eisen van gebruikers en organisaties.
Ransomware of gijzelsoftware is software die de gegevens op een computer blokkeert/versleu-
telt, en waarbij de crimineel in ruil voor losgeld (ransom), dikwijls in een niet traceerbare
munt zoals cryptomunten, de gegevens weer zou ‘bevrijden’. In toenemende mate worden
bijvoorbeeld ziekenhuizen, overheidsdiensten en (grote) bedrijven aangevallen, al dan niet
met succes.
MediaWiki is andere een vorm van een CMS, gericht op samenwerking door iedereen in plaats
van individueel bloggen en publiceren. De bekendste implementatie van MediaWiki, en ook
de reden van het ontstaan ervan, is Wikipedia.
3
https://haveibeenpwned.com/
4
https://en.wikipedia.org/wiki/List_of_data_breaches
3.3 Golf 3 - web services 75
Web services zijn functionele modules die volgens een meerlagige webarchitectuur geïmple-
menteerd worden, zoals besproken werd in paragraaf 3.3.2. Ze zijn een doorgedreven imple-
mentatie van het concept modulariteit zoals we bespraken in deelparagraaf 3.1.2.
Web services ontstonden in de jaren 2000 toen er steeds krachtigere websites werden ontwik-
keld, met functies zoals het registreren van reservaties, aankopen, betalingen, identititeitscon-
troles enz. Dit vereiste immers dat de websites (meer bepaald de achterliggende application
servers) over software beschikten die efficiënt kon communiceren over het internet. Construc-
ten zoals objecten bieden daar standaard geen functionaliteit voor en daarom werden web
services als een nieuw construct voorgesteld.
Of met andere woorden: web services zouden moeten kunnen draaien op alle soorten hardware
en besturingssystemen. Daarnaast moeten we services kunnen samenstellen (assembleren) uit
web services, die gemakkelijk kunnen vervangen worden (evolueerbaarheid). Dit kan niet met
standaardpakketten. Koppeling was ook één van de grote problemen van standaardpakketten.
Als men een bepaald deel van zo’n pakket wou gebruiken, moet men beschikken over het hele
pakket. Losse koppeling (loose coupling) geeft de mogelijkheid om zelf te beslissen welke
service van welk bedrijf men gebruikt.
Een web service is concreet een module bestaande uit een aantal objecten waaraan een
interface wordt toegevoegd zodat de module kan aangeroepen worden over het internet door
andere web services, en zelf andere web services kan aanroepen over Internet. Hierbij volgen
web services dezelfde 4-lagen webarchitectuur zoals besproken in deelparagraaf 3.3.2.
Figuur 3.15 toont zeer algemeen de implementatie van een 4-lagen webarchitectuur voor web
services.
5
Papazoglou, M.P., Traverso, P., Dustdar S., and F. Leymann. (2006). Service-Oriented Computing
Research Roadmap. Technical report/ vision paper on Service oriented computing European Union Information
Society Technologies (IST), Directorate D – Software Technologies.
3.3 Golf 3 - web services 76
Server Client(s)
URL
Parameters Module
SOAP/URI
Formuliergegevens
Afbeeldingen
Databank Bestandssysteem
Om web services over het internet andere web services te laten aanroepen, werden een aantal
standaard netwerkprotocollen voorgesteld zoals SOAP (Simple Object Access Protocol) en
WSDL (Web Services Definition Language). De interface van een service wordt in XML-
formaat beschreven in een WSDL-document. Aanbieders van een service publiceren hun
interface in zo’n WSDL-document, waarna aanroepende modules weten hoe ze de interface
moeten aanroepen. De aanroep van een service gebeurt in XML-formaat door een SOAP-
boodschap te sturen naar de aangeroepen service, met de naam van de gevraagde service en
alle parameters. Na uitvoering van de service, wordt het resultaat eveneens teruggestuurd in
een SOAP-boodschap.
Initieel was het de bedoeling dat er catalogi werden aangelegd van alle beschikbare services,
ofwel binnen een organisatie, ofwel op het niveau van het ganse Internet. Daarvoor werd
UDDI (Universal Description, Discovery and Integration) ontwikkeld, een soort databank
van WSDL-documenten van beschikbare services.
Figuur 3.16 toont schematisch hoe een web service aangeroepen wordt.
Het aanroepen door de service requester via SOAP bij een service van een service provider,
en het retourneren van het resultaat aan de service requester is het gedeelte van figuur 3.15
dat wordt geïllustreerd in figuur 3.16.
Samengevat komt het erop neer dat een web service een nieuw en krachtiger construct was, dat
de bouw van meer modulaire systemen die communiceerden over het internet moest mogelijk
maken. Van software die grotendeels op web services of het idee van los gekoppelde services
is gebaseerd, wordt ook gezegd dat die een zogenaamde Service-Oriented Architecture (SOA)
heeft.
Na de introductie van web services op basis van SOAP, WSDL en UDDI, volgden nieuwe ont-
wikkelingen. Zo werd in 2004 de REST-architectuur voor web services voorgesteld. REST
(REpresentational State Transfer) is geen netwerkprotocol, maar een architectuur om web
services te bouwen, gebaseerd op het standaard netwerkprotocol van het internet, nl. HTTP.
REST werd ontwikkeld met als focus niet zozeer de uitwisseling van XML-gebaseerde data
zoals SOAP, maar het uitwisselen van bestanden en media (foto, video) en dit in een con-
text van diverse, heterogene hardware-platformen (tablets, smartphones, pc’s, servers, van
diverse merken…). Deze interoperabiliteit is bijzonder waardevol, omdat standaardisatie door
een architectuur zoals REST, de aanzienlijke complexiteit wegneemt om een web service te
doen werken op de vele combinaties van diverse hardware en diverse besturingssystemen die
tegenwoordig beschikbaar zijn.
• Client/server: de client vraagt een service bij een server. De server antwoordt door de
service uit te voeren, of weigert de vraag.
• Stateless: een server houdt geen informatie of status bij van de voorbije vragen of
interacties met de client. Dat betekent bijv. in de context van een winkelwagentje in
een webwinkel, dat de server niet bijhoudt wat de client enkele seconden geleden reeds
vroeg. Dit moet worden bijgehouden door de client.
• Cacheable: door het stateless karakter van de interactie tussen client en server, komt
het frequent voor dat de client dezelfde of gelijkaardige vragen stelt aan de server, wat
de performantie verlaagt. Dit wordt geadresseerd door aan de kant van de client een
cache geheugen bij te houden, waarin de antwoorden op vorige vragen tijdelijk worden
bijgehouden.
In REST wordt gebruik gemaakt van Uniform Resource Identifiers (URIs) om resources te
identificeren. Deze resources kunnen een foto of video betreffen, maar ook een lijn in een
(relationele) database. Zo kan bijv. naar gegevens van werknemer met nummer 1 bij ‘The
Antwerp Company (tac.com)’ worden verwezen met de URI https://tac.com/werknemer/1.
In REST kunnen operaties worden aangeroepen zoals:
• GET : lezen
• POST : schrijven
• PUT : updaten
• DELETE: verwijderen
3.3 Golf 3 - web services 78
Merk op dat deze operaties erg gelijkaardig zijn aan de CRUD-operaties in een relationele da-
tabank, maar met het cruciale verschil dat ze in een REST architectuur kunnen aangeroepen
worden in een gedistribueerde, internet-gebaseerde architectuur, alsook dat het kan
gaan over gestructureerde, semi-gestructureerde en ongestructureerde data (terwijl
relationele databanken voornamelijk gericht zijn op gestructureerde data).
Een belangrijk verschil tussen SOAP en REST heeft te maken met data representatie: terwijl
SOAP gericht is op het gebruik van XML voor het representeren van data, laat REST uit-
drukkelijk ook andere formaten toe, zoals JSON (JavaScript Object Notation). In JSON
zou het adres van ‘The Antwerp Company’ bijv. kunnen beschreven worden als volgt:
{"city":"Antwerp","street":"Rooseveltplaats 1"} . JSON heeft onder meer als voordeel dat
de data representatie veel beknopter is dan in XML, waardoor communicatie en opslag van
data efficiënter kan gebeuren. REST is sinds de introductie in 2004 zeer populair geworden,
en wordt gebruikt door bijv. Facebook, Google en X (voorheen Twitter). Ook op cloud-
platformen zoals Amazon en Azure wordt gebruik gemaakt van REST.
Eén van de recentste ontwikkelingen op het vlak van web services, betreft micro-services.
Micro-services is een architecturale stijl, waarbij wordt benadrukt dat de granulariteit van
de web services fijnmazig dient te zijn, of met andere woorden, dat een architectuur dient
te bestaan uit relatief veel, relatief kleine web services, en vormt het tegenovergestelde van
grote, monolithische systemen.
• Flexibiliteit door losse koppeling tussen de micro-services: als een micro-service wordt
aangepast, heeft dit geen invloed op de andere micro-services.
• Betrouwbaarheid: als een micro-service uitvalt, wordt (automatisch) een andere micro-
service gebruikt (op een andere server).
• Testbaarheid: elke micro-service kan individueel getest worden, wat eenvoudiger is dan
grote, monolithische gehelen testen.
• Kleine teams: micro-services kunnen gebouwd worden door kleine ontwikkelteams, wat
de complexiteit van grote teams elimineert.
Het cruciale kenmerk van web services, en het duidelijkst zichtbaar bij micro-services, is het
modulaire karakter: niet alleen vormt een API de interface van een module, maar het
ontwikkelen van informatiesystemen bestaat in toenemende mate uit het aanroepen (of her-
gebruiken) van bestaande web services op het internet (ontwikkeld door een andere partij), en
die functionaliteit toevoegen die specifiek is voor de eigen organisatie. In deze context spreekt
men van het assembleren van software i.p.v. programmeren. Web services zijn hierdoor op
dit moment de meest krachtige constructen om software qua hergebruik, integratie en
evolueerbaarheid een soort ‘plug-and-play’-karakter te bezorgen, zowel bij bouw als bij
onderhoud. En het internet bestaat in deze context niet meer uit tekst-gebaseerde websites
zoals in het begin van de jaren ’90, maar uit collaborerende software, of nog, sterk gedistribu-
eerde systemen: systemen die niet meer op één of enkele servers staan, maar indien gewenst
op bijv. tientallen verschillende systemen die collaboreren om één service uit te voeren.
3.3 Golf 3 - web services 79
Web services geven eveneens een nieuwe dynamiek aan de verhouding tussen maatwerk en
standaardpakketten. Na de dominantie van maatwerk in de jaren ’60 tot ’80 en de opkomst
van de ERP-pakketten sinds de jaren ’90, zouden web services een antwoord kunnen bieden op
zwakke punten van het gebruik van pakketten, zoals de beperkte flexibiliteit die heeft geleid
tot de zgn. vanilla-implementaties. Dit zou kunnen door zowel de pakketten te bouwen d.m.v.
web services, alsook de customisaties die eraan toegevoegd worden. Hierdoor verschuift de
balans misschien toch iets meer naar maatwerk: de hoop is dat web services evolueerbaarheid
bieden zodat pakketten d.m.v. customisaties toch meer aangepast kunnen worden aan de
individuele noden van organisaties waar nodig (of om met innovaties te differentiëren van
concurrenten), terwijl de voordelen van standaardisatie maximaal benut blijven door deels
gebruik te maken van pakketten.
HOOFDSTUK 4
4.1 Methodologieën
Vanaf het ontstaan van de eerste computers werden informatiesystemen gebouwd. Het pro-
grammeren ervan, maar ook het onderhouden en het bepalen van welke informatiesystemen
moesten gebouwd worden, bleek al snel een complexe zaak te zijn. In die tijd gebeurde sys-
teemontwikkeling ook tot op grote hoogte ad hoc, d.w.z. elke programmeur of groep van
programmeurs gebruikte andere manieren om systemen te bouwen. Ook werd in die context
heel dikwijls hetzelfde probleem door een andere (groep van) programmeur(s) opnieuw opge-
lost, wat in feite neerkwam op “het wiel heruitvinden”. Deze factoren waren drijfveren om een
systematische manier te vinden om systemen te bouwen, die wetenschappelijk bewezen tot
goede of zelfs uitstekende resultaten zou leiden. Dergelijke manier wordt in de literatuur een
methodologie genoemd, en het gebied dat zich richt op het bouwen van informatiesystemen
wordt ook wel de systeemontwikkeling genoemd.
Er zijn vele definities van methodologieën, maar essentieel is het streven naar een systema-
tische, wetenschappelijk onderbouwde aanpak. Definities zoals “comprehensive guidelines
to follow for completing every activity in the systems development life cycle, including mo-
dels, tools and techniques” 1 , of nog, “een aanbevolen geheel van filosofieën, fasen, procedures,
regels, technieken, tools, documentatie, management en training voor ontwikkelaars van infor-
matiesystemen”, geven verder aan dat een methodologie omvangrijk of zelfs allesomvattend
(Engels: comprehensive) zou moeten zijn. Er werden de afgelopen decennia honderden me-
thodologieën ontwikkeld, zowel door academici als door commerciële organisaties. Sommige
organisaties geven er de voorkeur aan hun eigen methodologie te ontwikkelen, terwijl anderen
1
Satzinger, J., Jackson, R, Burd, S. (2008). Systems Analysis and Design in a Changing World, 7th edition.
4.2 Enkele definities 81
liever een methodologie van een externe partij gebruiken. Als voorbeelden van een veelge-
bruikte methodologie vermelden we het Unified Process (UP), terwijl recent ook Scrum en
ook andere Agile methoden veel wordt gebruikt.
Bij het beschouwen van methodologieën wordt er een onderscheid gemaakt tussen processen
en producten. Bij processen gaat het in hoofdzaak over de volgorde waarin bepaalde activi-
teiten of fasen moeten worden uitgevoerd. Voorbeelden van processen zijn het watervalmodel
en iteratieve processen.
Software producten zijn de resultaten van zo’n activiteit. Dat kan bijv. software zijn, maar
ook een document met vereisten en modellen.
Een techniek beschrijft hoe een activiteit uitgevoerd moet worden. Zo zijn er bijv. inter-
viewtechnieken om de vereisten te bepalen en technieken voor datamodellering (hoe een goed
model maken van data in een informatiesysteem) en procesmodellering (hoe een goed model
maken van een proces in een informatiesysteem).
Order Payment
Article
PK orderId PK paymentId
PK articleId
date paymentMethod
name
customerName date
price
deliveryAddress FK1 orderId
description
FK1 articleId amount
Catalogue
PK CatalogueId
Name
FK1 articleId
Een model kan het product van een activiteit zijn en is qua vorm dikwijls een semi-formeel,
grafisch model. Op het gebied van data modellering wordt bijv. gebruik gemaakt van een
entity-relationship model (ER)-model om de data in een bepaalde organisatie te beschrijven
(getoond in figuur 4.2), terwijl in proces modellering bijv. gebruik wordt gemaakt van een Bu-
siness Process Modeling Notation (BPMN)-model om een proces in een bepaalde organisatie
te beschrijven (getoond in figuur 4.3).
Voor het uitvoeren van alle activiteiten, zijn ook veel zgn. ‘tools’ gebouwd. Dit zijn geau-
tomatiseerde hulpmiddelen/software om een activiteit uit te voeren. Voorbeelden hiervan
zijn tekenprogramma’s om de grafische modellen te tekenen, project management software,
compilers, Computer Aided Software Engineering (CASE) tools en vele anderen.
Methodologieën kunnen uit alle bovenstaande componenten bestaan: ze kunnen zowel proces-
sen bevatten, als technieken om bepaalde producten aan te maken. Die producten bestaan
dikwijls uit modellen die in een bepaalde grafische notatie worden uitgedrukt, al dan niet
met ondersteuning van een tool. Zo kunnen we stellen dat data modellering een techniek is
waarvan de resultaten bijv. gedocumenteerd worden in ER-modellen waarvoor verschillende
notaties bestaan. Proces modellering is een techniek waarvan de resultaten bijv. gedocumen-
teerd worden in modellen op basis van de BPMN-notatie.
4.3 Watervalmodel 83
4.3 Watervalmodel
Het watervalmodel is een procesmodel, afgebeeld in figuur 4.4, dat rond 1970 werd voorgesteld
door Royce, maar dat nog steeds veel gebruikt wordt. Er bestaan varianten van, maar in
essentie bestaat het uit het sequentieel uitvoeren van de fasen project management, analyse,
ontwerp, programmeren, testen en onderhoud.
• Document-gebaseerd: op het einde van elke fase wordt een product gemaakt dat een
formeel akkoord moet krijgen van alle belanghebbenden. Dat product kan een document
of software zijn, en het formeel akkoord kan de vorm van een handtekening hebben.
• Lange tijd tussen begin en einde van project: hierdoor is er weinig of geen feedback
van eindgebruikers aan de ontwikkelaars tijdens het traject. Dit kan onder meer voor
problemen zorgen als de vereisten veranderen tijdens het traject.
4.3 Watervalmodel 84
Het bouwen van een informatiesysteem wordt meestal beschouwd als een project. Een project
wordt gedefinieerd als een “planned undertaking with a beginning and an end that produces a
predetermined result and is usually constrained by a schedule and resources” 2 .
Typisch voor een project is dat het in zekere mate uniek is, wat het verschillend maakt van
productie. Het produceren van auto’s in een assemblagebedrijf is een typisch voorbeeld van
productie: hetzelfde of een gelijkaardig product wordt op een gelijkaardige manier geprodu-
ceerd in grote hoeveelheden. Bij productie weet men vooraf dat bepaalde risico’s zich niet of
nauwelijks voordoen of dat de effecten ervan onder controle zijn, omdat men steeds op een
gelijkaardige manier te werk gaat. Echter, omdat een project in zekere mate uniek is, zijn er
altijd bepaalde risico’s mee verbonden die d.m.v. project management onder controle moeten
worden gehouden. Deze kunnen van bedrijfskundige aard zijn (zoals timing en budget) of
technische aard (beveiliging van een informatiesysteem, performantie van hardware, …).
Project management heeft betrekking op het plannen én opvolgen van projecten. Typisch
wordt hierbij gekeken naar variabelen zoals tijd, kost en kwaliteit. Kwaliteit verwijst hier
enerzijds naar de omvang (Engels: scope) van het project en anderzijds naar kwaliteitsfactoren
zoals onderhoudbaarheid, herbruikbaarheid, correctheid, …van software. De afweging tussen
deze drie variabelen wordt weergegeven in de zgn. “project management driehoek”, afgebeeld
in figuur 4.5.
Het project management van een informatiesysteem wordt dikwijls verzorgd door een be-
drijfskundige. Voorbeelden van vragen die relevant zijn in de project management fase:
– Dit kan bepaald worden op basis van o.m. de bedrijfskundige strategie, missie, …
– Financier
– Project manager
– Eindgebruiker
2
Satzinger, J., Jackson, R, Burd, S. (2008). Systems Analysis and Design in a Changing World, 7th edition.
4.3 Watervalmodel 85
– Technici
– Externe belanghebbenden
4.3.2 Analysefase
De bedoeling van de analysefase is te bepalen wat het informatiesysteem moet doen, of nog,
de vereisten (Engels: requirements) volledig, consistent en ondubbelzinnig in kaart te brengen
en neer te schrijven in een document dat de vereistenspecificatie heet.
In de eerste stap van de analysefase worden de vereisten verzameld. Dit gebeurt door het
afnemen van interviews met de eindgebruikers en andere belanghebbenden. Andere manie-
ren zijn: documentatie van bestaande bedrijfsprocessen of informatiesystemen, vragenlijsten,
observatie van bestaande bedrijfsprocessen en/of brainstorm sessies.
Het watervalmodel gaat ervan uit dat de eindgebruikers de vereisten kennen, waardoor de
analist in feite een passieve rol speelt en deze ‘verzamelt en neerschrijft’. Echter, eindgebrui-
kers kennen soms de nieuwe mogelijkheden van de recente ICT niet, waardoor ze in feite
sub-optimale vereisten zouden formuleren. Daarom is er tegenwoordig steeds meer sprake
van co-creatie, waarbij de analist, die de recente ICT wel zou moeten kennen, een meer ac-
tieve rol krijgt door mee te denken met de eindgebruikers om samen de vereisten te bepalen.
Dergelijke co-creatie biedt de kans om meer innovatieve vereisten te ontwikkelen dan met een
klassiek opzet.
4.3 Watervalmodel 86
Het resultaat van het verzamelen van de vereisten is een (elektronisch) document, waarin
twee soorten vereisten worden neergeschreven in natuurlijke taal:
• Functionele vereisten
• Niet-functionele vereisten
• Complexiteitsreductie: modellen zijn altijd een abstractie van de reële wereld en dus
een vereenvoudiging. Een data model bevat bijv. weinig of geen procesvereisten. De
complexiteit van het opstellen van alle vereisten van het informatiesysteem wordt zo
in kleinere stukken opgedeeld (complexiteitsreductie). Deze stap-voor-stap aanpak is
beter haalbaar dan alle complexiteit tegelijkertijd aanpakken.
• Fouten elimineren: door gebruik van natuurlijke taal kunnen er veel fouten optreden
in de vereisten. Elke taalkundig correcte zin kan immers in een vereisten-document
opgenomen worden, ook al is de inhoud onzin. De notatie van modellen zorgt ervoor
dat bepaalde fouten niet (gemakkelijk) gemaakt kunnen worden.
4.3.3 Ontwerp
In de ontwerpfase wordt een aanvang genomen met de bouw van een informatiesysteem dat
voldoet aan de vereisten die werden vastgelegd in de analysefase. De ontwerpfase beantwoordt
dan ook de vraag “Hoe moet het informatiesysteem gestructureerd worden om kwalitatief
‘goed’ te zijn?”.
Voorbeelden van vragen die relevant zijn in de ontwerpfase van meer specifiek de software
van het informatiesysteem:
• Hoog-niveau ontwerp van software (ook ‘architectuur’ genoemd): welke zijn de subsys-
temen (modules) die onderscheiden kunnen worden?
Het ontwerp van software is een technische aangelegenheid en wordt niet uitgevoerd door
bedrijfskundigen. Echter, kennis van de bedrijfskunde helpt om de vereisten uit de analysefase
sneller en diepgaander te begrijpen. Daarom kunnen ontwerpers ook hybride profielen zijn,
die opgeleid zijn zowel in de bedrijfskunde als in de ICT.
In het eerste hoofdstuk beschreven we dat informatiesystemen ruimer zijn dan enkel software.
Dat betekent dat er in de ontwerpfase ook aandacht dient te zijn voor het ontwerp van
(computer) netwerken, databanken, user interfaces en andere aspecten. Echter, in deze cursus
gaan we hier niet verder op in.
Het watervalmodel in strikte zin vereist dat op het einde van de ontwerpfase, een document
wordt geproduceerd dat voor akkoord ondertekend wordt door de betrokken belanghebben-
den. Dat akkoord is essentieel om een aanvang te kunnen nemen met de implementatiefase,
die dikwijls ook de langste en duurste fase is bij de ontwikkeling van nieuwe systemen.
4.3 Watervalmodel 88
4.3.4 Programmeren
Na het ontwerp wordt de software van het informatiesysteem geprogrammeerd. Dit wordt ook
de implementatiefase genoemd. Het doel van deze fase is het ontwerp zodanig programmeren
in een programmeertaal dat software van hoge kwaliteit ontstaat. Deze kwaliteit verwijst
onder meer naar de niet-functionele vereisten die in de analysefase werden vooropgesteld.
Programmeren blijft ook nu nog in grote mate een manuele aangelegenheid. Niettegenstaande
veel onderzoek naar codegeneratoren (d.w.z. een tool die software schrijft, of nog, software
die software schrijft) is het bouwen van software in de praktijk tot op grote hoogte niet ge-
automatiseerd. Wel zijn er veel nuttige tools die het manuele werk vergemakkelijken. Ook is
er hergebruik van bibliotheken die bepaalde standaardfunctionaliteit bevatten. Zo worden de
schermen van een user interface niet telkens opnieuw geprogrammeerd (met menu’s, scroll-
bars, …), maar worden deze beschikbaar gesteld door een commerciële of niet-commerciële
partij in de vorm van een (software-)bibliotheek, die programmeurs wereldwijd hergebruiken,
wat de manuele inspanning vermindert. Niettemin is de hoeveelheid benodigde program-
meurs nog steeds zeer aanzienlijk, wat veel organisaties ertoe heeft aangezet om de productie
van software in het buitenland te laten gebeuren.
Het spreekt voor zich dat de programmeur een specialist dient te zijn in technische materie.
Echter, zoals in hoofdstuk 1 werd besproken, stelt dit specialisme de uitdaging dat er een
kloof is tussen de technische competenties van de programmeur in de implementatiefase en de
bedrijfskundige competenties van eindgebruiker. In het watervalmodel komen deze twee ver-
schillende profielen nooit met elkaar in contact: de communicatie gebeurt via de documenten
die vanuit de analysefase via ontwerp bij de programmeur terecht komen.
4.3.5 Testen
Het testen van software is een zeer belangrijke aangelegenheid. Immers, zelfs een kleine fout
kan grote gevolgen hebben voor een organisatie.
Er wordt een onderscheid gemaakt tussen verificatie en validatie: bij verificatie wordt
nagegaan of de werking van het systeem correspondeert met de vereistenspecificatie zoals die
in de analysefase wordt opgesteld. Dit beantwoordt de vraag “werkt het systeem correct?”.
Bij validatie wordt nagegaan of het systeem beantwoordt aan de informatiebehoeften van
de eindgebruiker in de realiteit. Dit geeft dus antwoord op de vraag “hebben we het juiste
systeem gebouwd?”. Dit onderscheid wordt grafisch weergegeven in figuur 4.6.
4.3 Watervalmodel 89
4.3.6 Onderhoud
Na het testen van het informatiesysteem, wordt het in gebruik genomen, of nog, ‘in productie’
geplaatst. Alle wijzigingen vanaf dat moment vallen onder de noemer ‘onderhoud’. We
onderscheiden vier soorten onderhoud:
• Adaptief onderhoud: wijzigingen om software naar een ander platform brengen (bijv.
een ander besturingssysteem of andere hardware).
• Correctief onderhoud: corrigeren van fouten tijdens het programmeren (Engels: ‘bugs’).
In de context van onderhoud is het belangrijk te verwijzen naar twee wetten die werden
voorgesteld door M.M. Lehman:
• The law of continuing change / wet van de voortdurende verandering: “Een programma
dat gebruikt wordt in de reële wereld moet veranderen (evolueren), of het wordt minder
en minder bruikbaar”. Dit impliceert dat het nut van software over de tijd daalt, tenzij
er in antwoord op wijzigende gebruikersvereisten onderhoud wordt uitgevoerd.
• The law of increasing complexity / wet van de toenemende complexiteit: “De struc-
tuur van een programma dat evolueert, wordt complexer met de tijd, tenzij de nodige
stappen worden ondernomen om dit tegen te gaan”. Wanneer er in de levensloop van
4.3 Watervalmodel 90
het programma regelmatig wijzigingen worden aangebracht, zal de structuur van het
programma achteruit gaan (ook bekend als structuurdegradatie). Dit betekent dat, om
de onderhoudbaarheid te verbeteren, er regelmatig een herstructurering van de soft-
ware moet uitgevoerd worden die dit fenomeen tegengaat. Dit onderhoud is het hoger
beschreven preventief onderhoud.
In een strikte interpretatie van het watervalmodel volgen de fasen elkaar in sequentie op, zon-
der overlap. Dit is het gevolg van het document-gebaseerde karakter van het watervalmodel,
waarbij een fase eerst wordt afgesloten met een document en een formeel akkoord van alle
belanghebbenden alvorens er naar een volgende fase kan worden gegaan. Dit zorgt er echter
voor dat de doorlooptijd van het watervalmodel lang kan zijn. Daarom is een mogelijke va-
riant om de fasen gedeeltelijk te laten overlappen. Zo kunnen sommige ontwerpactiviteiten
al begonnen worden, terwijl de analysefase nog niet helemaal is afgelopen.
Een volgende nuancering betreft het onderscheid tussen grote en kleine projecten. Het wa-
tervalmodel was gericht op het uitvoeren van grote, complexe projecten. In kleine projecten
waar alle belanghebbenden elkaar kennen en ontmoeten, is het bijv. niet altijd nodig om alle
vereisten op papier te zetten, of nog, om na elke fase formeel een handtekening te vragen.
Andere nuanceringen betreffen omstandigheden waarbij een software pakket wordt gebruikt.
Zo’n ‘make or buy’-beslissing heeft bijv. tot gevolg dat het ontwerp en de programmatuur al
grotendeels bepaald is in het software pakket. Echter, bijna altijd moeten dergelijke pakketten
aangepast worden aan de specifieke noden van de organisatie. Termen die hiervoor gebruikt
worden zijn onder meer ‘configuratie’ en ‘customisatie’. Dit zorgt ervoor dat de ontwerp-
en implementatiefase een erg verschillende inhoud hebben in vergelijking met maatwerk.
Het spiraalmodel van Boehm, afgebeeld in figuur 4.7, is een voorbeeld van een iteratief ont-
wikkelingsmodel. Deze figuur geeft het hierboven besproken traject grafisch weer. Het grote
voordeel van een dergelijk model is dat de risico’s van het project worden teruggedrongen:
door de tussentijdse feedback voorkomt men dat men een systeem heeft ontwikkeld dat niet
overeenstemt met wat de eindgebruiker wil.
4.4 Scrum 91
4.4 Scrum
Rond 2000 zijn de zgn. agile methoden voorgesteld, die allemaal zeer iteratieve aanpakken zijn
waarbij met relatief korte iteraties wordt gewerkt. Een voorbeeld van zo’n aanpak is Scrum.
Scrum is gericht op zeer dynamische, snel veranderende omgevingen waarin gebruikers niet
exact weten wat hun vereisten zijn, en waarin deze waarschijnlijk veranderen over de tijd. In
Scrum wordt vertrokken van een product backlog, die een lijst is van de vereisten waaraan het
informatiesysteem moet voldoen en die wordt beheerd door de product owner.
Het verschil met het watervalmodel is dat deze lijst niet volledig hoeft te zijn, maar louter
de items dient te bevatten die men op dit moment belangrijk vindt. Deze lijst wordt van
prioriteiten voorzien, en enkel aan de belangrijkste prioriteiten wordt gewerkt.
Een Scrum team bestaat uit een kleine groep ontwikkelaars (bijv. een vijftal) die samenwerken
om het informatiesysteem te bouwen. Grotere projecten worden uitgevoerd door ze op te
delen in kleinere projecten die aan verschillende teams worden toegekend. Het Scrum team
zet zelf de doelen die het wil bereiken binnen een gegeven tijd, en organiseert zichzelf dan om
deze doelen te realiseren. De Scrum master stuurt het scrum team aan, maar het is niet de
bedoeling dat de scrum master gedetailleerde planningen uitwerkt of taken toekent. Scrum
teams worden immers geacht self-organising te zijn, waardoor de rol van de Scrum master
eerder een rol van facilitator is.
4.5 Enterprise architectuur 92
Een Scrum sprint is een periode waarin een specifiek doel bereikt dient te worden (bijv. 2
weken, maar het kan ook korter zijn). Bij het begin bepaalt een team de planning voor de
sprint, op basis van de product backlog. Daarna worden analyse (in overleg met gebruikers
of andere belanghebbenden), ontwerp en implementatie uitgevoerd binnen de periode van de
Scrum sprint. Daarna herhaalt het proces zich voor een volgende Scrum sprint.
Bij Scrum is er een hoge mate van samenwerking tussen gebruikers en leden van het Scrum
team. Beide kunnen elkaar regelmatig of zelfs dagelijks contacteren. Dat zorgt, in tegen-
stelling tot het watervalmodel, tot meer fusie en co-creatie tussen business en IT, waarmee
getracht wordt de klassieke kloof tussen bedrijfskundigen en de meer technische profielen te
overbruggen.
Scrum wordt momenteel zeer veel gebruikt. Niettemin zijn er ook beperkingen. Zo wordt
bijv. aangestipt dat bij zeer grote projecten deze iteratieve manier van werken niet tot goede
resultaten leidt. Het werk wordt dan verdeeld over een groot aantal teams, waardoor een
belangrijke coördinatie- en integratie-inspanning vereist is. Recent wordt onderzocht hoe
Scrum kan worden aangepast om hieraan tegemoet te komen.
Eind jaren ’80 en begin jaren ’90 ontstaat aandacht voor het concept Enterprise Architectuur
als een poging om de complexiteit te beheersen die samenhangt met de steeds groter wor-
dende verzameling informatiesystemen in organisaties, van maatwerk tot standaardpakketten.
De volledige verzameling van informatiesystemen, van functioneel (bijv. bedrijfsprocessen)
tot constructief niveau (bijv. software code) wordt ook wel de enterprise architectuur ge-
noemd. De enterprise architectuur beschrijft in zekere zin het landschap van de organisatie,
dat typisch bestaat uit een combinatie van maatwerk, standaardpakketten en web services.
Tenslotte is er binnen enterprise architectuur ook veel aandacht voor integratie. Qua in-
tegratie wordt bijv. de zgn. Enterprise Service Bus (ESB) voorgesteld om verschillende
systemen te integreren.
HOOFDSTUK 5
Eerder stelden we dat er een onderscheid gemaakt kan worden tussen het ondersteunend en
het innovatief perspectief binnen de beleidsinformatica. In dit hoofdstuk beschouwen we een
aantal recente en nieuwe technologieën die potentieel innovatief zijn.
Ditzelfde kader is evengoed relevant voor recente en potentieel innovatieve technologieën, die
we in dit hoofdstuk behandelen. Sterker nog, elk van de recente technologieën behandelt
één of meer aspecten van het DIKAR-model: het gaat immers over hoe data geaggregeerd
kan worden tot relevante informatie, en vervolgens omgezet wordt naar kennis, die dan op
zich aangewend wordt in het beslissingsproces om tot acties over te gaan en een resultaat te
genereren. Dezelfde feedback vanuit de reële wereld naar de digitale spiegel is ook hier van
toepassing.
Het vernieuwende echter is, dat delen van het proces worden geautomatiseerd, en dikwijls op
grote schaal. Er werd al eerder gesteld dat in het beslissingsproces de gebruiker in toenemende
mate vervangen wordt door een automatische beslisser.
In dit hoofdstuk gaan we in op belangrijke nieuwe technologieën, die in elk van de DIKAR-
concepten een ingrijpende en tevens innovatieve impact hebben.
De eerste paragraaf beschrijft het zogenaamde Internet of Things (IoT). Dit is een technologie
waar op grote schaal en op een geautomatiseerde wijze data wordt verzameld met behulp van
sensoren. Dit komt overeen met ‘Data’ in het DIKAR-model.
94
De tweede paragraaf, Data Science, is de moderne versie van Decision Support Systemen
(DSS), zoals besproken in hoofdstuk 1, paragraaf 1.3. Het vernieuwende is een informatie-
verwerkingstechnologie om te komen tot niet-routinematige beslissingen. Net zoals DSS, zijn
Data Science systemen modelgebaseerd. Data Science komt vooral overeen met ‘Kennis’ in
het DIKAR-model.
De derde paragraaf gaat nog een stap verder dan Data Science, met name waarbij niet enkel
modelgebaseerd wordt gewerkt maar waarbij er een leerproces aanwezig is om stelselmatig
betere beslissingen te kunnen nemen. Deze paragraaf gaat over Artificial Intelligence. We
onderscheiden hier twee niveaus: Machine Learning en Deep Learning. Artificial Intelligence
past eveneens vooral in het aspect ‘Kennis’ van het DIKAR-model in een enge definitie,
terwijl in een brede definitie Artificial Intelligence eveneens zorgt voor gepaste acties en
nadien correcties op basis van feedback uit de reële wereld.
In de vierde paragraaf gaan we dieper in op Search Technology, een technologie die tegen-
woordig dikwijls is gebaseerd op Artifial Intelligence.
Tenslotte behandelen we in de vijfde paragraaf een volstrekt ander type van data-opslag
(‘Data’ in DIKAR) dan de traditionele systemen zoals bestanden of databanken: Blockchain.
5.1 Internet of Things 95
De toegenomen aandacht voor het Internet of Things (IoT) heeft te maken met de sterk
toegenomen beschikbaarheid van apparaten (‘things’ of ‘devices’) die over sensoren en
mobiele netwerkverbinding beschikken en daardoor via het internet met elkaar of andere
soorten informatiesystemen kunnen communiceren. Bijzonder hierbij is dat deze apparaten
tot de verzameling van een ongeziene hoeveelheid data leiden, die via het internet centraal
kunnen worden opgeslagen en geanalyseerd. Dit laatste betekent dat IoT samenhangt met
de evolutie naar Data Science en Big Data (zie paragraaf 5.2) en verder naar Artificial
Intelligence (zie paragraaf 5.3). Deze analyses kunnen resultaten opleveren die bedrijfskundig
zeer interessant zijn, bijv. over het gebruik van een product (hoeveel? waar? wanneer?) of
de toestand van het product (defect? wanneer? onderhoud voorstellen?).
• Een fysieke component, zoals bijv. het chassis en de motor van een auto.
• Een intelligente (‘smart’) component, die uit een combinatie van hardware (bijv. sen-
soren) en software (bijv. databanken, berekeningen, …) kan bestaan, zoals bijv. een
software systeem dat de motor van een auto beheert.
• Een netwerk component, die de draadloze verbinding verzorgt. Deze verbinding via het
internet laat toe data op te slaan op een server op het internet, of nog, ‘in-the-cloud’.
Porter geeft aan dat de impact van het IoT zeer groot kan zijn en dat het organisaties en
zelfs de structuur van ganse industrieën en sectoren door elkaar kan halen. Hij stelt:2
is utilized and managed, how relationships with traditional business partners such
as channels are redefined, and what role companies should play as industry boun-
daries are expanded. The phrase “internet of things” has arisen to reflect the
growing number of smart, connected products and highlight the new opportunities
they can represent. Yet this phrase is not very helpful in understanding the phe-
nomenon or its implications. The internet, whether involving people or things, is
simply a mechanism for transmitting information. What makes smart, connected
products fundamentally different is not the internet, but the changing nature of
the “things”. It is the expanded capabilities of smart, connected products and the
data they generate that are ushering in a new era of competition.”
Deze definitie kan de indruk doen ontstaan dat het IoT voornamelijk een technische innova-
tie is, maar volgens Porter zullen de grootste innovaties langs de bedrijfskundige kant
plaatsvinden. Immers stelt hij dat zo’n apparaten cumulatieve ‘capabilities’ mogelijk maken
(d.w.z. elke capability bouwt voort op alle voorgaande) zoals:
• Monitoring: het bewaken van de status van een apparaat, het gebruik en de werking
van het apparaat en de omgeving. Bijv. een apparaat stelt zelf vast dat het defect is.
• Control: apparaten kunnen zichzelf beheren door ingebouwde algoritmes of door com-
mando’s die op afstand worden gegeven. Bijvoorbeeld verlichting die automatisch uit-
schakelt, of inschakelt als bewoners arriveren.
• Optimization: huidige en/of historische data kan gebruikt worden om de werking van
het apparaat te optimaliseren. Bijv. data analyse wijst uit hoe een windenergie-park
geoptimaliseerd kan worden.
5.1 Internet of Things 97
Interessant is ook dat Porter verwacht dat het eindpunt van deze evolutie een ‘system of
systems’ zal worden. Dit houdt in dat de verschillende innovaties (‘systems’) zullen kun-
nen samenvloeien en zo nieuwe, geïntegreerde producten zal doen ontstaan. In een huis
bijvoorbeeld kunnen de verlichting-, verwarming-, beveiligings- en entertainmentsystemen
geïntegreerd worden. We merken op dat dit geïnterpreteerd kan worden als een zeer hoge
vraag naar integratie tussen systemen, wat net in het verleden één van de moeilijkheden van
de ontwikkeling van informatiesystemen is gebleken.
Het artikel “Industrial Internet of Things and its Applications in Industry 4.0: State of The
Art”3 geeft grafisch in figuur 5.3 de huidige stand van zaken meer concreet weer.
Gelijkaardig aan de opdeling van Porter, vinden we links de hardware component (de verschil-
lende sensoren), intelligente componenten (preprocessing, middleware) en in het midden de
netwerkcomponent. Het resultaat wordt gevoed aan diverse applicaties, die met behulp van
Data Science of Artificial Intelligence de informatie verwerken teneinde gepast te reageren.
Zulke applicaties baseren zich op verschillende modellen naargelang het domein. De auteurs
Russell en Norvig van het boek “Artificial Intelligence: a modern approach”4 spreken op
3
Malik, P. et al. (2021). Industrial Internet of Things and its Applications in Industry 4.0: State of The
Art. Computer Communications, 166, p. 125-139.
4
Russell, S. Norvig, P., (2022). Artificial Intelligence: a modern approach, p. 481 e.v.
5.1 Internet of Things 98
conceptueel niveau wat betreft de verwerking van waarnemingen over een sensor model, of
observation model = waarnemingsmodel. Een sensor model is een voorstelling hoe informatie
van sensoren wordt opgeslagen en gehanteerd door artificieel intelligente systemen. IoT gaat
bijgevolg over welke sensoren welke bruikbare data verzamelen die een artificieel intelligent
systeem gebruikt in het sensor model.
Zoals verder zal worden besproken in paragrafen 5.2 en 5.3, worden Data Science en artificieel
intelligente systemen gevoed met grote hoeveelheden data. Dit kan zowel gaan over fysieke
waarnemingen (bijv. camera, geur, temperatuur, beweging,...) als puur softwarematige input
(bijv. het internet, de invoer van een gebruiker,...). Door de noodzaak van grote hoeveelheden
data is er dikwijls nood aan veel sensoren. Internet of Things levert zulke data.
5
Bera, S. et al (2023). E‑CropReco: a dew‑edge‑based multi‑parametric crop recommendation framework
for internet of agricultural things. The Journal of Supercomputing, 79, p. 11965–11999.
5.1 Internet of Things 99
De verwerking van data in deze bedrijfskundige toepassing gebeurt met Machine Learning
en Deep Learning technieken, zoals verder aan bod komt in paragraaf 5.3. Het systeem kan
zowel de productiviteit voorspellen als aanbevelingen doen zoals welk soort gewas het beste
groeit in de resp. gemeten omstandigheden.
Dit systeem is slechts één van de mogelijke toepassingen van IoT (en bijgevolg Data Sci-
ence/Artificiële Intelligentie) in de landbouwsector. Op macroschaal kan men de landbouw
van een volledig land beschouwen en optimaliseren op basis van concrete waarnemingen van
factoren zoals de grond zelf, weersomstandigheden zoals temperatuur en vochtigheid, enz.
De auteurs van het artikel “Industrial Internet of Things and its Applications in Industry
4.0: State of The Art” verwijzen naar onderzoek verricht in China, een economie die in be-
langrijke mate afhankelijk is van eigen landbouw, en waarbij het productienetwerk in grote
mate in handen is van zeer grote organisaties. Zulke organisaties hebben er alle baat bij om
niet alleen vraag en aanbod, en de voorraden, te optimaliseren, maar ook om aan de hand
van metingen het hele productieproces te optimaliseren – en hierbij de landbouwers ook te
helpen.
Figuur 5.5 toont een voorbeeld hoe zo’n gesloten productiesysteem zou kunnen beheerd wor-
den voor gewassen, waarbij het IoT gedeelte zich links bevindt. Merk op dat, zoals eerder
gezegd, het DIKAR model hier opnieuw zeer relevant is – ook in het kader van moderne
technologieën, waarbij in deze figuur de feedback duidelijk aanwezig is zoals in figuur 1.2:
acties en resultaten in het DIKAR model hebben een directe impact op de reële wereld, in
dit geval bijgestuurde grondbewerking (tilage) en het zaaien (seeding).
Beeldherkenning is een domein dat binnen Artificial Intelligence veel gebruikt wordt. De
bedoeling is om features (kenmerken) te herkennen in een waarneming door middel van
berekeningen toegepast op een beeld. Model-gebaseerde benaderingen zijn enerzijds een ob-
jectmodel (dingen die herkend worden), anderzijds een rendering model (bijvoorbeeld vor-
men)6 . Om de complexiteit van een beeldverwerkend AI-systeem te begrijpen, gaan we eerst
in op wat een beeld in feite bevat, m.a.w. wat er waargenomen wordt door sensoren zoals
camera’s.
Een digitale camera heeft een sensor die bestaat uit vele zeer kleine sensoren die licht en
kleur kunnen waarnemen. Zulke waarnemingen worden omgezet naar zogenaamde pixels in
een digitale afbeelding. Digitale camera’s zijn een verdere evolutie van analoge camera’s,
waarbij er een digitale sensor is in plaats van een lichtgevoelige strook (film) die een beeld
registreert. Het licht wordt via een lens geconcentreerd op de sensor, die zeer kort belicht
wordt - waardoor er een (meestal) stilstaand beeld wordt geregistreerd. De grootte van een
opgenomen beeld wordt tegenwoordig gemeten in megapixels (1 megapixel is één miljoen
pixels). Zulke afbeeldingen worden bijvoorbeeld in JPEG of PNG formaat opgeslagen op een
SD kaart.
Echter is het interpreteren van een beeld onnoemelijk moeilijker dan het louter registreren van
lichtinval. Als we een artificieel intelligent systeem willen bouwen dat beelden kan interpre-
teren, moeten we eerst beschouwen wat wij als mensen in feite echt zien. Mensen herkennen
dingen zonder stil te staan bij kenmerken die, voor een computer, veel rekenkracht vergen
om ze te interpreteren.
Allereerst bevat een beeld perspectief. Wat wij als een weg herkennen, met twee parallelle
randen, wordt op een beeld voorgesteld als lijnen die convergeren naar een vluchtpunt. Het
kan bovendien niet met zekerheid vastgesteld worden of een bepaald element in een beeld
kleiner is dan een ander, of gewoon verder weg is van de camera. Dit geldt voor alles:
treinspoor, natuur, gebouwen, mensen enz. Figuur 5.6 toont een voorbeeld hoe een weg
door een oog of camera wordt waargenomen. Merk op hoe wij dit automatisch waarnemen
als een lange weg die niet versmalt. Onze hersenen vertalen de convergerende lijnen naar
een gewone weg. Wij zijn bovendien in staat om redelijk accuraat in te schatten of iets
zich ver weg bevindt of niet, bijvoorbeeld door de simpele redenering dat een 10cm hoge
mens niet bestaat en dus met zekerheid zich ergens op een afstand bevindt (tenzij er bewust
gezichtsbedrog in het spel is). Bijgevolg moet een AI-systeem in staat zijn om hetzelfde te
doen.
Stereoscopisch zicht, waarbij beide ogen een licht verschillend beeld waarnemen, helpt
ons afstand in te schatten – ook dieptezicht genoemd –, maar een afbeelding is zeer dikwijls
monoscopisch (dus één enkel beeld), zeker wat betreft afbeeldingen op het internet die als
trainingsdata gebruikt worden. Met andere woorden, dieptezicht ontbreekt.
Een tweede aspect is focus. Focus is het brandpunt waarop de aandacht het meeste is gericht,
en datgene wat we als “scherp” waarnemen. De afstanden waar we objecten ongeveer scherp
waarnemen noemt men de scherptediepte (depth of field). Andere elementen buiten die
afstanden zijn in zekere mate onscherp, afhangend van de opening van een lens (de lens van een
oog of een camera). Met andere woorden, de focus hangt af van de lichtomstandigheden (hoe
6
Russell, S. Norvig, P., (2022). Artificial Intelligence: a modern approach, Chapter 27 Computer Vision
5.1 Internet of Things 101
groot moet de opening zijn om voldoende licht waar te nemen), de camera (lichtgevoeligheid
van de sensor,...) en de lens (kwaliteit, mogelijke opening,..). Figuur 5.7 toont een voorbeeld
hoe een lens scherp stelt.
Een oog of camera kan de focale lengte wijzigen - waardoor we ons bijv. gemakkelijk kunnen
bewegen in een complexe omgeving. Een afbeelding is echter een momentopname. Bovendien
kunnen er ook bewegende elementen worden vastgelegd, die afhankelijk van de sluitertijd vaag
kunnen zijn. Men noemt dit bewegingsonscherpte (motion blur), zoals in figuur 5.8. Hoe
langer de sluitertijd, hoe vager bewegende objecten weergegeven worden op een beeld.
Bijkomend aspecten zijn licht, schaduw en kleur. Mensen zijn uitzonderlijk goed in het
onderscheiden van helderheid en kleuren van objecten of ze nu helder belicht zijn of in de
schaduw staan. De gevoeligheid voor licht en contrast wordt deels bepaald door de camera
zelf (sensor, lenzen), anderzijds moet de waarneming geïnterpreteerd worden.
Daarenboven zijn er nog andere factoren: welke lichtbron belicht de scène, is er reflectie van
andere objecten of de omgeving? Eveneens kan een object in meer of mindere mate zelf
reflecteren (spiegelen). Tenslotte kunnen objecten gedeeltelijk verborgen zijn (ook door de-
len van zichzelf). Dit noemt men occlusie. Zulke elementen hebben niets met de camera
of de cameraonderdelen te maken, maar dienen wel geïnterpreteerd worden. Een mens kan
door veronderstelling snel beslissen over welk object het gaat indien er maar een deel zicht-
baar is. Een AI-systeem moet dus eveneens gelijkaardige mogelijkheden hebben indien men
objectherkenning wil.
5.1 Internet of Things 102
De combinatie van al die aspecten maakt beeldherkenning door systemen zoals Artificial
Intelligence bijzonder complex. Samenvattend, een AI-systeem moet een object kunnen her-
kennen in veel verschillende omstandigheden, en een IoT sensor kan slechts in beperkte mate
helpen (hogere resolutie, lichtgevoeligheid, enz.).
Een typisch voorbeeld van sensoren, zijn diegene die gebruikt worden in robotica (zie deel-
paragraaf 5.3.12). Passieve sensoren zoals camera’s observeren de omgeving. De signalen
zoals licht of geluid worden opgevangen. Actieve sensoren zijn sensoren die zelf signalen
uitzenden, en dan bijv. reflectie ervan opvangen. Sonar werkt met geluidsgolven, waarmee
men, indien men méér dan één sensor gebruikt, niet enkel de afstand van een object maar ook
de plaats kan bepalen. Op dezelfde wijze kan men radar gebruiken (radiogolven), die op grote
afstanden objecten zoals vliegtuigen kan detecteren. Langs de andere kant zijn er sensoren
die iets dichtbij kunnen waarnemen, zoals tactiele sensoren. Zulke sensoren werken op basis
van fysisch contact. Een ander type van sensoren dient voor plaatsbepaling, waarvan GPS
(Global Positioning System) wellicht één van de meest bekende systemen is. Het gebruik
hiervan is echter niet altijd mogelijk, bijvoorbeeld kan men GPS niet onder water gebruiken,
of binnen gebouwen omwille van de fysieke afscherming of storingen door aanwezige elektro-
nische apparatuur. Binnen robotica zijn er nog andere vormen van sensoren, bijvoorbeeld
krachtsensoren die meten dat de actuator (het deel dat iets uitvoert) de juiste kracht zet op
een object.
Een ander voorbeeld van het gebruik van sensoren is predictief onderhoud (zie deelpara-
graaf 5.2.3). Daarbij gaat men aan de hand van data het benodigde onderhoud voorspellen.
5.2 Data Science 103
Data Science (DS), Big Data, Business Intelligence en Data Warehousing zijn gerelateerde
termen die allemaal betrekking hebben op de enorm toegenomen hoeveelheid data die
nu beschikbaar is voor organisaties, en die kan worden verwerkt tot informatie of zelfs be-
drijfskundige ‘intelligentie’. Deze data wordt al lang niet meer louter manueel ingevoerd,
maar er is steeds meer geautomatiseerde verzameling van gegevens (bijv. data over het be-
zoeken van websites) en uit sensoren die ingebouwd zitten in steeds meer apparaten (Internet
of Things, zie vorige paragraaf 5.1).
Data Science is gericht op het verwerken, analyseren en opslaan van grote dataverzamelingen
die afkomstig zijn van heterogene bronnen. In tegenstelling tot traditionele systemen, richt
Big Data zich op specifieke vereisten zoals het combineren van meerdere niet-gerelateerde
data sets, het verwerken van grote hoeveelheden data en het zoeken van informatie, ofwel
in batch processing d.w.z. dat de informatie pas beschikbaar is na enige tijd, ofwel in
stream processing d.w.z. in real-time waarbij er nauwelijks of geen vertraging is tussen het
ontvangen en het verwerken van data. Het doel is Data driven decision making: het nemen
van beslissingen die niet gebaseerd zijn op intuïtie maar op wetenschap, en gebruik makend
van uitgewerkte wetenschappelijke technieken en processen.
Procesmatig gaat het over het ontwikkelen van uitvoerbare beslissingen of aanbeve-
lingen, gebaseerd op historische data7 . Deze definitie sluit sterk aan bij het DIKAR-model:
ook Business Intelligence systemen kunnen beschouwd worden als systemen die data omzetten
naar de juiste informatie voor de juiste persoon op het juiste tijdstip. Echter, ze zijn tech-
nisch geavanceerder, en het gaat ook niet meer alleen over gestructureerde data, maar steeds
meer ook semi-gestructureerde data (documenten, webpagina’s, …) en ongestructureerde data
(video, audio, …), die online worden geraadpleegd of waarop geavanceerde algoritmische ver-
werking plaatsvindt. BI systemen kunnen gezien worden als de opvolgers van de Decision
Support Systemen (DSS) uit het verleden.
Business problemen
* Externe data Wat is er gebeurd? Wat kan er gebeuren? Wat zouden we moeten doen?
* Interne data
* Big Data * Descriptive analytics * Data mining * Optimalisatie
* OLAP * Lineaire regressie * Simulatie
* Data mining * Meervoudige * Beslissingsboom
ETL regressie
* Logistieke regressie
Data warehouse
Business beslissingen
< nieuwe vragen Aanbevolen acties
Het totale Data Science proces is als volgt opgebouwd (zie figuur 5.9).
In de eerste plaats moet een organisatie data verzamelen, en opslaan in een data warehouse.
Vervolgens doorloopt men 3 verschillende analytische stappen: beschrijvend of descriptive,
voorspellend of predictive en voorschrijvend of prescriptive. Het resultaat van elke stap kan
men aan de beslissingsmakers presenteren via dashboards, grafieken en andere hulpmiddelen.
Het proces is iteratief, omdat het nieuwe vragen zal opwerpen die het analyseproces opnieuw
zullen opstarten. In elke analytische stap gebruikt men tools, van spreadsheets tot specifieke
statistische analysetools.
Vanaf het ontstaan van de eerste DSS in de jaren ’70, werd het duidelijk dat model-gebaseerde
verwerking zeer veel performantie vroeg. Daardoor was het bijv. niet mogelijk deze verwer-
king in real-time te doen op de databanken die de TPS ondersteunen. Immers zou dit leiden
tot onaanvaardbare vertraging in de bedrijfskritische TPS. Daarom werd gebruik gemaakt
van batchverwerking, wat betekent dat de verwerking gebeurt buiten de piekmomenten, bijv.
’s nachts.
Begin jaren ’90 kwam dan ook het voorstel om zogenaamde data warehouses aan te maken om
dit probleem op te lossen, namelijk door het ter beschikking stellen van data op een zodanige
wijze, dat die geanalyseerd kan worden los van de operationele databanken (meestal
TPS).
Een data warehouse is een speciaal soort databank gericht op beslissingsondersteuning waarin
data van de databanken van TPS worden gekopieerd. Op dit data warehouse kunnen dan vele
soorten verwerking worden uitgevoerd, zonder de performantie van de TPS te impacteren.
Het kopiëren van de data van de databanken van de TPS naar een data warehouse gebeurt
veelal in batch en wordt extraction, transformation and load (ETL) genoemd.
Figuur 5.10 toont hoe ETL de overgang maakt van de operationele databanken naar het data
warehouse of de data marts.
Bij extraction gaat het over het ophalen van data uit de databanken van de TPS. Het kan
hierbij om tientallen verschillende databanken gaan, bijv. in de verschillende departementen.
Deze extractie houdt aspecten van technische integratie in, aangezien het kan gaan om ver-
schillende soorten databanken. Het hoeft bijv. niet altijd om relationele databanken te gaan
en ook kan data uit databanken buiten de organisatie worden geïmporteerd. Bij extractie
worden ook foutencontroles gedaan. Sommige fouten kunnen automatisch gedetecteerd en
gecorrigeerd worden, maar bij andere kan manuele interventie nodig zijn. Bij nog andere kan
beslist worden om de data niet verder te kopiëren naar het data warehouse.
Bij transformation wordt data ten eerste geconverteerd, zoals bijv. het omzetten van be-
dragen in verschillende munteenheden naar één munteenheid waarmee over de tijd heen kan
gerekend worden. Ten tweede dient gekeken te worden naar het aggregatieniveau van de
data. Dikwijls wordt niet alle detail weerhouden, maar worden bijv. verkoopgegevens enkel
5.2 Data Science 105
per week bijgehouden in het data warehouse en niet meer per dag. Vanzelfsprekend zijn
hierbij criteria rond informatiekwaliteit van belang.
Bij load gaat het over het kopiëren van de getransformeerde data naar het eigenlijke data
warehouse. Dit gebeurt meestal op momenten dat er weinig performantievereisten zijn. Van-
zelfsprekend is de frequentie van de load van belang om beslissingsnemers zo actueel mo-
gelijke data te bezorgen. In sommige organisaties wordt er één centraal data warehouse
aangemaakt, terwijl in andere organisaties meerdere zogenaamde data marts worden aange-
maakt, die elk op een apart aspect focussen, zoals een departement of een bedrijfsproces.
Data warehouses bevatten meestal zowel actuele als historische data, waardoor hun grootte
vele tera- en petabytes kan uitmaken.
Nadat een data warehouse is aangemaakt, zijn verschillende vormen van verwerking mogelijk,
waaronder online analytical processing en data mining.
Bij online analytical processing (OLAP) wordt interactief een grote hoeveelheid data in een
data warehouse ondervraagd vanuit verschillende perspectieven (bijv. product, tijd, geo-
grafisch gebied). Deze verschillende perspectieven vereisen dat de data in een soort multi-
dimensionale kubus (OLAP cube) opgeslagen of gepresenteerd worden. Het interactieve
karakter vereist dat de ondervraging in real-time gebeurt en dat vraagt gepaste verwer-
kingscapaciteit. Verder geeft het interactieve karakter ook aan dat het gaat over ad hoc
ondervragingen.
5.2 Data Science 106
• Drill-down: dit verwijst naar het desaggregeren van data, waarbij meer geaggregeerde
data wordt gedetailleerd op één of meerdere dimensies. Zo kunnen verkopen voor een
geografisch gebied bijv. gedetailleerd worden per product en per tijdsperiode.
• Slicing and dicing: dit verwijst naar het analyseren van data vanuit verschillende per-
spectieven. Zo kan één perspectief de verkopen laten zien per product, terwijl een ander
de verkopen laat zien per regio. Slicing and dicing verwijst naar de mogelijkheid om
zo’n gekozen perspectief te creëren en in isolatie van andere perspectieven verder te
analyseren.
Eén ander voorbeeld van predictive analytics is Predictive maintenance8 . Dit is een ver-
zameling van technieken om de staat van bepaalde systemen te bepalen, en te voorspellen
wanneer die onderhouden moeten worden. Predictive maintenance is niet hetzelfde als pre-
ventive maintenance (preventief onderhoud), omdat predictive maintenance rekening houdt
met de werkelijke staat van systemen in plaats van een gemiddelde levensverwachting van
zulke systemen. Predictive maintenance steunt op data afkomstig van onder andere infrarode
of akoestische sensoren. Bijvoorbeeld worden akoestische sensoren gebruikt om afwijkingen te
detecteren in de drukpersen voor metalen platen in automontage, zodat men de persen op tijd
kan onderhouden alvorens er iets misloopt. Meer en meer wordt voor predictive maintenance
IoT technologie (zie paragraaf 5.1) gebruikt om de data te verzamelen.
Bij data mining gaat het over het toepassen van geavanceerde statistische of wiskundige
technieken op de data in het data warehouse om bijv. correlaties, patronen en trends te
ontdekken in historische data. De naam ‘mining’ verwijst naar het graven in grote datasets
om voorheen verborgen verbanden te ontdekken.
Ondanks de grote hoeveelheid data mining algoritmes die ondertussen werden ontwikkeld,
zijn ze allemaal gericht op slechts een handvol taken9 , waaronder:
• Classification and class probability estimation: hierbij probeert men elk individu in
een populatie onder te brengen in een klasse, waarbij de gedefinieerde klassen dikwijls
wederzijds exclusief zijn. Bijvoorbeeld: „welke klanten zullen waarschijnlijk reageren op
8
Wikipedia. (2020). Predictive maintenance. https://en.wikipedia.org/wiki/Predictive_maintenance
9
Provost, F. en Fawcett, T. (2013). Data Science for Business
5.2 Data Science 107
dit aanbod?”. Een andere methode is het gebruik van een scoremodel (inschattingen).
Het individu wordt toegekend aan een klasse volgens een probabiliteit. Voorbeeld:
„hoeveel kans is er dat dit individu zal reageren op dit aanbod?”.
• Met Regression (regressie) probeert men de waarde van een variabele van een indi-
vidu te voorspellen, in plaats van de loutere kans of iets zal gebeuren (classificatie).
Bijvoorbeeld: „hoeveel keer zal deze klant om ondersteuning vragen?”.
• Similarity matching: hierbij worden individuen samen geplaatst op basis van gelijke-
nis, bijvoorbeeld „welke klanten lijken op onze beste klanten, zodat we onze verkopen
kunnen richten op die klanten?”.
• Co-occurence grouping: deze techniek zoekt naar associaties tussen entiteiten, gebaseerd
op transacties tussen hen, om ze samen te voegen in groepen. Bijvoorbeeld: „welke
producten worden samen gekocht?”
• Link detection probeert het verband tussen items te ontdekken, bijvoorbeeld in sociale
media zoals Facebook: „Jullie delen 10 vrienden, dus zijn jullie dan zelf geen vrienden?”
• Met causal modeling probeert men te verstaan welke gebeurtenissen of acties andere
gebeurtenissen beïnvloeden. Bijvoorbeeld of gerichte reclame inderdaad tot gevolg heeft
dat die specifieke klanten ook meer kopen.
Recommender systems pogen op basis van zulke technieken te voorspellen welke waarde of
voorkeur iemand aan een bepaald product of dienst zou toekennen. Voorbeelden zijn playlist
generators zoals Netflix of Youtube. Recommender systems vormen dan ook een alternatief
op de traditionele zoekalgoritmes.
Prescriptive Analytics gaat verder dan descriptive en predictive analytics door het bepalen
van de mogelijke uitkomst van elke beslissing in plaats van één enkel scenario. Men probeert
het effect van toekomstige beslissingen te kwantificeren, zodat men geadviseerd
wordt over de beste te nemen acties alvorens de beslissingen effectief genomen worden. Een
voorbeeld is het regelmatig aanpassen van de ticketprijs voor vliegtuigreizen door de bepaling
van welke dagen en uren die het meest aantrekkelijk zijn, gecombineerd met de beschikbaar-
heid van plaatsen en berekend volgens diverse scenario’s (wat als we de prijs voor de vlucht
van 10:30u zouden verhogen, leidt dit tot meer winst, is de bezetting beter, welk effect heeft
dit op ticketprijzen voor andere vluchten ?)
Prescriptive Analytics wordt onder andere toegepast bij semi-autonome of autonome voer-
tuigen, waarbij de software de impact van mogelijke beslissingen moet berekenen alvorens de
optimale beslissing kan genomen worden.
5.2 Data Science 108
5.2.5 Presentatie
De opkomst van Data Science in combinatie met het IoT heeft geleid tot een enorme toename
van data, waardoor een aantal nieuwe tools en technologieën werden ontwikkeld om deze data
te kunnen verwerken en analyseren.
Bekende commerciële tools zijn bijv. Tableau of Power BI. Power BI is een interactieve tool
van Microsoft voor het visualiseren van data, waarbij verschillende soorten data gecombineerd
kunnen worden om in een visueel dashboard managementinformatie systeem weer te geven10 .
Ook open source tools zijn beschikbaar, bijv. Apache Superset.
Qua nieuwe technologieën kan verwezen worden naar nieuwe opslagsystemen zoals NoSQL,
origineel Non SQL en ondertussen ook Not Only SQL genoemd. NoSQL databanken verschil-
len aanzienlijk van relationele databanken (zie 3.1.3), die een vaste tabelstructuur opleggen.
NoSQL databanken laten toe om enorme hoeveelheden data te verwerken en te distri-
bueren over computing clusters, ten koste van consistentie die relationele databanken wel
voorzien. Google en Amazon zijn typische bedrijven die NoSQL databanken gebruiken, aan-
gevuld met relationele databanken waar consistentie wel belangrijk is.
NoSQL databanken vormen een brede waaier van databanken, die data organiseren volgens
andere principes dan de traditionele relationele databanken, zoals één of meerdere uit:
• Document store: opslag van documenten in verschillende formaten zoals XML, JSON
waarbij de documenten ondervraagbaar zijn
• Graphs: een graph bevat elementen die met elkaar verbonden zijn door een gelimi-
teerd aantal relaties, bijvoorbeeld sociale relaties, wegenkaarten of netwerk topologieën.
Graph databanken worden typisch gebruikt in bijv. Customer Relationship Manage-
ment (CRM) systemen.
10
Wikipedia. (2020). Power BI. https://nl.wikipedia.org/wiki/Power_BI
5.2 Data Science 109
Qua nieuwe technologie voor specifiek verwerking kan verwezen worden naar Hadoop. Dit is
een raamwerk dat gedistribueerde verwerking van grote data sets via computerclusters
toelaat. Het kan gaan over enkele servers tot wel duizenden, die elk verwerkingskracht en
opslag voorzien11 . Hadoop wordt ook ingezet voor IoT, om de data op te slaan, patronen te
ontdekken en te monitoren.
Het opslagsysteem van Hadoop is geen relationele databank (zoals besproken in deelparagraaf
3.1.3) maar een bestandssysteem, specifiek gericht op hoge performantie, enorme hoeveel-
heden data en lage kost. De gestructureerde aanpak van relationele databanken laat geen
opslag van zeer grote hoeveelheden data toe. Ook vereisen relationele databanken minstens
semi-gestructureerde data, in een uitgewerkt gestructureerd model, terwijl Hadoop ook onge-
structureerde data (inclusief bijv. video) kan opslaan en opvraagbaar maken via verschillende
technieken en tools zoals Hive. Dit is een data warehouse project gebouwd op Hadoop om
data op te vragen en te analyseren in een op SQL gelijkende taal. Hadoop heeft belangrijke
technische beperkingen in vergelijking met relationele databanken, bijvoorbeeld kent het geen
update mogelijkheid, enkel éénmaal schrijven maar meermaals lezen.
Tenslotte is cloud computing een belangrijke technologie geworden in de context van Data
Science (zie ook paragraaf 2.3). De flexibiliteit en schaalbaarheid maakt de cloud ideaal voor
dergelijke toepassingen, terwijl de kosten gereduceerd worden en de beschikbaarheid zeer
hoog is.
11
https://hadoop.apache.org/
5.3 Artificial Intelligence 110
Vandaag wordt de term ‘Artificial Intelligence’ steeds meer overkoepelend gebruikt voor syste-
men die betrokken zijn in complexe, niet routinematige beslissingsprocessen. AI wordt
dikwijls gezien als de nieuwe, hippe naam voor Business Intelligence en Decision support sys-
temen (DSS), zie ook hoofdstuk 1, deelparagraaf 1.3.2 in de typologie van informatiesystemen
– hoewel AI daar niet mee gelijk staat.
5.3.1 Intelligentie
Men heeft in het verleden verschillende interpretaties van intelligentie ontwikkeld. Enerzijds
kan intelligentie worden geïnterpreteerd als reageren op de “juiste manier”, met andere woor-
den een rationele benadering. Anderzijds kan het vergeleken worden met menselijk gedrag,
wat niet altijd rationeel is.
De definitie van intelligentie is dus niet eenduidig en voor aanzienlijke interpretatie vatbaar.
Bijvoorbeeld werd ooit, in 1996, de schaakcomputer ‘Deep Blue’ als intelligent beschouwd,
terwijl het zeer de vraag is of het hier gaat over werkelijke intelligentie en niet gewoon over
brute rekenkracht (brute force computing) zoals Martina Heßler citeert in haar publicatie
“The Triumph of ”Stupidity”: Deep Blue‘s Victory over Garri Kasparov. The Controversy
about its Impact on Artficial Intelligence Research” 12 :
“This match is almost a demonstration that intelligence is not the only way to
win at chess [...]. Brute force, sheer computational mass, is something that can
substitute for intelligence.”
Zelfs de schaakkampioen Kasparov vraagt zich af of we al dan niet over intelligentie kunnen
spreken, zoals geciteerd op dezelfde bladzijde:
“Yes, I think, we can hardly call it intelligence because we always believe that
intelligence is something similar to our mind. But playing with Deep Blue, and
other computers but mainly with Deep Blue, I can smell that the decisions that
it’s making are intelligent because I would come to the same conclusion by using
12
Heßler, M. (2017). The Triumph of ”Stupidity”: Deep Blue‘s Victory over Garri Kasparov. The Contro-
versy about its Impact on Artficial Intelligence Research N.T.M., 25, p. 27.
5.3 Artificial Intelligence 111
my intuition. But if I use 90% of my intuition and positional judgement and 10%
of calculation, and Deep Blue uses 95% of computation and 5% of built-in chess
knowledge, and the result matches four times out of five, maybe we should talk
about some sort of AI.”
Merk op dat dit artikel 20 jaar na de wedstrijd werd gepubliceerd, en dus recentere inzichten
bevat. Zoals terecht wordt gesteld is het mogelijk om tot hetzelfde resultaat te komen maar
op een totaal verschillende wijze. Merk eveneens op dat sinds 1996 hard- en software echter
grondig zijn geëvolueerd, wat ook uitvoerig besproken werd in voorgaande hoofdstukken.
Alleen al wat betreft hardware bijvoorbeeld: de wet van Moore (zie deelparagraaf 2.1.4) geeft
aan dat elke 2 jaar het aantal transistoren in computercomponenten verdubbelt, en bijgevolg
zijn computers vandaag vele malen krachtiger. Bijvoorbeeld het werkgeheugen: een topklasse
computer in 1996 had 64MB RAM, vandaag spreken we over 64GB en meer. Niet alleen de
capaciteit is verduizendvoudigd, ook de verwerkingssnelheid. Dezelfde wet geldt voor CPU’s,
grafische processoren, opslagcapaciteit enz.
Een andere definitie van intelligentie is gerelateerd aan de Turing test. Alan Turing was
een Engelse wiskundige en formuleerde al in 1950 in het artikel ‘Computing Machinery and
Intelligence‘ het “argument van informeel gedrag” voor, dat stelt dat menselijk gedrag veel
te complex is om vastgelegd te worden in een formele set van regels, en waardoor menselijk
gedrag dus ook niet kan gecodeerd worden in een computerprogramma13 . Daarom stelde hij
in het artikel voor om in plaats van te onderzoeken of machines kunnen denken, te bekijken
of machines een gedragstest kunnen doorstaan. De Turing test is een experiment, beschreven
door Turing in 1936, en verder uitgewerkt in het artikel van 1950.
Turing Test
Speler 2
Speler 1
Evaluator
Turings voorstel was, om een persoon die als ondervrager optreedt te laten communiceren
met een andere partij, waarvan niet geweten is of het een andere mens is of een machine (nu
noemen we dit een computer). De computer slaagt in de test indien de persoon de computer
niet kan onderscheiden van een mens. In dat geval wordt intelligent gedrag aan de computer
toegeschreven.
13
Russell, S. Norvig, P., (2022). Artificial Intelligence: a modern approach, Chapter 28, p. 1032 e.v.
5.3 Artificial Intelligence 112
In deze enge definitie werd er al gesproken over Artificial Intelligence sinds de jaren ’5014 .
Het probleem blijft echter, zoals ook door de filosoof John R. Searle gesteld wordt: is dit dan
intelligentie? Martina Heßler citeert15 , hier vrij vertaald uit het Duits:
“Deep Blue is niet intelligent, maar gewoon een ”cijfervreter”. De machine denkt
niet, schaakt niet, simuleert niet eens het gedrag van een schaker. Deep Blue is
geen replica van de mens, noch vertoont hij kennis over het menselijk brein.”
Alvorens we dieper ingaan op de opbouw van artificieel intelligente systemen, willen we die
systemen een hanteerbare naam geven. Gebruikelijk worden zulke systemen intelligent
agents (intelligente agenten) genoemd. Een agent kan de omgeving waarnemen, en erop
reageren. Hoe de agent zal reageren op basis van waarneming hangt af van de ingebouwde
kennis en wat het voordien al waargenomen heeft (leerproces).
Eenvoudig voorgesteld zijn de drie basiskenmerken van intelligent agents16 (zie figuur 5.12):
• Waarnemen: een AI-systeem neemt zijn omgeving waar door middel van sensoren. Dit
zijn niet enkel camera’s en geluidssensoren, maar bijvoorbeeld ook scanners, verwer-
kingssystemen voor digitale (ongestructureerde) data enz.
• Reageren of output: een AI-systeem reageert door middel van actuatoren, zoals wie-
len, kunstmatige handen of een spraaksynthesizer, maar evengoed door bijvoorbeeld
feedback te geven aan software over bepaalde informatie om te komen tot acties.
Redeneren
Waarnemen Reageren
5.3.3 Waarnemen
Een AI-systeem moet in staat zijn de omgeving waar te nemen. Een AI-systeem kan uitgerust
zijn met verschillende sensoren: camera’s, microfoons, maar ook software om bijvoorbeeld
tekst te lezen. De problematiek zit nu minder in de technologie zelf: bijvoorbeeld zijn ca-
mera’s vandaag ruim krachtig genoeg om hoge resolutie foto’s te nemen, en is er voldoende
opslagcapaciteit (SSD, cloud) om al die beelden te bewaren. Het afleiden van bruikbare
informatie uit de grote hoeveelheid visuele data (pixels) is het grootste probleem.
Een belangrijke methode die men toepast in AI-systemen, is het vergelijken van de opgeno-
men beelden met opgeslagen sjablonen (templates), om een beeld te kunnen categoriseren
en omzetten naar bruikbare informatie. Deze methode vertoont gelijkenissen met Optical
Character Recognition (OCR) software. Een andere methode is het vergelijken van beelden
met geometrische patronen. Deze methode wordt bijvoorbeeld gebruikt bij gezichtsherken-
ning van mensen (image recognition).
Taalverwerking (text recognition) is een ander en bijzonder complex domein binnen de kunst-
matige intelligentie. Taalverwerking vereist analyse op verschillende niveaus: syntactisch,
semantisch en contextueel. Tijdens de syntactische analyse bepaalt het AI-systeem uit
welke componenten een gegeven zin bestaat. Semantische analyse geeft betekenis aan elk
woord: bijvoorbeeld ‘Jan geeft een boek aan Ilse’. Dit is semantisch gelijk aan ‘Ilse krijgt een
boek van Jan’. Het derde niveau is contextuele analyse: een uitdrukking kan op verschillende
manieren geïnterpreteerd worden tenzij men de context begrijpt. Bijvoorbeeld: ‘ik verzocht
hem dinsdag thuis te blijven’. Het is hier zonder context niet duidelijk: vroeg ik hem op
dinsdag om thuis te blijven, of vroeg ik hem om dinsdag thuis te blijven?
Taalverwerking speelt niet alleen op het niveau van de individuele zinnen/uitdrukkingen. Een
AI-systeem moet in de eerste plaats informatie zoeken en selecteren (wat is relevant), in de
tweede plaats bruikbare informatie extraheren. Extractie betekent het distilleren van informa-
tie op een zodanige wijze dat deze bruikbaar is voor verdere toekomstige beslissingsprocessen
en acties.
Een vorm waarin de extractie opgeslagen kan worden, is een semantic web. Een semantisch
web is een grote datastructuur waarin concepten met elkaar verbonden zijn. Bijvoorbeeld:
Ilse is een persoon, geboren op 22 april 1970 en moeder van Pieter. De informatie wordt
in triples opgeslagen: subject-predicate-object, bijvoorbeeld Ilse - geboortedatum - 22 april
1970. Met andere woorden, het systeem maakt een model op van verbanden.
5.3.4 Redeneren
Het tweede basiskenmerk van elk AI-systeem is redeneren. Op basis van wat het AI-systeem
in het verleden en het heden heeft waargenomen, moet het al dan niet op een gepaste (intel-
ligente) wijze reageren.
Productiesystemen
Eén vorm van kunstmatige intelligentie is een productiesysteem (production system), wat veel
wordt toegepast in zgn. expertsystemen. Dit zijn systemen die de redenering van menselijke
5.3 Artificial Intelligence 114
Dit is slechts één type inference rule, maar wel één van de belangrijkste: de Modus Ponens.
Indien P waar is, en ‘indien P dan Q’, dan is Q waar.
Wanneer aan vastgelegde voorwaarden wordt voldaan, kiest het controlesysteem welke regel
toegepast moet worden om de toestand te veranderen. Bij meervoudige simultane geldige
regels moet het controlesysteem conflicten oplossen.
Naarmate het controlesysteem stappen zet, ontstaat er nieuwe kennis op basis van combi-
naties van feiten.
Een controlesysteem bereikt de eindtoestand door een weg te zoeken in de state graph van
de starttoestand tot de gewenste eindtoestand. Het controlesysteem bouwt zo een zoekboom
(search tree) op, en kan nadien op basis van die zoekboom op een efficiënte manier reageren
op nieuwe input.
Een zoekboom wordt echter snel te groot en dus niet meer praktisch haalbaar. In dat geval zal
een controlesysteem op basis van heuristiek handelen, equivalent aan de menselijke intuïtie die
we gebruiken om snel beslissingen te nemen in een complexe situatie. Het AI-systeem zal dan
op basis van inschattingen, met name van de afstand tussen de begin- en gewenste toestand,
beslissingen nemen. Uiteraard moet de heuristiek voldoende gemakkelijk berekenbaar zijn, zo
niet kan het systeem beter een volledige zoekboom hanteren om tot de beslissing te komen.
Verder kunnen er verschillende algoritmes toegepast worden, die niet altijd het meest geschikt
zijn in specifieke situaties. Bijvoorbeeld bij het berekenen van een route tussen twee punten
zal een GPS systeem een ander algoritme vereisen voor de kortste route dan voor de snelste.
5.3 Artificial Intelligence 115
Kunstmatige neurale netwerken zijn volgens Taulli17 opgebouwd uit lagen van “neuronen”.
Een neuron (zenuwcel) is een cel met inkomende tentakels (dendrieten) en een uitgaande
tentakel (axon). Het uitgaande signaal kan een toestand van opwinding zijn (1), of rust (0).
Deze toestand wordt bepaald door de inkomende signalen. Indien deze inkomende signalen
gecombineerd een bepaalde drempelwaarde overschrijden, is de toestand opwinding, anders
is deze rust. Door het instellen van het gewicht van elke inputwaarde kan men de reactie
van het neuron bepalen. Verder kunnen inputsignalen zowel een positief (versterkend) als
negatief (onderdrukkend) effect hebben.
Dendrite
Axon Terminal
Node of
Ranvier
Cell body
De essentie is dat het bepalen van het gewicht van elke inputwaarde voor elke neuron niet
geprogrammeerd wordt, maar aangeleerd om een specifiek probleem op te lossen. Het
aanleren kan omdat kunstmatige neurale netwerken feedback mechanismen integreren.
5.3.5 Reageren
AI-systemen reageren door middel van actuatoren. Dit begrip is ruim: er zijn veel mogelijke
actuatoren, bijvoorbeeld:
• Piëzo-elektrische actuatoren: deze zetten een elektrisch signaal om naar een beweging.
Een typisch voorbeeld is een luidspreker.
• Elektromagnetische actuatoren: zulke actuatoren werken met een spoel die onder span-
ning een magnetisch veld uitoefent. Voorbeelden zijn een relais of een servomotor.
Bovenstaande voorbeelden zijn typisch voor fysieke robots. Echter, in het kader van bedrijfs-
kundige of economische software is de reactie van een AI systeem meestal van niet-fysieke
aard. Deze output kan zeer divers zijn: aanbevelingssystemen (recommender systems), be-
slissingen (bijv. automatisch verhandelen van aandelen), enz.
Machine Learning verwijst naar het proces waarbij computers leren en beter worden door
grote hoeveelheden data op zelfstandige wijze te verwerken. Dit is mogelijk door het gebruik
van reeds bestaande concepten uit de beschrijvende statistiek zoals correlaties, verdelingen,
regressie, enz. Zo zouden computers telkens betere voorspellingen maken voor bepaalde
fenomenen. Bijvoorbeeld zou een computer beter kunnen voorspellen of een werknemer bin-
nenkort ontslag zal nemen.
In tegenstelling tot traditionele systemen, moet men in Machine Learning variabelen kiezen
die het Machine Learning model zal gebruiken. Dit noemt men feature extraction. Op
het eerste gezicht lijkt dit eenvoudig, maar het is vaak niet zo. Bijvoorbeeld, een mens kan
relatief gemakkelijk het geslacht identificeren van iemand anders. Het is echter zeer moeilijk,
en subjectief, om nauwkeurig te beschrijven welke kenmerken onderscheidend zijn.
Als we een Machine Learning model zouden willen ontwikkelen die beide geslachten kan
onderscheiden, dan is zo’n feature extraction nodig. Men zou kunnen kijken naar gezichts-
kenmerken zoals getoond in de onderstaande tabel.
Kenmerk Man
Wenkbrauwen Dikker, rechter
Gezichtsvorm Langer en groter, met hoekiger vorm
Kaakbeen Hoekiger, breder en scherper
Nek Adamsappel
Zulke kenmerken kunnen door experten worden vastgelegd, zodanig dat er een statistisch
model kan gebouwd worden om met een zekere nauwkeurigheid het geslacht te bepalen op
basis van visuele kenmerken. Indien het echter moeilijk is om de relevante kenmerken te
bepalen, dan is dat geen goede optie. In dat geval kan men zich richten tot Deep Learning,
zie deelparagraaf 5.3.7.
Stel, een bedrijf wil voorspellen of werknemers ontslag zullen nemen binnen de komende 6
maanden. De variabelen (dit zijn de kenmerken of features) die hiervoor worden gebruikt zijn
geboortedatum, functie, geslacht en jaren ervaring zoals voorgesteld in de onderstaande tabel.
In deze tabel kan men ook zien dat ontslag de doelvariabele is die men moet voorspellen:
ofwel is die gelijk aan 1 als de werknemer ontslag heeft genomen, of 0 in het andere geval.
Eerst wordt de volgorde van de dataset volledig willekeurig gemaakt. Vervolgens wordt een
bepaald model gekozen dat men zal trainen met behulp van onderstaande data. Bij het
trainen van het model worden niet alle beschikbare gegevens gebruikt, maar bijv. 70% van
de 21.000 klanten waarover gegevens beschikbaar zijn.
5.3 Artificial Intelligence 117
Na het trainen wordt het model getoetst tegen de resterende klantgegevens (30% van de da-
taset) om de voorspellingswaarde te meten. Op basis van deze feedback worden er variabelen
toegevoegd, verwijderd of aangepast om de voorspelling van het model te verbeteren. In de
onderstaande tabel ziet men die 30% van de dataset. De kolom Kans_op_ontslag geeft de
kans weer dat een werknemer ontslag neemt in de volgende 6 maanden. Als die kans meer dan
50% bedraagt, zal de werknemer een 1 krijgen als waarde in de kolom Ontslag_voorspelling.
Elke waarde van die kolom zal eveneens vergeleken worden met de waarden van de kolom
Ontslag_waargenomen, die de werkelijke waarden zijn uit de reële wereld. De verschillen
bepalen de accuraatheid van het model. Indien er te veel foutieve voorspellingen zijn, dan
wordt het model als onnauwkeurig beschouwd en moet het aangepast worden.
Indien er zeer veel voorspellingen zijn die overeenkomen met hetgeen dat gemeten werd in de
reële wereld, dan wordt het model aanvaard en kan het gebruikt worden om te extrapoleren
naar nieuwe werknemers, m.a.w. te voorspellen.
Er zijn verschillende vormen van Machine Learning:
• Supervised Learning: het systeem leert op basis van paren van input (bijv. een foto
van een auto) en output (bijv. het woord ’auto’ als label dat het systeem aanleert
wat op de foto te zien is). Na een voldoende groot aantal paren gebruikt zijn om het
systeem te trainen, kan het systeem een voorspelling maken voor nieuwe inputs.
• Unsupervised Learning: aan het systeem worden als training inputs getoond, maar
zonder outputs of labels. Het systeem dient dus zelf patronen te leren of ontdekken,
en zal hierbij gebruik maken van clustering (groeperen, samenbrengen). Zo zal het
systeem bijv. alle inputs met foto’s van auto’s clusteren. Een nieuwe input (d.w.z. een
foto van een andere auto) zal dan door het systeem gedetecteerd worden als gelijkaardig
aan de groep of cluster auto’s, en daardoor als auto herkend worden.
• Reinforcement Learning: hierbij leert het systeem van foute keuzes. Een typisch
voorbeeld is een schaaksysteem waarbij er geen gebruik gemaakt wordt van kansbere-
kening maar van een leerproces op basis van goede en foute zetten. Tijdens de training
wordt een goede zet beloond en een foute zet ontmoedigd.
5.3 Artificial Intelligence 118
Artificial Intelligence en Machine Learning worden zeer dikwijls samen uitgesproken met het
hiervoor besproken concept kunstmatige neurale netwerken en tevens Deep Learning.
Machine Learning verwijst naar het proces waarbij computers leren en beter worden door
grote hoeveelheden data op zelfstandige wijze te verwerken. Deep Learning is echter een
brede term voor kunstmatige neurale netwerken, waarbij met “deep” wordt bedoeld dat zulk
een systeem opgebouwd is in lagen (layers). Elke laag ontvangt hierbij input en genereert
output. Deep Learning systemen worden veel gebruikt voor toepassingen zoals visuele her-
kenning, taalherkenning- en generatie, vertalingen, enz.
Het concept van Deep Learning ontstond reeds in de jaren ’40 van de vorige eeuw, waarbij
men probeerde de neuronen in een brein te modelleren. Kunstmatige neurale netwerken
bootsen bijgevolg netwerken van zenuwcellen in levende biologische systemen na.
Figuur 5.14 toont hoe in een Deep Learning model, tekening (c), elke variabele met andere
variabelen kunnen interageren19 .
Figuur 5.14: 3 modellen: (a) oppervlakkig (b) beslissingslijst netwerk (c) Deep
Learning netwerk.
Er zijn verschillende vormen van Deep Learning netwerken, die we elk toelichten.
Feed Forward Networks zijn modellen die bestaan uit input- en outputnodes, waarbij elke
node de output van nodes van de vorige laag als input verwerkt, en het resultaat doorgeeft
naar de volgende nodes. Er zijn geen lussen (acyclisch model).
Figuur 5.15 toont hoe neurale netwerken worden opgebouwd als complexe netwerken met
meerdere lagen.
Elke node in een netwerk wordt een unit of eenheid genoemd. Deze figuur toont een eenvoudig
neuraal netwerk met input-units x1 tot xn , twee verborgen lagen en vervolgens twee output-
units. De waarden w zijn gewichten die als parameters toegepast worden om een gewogen
19
Russell, S. Norvig, P., (2022). Artificial Intelligence: a modern approach, Chapter 28, p 802.
5.3 Artificial Intelligence 119
sommatie te maken van de inputs van voorafgaande nodes. w1,3 vormt bijvoorbeeld het
gewicht dat toegepast wordt op de inputwaarde x1 in derde unit van de eerste verborgen
laag. Hetzelfde geldt voor w2,3 . Gewichten worden volgens de trainingsdata zo bijgesteld dat
de outputwaarden de “echte” waarden benaderen.
De berekening van de gewogen som gebeurt niet lineair. Een activatiefunctie bepaalt hoe
de sommatie wordt uitgevoerd, en die kan bijvoorbeeld binnen Deep Learning sigmoïde (S-
vormig) zijn. Figuur 5.16 toont zo’n sigmoïde activatiefunctie.
Bij backpropagation zal men de gewichten van het neuraal netwerk telkens aanpassen als
er fouten worden gevonden in de output van het model om die fouten te minimaliseren.
Backpropagation betekende een doorbraak in de ontwikkeling en optimalisatie van neurale
netwerken, en wordt nog steeds beschouwd als de meest efficiënte en effectieve manier om de
resultaten van neurale netwerken te optimaliseren.
Bijvoorbeeld, stel dat de foutenmarge van een neuraal netwerk 0,4 bedraagt. Als men de
gewichten van het model lichtjes aanpast dan kan die foutenmarge dalen naar 0,3. Ook kan
men de gewichten opnieuw aanpassen om die foutenmarge telkens meer in de richting van 0
te doen dalen. Dus, door voortdurend deze gewichten bij te sturen kan men de resultaten
van het model telkens verbeteren.
Deep Learning modellen kennen een aantal belangrijke nadelen, waaronder de volgende:
• Data: om patronen te kunnen identificeren, hebben Deep Learning modellen zeer veel
data nodig. Bedrijven zoals Uber, Amazon en Google beschikken over dergelijke grote
data sets, maar vele andere organisaties niet. Dit is met name belangrijk omdat deze
modellen maar zo goed zijn als de data waarmee ze getraind worden.
• Eenzijdigheid: Deep Learning modellen hebben slechts één toepassing, en kunnen niet
omgaan met veranderende vereisten, een veranderend aantal variabelen of kenmerken.
Eens het model bepaald is, kunnen geen variabelen toegevoegd of verwijderd worden
zonder het model opnieuw te trainen, wat soms weken of maanden kan duren.
Een voorbeeld van een algoritme dat men niet alleen toepast in Machine Learning maar
ook in het kader van Deep Learning is lineaire regressie. Lineaire regressie wordt bijv.
gebruikt om te onderzoeken of trillingen voortkomen uit een aardbeving of voortkomen uit
een explosie, of om de kracht te voorspellen van aardbevingen op basis van bepaalde factoren.
Hierbij wordt gebruik gemaakt van de glasvezelkabels in de regio, omdat deze gevoelig zijn
voor trillingen. De bestaande glasvezelkabels vormen als het ware een enorm groot sensorveld
voor seismische activiteit (wat in feite een voorbeeld van IoT is), waarvan de signalen via
Deep Learning modellen met lineaire regressie worden verwerkt20 . Hierbij kan men het
effect van bijv. autoverkeer wegfilteren op basis van de glasvezelkabels in de buurt van wegen.
Figuur 5.17 toont een grafische voorstelling van Distributed Acoustic Sensing 21 (DAS) met
behulp van glasvezelkabels.
20
Yu, Z. et al. (april 2020). CRPN: A cascaded classification and regression DNN framework for seismic
phase picking. Earthquake Science, 33, p. 53-61.
21
Tribaidos, V.R. (september 2020). From light to waveform: how fiber-optic cables can be repurposed as
seismic arrays. EGU Blogs.
https://blogs.egu.eu/divisions/sm/2020/09/01/from-light-to-waveform-how-fiber-optic-cables-c
an-be-repurposed-as-seismic-arrays/
5.3 Artificial Intelligence 121
Misbruik: AI kan bijv. ook gebruikt worden voor zogenaamde vijandige zoekacties - bij-
voorbeeld het achterhalen van zwakheden in een spamfiltersysteem. Een typisch voorbeeld is
het gebruik van AI-systemen om spam filters te omzeilen, bijv. door het schrijven van perfect
leesbare en logische (maar irrelevante) teksten door een chatbot om emails te genereren die
niet beschouwd worden als spam.
Met andere woorden, het is denkbaar dat Artificial Intelligence, in een negatieve context zo-
als criminaliteit, steeds meer zal worden gebruikt om andere AI-gebaseerde systemen aan te
vallen - en dit tegen een exponentieel toenemende snelheid en in hoeveelheden die met tradi-
tionele systemen of menselijke inzet niet mogelijk zijn. Dit is één van de redenen waarom er
door sommigen voorbehoud wordt gemaakt tegen de invoering van Artificial Intelligence. Dit
gebeurt ook vanuit wetenschappelijke hoek en door vooraanstaande technologen die pioniers
waren bij de implementatie van Artificial Intelligence, zoals Elon Musk die OpenAI oprichtte
– de ontwikkelaar van ChatGPT –, en Geoffrey Hinton die beschouwd wordt als één van de
“godfathers of AI” en in mei 2023 ontslag nam als ondervoorzitter van Google. Diezelfde
Hinton won in 2019 de Turing-award samen met twee collega’s.
5.3 Artificial Intelligence 122
Natural Language Processing (NLP) wordt toegepast in drie domeinen: om met mensen
te communiceren (denken we aan bijv. chatbots zoals ChatGPT/Microsoft Copilot en
Gemini), om te leren (vermits veel kennis met behulp van taal is gedocumenteerd) en om
taal zelf wetenschappelijk te begrijpen.
Een taalmodel (Language Model) is een model waarbij de syntaxis (via grammatica) en de
semantiek (betekenis) worden gedefinieerd. Taal is echter niet strikt geformuleerd en taal
modelleren kent heel wat moeilijkheden, waaronder het bestaan van verschillende mogelijk-
heden om hetzelfde uit te drukken, of de ambiguïteit van uitspraken. Bijvoorbeeld: “Marie
is die nacht goed bevallen.” is ambigue: viel de nacht goed mee, of is ze toen zonder veel
complicaties bevallen? Bovendien komen symbolen in een taal niet één op één overeen met
reële objecten. Bijvoorbeeld: een “pad” kan zowel een weg voorstellen, als een kikvors. Een
“gerecht” kan zowel een maaltijd zijn, als een rechtbank.
Voor Natural Language Processing worden Recurrent Neural Networks gebruikt om te leren.
Recurrent Neural Networks (RNN ) verschillen van Feed Forward Networks door het
feit dat er cycli mogelijk zijn, d.w.z. dat de output van eenheden kan dienen als input
van voorgaande eenheden, waardoor er een kortetermijngeheugen ontstaat (hidden state):
input van vroegere stappen in het netwerk gaat mee bepalen wat de output wordt voor huidige
inputwaarden. Een Recurrent Neural Network kan dus afhankelijkheden over de tijd heen
detecteren. Zulke netwerken met geheugen kunnen worden gebruikt voor bijvoorbeeld het
verwerken van natuurlijke taal, waarbij er afhankelijkheden kunnen zijn tussen een voorgaand
woord in een zin of zelfs in vorige zinnen. Hetzelfde geldt voor de generatie van leesbare
output.
Recurrent Neural Networks worden o.m. gebruikt voor sentiment analysis, d.w.z. om de
ondertoon te bepalen van een bepaalde input. Een vraag kan neutraal gesteld worden, kwaad,
afwijzend, enz. Zo kan een chatbot rekening houden met deze ondertoon bij het antwoorden
op een vraag.
Door de enorme hoeveelheid benodigde trainingsdata (taal, maar ook afbeeldingen zoals
verder wordt besproken) is supervised learning voor dit soort NLP-toepassingen in feite on-
mogelijk, en werkt men in dit domein met unsupervised learning. Dit geldt dus voor zowel
taal- als beeldverwerking (zie deelparagrafen 5.3.10 en 5.3.11).
Voor vertalingen (machine translation) gaat men een stap verder. Het is de bedoeling om
sequentieel zinnen te vertalen, op zo’n manier dat de vertaling zo goed mogelijk de oorspron-
kelijke betekenis weergeeft. Woordvolgorde en andere kenmerken zijn anders in verschillende
talen, dus kan men niet woord-voor-woord vertalen. Men moet ook de context in beschouwing
nemen. Een Sequence-to-Sequence model bestaat in feite uit twee Recurrent Neural Net-
works: één voor de input en één voor de generatie van de output, waarbij de hidden state, wat
5.3 Artificial Intelligence 123
de context (= het geheugen) voorstelt, wordt doorgegeven tussen beide modellen. Dankzij
het doorgeven van die context is machine translation veel nauwkeuriger dan vroeger.
Men kan zulke modellen eveneens gebruiken voor onder andere het samenvatten van teksten,
zonder verlies van betekenis, of tekstherkenning in afbeeldingen met omzetting naar gewone
tekst – zoals de vroegere OCR (Optical Character Recognition).
Een voorbeeld van het aanroepen van een AI vertaalsysteem met Python is het volgende:
Merk op dat performantie een belangrijke factor kan zijn bij aanroepen van externe (AI)-
systemen. Dit voorbeeld neemt maar liefst 27 seconden in beslag voor de vertaling van 1 zin,
en is dus niet bruikbaar in een interactieve toepassing.
Sinds enkele jaren zijn Natural Language Processing modellen (NLP) bijzonder sterk ontwik-
keld, mede door de opkomst van specifieke hardware. Large Language Models (LLMs)
5.3 Artificial Intelligence 124
kunnen gigantisch veel accurate tekst genereren, en worden getraind met datasets met miljar-
den woorden. GPT is zo’n model, waarvan de ChatGPT van OpenAI erg bekend is geworden
sinds eind 2022. Momenteel worden LLM systemen onder andere gebruikt in diverse vormen
– zoals Copilot en Gemini –, en toepassingen zoals sociale media, smartphone apps, enz.
Voor deze doeleinden wordt veel gebruik gemaakt van een ander type neuraal netwerk, met
name een Generative Adversarial Network (GAN ). Zulke een netwerk bestaat uit twee
componenten: de generator die afbeeldingen maakt op basis van trainingsdata, en de discri-
minator die bepaalt of een afbeelding voldoende realistisch is. Zulke netwerken zijn ideaal om
foto-realistische afbeeldingen te maken van bijvoorbeeld mensen die nooit hebben bestaan,
of anderzijds afbeeldingen (of video’s) van bestaande mensen in een onbestaande context
(deepfake). Of mensen die worden getoond met foto-realistische wijzigingen (morphing).
Figuur 5.18 toont twee nieuwslezers die werden gegenereerd22 , en dus in werkelijkheid niet
bestaan.
Figuur 5.19 stelt een gegenereerde foto voor23 waar morphing werd toegepast, met realistische
variaties van het gezicht van een bestaande persoon.
Generative Adversarial Networks kunnen ook worden gebruikt voor de generatie van rea-
listisch overkomende vertalingen van gesproken of geschreven teksten (unsupervised trans-
lation): men kan zulk een netwerk zo trainen, dat het mogelijke varianten genereert die
de discriminator van het systeem aanvaardt als realistisch – en dit zonder enige vorm van
supervised learning.
In paragraaf 5.1.1 werd eerder, in het kader van IoT, besproken, hoe beelden worden waar-
genomen. Een artificieel intelligent systeem gaat met de data om, om te begrijpen welke
objecten aanwezig zijn, en waar.
Randen
Een eerste manier om objecten te onderscheiden, zijn randen (edges). Randen zijn lijnen of
curves op het beeld waar er een significant verschil in helderheid of kleur optreedt. De com-
plexiteit echter is dat ook schaduwen en diepte randen kunnen genereren, net zoals reflecties.
Textuur
Textuur is de structuur van een weefsel of materiaal, die we dikwijls ook kunnen voelen. Op
afbeeldingen ontstaan er patronen die relatief gelijkmatig zijn. Als we simpelweg naar randen
zouden zoeken, bestaat de kans dat een textuur aanleiding geeft tot zeer veel randen. Een
AI-systeem moet dus rekening houden met zulke herhalende patronen.
Segmentatie en classificatie
Een manier om een beeld te verwerken, is eerst gelijkaardige pixels (kleur, helderheid), te
groeperen in zogenaamde regio’s. Met behulp van Machine Learning kunnen we op deze
manier een AI-systeem aanleren om grenzen (randen) te ontdekken in een beeld.
Moderne technieken vertrekken eerder van kleur en textuur dan van vorm om een object in een
beeld te classificeren. Helaas zijn daar een aantal nadelen aan verbonden, bijvoorbeeld verschil
in helderheid, de richting van waaruit het object is gefotografeerd, de occlusie (het verbergen)
van delen van een object, zowel door andere objecten als door zichzelf en vervorming - een
dier of mens kunnen bijvoorbeeld verschillende houdingen aannemen.
Bij beeldherkenning is het streefdoel het ontdekken van een object in een beeld, waarbij
de achtergrond van het beeld weinig of geen belang heeft voor de verwerking, zoals bij een
catalogus van kledingstukken of meubels.
Als we een afbeelding met Deep Learning zouden willen analyseren, vereist dit grote verwer-
kingskracht door de grote hoeveelheid data (pixels in één afbeelding). Gewone Feed Forward
5.3 Artificial Intelligence 126
Networks zijn hierdoor niet geschikt, maar ook omdat deze de nabijheid (adjacency) van
pixels niet kunnen herkennen.
Een manier om dit op te lossen, is eerst nabije pixels op gelijkaardigheid qua kleur en helder-
heid te groeperen in zogenaamde regio’s, waardoor ook de grenzen (randen) in een beeld door
het systeem ontdekt (kunnen) worden. Hiervoor worden Convolutional Neural Networks
(CNN) gebruikt. Concreet gesteld worden er voor 100 x 100 pixels al 10.000 gewichten gege-
nereerd. Met een gewone foto waarbij het aantal pixels miljoenen bereikt, is het onhaalbaar
om een efficiënt werkend netwerk op te bouwen. Daarom zal men nabije pixels dus samen-
voegen tot regio’s, waardoor bijv. 100 x 100 pixels gereduceerd of samengevouwd worden tot
5 x 5 pixels. Daardoor is het aantal vereiste gewichten nog slechts 25, of 400 keer minder.
CNN gebruiken tensoren om vormen voor te stellen in beelden. Deep Learning systemen die
werken met tensoren zijn geoptimaliseerd voor tensorberekeningen, en die worden dikwijls
door GPU’s (graphical processing units, zie hoofdstuk 2, deelparagraaf 2.1.1) of TPU’s (ten-
sor processing units, ontwikkeld door Google sinds 2015) uitgevoerd. Eén enkele TPU kan
tegenwoordig meer dan 100 miljoen foto’s per dag verwerken.
In de vorige sectie over beeldherkenning was van belang welk object zich in een beeld bevindt.
Bij object detectie is het doel om meerdere objecten in een beeld te vinden (a.d.h.v. een
zogenaamde bounding box per object), het type van het object te bepalen, én de positie
van de objecten tegenover elkaar. Hiervoor wordt gebruikt gemaakt van een andere soort
neurale netwerken: Regional Proposal Networks.
Figuur 5.20 toont hoe het gezicht van een persoon op de foto onderscheiden wordt met een
regional proposal network, en waarop het gezicht door een “bounding box” wordt aangeduid.
Het onderstaande Python voorbeeld toont hoe een externe AI-service met slechts enkele
lijnen code kan aangeroepen worden, en waarbij de leeftijdscategorie met 90 % zekerheid
bepaald kon worden dankzij het achterliggende getrainde Convolutional Neural Network.
Het resultaat van deze aanroep is een eenvoudige Python dictionary.
Figuur 5.20: Vinden van een object met bounding box aanduiding.
5.3 Artificial Intelligence 127
5.3.12 Robotica
Een robot moet in staat zijn de omgeving waar te nemen. Een AI-systeem kan uitgerust
zijn met verschillende sensoren: camera’s, microfoons, maar ook software om bijvoorbeeld
tekst te lezen. De problematiek zit minder in de technologie zelf: bijvoorbeeld zijn camera’s
vandaag krachtig genoeg om hoge resolutie foto’s te nemen, en is er voldoende opslagcapaciteit
(SSD, cloud) om al die beelden te bewaren. Het afleiden van bruikbare informatie uit de
grote hoeveelheid visuele data (pixels) is het grootste probleem. Een deel werd besproken in
deelparagraaf 5.3.11, maar robotten moeten ook in staat zijn om beweging te verwerken, en
daarnaast zijn er ook akoestische - en geursensoren.
Een robot plant het pad die deze moet afleggen (traject), maar ook de beweging. Het grootste
probleem bij het plannen van beweging is het botsen op obstakels. Planning van beweging is
met andere woorden een continue zoekactie.
Een belangrijk aspect is eveneens dat een robot zelden alleen werkt, maar dikwijls in een
multi-agent omgeving (andere robotten of mensen) werkt. Zelfrijdende voertuigen zijn van-
zelfsprekend goede voorbeelden voor de complexiteit van zulke robotten, maar dit geldt even-
eens voor bewegende industriële apparaten zoals in gerobotiseerde fabrieken of logistiek.
5.3 Artificial Intelligence 128
Finance
Smart Cities
Een slimme stad – smart city – is een stad waarbij informatietechnologie en het Internet of
Things gebruikt worden om de stad te beheren en besturen. Hierbij gaat het zowel over de
administratie als de voorzieningen zoals bibliotheken, ziekenhuizen, het transportsysteem en
de nutsvoorzieningen.
Figuur 5.21 stelt en analyse voor van de diverse AI-gebaseerde implementaties wat betreft de
domeinen in smart cities.
Het tweede domein is meer gericht op de stedelijke omgeving: mobiliteit en transport. In dit
geval gaat het over het beheer van verkeer volgens AI-gebaseerde beslissingen, bijvoorbeeld
het monitoren en voorspellen van het verkeer in de stedelijke omgeving.
De auteurs concluderen dat steden winnen bij het gebruik van Artificial Intelligence in de
diverse domeinen van een smart city omgeving, met name data-gedreven beslissingsprocessen,
waardoor diverse factoren (bijv. mobiliteit) effectief verbeteren. De kanttekening is, zoals ook
eerder werd gesteld, dat er verschillende overwegingen moeten gemaakt worden op ethisch en
het wettelijk vlak, en de bescherming van persoonsgegevens.
5.4 Search Technology 130
Een search engine26 of zoekmachine is een computerprogramma waarmee informatie kan op-
gezocht worden. Zoekmachines zijn niet alleen algemeen beschikbaar (bvb Google, Microsoft
Copilot), ze zijn dikwijls ook zeer grote bedrijven an sich geworden.
Samengevat zijn er 5 soorten zoekmachines, die op een verschillende wijze informatie verza-
melen en beschikbaar maken:
• Crawler search engines: dit zijn gesofisticeerde computerprogramma’s die op een geau-
tomatiseerde manier op het internet surfen, informatie verzamelen en opslaan. Voor-
beelden zijn de bekende zoekmachines Google en Microsoft Bing.
• Hybrid search engines: dit is een combinatie van manuele directories en geautomati-
seerde verzameling van informatie via crawlers.
• Semantic search engines: zulke zoekmachines zoeken naar informatie op basis van be-
tekenis in plaats van gewoon sleutelwoorden.
Figuur 5.22 toont schematisch hoe een crawler search engine te werk gaat.
Indexatie
Zoekfunctie
Web Spiders Pagina opslag
Ranking
algoritmes
Metadata
Crawler search engines downloaden webpagina’s met behulp van spiders of bots, en scannen
de pagina’s op hyperlinks voor verdere zoekacties. Ze leggen vervolgens tabellen aan met
26
Turban, E., Pollard, C., Wood, G. (2018). Information Technology for Management. Chapter 6 Search,
Semantic, and Recommendation Technology.
5.4 Search Technology 131
Dankzij algoritmes, die specifiek en geheim zijn voor elke zoekmachine, kennen de zoekma-
chines scores toe (ranking) waarmee de volgorde van presentatie in de zoekresultaten wordt
bepaald. Deze volgorde is zeer belangrijk voor de zichtbaarheid van websites en webpagina’s,
vermits de meeste bezoekers hoogstens de eerste resultatenpagina of enkele resultatenpagina’s
bekijken.
Tenslotte voorzien crawler search engines in een geavanceerde zoekfunctie, waarbij een ge-
bruiker op basis van sleutelwoorden, maar ook bepaalde criteria en zelfs afbeeldingen op zoek
gaat naar resultaten. Google bijvoorbeeld heeft de functionaliteit waarbij de gebruiker zelf
een afbeelding kan invoeren om gelijkaardige afbeeldingen te zoeken.
Het spreekt voor zich dat het passief aanwezig zijn op het internet, en wachten tot een
zoekmachine de website niet alleen vindt, maar ook hoog genoeg plaatst in de ranking, geen
enkele zin heeft. Door de hoeveelheid informatie en websites dient een bedrijf actief stappen
te ondernemen om haar producten en diensten zichtbaar te maken.
• Search Engine Optimization (SEO): hierbij optimaliseert men de eigen website, waarbij
men rekening houdt met hoe search engines werken om websites te analyseren, indexeren
en scores te geven.
• Social Media Optimization (SMO): search engines houden vandaag rekening met de
aanwezigheid en reputatie van bedrijven op social media zoals LinkedIn, Facebook,
Instagram en andere. Social Media Optimization is de strategie om een bedrijf en haar
producten op een zo goed mogelijke manier te promoten op diverse social media sites.
Vermits search engine marketing gebeurt via digitale media, is het mogelijk om de ‘return on
investment’ te berekenen van zulke marketing campagnes, maar ook de interesse van klanten
in het bedrijf en haar producten en het aankoopgedrag (in termen van click, likes, enz.).
5.4 Search Technology 132
De doelstelling van Search Engine Optimization (SEO) is het verhogen van het digitale verkeer
naar de eigen websites, producten en diensten.
Zoals eerder besproken, hanteren de crawler search engines specifieke algoritmes, die niet
enkel bedrijfsgeheim zijn maar ook voortdurend worden bijgesteld. Artificiële intelligentie
(zie ook paragraaf 5.3) wordt ingezet om op basis van zoekresultaten de algoritmes aan
te passen. Zulke zoekmachines gebruiken ook Natural Language Processing (NLP) en
Image Recognition om een zoekactie te interpreteren.
SEO werkt op twee verschillende vlakken: on-page en off-page factoren spelen mee in de
ranking.
On-page factoren zijn elementen waarop de webontwikkelaar en de uitgever van webpagina’s
direct invloed hebben. Origineel gebruikte men een lijst van sleutelwoorden die toegevoegd
werden aan het onzichtbare gedeelte, het <head> element van een HTML-pagina. Dit bepaalt
echter niet of de webpagina relevant is, omdat dit een zuiver manuele toevoeging is en men
eender welk sleutelwoord kan toevoegen.
De huidige algoritmes zijn vooral gericht op de kwaliteit van de webpagina’s: niet alleen de
tekstkwaliteit, maar ook de relevantie van de inhoud, of de inhoud regelmatig vernieuwd
wordt, of hyperlinks op een webpagina verwijzen naar andere betrouwbare bronnen, en of de
inhoud beschikbaar is op verschillende manieren inclusief publicatie op sociale media.
Daarnaast geldt ook de technische kwaliteit van de website: performantie, veiligheid, een
correcte manier van tagging met sleutelwoorden en tenslotte hoeveel een webpagina effectief
via een search engine bezocht wordt.
Off-page factoren zijn elementen waarop het bedrijf niet direct invloed op heeft. De relevantie
en geloofwaardigheid worden opgebouwd door andere statistieken, bijvoorbeeld hoeveel keer
er via hyperlinks verwezen wordt vanuit betrouwbare bronnen naar de webpagina’s van het
bedrijf (backlinks), het verkeer op de website en of de website positieve reviews heeft op
betrouwbare sites.
De essentiële bron van inkomsten voor search engines is het tonen van advertenties. In ruil
voor het ‘gratis’ aanbieden van de zoekfunctie, kunnen bedrijven op basis van een ‘pay-per-
click’ model advertenties plaatsen, en met behulp van diverse tools aangeboden door de search
engines deze advertenties optimaliseren.
Search engines zoals Google plaatsen zulke advertenties geïntegreerd en zeer hoog in de resul-
tatenlijst van een zoekactie, waarbij de advertenties wel, maar niet erg opvallend, als dusdanig
aangeduid worden. Daarnaast kunnen zulke advertenties naast de lijst getoond worden.
Ook hier gelden algoritmes, bijvoorbeeld voor de berekening van de relevantie van de inge-
geven informatie, de webpagina waarnaar de advertentie verwijst, maar ook de geografische
positie van de gebruiker aan de hand van het IP-adres of in het geval van smartphones
wanneer de locatiefunctie (GPS) geactiveerd is.
Search engines bieden real time monitoring aan van de geplaatste advertenties, en kunnen
uit de resultaten leren welke advertentie op welke manier het beste aanslaat.
5.4 Search Technology 133
• Click-through rates (CTR): hoeveel gebruikers die een advertentie zien, klikken er ook
op? CTRs worden gebruikt om de effectiviteit van een marketingcampagne te meten.
• Keyword conversion: het doorklikken op een advertentie is slechts één stap in het proces.
Welke sleutelwoorden leiden echter tot de meeste verkopen? Met andere woorden, welke
sleutelwoorden moet men aan een advertentie toevoegen, niet enkel om hoger geplaatst
of opvallender voor te komen in de zoekresultaten maar ook om een hogere verkoop te
verzekeren?
• Cost of customer acquisition (CoCA): hoeveel heeft een bedrijf uitgegeven per gewonnen
klant?
• Return on advertisement spend (ROAS): hoeveel omzet heeft een bedrijf gegenereerd
als resultaat van de advertenties in verhouding tot de kost ervan?
Het derde aspect van Search Engine Marketing is Social Media Optimization. De optima-
lisatie van sociale media is het gebruik van een aantal verkooppunten en gemeenschappen
om publiciteit te genereren om de bekendheid van een product, servicemerk of evenement te
vergroten. Dit lijkt sterk op search engine optimization, maar is toegespitst op de verschil-
lende soorten sociale media die wereldwijd aan belang toenemen: Facebook, X (het vroegere
Twitter platform), Instagram, Youtube, Pinterest, blogging websites enz.
Social Media Optimization is niet gelijk aan het ‘aanwezig’ zijn op een social media plat-
form. Doelstellingen kunnen zijn: het versterken van de merknaam, het genereren van leads
en verkopen, maar ook interactie met klanten en potentiële klanten. Er zijn verschillende
mogelijkheden naargelang het platform, bijvoorbeeld om campagnes te lanceren en het effect
van de inspanningen op te volgen via diverse dashboards (aantal clicks, distributie over de
tijd, enz).
Net zoals bij search engines, kan men ook advertenties plaatsen, en die worden die op sommige
social media platformen zoals Facebook in de inhoud verwerkt, weinig onderscheidbaar van
gewone berichten alsof het berichten of aanbevelingen zijn van gebruikers. De gebruikers
worden in tegenstelling tot search engine resultaten actief betrokken, en kunnen ‘likes’ en
reviews achterlaten.
Social Media Optimization wordt dikwijls in verband gebracht met viral marketing, waar
mond-tot-mondreclame een effectieve manier is om een product of dienst in de kijker te
plaatsen. Meer nog, bedrijven maken soms gebruik van influence marketing strategieën.
Een influencer is een invloedrijke persoon die op sociale media via bijvoorbeeld gesponsorde
berichten of video’s reclame maakt voor producten of merken. Met andere woorden, ze
kunnen de opinie en het aankoopgedrag van het publiek beïnvloeden. In ruil voor deze
prestaties krijgen de influencers een beloning in de vorm van gratis producten of geld. Veel
gebruikte kanalen zijn onder andere Facebook, Instagram, Snapchat en X.
De aanwezigheid van bedrijven en advertenties op sociale media, met likes en reviews, heeft
ook een sterke invloed op de resultaten van search engines, die zoals eerder gesteld aan de
hand van die informatie de reputatie bepalen en aldus ook de ranking in de resultatenlijst
van zoekfuncties.
5.4 Search Technology 134
Targeted marketing of doelgerichte marketing is het proces waarbij potentiële klanten gede-
tecteerd worden en de gebruiker doelgerichte reclame te zien krijgt.
Enerzijds kan men gebruik maken van algemene informatie zoals het IP-adres voor geografi-
sche locatie, of browser informatie (bijvoorbeeld: wordt een smartphone of PC gebruikt?).
Het is echter krachtiger wanneer men ook actief informatie verzamelt en opvolgt. Grote
e-commerce websites zoals Amazon of Netflix werken met recommendation engines, die op
basis van data en analytics (zie ook de vorige paragraaf 5.2) proberen in te schatten in welke
producten of diensten gebruikers het meeste interesse kunnen hebben.
Websites kunnen profileringsgegevens samenstellen van bekende of anonieme klanten via zo-
genaamde cookies. Een cookie is een verzameling van informatie die een server naar een
web browser stuurt, die het bij een volgend bezoek weer naar de server terugstuurt. De
oorspronkelijke bedoeling van cookies was om de state voor een bepaalde gebruiker niet te
verliezen, bijvoorbeeld login naam of instellingen. Men kan echter ook surfinformatie ver-
garen, en zo gedrag van een bekende of anonieme gebruiker reconstrueren. Dit noemt men
tracking cookies. Tracking cookies worden voornamelijk gebruikt voor reclamedoeleinden,
waarbij een reclamebureau op één website informatie bijhoudt van de bezoeker, en indien de
bezoeker nadien een andere website bezoekt, die informatie kan gebruiken om een aangepaste
advertentie te tonen.
Een andere veelgebruikte techniek om gebruikers te volgen, zijn tracking pixels. Dit zijn
minuscule afbeeldingen van 1 x 1 pixel groot, die gehost worden op de server van de adver-
teerder. Met een tracking pixel kan men het gedrag van een gebruiker volgen, maar eveneens
de algemene informatie lezen zoals het IP-adres, besturingssysteem, of het een smartphone
is enzovoort. In tegenstelling tot cookies, bevatten deze geen specifieke informatie maar kan
een gebruiker ze ook niet blokkeren, tenzij via speciale browser add-ons zoals adblockers. Fa-
cebook, Microsoft Copilot en Google zijn enkele voorbeelden van bedrijven die actief tracking
pixels plaatsen. Tracking pixels worden ook gebruikt om te ontdekken of een gebruiker een
email gelezen heeft, en wanneer. Maar tracking pixels vallen eveneens onder de hierboven
vermelde Europese regelgeving.
5.5 Blockchain en Distributed Ledger Technology 135
Toepassingslaag
Contract laag
Beloningslaag
Consensus laag
Netwerk laag
Node
Node
Node Node
Data laag
Blockchain
• Netwerk laag of network layer: meestal een volledig gedistribueerd systeem waarbij
de nodes (dwz. servers) verbonden zijn zonder enige vorm van centrale autoriteit of
hiërarchie.
• Toepassingslaag of Application layer: in het Bitcoin systeem zijn dit digitale financiële
transacties, in andere platformen zoals Ethereum zijn dit gedecentraliseerde toepassin-
gen (Dapp).
Tx 1 Tx 2 Tx n Tx 1 Tx 2 Tx n Tx 1 Tx 2 Tx n Tx 1 Tx 2 Tx n
Hash van Genesis blok Hash van blok 1 Hash van blok 2
Figuur 5.24 toont hoe een blockchain concreet is opgebouwd. Elk blok verwijst naar het
vorige blok. Het eerste blok noemt men het Genesis blok. Tx staat voor transactie.
Het grote verschil met andere bestaande technologieën is, dat blockchain niet met één centraal
knooppunt/controller werkt maar volledig gedecentraliseerd is. Met andere woorden, de
risico’s verbonden aan één controller (centrale server of autoriteit) worden vermeden:
Het blockchain netwerk is in wezen gebaseerd op het feit dat transacties niet direct tussen
bron en bestemmeling uitgewisseld worden, maar uitgezonden worden over het hele netwerk
om de transactie te kunnen verifiëren.
Meerdere transacties worden samengevoegd in een blok (block), dat een unieke hashcode en
een timestamp heeft. Het volgende blok bevat de hashcode van het vorige blok, waardoor het
verwijst naar het vorige blok en er een zogenaamde ketting (chain) ontstaat. Zulke blokken
zijn beperkt in grootte, voor Bitcoin zijn deze 1 MB.
Wanneer iemand ook maar een fractie aanpast aan een transactie (bijvoorbeeld om fraude
te plegen), dan veranderen alle hashcodes van de volgende blokken en is de hele ketting
ongeldig. Dit verzekert de geldigheid van de transacties in de oorspronkelijke blockchain, en
dat bijvoorbeeld een Bitcoin geen twee keer wordt uitgegeven.
Elk nieuw blok dat ontstaat moet door de meerderheid van de deelnemers, de nodes, van het
netwerk geaccepteerd worden. Dit gebeurt door consensus van de meerderheid.
Er ontstaat regelmatig een nieuw blok, zoals bij Bitcoin ongeveer elke 10 minuten. Dat
blok moet aan de blockchain worden toegevoegd, en daarvoor moet een unieke hashcode
worden berekend. Dit gebeurt door miners. Miners zijn deelnemers (servers) die rekenkracht
gebruiken om alle transacties in een blok te valideren, en als eerste een geldige hashcode te
berekenen.
Hierbij dient de miner een waarde te bepalen die via een ‘proof of work’ algoritme tot een
geldige hashcode leidt. Men noemt die (4-byte) waarde ook Nonce. Anders gesteld, de Nonce
is het bewijs (=proof) voor de geleverde inspanning (=work) om een geldige hashcode te
berekenen29 . Deze cryptografische puzzel dient als bewijskracht hoeveel moeite men stak in
de validatie van een blok van transacties. In ruil voor de inspanningen ontvangen miners een
beloning in cryptogeld.
Alle gebruikers in hetzelfde netwerk zijn op de hoogte van elkaars adres alvorens een trans-
actie start. De transacties bevatten informatie over de bron, de bestemmeling(en) en de
hoeveelheid. Elke transactie krijgt een unieke ID, geëncrypteerd door de hash waarde van
de input transactie en de publieke sleutel van de ontvanger. Dit wordt verder geëncrypteerd
29
Er worden ook andere consensus algoritmes gebruikt, cfr. teksten in de vorige voetnoot.
5.5 Blockchain en Distributed Ledger Technology 138
door de private sleutel van de afzender. Elke wijziging aan de inhoud zou deze unieke ID en
ondertekening aantasten.
De transactie moet dan bevestigd worden. Niet-bevestigde transacties worden als onbetrouw-
baar beschouwd tot ze bevestigd zijn. De ontvanger kan het volgende verifiëren: dat de input
transacties geldig zijn, het geld niet reeds uitgegeven is, de ondertekening geldig is, en het
blok waarin de transactie staat geldig is.
De ontvanger eist eigendom op dankzij zijn/haar publieke sleutel. Bovendien wordt de privacy
van de ontvanger gevrijwaard dankzij die sleutel.
Er dient consensus te zijn over de geldigheid van het blok. Samenvattend zijn dit de nood-
zakelijke stappen voor de validatie van een blok:
• Verificatie: alle transacties in het huidige blok zijn geverifieerd: geen dubbele uitgave,
geldige ondertekening, geldig blok.
• Chain: Er wordt op een geldige wijze verwezen naar het vorige blok, d.i. de hashcode
van dat blok.
• Timestamp: De timestamp is accuraat.
• Validatie: Het bewijs (proof-of-work) voor het huidige blok is geldig.
Het beloningssysteem van de miners zorgt ervoor dat de miners eerlijk blijven (zie ook deel-
paragraaf 5.5.6) en het systeem robuust gemaakt wordt.
5.5.3 Contractlaag
5.5.4 Toepassingslaag
• Internet of Things: door de decentralisatie van blockchains kan voor de verwerking van
de enorme hoeveelheid transacties niet alleen de kost verminderd worden (geen centrale
datacenters), maar ook garandeert dit dat het falen van één node niet leidt tot het falen
van het hele netwerk.
Er zijn 3 soorten blockchain systemen. In publieke systemen kan en mag iedereen transacties
aanmaken, de blockchain controleren, en aan mining doen om geld te verdienen. Dit heeft
als nadeel dat men het systeem kan aanvallen, en dus is de proof-of-work samen met cryp-
tografische validatie van de blockchain essentieel. In privésystemen gebeurt de uitwisseling
van transacties in een privé blockchain netwerk, waarbij mining gecontroleerd wordt door één
organisatie of enkele individuen. Dit is een eerder gecentraliseerd systeem. Een consortium is
een gemengd systeem, waarbij de toegang door bepaalde nodes toegekend en bewaakt wordt.
Hier bestaat het risico dat de meerderheid van het consortium van nodes kan knoeien met
de blockchain.
5.5.6 Uitdagingen
Het gebrek aan duurzaamheid is een behoorlijk zwaar probleem voor blockchain implementa-
ties. Systemen zoals Bitcoin vergen een enorme opslagcapaciteit van gegevens, en daarnaast
wordt zeer veel energie verbruikt voor het minen omwille van de erg zware proof-of-work. Bij-
voorbeeld wordt geschat dat één transactie ongeveer 80.000 keer meer energie verbruikt dan
een kredietkaarttransactie. Er worden ondertussen andere consensus algoritmes ontwikkeld
en gebruikt die minder energie-intensief zijn.
Schaalbaarheid is een andere bezorgdheid. Bijvoorbeeld is een Bitcoin blok beperkt tot 1 MB
aan transacties en wordt er om de 10 minuten een nieuw blok gegenereerd. Dat betekent dat
er maar 7 transacties per seconde mogelijk zijn. Grotere blokken gebruiken echter meer
opslagruimte en zorgen voor tragere verspreiding over het netwerk.
5.5 Blockchain en Distributed Ledger Technology 140
Privacy is ondanks het gebruik van public/private key technologie nog steeds niet volledig ge-
vrijwaard, vermits het IP-adres van de gebruiker potentieel kan opgezocht en gevolgd worden.
Dit heeft niet alleen een impact op financiële transacties, maar ook op smart contracts.
Externe bronnen (oracles) die men gebruikt in smart contracts om regels uit te voeren, zijn
niet altijd betrouwbaar.
Verder kan men knoeien met de transacties indien men meer dan de helft van de nodes onder
controle heeft (‘51 % attack’). Dit kan door samenwerking van miners in zogenaamde mining
pools, die in ruil voor de samenwerking (gezamenlijke rekenkracht) de beloning delen.
Blockchain is slechts één vorm van een Distributed Ledger Technology (DLT) met een zeer
specifieke technologische onderbouw. Een DLT is een stap in de richting van blockchain maar
bestaat niet noodzakelijk uit blocks.
Elke Distributed Ledger Technology, die een vorm is van een gedistribueerde databank, heeft
finaliteit als centraal kenmerk. Het resultaat moet steeds één en slechts één geldige, con-
sistente en integere toestand zijn. Zoals eerder besproken, zijn er regels om die consistentie
te bereiken via consensusmodellen en andere technieken. Elke Distributed Ledger Techno-
logy is onderhevig aan mogelijke aanvallen, en dus bestaat het risico dat de integriteit van
de DLT in gevaar wordt gebracht. De keuze van de juiste technologie voor de ontwikkeling
van een applicatie in een bepaalde bedrijfscontext qua model en bruikbaarheid, schaalbaar-
heid, fouttolerantie enzovoort, is gezien de staat waarin de technologieën zich bevinden, geen
evidentie.
5.5.8 De toekomst
De snelle ontwikkeling van het internet en de integratie ervan in onze fysieke wereld leidt tot
een transformatie van een Cyber-Physical systeem 32 naar een Cyber-Physical-Social systeem
waarbij de menselijke factor in rekening wordt gebracht. Deze paradigm shift heeft diepgaande
gevolgen voor de maatschappij. In deze nieuwe, parallelle maatschappij worden centrale au-
toriteiten weggehaald, en contracten worden via blockchain gedecentraliseerd en automatisch
uitgevoerd, op een zodanige wijze dat er moeilijk mee geknoeid kan worden. Er zijn geen
tussenpersonen meer, zoals bijvoorbeeld financiële instellingen, wat men desintermediatie
noemt.
„Policies for boosting DLTs in Europe: the resolution emphasised that the Union has an
excellent opportunity to become the global leader in the field of DLT. Any regulatory
approach toward DLT should be innovation-friendly, should enable passporting, and should
be guided by the principles of technology neutrality and business-model neutrality.
Parliament stressed that the Union should not regulate DLT per se, but should try to
remove existing barriers to implementing blockchains, and it welcomed the Commission’s
approach of following a use-case method in exploring the regulatory environment around
the use of DLT (...)” (eigen nadruk)
Andere desintermediërende business modellen, zoals Uber en AirBnB, hebben al geleid tot
discussies en bijkomende regulering. Het is duidelijk dat de huidige maatschappij in het
kader van blockchain poogt om een evenwicht te vinden in deze paradigm shift, en vooral
zoekt naar een wijze waarop zulke technologieën integreren zonder een totale disruptie.
5.5.9 Conclusie
Blockchain heeft het potentieel om de traditionele industrie om te vormen dankzij zijn basis-
kenmerken: decentralisatie, persistentie, anonimiteit en controleerbaarheid. Maar er zijn een
hele reeks uitdagingen op elk van die vlakken om de technologie verder uit te bouwen en rijp
te maken.
APPENDIX A
Practicum: SQL
A.1 Introductie
Databanken zijn aanwezig in vele informatiesystemen. We bespraken reeds hun rol in o.a.
TPS en MIS systemen. In dit praktijkgedeelte bekijken we de Structured Query Language
(SQL), een taal om data in relationele databanken aan te maken, te bewerken en op te vragen.
Relationele databanken geven data intern weer als een relationele tabel. We gebruiken hier
dus dezelfde terminologie als in deelparagraaf 1.2.4.
SQL is een declaratieve taal voor DataBase Management Systems (DBMS), die het beheer
van databases mogelijk maken. De taal is ontwikkeld door IBM in de jaren ’70, maar is in de
jaren ’80 gestandaardiseerd. Dit heeft ertoe geleid dat verschillende organisaties databases
aanbieden die via SQL te beheren zijn. Voorbeelden hiervan zijn Oracle databases, Microsoft
Access, of de open source MySQL database.
Talen voor het beheer en gebruik van databases worden opgedeeld in verschillende delen. Elk
gedeelte bevat verschillende commando’s die ervoor zorgen dat bepaalde taken uitgevoerd
kunnen worden. De belangrijkste delen zijn:
Data Query Language (DQL): Om bepaalde data op te vragen, wordt het SELECT com-
mando gebruikt. Dit is het enige commando in de DQL.
A.2 Data Definition Language 143
Daarnaast bestaat SQL ook nog uit andere delen, zoals de Data Control Language (DCL)
om de toegangsrechten van gebruikers tot de data vast te leggen en de Transaction Control
Commands (TCL) om groepen van commando’s die samen uitgevoerd moeten worden op te
slaan. Bovendien kunnen andere talen dan SQL nog meer delen toevoegen, zoals voor de
optimalisatie van de performantie van de database. Deze onderdelen vallen echter buiten de
scope van deze cursus.
Bij het beschrijven van de syntaxis van SQL commando’s worden volgende afspraken gevolgd:
• De namen van variabelen worden in kleine letters geschreven. Deze dienen ingevuld te
worden om een concrete en uitvoerbare opdracht te verkrijgen.
• Op het einde van elk commando wordt een puntkomma geschreven om aan SQL aan te
geven dat het commando beëindigd is.
Het gedeelte van SQL dat gebruikt wordt om de structuur van data in de database aan te
maken wordt de Data Definition Language (DDL) genoemd. De structuur van de data wordt
beschreven op drie manieren.
De eerste manier is het definiëren van de tabellen. Per tabel wordt hiervoor het commando
CREATE TABLE gebruikt. In dit commando wordt de naam van een tabel vastgelegd, die be-
schrijft waarover de tabel data bevat en de lijst van attributen die elk record van die tabel
moet bevatten.
De tweede manier om structuur in de data aan te brengen is het definiëren van het data-
type dat voor een bepaald attribuut gebruikt moet worden. Mogelijke datatypes worden
weergegeven in tabel A.1.
De derde manier om structuur aan te brengen is door per attribuut bijkomende constraints
of beperkingen op te leggen. Deze beperken de waarde die aan dat attribuut gegeven kan
worden.
Een primary key geeft aan welk attribuut van een record zorgt voor de identificatie ervan.
Twee records in één tabel kunnen niet dezelfde waarde hebben voor dat attribuut. Hier-
voor kan ofwel een apart id-attribuut aangemaakt worden, een bestaand attribuut gebruikt
A.2 Data Definition Language 144
Type Verklaring
int(lengte) Een integer (geheel getal). De lengte geeft het
aantal bytes weer die in het geheugen gereser-
veerd worden voor één waarde van dit attri-
buut.
varchar(lengte) String.
double(lengte,decimalen) Kommagetal, met het aantal gereserveerde by-
tes en het aantal decimalen.
date Datum, in het formaat YYYY–MM-DD.
blob Een Binary Large Object.
worden, of een combinatie van verschillende attributen gebruikt worden. Elke tabel moet
juist één primary key constraint hebben. Een primary key wordt aangegeven door PRIMARY
KEY achter het datatype van de parameter te plaatsen, of door achter de lijst van attributen
PRIMARY KEY(attribuut1[,attribuut2,...]) op te nemen.
Een foreign key wordt in een tabel gebruikt om naar records van een andere tabel te ver-
wijzen. Op deze manier worden verbanden tussen tabellen gemaakt. Een attribuut dat een
foreign key is, moet naar de primary key van een andere tabel verwijzen. Een foreign key
wordt weergegeven door achter de attributenlijst FOREIGN KEY (attribuut) REFERENCES tabel-
naam(primary key) toe te voegen. Het aanduiden van een attribuut als foreign key legt een
beperking aan dat attribuut op, in de zin dat enkel bestaande waarden van de primary key
waarnaar verwezen wordt, ingegeven kunnen worden.
Andere beperkingen die opgelegd kunnen worden aan attributen zijn NOT NULL, dat aangeeft
dat een parameter niet leeg gelaten mag worden en UNIQUE, dat aangeeft dat een parameter
uniek moet zijn (m.a.w., er mogen geen twee records bestaan die dezelfde waarde voor dit
attribuut hebben).
In het onderstaand voorbeeld is een CREATE TABLE commando uitgewerkt voor een tabel Ver-
kopen.
In deze tabel worden de gegevens bijgehouden van een retailbedrijf. Per verkoop wordt een
unieke identifier bijgehouden (verkoopId), de naam van de klant (klantNaam), de naam van
het product dat verkocht werd (productNaam), het aantal stuks dat van dat product verkocht
werd (aantal), de stukprijs van het product (prijsPerEenheid), de datum van de verkoop
(datumVerkoop) en de contactpersoon die de klant geholpen heeft. De naam van de klant,
de naam van het product en het aantal verkochte stuks moeten steeds opgeslagen worden.
De stukprijs van het product en de datum van de verkoop worden niet steeds ingegeven.
A.3 Data Manipulation Language 145
Bovendien kan het zijn dat een klant niet geholpen werd door een bepaalde contactpersoon.
In dat geval wordt het attribuut contactPersoon ook niet ingevuld.
Om de definitie van een tabel te wijzigen, wordt het commando ALTER TABLE gebruikt. Hier-
mee kunnen bv. datatypes van attributen aangepast worden, of nieuwe attributen worden
toegevoegd. Om een tabel te verwijderen, wordt DROP TABLE gebruikt.
De syntaxis van het INSERT commando laat zien dat de definitie van een tabel gekend moet
zijn tijdens het ingeven van de data. In de attributenlijst worden de attributen ingegeven in
de volgorde waarin de waarden voor de attributen worden opgelijst:
Onderstaand voorbeeld laat zien hoe, in de tabel die hiervoor gedefinieerd werd, twee records
worden toegevoegd.
Om gegevens te verwijderen, wordt het DELETE commando gebruikt. De voorwaarde bij dit
commando laat toe de rijen op te geven die verwijderd moeten worden.
Dit commando verwijdert bv. alle rijen waarvan het attribuut verkoopId de waarde 1 heeft.
Om gegevens aan te passen, wordt het UPDATE commando gebruikt. Bij dit commando worden
alle rijen aangepast die voldoen aan de voorwaarde. Van deze rijen krijgen de opgelijste
attributen de nieuwe waarde die in het commando opgegeven wordt.
A.4 Data Query Language 146
1 UPDATE tabelnaam
2 SET attribuut = waarde
3 WHERE voorwaarde;
Onderstaand commando verandert bv. de naam van de klant in alle rijen waarvan het ver-
koopId 2 is.
1 UPDATE verkopen
2 SET klantNaam = "MediaCorp Belgium"
3 WHERE verkoopId = 2;
De Data Query Language bevat het SELECT commando om gegevens uit de tabellen op te
vragen. Een specifiek gebruik van dit commando wordt een query genoemd. Het opzetten
van zulke queries is nodig om juist die data te selecteren die bruikbaar is om een bepaalde
bedrijfskundige vraag te beantwoorden.
De syntax van het SELECT commando toont met welke verschillende opties gegevens uit een
tabel opgevraagd kunnen worden.
Het resultaat van deze query geeft voor alle records in de tabel (rijen) alle attributen (ko-
lommen) weer. Gezien het grote aantal gegevens die een tabel dikwijls bevat, moeten deze
gegevens gefilterd worden.
Via een zogenaamde projectie kan het aantal attributen dat getoond wordt beperkt worden.
Hiertoe worden de attribuutnamen die getoond moeten worden expliciet opgenomen in de
query. Zo geeft de volgende query enkel de klantnamen uit de tabel Verkopen weer.
Daarnaast kunnen ook de records die in het resultaat opgenomen zijn beperkt worden via
een selectie. Dit gebeurt via de toevoeging van een WHERE-zin, waar een voorwaarde wordt
gespecificeerd. Die voorwaarde is een uitdrukking waarvan de uitkomst TRUE of FALSE
is. Voor elke rij die weergegeven kan worden, wordt deze voorwaarde getest. Enkel als de
conditie TRUE oplevert, wordt de rij uiteindelijk in het resultaat opgenomen.
De meeste voorwaarden worden met de vergelijkingsoperatoren gemaakt: =, >, <, =>, =<
en <>. De volgende query geeft bv. alle records van de klant ‘RedBlue’ weer, dat wil zeggen,
alle records waarvoor het attribuut klant gelijk is aan ‘RedBlue’:
Deze query geeft enkel die verkopen van meer dan eenheden, ofwel: enkel die records waarvoor
het attribuut aantal groter is dan 1000:
Daarnaast kan IS NULL gebruikt worden om die records te selecteren waarvan een bepaald
attribuut leeg is. Deze query zoekt alle records op waarvoor geen contactpersoon is opgegeven:
IS NOT NULL wordt gebruikt om juist die records te selecteren waarvan een bepaald attribuut
niet leeg is:
IN wordt gebruikt om te kijken of de waarde van een attribuut voorkomt in een bepaalde
groep waarden. De volgende query selecteert die records waarvan de productNaam ‘Samsung
980 Pro SSD 1TB’ of ‘Samsung 990 SSD 2TB’ is.
Om selecties te maken waar geen exacte string wordt vergeleken, maar waar een patroon
opgegeven wordt, kan LIKE gebruikt worden. Het patroon wordt uitgedrukt door gebruik te
maken van % als wildcard voor verschillende karakters, of _ om juist één karakter weer te
geven. Deze query geeft alle records waarvoor de productNaam begint met ‘Sony’.
BETWEEN wordt gebruikt om waarden binnen een bepaald bereik te selecteren. Zo geeft de
volgende query alle verkopen tussen 1 mei en 15 juni 2024 weer (alternatieve omschrijving:
in mei of juni).
Combinaties van condities kunnen gemaakt worden met logische operatoren: AND, OR en
NOT. Hierdoor kunnen complexere selecties van data gemaakt worden. Bijvoorbeeld: alle
SSD’s voor minstens 350 stuks per verkoop.
Indien selecties en projecties op zich uitgevoerd worden, kan de volgorde van de records in
het resultaat onduidelijk zijn. De toevoeging van ORDER BY gevolgd door een attribuut laat
toe de volgorde van de records te bepalen. Via ASC (ascending) of DESC (descending) kan
aangegeven worden of de records volgens oplopende of aflopende waarden van dat attribuut
worden gerangschikt (indien niets wordt opgegeven, wordt standaard ASC gebruikt). Meerdere
attributen kunnen opgegeven worden om binnen een set van records met dezelfde waarden
voor een attribuut nogmaals een sortering uit te voeren. Zo worden in het resultaat van
volgende query de records eerst gesorteerd of klantNaam en daarbinnen op productNaam.
A.4.3 Aggregaat-functies
Een aggregaat-functie wordt gebruikt om informatie van verschillende records samen te vat-
ten.
Om het aantal records in een tabel te kennen, wordt COUNT(attribuut) gebruikt. COUNT telt
alle records waarvan het opgegeven attribuut niet leeg is. Onderstaande query geeft bijv. het
aantal records waarbij een contactpersoon opgegeven is.
COUNT wordt vaak gebruikt met * om alle attributen van een record aan te duiden. Aangezien
een record in een relationele tabel steeds tenminste één attribuut moet ingevuld hebben (de
primary key), telt dit commando alle records in een tabel.
Door DISTINCT toe te voegen voor een attribuut, wordt enkel het aantal verschillende waarden
voor dat attribuut geteld. De volgende query geeft het aantal verschillende bedrijven die als
klant zijn opgenomen.
De volgende query geeft respectievelijk het minimum, maximum en gemiddeld aantal pro-
ducten dat in een verkoop gekocht werd weer:
Het commando GROUP BY wordt gebruikt om meerdere records te groeperen op basis van hun
attribuut-waarden. Een groep bestaat uit alle records met dezelfde waarde voor alle attri-
buten in de GROUP BY zin. Per groep wordt in het resultaat slechts één rij weergegeven. Alle
attributen die getoond worden (m.a.w., die bij de projectie gespecificeerd worden), kunnen
dus ook best bij GROUP BY voorkomen. Deze attributen zullen immers voor alle records in de
groep dezelfde waarde hebben. Bij attributen die verschillende waarden hebben bij de records
in de groep, is de getoonde waarde niet representatief voor de hele groep. Zulke attributen
zouden dus niet opgenomen mogen worden bij de projectie.
Interessante toepassingen zijn het combineren van GROUP BY met aggregaat-functies. Op deze
manier kan een samenvatting van de waarden van een bepaalde groep records bekomen wor-
den. De volgende query groepeert de records per productNaam en berekent per groep het
totaal aantal verkochte producten.
De HAVING zin wordt gebruikt om restricties op te leggen aan groepen. Dit kan niet met de WHERE
zin, aangezien deze de conditie per rij controleert. Daarom komt de HAVING zin enkel voor in
combinatie met GROUP BY en moet er net achter geplaatst worden. De werking van de HAVING zin
is verder gelijkaardig aan het gebruik van WHERE: er wordt een conditie getest die als uitkomst
TRUE of FALSE heeft. In de conditie kunnen logische operatoren, vergelijkingsoperatoren en
andere operatoren zoals LIKE, IN en BETWEEN voorkomen. De conditie wordt bij HAVING echter
pas getest na het groeperen. Bij de WHERE-zin gebeurt dit voor het groeperen. Zo geeft de
volgende query enkel die producten weer waarvan in totaal meer dan 1000 eenheden verkocht
zijn.
A.4 Data Query Language 150
A.4.5 Joining
De voorgaande commando’s kunnen uitgevoerd worden op één enkele tabel. Het samenvoe-
gen van alle data in één tabel zorgt echter voor verschillende nadelen. Zo wordt in deze tabel
veel data gedupliceerd. Dit wordt data redundantie genoemd. De prijs per eenheid product
wordt bv. voor elk product verschillende keren opgeslagen. Hierdoor kunnen verschillende
eenheidsprijzen lijken te bestaan wanneer er bij het invoeren van gegevens fouten zijn ge-
maakt. Bovendien moet bij het updaten van een eenheidsprijs ervoor gezorgd worden dat
deze prijs op alle plaatsen waar hij voorkomt gëupdatet wordt.
Om deze data redundantie te voorkomen, moeten gegevens over verschillende tabellen ge-
splitst worden. Zo kunnen de gegevens over producten opgeslagen worden in een aparte
tabel, Producten. Gegevens zoals de eenheidsprijs moeten dan slechts één keer (in één re-
cord) opgeslagen worden. Verkopen die over een bepaald product gaan, kunnen dan aan de
gegevens over dat product geraken door naar het specifiek product-record in de tabel Produc-
ten te verwijzen. Dit gebeurt door het aanmaken van een foreign key in de tabel Verkopen.
Gelijkaardig kunnen de gegevens van klanten in een aparte tabel Klanten opgeslagen worden.
Informatie zit in een database dus meestal verspreid over verschillende tabellen. Om in-
formatie over gegevens uit verschillende tabellen op te kunnen vragen, voegt men meerdere
tabellen samen via een zogenaamde join. Wij bekijken hier de zogenaamde equi join. Hierbij
worden records uit meerdere tabellen samengevoegd op basis van gelijke waarden tussen een
of meerdere velden in beide tabellen. Deze komt voornamelijk voor als de primaire sleutel
van een bepaalde tabel gebruikt wordt als een foreign key in een andere tabel.
1 SELECT kolomnamen
2 FROM tabel1, tabel2
3 WHERE tabel1.kolom1 = tabel2.kolom2
Attributen die bij de join-conditie gebruikt worden moeten niet per se bij de projectie gebruikt
worden. Indien een attribuut-naam in verschillende kolommen voorkomt, moet verduidelijkt
worden welk attribuut juist bedoeld wordt. Hiervoor kan de naam van de tabel voorgevoegd
worden aan de attribuut-naam, van elkaar gescheiden door een punt.
Zo voegt de volgende query de tabellen verkopen en klanten samen. Hierbij verwijst klan-
ten.klantId naar het attribuut klantId in de tabel klanten (primary key) en verkopen.klantId
naar het attribuut klantId in de tabel verkopen (foreign key).
Het stappenplan kan geïllustreerd worden aan de hand van de volgende bedrijfskundige vraag:
Geef de namen van de klanten die na 1 maart 2024 voor meer dan 20.000 euro producten
hebben aangekocht.
In de eerste twee stappen moet bekeken worden in welke tabellen de relevante gegevens
zich bevinden. Indien gegevens uit meerdere tabellen relevant zijn, moeten deze gejoind
worden. Voor de voorbeeldvraag zullen gegevens nodig zijn van de tabellen verkopen (om de
juiste verkopen te selecteren), klanten (de naam van de klanten is gevraagd) en producten
(de prijzen van producten zijn nodig voor de berekening van de totale aankoopprijs). De
gegevens van deze tabellen worden als volgt geselecteerd (stap 1):
A.4 Data Query Language 152
1 SELECT *
2 FROM producten, klanten, verkopen;
De join van de tabellen wordt bekomen door de volgende uitbreiding (stap 2):
1 SELECT *
2 FROM producten, kanten, verkopen
3 WHERE producten.productId = verkopen.productId
4 AND klanten.klantId = verkopen.klantId;
5
In de derde stap worden de records geselecteerd die relevant zijn voor de specifieke vraag. In
dit geval zijn dit enkel de records van de verkopen die na 1 maart 2024 uitgevoerd zijn. Deze
selectie wordt als volgt toegevoegd:
1 SELECT *
2 FROM producten, kanten, verkopen
3 WHERE producten.productId = verkopen.productId
4 AND klanten.klantId = verkopen.klantId
5 AND datum > "2024-03-01";
In de vierde stap wordt gekeken of er records gegroepeerd moeten worden. Bij deze vraag
wordt een criterium opgelegd voor groepen records per klant: het totaalbedrag van een groep
van deze records moet groter zijn dan 20.000. Om deze voorwaarde te kunnen testen, moeten
de records dus per klant gegroepeerd worden (vierde stap). We berekenen deze som door van
elke verkoop het aantal verkochte producten te vermenigvuldigen met de prijs per eenheid en
deze op te tellen. De voorwaarde dat deze som groter moet zijn dan 20.000, is de restrictie
op groepsniveau (vijfde stap). Dit levert de volgende query op:
1 SELECT *
2 FROM producten, klanten, verkopen
3 WHERE producten.productId = verkopen.productId
4 AND klanten.klantId = verkopen.klantId
5 AND datum > "2024-03-01"
6 GROUP BY klantId
7 HAVING sum(prijsPerEenheid * aantal) > 20000;
In de zesde stap worden de attributen gekozen die weergegeven moeten worden. We kiezen
hier de namen van de klanten en geven ook de som weer van hun aankopen na 1 maart 2024:
Tenslotte sorteren we de resultaten op basis van de grootte van de som van de aankopen.
Aangezien deze som op meerdere plaatsen in de query gebruikt wordt, kan een alias gecreëerd
worden (totaalSom) die gebruikt kan worden om naar deze som te verwijzen. Hiertoe zetten
we de naam van de alias (totaalSom) achter het attribuut of de uitdrukking waarnaar het
verwijst: