Table of Contents

Concern Extraction and Composition in FuseJ and JAsCo

Begeleider(s): Davy Suvée, Wim Vanderperren
Promotor: Viviane Jonckers

Behoort tot Thesis and/or Apprenticeship Proposals 2005-2006

Onderwerp

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.

Stage & thesis

De stage&thesis zijn in dit voorstel sterk gelinkt en zullen vloeiend in elkaar overgaan. De stage zelf bestaat uit 2 subtaken:

  1. Op dit moment is er reeds support aanwezig voor de JAsCo aanpak binnen de CME en biedt deze voornamelijk ondersteuning voor het identificeren en encapsuleren van JAsCo aspecten. De 1ste doelstelling van de stage is dan ook, om net zoals voor JAsCo, een CME plugin te implementeren voor de FuseJ AOSD aanpak.
  2. Zoals eerder vermeld biedt de CME nog geen support voor het extraheren en combineren van aspecten. De 2de doelstelling voor de stage is het ontwerpen en ontwikkelen van een extractie- en combinatie framework voor aspecten binnen de CME, die kan aangewend worden worden om crosscutting eigenschappen te extraheren naar equivalente aspect/component/connector entiteiten in JAsCo of FuseJ. Hierbij het is van belang dat dit framework plugin-gebaseerd is, zodat deze op een eenvoudige manier kan uitgebreid worden om ook andere aspect-georiënteerde technologieën te ondersteunen.

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.

Vereiste voorkennis

Referenties