• Aucun résultat trouvé

Architecture à base de composants

1.6 Architecture et méta-architecturation

A travers notre étude des ADLs, nous constatons que la spécification d’une architecture peut passer par plusieurs niveaux de modélisation. Dans cette section, nous appliquons les quatre niveaux de modélisation proposés par l’OMG à l’architecture logicielle. En effet, la technique de méta-modélisation peut reposer sur une approche objet (comme celle de l’OMG), ou bien sur une approche composant. On parlera aussi et respectivement de méta-modélisation par objets et de méta-méta-modélisation par composants. Dans cette thèse, nous nous intéressons à la méta-modélisation par composants dont le résultat est une hiérarchie à différents niveaux d’architectures, qui passe de la définition d’une méta-méta-architecture à une application réelle à travers les différents niveaux intermédiaires.

1.6.1 Méta modélisation

Avant d’étudier ce qu’est un méta-modèle, il semble logique de s’intéresser d’abord à ce qu’est un modèle. Minsky propose la définition suivante [Minsky et al. 1968] : un objet (A*) est un modèle d’un objet A pour un observateur O dans la mesure où O peut utiliser (A*) pour répondre aux questions qu’il se pose sur A. dans ce cas, O utilisera le modèle (A*) comme support de raisonnement. L’action de modélisation permet donc de passer de l’objet du modèle (A dans la définition de Minsky) vers le modèle (A*), à travers un principe d’abstraction visant à simplifier la représentation de l’objet à modéliser. Il est possible de poursuivre ce travail d’abstraction pour créer des modèles. La création d’un méta-modèle revient à construire une représentation d’un méta-modèle, toujours dans le but de fournir un support de raisonnement. L’action de méta-modélisation permet donc de passer d’un modèle (A*dans la définition de Minsky) vers le méta-modèle (A**).

Comme le résume la Figure 1.10, l’objet (A**) ne peut pas être obtenu directement par modélisation de l’objet (A), mais bien par la modélisation de l’objet (A*). Cette relation d’ordre dans l’activité de modélisation fait apparaitre des niveaux de modélisations distincts.

Figure 1.10–Activité de modélisation et de méta-modélisation dans les termes de Minsky.

Modélisation

A**

A

A*

Méta-modélisation

O

Objet Modèle Méta-modèle Observateur

1.6.2 Méta-modélisation par composant

La principale notation pour la méta-modélisation par objet est le MOF (Meta Object

Facility) [OMG 2002a]. L’OMG a défini deux variantes de MOF : EMOF (MOF essentiel)

et CMOF (MOF complet). Le but du MOF est de définir un langage unique et standard pour décrire des méta-modèles. Il est constitué d’un ensemble relativement restreint (bien que non minimal) de concepts « objets » permettant de modéliser ce type d’information. Par exemple, UML est l’un des modèles décrit en utilisant le MOF. D’autres notations pour la méta-modélisation objet existent. Parmi elles on peut citer KM3 [Jouault et Bézivin 2006], ECORE [Budinsky et al. 2008] ou Kermeta [Muller et al. 2005].

Très peu de travaux ont été conduits dans la technique de méta-modélisation composant. AML (Architecture Meta-Language) [Wile 1999] est une première tentative de proposition d’un socle pour fournir aux ADLs une solide base sémantique. Il définit seulement les déclarations des trois constructions de base: les éléments, les types et les relations. MADL (Meta Architecture Description Language) [Smeda 2006] est une seconde tentative proposée par notre équipe. MADL est l’équivalent du MOF pour l’architecture logicielle. MADL inclut les concepts et les mécanismes des langages de description d’architecture, et conserve l’instanciation, l’héritage et la composition, issues de l’orientation objet [Smeda et al. 2008].

En pratique, un méta-métamodèle détermine le paradigme utilisé dans les modèles qui sont construit sur sa base. De ce fait, le choix d’un méta-méta-modèle est un choix important où la question de l’objet ou du composant comme une unité de construction de base est posée. En choisissant MADL [Smeda et al. 2008], nous optons pour le composant et nous identifions une hiérarchie de modèles architecturaux, comme le montre le Tableau 1.2. Les quatre niveaux de modélisation d’une architecture sont détaillés ci-après.

Modélisation par objets Modélisation par composants

M3 – Niveau méta-méta-modèle MOF MADL

M2 – Niveau méta-modèle UML, CWM, SPEM, etc. ACME, SOFA, ADL Fractal,…

M1 – Niveau modèle Modèles UML Architectures

M0 – Niveau instance Informations réelles

(Objets) Applications

Tableau 1.2 – Hiérarchie selon une méta-modélisation par objets et par composants.

1.6.3 Niveaux de modélisation d’une architecture

Nous identifions quatre niveaux de modélisation dans les systèmes : le niveau méta-méta-architecture, le niveau méta-méta-architecture, le niveau architecture et le niveau application. Nous schématisons ces niveaux sous forme d’une « architecture pyramidale » présenté dans

la Figure 1.11, où chaque étage de la pyramide se conforme à l’étage immédiatement supérieur.

Figure 1.11 – Les quatre niveaux d’architecture que nous proposons.

Le niveau méta-méta-architecture (A3) : est le niveau le plus abstrait qui fournit les éléments

minimaux de modélisation d’une architecture. Une méta-méta-architecture se conforme à elle-même (i.e., s’auto définie). Les concepts de base d’un méta ADL sont définis à ce niveau.

Le niveau méta-architecture (A2) : fournit les éléments de modélisation de base pour un

langage de description d’architecture (ADL) : composant, connecteur, configuration, port, rôle, etc. Ces concepts de base permettent de définir différentes architectures. Les méta-architectures se conforment au méta-méta-architecture fixée à l’avance. Dans le cadre d’une relation de conformité, chaque élément de (A2) est associé à un élément de (A3).

Le niveau architecture (A1) : à ce niveau, plusieurs types de composants, de connecteurs et

de configurations sont décrits. Les architectures se conforment aux méta-architectures (ADLs), donc chaque élément de (A1) est associé à un élément de (A2).

Le niveau application (A0) : est le niveau où les unités d’exécution sont localisées. Une

application est vue comme un ensemble de composants, de connecteurs et de configurations. Les applications sont conformes au niveau architecture. Chaque élément de (A0) est associé à un élément de (A1).

A3

A2

A1

1.7 Conclusion

Nous avons présenté dans ce chapitre le contexte global dans lequel s’inscrit cette thèse : "le domaine des architectures logicielles à base de composants". Nous avons montré comment l’architecture logicielle s’est progressivement retrouvée sur le devant de la scène et les nouvelles pratiques de l’ingénierie qui sont apparues avec elle. Pour mieux comprendre ce que recouvre l’architecture logicielle, nous avons synthétisé les définitions notables proposées dans la littérature. Nous avons également consacré une section à la notion de langage de description d’architecture, que nous considérons comme un ingrédient clé du développement centré architecture. Puis, nous avons abordé les travaux sur les langages de description d’architectures, sur la base de leurs concepts communs. Nous avons clôturé ce chapitre par la description de l’architecture logicielle à travers ses différents niveaux de modélisation.

Les leçons retenues de ces vastes travaux sur les architectures logicielles est que l’accroissement de la complexité impose de monter en abstraction afin de garder le contrôle, le pouvoir de comprendre et de communiquer au sein d’un système. En plus, la capitalisation et la réutilisation des expériences passées via des solutions éprouvées sont des techniques phares pour guider et améliorer les activités des architectures. Nous sommes convaincus de la nécessité de prendre appui sur la méta-modélisation pour traiter correctement la problématique des langages de description d’architecture.

Les systèmes logiciels complexes nécessitent des notations expressives pour représenter leurs architectures logicielles. Les approches orientées objets, orientées composants et orientées services représentent à l’heure actuelle les meilleures réponses pour décrire les architectures logicielles de tels systèmes [Garlan 2000]. Chacune de ces approches se concentre sur certains aspects de l’architecture logicielle, les aspects fonctionnels pour la modélisation par objets, les aspects fonctionnels et non-fonctionnels pour la modélisation par composants et les aspects services pour la modélisation par services.

Dans ce chapitre, nous avons présenté ces approches d’architectures logicielles, leurs principaux concepts, leurs descriptions, leurs avantages et leurs inconvénients. On peut noter que la coexistence des qualités des ces approches sera très profitable pour l’architecture logicielle. Nous avons clôturé ce chapitre par un résumé sur le concept de méta-modélisation dans les approches orientées objets et composants, le langage de l’OMG pour la méta-modélisation par objets (MOF), et le langage AML qui est, apparemment, la seule approche de méta-modélisation par composants.

La modélisation des interactions et des configurations varie d’un ADL à un autre. Ceci dépend des objectifs et des préoccupations fixées pour chaque ADL. Dans le prochain chapitre nous présenterons une étude analytique ainsi qu’une comparaison entre les ADLs les plus représentatifs et les plus utilisés avec un focus sur les concepts de connecteur et de configuration.

35

2

Les connecteurs et les