Modulair Redeneren in Aspectgeoriënteerde Talen

Datum: 10 oktober 2014

Locatie: Campus Middelheim - Lokaal G0.06 - Middelheimlaan 1 - 2020 Antwerpen

Tijdstip: 16 uur

Organisatie / co-organisatie: Departement Wiskunde-Informatica

Promovendus: Tim Molderez

Promotor: Dirk Janssens

Korte beschrijving: Doctoraatsverdediging Tim Molderez - Departement Wiskunde-Informatica

Abstract: In software systemen is er vaak bepaalde functionaliteit die inherent moet kunnen interageren met vele andere delen van het systeem, zoals bijvoorbeeld de authenticatie van gebruikers. Om zulke functionaliteit netjes te kunnen afscheiden in aparte modules, introduceren aspect-georiënteerde programmeertalen een extra soort van module, genaamd aspecten. Doordat aspecten impliciet het gedrag van meerdere andere modules kunnen wijzigen, is het mogelijk dat die modules niet meer het verwachte gedrag hebben.

Deze thesis stelt een aanpak voor om modulair redeneren mogelijk te maken binnen aspect-georiënteerde talen, om op die manier onverwacht gedrag te voorkomen. Met deze aanpak is het voldoende om het gedrag van een module te begrijpen door enkel naar de module zelf te moeten kijken, of naar de modules waar deze expliciet naar verwijst. Onze aanpak bestaat uit twee delen: Ten eerste, opdat een aspect impliciet kan blijven werken, presenteren we een aantal regels waaraan de specificaties van dit aspect zich moeten voldoen. Ten tweede, indien een aspect niet aan deze regels kan voldoen, dan kan men de werking van dit aspect expliciet maken aan de hand van een eenvoudige specificatieclausule.

De aanpak is uitgewerkt in de context van een eigen minimale, maar representatieve aspect-georiënteerde programmeertaal. We tonen aan dat de aanpak correct is voor specificaties in de vorm van pre- en postcondities. We voorzien ook een statische en een dynamische manier om te kunnen nagaan of de aanpak juist is toegepast. Tenslotte introduceren we een analyse om frame condities af te leiden, welke beschrijven wat er mogelijk gewijzigd kan worden door een stuk code. Deze analyse is vervolgens gebruikt om bestaande programma's te bestuderen en na te gaan hoe vaak aspecten meer wijzigen dan toegelaten, opdat modulair redeneren mogelijk blijft.