L'architecture dirigée par les modèles
(Model-Driven Architecture, MDA), présentée au
§ 2.2.2, est « une variante particulière d'une tendance plus
générale nommée ingénierie des modèles
» (Model-Driven Engineering, MDE). Tout comme un des
principes de base de la technologie objet est « tout est objet » (cf.
Figure 8), le principe de base du MDE est « tout est
modèle » (cf. Figure 9) (Bézivin 2004).
Toujours selon M. Bézivin (Bézivin et al. 2007),
le MDE est décrit en se basant sur deux règles
fondamentales :
· Tout type de système peut être
représenté dans un modèle.
· Un modèle doit être syntaxiquement conforme
à un métamodèle.
Il faut bien faire la part des choses entre le système,
qui se base sur le monde réel, et le modèle, qui est d'un niveau
plus abstrait, celui de la modélisation.
Une fois ces notions précisées, les auteurs
(Bézivin et al. 2007) déclinent les grands domaines
d'applications du MDE qui reprennent ceux du MDA :
· Forward engineering, quand le système est
créé à partir du modèle.
· Reverse engineering, quand le modèle est
créé à partir du système.
· Models at run-time, quand le modèle
coexiste avec le système qu'il représente.
Ce sont ces grands domaines que l'on retrouve dans le
processus d'évolution d'architecture de Sodifrance. La
retro-ingénierie correspond à la phase d'analyse du code source
et a pour objectif d'alimenter un métamodèle spécifique au
langage source, décrit comme le modèle initial (cf. Figure 6
étape 1).
La transformation de modèle, réalisée
à l'aide de MIA Transformation, correspond aux transformations
permettant dans un premier temps de passer du métamodèle initial
à un métamodèle dérivé. Dans notre cas, la
cible est un métamodèle générique, le
métamodèle ANT (cf. Figure 6 étape 3). Ensuite, ce
modèle ANT est à nouveau transformé pour répondre
au mieux aux exigences de l'application cible (cf. 2.2.2). La dernière
phase (cf. Figure 6 étape 4) est celle de génération. Elle
correspond au Forward Engineering. L'outil MIA Generation
utilise le modèle ANT comme modèle source et génère
du code en fonction de scripts définis sur les objets du
métamodèle.
On retrouve aussi ce découpage en trois phases dans le
processus d'alimentation de la cartographie qui sera approfondi un peu plus
loin. De manière simplifiée, il y a la phase de
rétro-ingénierie qui alimente un métamodèle
spécifique. Ensuite une transformation permet de passer de ce
métamodèle au métamodèle de cartographie. Et pour
terminer, des services permettent de générer du code (scripts de
rejeu de test) à partir du métamodèle de cartographie.