Begeleider(s): Davy Suvée, Wim Vanderperren
Promotor: Viviane Jonckers
Behoort tot Thesis and/or Apprenticeship Proposals 2005-2006
Aspect-Georiënteerde Software Ontwikkeling (Engels: Aspect-Oriented Software Development of afgekort:AOSD) is een nieuw programmeerparadigma dat rond 1997 ontstaan is [1,2]. AOSD argumenteert dat sommige eigenschappen van een applicatie niet kunnen gemodulariseerd worden door gebruik te maken van huidige software ontwikkelingsmethoden. De implementatie van deze eigenschappen zit verspreid langsheen verschillende modules in het systeem. Dezelfde of heel gelijkaardige logica wordt hierdoor herhaalt in verschillende modules, wat code duplicatie tot gevolg heeft. Door deze code duplicatie is het niet evident om deze eigenschappen toe te voegen, aan te passen of te verwijderen. Het doel van aspect-georiënteerde software ontwikkeling is om een betere scheiding van bekommernissen te bekomen. “Crosscutting” eigenschappen worden in een aparte module beschreven, nl. een aspect, zodat voor het toevoegen, wijzigen en verwijderen van deze eigenschappen niet aan de andere modules binnen het systeem geraakt dient te worden. Typische voorbeelden van aspecten zijn logging en synchronisatie. De in onafhankelijke modules gescheiden aspecten moeten natuurlijk bij de applicatie gevoegd kunnen worden om nuttig te zijn. Dit proces wordt 'weaven' genoemd.
De JAsCo [3] en FuseJ [4] aspect-georiënteerde technologieën, beiden ontwikkeld aan het SSEL lab, recupereren het aspect georiënteerde idee binnen een component gebaseerde context. JAsCo introduceert een speciaal aspect-construct, die toelaat om crosscutting eigenschappen onafhankelijk te beschrijven van de componenten waarbinnen ze geïntegreerd worden. Connectoren beschrijving vervolgens de concrete toepassingen van het aspect binnen het systeem. FuseJ gaat nog een stapje verder door zowel aspecten als componenten te beschrijven als reguliere, onafhankelijk componenten, waarbij connectoren vervolgens de interacties (crosscutting of regulier) beschrijven.
Om een eenvoudige integratie van JAsCo en FuseJ binnen het software ontwikkelings proces te bekomen, word er voor beiden aanpakken tool support ontwikkeld binnen de Eclipse [5] ontwikkelingsomgeving. Eclipse is een universeel platform waarin tool support voor andere methodologieën op een eenvoudige manier geïntegreerd kunnen worden, aangezien het een open structuur aanbiedt die uitgebreid kan worden door middel van nieuwe plugins. IBM heeft onlangs het CME-project [6] opgestart. De CME (Concern Manipulation Environment), zelf een plugin voor Eclipse, heeft als doel het aanbieden van een geïntegreerde aspect-georiënteerde software ontwikkelingsomgeving. De CME biedt support voor het identificeren, encapsuleren, extraheren en combineren van zogenaamde crosscutting concerns. De eigenlijke realisatie van de CME ondersteund voorlopig echt enkel het identificeren en encapsuleren van aspecten. De CME heeft net zoals Eclipse, een open structuur. Dit betekent dat iedere AOSD approach een eigen uitbreiding kan toevoegen aan de CME. Hierdoor wordt de CME beschouwd als de “Eclipse” voor AOSD.
De stage&thesis zijn in dit voorstel sterk gelinkt en zullen vloeiend in elkaar overgaan. De stage zelf bestaat uit 2 subtaken:
De thesis gaat verder op het onderwerp van de stage: tijdens de stage wordt verwacht dat een eerste prototype ontworpen en ontwikkeld is van het framework voor extractie en combinatie van aspecten. De doelstelling van de thesis is dit prototype verder uit te werken. De aandacht gaat voornamelijk uit naar de extractie, waar verschillende problemen dienen opgelost te worden, zoals: “Hoe neem ik lokale variabelen mee naar een aspect?”, “Hoe moeten control-flow structuren worden geëxtraheerd?”, … Ook hebben deze problemen zelf nog eens onderlinge implicaties op elkaar.