| Publications of year 1999 |
| Thesis |
| Un langage à objets est dit réflexif s'il réifie les entités qui forment les programmes (les méthodes, les classes,...) et celles qui sont responsables de leur exécution (la pile d'exécution, la mémoire,...). La représentation de ces entités sous forme d'objets permet de les manipuler et de les spécialiser via des protocoles qualifiés de protocoles de méta-objets ou MOPs. Dans les langages à classes réflexifs, les classes sont réifiées et sont donc instances d'autres classes : les métaclasses. Ces métaclasses constituent un outil privilégié pour définir et expliciter les propriétés de classe. Pour étudier cet outil, nous proposons un nouveau MOP pour Smalltalk, qui décrit explicitement les mécanismes d'envoi de messages, de construction des instances et d'accès à leurs structures. Cependant, l'utilisation de ce MOP se heurte à deux problèmes : celui de la composition des métaclasses, dès qu'il s'agit d'attribuer plusieurs propriétés à une même classe, et celui de la compatibilité lorsque le couplage entre les liens d'héritage et d'instanciation n'est pas pris en compte à la définition de nouvelles (méta)classes. Nous proposons une solution - basée sur l'héritage - à chacun de ces problèmes. Une application des métaclasses est leur utilisation comme support à la mise en oeuvre de la programmation par aspects (AOP). L'idée maîtresse de ce nouveau paradigme de programmation consiste à introduire une dimension de réutilisation qui complète celle de l'approche objet. Pour ce faire, les logiciels sont découpés en modules orthogonaux, chacun d'eux décrivant un aspect particulier (distribution, concurrence,...). Nous proposons de représenter ces aspects à l'aide des métaclasses. Cette approche présente l'avantage de simplifier le problème de composition d'aspects et de le ramener à un problème connu - celui de la composition de métaclasses - pour lequel nous disposons d'une solution basée sur l'héritage. |
| Articles in journal, book chapters |
| Avec l'émergence des patterns de conception, plusieurs outils ont été proposés pour supporter une utilisation et une application automatisée des patterns dans des cas concrets. Cet article présente une revue d'un ensemble représentatif de ces outils, détaillant, en plus de leur objectif et de leurs fonctionnalités, les types de représentation adoptés pour les patterns et les choix liés à leur implémentation. |
| Conference articles |
| La programmation par objets encourage la réutilisation notamment grâce à l'encapsulation et à l'héritage. Elle offre ainsi les possibilités d'interchanger des objets ayant la même interface ou d'adapter des objets existants à de nouveaux besoins. Sans remettre en cause les principes qui ont fait le succès de la programmation par objets, la programmation par aspects propose une nouvelle voie complémentaire en matière de réutilisation. Elle consiste à découper les applications en modules traitant chacun un aspect de l'application. Ces différents aspects doivent être composés entre eux pour produire l'application. La représentation des aspects et la manière de les composer sont des questions ouvertes. Nous proposons d'y répondre dans un cadre de programmation réflexive, basé sur les métaclasses. L'aspect correspondant aux fonctionnalités de l'application est alors décrit à l'aide des classes. Les autres aspects qui représentent la manière d'exécuter l'application (e.g. concurrence, distribution, gestion de la mémoire, ...) sont, quant à eux, décrits à l'aide de métaclasses. Cette représentation présente l'avantage de ramener le problème de composition d'aspects en un problème connu qui est celui de la composition de (méta)classes et qui, de plus, est indépendant des aspects manipulés et de leur nombre. |
| Aujourd'hui, l'architecture CORBA constitue la solution industrielle la plus prometteuse pour réaliser l'interopérabilité entre des composants logiciels répartis hétérogènes. Paradoxalement, alors que le projet CORBA cherche à fédérer des mécanismes de distribution au sein d'une même architecture, son modèle est peu flexible et parait inadapté aux futures évolutions. Dans cet article, nous présentons OpenCorba, un ORB réflexif, capable d'adapter dynamiquement les stratégies de représentation et d'exécution du bus logiciel. Nous exposons tout d'abord les fondements réflexifs sous-jacents à la réalisation de OpenCorba. Nous montrons comment le concept de métaclasse permet l'isolement de propriétés spécifiques liées aux classes améliorant ainsi leur réutilisabilité. Puis, pour répondre aux problèmes des systèmes devant évoluer à l'exécution sans interrompre leur fonctionnement, nous introduisons un protocole de changement dynamique de métaclasse. S'appuyant sur ce cadre réflexif, OpenCorba permet de rendre plus "malléable" les caractéristiques internes du bus logiciel dans le but d'intervenir sur son modèle d'exécution répartie (e.g. invocation, contrôle de type IDL, gestion d'erreurs). OpenCorba favorise ainsi la construction d'architectures réparties réutilisables et adaptables, i.e. ouvertes. |
| Today, CORBA architecture brings the major industrial solution forachieving the interoperability between distributed software components in heterogeneous environments. While the CORBA project attempts to federate distributed mechanisms within a unique architecture, its internal model isnot very flexible and seems not to be suitable for future evolutions. In this paper, we present OpenCorba, a reflective open broker, enabling users to adapt dynamically the representation and the execution policies of the software bus. We first expose the reflective foundations underlying the implementation ofOpenCorba: i) metaclasses which provide a better separation of concerns in order to improve the class reuse; ii) a protocol which enables the dynamicchanging of metaclass in order to allow run-time adaptation of sstems. Based on this reflective environment, OpenCorba enables the adaptability of the internal characteristics of the broker in order to change its run-time behavior (e.g. remote invocation, IDL type checking, IR error handling). OpenCorba gives a clear example of the benefits of reflective middleware. |
| Internal reports |
| Since Smith seminal work, there have been numerous reflective language definition and implementation proposals. These proposals, initially restricted to functional languages, have been quickly extended to object-oriented languages. Unfortunately, reflective object-oriented language definitions remained mostly ad hoc. In this paper, we present a generic reification technique which enables the selective reification of arbitrary parts of object-oriented language interpreters. Our program transformation can be applied to different interpreter definitions. Each resulting reflective implementation provides a different meta-object protocol based on the original interpreter definition. This technique paves the way to a systematic study of reflective object-oriented language implementations. |
| Miscellaneous |
This material is presented to ensure timely dissemination of scholarly and technical work. Copyright and all rights therein are retained by authors or by other copyright holders. All person copying this information are expected to adhere to the terms and constraints invoked by each author's copyright. In most cases, these works may not be reposted without the explicit permission of the copyright holder.
Les documents contenus dans ces répertoires sont rendus disponibles par les auteurs qui y ont contribué en vue d'assurer la diffusion à temps de travaux savants et techniques sur une base non-commerciale. Les droits de copie et autres droits sont gardés par les auteurs et par les détenteurs du copyright, en dépit du fait qu'ils présentent ici leurs travaux sous forme électronique. Les personnes copiant ces informations doivent adhérer aux termes et contraintes couverts par le copyright de chaque auteur. Ces travaux ne peuvent pas être rendus disponibles ailleurs sans la permission explicite du détenteur du copyright.
This document was translated from BibTEX by bibtex2html