L’Ingénierie Dirigée par les Modèles
L’IDM est une méthode de développement de logiciel, s’appuyant sur la création et l’utilisation de modèles spécifiques à un domaine. L’utilisation de ces modèles permet de s’affranchir du choix d’une plateforme spécifique de développement. L’IDM a engendré un changement important dans les pratiques du génie logiciel. En effet nous sommes passés d’une pratique de développement centrée sur la notion d’objet à une pratique centrée sur la notion de modèle (Bézivin, 2004). Dans cette philosophie, tout est modèle, et les modèles exprimés pour décrire un domaine d’affaire sont transformés pour finalement obtenir des modèles spécifiques à la plateforme, en l’occurrence du code. La proximité de la représentation avec le monde réel plutôt qu’avec la plateforme de développement permettent une portabilité bien meilleure qu’avec les langages de programmation classiques. Ainsi dans le processus de spécification du logiciel, l’ingénieur peut s’affranchir des limitations imposées par le choix d’une plateforme.
Pour appréhender la complexité du logiciel, tout en utilisant une pratique de spécification de très haut niveau, l’IDM se base sur deux mécanismes (Schmidt, 2006) : I) La création de langages de modélisation spécifiques au domaine, II) L’utilisation de moteurs de transformation et de générateurs.
Les langages de modélisation spécifiques au domaine
Le premier mécanisme est la création de langages de modélisation spécifiques au domaine (DSML). Un DSML est un langage de modélisation créé pour modéliser un domaine particulier, pour satisfaire un ou plusieurs objectifs. Citons par exemple le langage AADL (Feiler, 2014), créé afin de modéliser à la fois la partie logicielle et matérielle d’un système temps réel aéronautique. Les modèles peuvent ensuite être utilisés pour de l’analyse (vérification de satisfaction des contraintes temporelles) ou de la génération de code. Un DSML vient généralement avec un ensemble d’outil permettant de satisfaire les objectif visés.
Les transformations de modèles
En plus de la création de DSML, on utilise les transformations de modèles. L’acte de transformation de modèles décrit le passage d’un modèle vers un autre type de modèle (de même formalisme ou non), ou vers du code. Une transformation est définie comme un ensemble de règles ou d’algorithmes. Une règle transforme un fragment particulier du modèle source en un fragment du modèle cible.
Un exemple : Model-Driven Architecture
Au début des années 2000, l’OMG a proposé une implémentation de la démarche d’ingénierie dirigée par les modèles appelée Model Driven Architecture (MDA) (OMG, 2000). On retrouve au coeur de MDA un langage standardisé appelé UML (OMG, 2017), offrant des outils de modélisation s’appliquant de façon générale à un ensemble de domaines (à l’opposé d’un DSML). La démarche proposée dans le standard MDA reprend les fondements de l’ingénierie dirigée par les modèles, à savoir la création de DSML et les transformations de modèles. En ce qui concerne la création de DSML, le méta modèle UML supporte le langage mais permet également d’étendre ses possibilités. Ce mécanisme d’extension est appelé profil. Il permet de mettre à profit le méta modèle UML et de créer nos propres langages de modélisation, basés sur les besoins de notre domaine. Il existe des profils célèbres, parmi lesquels MARTE, pour modéliser les systèmes temps réel, ou SysML pour modéliser les exigences spécifiées. Pour aller plus loin, en plus du mécanisme de profil, MDA propose un langage pour spécifier les méta modèles, appelé MOF (OMG, 2016). MOF définit un standard permettant d’exprimer des méta modèles. On peut par exemple définir le méta modèle EFSM en utilisant MOF .
Les Transformations de Modèles
Comme précisé auparavant, le second pilier de l’ingénierie dirigée par les modèles est l’utilisation de moteurs de transformation et de génération. Dans MDA, les transformations de modèles ont une grande importance. Ils permettent en outre de changer de niveau d’abstraction, par exemple de passer d’un modèle indépendant de la plateforme de développement : PIM à un à un modèle dépendant de la plateforme : PSM. Ou encore ils permettent de passer d’un formalisme à un autre. Dans un objectif de gain de temps et d’optimisation des coûts, les transformations peuvent être automatisées. L’approche de MDA préconise que la transformation elle même soit modélisée, mais elle peut être également développée dans un langage orienté objet par exemple. Dans une démarche de transformation dans le cadre de MDA, celle-ci doit s’intégrer dans l’architecture quatre couches présentée précédemment.
Un exemple de langage de transformation : le langage QVT
Query/View/Transformation (QVT) est un standard défini par l’OMG pour spécifier les transformations entre modèles, dont le méta modèle satisfait au standard MOF. Il comprend une partie déclarative et une partie impérative. La partie déclarative se compose de deux parties : une partie réalisant la correspondance entre les deux modèles exprimés dans le standard MOF nommée QVTr (relations), et une partie qui permet d’évaluer des conditions sur les éléments de nos modèles pour les faire correspondre, nommée QVTc (Core). Ces deux parties se servent du langage OCL (Object Constraint Language) (OMG, 2014) pour définir les règles de correspondance. OCL est un langage formel standardisé par l’OMG permettant de spécifier des contraintes logicielles. La partie impérative, constituée de QVTo (opérationnel), permet d’étendre le langage déclaratif. Des constructions telles que les boucles for ou des conditions if y sont offertes. QVTo introduit également l’utilisation de règles OCL impératives.
INTRODUCTION |