Reconfiguration dynamique des architectures logicielles

Le travail que nous prรฉsentons dans cette thรจse a รฉtรฉ รฉlaborรฉ au niveau de lโ€™รฉquipe SAFA du laboratoire dโ€™ingรฉnierie des systรจmes complexes (LISCO) de lโ€™universitรฉ de Badji-Mokhtar dโ€™Annaba. Lโ€™รฉquipe SAFA (Software Architecture and Formal Approaches) sโ€™active autour des thรจmes liรฉs ร  lโ€™ingรฉnierie du logiciel. Son activitรฉ de recherche se concentre actuellement sur les nouveaux paradigmes de gรฉnie logiciel, et plus particuliรจrement les paradigmes dโ€™architectures logicielles et les approches formelles.

Lโ€™architecture logicielle comme nouvelle discipline du gรฉnie logicielle, dรฉcrit de maniรจre abstraite les systรจmes ร  lโ€™aide de composants logiciels, les relations entre ces composants, leurs propriรฉtรฉs fonctionnelles et non fonctionnelles ainsi que les principes qui rรฉgissent leur conception et leur รฉvolution [IEE 00]. Afin de maitriser le processus de dรฉveloppement de logiciels basรฉs architectures, un langage de spรฉcification est nรฉcessaire. Les langages de description dโ€™architectures (ADLs) rรฉpondent ร  ce besoin, et fournissent une reprรฉsentation abstraite des รฉlรฉments de base constituant un systรจme complexe, en rรฉduisant le coรปt de dรฉtection et de correction dโ€™erreurs [Med 02]. Ces langages sont formels et peuvent dรฉcrire lโ€™architecture dโ€™un systรจme assez complexe [Cle 96]. Un ADL garanti un niveau รฉlevรฉ dโ€™abstraction, ignorant ainsi les dรฉtails dโ€™implรฉmentation [Med 00]. Grรขce ร  cette description abstraite, les ADLs aident les dรฉveloppeurs, en facilitant le contrรดle du processus de dรฉveloppement ร  un stade avancรฉ [Hus 13]. Les ADLs sont donc cruciaux dans le dรฉveloppement logiciel particuliรจrement ceux basรฉs architecture. Chaque ADL a ses caractรฉristiques, certains ADLs ont รฉtรฉ proposรฉ pour la modรฉlisation dโ€™architectures dans un domaine bien prรฉcis, dโ€™autres sont plus spรฉcialisรฉs. Voici une liste non exhaustive dโ€™ADLs prรฉsents dans la littรฉrature : LIEANNA [Tra 93], Artek [Ter 95], MetaH [Bin 96], Aesop [Sha 96], SADL [Mor 97] ; [Mor 95), Weaves [Gor 94] ; [Gor91], Wright [All 97], AESOP [Gar 95], Darwin [Mag 95], Acme [Gar 00], Rapide [Luc 95], UNICON [Sha 95] and C2 [Tay 96].

Les applications des ADLs sont trรจs diverses, cโ€™est pourquoi beaucoup dโ€™ADLs sont dรฉveloppรฉs. La liste est si importante quโ€™il est fastidieux de discuter en dรฉtail chaque ADL avec son รฉvaluation. Dans [Hus 13], Sajjad organise ces dรฉtailles, en regroupant les secteurs industriel et universitaire.

Prรฉsentation des contributions

Bien que certains ADLs supportent les reconfigurations dynamiques ร  des niveaux variables, le problรจme de la fiabilitรฉ de ces reconfigurations nโ€™est pas rรฉellement abordรฉ comme un objectif ร  part entiรจre. En effet cet aspect est peu dรฉtaillรฉ, et il manque clairement un mรฉcanisme robuste pour lโ€™รฉvaluation des systรจmes. La programmation par composants, associรฉe ร  des outils et des langages dรฉdiรฉs, comme les langages de description dโ€™architecture, est un bon support pour les reconfigurations dynamiques dโ€™architecture. Grรขce ร  la rรฉflexion, les modรจles de composants permettent lโ€™introspection et les modifications dans les systรจmes ร  lโ€™exรฉcution, tout en maintenant une connexion causale entre architecture et systรจme concret. Modifier dynamiquement un systรจme ร  travers son architecture nโ€™est pas sans poser des problรจmes de fiabilitรฉ, et qui demeure une prรฉoccupation importante du gรฉnie logiciel. En gรฉnรฉral, la plupart des modรจles de composants ne dรฉfinissent pas les besoins et les rรจgles ร  respecter pour que les applications basรฉes sur ces modรจles puissent รฉvoluer et sโ€™adapter dynamiquement au cours de leur exรฉcution [Ket 04].

La fiabilitรฉ des reconfigurations dynamiques est un problรจme global qui requiert une dรฉmarche rigoureuse, dont le point de dรฉpart serait de dรฉfinir le concept de cohรฉrence dans une architecture, essentiellement dโ€™un point de vue structurel. La cohรฉrence dโ€™une architecture est ensuite conditionnรฉe par la satisfaction dโ€™un ensemble de contraintes exprimรฉes dans une certaine logique. Les contraintes doivent รชtre extensibles, afin de permettre dโ€™exprimer les invariants aux niveaux des configurations, et de couvrir le cotรฉ sรฉmantique des opรฉrations de reconfiguration. La cohรฉrence doit รชtre maintenue mรชme dans le systรจme reconfigurรฉ. Il est aussi important de vรฉrifier les contraintes avant de valider les modifications des reconfigurations.

Ce travail [Mez 18], permet de formaliser une configuration dโ€™architecture (figure 1.1). Dans cet objectif, nous dรฉcrivons les contraintes en logique des prรฉdicats du premier ordre, que nous traduisons ensuite en utilisant un style architectural Acme/Armani dรฉtaillรฉ dans [Mon 01] afin de valider la configuration statique. En ce qui concerne lโ€™aspect dynamique, il est validรฉ par un autre processus, oรน les contraintes sontย  ย en Plastik et le systรจme validรฉ dans le modรจle OpenCom. Etant donnรฉ lโ€™influence de lโ€™architecture dโ€™un systรจme sur lโ€™ensemble des attributs de qualitรฉ dโ€™un systรจme logiciel, il devient pertinent de dรฉvelopper un support pour la qualitรฉ logicielle dรฉs le niveau architectural. En effet, ce travail reprรฉsente le niveau de base qui inclut : le style architectural, les composants, les connecteurs et les contraintes de configuration. En prรฉservant la conformitรฉ de la couche architecturale ร  la couche application, et en assurant la consistance, une spรฉcification formelle dโ€™un modรจle Acme peut servir ร  plusieurs fins :
โ€” Permettre une vรฉrification formelle dโ€™une conception Acme ;
โ€” Fournir la base dโ€™un langage de description dโ€™architecture formelle pour Acme ;
โ€” Fournir une spรฉcification plus abstraite et indรฉpendante du langage de programmation pour le modรจle Acme ;
โ€” Permettre une comparaison rigoureuse avec les autres modรจles de composants ;
โ€” Permettre une spรฉcification formelle et une vรฉrification des outils Acme ;

Programmation par composants

La programmation par composant est un paradigme de dรฉveloppement pour la conception et lโ€™implรฉmentation de systรจmes logiciels et qui ressort de lโ€™incapacitรฉ de lโ€™approche orientรฉ objet ร  soutenir une rรฉutilisation efficace [Jai 16]. Les composants sont plus abstraits que les classes dโ€™objets et peuvent รชtre considรฉrรฉs comme des fournisseurs de services autonomes. La composition doit รชtre conforme aux rรจgles de construction des architectures, et se fait grรขce aux langages de description des architectures. En ce qui concerne les contraintes, elles sont gรฉrรฉes par des styles architecturaux. Avec la croissance de la taille et de la complexitรฉ du logiciel, lโ€™approche traditionnelle qui correspond ร  la construction ร  partir de zรฉro, devient de plus en plus inefficace en termes de productivitรฉ et de coรปt. Afin de rรฉpondre aux exigences de qualitรฉ, et des logiciels modernes ร  grande รฉchelle, diffรฉrents paradigmes de dรฉveloppement ont รฉtรฉ introduits dans le but de faciliter la crรฉation de systรจmes รฉvolutifs, flexibles, fiables et rรฉutilisables.

La programmation par objets a รฉmergรฉ depuis une vingtaine dโ€™annรฉe [Coi 06] et sโ€™est ainsi imposรฉe comme รฉvolution majeure par rapport ร  la programmation procรฉdurale. Le paradigme objet apporte en effet de bonnes propriรฉtรฉs, telles quโ€™un niveau dโ€™abstraction plus รฉlevรฉ (concepts de classes et dโ€™instances), etc. Cependant, lโ€™objet nโ€™est pas suffisamment abstrait et reste ร  un niveau de granularitรฉ trop fin pour maitriser aisรฉment la structuration des systรจmes complexes, structuration indispensable ร  leur maintenance et ร  leur รฉvolution. Les lacunes de lโ€™approche objet ont menรฉ ร  la crรฉation dโ€™un nouveau paradigme de programmation : le composant. Le paradigme composant est une approche appropriรฉe et mรฉthodique, qui implique la construction dโ€™un systรจme en utilisant des briques de bases qui ont รฉtรฉ dรฉveloppรฉs ร  diffรฉrents moments, par diffรฉrentes personnes, et probablement en ayant ร  lโ€™esprit diffรฉrents concepts et utilisations [Sha 12]. Afin de pouvoir dรฉcouvrir les diffรฉrents composants, leurs maniรจres de communiquer et de construire dynamiquement lโ€™assemblage, un environnement de composants fournit toujours un mรฉcanisme dโ€™introspection et un mรฉcanisme dโ€™invocation dynamique (le rรฉfรฉrentiel des interfaces et le DII (Dynamic Invocation Interface) de CORBA [Gei 00], lโ€™API java.lang.reflect du langage Java [Bel 99][Bel 98], les interfaces IUnknown et IDispatch dans COM). Lโ€™introspection permet de dรฉcouvrir ร  lโ€™exรฉcution les interfaces dโ€™un composant. En Java, lโ€™introspection permet aussi de dรฉcouvrir la structure interne des composants (les attributs). Depuis JDK version 1.1, la sรฉrialisation des objets Java met en ล“uvre ce mรฉcanisme dโ€™introspection de maniรจre automatique afin de permettre de rendre un objet ou un graphe dโ€™objets de la JVM persistant pour stockage ou รฉchange. Lโ€™invocation dynamique permet de construire dynamiquement des requรชtes sur les composants. Lโ€™association de ces deux mรฉcanismes permet de construire des outils dโ€™interaction sur les composants pour configurer/reconfigurer un assemblage de composants.

Modรจles de composants

Le concept de composant logiciel est relativement ancien [Mcl 68]. Il est dรฉcrit comme une brique logicielle composable et facilement rรฉutilisable, dโ€™oรน lโ€™appellation de composant sur lโ€™รฉtagรจre (Composant On The Shell ou COTS). Cependant, il nโ€™existe pas de dรฉfinition universelle dโ€™une description dโ€™architecture ร  composant. Selon Szyperski [Szy 98], un composant ยซ est une unitรฉ de composition dont les interfaces et les dรฉpendances contextuelles sont spรฉcifiรฉes sous forme de contrats explicites ยป. Il peut รชtre ยซ dรฉployรฉ indรฉpendamment et est composable par des tiersย ยป. Selon Heieneman et Council [Cou 01]. Un composant logiciel est un รฉlรฉment conforme ร  un modรจle de composition, pouvant รชtre indรฉpendamment dรฉployรฉ et composรฉ. Le modรจle de composition dรฉfinit les standards de spรฉcification et dโ€™interaction. Lโ€™implรฉmentation du modรจle reprรฉsente un ensemble dโ€™outils logiciels supportant lโ€™exรฉcution des composants conformes au modรจle. En comparaison aux objets, et de part la nature des encapsulations fortes dans le composant (boite noire), les composants offrent une plus grande modularitรฉ et facilitรฉ de rรฉutilisation, ainsi quโ€™une meilleure indรฉpendance entre les briques logicielles, reprรฉsentant clairement les dรฉpendances requises et fournies. La sรฉparation des prรฉoccupations (separation of concerns) est une approche de conception qui consiste ร  distinguer les prรฉoccupations fonctionnelles et extra-fonctionnelles dans un systรจme afin dโ€™isoler des aspects indรฉpendants ou faiblement couplรฉs. Elle reprรฉsente un point fort de la programmation par composants [Dij 82]. Le cycle de vie du logiciel est dรฉcomposรฉ en plusieurs phases : De la conception de lโ€™architecture, au dรฉveloppement du code mรฉtier des composants, suivi de leur dรฉploiement et finalement de leur exรฉcution. Lโ€™architecture dโ€™une application, quant ร  elle, est composรฉe de la dรฉfinition des diffรฉrentes instances des diffรฉrents composants utilisรฉs et de la spรฉcification de leurs interconnexions, cโ€™est-ร -dire les dรฉpendances entre les services requis et fournis, ainsi que les schรฉmas de communication utilisรฉs lors de lโ€™exรฉcution [Riv 00]. Cette dรฉmarche repose sur des techniques dโ€™injection de dรฉpendances dans le code dโ€™implรฉmentation. Elle offre certains avantages, entre autre, le dรฉveloppeur peut se concentrer sur un problรจme ร  la fois. Les besoins et les contraintes de chaque aspect รฉvoluent de maniรจre autonome, grรขce ร  la suppression des interactions entre aspects orthogonaux. En fonction du milieu, la dรฉfinition dโ€™un composant peut varier. En effet, dans le milieu acadรฉmique, un composant est vu comme รฉtant une entitรฉ bien dรฉfinie, souvent petite avec des propriรฉtรฉs fonctionnelles et non-fonctionnelles. Dans lโ€™industrie par contre, un composant est considรฉrรฉ comme une partie rรฉutilisable du systรจme, mais que celle-lร  nโ€™est pas nรฉcessairement bien dรฉfinie dans ses interfaces et sa conformitรฉ ร  un modรจle de composant.

Le rapport de stage ou le pfe est un document dโ€™analyse, de synthรจse et dโ€™รฉvaluation de votre apprentissage, cโ€™est pour cela chatpfe.com propose le tรฉlรฉchargement des modรจles complet de projet de fin dโ€™รฉtude, rapport de stage, mรฉmoire, pfe, thรจse, pour connaรฎtre la mรฉthodologie ร  avoir et savoir comment construire les parties dโ€™un projet de fin dโ€™รฉtude.

Table des matiรจres

1 Introduction
1.1 Contexte et problรฉmatique
1.2 Prรฉsentation des contributions
1.3 Organisation du document
I Etat de lโ€™art
2 Concepts et technologies associรฉs au sujet
2.1 Programmation par composants
2.1.1 Modรจles de composants
2.1.2 Elรฉments dโ€™architecture
2.1.3 ร‰tude de quelques modรจles de composants
2.1.3.1 Le modรจle JavaBeans
2.1.3.2 Le modรจle Entreprise JavaBeans
2.1.3.3 Le modรจle COM
2.2 Langages de description dโ€™architectures et styles architecturaux
2.2.1 Les langages de description dโ€™architectures
2.2.2 Contraintes et styles architecturaux
2.3 Dynamicitรฉ des architectures logicielles
2.3.1 Rรฉflexion et architectures rรฉflexives
2.3.1.1 Systรจmes rรฉflexifs
2.3.1.2 Langages rรฉflexifs
2.3.1.3 Architectures rรฉflexives
2.3.2 Reconfiguration dynamique
2.4 Conclusion
3 Fiabilitรฉ des architectures logicielles reconfigurables
3.1 Critรจres de sรฉlection des travaux
3.2 Plateformes construisant un modรจle dโ€™architecture
3.2.1 ฯ€-ADL
3.2.2 C2SADL
3.2.3 Dynamic Wright
3.2.4 Acme/Plastik
3.3 Synthรจse des ADL รฉtudiรฉs
3.4 Conclusion
II Contribution
4 Modรฉlisation des configurations Acme
4.1 Lโ€™ADL Acme
4.1.1 Cล“ur du modรจle Acme
4.1.2 Implรฉmentations et outils associรฉs au modรจle
4.2 Processus de vรฉrification de la cohรฉrence
4.3 Spรฉcification du modรจle Acme
4.3.1 Un mรฉta-modรจle pour Acme
4.4 Spรฉcification du modรจle par des contraintes dโ€™intรฉgritรฉ
4.5 Traduction de formalisme Armani
4.5.1 Elements architecturaux
4.5.2 Contraintes
4.6 Test et validation
4.6.1 Dรฉclaration des exigences pour lโ€™exemple systรจme ATM
4.6.2 Diagramme de modรฉlisation de lโ€™ATM
4.6.2.1 Diagramme de composant
4.6.2.2 Interfaces de lโ€™ATM
4.6.3 Formalisation dโ€™un ATM en Acme/Armani
4.6.4 Rรจgles de cohรฉrence et vรฉrification du modรจle
4.7 Conclusion
5 Spรฉcification des reconfigurations dynamiques
5.1 Gestion des reconfigurations dynamiques par les ADLs
5.1.1 Aspects clรฉs des reconfigurations dynamiques
5.1.2 Contraintes dโ€™intรฉgritรฉ spรฉcifiques ร  la reconfiguration
5.2 Analyse des opรฉrations de reconfiguration dans Acme /Plastik
5.2.1 Spรฉcification des opรฉrations primitives
5.2.2 Traduction des conditions et contraintes
5.2.3 Lโ€™infrastructure dโ€™exรฉcution
5.3 Plate-forme dโ€™exรฉcution
5.3.1 Principales structures de donnรฉes
5.3.2 Principe
5.4 Conclusion
6 Conclusion et Perspectives
6.1 Synthรจse et bilan des contributions
6.2 Perspectives
Bibliographie

Lire le rapport complet

Tรฉlรฉcharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiรฉe. Les champs obligatoires sont indiquรฉs avec *