• Aucun résultat trouvé

Guider et contrôler les reconfigurations de systèmes à composants

N/A
N/A
Protected

Academic year: 2021

Partager "Guider et contrôler les reconfigurations de systèmes à composants"

Copied!
255
0
0

Texte intégral

(1)

HAL Id: tel-01967676

https://tel.archives-ouvertes.fr/tel-01967676

Submitted on 1 Jan 2019

HAL is a multi-disciplinary open access archive for the deposit and dissemination of sci-entific research documents, whether they are pub-lished or not. The documents may come from teaching and research institutions in France or abroad, or from public or private research centers.

L’archive ouverte pluridisciplinaire HAL, est destinée au dépôt et à la diffusion de documents scientifiques de niveau recherche, publiés ou non, émanant des établissements d’enseignement et de recherche français ou étrangers, des laboratoires publics ou privés.

Jean-François Weber

To cite this version:

Jean-François Weber. Guider et contrôler les reconfigurations de systèmes à composants : Reconfig-urations dynamiques: modélisation formelle et validation automatique. Modélisation et simulation. Université de Franche-Comté (UFC), 2017. Français. �NNT : 2017UBFCD068�. �tel-01967676�

(2)

Thèse de Doctorat

é c o l e d o c t o r a l e s c i e n c e s p o u r l ’ i n g é n i e u r e t m i c r o t e c h n i q u e s

U N I V E R S I T É D E F R A N C H E - C O M T É

n

Guider et contr ˆoler les

reconfigurations de syst `emes `a

composants

Reconfigurations dynamiques: mod ´elisation formelle et

validation automatique

(3)
(4)

Thèse de Doctorat

é c o l e d o c t o r a l e s c i e n c e s p o u r l ’ i n g é n i e u r e t m i c r o t e c h n i q u e s

U N I V E R S I T É D E F R A N C H E - C O M T É

TH `

ESE pr ´esent ´ee par

J

EAN

-F

RANC

¸

OIS

WEBER

pour obtenir le

Grade de Docteur de

l’Universit ´e de Franche-Comt ´e

Sp ´ecialit ´e :Informatique

Guider et contr ˆoler les reconfigurations de syst `emes

`a composants

Reconfigurations dynamiques: mod ´elisation formelle et validation

automatique

Unit ´e de Recherche :

D ´epartement d’Informatique des Syst `emes Complexes (DISC)

Soutenue publiquement le 5 octobre 2017 devant le Jury compos ´e de :

GWEN SALAUN¨ Pr ´esident Professeur HDR au LIG, Universit ´e Grenoble Alpes

R ´EGINE LALEAU Rapporteur Professeur HDR au LACL, Universit ´e Paris-Est

Cr ´eteil

PHILIPPEMERLE Rapporteur Charg ´e de recherche HDR, Inria Lille Nord

Europe

OLGAKOUCHNARENKO Directeur de th `ese Professeur HDR au DISC, Universit ´e de

Bourgogne Franche-Comt ´e

FRED´ ERIC´ DADEAU Examinateur Maˆıtre de conf ´erence au DISC, Universit ´e de

Bourgogne Franche-Comt ´e

(5)
(6)

R

EMERCIEMENTS

Avant tout, je tiens `a remercier tous les membres du jury qui ont accept ´e d’ ´evaluer mon travail. Merci `a Gwen Sala ¨un d’avoir pr ´esid ´e ce jury de th `ese. Merci ´egalement `a R ´egine Laleau et Philippe Merle pour m’avoir fait l’honneur de rapporter cette th `ese.

Je voudrais remercier tout sp ´ecialement Olga Kouchnarenko de m’avoir fait confiance pour mener `a bien ce travail de th `ese malgr ´e le fait que j’ai une activit ´e professionnelle `a plein temps. Olga Kouchnarenko a ´et ´e disponible au del `a de mes attentes les plus optimistes ; en semaine et le week-end, le jour et la nuit, en cours d’ann ´ee universitaire et durant les vacances.

Je souhaite aussi remercier Jacques Julliand qui m’a sugg ´er ´e de m’orienter vers un doc-torat au moment o `u je pensais avoir d ´ej `a manqu ´e cette opportunit ´e, Pierre-Cyrille H ´eam et Fr ´ed ´eric Dadeau pour leur soutien, ainsi que Jean-Michel Hufflen pour l’aide spontan ´ee qu’il m’a propos ´ee `a plusieurs reprises, sans oublier Julien Bourgeois, Benoˆıt Piranda, Julien Dormoy, Abderrahim Ait Wakrime et Hadrien Bride.

Un (autre) grand merci `a Philippe Merle sans qui l’int ´egration de FraSCAti dans notre impl ´ementation n’aurait jamais pu avoir lieu (en tout cas, en si peu de temps) ; il a su trouver la disponibilit ´e pour m’assister dans cette t ˆache malgr ´e son agenda charg ´e. Merci aussi `a Brigitte Bataillard et Dominique M ´en ´etrier qui ont toujours su me guider et m’assister dans le monde obscur des formalit ´es administratives, `a Oscar Carrillo et Hassan Mountasir pour l’organisation des TP Fractal et `a Laurent Steck pour son support technique.

Je remercie les ´etudiants dont j’ai suivi le travail avec Olga Kouchnarenko : Gr ´egori Tirsa-tine pour son travail sur les parseurs d’expressions de logique temporelle, Alexis Picard et Nicolas Lemasson pour leur travail sur l’interface graphique de notre impl ´ementation, Cl ´ement Hosotte et Florian Facchini pour leur projet de Master 2 concernant les recon-figurations dynamiques, Sonia Cr ´etin et Mathieu Robert pour le brouillage des traces d’adaptation et Martin B ´erenger pour le projet de grammaires de graphes pour syst `emes reconfigurables.

Enfin, je remercie Philippe Lutz de l’ ´Ecole Doctorale SPIM ainsi qu’Alexandrine Vieillard, S ´ebastien Pasteur et Samuel Gaston Amet pour leur bienveillance et leur aide.

(7)
(8)

S

OMMAIRE

Remerciements v

Sommaire vii

Introduction 1

Contexte scientifique . . . 2

Composants logiciels et syst `emes `a composants . . . 2

V ´erification des syst `emes `a composants . . . 4

Politiques d’adaptation et test de syst `emes `a composants . . . 5

Probl ´ematiques et contributions . . . 6

Probl ´ematiques . . . 6

Contributions . . . 8

Organisation . . . 9

Partie I : Contexte scientifique et pr ´eliminaires . . . 10

Partie II : Mod ´elisation des reconfigurations dynamiques . . . 11

Partie III : V ´erification et test des reconfigurations dynamiques . . . 11

Partie IV : Validation exp ´erimentale . . . 12

Conclusion et perspectives . . . 13

Publications . . . 13

I Contexte scientifique et pr ´eliminaires 15 1 Les syst `emes `a composants 17 1.1 Architectures orient ´ees composants . . . 18

1.1.1 Le concept de composant . . . 18

1.1.2 Architectures logicielles bas ´ees sur les composants . . . 20

1.1.2.1 Composants primitifs et composites . . . 21

1.1.2.2 Interfaces . . . 21

1.1.2.3 Assemblages de composants . . . 22

(9)

1.1.3 Quelques approches de mod `eles `a composants . . . 23

1.2 Modification dynamique des syst `emes `a composants . . . 25

1.2.1 Reconfigurations dynamiques . . . 25

1.2.2 Syst `emes r ´eflexifs et adaptatifs . . . 26

1.2.3 Boucle de contr ˆole et boucle MAPE . . . 27

1.3 Le mod `ele `a composants Fractal . . . 29

1.3.1 Composants Fractal . . . 29

1.3.2 Impl ´ementations . . . 31

1.4 Le mod `ele `a composants FraSCAti . . . 31

1.4.1 La sp ´ecification SCA . . . 32

1.4.2 L’impl ´ementation de SCA par FraSCAti . . . 32

1.4.3 Comparaison avec d’autres impl ´ementations de SCA . . . 34

1.5 Conclusion . . . 34

2 Pr ´eliminaires 35 2.1 Ensembles, relations et fonctions . . . 35

2.1.1 Ensembles . . . 35

2.1.2 Relations et fonctions . . . 36

2.2 Syst `emes de transitions . . . 38

2.3 Sp ´ecification des propri ´et ´es des syst `emes . . . 41

2.3.1 Propri ´et ´es d’invariance . . . 41

2.3.2 Logique du premier ordre . . . 42

2.3.2.1 Syntaxe . . . 42

2.3.2.2 S ´emantique . . . 44

2.3.3 Logiques temporelles . . . 45

II Mod ´elisation des reconfigurations dynamiques 49 3 Mod ´elisation 51 3.1 Le composantLocation . . . 51

3.1.1 Les syst `emes de g ´eolocalisation . . . 52

3.1.2 Pr ´esentation du Cycab . . . 52

3.1.3 Le composant compositeLocation . . . 53

3.2 S ´emantique op ´erationnelle . . . 55

(10)

SOMMAIRE ix

3.2.1.1 El ´ements Architecturaux . . . 56´

3.2.1.2 Relations architecturales . . . 57

3.2.1.3 Simplifications possibles . . . 60

3.2.2 S ´emantique des reconfigurations . . . 62

3.2.2.1 Reconfigurations et op ´erations d’ ´evolution . . . 62

3.2.2.2 Propri ´et ´es de configuration . . . 64

3.2.2.3 Syst `eme `a composants reconfigurable primitif . . . 65

3.3 Syst `eme `a composants reconfigurable . . . 68

3.4 Conclusion . . . 70

4 Reconfigurations gard ´ees 71 4.1 Contraintes de consistance . . . 71

4.2 Reconfigurations gard ´ees . . . 74

4.3 Propagation de consistance . . . 75

4.4 Mod `ele d’architecture interpr ´et ´ee . . . 76

4.4.1 Configurations et reconfigurations interpr ´et ´ees . . . 76

4.4.2 Interpr ´etation compatible . . . 77

4.4.3 Pr ´eservation des propri ´et ´es . . . 79

4.5 Conclusion . . . 79

5 Propri ´et ´es temporelles 81 5.1 Syntaxe de la logique FTPL . . . 81

5.2 S ´emantique de la logique FTPL . . . 83

5.2.1 Domaine de v ´erit ´e . . . 83

5.2.2 S ´emantique . . . 84

5.2.2.1 Les propri ´et ´es de configuration . . . 84

5.2.2.2 Les ´ev ´enements . . . 84

5.2.2.3 Les propri ´et ´es de trace . . . 85

5.2.2.4 Les propri ´et ´es temporelles . . . 86

5.3 Satisfaction d’une propri ´et ´e FTPL . . . 86

5.4 Conclusion . . . 88

III V ´erification et test des reconfigurations dynamiques 89 6 Evaluation de propri ´et ´es temporelles `a l’ex ´ecution´ 91 6.1 Evaluation `a l’ex ´ecution de traces incompl `etes . . . 92´

(11)

6.1.1 V ´erification de propri ´et ´es `a l’ex ´ecution . . . 92

6.1.1.1 Concept de l’ ´evaluation `a l’ex ´ecution . . . 92

6.1.1.2 Enforcement et r ´eflexion `a l’ex ´ecution . . . 93

6.1.1.3 Domaine de v ´erit ´e . . . 94

6.1.2 S ´emantique pour l’ ´evaluation de propri ´et ´es FTPL `a l’ex ´ecution . . . 95

6.1.2.1 Propri ´et ´es de configuration . . . 95

6.1.2.2 Ev ´enements . . . 95´

6.1.2.3 Propri ´et ´es de trace . . . 96

6.1.2.4 Propri ´et ´es temporelles . . . 97

6.2 Evaluation progressive de propri ´et ´es FTPL . . . 99´

6.2.1 Notations . . . 99

6.2.2 Propri ´et ´es de traces . . . 100

6.2.3 Listes d’ ´ev ´enements . . . 101

6.2.4 Propri ´et ´es temporelles . . . 101

6.3 Conclusion . . . 103

7 Evaluation d ´ecentralis ´ee `a l’ex ´ecution´ 105 7.1 Conventions utilis ´ees pour l’ ´evaluation d ´ecentralis ´ee . . . 105

7.2 Progression et urgence d’expressions FTPL . . . 106

7.2.1 Progression d’expressions FTPL . . . 107

7.2.2 Forme de progression normalis ´ee et urgence . . . 110

7.3 Probl `eme de l’ ´evaluation d ´ecentralis ´ee . . . 111

7.3.1 Algorithme d’ ´evaluation d ´ecentralis ´ee . . . 112

7.3.2 R ´esultats de correction et de terminaison . . . 114

7.4 Conclusion . . . 118

8 Politiques d’adaptation 119 8.1 Int ´egration de FTPL dans des politiques d’adaptation . . . 120

8.1.1 D ´efinition des politiques d’adaptation . . . 121

8.1.2 Restriction par politiques d’adaptation . . . 123

8.2 Application des politiques d’adaptation `a l’ex ´ecution . . . 124

8.2.1 Probl `eme de l’adaptation . . . 124

8.2.2 L’algorithme AdaptEnfor . . . 125

8.2.3 Correction de l’adaptation . . . 128

8.3 Usage du fuzzing pour le test de politiques d’adaptation . . . 131

(12)

SOMMAIRE xi

8.3.2 Mise en place et utilisation . . . 131

8.4 Conclusion . . . 133

IV Validation exp ´erimentale 135 9 Structure logicielle 137 9.1 Impl ´ementation . . . 137

9.1.1 Description de notre impl ´ementation . . . 138

9.1.2 Interactions entre les entit ´es de notre impl ´ementation . . . 139

9.1.3 Fonctionnement des contr ˆoleurs de notre impl ´ementation . . . 140

9.1.4 Conformit ´e architecturale . . . 143

9.2 Fichiers de log et interface graphique . . . 144

9.2.1 Fichier de log du contr ˆoleur de politiques d’adaptation (APC) . . . . 144

9.2.2 Interface graphique . . . 145

9.3 Impl ´ementation du fuzzing . . . 147

9.4 Conclusion . . . 150

10 Exp ´erimentations 151 10.1 Application de politiques d’adaptation . . . 152

10.1.1 Description du comportement attendu . . . 152

10.1.2 Ex ´ecution . . . 155

10.1.3 R ´esultats obtenus . . . 156

10.2 Autres cas d’ ´etudes . . . 157

10.2.1 Machines virtuelles et environnement cloud . . . 158

10.2.2 Serveur HTTP . . . 159

10.3 Utilisation de grammaires de graphes . . . 161

10.3.1 Impl ´ementation sous GROOVE . . . 161

10.3.2 Le composantvirtualMachine repr ´esent ´e sous GROOVE . . . 163

10.4 ´Evaluation d ´ecentralis ´ee simul ´ee sous GROOVE . . . 165

10.4.1 Repr ´esentation des propri ´et ´es FTPL sous GROOVE . . . 166

10.4.2 Simulation de l’ ´evaluation d ´ecentralis ´e . . . 167

(13)

Conclusion et perspectives 175

Conclusion et perspectives 175

Synth `ese et bilan . . . 175

Mod ´elisation des reconfigurations dynamiques . . . 175

V ´erification et contr ˆole des reconfigurations dynamiques . . . 176

Contributions pratiques . . . 176

Perspectives . . . 177

´ Evaluation d ´ecentralis ´ee et politiques d’adaptation . . . 177

Impl ´ementation . . . 178

Passage `a l’ ´echelle et test . . . 179

Syst `emes cyber-physiques et microm ´ecatroniques . . . 179

Bibliographie 181 Table des figures 191 Liste des tables 195 Liste des d ´efinitions 197 Liste des th ´eor `emes 201 Liste des corolaires 203 Liste des propositions 205 Liste des exemples 207 V Annexes 209 A S ´emantique des reconfigurations primitives 211 A.1 Notations et conventions . . . 211

(14)

SOMMAIRE xiii

A.2 S ´emantique des op ´erations primitives . . . 213

A.2.1 S ´emantique de l’op ´eration primitive new . . . 213

A.2.2 S ´emantique de l’op ´eration primitive destroy . . . 214

A.2.3 S ´emantique de l’op ´eration primitive add . . . 215

A.2.4 S ´emantique de l’op ´eration primitive remove . . . 215

A.2.5 S ´emantique de l’op ´eration primitive start . . . 218

A.2.6 S ´emantique de l’op ´eration primitive stop . . . 219

A.2.7 S ´emantique de l’op ´eration primitive bind . . . 219

A.2.8 S ´emantique de l’op ´eration primitive unbind . . . 220

A.2.9 S ´emantique de l’op ´eration primitive update . . . 221

B Pr ´eservation de la consistance 223 B.1 Op ´eration primitive new . . . 224

B.2 Op ´eration primitive add . . . 224

B.2.1 Pr ´eservation de (CC.2) par add. . . 224

B.2.2 Pr ´eservation de (CC.3) par add. . . 225

B.2.3 Pr ´eservation de (CC.4) par add. . . 225

B.3 Op ´eration primitive remove . . . 228

B.3.1 Pr ´eservation de (CC.2) par remove. . . 228

B.3.2 Pr ´eservation de (CC.3) par remove. . . 229

B.3.3 Pr ´eservation de (CC.4) par remove. . . 232

B.4 Op ´eration primitive bind . . . 235

B.4.1 Pr ´eservation de (CC.5) par bind. . . 236

B.4.2 Pr ´eservation de (CC.6) par bind. . . 236

B.4.3 Pr ´eservation de (CC.7) par bind. . . 236

B.4.4 Pr ´eservation de (CC.8) et (CC.9) par bind. . . 237

B.4.5 Pr ´eservation de (CC.10) par bind. . . 237

B.4.6 Pr ´eservation de (CC.11) par bind. . . 238

(15)
(16)

I

NTRODUCTION

D

ans le monde actuel, les syst `emes embarqu ´es traditionnels sont de plus en plus rem-plac ´es par des syst `emes cyber-physiques, ou CPS (Cyber-Physical Systems). Intuiti-vement, de tels syst `emes peuvent ˆetre vus comme des r ´eseaux de syst `emes embarqu ´es o `u un grand nombre de composants logiciels sont d ´eploy ´es au sein d’environnements physiques [Du et al., 2016, Lee, 2008]. Comme leurs environnements sont susceptibles de changer, ces syst `emes doivent pouvoir ´evoluer au cours du temps tout en continuant `a fonctionner correctement. Bien s ˆur, ces ´evolutions doivent permettre aux syst `emes de s’am ´eliorer (d’un point de vue quantitatif et/ou qualitatif) ou, tout du moins, de minimiser d’ ´eventuelles d ´egradations. Il est donc n ´ecessaire de pouvoir v ´erifier ces syst `emes du-rant leurs ex ´ecutions afin de guider au mieux leurs ´evolutions pour qu’ils puissent rester adapt ´es `a leurs environnements.

Les syst `emes `a composants sont constitu ´es d’un ensemble de “briques de base” (i.e., des composants) pouvant ˆetre assembl ´ees pour construire des applications. Ces syst `emes peuvent ˆetre modifi ´es (e.g., ajout ou suppression de composants) au moyen de reconfi-gurations, dites dynamiques, sans devoir ˆetre arr ˆet ´es ou cesser de fonctionner. Lorsque de telles reconfigurations sont effectu ´ees dans le but de permettre au syst `eme concern ´e de s’adapter `a son environnement, on parle d’adaptation.

Dans le cadre de l’adaptation des syst `emes `a composants, les reconfigurations dyna-miques ne peuvent pas ˆetre effectu ´ees `a n’importe quel moment ou de n’importe quelle fac¸on. La fiabilit ´e de ces reconfigurations doit permettre de garantir qu’elles soient ef-fectu ´ees comme pr ´evu ou bien pr ´evoir un m ´ecanisme de retour en arri `ere (rollback) en cas de probl `eme. De plus, certaines propri ´et ´es de s ˆuret ´e doivent ˆetre maintenues malgr ´e l’application de reconfigurations dynamiques ; par exemple, on n’imagine pas que le syst `eme de navigation d’un avion puisse cesser de fonctionner suite `a l’application d’une reconfiguration dynamique. La s ´ecurit ´e doit aussi ˆetre prise en compte dans le cadre des reconfigurations dynamiques afin qu’elles ne puissent ˆetre effectu ´ees que par les entit ´es autoris ´ees `a les appliquer. En outre, dans le contexte actuel de consommation d’ ´energie responsable, les reconfigurations dynamiques peuvent permettre d’ ´economiser de l’ ´energie en retirant des composants non n ´ecessaires au fonctionnement du syst `eme. Ces composants pourraient bien s ˆur ˆetre rajout ´es dynamiquement s’ils s’av ´eraient `a nouveau n ´ecessaires. Enfin, ces reconfigurations doivent aussi ˆetre appliqu ´ees dans le respect des usagers ; si des passagers sont pr ´esents dans un v ´ehicule autonome, la temp ´erature int ´erieure devrait ˆetre maintenue `a un niveau confortable m ˆeme si cela consomme de l’ ´energie.

L’adaptation des syst `emes `a composants via l’application de reconfigurations dyna-miques se doit donc de respecter des propri ´et ´es de s ˆuret ´e, d’ ˆetre fiable et s ´ecuris ´ee tout en respectant l’environnent et les usagers. C’est pourquoi nous nous int ´eressons au guidage et au contr ˆole des reconfigurations des syst `emes `a composants dans leur ´evolution au sein de leur environnement. Nous devons aussi d ´eterminer comment v ´erifier les propri ´et ´es de tels syst `emes lors de leurs reconfigurations et trouver les moyens de

(17)

tester les m ´ecanismes de l’adaptation et les reconfigurations dynamiques. La v ´erification `a l’ex ´ecution est une technique utilis ´ee pour s’assurer de la correction du comportement d’un syst `eme au cours de son ex ´ecution. Il est aussi envisageable d’utiliser cette tech-nique pour valider la satisfaction de certaines propri ´et ´es du syst `eme. Ainsi, en fonction de l’ ´evaluation de ces propri ´et ´es, il est possible de d ´eterminer comment guider l’ ´evolution d’un syst `eme pour contr ˆoler son adaptation vis- `a-vis de son environnement. Ce concept de l’adaptation est au cœur de nos travaux sur les syst `emes `a composants. Nous allons d’abord ´etablir le contexte scientifique, les concepts et les id ´ees qui vont nous permettre, dans un second temps, d’exposer nos probl ´ematiques et contributions. Ensuite, nous d ´etaillerons l’organisation de ce m ´emoire en pr ´esentant le contenu de chaque chapitre. Enfin, nous indiquerons o `u nos diverses contributions ont ´et ´e publi ´ees.

C

ONTEXTE SCIENTIFIQUE

Dans cette section, nous introduisons les concepts et id ´ees qui nous permettrons de pouvoir exposer les probl ´ematiques li ´ees au travail pr ´esent ´e dans ce document. Plu-sieurs concepts se sont succ ´ed ´es, au cours des derni `eres d ´ecennies, pour la conception et le d ´eveloppement d’applications. Les langages machines, tr `es performants mais ne permettant pas de s ´eparer le d ´eveloppement en diverses unit ´es r ´e-utilisables, ont ´et ´e d ´elaiss ´es au profit des langages proc ´eduraux, puis des langages objets, qui autorisent une plus grande modularit ´e et une r ´eutilisation du code. Comme il est difficile de mettre en ´evidence les liens entre les diff ´erents objets au sein d’une application lorsque leur nombre devient important, les architectures logicielles `a base de composants sont de plus en plus pr ´ef ´er ´ees aux approches purement objet.

Les syst `emes `a composants sont des syst `emes modulaires compos ´es de divers compo-sants pouvant ˆetres assembl ´es pour former des applications. On peut faire ´evoluer de tels syst `emes via des op ´erations de reconfiguration permettant, par exemple, de supprimer ou d’ajouter un composant. Lorsque ces op ´erations de reconfiguration peuvent ˆetre ef-fectu ´ees sans avoir `a arr ˆeter le syst `eme, on parle de reconfigurations dynamiques. Ainsi, il est possible de modifier les syst `emes `a composants en cours d’ex ´ecution afin de leur permettre de s’adapter `a leur environnement.

De telles adaptations sont d ´etermin ´ees par des r `egles, regroup ´ees en politiques, ayant la possibilit ´e de v ´erifier des propri ´et ´es du syst `eme durant sont ex ´ecution afin de pou-voir juger de la pertinence des actions `a effectuer. Ces politiques d’adaptation peuvent s’av ´erer complexes `a mettre en place, c’est pourquoi il est vital de pouvoir les tester. Nous commenc¸ons par nous int ´eresser aux id ´ees de composants logiciels et de syst `emes `a composants, puis nous explicitons le concept de v ´erification pour ces syst `emes. En-fin, nous pr ´esentons les notions de politique d’adaptation et de test dans le cadre des syst `emes `a composants.

COMPOSANTS LOGICIELS ET SYSTEMES` A COMPOSANTS`

Un composant est g ´en ´eralement d ´ecrit comme un ´el ´ement, d’une structure plus com-plexe, pouvant ˆetre int ´egr ´e dans diff ´erentes applications. Afin qu’ils soient utilisables, les composants doivent exposer les fonctionnalit ´es qu’ils fournissent mais aussi les fonction-nalit ´es dont ils ont besoin pour s’ex ´ecuter.

(18)

CONTEXTE SCIENTIFIQUE 3

Les concepts de modularit ´e et de r ´e-utilisabilit ´e permettent de structurer et de faciliter le d ´eveloppement d’applications bas ´ees sur les composants. La modularit ´e permet d’ex-traire les diff ´erentes fonctionnalit ´es n ´ecessaires `a la construction d’une application et de chacune les encapsuler au sein de briques logicielles. Celles-ci peuvent alors ˆetre as-sembl ´ees pour construire l’application d ´esir ´ee. Le concept de r ´e-utilisabilit ´e permet de pouvoir utiliser la m ˆeme brique dans diff ´erentes applications.

On peut distinguer les composants primitifs qui encapsulent du code m ´etier et les compo-sants composites qui contiennent des sous-compocompo-sants (primitifs ou composites). Ainsi, plusieurs composants peuvent ˆetre assembl ´es et li ´es au moyen de liens logiques pour former un syst `eme `a composants. Un tel assemblage repr ´esente une configuration du syst `eme `a composants. Intuitivement, si cette configuration correspond `a un assemblage de composants capable de s’interconnecter entres-eux et de fonctionner sans erreur, on dit qu’elle est consistante.

Un syst `eme `a composants peut ´evoluer d’une configuration `a une autre au moyen d’op ´erations de reconfiguration, comme l’ajout ou la suppression d’un composant ou d’un lien entre deux composants. Cependant, l’application d’une reconfiguration `a une configuration donn ´ee ne garantit pas que la configuration r ´esultante sera consistante. Consid ´erons un ensemble de configurations et un ensemble de reconfigurations permettant d’ ´evoluer d’une configuration `a une autre. On peut ainsi, comme dans [Dormoy, 2011], d ´efinir un mod `ele de syst `eme `a composants comme l’ensemble des s ´equences de configurations pouvant d ´ebuter par une configuration choisie dans un ensemble de configurations initiales pour ´evoluer de configuration en configuration au moyen des reconfigurations qu’il est possible d’effectuer.

Fractal [Bruneton et al., 2004, Bruneton et al., 2006] et FraSCAti [Seinturier et al., 2009, Seinturier et al., 2012] sont des mod `eles `a composants supportant l’utilisation de recon-figurations dynamiques, qui permettent de reconfigurer un syst `eme `a composants durant son ex ´ecution.

Dans le cadre du d ´eveloppement classique utilisant la programmation objet, les choix concernant l’architecture d’une application sont fait au moment de la conception. Le fait de pouvoir utiliser des reconfigurations dynamiques pour pouvoir modifier (sans avoir `a le stopper) un syst `eme durant son ex ´ecution permet de diff ´erer de tels choix au moment de l’ex ´ecution. Ainsi, il est possible de faire aussi ´evoluer le syst `eme pour qu’il reste adapt ´e

`a son environnement lorsque celui-ci ´evolue.

De telles possibilit ´es posent de nouveaux probl `emes auxquels nous nous efforcerons de r ´epondre dans ce m ´emoire de th `ese :

— Quelle(s) reconfiguration(s) effectuer et `a quel moment ?

— Comment d ´eterminer lorsque le syst `eme n’est plus (suffisamment) adapt ´e `a son environnement ?

— Comment s’assurer que l’application de reconfiguration(s) ne va pas nuire au bon fonctionnement du syst `eme ?

(19)

V ´ERIFICATION DES SYSTEMES` A COMPOSANTS`

Le but de la v ´erification d’un syst `eme est de s’assurer que sa sp ´ecification v ´erifie les pro-pri ´et ´es qu’il doit respecter. Il est donc possible de proc ´eder `a la v ´erification d’un syst `eme avant qu’il ne soit impl ´ement ´e car la v ´erification est effectu ´ee en utilisant seulement une sp ´ecification. Deux approches formelles de v ´erification peuvent ˆetre distingu ´ees : la v ´erification algorithmique (model-checking) et la v´erification par preuve (theorem pro-ving). Le model-checking consiste `a explorer de mani`ere exhaustive l’ensemble des ´etats du syst `eme, afin de s’assurer que celui-ci satisfait une certaine propri ´et ´e. Le principe de la v ´erification par preuve consiste `a prouver math ´ematiquement la validit ´e d’un ensemble de formules (nomm ´ees obligations de preuve) engendr ´ees par une sp ´ecification formelle d ´ecrivant le syst `eme et ses propri ´et ´es. Ces deux approches peuvent ˆetre combin ´ees comme c’est le cas dans [Lanoix et al., 2011].

Dans le cadre du model-checking appliqu´e au mod`ele `a composants Frac-tal [Bruneton et al., 2006], les travaux de [Merle et al., 2008, Tiberghien et al., 2010] ont permis de repr ´esenter ce mod `ele de fac¸on `a pouvoir utiliser Al-loy [Jackson, 2012], un logiciel de checking (ou checker). Le model-checker CADP1 [Garavel et al., 2007, Garavel et al., 2011, Garavel et al., 2013] a

pu aussi ˆetre utilis ´e pour v ´erifier des syst `emes `a composants bas ´es sur Fractal dans [Barros et al., 2007]. Nous pouvons aussi citer les travaux [Simonot et al., 2008] qui utilisent Focal [Dubois et al., 2006] pour v ´erifier de tels syst `emes `a composants. Ces approches utilisent les fonctionnalit ´es d’outils existants mais elles ne sont pas toutes bien adapt ´ees aux concepts de composants logiciels, c’est pourquoi d’autres approches donnent la possibilit ´e d’enrichir les sp ´ecifications des composants avec des ´el ´ements et des concepts qui seront ensuite v ´erifi ´es. Nous pouvons citer ConFract [Collet et al., 2005, Collet et al., 2007] qui est une extension du mod `ele `a composants Fractal v ´erifiant des Pr ´e et Post-conditions [Hoare, 1969]. Le paradigme d’hypoth `eses/garanties [Misra et al., 1981, Lamport, 1983] est utilis ´e pour effectuer la v ´erification compositionnelle des syst `emes `a composants dans [Andrade et al., 2002]. Enfin, l’approche propos ´ee dans [Chouali et al., 2010] utilise des automates d’interfaces pour sp ´ecifier des contrats au niveau comportemental.

Dans le cadre des syst `emes `a composants supportant les reconfigurations dynamiques, les travaux propos ´es dans [David et al., 2009] d ´efinissent une extension du mod `ele `a composants Fractal dans laquelle il est possible de sp ´ecifier des invariants sur la structure du mod `ele `a composants. Cette approche v ´erifie que ces invariants architecturaux sont pr ´eserv ´es lors de l’ex ´ecution des reconfigurations dynamiques.

Afin d’exprimer des contraintes architecturales et temporelles sur des syst `emes `a com-posants, la logique FTPL a ´et ´e introduite dans [Dormoy et al., 2012a]. Cette logique qui se base sur les travaux de Dwyers sur les sch ´emas de sp ´ecification [Dwyer et al., 1999], permet d’ ´evaluer des propri ´et ´es temporelles dans B2 (en utilisant les valeurs ‘faux” et

“vrai”) sur des traces d’ex ´ecution. On notera que la structure composite des syst `emes `a composants se pr ˆete `a une approche d ´ecentralis ´ee ; l’ ´evaluation d ´ecentralis ´ee de for-mules LTL pr ´esent ´ee dans [Bauer et al., 2012] en est un exemple.

La v ´erification `a l’ex ´ecution [Havelund et al., 2005, Bauer et al., 2010] est une tech-nique permettant de s’assurer de mani `ere efficace de la satisfaction d’exigences par un syst `eme lors de son ex ´ecution. Ceci n ´ecessite l’ ´evaluation de propri ´et ´es `a

(20)

CONTEXTE SCIENTIFIQUE 5

l’ex ´ecution, ce qui implique de consid ´erer des traces d’ex ´ecution incompl `etes. C’est le cas dans [Dormoy et al., 2011] o `u des propri ´et ´es temporelles sont ´evalu ´ees dans B4, en

utilisant les valeurs ‘faux” et “vrai”, d’une part et “potentiellement faux” et “potentiellement vrai”, d’autre part, pour la potentielle (non) satisfaction d’une propri ´et ´e.

POLITIQUES D’ADAPTATION ET TEST DE SYSTEMES` A COMPOSANTS`

Dans le cadre des syst `emes `a composants, les politiques d’adaptation peuvent ˆetre vues comme un ensemble de r `egles pouvant guider et contr ˆoler les reconfigurations dyna-miques. Pour un syst `eme `a composants donn ´e, ces r `egles contiennent des propri ´et ´es concernant le syst `eme et son environnement. En se basant, au cours de l’ex ´ecution du syst `eme, sur l’ ´evaluation de ces propri ´et ´es on peut alors d ´eterminer comment le syst `eme devrait ´evoluer. De telles r `egles peuvent s’av ´erer difficiles `a ´elaborer dans la cas de syst `emes `a composants de grandes tailles. C’est pourquoi il est n ´ecessaire de pouvoir les tester.

Afin d’appr ´ehender des comportements du syst `eme ne se limitant pas `a un instant donn ´e, mais prenant en compte son ´evolution au cours du temps, l’usage d’une logique tempo-relle pour exprimer les propri ´et ´es utilis ´ees par les politiques d’adaptation est un choix qui s’impose. Des informations sur l’environnement du syst `eme peuvent ˆetre obtenues en utilisant des capteurs externes (du point de vue du syst `eme) de fac¸on `a d ´etecter des changements. Ces changements de l’environnement correspondent `a des ´ev ´enements externes pouvant ˆetre pris en compte par les propri ´et ´es utilis ´ees par les r `egles incluses dans les politiques d’adaptation. Un mod `ele de syst `eme `a composants pouvant ´evoluer sur la base de politiques d’adaptation utilisant des sch ´emas temporels (bas ´es sur la lo-gique qMEDL [Gonnord et al., 2009]) prenant en compte des ´ev ´enements externes a ´et ´e introduit dans [Dormoy et al., 2010].

L’enforcement d’une propri ´et ´e `a l’ex ´ecution [Schneider, 2000, Falcone et al., 2008, Ligatti et al., 2009, Delaval et al., 2010] consiste `a utiliser la v ´erification des propri ´et ´es `a l’ex ´ecution pour essayer d’anticiper l’apparition d’une ex ´ecution non d ´esir ´ee qui pour-rait rendre le syst `eme d ´efaillant. Cette approche est en fait une extension de l’approche de v ´erification `a l’ex ´ecution qui permet de r ´epondre au besoin de pr ´evenir et de corri-ger un comportement non-d ´esir ´e. La r ´eflexion `a l’ex ´ecution [Bauer et al., 2008] est une approche utilisant aussi la v ´erification de propri ´et ´es lors de l’ex ´ecution du syst `eme. Cette m ´ethode a non seulement pour but d’observer le comportement du syst `eme mais aussi de donner un diagnostic de l’ex ´ecution. Lorsque le diagnostic est assez d ´etaill ´e et non-ambig ¨u, celui-ci peut ˆetre utilis ´e pour faire r ´eagir le syst `eme en ex ´ecutant des commandes, telles que des reconfigurations dynamiques par exemple, pour r ´etablir le syst `eme dans un ´etat bien d ´efini. Ainsi, en compl ´ement des propri ´et ´es utilis ´ees par les r `egles composant les politiques d’adaptation, on peut d ´efinir d’autres propri ´et ´es que l’on peut a) pr´eserver par le m´ecanisme d’enforcement, ou b) utiliser, via la r´eflexion, pour d ´eclencher des actions correctrices lorsque ces propri ´et ´es ne sont pas satisfaites. Lorsqu’on cherche `a s’assurer que l’impl ´ementation d’un syst `eme v ´erifie les propri ´et ´es qu’il doit respecter en analysant un ensemble d’ex ´ecutions pass ´ees, on parle de test plut ˆot que de v ´erification. Les premiers travaux th ´eoriques sur le test logiciel datent des ann ´ees 1970 avec l’apparition des notions de tests “fiables” [Howden, 1976] (reliable) et “id ´eaux” [Goodenough et al., 1975] (ideal) qui permettent d’´etablir que le test ne peut que montrer la pr ´esence d’erreur, mais jamais leur absence [Dijkstra, 1970].

(21)

Le concept d’hypoth `ese de test, qui d ´efinit les pr ´e-suppositions faites sur le syst `eme `a tester, a ´et ´e formalis ´e dans [Bernot et al., 1991]. Le test de syst `eme `a compo-sants, qui a ´emerg ´e `a la fin des ann ´ees 1990, permet de s’assurer que de nou-veaux assemblages de composants se comportent correctement dans leur nouvel en-vironnement [Weyuker, 1998]. En effet, bien que chaque composant ait pu ˆetre test ´e ind ´ependamment avec succ `es, leur combinaison peut engendrer des comportements impr ´evus.

D’apr `es [Bertolino, 2007], il subsiste deux d ´efis `a relever dans le cadre du test de syst `eme `a composants. Le premier est un d ´efi technique qui consiste `a trouver les moyens de pou-voir tester les composants au sein des diff ´erents contextes dans lesquels ils peuvent ˆetre d ´eploy ´es. Le second d ´efi, plus th ´eorique, est de pouvoir obtenir davantage d’informa-tions sur les composants `a tester que ce qui est propos ´e par les diff ´erents mod `eles de syst `emes `a composants. Ces informations additionnelles pourraient ˆetre utilis ´ees pour la g ´en ´eration de test. Il s’agirait, par exemple, de tests int ´egr ´es dans les composants eux-m ˆemes (built-in testing) ou de donn´ees permettant l’´elaboration de tests pertinents.

P

ROBLEMATIQUES ET CONTRIBUTIONS

´

Dans cette section, nous pr ´esentons les probl ´ematiques auxquelles nous souhaitons r ´epondre. Ensuite, nous d ´etaillons nos contributions en indiquant les probl ´ematiques adress ´ees.

PROBLEMATIQUES´

Le but du travail pr ´esent ´e dans ce document est de pouvoir guider et contr ˆoler les syst `emes `a composants dans leur ´evolution.

Le mod `ele de syst `eme `a composants pr ´esent ´e dans [L ´eger, 2009, L ´eger et al., 2010, Dormoy, 2011] peut ´evoluer d’une configuration `a une autre au moyen d’op ´erations de reconfiguration pouvant ˆetre des s ´equences de reconfigurations primitives. De plus lors de l’ ´evolution vers une configuration donn ´ee, celle-ci peut ne pas ˆetre dans un ´etat consis-tant. C’est pourquoi nous proposons la probl ´ematique suivante :

(1) “D´efinir un mod`ele permettant de garantir la consistance des configurations “cibles” sans se limiter `a des reconfigurations d´efinies comme des s´equences de

reconfigurations primitives.”

La logique FTPL introduite dans [Dormoy et al., 2012a] permet d’exprimer des contraintes architecturales et temporelles des syst `emes `a composants. Cette logique re-pose sur des sch ´emas de sp ´ecifications [Dwyer et al., 1999] et permet d’exprimer des propri ´et ´es en prenant en compte le d ´eclenchement des reconfigurations dynamiques g ´en ´er ´ees par le syst `eme. Ces propri ´et ´es peuvent alors porter sur la pass ´e ou sur le futur de l’ex ´ecution. La logique propos ´ee permet d’exprimer des exigences sur l’en-chainement des reconfigurations dynamiques d’un syst `eme `a composants qui doivent ˆetre v ´erifi ´ees pendant l’ex ´ecution. Dans [Dormoy et al., 2011], des propri ´et ´es temporelles sont ´evalu ´ees `a l’ex ´ecution de fac¸on centralis ´ees. On notera que, souvent, l’ ´evaluation

(22)

PROBL ´EMATIQUES ET CONTRIBUTIONS 7

de propri ´et ´es temporelles `a l’ex ´ecution n ´ecessite de maintenir un long historique des in-formations concernant les ´evaluation pass ´ees car elles peuvent ˆetre n ´ecessaires pour les ´evaluations futures. De plus, dans [Dormoy et al., 2010], des politiques d’adaptation utilisant des sch ´emas temporels (bas ´es sur la logique qMEDL) prennent en compte des ´ev ´enements externes. Malheureusement, qMEDL ne permet pas d’exprimer de contraintes architecturales sur des syst `emes `a composants. Il serait souhaitable d’avoir une seule et m ˆeme logique pour d ´efinir des politiques d’adaptation et exprimer des contraintes architecturales, c’est la raison pour laquelle nous proposons cette seconde probl ´ematique :

(2) “Choisir ou ´etablir une logique temporelle prenant en compte des ´ev´enements internes et externes afin d’exprimer des politiques d’adaptation et des contraintes architecturales ; ´evaluer, de fac¸on centralis´ee ou d´ecentralis´ee, les propri´et´es bas´ees sur cette logique `a l’ex´ecution sur des traces incompl`etes, sans avoir `a maintenir un long

historique ; et int´egrer ces propri´et´es dans des politiques d’adaptation.”

La probl ´ematique suivante concerne la mise en place d’une impl ´ementation du mod `ele mentionn ´e ci-dessus :

(3) “D´evelopper une application permettant de contrˆoler et guider les reconfigurations au moyen de politiques d’adaptation pour un syst`eme `a composants

bas´e sur Fractal ou sur un autre mod`ele `a composants ; et utiliser cette application sur diff´erents cas d’´etude.” Enfin, cette derni `ere probl ´ematique concerne le test de notre mod `ele :

(4) “Avoir la possibilit´e de tester le mod`ele `a composants reconfigurable en testant des politiques d’adaptation ; et en simulant le mod`ele de reconfiguration, ainsi que

l’´evaluation d´ecentralis´ee de propri´et´es temporelles.”

Nous pr ´esentons ci-dessous ces probl ´ematiques de fac¸on plus structur ´ee. La num ´erotation ´ecrite en caract `eres gras sera utilis ´ee par la suite pour d ´esigner des

´el ´ements de ces probl ´ematiques.

(1) D ´efinir un mod `ele permettant

(1.1) de garantir la consistance des configurations “cibles” ; et

(1.2) de ne pas se limiter `a des reconfigurations d ´efinies comme des s ´equences de reconfigurations primitives.

(2) Choisir ou ´etablir une logique temporelle

(2.1) prenant en compte des ´ev ´enements internes et externes afin d’exprimer des politiques d’adaptation et des contraintes architecturales ;

(2.2) telle que l’on puisse ´evaluer les propri ´et ´es bas ´ees sur cette logique (2.2.1) `a l’ex ´ecution sur des traces incompl `etes,

(2.2.2) sans avoir `a maintenir un long historique, et (2.2.3) de fac¸on d ´ecentralis ´ee ; et

(23)

(2.3) int ´egrer ces propri ´et ´es dans des politiques d’adaptation. (3) D ´evelopper une application permettant

(3.1) de contr ˆoler et guider les reconfigurations au moyen de politiques d’adaptation pour un syst `eme `a composants bas ´e sur Fractal ou sur un autre mod `ele `a composants ; et

(3.2) utiliser cette application sur diff ´erents cas d’ ´etude. (4) Avoir la possibilit ´e de tester notre mod `ele en

(4.1) testant des politiques d’adaptation ; et en (4.2) simulant

(4.2.1) notre mod `ele de reconfiguration, ainsi que

(4.2.2) l’ ´evaluation d ´ecentralis ´ee de propri ´et ´es temporelles.

CONTRIBUTIONS

Nous pr ´esentons nos contributions en indiquant, au moyen de la num ´erotation pr ´ec ´edemment ´etablie, `a quels ´el ´ements des probl ´ematiques ci-dessus elles corres-pondent.

Nous d ´efinissons un mod `ele abstrait en utilisant la logique du premier ordre. Ceci permet d’introduire la notion de reconfiguration gard ´ee afin de garantir la consistance des confi-gurations d’un syst `eme `a composants sous la condition que les conficonfi-gurations initiales de notre mod `ele soient consistantes. Cette propagation de la consistance est ´etendue `a un mod `ele interpr ´et ´e(1.1).

Ces reconfigurations gard ´ees utilisent les op ´erations de reconfiguration primitives en tant que “briques de base” pour construire des reconfigurations non-primitives impliquant des constructions, non seulement, s ´equentielles, mais aussi alternatives ou r ´ep ´etitives(1.2). Nous ´etendons la logique FTPL introduite dans [Dormoy et al., 2012a] avec des

´ev ´enements externes. Ceci permet de pouvoir utiliser la m ˆeme logique pour exprimer les politiques d’adaptation et les contraintes architecturales sur les syst `emes `a composants sans perdre en expressivit ´e(2.1).

Nous d ´efinissons la s ´emantique FTPL ( ´etendue aux ´ev ´enements externes) en utilisant les quatre valeurs de B4 pour l’ ´evaluation de propri ´et ´es FTPL `a l’ex ´ecution sur des

traces d’ex ´ecution incompl `etes (2.2.1). De plus, afin de pouvoir ´evaluer ces propri ´et ´es `a l’ex ´ecution sans avoir `a maintenir un historique des ´evaluations, nous introduisons une m ´ethode d’ ´evaluation progressive permettant dans la plupart des cas d’ ´evaluer une pro-pri ´et ´e FTPL `a une configuration donn ´ee en se basant seulement sur son ´evaluation `a la configuration pr ´ec ´edente(2.2.2).

Nous proposons une m ´ethode pour l’ ´evaluation d ´ecentralis ´ee de propri ´et ´es FTPL en utilisant les notions de progression et d’urgence. Une fonction de progression permet de r ´e ´ecrire une formule repr ´esentant l’ ´evaluation d’une propri ´et ´e `a une configuration donn ´ee de fac¸on qu’elle soit toujours pertinente `a la configuration suivante. Dans ce contexte, nous d ´ecomposons les formules en sous-formules auxquelles nous attribuons un niveau d’urgence pour d ´eterminer l’ordre dans lequel les ´evaluer. Nous posons aussi formellement le probl `eme de l’ ´evaluation d ´ecentralis ´ee et proposons un algorithme pour le r ´esoudre ainsi que des r ´esultats de correction et de terminaison(2.2.3).

(24)

ORGANISATION 9

Nous d ´efinissons des politiques d’adaptation int ´egrant la logique FTPL(2.3). Nous pro-posons aussi une relation de simulation sur les mod `eles de syst `emes `a composants re-configurables et nous d ´efinissons le probl `eme de l’adaptation. En utilisant cette relation, nous ´etablissons que le probl `eme de l’adaptation est semi-d ´ecidable et pr ´esentons un algorithme pour l’enforcement des politiques d’adaptation de syst `emes `a composants re-configurables. De plus, nous d ´ecrivons l’utilisation du fuzzing [Takanen et al., 2008], une technique de test que nous appliquons au cas sp ´ecifique du test de politiques d’adapta-tion(4.1).

Nous d ´ecrivons notre impl ´ementation permettant de guider et contr ˆoler les reconfi-gurations de syst `emes `a composants via des politiques d’adaptation bas ´ees sur la logique temporelle FTPL. Cette impl ´ementation supporte les mod `eles `a composants Fractal et FraSCAti (3.1). Nous pr ´esentons les diff ´erentes entit ´es qui composent notre impl ´ementation et d ´etaillons leur fonctionnement ainsi qu’un r ´esultat de conformit ´e ar-chitecturale en nous basant sur le mod `ele interpr ´et ´e pr ´ec ´edemment d ´efini. Ensuite, nous montrons une partie des informations contenues dans les logs g ´en ´er ´es par notre impl ´ementation et la fac¸on dont elles sont utilis ´ees pour produire les sorties pour notre interface graphique et pour la g ´en ´eration de tests bas ´es sur le fuzzing. Enfin, nous d ´ecrivons l’int ´egration de la fonctionnalit ´e de fuzzing permettant de tester des politiques d’adaptation(4.1).

Nous appliquons les politiques d’adaptation que nous avons d ´ecrites pr ´ec ´edemment `a un cas d’ ´etude en utilisant notre impl ´ementation qui permet de contr ˆoler et guider les recon-figurations de syst `emes `a composants en utilisant les m ´ecanismes d’enforcement et de r ´eflexion pour obtenir les r ´esultats attendus(3.2). Deux autres cas d’ ´etude ayant ´et ´e cha-cun impl ´ement ´es en utilisant les mod `eles de syst `emes `a composants Fractal et FraSCAti sont aussi pr ´esent ´es(3.2). De plus notre mod `ele a ´et ´e impl ´ement ´e avec l’outil de trans-formation de graphes GROOVE [Ghamarian et al., 2012]. Une exp ´erimentation de cette impl ´ementation est pr ´esent ´ee (4.2.1). En outre, nous d ´ecrivons la fac¸on dont nous si-mulons l’ ´evaluation d ´ecentralis ´ee sous GROOVE(4.2.2). Nous montrons comment nous repr ´esentons les propri ´et ´es FTPL sous GROOVE et pr ´esentons l’impl ´ementation (tou-jours sous GROOVE) de l’algorithme permettant l’ ´evaluation d ´ecentralis ´ee de propri ´et ´es FTPL(4.2.2).

O

RGANISATION

La figure 1 repr ´esente la structure du pr ´esent document (sans tenir compte des cha-pitres 1 et 2 qui proposent respectivement une introduction aux syst `emes `a composants et un recueil des d ´efinitions et notations utilis ´ees). Sur cette figure, les fl `eches pleines indiquent l’ordre de lecture des chapitres de ce m ´emoire, tandis que les fl `eches discon-tinues montrent les chemins possibles pour une lecture coh ´erente. Il est ainsi possible de lire dans l’ordre les chapitres 3, 5, 6, 8 et 10 et de revenir plus tard `a la lecture des chapitres 4, 7 et 9. La suite du document est organis ´ee en quatre parties de la fac¸on suivante :

— La partie I pr ´esente le contexte scientifique et d ´efinit les notions et notations uti-lis ´ees dans ce document,

— la partie II d ´ecrit notre mod `ele de reconfiguration, d ´efinit les reconfigurations gard ´ees et ´etend la logique FTPL pour supporter les ´ev ´enements externes,

(25)

— la partie III pr ´esente l’ ´evaluation centralis ´ee et d ´ecentralis ´ee des propri ´et ´es FTPL `a l’ex ´ecution ainsi que leur int ´egration dans des politiques d’adaptation,

— La partie IV d ´ecrit notre impl ´ementation ainsi que plusieurs cas d’ ´etude et simula-tions, et

— la conclusion nous permet de dresser un bilan et d’envisager les perspectives des travaux pr ´esent ´es dans ce m ´emoire.

Chapitre 3 Mod ´elisation Chapitre 4 Reconfigurations gard ´ees Chapitre 5 Propri ´et ´es temporelles

Chapitre 6 ´

Evaluation de pro-pri ´et ´es tempo-relles `a l’ex ´ecution

Chapitre 7 ´

Evaluation d ´ecentralis ´ee `a l’ex ´ecution Chapitre 8 Politiques d’adaptation Chapitre 9 Structure logicielle Chapitre 10 Exp ´erimentations

FIGURE1 – Structure du m ´emoire

PARTIE I : CONTEXTE SCIENTIFIQUE ET PRELIMINAIRES´

Dans le chapitre 1 nous introduisons le concept de composant en explicitant la notion d’architectures orient ´ees composants, puis nous exposons l’id ´ee de recon-figuration dans le cadre des syst `emes `a composants. Pour finir, nous pr ´esentons les deux impl ´ementations de syst `emes `a composants que nous utilisons pour illus-trer les contributions de cette th `ese ; c’est- `a-dire les mod `eles `a composants Frac-tal [Bruneton et al., 2004, Bruneton et al., 2006] et FraSCAti [Seinturier et al., 2009, Seinturier et al., 2012].

(26)

ORGANISATION 11

Le chapitre 2 est consacr ´e aux d ´efinitions et notations utilis ´ees dans la suite du docu-ment. Nous nous int ´eressons `a la sp ´ecification et la v ´erification des syst `emes ainsi qu’ `a l’expression de leurs propri ´et ´es.

PARTIE II : MODELISATION DES RECONFIGURATIONS DYNAMIQUES´

Au chapitre 3, nous proposons, comme dans [Dormoy, 2011] de d ´ecrire la s ´emantique d’un syst `eme `a composants en utilisant un syst `eme de transition. Pour ce faire, nous pr ´esentons dans un premier temps, pour servir de base aux exemples utilis ´es, le compo-sant compositeLocation utilis ´e pour le positionnement du Cycab, un v ´ehicule autonome. Ensuite, nous d ´efinissons une s ´emantique op ´erationnelle permettant de d ´ecrire l’archi-tecture des syst `emes `a composants ainsi que les reconfigurations primitives qui sont des op ´erations d’ ´evolution basiques permettant de passer d’une configuration architecturale `a une autre pour d ´efinir les syst `emes `a composants reconfigurables primitifs. Enfin, nous abordons la notion de reconfiguration non primitive pour d ´efinir les syst `emes `a compo-sants reconfigurables (non primitifs).

Nous proposons dans le chapitre 4 de d ´ecrire des contraintes sur les ´el ´ements et re-lations des configurations de syst `emes `a composants reconfigurables afin de pouvoir garantir que le syst `eme `a composants consid ´er ´e soit dans un ´etat permettant son bon fonctionnement. En outre, en nous basant sur les pr ´e/post-conditions des op ´erations pri-mitives de reconfiguration, nous introduisons les reconfigurations gard ´ees qui permettent d’utiliser les op ´erations primitives en tant que “briques de base” pour construire des re-configurations non-primitives impliquant des constructions, non seulement, s ´equentielles, mais aussi alternatives ou r ´ep ´etitives. Ensuite, nous montrons que l’utilisation de recon-figurations gard ´ees garantit la consistance des conrecon-figurations d’un syst `eme `a compo-sants sous la condition que les configurations initiales soient consistantes. Enfin, nous d ´efinissons un mod `ele interpr ´et ´e en partant du mod `ele abstrait pr ´esent ´e au chapitre 3. Le chapitre 5 pr ´esente la logique FTPL introduite dans [Dormoy et al., 2012a] qui est uti-lis ´ee pour exprimer des contraintes architecturales et temporelles sur des syst `emes `a composants mais ne permet pas la prise en compte d’ ´ev ´enements externes. C’est pour-quoi nous ´etendons cette logique avec des ´ev ´enements externes afin de pouvoir utiliser la m ˆeme logique pour exprimer les politiques d’adaptation et les contraintes architectu-rales sur les syst `emes `a composants sans perdre en expressivit ´e. Nous pr ´esentons la syntaxe de la logique FTPL ´etendue aux ´ev ´enements externes, puis nous d ´ecrivons sa s ´emantique et la notion de satisfaction d’une propri ´et ´e FTPL par un syst `eme `a compo-sants.

PARTIE III : V ´ERIFICATION ET TEST DES RECONFIGURATIONS DYNAMIQUES

Nous proposons au chapitre 6, apr `es avoir introduit le concept g ´en ´eral d’ ´evaluation `a l’ex ´ecution, une logique `a quatre valeurs (“faux”, “potentiellement faux”, “potentiellement vrai” et “vrai”) pour ´evaluer les propri ´et ´es FTPL `a l’ex ´ecution sur des traces d’ex ´ecution incompl `etes. En outre, pour pouvoir ´evaluer les propri ´et ´es FTPL `a l’ex ´ecution sans avoir `a maintenir un historique des ´evaluations, nous introduisons une m ´ethode d’ ´evaluation progressive des propri ´et ´es FTPL permettant dans la plupart des cas d’ ´evaluer une pro-pri ´et ´e FTPL `a une configuration donn ´ee en se basant seulement sur son ´evaluation `a la configuration pr ´ec ´edente.

(27)

En s’inspirant de l’ ´evaluation d ´ecentralis ´ee de formules LTL pr ´esent ´ee dans [Bauer et al., 2012], nous proposons au chapitre 7 une m ´ethode pour l’ ´evaluation d ´ecentralis ´ee de propri ´et ´es FTPL. Nous d ´efinissons dans un premier temps les conven-tions utilis ´ees pour l’ ´evaluation d ´ecentralis ´ee. Ensuite, nous pr ´esentons les noconven-tions de progression et d’urgence. Une fonction de progression nous permet de r ´e ´ecrire une formule repr ´esentant l’ ´evaluation d’une propri ´et ´e FTPL `a une configuration donn ´ee de fac¸on qu’elle soit toujours pertinente `a la configuration suivante. Dans le contexte de l’ ´evaluation d ´ecentralis ´ee, nous d ´ecomposons les formules en sous-formules auxquelles nous attribuons un niveau d’urgence pour d ´eterminer l’ordre dans lequel les ´evaluer. Enfin, nous posons formellement le probl `eme de l’ ´evaluation d ´ecentralis ´ee et proposons un algorithme pour le r ´esoudre ainsi que des r ´esultats de correction et de terminaison. Le chapitre 8 montre comment nous int ´egrons la logique FTPL ´etendue aux ´ev ´enements externes d ´efinie au chapitre 5 dans des politiques d’adaptation que nous d ´efinissons. Nous proposons aussi une relation de simulation sur les mod `eles de syst `emes `a compo-sants reconfigurables et d ´efinissons le probl `eme de l’adaptation. En utilisant cette rela-tion, nous ´etablissons que le probl `eme de l’adaptation est semi-d ´ecidable. De plus, nous fournissons un algorithme pour l’impl ´ementation de politiques d’adaptation pour l’enfor-cement de propri ´et ´es FTPL sur des syst `emes `a composants reconfigurables. Enfin, nous pr ´esentons l’usage du fuzzing pour le test de politiques d’adaptation.

PARTIE IV : VALIDATION EXPERIMENTALE´

Le chapitre 9 pr ´esente l’impl ´ementation que nous avons d ´evelopp ´ee pour les reconfi-gurations dynamiques de syst `emes `a composants guid ´ees par des politiques d’adapta-tion bas ´ees sur des sch ´emas temporels. Dans un premier temps, nous d ´ecrivons notre impl ´ementation, avec les entit ´es qui la composent et leur fonctionnement, puis nous ´enonc¸ons un r ´esultat de conformit ´e architecturale. Ensuite, nous d ´etaillons une partie des informations contenues dans les logs g ´en ´er ´es par notre impl ´ementation et comment nous les utilisons pour en extraire les ´el ´ements permettant de produire une interface gra-phique. Enfin nous pr ´esentons l’int ´egration de la fonctionnalit ´e de fuzzing permettant de tester des politiques d’adaptation.

Au chapitre 10, nous montrons comment l’ex ´ecution de notre impl ´ementation permet de contr ˆoler et guider les reconfigurations du composantLocation, pr ´esent ´e au chapitre 3, en utilisant les m ´ecanismes d’enforcement et de r ´eflexion. Deux autres cas d’ ´etude ayant ´et ´e chacun impl ´ement ´es en utilisant les mod `eles de syst `emes `a composants Fractal et FraSCAti sont pr ´esent ´es. Le premier mod ´elise des machines virtuelles au sein d’un en-vironnement cloud et le second s’inspire du serveur HTTP Comanche Http Server uti-lis ´e dans [Chauvel et al., 2009]. De plus notre mod `ele a ´et ´e impl ´ement ´e avec l’outil de transformation de graphe GROOVE [Ghamarian et al., 2012]. Une exp ´erimentation de cette impl ´ementation utilisant comme cas d’ ´etude une machine virtuelle de l’environne-mentcloud est pr´esent´ee. Enfin, nous d´ecrivons la fac¸on dont nous simulons l’´evaluation d ´ecentralis ´ee sous GROOVE. Nous montrons comment nous repr ´esentons les propri ´et ´es FTPL sous GROOVE et pr ´esentons l’impl ´ementation sous GROOVE de l’algorithme ´etabli pour l’ ´evaluation d ´ecentralis ´ee de propri ´et ´es FTPL `a l’ex ´ecution sur le mod `ele du syst `eme `a composantsLocation.

(28)

PUBLICATIONS 13

CONCLUSION ET PERSPECTIVES

Dans cette partie, nous dressons le bilan et pr ´esentons les perspectives du travail r ´ealis ´e au cours de cette th `ese.

P

UBLICATIONS

Les travaux pr ´esent ´es dans cette th `ese ont ´et ´e soutenus en partie par le projet Labex AC-TION, ANR-11-LABEX-0001-01. Par ailleurs, les diff ´erentes contributions de cette th `ese, list ´ees ci-dessous, ont ´et ´e publi ´ees dans une revue nationale et diff ´erentes conf ´erences internationales :

— Les contributions des chapitres 5 et 6 et une partie de celles des chapitres 8, 9 et 10 ont ´et ´e publi ´ees dans [Kouchnarenko et al., 2014a].

— Les contributions du chapitre 7 et une partie de celles des chapitres 9 et 10 ont ´et ´e publi ´ees dans [Kouchnarenko et al., 2014b].

— Les contributions du chapitre 4 et une partie de celles des chapitres 9 et 10 ont ´et ´e publi ´ees dans [Kouchnarenko et al., 2015].

— Les contributions du chapitres 3 et une partie des contributions des chapitres 9 et 10 ont ´et ´e publi ´ees dans [Kouchnarenko et al., 2016].

(29)
(30)

I

C

ONTEXTE SCIENTIFIQUE ET PR

ELIMINAIRES

´

(31)
(32)

1

L

ES SYST

EMES

`

A COMPOSANTS

`

B

ien que le terme de composants avait d ´ej `a ´et ´e utilis ´e dans les ann ´ees 1960 pourd ´esigner des fragments de code, ce concept utilis ´e dans le cadre de l’ing ´enierie logicielle `a base de composants est relativement r ´ecent. Intuitivement, cette technique de d ´eveloppement utilise un ensemble de briques logicielles (i.e., des composants) pou-vant ˆetre assembl ´ees pour construire une application. Cette m ´ethodologie repose sur des composants r ´eutilisables et favorise la mise en place de syst `emes modulaires qui peuvent ˆetre appr ´ehend ´es et d ´evelopp ´es plus simplement. Dans ce chapitre, nous introduisons le concept de composant en explicitant la notion d’architectures orient ´ees composants, puis nous exposons l’id ´ee de reconfiguration dans le cadre des syst `emes `a composants. Pour finir, nous pr ´esentons les deux impl ´ementations de syst `emes `a composants que nous utilisons pour illustrer les contributions de cette th `ese ; c’est- `a-dire les mod `eles `a composants Fractal et FraSCAti.

Sommaire

1.1 Architectures orient ´ees composants . . . . 18 1.1.1 Le concept de composant . . . 18 1.1.2 Architectures logicielles bas ´ees sur les composants . . . 20 1.1.2.1 Composants primitifs et composites . . . 21 1.1.2.2 Interfaces . . . 21 1.1.2.3 Assemblages de composants . . . 22 1.1.3 Quelques approches de mod `eles `a composants . . . 23 1.2 Modification dynamique des syst `emes `a composants . . . . 25 1.2.1 Reconfigurations dynamiques . . . 25 1.2.2 Syst `emes r ´eflexifs et adaptatifs . . . 26 1.2.3 Boucle de contr ˆole et boucle MAPE . . . 27 1.3 Le mod `ele `a composants Fractal . . . . 29 1.3.1 Composants Fractal . . . 29 1.3.2 Impl ´ementations . . . 31 1.4 Le mod `ele `a composants FraSCAti . . . . 31 1.4.1 La sp ´ecification SCA . . . 32 1.4.2 L’impl ´ementation de SCA par FraSCAti . . . 32 1.4.3 Comparaison avec d’autres impl ´ementations de SCA . . . 34 1.5 Conclusion . . . . 34

(33)

1.1/

A

RCHITECTURES ORIENTEES COMPOSANTS

´

Les architectures orient ´ees composants sont souvent mentionn ´ees en utilisant les acro-nymes CBD (Component-Based software Development), CBSE (Component-Based Soft-ware Engineering) [Szyperski, 1995, Council et al., 2001] ou SCA (Service Component Architecture). Les principaux avantages de ces approches r ´esident dans la modula-rit ´e rendue possible par l’utilisation de composants et dans la r ´e-utilisabilit ´e de ceux-ci. Ces aspects permettent notamment de faciliter le d ´eveloppement de logiciels com-plexes. Dans cette section, nous d ´etaillons le concept de composant, puis nous nous int ´eresserons aux architectures logicielles bas ´ees sur les composants. Enfin, pour finir, nous pr ´esentons bri `evement quelques approches existantes de mod `eles `a composants.

1.1.1/ LE CONCEPT DE COMPOSANT

L’examen de l’ ´evolution des concepts utilis ´es par les technologies de l’information tend `a montrer une constante volont ´e de simplification du d ´eveloppement au cours de la-quelle les concepts manipul ´es sont de plus en plus abstraits au fur et `a mesure que la complexit ´e des syst `emes augmente. La programmation pour les syst `emes complexes et distribu ´es a rendu n ´ecessaire un type d’architecture logicielle bas ´ee sur des entit ´es au-tonomes pouvant interagir avec leur environnement et entre-elles. Il est `a noter que le terme d’architecture logicielle, bien qu’utilis ´e depuis les ann ´ees 1960 [Naur et al., 1969], ne s’est impos ´e qu’ `a partir des ann ´ees 1990 [Kruchten et al., 2006].

La figure 1.1 extraite de [Ait Wakrime, 2015] montre l’ ´evolution des architectures logi-cielles depuis les ann ´ees 1960 qui ont vu l’ ´emergence d’une architecture bas ´ee sur la programmation structur ´ee [Warnier et al., 1974]. Par la suite, l’architecture bas ´ee sur la d ´ecomposition fonctionnelle et celle bas ´ee sur le mode de communication client-serveur [Dahl et al., 1972, Shapiro, 1969]1 sont apparues. L’architecture 3-tiers, qui est une extension de l’architecture client-serveur [Eckerson, 1995], a vu le jour durant la d ´ecennie 1980-1990.

Au fil des ann ´ees, les recherches acad ´emiques ont fait apparaˆıtre des architectures dis-tribu ´ees orient ´ees objets [Clarke et al., 1999, Nierstrasz, 1995]. La programmation ob-jet a ´et ´e une ´evolution majeure de la programmation proc ´edurale en permettant un ni-veau d’abstraction plus ´elev ´e et davantage de modularit ´e, notamment gr ˆace aux no-tions d’h ´eritage et de polymorphisme. Enfin, la technologie des architectures logicielles `a base de composants est progressivement devenue plus puissante et a facilit ´e le d ´eveloppement des syst `emes [Council et al., 2001]. En effet, l’approche objet n’appa-raissait pas suffisamment abstraite et souffrait du manque de m ´ecanismes permettant la composition des objets [Meyer, 1988]. Il s’av ´erait difficile de mettre en ´evidence les liens entre les diff ´erents objets au sein d’une application lorsque leur nombre devenait important. En bref, la programmation objet ´etait encore trop proche du code pour per-mettre le d ´eveloppement ais ´e d’applications tirant pleinement partie de concepts tels que lar ´eutilisationet lasubstitutiond’objets.

Les composants peuvent ˆetre consid ´er ´es comme des boˆıtes noires (black boxes) dont l’impl ´ementation ou la structure interne n’est pas connue a priori. Ceci favorise la r ´eutilisation, l’interchangeabilit ´e et la s ´eparation des pr ´eoccupations (separation of

(34)

1.1. ARCHITECTURES ORIENT ´EES COMPOSANTS 19

22 Chapitre 2. Architecture par composants

Figure 2.1 – L’historique des architectures logicielles.

2.3.1 Composant logiciel

Un composant logiciel est un élément architectural qui encapsule la partie métier de l’application. Il existe plusieurs définitions dans la littérature d’un composant mais la plupart sont intuitives car elles se concentrent sur les aspects généraux d’un compo-sant comme la définition donnée par Microsoft [68] :

« . . . a piece of compiled software, which is offering a service . . . »

D’autres détaillent la caractérisation d’un composant comme celle donnée par Sa-metinger dans [176] :

« Reusable software components are self-contained, clearly identifiable pieces that describe and/or perform specific functions, have clear interfaces, appropriate docu-mentation, and a defined reuse status. »

par D’Souza et Wills dans [84] :

« A coherent package of software artifacts that can be independently developed and delivered as a unit and that can be composed, unchanged, with other components to build something larger. »

FIGURE1.1 – Historique des architectures logicielles (extrait de [Ait Wakrime, 2015])

concerns). On notera qu’il peut aussi ˆetre possible, suivant les informations dont on dis-pose, de consid ´erer les composants comme des boˆıtes blanches (white boxes — dans le cas o `u l’on connaˆıt la totalit ´e de l’impl ´ementation et de la structure interne) ou grises (grey boxes — dans le cas o`u l’on ne dispose que d’une partie des informations).

Il n’existe pas de d ´efinition unique d’un composant et la plupart de celles qu’on trouve dans la litt ´erature sont intuitives. La d ´efinition donn ´ee par Micro-soft [MicroMicro-soft Corporation, 1995] est tr `es g ´en ´erale :

“ . . . a piece of compiled software, which is offering a service . . . ”

D’Souza et Wills, dans [D’Souza et al., 1998], proposent une d ´efinition plus pr ´ecise ; les auteurs insistent sur la notion de composition entre composants qui doit pouvoir se faire sans avoir `a effectuer le moindre changement au niveau des composants eux-m ˆemes :

“A coherent package of software artifacts that can be independently developed and delivered as a unit and that can be composed, unchanged, with other components to

build something larger.”

La d ´efinition donn ´ee par Sametinger dans [Sametinger, 1997] contient la notion de r ´e-utilisabilit ´e et mentionne que les interfaces (des composants) doivent ˆetre clairement d ´efinies :

(35)

“Reusable software components are self-contained, clearly identifiable pieces that describe and/or perform specific functions, have clear interfaces, appropriate

documentation, and a defined reuse status.”

C’est aussi le cas de la d ´efinition qui se trouve dans la sp ´ecification UML 1.3 (OMG 1999) [Rayner et al., 2005] :

“A physical, replaceable part of a system that packages implementation and provides the realization of a set of interfaces. A component represents a physical piece of implementation of a system, including software code (source, binary or executable) or

equivalents such as scripts or command files.”

Enfin, la d ´efinition la plus utilis ´ee est celle de Szyperski dans [Szyperski, 1995] :

“A software component is a unit of composition with contractually specified interfaces and explicit context dependencies only. A software component can be deployed

independently and is subject to composition by third parties.”

Nous pouvons nous inspirer de ces d ´efinitions (en particulier de la derni `ere) pour expri-mer trois propri ´et ´es des composants :

— Les composants sont des unit ´es de composition qui peuvent ˆetre assembl ´ees pour former une application,

— les services fournis ainsi que les d ´ependances requises par un composant sont exprim ´es sous la forme de contrats explicites, et

— les composants sont ind ´ependants entres-eux et peuvent donc ˆetre d ´eploy ´es ind ´ependamment.

On peut donc concevoir un composant comme un ´el ´ement architectural, encapsulant une partie m ´etier d’une application, qui fournit des services et peut requ ´erir des d ´ependances. Lors de l’assemblage de plusieurs composants, des m ´ecanismes de communication ap-paraissent avec la sp ´ecification de contrats entre les composants. Ces contrat peuvent s’av ´erer plus complexes que ceux utilis ´es dans le cas de la programmation objet mais apportent une modularit ´e plus fine tout en facilitant la r ´eutilisation des ´el ´ements d’un syst `eme. Cette modularit ´e permet aussi de renforcer l’encapsulation des parties m ´etier d’une application au sein de composants. Ces notions de modularit ´e et d’encapsulation permettent de rendre un assemblage de composants adaptable `a son environnement. Nous d ´etaillerons cet aspect dans la section 1.2.

1.1.2/ ARCHITECTURES LOGICIELLES BASEES SUR LES COMPOSANTS´

Nous avons vu qu’il n’y a pas de d ´efinition unique de ce qu’est un composant ; c’est pour-quoi les mod `eles `a composants sont souvent d ´efinis en fonction d’un domaine particulier. Nous pouvons n ´eanmoins d ´efinir les principaux concepts communs `a la plupart des ap-plications utilisant des composants. Dans cette section, nous pr ´esentons les notions de composants primitifs et composites, puis nous int ´eressons `a la fac¸on dont les compo-sants sont li ´es entres-eux en explicitant le concept d’interface. Enfin, nous montrerons comment s’effectue l’assemblage d’un syst `eme `a composants en utilisant la notion de composition.

(36)

1.1. ARCHITECTURES ORIENT ´EES COMPOSANTS 21

1.1.2.1/ COMPOSANTS PRIMITIFS ET COMPOSITES

La plupart des d ´efinitions s’accordent sur le fait qu’un composant soit une entit ´e au-tonome capable de fournir un service. De plus, le d ´eveloppement et l’assemblage des composants ´etant ind ´ependants, un m ˆeme composant peut ˆetre utilis ´e, dans diff ´erents contextes, au sein de diverses applications. C’est pourquoi, dans les approches `a base de composants, deux types de composants existent :

— Les composants composites, qui sont des composants qui contiennent d’autres composants appel ´es sous-composants, et

— les composantsprimitifs, qui sont des composants qui ne contiennent pas de sous-composants et qui, par exemple, peuvent ex ´ecuter du code ou ˆetre li ´es `a un objet.

La figure1.2 illustre ces deux notions. Les composants C3, C4, C5 sont des composants primitifs. Le composant C2 est un composant composite qui contient C3 et C4. Le com-posant C1 est un comcom-posant composite qui contient C2 et C5.

Composant compositeC1 Composant compositeC2 Composant primitif C3 Composant primitif C4 Composant primitif C5

FIGURE1.2 – Exemple de composant composite

Ainsi, les composants composites encapsulent des composants primitifs ou d’autres composants composites, ce qui permet de masquer certains d ´etails dans une architec-ture logicielle. La notion de modularit ´e en est renforc ´ee puisque ce concept permet la r ´eutilisation directe d’assemblages de composants. Ces composants composites peuvent alors ˆetre “mis sur une ´etag `ere” selon le principe de COTS (Component Off The Shelf ) qui permet la mise `a disposition de composants pr ˆets `a l’emploi. Cet aspect li ´e aux compo-sants facilite aussi la compr ´ehension du syst `eme en permettant de consid ´erer le syst `eme

`a un haut niveau d’abstraction.

1.1.2.2/ INTERFACES

Les interfaces d’un composant sont les seuls points d’acc `es du programme encapsul ´e dans ce composant depuis ou vers l’ext ´erieur. Les seules informations n ´ecessaires `a l’utilisation du composant sont les sp ´ecifications de ses interfaces ; cela peut prendre la forme d’une description des propri ´et ´es et d ´ependances fonctionnelles ou des services offerts par le composant [Bergner et al., 1998]. Ainsi, il n’est pas n ´ecessaire de connaˆıtre le contenu d’un composant (qu’il s’agisse de code dans le cas d’un composant primitif ou d’autres composants dans le cadre d’un composant composite) pour pouvoir l’utiliser.

Figure

Figure 2.1 – L’historique des architectures logicielles.
Figure 2. F RA SCA TI Platform Architecture.

Références

Documents relatifs

Le but de cet exercice, est de mettre en ´ evidence le fait qu’il y a plusieurs questions ` a se poser sur un syst` eme d’´ equations ` a part sa r´ esolution.. Lorsqu’on a

[r]

On note r la masse de substance radio- active, p la masse totale de plastique pour les coques et enfin m le total en minutes de travail, n´ecessaires.. `a la fabrication

Le syst` eme admet bien une solution num´ erique mais elle n’est pas interpr´

En d´ epit d’une unification des statuts visant ` a r´ epondre aux seuls int´ erˆ ets cat´ egoriels, la formation des professeurs de lyc´ ees et coll` eges a des n´ ecessit´ es

b) Montrer qu’en ajoutant simultan´ ement ` a chaque ´ equation d’un syst` eme un multiple d’une autre, on peut changer

Pour r´ esoudre un syst` eme, on va faire des combinaisons lin´ eaires d’´ equations, et produire ainsi des ´ equations plus simples... Nombre

Pour chacune des valeurs propres, d´ eterminer un vecteur propre associ´ e.. b) D´ eterminer une matrice P et une matrice diagonale D telles que C = P