2453 articles  [version française]
Detailed view Habilitation à diriger des recherches
Université Pierre et Marie Curie - Paris VI (13/12/2005), Jean-Marc Geib (Pr.)
Attached file list to this document: 
PDF
hdr.pdf(917 KB)
ANNEX
expose.pdf(117.6 KB)
Réflexivité, aspects et composants pour l'ingénierie des intergiciels et des applications réparties
Lionel Seinturier1

Les intergiciels et les applications réparties se caractérisent par un nombre élevé de fonctionnalités à intégrer pour aboutir à un logiciel fini. Par ailleurs ils s'appliquent à de nombreux contextes d'exécution, de l'embarqué fortement contraint aux systèmes d'information ouverts sur l'Internet. Cette diversité engendre des besoins multiples allant, pour n'en citer que quelques uns, de la tolérance aux fautes, aux communications distantes ou à l'ordonnancement sous contrainte. Ce mémoire porte sur l'ingénierie des intergiciels et des applications réparties. Notre objectif est de proposer des solutions pour l'intégration des différentes fonctionnalités de ces logiciels. Pour cela, les études décrites dans ce mémoire portent sur trois techniques principales : la réexivité, les aspects et les composants. Dans un premier axe, nous abordons la conception et la réalisation de service pour des applications réparties CORBA à l'aide de la réflexivité. Nous avons proposé un service d'observation d'exécution d'exécutions réparties. Nous montrons que la réflexivité permet de séparer clairement les différentes préoccupations. Les applications à observer et le service sont clairement découplés. L'intégration peut alors être faite de façon transparente. Nous montrons que le coût des mécanismes réflexifs est faible par rapport aux coûts globaux de communication dans un environnement distribué CORBA. Dans un deuxième axe, nous nous focalisons sur les techniques à base d'aspect. Nous présentons JAC (Java Aspect Components) qui est une plate-forme pour la programmation d'applications orientées aspect. JAC propose la notion de tissage dynamique qui permet d'adapter au cours de l'exécution une application en ajoutant ou en retirant des aspects. En terme d'intergiciel et de répartition, JAC apporte la notion de conteneur ouvert à objets et à aspects et la notion de coupe distribuée. Finalement, nous abordons les techniques à base de composant. L'objectif est de fournir un cadre uniant les styles de développement à base d'aspect et de composant. Une étude préliminaire compare le développement d'un service de partage de documents répliqués avec des frameworks à base de composants (Fractal et Kilim) et un framework AOP (JAC). Nous montrons les forces et les faiblesses de chacun des styles et en tirons des conclusions pour étendre le modèle de composants Fractal en lui adjoignant la notion d'aspect. Dans un second temps, nous montrons que les aspects peuvent également être bénéfiques à l'ingénierie du modèle de composant lui-même. Nous aboutissons ainsi à une solution dans laquelle les aspects contribuent à la fois à la mise en oeuvre des mécanismes internes du modèle et à son interface de programmation externe.
1:  LIP6 - Laboratoire d'Informatique de Paris 6
composant – aspect – refléxivité – intergiciel – répartition

Reflection, Aspects and Components for Engineering Middleware and Distributed Applications
Middleware and distributed applications are characterized by a high number of functionalities which must be integrated. Furthermore, they deal with various execution contexts, from constrained embedded systems to information systems reachable through the Internet. This diversity generates many requirements such as, just to name a few, fault-tolerance, remote communications or scheduling. This document is about the software engineering of middleware and distributed applications. Our goal is to propose solutions for integrating the functionalities needed in these contexts. This document reports on three main techniques which have been studied : reection, aspects and components. The first chapter deals with the design and the implementation of a CORBA service based on the notions of reflection. We propose a service for observing distributed runs. We show that reflection allows separating clearly the various concerns. The applications to be observed and the service are clearly decoupled. The integration can then be performed seamlessly. We show that the cost of reflection is low compared to the costs induced by distributed communications in a CORBA environment. The second chapter studies aspect-oriented techniques. We present JAC (Java Aspect Components), a platform for programming aspect-oriented applications. JAC proposes the notion of dynamic weaving which allows adapting at runtime an application by adding or removing aspects. Concerning middleware and distribution, JAC introduces the notion of an open container for objects and aspects and the notion of a distributed pointcut. Component-based software engineering is addressed in the third chapter. The goal is to propose a framework which unifies aspects and components. A preliminary study compares, with an application for sharing replicated documents, two component frameworks (Fractal and Kilim) and an AOP framework (JAC). We report on the strengths and the weaknesses of these three approaches and, based on this experience, we propose to extend the Fractal component model with the notion of an aspect. Next, we show that aspects can also improve the engineering of the component model. We then propose a solution where aspects are used both for the internal implementation of the component model and for the external application programming interface.
component – aspect – reflection – middleware – distirbution