Précédent : Action de recherche Remonter : Action de
recherche Suivant : Protection et noyaux de
sécurité
Participants : Jean-Charles Fabre, Tanguy Pérennou, Françoise Cabrolié, Cyril Delamare, Marc-Olivier Killijian, Arnaud Ladrech, Frédéric Melle, Frédéric Salles
Le développement d'applications tolérantes aux fautes nécessite la définition et l'intégration aisée de mécanismes permettant de mettre en oeuvre des caractéristiques méta-fonctionnelles (redondance, authentification, chiffrement, communication à distance). L'utilisation de techniques de développement orienté-objet présente de multiples intérêts, tant au niveau de la conception que de la mise en oeuvre. En particulier, la propriété de réflexivité de certains langages à objets présente un triple avantage :
Le développement d'applications réparties mêlant des mécanismes de tolérance aux fautes et de sécurité-confidentialité en suivant cette approche fait l'objet de nos travaux actuels. Nous l'avons abordé sous deux angles :
Un modèle d'architecture de système basé sur une utilisation
récursive des métaobjets a été défini. L'expérimentation de cette
architecture a été effectuée sur un réseau de stations Unix et
aussi sur un réseau de stations Chorus. Le protocole à métaobjet
utilisé est celui d'Open C++ et les protocoles de groupe utilisés
sont ceux fournis par le logiciel xAMp. Nous avons pu constater
la souplesse d'intégration procurée par cette approche, en
premier lieu, l'indépendance entre la programmation de
l'application et la programmation des mécanismes utilisés, et
aussi la possibilité de changer de mécanisme sans incidence sur
le code source de l'application. Ces prototypes proposent sous
forme de métaobjets différents types de mécanismes de tolérance
aux fautes (mécanismes à support stable et différents mécanismes
de réplication) ainsi que des mécanismes de sécurité
(authentification, chiffrement). Une application répartie de type
bancaire a été développée pour évaluer la flexibilité de
l'approche. Tous les cas de composition possibles des métaobjets
existant à différents métaniveaux ont été testés avec
succès.
Les performances du système ont pu être mesurées et ont montré
que l'interaction objet-métaobjet était négligeable par rapport
aux fonctionnalités de tolérance aux fautes proprement dite (coût
des communications de groupe par exemple).
La conception des mécanismes de tolérance aux fautes a été
effectuée en utilisant la méthode de développement orienté-objets
BON et a permis de définir une hiérarchie de classes (au sens de
l'héritage) en vue de leur réutilisation. Une première hiérarchie
de mécanismes de tolérance aux fautes a été définie : elle a
montré que l'on pouvait factoriser ces mécanismes et donc
favoriser la réutilisation de classes de base et leur
spécialisation.
Une analyse des dépendances entre métaniveaux (partage
d'information, par exemple), des limites de l'approche à
métaobjet ainsi que de son utilisation à plusieurs niveaux a été
effectué. Elle a montré que si l'indépendance des métaniveaux
pouvait être obtenue à l'utilisation, il n'y avait pas
indépendance totale lors de la conception des métaobjets. En
particulier il existe une dépendance forte entre les mécanismes
répartis de tolérance aux fautes et la gestion des communication
de groupe. La paramétrisation du metaniveau de communication a
été étudiée et limités à quelque variables partagées.
Ces travaux et les résultats obtenus ont été concrétisés dans
la thèse de Tanguy Pérennou.
Les prospectives de ce travail concernent l'évaluation de
cette approche ainsi que son extension à des support d'exécution
à objet standard d'une part et à d'autres caractérisques
méta-fonctionnelles. Un souci tout particulier sera porté sur la
réutilisation des mécanismes, l'étude d'un protocole à métaobjet
plus efficace et moins figé.
Le fait de disposer aujourd'hui d'un prototype complet du système proposant au programmeur un ensemble de bibliothèques de classes de métaobjets permet d'évaluer l'approche selon différents points de vue :
Enfin, de premières investigations sur l'utilisation de support d'exécution répartis d'objets, tel que COOL-ORB (au standard CORBA), l'intégration d'un protocole à métaobjet dans ce type de support seront engagées. L'utilisation d'autres langages de programmation et aussi la prise en compte de modèles de calcul moins contraignants sera étudiée (primitives d'intéraction asynchrone, concurrence intra-objet). Enfin, nous étudions aussi des mécanismes d'injection de faute par logiciel dans des micro-noyaux pour analyser leur comportement en présence de fautes; la définition des mécanismes de tolérance aux fautes en dépendent fortement. Des expérimentations seront menées sur Chorus.