====== Integration of Unified AOP within mainstream Component Models ====== **Advisor(s):** [[about:members:davysuvee|Davy Suvee]], [[about:members:wimvanderperren|Wim Vanderperren]]. **Promotor:** [[SSELMember>VivianeJonckers|Viviane Jonckers]] Part of [[overview|Thesis and/or Apprenticeship Proposals 2006-2007]] ===== Subject ===== Aspect-Oriented Software Development (AOSD) [1,2] is a recent software programming paradigm that aims at providing a better separation of concerns. At its root is the observation that some concerns cannot be cleanly modularized using traditional abstraction mechanisms such as classes/ components. These so-called crosscutting concerns will therefore inevitably appear scattered across different modules of the system, making them difficult to comprehend and maintain. Typical examples of such concerns are tracing, synchronization and transaction management. In order to enable a clean modularization of crosscutting concerns, AOP techniques such as AspectJ [3] or JAsCo [4] introduce the concept of an aspect, in addition to the use of regular classes/components. An aspect defines a set of join points in the target application where advices alter the regular execution. Currently, a wealth of technologies are available that aim at integrating the ideas of both AOSD and Component-Based Software Development (CBSD). Most of these approaches however, consider, treat and implement aspects as different kinds of entities within the application. This explicit distinction between aspects and components however induces several disadvantages. Inherently, the behavior provided by aspects is not that different from regular component behavior. Both implement some functionality required within the application and it is only the way in which they interact with the rest of the software system that differs. The implied crosscutting composition mechanism of current aspect modules however, resides itself tangled with the behavior of the concern, ruling out other ways of integrating its behavior within the application. In addition, the reusability and applicability of existing software components is constrained. The FuseJ research [5] aims at exploring the possibilities and advantages of introducing a symmetric, unified approach towards combining the ideas and concepts of AOSD and CBSD. Instead of introducing and considering aspects as specialized entities, we propose to apply aspect-oriented composition mechanisms upon the existing component constructs. On the one hand, this allows aspects to straightforwardly adopt the same characteristics of components, namely being reusable and independently deployable while at the same time exposing and adhering to a contractually specified interface. On the other hand, the decision whether components should be integrated in a regular or an aspect-oriented manner can be postponed until component composition time. Currently, the FuseJ approach introduces a dedicated component-model and accompanying configuration language. Nowadays however, several mature, feature-rich component models/configuration languages, such as Fractal [6] and ArchJava [7], are already available. The purpose of this thesis is to investigate how the unification ideas proposed by FuseJ can be integrated in these mainstream component-based approaches. ===== Objectives of the Apprenticeship and Thesis ===== The apprenticeship starts by getting acquainted with the research context of this thesis proposal, namely reading up on AOSD and CBSD and exploring the various facets of the FuseJ approach. Depending on the interests of the student, the technical part of the apprenticeship can be: * Extending the current implementation of the FuseJ Eclipse IDE * Implementing a parser for the FuseJ configuration language (as the current implementation employs XML) The aim of the thesis is to investigate how the ideas and principles of FuseJ can be mapped upon a mainstream component model. * Making a requirements analysis of the required features of a component model/configuration language in order to achieve an unification between AOSD/CBSD. * Mapping the ideas and concepts of FuseJ upon a mainstream component model (such as Fractal/ArchJava), possible by extending the component model/configuration language itself. * Provide a proof-of-concept implementation. * Generalize the conclusions towards other component models. ===== Prerequisites ===== * General knowledge of Object-Oriented Software Development * A good understanding of Java is useful ===== Environment ===== System and Software Engineering Lab, Vrije Universiteit Brussel, Brussels, Belgium. ===== References ===== [1] Kiczales, G., Lamping, J., Lopes, C.V., Maeda, C., Mendhekar, A. and Murphy, A. Aspect-Oriented Programming. In proceedings of the 19th International Conference on Software Engineering (ICSE), Boston, USA. ACM Press. May 1997.\\ [2] AOP/AOSD website : http://www.aosd.net\\ [3] AspectJ website: http://www.eclipse.org/aspectj\\ [4] JAsCo website: http://ssel.vub.ac.be/jasco\\ [5] FuseJ website: http://ssel.vub.ac.be/fusej\\ [6] Fractal website: http://fractal.objectweb.org\\ [7] ArchJava website: http://archjava.fluid.cs.cmu.edu\\