Program refinement in UNITY-like environments

Publication date

1995-09-15

Authors

Udink, R.T.

Editors

Advisors

Supervisors

DOI

Document Type

Dissertation
Open Access logo

License

Abstract

Een parallel of gedistribueerd systeem is een systeem waarin meer met elkaar verbonden computers samenwerken. Iedereen komt tegenwoordig, bewust of onbewust, steeds vaker met gedistribueerde systemen in aanraking. Een van de bekendste is wel de geldautomaat waarmee men (bijna) altijd en (bijna) overal ter wereld geld van een bankrekening kan halen. Computers in gedistribueerde systemen moeten met elkaar kunnen communiceren. Dit kan via het telefoonnet, via speciale berglass kabels of zelfs via de satelliet. De infrastructuur voor telecommunicatie en ook de technieken om computers met elkaar te laten communiceren worden beter. Hierdoor wordt het mogelijk grotere en complexere gedistribueerde systemen te bouwen. We zullen steeds afhankelijker worden van deze gedistribueerde systemen en het wordt daarom belangrijker dat deze systemen correct werken. In het menselijk lichaam, en zeker in het menselijk brein, spelen zich een groot aantal parallelle processen af en we schijnen weinig moeite te hebben om deze te controle- ren en beheersen. Het nadenken over gedistribueerde systemen kost ons daarentegen veel moeite, juist omdat in deze systemen meerdere dingen tegelijk gebeuren die elkaar op subtiele wijze be?nvloeden. Opdrachtgevers kunnen hun wensen vaak niet duidelijk verwoorden en door de complexiteit van de meeste gedistribueerde systemen is het vaak moeilijk te bepalen of het uiteindelijke systeem aan de wensen voldoet. Formele, wiskun- dige methoden kunnen hier behulpzaam zijn. Ze kunnen gebruikt worden om systemen duidelijk te speciceren en ze geven middelen om te bewijzen dat een systeem aan zijn specicatie voldoet. Verder kunnen ze een beter inzicht geven in wat een specicatie precies inhoudt en wat er zich mogelijk in een speciek gedistribueerd systeem afspeelt. Dit proefschrift presenteert een wiskundige methode die het ontwerpen en bouwen van gedistribueerde systemen ondersteunt. Bijzonder aan deze methode is dat zij een compositioneel ontwerpproces mogelijk maakt; dit wil zeggen dat onderdelen in het sys- teem onafhankelijk beschreven en gebouwd kunnen worden, waarbij de correctheid van het gehele systeem behouden blijft. Dit kan de ontwikkeling van complexe systemen aanzienlijk vereenvoudigen. We gaan hierbij uit van een bestaand formalisme: UNITY. Het UNITY formalisme is ge?ntroduceerd door Chandy en Misra [CM88] en het is een relatief eenvoudig formalisme voor het ontwerpen van parallelle en gedistribueerde 165?166 Samenvatting systemen. Het bestaat uit twee delen: een programmeertaal en een programma logica. De programmeertaal is beperkt en wordt gebruikt om gedistribueerde systeem te modelleren zonder daarbij allerlei details van een specieke netwerkarchitectuur in ogenschouw te nemen. In de logica kunnen (temporele) eigenschappen worden uitgedrukt en is daarom geschikt om programma's te speciceren en om over programma's te redeneren. Het ontwerpen van een gedistribueerd systeem in UNITY begint met het geven van een specicatie: dit is een verzameling van temporele eigenschappen waaraan het te bouwen systeem moet voldoen. Deze specicatie dient als contract tussen de opdracht- gever en de ontwerper; zij is zo algemeen mogelijk en abstraheert van allerlei details. De ontwerper van het systeem zal vervolgens de specicatie in een aantal stappen ver- jnen waarbij problemen van algoritmische aard worden opgelost. Als een specicatie voldoende uitgekristalliseerd is wordt er een UNITY programma ontwikkeld en bewijst men dat het programma aan de specicatie voldoet. Dit programma moet worden afge- beeld op de specieke netwerkarchitectuur waarvoor men het systeem ontwikkelt. Deze stap is niet formeel: in het UNITY formalisme kan men de correctheid van deze stap niet wiskundig bewijzen. Daarom moet de afbeelding zo eenvoudig mogelijk zijn. Vaak heeft het UNITY programma echter niet de juiste vorm voor een eenvoudige afbeelding. Dan zou het handig zijn als het programma getransformeerd kon worden naar een geschiktere vorm, waarbij de correctheid van het programma natuurlijk weer behouden moet blijven. Dit wordt programmaverjning genoemd en het wordt door het UNITY formalisme niet ondersteund. In dit proefschrift bekijken we hoe programmaverjning aan het UNITY formalisme kan worden toegevoegd. We geven hiervoor verschillende mogelijkheden aan de hand van semantische modellen van UNITY programma's. Deze modellen resulteren in verschillende noties van programmaverjning. Twee van deze noties zijn compositio- neel; dat wil zeggen dat delen van een programma afzonderlijk verjnd kunnen worden zonder dat de correctheid van het hele systeem daarbij in het geding komt. We zullen laten zien dat de compositionele noties in een bepaald opzicht de beste compositionele noties van verjning zijn die we in het UNITY formalisme kunnen bereiken. In dit proefschrift introduceren we tevens het ImpUNITY formalisme, een uitbrei- ding van UNITY. Programma's in UNITY hebben weinig structuur en ook de manier waarop ze kunnen worden samengesteld is beperkt. In het ImpUNITY formalisme is het mogelijk meer structuur aan programma's te geven en ook de manier om programma's samen te stellen is uitgebreider. Zo is het mogelijk om de interferentie van een omge- ving te beperken en een deel van de toestandsruimte voor de omgeving af te schermen. Tevens biedt ImpUNITY een nieuwe manier van communicatie: componenten kunnen met elkaar communiceren via een zogenaamd procedure mechanisme. Deze uitbreidin- gen vergroten de mogelijkheden voor het compositioneel ontwerpen van programma's en kunnen de afbeeldingen van programma's naar verschillende netwerkarchitecturen ver- eenvoudigen. De uitbreidingen worden ook doorgevoerd in de ImpUNITY logica en de?Samenvatting 167 notie van programmaverjning. Net als ImpUNITY programma's ondersteunt de logica een compositionele manier van redeneren en de logica gebruikt worden om componen- ten afzonderlijk te speciceren. ImpUNITYondersteunt een compositionele notie van programmaverjning en een uitgebreide set van programma transformatieregels. In een tweetal case studies laten we zien hoe het ImpUNITY formalisme gebruikt kan worden bij het oplossen van praktische problemen.?168 Samenvatting

Keywords

distributed dataprocessing

Citation