Abstract
In deze moderne tijd wordt het kunnen localiseren en verkrijgen van de juiste informatie
steeds belangrijker. Wil je goede service leveren of de concurrent aftroeven, dan zul je
slimmer moeten zijn, en zorgen dat je de belangrijkste informatie (snel) tot je beschik-
king hebt. Met name de elektronische informatieverwerking neemt een belangrijke plaats
in;
... read more
denk hierbij aan reserveringssystemen voor vliegtuigen en aan nieuwsnetwerken. Dit
zijn grote, vaak wereldwijde netwerken waar honderden of zelfs duizenden computers aan
gekoppeld zijn. Deze computers verzenden, ontvangen en presenteren boodschappen.
Om het informatieverkeer over zo'n netwerk ordelijk te laten verlopen zijn er regels nodig:
het schaarse produkt (toegang tot de diensten van het netwerk) moet `eerlijk' verdeeld
worden. Het mag bijvoorbeeld niet mogelijk zijn dat dezelfde vliegtuigstoel gelijktijdig
vanuit twee plaatsen wordt gereserveerd. Maar er mag ook geen \na u { na u" situatie
ontstaan waarbij twee klanten van het netwerk eindeloos op elkaar blijven wachten. Verder
zal er gezorgd moeten worden voor adequate oplossingen wanneer er problemen optreden
in het netwerk, zoals het uitvallen van een verbinding. Daarom zal een netwerk, ongeacht
de grootte, moeten werken volgens regels welke zijn vastgelegd in computerprogramma's:
zogenaamde netwerkprotocollen. Omdat we te maken hebben met meerdere computers in
een netwerk, zijn deze protocollen verdeeld (gedistribueerd) over de verschillende compu-
ters, en spreken we van gedistribueerde protocollen. De doelstelling van het onderzoek dat
in dit proefschrift wordt gepresenteerd is het ontwikkelen van een rekenmethode (calculus)
om dit soort gedistribueerde protocollen op elegante en correcte wijze te kunnen ontwerpen.
Waarom een formele rekenmethode? Het menselijk verstand is in het algemeen niet in staat
om de complexiteit die ontstaat bij het ontwerpen van programma's te overzien. Daarom
moeten er hulpmiddelen geleverd worden om programma's te kunnen ontwerpen; in het
bijzonder als het gedistribueerde programma's betreft. Deze hulpmiddelen kunnen de vorm
krijgen van een verzameling rekenregels om uit een formele beschrijving (specicatie) een
programma af te kunnen leiden. Een complete verzameling van rekenregels en heuristieken
vormt de uiteindelijke calculus.
Een groot probleem is dat voor het berekenen van een gedistribueerd programma vaak
rekening moet worden gehouden met veel verschillende situaties. De reden is simpel: een
groot systeem van computers die met elkaar willen communiceren kent vele verschillende
toestanden. Om het hoofd te kunnen bieden aan al die situaties is het belangrijk dat
irrelevante details van het systeem achterwege gelaten worden. Daarom willen we niet
redeneren over het ontvangen of verzenden van een boodschap, zelfs niet over het ontvangen
of verzenden van een complete stroom boodschappen, maar over het complete gedrag van
een programma in elke willekeurige omgeving. De omgeving wordt bepaald door de andere
programma's in het netwerk.
Vaak kan het gedrag van een programma vastgelegd worden in een verzameling rekenregels
door de interactie met andere (bekende) programma's te geven. Een simpel voorbeeld
daarvan is het karakteriseren van het programma I dat iedere boodschap a binnengekomen
op tijdstip t meteen weer doorstuurt:
Voor alle boodschappen a en tijdstippen t: I:at =at
Hier worden dus afzonderlijke boodschappen genoemd. Beter zou het zijn (maar nog niet
goed genoeg) om I te karakteriseren door te zeggen dat iedere complete invoerstroom f
van boodschappen ook de uitvoer is:
Voor alle stromen van boodschappen f: I:f =f
In dit proefschrift wordt I vastgelegd door het gedrag te geven in iedere willekeurige om-
geving:
Voor alle programma's P: I P = P en P = P I
Deze laatste formulering geeft aan dat I het gedrag van ieder ander willekeurig programma
P ongemoeid laat.
Omdat het gedrag van een groot computernetwerk niet volledig te controleren is (bijvoor-
beeld onvoorspelbaar menselijk gedrag kan een grote rol spelen), moeten we in de calculus
rekening kunnen houden met onbepaald gedrag (non-determinisme). Een van de belang-
rijkste onbepaalde factoren is de tijdsduur: vaak is wel duidelijk welke boodschap verstuurd
is over een verbinding, maar is het onbepaald hoe lang die boodschap er over zal doen.
Een andere onbepaalde factor is dat op de meest willekeurige momenten plotseling een fout
ergens in het systeem kan optreden. Om over dit soort onbepaald gedrag te kunnen rede-
neren, is de calculus in dit proefschrift gebouwd op een zogenaamde relationele calculus.
Deze relationele calculus kan goed overweg met non-determinisme.
Kort overzicht
Het proefschrift bestaat uit vijf delen. Elk deel breidt de calculus verder uit. Tot slot wordt
de calculus gebruikt voor het ontwerpen van een simpel, gedistribueerd protocol voor het
correct verzenden door een zender van boodschappen over onbetrouwbare verbindingen
naar een ontvanger.
In Deel I wordt eerst aangegeven hoe we gedistribueerde systemen willen beschrijven als
invoer/uitvoer-relaties. Vervolgens wordt de relationele calculus gepresenteerd. In deze
relationele calculus wordt, ter verkrijging van een relationele calculus voor het ontwer-
pen van gedistribueerde systemen, meer structuur aangebracht door de constructie van de feedback loop te deni?eren. Er wordt aangetoond dat feedback een aantal `ongezonde'
eigenschappen heeft. Een groot deel van het proefschrift (in het bijzonder Deel III) zal zich
wijden aan het oplossen van deze problemen. Tenslotte wordt het model van de relationele
calculus, waarin veel voorbereidende berekeningen zullen worden uitgevoerd, vastgelegd.
De elementen van dit model, de zogenaamde chronicles, beschrijven complete stromen
boodschappen.
Deel II introduceert twee constructies om chronicles te kunnen manipuleren. De functie
postcompose kan worden gebruikt om functies die werken op afzonderlijke boodschappen
om te zetten in processen die werken op complete stromen van boodschappen. Zo kunnen
we met de optelling + voor natuurlijke getallen een eenvoudig proces beschrijven dat een
complete stroom van paren van natuurlijke getallen omzet in de stroom van sommen van
de paren. Enkele basisprocessen worden met behulp van postcompose gedenieerd en
onderzocht. De functie precompose kan veranderingen aanbrengen in de tijd. Omdat we
in de calculus niet willen redeneren over exacte tijd of tijdsduur, is de functie precompose
geen onderdeel van de uiteindelijke calculus, maar slechts een hulpmiddel om bijvoorbeeld
een (onbepaalde) vertraging te beschrijven.
In Deel I zijn verschillende ongezonde eigenschappen van met name de feedback gesig-
naleerd. Deel III presenteert daarom een nieuwe eigenschap, genaamd causaliteit. Een
proces dat deze eigenschap heeft is gezond in de zin dat er geen boodschappen (van een
bepaald type) geweigerd kunnen worden, en dat huidige uitvoer niet afhangt van huidige
of toekomstige invoer. Dit zijn realistische eigenschappen die niet noodzakelijk gelden voor
ieder proces dat uitgedrukt kan worden in de calculus. Causale processen worden uitvoerig
onderzocht, met name in combinatie met feedback. Het blijkt dat causale processen in een
feedback loop weer een causaal proces opleveren.
Deel IV denieert en onderzoekt, in het model, drie basisprocessen die verschuivingen
kunnen aanbrengen in de tijd. Twee processen drukken de vertraging van een verbinding
uit. Een derde proces heeft de mogelijkheid om de doorvoer van boodschappen af te kap-
pen. Daarna volgen denities van nieuwe processen in termen van de drie basisprocessen.
Het belangrijkste nieuwe proces is de buer, welke gebruikt kan worden voor asynchrone
communicatie.
Tenslotte wordt al het werk van de eerste vier delen samengebracht in de a eiding van
een eenvoudig communicatieprotocol. Daartoe wordt in Deel V eerst getoond hoe de alge-
mene theorie kan worden ge?nstantieerd tot een meer gespecialiseerde theorie. De daarop
volgende a eiding van het communicatieprotocol kenmerkt zich door het abstracte niveau
waarop de verschillende bewijsverplichtingen worden afgehandeld: er wordt slechts gerede-
neerd over processen, niet over (stromen van) boodschappen.
show less