• Aucun résultat trouvé

4.6 Expérimentations et résultats

4.6.1 Vue globale de expérimentations

4.6.1.3 Discussion des résultats

Les résultats de la première série d’expérimentations confirment le fait que les cas simples d’interférence sont tous détectés. Rappelons qu’on se limite ici à la partie avant de la chaîne de greffons. Les interférences sont de type CB, CA, IA, IB.

La deuxième série d’expérimentations offre deux résultats.

D’une part elle montre que les assertions exécutables permettent de détecter les interfé- rences dans les parties avant et après, ou avant et après conjointement, des points de jonction partagés.

D’autre part, sur chaque partie avant et après, plusieurs instrumentations visant différentes propriétés peuvent être combinées. Nous avons généré un échantillon de 14.400 configurations de paramètres de cas de test. Les structures d’arbres couvrent tous les ordres possibles. Les en- sembles de propriétés générées comprennent le cas maximal avec toutes les propriétés à véri- fier.

4.7 Bilan

Dans ce chapitre, nous avons présenté une méthode d’instrumentation d’une configura- tion d’aspects. Nous avons ensuite détaillé les propriétés de non interférences qui doivent être observées afin de garantir qu’un assemblage d’aspect ne contient pas d’interférences CB, CA, IA, IB. Pour chaque propriété, nous avons décrit des points d’observation dans le code per- mettant de les observer. Nous avons ensuite défini une méthode permettant d’instrumenter ces points d’observation. Par rapport à d’autres approches décrites au chapitre 2, l’utilisation d’assertions permet une observation à l’exécution du système implémenté.

Nous avons également validé notre approche d’instrumentation de manière intensive. Tous les cas d’interférence ciblés dans cette thèse peuvent être détectés et cela indépendamment de la complexité de leur séquencement.

Chapitre 5

Etude de cas : Implémentation orientée

aspect d’un protocole PBR

Préambule

Dans ce chapitre, nous proposons d’appliquer nos travaux à un cas d’étude. Ce cas d’étude consiste à implémenter un mécanisme de réplication duplex dans une architecture distribuée. Nous com- mençons par expliquer le fonctionnement du protocole duplex et de l’implémentation que nous considérons. Puis nous détaillons les différentes préoccupations transversales qui le composent et nous montrons comment ce mécanisme peut être conçu en utilisant des aspects implémentés à grain fin. Nous montrons comment les différents aspects peuvent être composés pour réaliser le comportement du protocole duplex. Nous présentons la spécification des aspects au regard des propriétés de non interférences qui doivent être réalisées lors de leur composition. Nous détaille- rons les différents scénarios où des problèmes d’interférences peuvent apparaître lors de l’intégra- tion de ces aspects.

Sommaire

5.1 Introduction . . . 87 5.2 Cas d’étude et modèle de fautes . . . 88 5.3 Protocole de réplication duplex . . . 90 5.4 Composition du protocole de réplication . . . 97 5.5 Spécification des propriétés attendues . . . 110 5.6 Détection des interférences à l’assemblage . . . 114 5.7 Exemple de reconfiguration . . . 118 5.8 Conclusion . . . 122

5.1 Introduction

N

OUSavons présenté dans le chapitre précédent une approche basée sur les resolvers, vi- sant à éviter et détecter des problèmes de composition d’aspects.

La construction de systèmes résilients nécessite la capacité de reconfigurer le logiciel de tolérance aux fautes d’un système en fonction de son environnement, de son modèle de fautes et de ses ressources. Une implémentation traditionnelle de la tolérance aux fautes aboutie à un code difficilement reconfigurable à moindre effort, étant donné la dispersion (code scatte- ring) et l’entrelacement du code de tolérance aux fautes (code tangling) et du code fonctionnel. Contrairement aux approches traditionnelles, la programmation orientée aspect permet d’im- plémenter des systèmes disposant d’un logiciel de tolérance aux fautes reconfigurable. Cepen- dant, lors de la configuration ou la reconfiguration d’un logiciel de tolérance aux fautes implé- menté à l’aide d’aspects, des problèmes issus de l’interaction entre plusieurs aspects peuvent apparaître.

Dans ce chapitre, nous présentons un scénario d’implémentation de la tolérance aux fautes d’un système par la composition d’aspects. Nous présentons notre cas d’étude et le mécanisme de tolérance aux fautes qui y est mis en œuvre. Il s’agit en l’occurrence d’un mécanisme de ré- plication duplex. Nous étudions ensuite les différents aspects composant le protocole duplex. Nous illustrons la nécessité d’une implémentation à grain fin de ces mécanismes et la facilité de reconfiguration qu’une telle implémentation procure.

Nous illustrons comment ces aspects sont assemblés de manière à réaliser le comporte- ment du protocole duplex, ce qui nous permet d’aborder la problématique de l’assemblage non anticipé d’aspects et des interférences qui peuvent en découler. Nous présentons une applica- tion du processus de spécification qui permet d’exhiber les propriétés de non-interférences à vérifier. Puis nous appliquons alors notre approche d’instrumentation de l’implémentation orientée aspects d’un protocole de réplication duplex. Nous présentons également un scénario illustrant l’application de notre méthode de détection lors de l’évolution des conditions d’ex- ploitation du système considéré dans notre cas d’étude.

Ce scénario met en évidence les principaux défis qui ont été ciblés par notre travail : i) l’implémentation de mécanismes de tolérance aux fautes à grain fin ii) la reconfiguration de la tolérance aux fautes et iii) la validation de la composition des mécanismes.

Motivations

Ce chapitre vise deux objectifs :

– Illustrer la construction d’un protocole de tolérance aux fautes à l’aide d’aspects réuti- lisables permettant de transformer n’importe quel serveur fonctionnant comme un sin- gleton en un serveur fonctionnant de manière répliquée.

– illustrer comment notre approche d’instrumentation permet de détecter les différents cas d’interférences qui peuvent apparaitre lors des différents cas de réutilisation de ces aspects de ces aspects.

Structure du chapitre

que nous utilisons pour la validation de nos travaux à travers une brève description du sys- tème considéré, de son modèle de fautes et les mécanismes de tolérance aux fautes associés. La section5.3met en évidence les différentes préoccupations transversales qui composent le protocole duplex, le mécanisme utilisé dans notre étude. Elle présente également une décom- position sous forme d’aspects des différentes préoccupations.

La section5.4illustre la composition des aspects pour réaliser le comportement du pro- tocole duplex. La section5.5présente la spécification des propriétés de non-interférence qui doivent être réalisées pour que le protocole duplex assemblé réalise le comportement attendu. La section5.6montre comment la spécification obtenue est utilisée pour instrumenter l’assem- blage des aspects composant le protocole duplex et comment cette instrumentation permet de détecter les interférences qui peuvent être introduites dans l’assemblage.

La section5.7présente deux scénarios de reconfiguration qui serviront à illustrer l’applica- tion de notre approche et illustre l’application de notre approche de détection d’interférences lors de l’évolution du logiciel de tolérance aux fautes. La section5.8conclut ce chapitre.