L’Ingénierie Dirigée par les Modèles

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.

Table des matières

INTRODUCTION
CHAPITRE 1 CONCEPTS
1.1 L’Ingénierie Dirigée par les Modèles
1.1.1 Les langages de modélisation spécifiques au domaine
1.1.2 Les transformations de modèles
1.1.3 Un exemple : Model-Driven Architecture
1.2 Les Transformations de Modèles
1.2.1 Un exemple de langage de transformation : le langage QVT
1.2.2 Exigences sur les transformations de modèles
1.2.3 Les différents types de transformation de modèles
1.2.4 Les techniques de transformation
1.2.5 Les implémentations de QVT
1.3 Langage de modélisation source de notre transformation : les machines à états UML
1.3.1 Les états
1.3.2 Les transitions
1.3.3 Les pseudo-états
1.4 Langage de modélisation source de notre transformation : les machines à états Stateflow
1.4.1 Les états
1.4.2 Les transitions
1.4.3 Les jonctions
1.5 Langage de modélisation cible de notre transformation : Les machines à états finis étendues
1.5.1 Les états et transitions
1.5.2 Définition formelle d’une machine EFSM
1.5.3 Extension des EFSM pour supporter la communication
1.6 Les Tests Basés sur les Modèles
1.6.1 Techniques de génération de tests basées sur les EFSM
1.6.2 Couverture de test
CHAPITRE 2 REVUE DE LITTÉRATURE
2.1 Les transformations de machines à états
2.1.1 Les transformations de modèles UML
2.1.2 Les transformations de modèles Stateflow
2.2 Discussion
CHAPITRE 3 APPROCHE
3.1 Approche proposée de transformation
3.2 L’approche appliquée aux machines à états UML
3.2.1 Résumé des résultats du processus d’analyse des machines à états UML
3.2.2 Preprocessing
3.2.2.1 Les pseudo-états
3.2.2.2 Les activités internes
3.2.3 Flattening
3.2.3.1 Transformation des états composites à plusieurs régions concurrentes (And-states)
3.2.3.2 Transformation des états composites à une seule région (Or-states)
3.2.4 Mapping
3.3 L’approche appliquée aux machines à états Stateflow
3.3.1 Résumé du processus d’analyse des machines à états Stateflow
3.3.2 Preprocessing
3.3.2.1 Les points de jonctions
3.3.2.2 Les actions internes
3.3.3 Flattening
3.3.3.1 Les And-states
3.3.3.2 Les Or-states
3.3.4 Mapping
3.4 Conclusion
CHAPITRE 4 IMPLÉMENTATION ET EXPÉRIMENTATIONS
4.1 Choix technologiques
4.2 Implémentation du méta modèle EFSM
4.3 Implémentation de l’approche STEF pour UML
4.3.1 La transformation des pseudo-états
4.3.2 La transformation des activités internes
4.3.3 La transformation des And-states
4.3.4 La transformation des Or-states
4.3.5 Le mapping
4.3.6 Démonstration de STEF pour UML
4.4 Implémentation de l’approche STEF pour Stateflow
4.4.1 Transformation des Jonctions Connectives
4.4.2 Transformation des actions internes
4.4.3 Transformation des And-states, Or-states et Mapping
4.4.4 Démonstration de STEF pour Stateflow
4.5 Étude de cas
4.5.1 Objectifs et configuration de l’expérimentation
4.5.2 Analyse des résultats pour la question 1
4.5.3 Analyse des résultats pour la question 2
4.5.4 Menaces pour la validité
CONCLUSION

Cours gratuitTélécharger le document complet

Télécharger aussi :

Laisser un commentaire

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