Sous-sections

Construction d'applications réparties adaptables

cf modules 3.1, 7.1, 7.2, 7.3, 7.4, 7.5, 7.6, 7.7, 7.8.

Mots clés : programmation par composants, agents, applications adaptables, configuration, programmation répartie, code mobile, protection, machine virtuelle Java .

Résumé :

L'objectif est de fournir des outils et services pour le développement et l'exécution d'applications réparties adaptables. Les directions suivantes ont été explorées.

  1. Méthodes et outils pour l'adaptabilité.

    Nous avons développé et validé expérimentalement plusieurs méthodes pour faciliter l'adaptabilité des applications:

    a) Extensibilité (possibilité d'inclure dynamiquement de nouvelles fonctions dans un composant). b) Mobilité du code et des données. c) Reconfiguration (méthodes permettant d'apporter des modifications de composition ou de structure à une application construite par assemblage de composants). d) Protection liée à l'usage de code mobile.

  2. Plates-formes pour applications adaptables.

    Dans le cadre d'actions contractuelles avec des partenaires extérieurs, nous avons commencé à expérimenter les méthodes et outils ci-dessus sur diverses plates-formes expérimentales, existantes ou en cours de mise en place : environnements étendus pour Enterprise Java Beans, bus logiciel à agents, environnement pour applications à base de cartes à puce.

Dans de nombreux domaines d'application de l'informatique répartie, on constate une évolution de plus en plus rapide des besoins et des conditions d'utilisation. Le développement d'applications réparties adaptables vise à y répondre. L'adaptation peut prendre différentes formes (changement de structure, de contenu, de localisation des programmes ou des données, etc.). Des exigences de réactivité imposent souvent une adaptation dynamique.

L'objectif de nos travaux dans ce domaine est de développer des méthodes et outils pour faciliter l'adaptation des applications réparties conçues à base de composants. Les domaines d'applications visés sont prioritairement (mais non exclusivement) ceux des applications dites mobiles, dans lesquelles les utilisateurs et/ou des composants matériels ou logiciels de l'application peuvent se déplacer.


Méthodes et outils pour l'adaptation d'applications

Nous avons exploré plusieurs méthodes pour faciliter l'adaptabilité des applications. Ces travaux sont détaillés dans la suite de cette section.

1.  Méthodes et outils pour l'extensibilité

 



Participants : Sara Bouchenak, Eric Bruneton, Fabienne Boyer, Daniel Hagimont, Vania Marangozova, Michel Riveill.

Cette recherche vise à étudier les mécanismes de base pour produire des applications configurables et extensibles. Nous avons développé un environnement expérimental pour la construction de telles applications, sous la forme d'une extension de l'environnement Java appelée JavaPods, qui comporte les éléments suivants:

Une expérience préliminaire d'utilisation des JavaPods (serveur vidéo) a montré que les outils fournis facilitent effectivement l'adaptation des applications. Le travail en cours porte sur la consolidation des concepts, l'amélioration des mécanismes de base et la poursuite de l'évaluation. Nous comptons par ailleurs réutiliser dans d'autres contextes (voir 6.1.2) les méthodes ici développées.

2.  Méthodes et outils pour la mobilité et la duplication

 



Participants : Sara Bouchenak, Daniel Hagimont, Fabienne Boyer, Leila Ismail, Michel Riveill.

La mobilité des données, associée à des techniques de gestion de caches répartis, permet à la fois de diminuer la latence d'accès aux informations et de modifier dynamiquement l'environnement d'exécution d'une application pour répondre à des besoins changeants. La mobilité du code permet de déplacer dynamiquement l'exécution d'un processus client vers un serveur de données pour remédier à la variabilité des performances d'un réseau.

Nous travaillons dans trois directions.

3.  Méthodes et outils pour la reconfiguration

 



Participants : Luc Bellissard, Noël De Palma, David Féliot, Marie-Claude Pellegrini, Michel Riveill.

Nous travaillons dans trois directions:

4.  Protection du code mobile

 



Participants : Daniel Hagimont, Christian Jensen, Jacques Mossière.

Les techniques utilisant la mobilité du code impliquent l'exécution sur un serveur de programmes provenant d'une autre machine. En l'absence de mesures de protection appropriées [11], une telle exécution présente un danger potentiel.

Au cours de travaux antérieurs, conclus en 1999 par la thèse de C. Jensen [14], nous avons développé un mécanisme de protection utilisant des ``capacités cachées'' [8]. Nos travaux en cours visent à adapter ce mécanisme aux applications utilisant la carte à puce. Une collaboration est engagée sur ce thème avec la société Gemplus (voir 5.3), et un brevet a été déposé en co-propriété entre l'INRIA et Gemplus.


Structures d'accueil pour applications réparties adaptables

Nous participons à plusieurs expériences visant à mettre en place, sur différentes plates-formes, des structures d'accueil pour le développement d'applications réparties adaptables. Ces actions, menées en collaboration avec des partenaires extérieurs, servent à évaluer et valider les méthodes et outils décrits en 6.1.1 au moyen d'applications réelles.

Ces expériences couvrent les aspects principaux des organisations de type client-serveur. Nous indiquons ci-après leur cadre général et les principaux scénarios d'applications, renvoyant à la section 7 pour une description plus détaillée de chaque action.

1.  Plates-formes pour serveurs adaptables

 



Participants : Roland Balter, Luc Bellissard, Fabienne Boyer, Noël De Palma, Michel Riveill.

Deux projets visent à explorer l'utilisation de diverses techniques pour permettre à des serveurs d'assurer à la demande des propriétés particulières (persistance, disponibilité, etc.) aux objets qu'ils gèrent. Les techniques utilisées sont notamment la mobilité et la duplication du code et des données.

Le cadre commun d'application est fourni par les Enterprise Java Beans. Nous travaillons sur deux plates-formes visant à étendre les EJB : JumboBeans (contrat Cnet, voir 7.6) et Pepita (contrat Eurêka-ITEA, voir 7.7).

2.  Plates-formes pour applications mobiles

 



Participants : Luc Bellissard, Noël De Palma, Daniel Hagimont, Gilles Kuntz, Vania Marangozova, Michel Riveill.

Une application est dite mobile lorsque certains de ses constituants (matériels, logiciels, utilisateurs) changent de localisation physique en cours d'exécution. Ces applications se développent rapidement en raison des nouveaux modes de travail et des possibilités techniques: communications sans fil, appareils portables (ordinateurs et téléphones mobiles, PDA), cartes à puces.

Même lorsque la mobilité ne concerne que les utilisateurs, il se pose le problème de fournir un environnement uniforme à un utilisateur qui change de point d'accès. Cela peut se faire au moyen de la mobilité de code ou de données, ou encore en utilisant un support physique mobile tel qu'une carte à puce. La mobilité des utilisateurs pose aussi le problème du fonctionnement en mode temporairement déconnecté.

Nous étudions plusieurs scénarios d'applications mobiles, et plusieurs plates-formes destinées à ces applications.

3.  Infrastructures pour plates-formes extensibles

 



Participants : Roland Balter, Luc Bellissard, Fabienne Boyer, Eric Bruneton, Noël De Palma, Michel Riveill.

Nous participons au projet RNRT Parol (voir 7.5), dont l'objectif est de favoriser le développement d'outils pour la construction de plates-formes extensibles. Issu d'une initiative conjointe Cnet - Inria, ce projet est actuellement organisé autour d'un outil générique, analogue à un micro-noyau, muni de mécanismes d'extension. Nous explorons actuellement l'utilisation de ces mécanismes pour la construction d'objets de liaison spécialisables, en exploitant également notre expérience acquise avec les JavaPods (6.1.1).

4.  Plate-forme à agents

 



Participants : Roland Balter, Luc Bellissard, Noël De Palma, David Féliot, Maria Serrano, Nicolas Tachker.

Dans le cadre de l'action AAA de Dyade, nous participons aux travaux autour d'une plate-forme à agents servant de support à des applications configurables (voir détails en 7.1). Cette plate-forme pourra elle-même être rendue adaptable en utilisant les propriétés de l'infrastructure extensible fournie par le projet Parol (voir 7.5).