Université de Sousse
Institut Supérieur des Sciences Appliquées et de Technologie de Sousse
Cours ingénierie dirigée par les
modèles
Nawel KORTAS - ISSAT - 3 ING
________________________________________
Année Universitaire 2024 _ 2025
Plan
• Introduction à l’IDM
ch1
• Introduction à l’UML et méta-modélisation
ch2
• Langage de contrainte
ch3
• Transformations de modèle
ch4
• Exécution de modèles
ch5
1- Introduction à l’IDM
Constat sur le développement logiciel
Un univers en constante évolution :
• Multiplication des plates-formes technologiques (JEE, .Net,
Android, Web 3.0,. . . )
• Obsolescence rapide des logiciels (60% de l’activité informatique
consiste en la maintenance et l’ évolution)
• Des systèmes de plus en plus complexes (réseau, sécurité, . . . )
Des exigences supérieures :
• Coût et temps de production
• Qualité de production
• Évolution permanente des technologies logicielles
p3
Cours ingénierie dirigée par les modèles
1- Introduction à l’IDM
Constat sur le développement logiciel
Exemple : systèmes distribués( Faire communiquer et interagir des
éléments distants)
• Évolution dans ce domaine
C et sockets TCP/UDP
C et RPC
C++ et CORBA
Java et RMI
Java et EJB
C# et Web Services
A suivre ...
p4
Cours ingénierie dirigée par les modèles
1- Introduction à l’IDM
Constat sur l'évolution des technologies
• Idée afin de limiter le nombre de technologies
o Normaliser un standard qui sera utilisé par tous
• Pour les systèmes distribués
o Normaliser un intergiciel (middleware)
o C'était le but de CORBA
• CORBA : Common Object Request Broker Architecture
o Norme de l'OMG : Object Management Group
o Consortium d'industriels (et d'académiques) pour
développement de standards
p5
Cours ingénierie dirigée par les modèles
1- Introduction à l’IDM
Constat sur l'évolution des technologies
Principes de CORBA
• Indépendant des langages de programmation et des systèmes
d'exploitation
• Pour interopérabilité de toutes applications, indépendamment
des technologies utilisées.
Mais CORBA ne s'est pas réellement imposé en pratique
• D'autres middleware sont apparus : Java RMI
• Plusieurs implémentations de CORBA
• OMG a développé un modèle de composants basé sur CORBA :
o CCM (Corba Component Model)
p6
Cours ingénierie dirigée par les modèles
1- Introduction à l’IDM
Constat sur l'évolution des technologies
De plus, « guerre » de la standardisation et/ou de l'universalité
• Sun/Oracle : Java (Plate-forme d'exécution universelle (Avec
intergiciel intégré (IDM)))
• OMG : CORBA ( Intergiciel universel)
• Microsoft et d'autres : Web Services (Interopérabilité universelle
entre composants , Intergiciel = HTTP/XML
Middleware ou middle war * ?
Evolutions apportent un gain réel
p7
Cours ingénierie dirigée par les modèles
1- Introduction à l’IDM
Constat sur l'évolution des technologies
Conclusion sur l'évolution des technologies
• Nouveaux paradigmes, nouvelles techniques
• Pour développement toujours plus rapide, plus efficace
• Rend difficile la standardisation (désuétude rapide d'une
technologie)
Principes de cette évolution
• Évolution sans fin
• La meilleure technologie est ... celle à venir
Quel est le coût de cette adaptation ?
• Généralement très élevé
• Doit réécrire presque entièrement l'application
• Car mélange du code métier et du code technique
• Aucune capitalisation de la logique et des règles métiers
p8
Cours ingénierie dirigée par les modèles
1- Introduction à l’IDM
Constat sur l'évolution des technologies
Partant de tous ces constats
• Nécessité de découpler clairement la logique métier et de la mise en
œuvre technologique
• C'est un des principes fondamentaux de l'ingénierie des modèles
Séparation des préoccupations (separation of concerns)
Besoin de modéliser/spécifier
• A un niveau abstrait la partie métier
• La plate-forme de mise en œuvre
• De projeter ce niveau abstrait sur une plateforme
• L’architecture dirigée par les modèles (MDA) est une démarche de
réalisation de logiciels, proposée par l’OMG.
• Consortium Object Management Group ([Link]
p9
Cours ingénierie dirigée par les modèles
1- Introduction à l’IDM
MDA : Model Driven Architecture
Approche Model-Driven Architecture (MDA) de l'OMG
• Origine de l'ingénierie des modèles (date de 2000)
Le MDA est né à partir des constatations que nous venons de voir
• Évolution continue des technologies
But du MDA:
• Abstraire les parties métiers de leur mise en œuvre
• Basé sur des technologies et standards de l'OMG (UML, MOF, OCL,
CWM, QVT ...)
p10
Cours ingénierie dirigée par les modèles
1- Introduction à l’IDM
MDA : Model Driven Architecture
Le MDA définit 2 principaux niveaux de modèles:
• PIM : Platform Independent Model
o Modèle spécifiant une application indépendamment de la
technologie de mise en œuvre
o Uniquement spécification de la partie métier d'une application
• PSM : Platform Specific Model
o Modèle spécifiant une application après projection sur une plate-
forme technologique donnée
• Autres types de modèles
o CIM : Computation Independent Model (Spécification du système,
point de vue extérieur de l'utilisateur)
o PDM : Plateform Deployment Mod ( Modèle d'une plate-forme de
déploiement)
p11
Cours ingénierie dirigée par les modèles
1- Introduction à l’IDM
MDA : Model Driven Architecture
• Platform Independent Model ”Model once, generate anywhere”
• Platform Specific Model (ex: Java, C#, Web,. . . )
• Génération de code (ex: UML to SQL, UML to
Java, . . . )
Avantages MDA :
• Capitalisation du ”code” métier,
• indépendance des plates-formes (migration, . . . ),
• production de code.
Relation entre les niveaux de modèles
p12
Cours ingénierie dirigée par les modèles
1- Introduction à l’IDM
MDA : Model Driven Architecture
- Cycle de développement d'un logiciel selon le MDA : Cycle en Y (Plus
complexe en pratique)
- Outils de mise en œuvre du MDA :
Standards de l'OMG
- Spécification des modèles aux différents niveaux
• Langage de modélisation UML (Profils UML)
• Langage de contraintes OCL
• Langages dédiés à des domaines particuliers (CWM ...)
- Spécification des métamodèles : Meta Object Facilities (MOF)
- Langage de manipulation et transformation de modèles
• Query/View/Transformation (QVT) p13
Cours ingénierie dirigée par les modèles
1- Introduction à l’IDM
MDA : Model Driven Architecture
- Les techniques de base associées à l’IDM dans le cadre MDA:
o Des techniques de modélisation :
• Soit en spécifiant un nouveau type de modèle (DSM,
MOF)
• Soit en utilisant UML ou une extension d’UML via la
notion de profil
• Sérialisation des modèles (XMI)
o Des techniques de vérification de modèles (OCL)
o Des techniques de transformation (QVT) :
• de modèle à modèle (PIM vers PSM)
• de modèle vers texte (ex: UML vers SQL)
p14
Cours ingénierie dirigée par les modèles
1- Introduction à l’IDM
MDE : Model Driven Engineering
MDE
• MDE : Model Driven Engineering
• IDM : Ingénierie Dirigée par les Modèles
• Approche plus globale et générale que le MDA
Appliquer les mêmes principes à tout espace technologique et les
généraliser
• Espace technologique : ensemble de techniques/principes de
modélisation et d'outils associés à un (méta)métamodèle particulier
• MOF/UML, EMF/Ecore, XML, grammaires de langages, bases de
données relationnelles, ontologies ...
• Le MDA est un processus de type MDE
p15
Cours ingénierie dirigée par les modèles
1- Introduction à l’IDM
MDE : Model Driven Engineering
Principes du MDE
Capitalisation
• Approche objets/composants
• Capitalisation, réutilisation d'éléments logiciels/code
MDE
• Capitalisation, réutilisation de (parties de) modèles : logique
métier, règles de raffinements, de projection ...
Abstraction
• Modéliser, c'est abstraire ...
Par exemple abstraction des technologies de mise en œuvre
o Permet d'adapter une logique métier à un contexte
o Permet d'évoluer bien plus facilement vers de nouvelles
technologies
p16
Cours ingénierie dirigée par les modèles
1- Introduction à l’IDM
MDE : Model Driven Engineering
Principes du MDE
Modélisation
• La modélisation n'est pas une discipline récente en génie logiciel
• Les processus de développement logiciel non plus (RUP, Merise
...)
• C'est l'usage de ces modèles qui change
Le but du MDE est :
• De passer d'une vision plutôt contemplative des modèles
o A but de documentation, spécification, communication
• A une vision réellement productive
o Pour générer le code final du logiciel pour une technologie
de mise en œuvre donnée
p17
Cours ingénierie dirigée par les modèles
1- Introduction à l’IDM
MDE : Model Driven Engineering
Principes du MDE
Séparation des préoccupations
• Deux principales préoccupations
o Métier : le cœur de l'application, sa logique
o Plate-forme de mise en œuvre
• Mais plusieurs autres préoccupations possibles
o Sécurité
o Interface utilisateur
o Qualité de service, etc.
• Chaque préoccupation est modélisée par un modèle
• Intégration des préoccupations
o Par transformation/fusion/tissage de modèles
( Conception orientée aspect)
p18
Cours ingénierie dirigée par les modèles
1- Introduction à l’IDM
L’architecture MDE
L’architecture MDE
MOF : Meta-Object Facility
Différentes variantes du MOF : eMOF, cMOF, . . .
XMI: langage XML
• Standard OMG
• Permet de sérialiser des modèles et métamodèles
• Echange de modèles et métamodèles p19
Cours ingénierie dirigée par les modèles
1- Introduction à l’IDM
MDE : Model Driven Engineering
Principes du MDE
• Pour passer à une vision productive, il faut
o Que les modèles soient bien définis
o Notion de métamodèle
• Pour que l'on puisse les manipuler et les interpréter via des outils:
o Avec traitement de métamodèles différents simultanément
- Pour transformation/passage entre deux types de modèles
o Référentiels de modèles et de métamodèles
o Outils et langages de transformation, de projection, de génération de
code
o Langages dédiés à des domaines (DS(M)L : Domain Specific Modelling
Language)
• Notions fondamentales dans le cadre du MDE
o Modèle
o Méta-modèle
o Transformation de modèle p20
Cours ingénierie dirigée par les modèles
1- Introduction à l’IDM
Modèle
• Un modèle est une description, une spécification partielle d'un
système
o Abstraction de ce qui est intéressant pour un contexte et dans
un but donné
o Vue subjective et simplifiée d'un système
• But d'un modèle
o Faciliter la compréhension d'un système
o Simuler le fonctionnement d'un système
• Exemples
o Modèle économique
o Modèle démographique
o Modèle météorologique
p21
Cours ingénierie dirigée par les modèles
1- Introduction à l’IDM
Modèle
Pourquoi ?
• Adapté à un domaine particulier, facilité d’utilisation, efficacité.
• Des exemples : diagramme de classes, diagramme de cas
d’utilisation, diagramme relationnel, diagramme de graphes
orientés,
• diagramme de composants. . .
Comment ?
• Par la définition d’un métamodèle.
• Un modèle est conforme à un métamodèle
• Un métamodèle est un modèle
p22
Cours ingénierie dirigée par les modèles
1- Introduction à l’IDM
Modèle
• Différence entre spécification et description
o Spécification d'un système à construire
o Description d'un système existant
• Relation entre un système et un modèle
o Représentation de (notée μ)
modèle μ système modélisé
Représente
p23
Cours ingénierie dirigée par les modèles
1- Introduction à l’IDM
Modèle
Un modèle représente un système modélisé
• De manière générale, pas que dans un contexte de génie logiciel ou
d'informatique
• Un modèle peut aussi avoir le rôle de système modélisé dans une
autre relation de représentation
• Modèle XML de la carte de la Tunisie administrative qui est un
modèle de la Tunisie « réelle »
<MAP name=« Tunisie"
taille="20x20"> modèle μ système modèle μ système
<gouvernement> modélisé modélisé
<ville> 15
</ville>
<ville> 23 Représente Représente
</ville>
...
</gouvernement>
p24
Cours ingénierie dirigée par les modèles
1- Introduction à l’IDM
Méta-modèle
• Un modèle est conforme à son méta-modèle
• On ne parle pas de relation d'instanciation
• Un modèle n'est pas une instance d'un méta-modèle
- Instanciation est un concept venant de l'approche objet
- Approche objet qui ne se retrouve pas dans tous les espaces technologiques
• Un méta-modèle n'est pas un modèle de modèle
• Un méta-modèle est une entité de première classe
• Un modèle UML est conforme au méta-modèle UML
gouvernement
modèle X méta-modèle
Ville
Conforme A
p25
Cours ingénierie dirigée par les modèles
1- Introduction à l’IDM
Modèles
Les concepts de l'IDM en une image
p26
Cours ingénierie dirigée par les modèles
1- Introduction à l’IDM
Méta-modèle
Un métamodèle est un modèle qui décrit la structure de modèles. En
particulier, il permet la construction de langages de modélisation, la
création de relations entre les modèles et la définition de règles de
modélisation.
On dit que le métamodèle représente le modèle, tandis que le
modèle instancie le métamodèle.
Qu’est-ce qu’un métamodèle ?
Modèle d’un ensemble de modèles contenant un grammaire
décrivant un langage de modélisation afin de Définir la syntaxe
abstraite des modèles
Pourquoi des métamodèles ?
Pour éditer et valider les modèles
Pour transformer des modèles
p27
Cours ingénierie dirigée par les modèles
1- Introduction à l’IDM
Méta-modèle
Opération générale de manipulation de modèle
• Prend un (ou plusieurs) modèle(s) source en entrée
• Fournit un (ou plusieurs) modèle(s) cible en sortie
Transformation endogène
• Les modèles source et cible sont conformes au même méta-modèle
• Transformation d'un modèle UML en un autre modèle UML
Transformation exogène
• Les modèles source et cible sont conformes à des méta-modèles
différents
• Transformation d'un modèle UML en programme Java
• Transformation d'un fichier XML en schéma de BDD (Behavior
Driven Development)
p28
Cours ingénierie dirigée par les modèles
1- Introduction à l’IDM
Modèles Vs Langages
Lien entre méta-modèle et langage
• Un méta-modèle est un modèle qui définit le
langage pour définir des modèles
Langage
• Système abstrait
Méta-modèle
• Définition explicite et concrète d'un langage
• Un méta-modèle modélise alors un langage Extended Backus–Naur form (EBNF) est
une famille de notations métasyntaxes,
elle est utilisé pour faire une description
Un méta-modèle n'est donc pas un langage formelle d'un langage formel tel qu'un
langage de programmation informatique.
p29
Cours ingénierie dirigée par les modèles
1- Introduction à l’IDM
Modèles Vs Langages
Exemple avec un langage de programmation
Un programme Java modélise/simule un
système (le programme à l'exécution)
• Un programme Java est conforme à la
grammaire du langage Java
• La grammaire de Java modélise le langage
Java et donc tous les programmes valides
• Le programme Java appartient à cet
ensemble
Exemple avec UML
• Un diagramme UML modélise un système
• Un diagramme UML est conforme au méta-
modèle UML
• Le méta-modèle UML définit l'ensemble
des modèles UML valides
• Un modèle UML appartient à cet ensemble
p30
Cours ingénierie dirigée par les modèles
Plan
ch1
• Introduction à l’IDM
ch2
• Introduction à l’UML et méta-modélisation
ch3
• Langage de contrainte
ch4
• Transformations de modèle
ch5
• Exécution de modèles
2- Introduction à l’UML et méta-modélisation
Normes OMG de modélisation
• MOF : Meta-Object Facilities ( Langage de définition de méta-modèles)
• UML : Unified Modelling Language( Langage de modélisation)
• CWM : Common Warehouse Metamodel ( Modélisation ressources,
données, gestion d'une entreprise)
• OCL : Object Constraint Language (Langage de contraintes sur
modèles)
• XMI : XML Metadata Interchange (Standard pour échanges de modèles
et méta-modèles)
p32
Cours ingénierie dirigée par les modèles
2- Introduction à l’UML et méta-modélisation
Définition
UML (Unified Modeling Language ou «langage de modélisation unifié»)
• Un langage de modélisation graphique à base de pictogrammes,
• il est apparu dans le monde du génie logiciel, dans le cadre de la
«conception orientée objet».
• Il est couramment utilisé dans les projets logiciels.
• UML est utilisé pour spécifié, visualiser, modifier et construire les
documents nécessaires au bon développement d’un logiciel orienté objet
• UML est un langage de modélisation objet qui facilite l’expression et la
communication de modèles en fournissant des symboles.
• UML permet de représenter un système selon différentes vues
complémentaires : les diagrammes.
p33
Cours ingénierie dirigée par les modèles
2- Introduction à l’UML et méta-modélisation
Les diagrammes d’UML
• Les Diagrammes d’UML Un diagramme UML est une représentation
graphique, qui s'intéresse à un aspect précis du modèle. Chaque type de
diagramme UML possède une structure.
• Les différents types de diagrammes UML offrent une vue complète des
aspects statiques et dynamiques d'un système
p34
Cours ingénierie dirigée par les modèles
2- Introduction à l’UML et méta-modélisation
Les diagrammes statiques d’UML
• Diagramme de classes : le but d’un diagramme de classes est d’exprimer
de manière générale la structure statique d'un système en termes de
classes et de relations. Une classe a des attributs, des opérations et des
relations avec d ’autres classes.
• Le diagramme d'objet : il sert à représenter les instances de classes
(objets), Il montre des objets et les liens entre eux.
• Diagramme de composants : il montre les composants du système du
point de vue physique, tels qu'ils sont mis en œuvre (fichiers,
bibliothèques,..). Il permet de mettre en évidence les dépendances entre
les composants (qui utilise quoi).
• Diagramme des paquetages : un paquetage est un conteneur logique
permettant de regrouper et d'organiser les éléments dans le modèle
UML, il sert à représenter les dépendances entre paquetages.
p35
Cours ingénierie dirigée par les modèles
2- Introduction à l’UML et méta-modélisation
Les diagrammes statiques d’UML
• Diagramme de déploiement : il montre la disposition physique du
matériel qui compose le système (ordinateurs, périphériques, réseaux...)
et la répartition des composants sur ces matériels. Les ressources
matérielles sont représentées sous forme de nœuds, connectés par des
supports de communication.
• Diagramme de structure composite : est un ensemble d'éléments
interconnectés collaborant dans un but commun lors de l'exécution d'une
tâche, il est représenté par un ensemble de pièces (rôles) qui sont liés par
des connecteurs.
• Diagramme des cas d’utilisation : Il permet à représenter les besoins des
utilisateurs par rapport au système. Il montre les relations entre les
acteurs et les cas d’utilisation du système.
p36
Cours ingénierie dirigée par les modèles
2- Introduction à l’UML et méta-modélisation
Les diagrammes comportementaux (dynamiques) d’UML
• Diagramme d'activité : est une variante des diagrammes d'états-
transitions. Il permet de représenter graphiquement le comportement
d'une méthode ou le déroulement d'un cas d'utilisation. Dans un
diagramme d’activité les états correspondent à l’exécution d’actions ou
d’activités et les transitions sont automatiques.
• Diagramme états-transitions : permet de décrire sous forme de machine
à états finis des comportements du système ou de ses composants. Il est
composé d’un ensemble d’états, reliés par des arcs orientés qui décrivent
les transitions.
• Diagramme de communication : c’est une représentation simplifiée
d'un diagramme de séquence, en se concentrant sur les échanges
de messages entre les objets.
p37
Cours ingénierie dirigée par les modèles
2- Introduction à l’UML et méta-modélisation
Les diagrammes comportementaux (dynamiques) d’UML
• Diagramme de séquence : Il représente séquentiellement le déroulement
des traitements et des interactions entre les éléments du système et/ou
de ses acteurs. Il sert à modéliser les aspects dynamiques des
diagrammes des systèmes temps réels et des scénarios complexes. Dans
ce type de diagramme, l’accent est mis sur la technologie des envois de
messages.
• Diagramme global d'interaction : il fournit une vue générale des
interactions décrites dans le diagramme de séquence et des flots de
contrôle décrits dans le diagramme d’activités.
• Diagramme de temps : il permet de présenter l’interaction entre les
objets actifs et leurs changements d’état sur un axe de temps. Il décrit les
variations d'une donnée au cours du temps.
p38
Cours ingénierie dirigée par les modèles
2- Introduction à l’UML et méta-modélisation
Le méta-modèle (métamodèle )
• Dans le domaine de l’informatique, Le méta-modèle est la définition des
constructions et des règles de création des modèles. Donc un méta-
modèle est un modèle qui définit le langage d’expression d’un modèle, c.-
à-d. le langage de modélisation.
• Un langage de modélisation est défini par une syntaxe abstraite, syntaxe
concrète et sémantique (un modèle qui permet aux données d'être
partagées et réutilisées entre plusieurs applications, entreprises et
groupes d'utilisateurs).
• La syntaxe abstraite définit les concepts de base du langage.
• La syntaxe concrète définit le type de notation qui sera utilisé et donne à
chaque concept abstrait une représentation concrète dans cette
notation, qui peut être graphique, textuelle ou mixte.
Enfin, La sémantique définit comment les concepts du langage doivent être
interprétés.
p39
Cours ingénierie dirigée par les modèles
2- Introduction à l’UML et méta-modélisation
Le méta-modèle (métamodèle )
• Le méta-modèle qui est une abstraction mettant en évidence les
concepts utilisés pour définir le modèle qui représente un
phénomène du monde réel,
• Donc un méta-modèle est une « définition formelle » d’un modèle
qui aide à le comprendre et qui facilite le raisonnement sur sa
structure, sa sémantique et son usage.
• Par exemple, XML (Extensible Markup Langage « langage de
balisage extensible ») pour lequel la DTD joue le rôle de méta-
modèle pour des documents XML pouvant alors être considérés
comme des modèles.
p40
Cours ingénierie dirigée par les modèles
2- Introduction à l’UML et méta-modélisation
Méta-modélisation d’UML
• L'OMG définit 4 niveaux de modélisation
o M0 : système réel, système modélisé
o M1 : modèle du système réel défini dans un certain langage
o M2 : méta-modèle définissant ce langage
o M3 : méta-méta-modèle définissant le méta-modèle
• Le niveau M3 est le MOF
o Dernier niveau, il est méta-circulaire : il peut se définir lui
même
• Le MOF est pour l'OMG et le méta-méta-modèle unique servant de
base à la définition de tous les métamodèles.
• Le méta-modèle d’UML est décrit en utilisant une partie de la
notation d’UML lui-même.
p41
Cours ingénierie dirigée par les modèles
2- Introduction à l’UML et méta-modélisation
Méta-modélisation d’UML
• Les concepts suivants sont utilisés :
– Les classes d’UML, pour décrire les méta-classes.
– Les attributs, pour décrire les propriétés attachées à une
méta-classe.
– Les associations, pour décrire des liens entre les méta-classes.
– Les paquetages (packages), pour regrouper les méta-classes
par domaine .
• Dans UML, on retrouve également les 4 niveaux, mais avec le
niveau M3 définissable en UML directement à la place du MOF .
• Le méta-modèle d’UML définit la structure que doit respecter tout
modèle UML.
p42
Cours ingénierie dirigée par les modèles
2- Introduction à l’UML et méta-modélisation
Méta-modélisation d’UML
• Ainsi, les différents concepts du langage UML ont été eux-mêmes
modélisés avec UML. L’approche de méta-modélisation adoptée par
l’OMG (Object Management Group)est définie par une architecture en
quatre couches.
p43
Cours ingénierie dirigée par les modèles
2- Introduction à l’UML et méta-modélisation
Méta-modélisation d’UML
• Niveau objets (M0) : M0 correspond au niveau des objets réels, il
est composé des informations que l'on souhaite modéliser. Ce
niveau est souvent considéré comme étant le monde réel. Il s’agit
ici de deux objets cli et com des instances des deux classes Client et
Compte respectivement.
• Niveau modèle (M1) : M1 correspond au niveau des modèles UML
des utilisateurs. Les concepts d’un modèle UML sont des instances
des concepts du méta-modèle UML. La figure montre un extrait de
diagramme de classes pour une application bancaire contenant
deux classes Compte et Client liées par une association UML. Les
deux classes sont des instances de la méta-classe Classe et le lien
est une instance de la méta-classe Association du méta-modèle
UML.
p44
Cours ingénierie dirigée par les modèles
2- Introduction à l’UML et méta-modélisation
Méta-modélisation d’UML
• Niveau méta-modèle (M2) : le méta-modèle d’UML se situe à ce
niveau qui est décrit dans le standard UML; il définit la structure
interne des modèles UML et il est spécifié en utilisant le MOF,
c.à.d. les concepts du méta-modèle d’UML sont des instances des
concepts de MOF. La figure montre deux méta-classes du
métamodèle UML: Classe et Association.
• Niveau méta-méta-modèle (M3) : M3 est composé d’une unique
entité qui s’appelle le MOF (Meta Object Facility). MOF définit un
langage abstrait permettant de décrire la structure des méta-
modèles, d’étendre ou de modifier les méta-modèles existants.
p45
Cours ingénierie dirigée par les modèles
2- Introduction à l’UML et méta-modélisation
Méta-modélisation d’UML
p46
Cours ingénierie dirigée par les modèles
2- Introduction à l’UML et méta-modélisation
Méta-modélisation d’UML
p47
Cours ingénierie dirigée par les modèles
2- Introduction à l’UML et méta-modélisation
Méta-modélisation d’UML
On retrouve cette hiérarchie à 4 niveaux en dehors du MOF et
d'UML, dans d'autres espaces technologique que celui de l'OMG
• Langage de programmation
o M0 : l'exécution d'un programme
o M1 : le programme
o M2 : la grammaire du langage dans lequel est écrit le programme
o M3 : le concept de grammaire EBNF (Extended Backus-Naur
Form (EBNF) est une extension du métalangage BNF)
• XML
o M0 : données du système
o M1 : données modélisées en XML
o M2 : DTD XML « stands for Document Type Definition »
o M3 : le langage XML
Dans UML, on retrouve également les 4 niveaux, mais avec le
niveau M3 définissable en UML directement à la place du MOF
p48
Cours ingénierie dirigée par les modèles
2- Introduction à l’UML et méta-modélisation
Méta-modélisation d’UML
Exemple de système réel à modéliser (niveau M0)
o Une pièce possède 4 murs, 2 fenêtres et une porte
o Un mur possède une porte ou une fenêtre mais pas les 2 à la fois
o Deux actions sont associées à une porte ou une fenêtre : (ouvrir et fermer)
o Si on ouvre une porte ou une fenêtre fermée, elle devient ouverte
o Si on ferme une porte ou une fenêtre ouverte, elle devient fermée
Niveau M1 :Pour modéliser ce système, il faut définir 2 diagrammes UML
o Un diagramme de classe pour représenter les relations entre les éléments
(portes, murs, pièce)
o Un diagramme d'état pour spécifier le comportement d'une porte ou d'une
fenêtre (ouverte, fermée)
o On peut abstraire le comportement des portes et des fenêtres en spécifiant les
opérations d'ouverture et fermeture dans une interface
– Le diagramme d'état est associé à cette interface
Il faut également ajouter des contraintes OCL pour préciser les contraintes
entre les éléments d'une pièce
p49
Cours ingénierie dirigée par les modèles
2- Introduction à l’UML et méta-modélisation
Méta-modélisation d’UML
Niveau M1:
Les 2 diagrammes de ce modèle de niveau M1 sont des diagrammes UML
valides, parce qu’ils sont conformes au métamodèle UML.
p50
Cours ingénierie dirigée par les modèles
2- Introduction à l’UML et méta-modélisation
Méta-modélisation d’UML
Niveau M2:
Les contraintes sur les éléments des diagrammes UML et leurs relations sont définies dans
le métamodèle UML : niveau M2
– Un diagramme UML (de classes, d'états ...) doit être conforme au métamodèle UML
– Diagramme de classes spécifiant la structure de tous types de diagrammes UML
– Avec contraintes OCL pour spécification plus précise
p51
Cours ingénierie dirigée par les modèles
2- Introduction à l’UML et méta-modélisation
Méta-modélisation d’UML
Niveau M2:
Contraintes OCL, quelques exemples
– context Interface inv: attributes -> isEmpty() Une interface est une classe sans attribut
– context Class inv: attributes -> forAll ( a1, a2 | a1 <> a2 implies [Link] <> [Link])
2 attributs d'une même classe n'ont pas le même nom
– context StateMachine inv: transition -> forAll ( t | [Link] -> includesAll([Link]))
Une transition d'un diagramme d'état ne connecte que des états de ce diagramme d'état
p52
Cours ingénierie dirigée par les modèles
2- Introduction à l’UML et méta-modélisation
Méta-modélisation d’UML
Niveau M3:
Le métamodèle UML est un diagramme de classe UML (avec contraintes OCL)
• Comment spécifier les contraintes d'un diagramme de classe UML ?
– Via le métamodèle UML ou plus précisément : via la partie du métamodèle UML
spécifiant les diagrammes de classes
• Le métamodèle UML doit aussi être précisément défini
– Il doit être conforme à un métamodèle
– C'est le méta-métamodèle UML • Niveau M3 • Méta-métamodèle UML = copie partielle
du métamodèle UML : niveau M3
p53
Cours ingénierie dirigée par les modèles
2- Introduction à l’UML et méta-modélisation
Méta-modélisation d’UML
p54
Cours ingénierie dirigée par les modèles
2- Introduction à l’UML et méta-modélisation
Méta-modélisation d’UML
• Méta-méta-modèle UML doit aussi être clairement défini
o Il doit être conforme à un méta-modèle
• Qu'est ce que le méta-méta-modèle UML ?
o Un diagramme de classe UML
• Comment spécifier les contraintes d'un diagramme de classe ?
o Via la partie du méta-modèle UML spécifiant les diagrammes de
classe
o Via le méta-méta-modèle UML
• Le méta-méta-modèle UML peut donc se définir lui même
o Méta-circulaire
o Pas besoin de niveau méta supplémentaire
p55
Cours ingénierie dirigée par les modèles
2- Introduction à l’UML et méta-modélisation
Le méta-modèle de diagramme de classes
• Le méta-modèle de diagramme de classes contient des packages. Un package à
un nom et contient des classes. Un package peut importer un autre package.
Une classe a un nom et peut contenir des attributs et des associations. Une
classe peut aussi hériter d’une autre classe. Un attribut à un nom et une
visibilité (public, privé ou protégé), Une association peut être agrégation ou
composition. les attributs et les associations sont des types qui peuvent être des
types de base (string, integer, boolean).
p56
Cours ingénierie dirigée par les modèles
2- Introduction à l’UML et méta-modélisation
Le méta-modèle de diagramme de cas d’utilisation
• Le méta-modèle de diagramme de cas d’utilisation contient une classe acteurs,
classe système et classe cas d’utilisation. Un acteur a un nom et est relié aux cas
d’utilisation. Un acteur peut hériter d’un autre acteur. Un cas d’utilisation a un
intitulé et peut hériter, étendre ou inclure un autre cas d’utilisation. Le système
a lui aussi un nom, et il inclut tous les cas d’utilisation.
p57
Cours ingénierie dirigée par les modèles
2- Introduction à l’UML et méta-modélisation
Le méta-modèle de diagramme de cas d’utilisation
Diagramme de cas d’utilisation
p58
Cours ingénierie dirigée par les modèles
2- Introduction à l’UML et méta-modélisation
Le méta-modèle de diagramme de séquence
• Le méta-modèle des diagrammes de séquence est composé de Séquence-
Diagramme. Cette classe a pour fonction d’associer les messages aux objets qui
communiquent, et ainsi construire le diagramme de séquence final, Objet
représente les objets du diagramme de séquence. Ces objets envoient et
reçoivent des messages dans un ordre chronologique. Chaque objet est désigné
par son nom et Message représente les messages échangés entre les objets qui
lui correspondent. Chaque message est étiqueté par le nom de l'opération, ils
peuvent être synchrones ou asynchrones.
p59
Cours ingénierie dirigée par les modèles
2- Introduction à l’UML et méta-modélisation
Diagramme d’instances UML
Diagrammes d'instances UML
• Un diagramme d'instances est particulier car il doit être conforme au
méta-modèle UML, qui définit la structure générale des diagrammes
d'instances.
• Il doit aussi être conforme à un diagramme de classe (méta-modèle)
• Il doit être conforme également au méta-modèle UML
p60
Cours ingénierie dirigée par les modèles
2- Introduction à l’UML et méta-modélisation
Diagramme d’instances UML
Syntaxe
• Un langage possède une syntaxe textuelle respectant le méta-modèle
• Ensemble de mots-clés et de mots respectant des contraintes défini
selon des règles précises
o Notions de syntaxe et de grammaire dans les langages
o Exemple pour langage Java public class MaClasse implements
MonInterface { ... }
o Grammaire Java pour déclaration de classe
class_declaration ::= { modifier } "class" identifier [ "extends"
class_name ] [ "implements" interface_name { ","
interface_name } ] "{" { field_declaration } "}"
p61
Cours ingénierie dirigée par les modèles
2- Introduction à l’UML et méta-modélisation
Diagramme d’instances UML
Diagrammes d'instances UML
Syntaxe graphique
• Notation graphique, chaque élément a une forme graphique particulière
• Exemple : associations entre classes/interfaces sur les diagrammes de classe UML
o Trait normal : association
o Flèche, trait pointillé : dépendance
o Flèche en forme de triangle, trait en pointillé : implémentation
o Flèche en forme de triangle, trait plein : spécialisation
Syntaxe abstraite/concrète
• Abstraite
o Les éléments et leurs relations sans une notation spécialisée
o Correspond à ce qui est défini au niveau du méta-modèle
• Concrète
o Syntaxe graphique ou textuelle définie pour un type de modèle
o Plusieurs syntaxes concrètes possibles pour une même syntaxe abstraite
Un modèle peut être défini via n'importe quelle syntaxe (Pas de syntaxe concrète
définie)
p62
Cours ingénierie dirigée par les modèles
2- Introduction à l’UML et méta-modélisation
Diagramme d’instances UML
Diagrammes d'instances UML
Exemple de la modélisation de la pièce
• Via la syntaxe concrète
2 diagrammes UML (classe et états) avec syntaxe spécifique à ces types de
diagrammes
• Via la syntaxe abstraite
o Diagramme d'instances (conforme au méta-modèle) précisant
o les instances particulières de classes, d'associations, d'états...
Pour la partie diagramme d'états:
o Diagramme défini via syntaxe concrète : diagramme d'états de l'exemple
o Diagramme défini via syntaxe abstraite : diagramme d'instance conforme
au méta-modèle UML
p63
Cours ingénierie dirigée par les modèles
2- Introduction à l’UML et méta-modélisation
Diagramme d’instances UML
p64
Cours ingénierie dirigée par les modèles
2- Introduction à l’UML et méta-modélisation
Spécification de méta-modèles
Spécification de méta-modèles
But : définir un type de modèle avec tous ces types d'éléments et
leurs contraintes
Trois approches possibles:
• Définir un méta-modèle nouveau à partir de rien
• Modifier un méta-modèle existant : ajout, suppression,
modification d'éléments et des contraintes sur leurs relations
Correspond au MOF, décomposé en 2 parties
o E-MOF : essential MOF, les méta-éléments de base réutilisés tel quel
dans tous les méta-modèles
o MOF : un méta-modèle particulier défini via E-MOF
• Spécialiser un méta-modèle existant en rajoutant des éléments et
des contraintes (sans en enlever)
o Correspond aux profils UML
p65
Cours ingénierie dirigée par les modèles
2- Introduction à l’UML et méta-modélisation
Mécanismes d’extension d’UML
Mécanismes d’extension d’UML:
• UML fournit des mécanismes d’extension du langage : stéréotypes, étiquettes
(valeur marquée), notes, contraintes et Profils.
Stéréotypes : un stéréotype constitue un moyen de classer les éléments de la
modélisation. Il introduit une nouvelle classe dans le méta-modèle par dérivation
d’une classe existante. Le stéréotype est une extension et/ou spécialisation d'un
élément du méta-modèle (Classe, association, attribut, opération ...).Le nom d'un
stéréotype est marqué entre << ... >>.
o Etiquette (valeur marquée): Une valeur marquée est une paire (nom, valeur) qui
ajoute une nouvelle propriété à un élément de modélisation. La spécification
d’une valeur marquée prend la forme : nom = valeur. Une valeur marquée est
indiquée entre accolades.
p66
Cours ingénierie dirigée par les modèles
2- Introduction à l’UML et méta-modélisation
Mécanismes d’extension d’UML
o Note: Une note est un symbole graphique qui contient des informations.
L’utilisation d’une note permet de présenter des commentaires, des contraintes
ou des valeurs marquées. Elle est représentée par un rectangle écorné lié par un
ou plusieurs traits pointillés aux éléments qu’elle commente.
o Une contrainte est une note ayant une valeur sémantique particulière pour un
élément de la modélisation. Pour exprimer des contraintes de manière formelle,
le langage de contraintes OCL (Object Constraint Language) peut être utilisé.
Chaque contrainte est indiquée entre accolades {}. Une contrainte peut être
associée à plusieurs éléments par des relations de dépendance
p67
Cours ingénierie dirigée par les modèles
2- Introduction à l’UML et méta-modélisation
Mécanismes d’extension d’UML
o Profils: Le mécanisme de profil permet d’étendre ou de restreindre le méta-modèle
d’UML de manière à l’adapter à un usage spécifique, les nouveaux éléments peuvent
être des stéréotypes, des valeurs étiquetées ou des contraintes spécifiées pour un
projet donné. La Figure ci-dessous montre un exemple du profil UML appelé Exemple
regroupant les deux stéréotypes Horloge et Créateur. Les profils dans UML sont notés
comme des paquetages avec le stéréotype <>.
Le paquetage UserExemple est un exemple de modèle utilisateur basé sur le profil
Exemple. La classe Chronomètre est définie avec les deux stéréotypes de profils et les
valeurs marquées associées aux stéréotypes sont définis comme des notes UML .
p68
Cours ingénierie dirigée par les modèles
2- Introduction à l’UML et méta-modélisation
Mécanismes d’extension d’UML
o Profils:
Un profil est une spécialisation du méta-modèle UML
• Ajouts de nouveaux types d'éléments et des contraintes sur leurs
relations entre eux et avec les éléments d'UML
• Ajouts de contraintes sur éléments existants d'UML
• Ajours de contraintes sur relations existantes entre les éléments d'UML
• Aucune suppression de contraintes ou d'éléments
Profil : mécanisme d'extension d'UML pour l'adapter à un contexte métier
ou technique particulier
• Profil pour composants EJB (Les Entreprise Java Bean)
• Profil pour gestion bancaire
• Profil pour architecture logicielle
p69
Cours ingénierie dirigée par les modèles
2- Introduction à l’UML et méta-modélisation
Mécanismes d’extension d’UML
o Profils:
On peut marquer des attributs d'une classe pour préciser une contrainte ou un rôle
particulier : tagged value
• Exemple {unique} id: int
Le Profil UML est composé de 3 types d'éléments:
• Des stéréotypes
• Des tagged value
• Des contraintes (exprimables en OCL)
o Sur ces stéréotypes, tagged value
o Sur des éléments du méta-modèle existant
o Sur les relations entre les éléments
Un profil UML est défini sous la forme d'un package stéréotypé<< profile >> p70
Cours ingénierie dirigée par les modèles
2- Introduction à l’UML et méta-modélisation
Mécanismes d’extension d’UML
o Profils:
Exemple de profil : architecture logicielle
Des composants clients et serveur , un client est associé à un serveur via une
interface de service par l'intermédiaire d'un proxy
Profil
Nommé ClientProxyServer
Définit trois stéréotypes:
Trois classes jouant un rôle particulier : extensions
de la méta-class Class du méta-modèle UML
(Server, Proxy, Client) p71
Cours ingénierie dirigée par les modèles
2- Introduction à l’UML et méta-modélisation
Mécanismes d’extension d’UML
o Profils:
Pour compléter le profil, ajout de contraintes OCL
• Navigation sur le méta-modèle (simplifié) en considérant que la méta-class Class a trois
spécialisations (Server, Client, Proxy)
• context Client inv:
let proxies = [Link].-
class -> select ( c | [Link](Proxy)) in
let interfaces = [Link] in
interfaces -> forAll ( i | [Link] -> includes (i) and
proxies -> forAll ( p | [Link] -> includes (i)
implies [Link](self)))
• context Class def: hasClassRefWith(cl : Class) : Boolean=
[Link]
-> exists ( c | c = cl )
• Un proxy associé à un client doit implémenter une des interfaces dont dépend le client et
un proxy implémentant une interface d'un client doit avoir une association avec ce client
p72
Cours ingénierie dirigée par les modèles
Plan
• Introduction à l’IDM
ch1
• Introduction à l’UML et méta-modélisation
ch2
• Langage de contrainte
ch3
• Transformations de modèle
ch4
• Exécution de modèles
ch5