Vous êtes sur la page 1sur 40

Ingnierie des Modles Mta-modlisation

Eric Cariou Master Technologies de l'Internet 2me anne


Universit de Pau et des Pays de l'Adour UFR Sciences Pau Dpartement Informatique
Eric.Cariou@univ-pau.fr
1

Introduction/Plan

But de la mta-modlisation
Dfinir des langages de modlisation ou des langages de manire gnrale 4 niveaux de (mta)modlisation

Architecture MOF de l'OMG Syntaxes abstraite et concrte Dfinition de mta-modles


Profils UML MOF Ecore
2

Principales normes modlisation OMG

MOF : Meta-Object Facilities

Langage de dfinition de mta-modles Langage de modlisation Modlisation ressources, donnes, gestion d'une entreprise Langage de contraintes sur modles Standard pour changes de modles et mta-modles entre outils
3

UML : Unified Modelling Language

CWM : Common Warehouse Metamodel

OCL : Object Constraint Language

XMI : XML Metadata Interchange

Normes OMG de modlisation

Plusieurs de ces normes concernent la dfinition et l'utilisation de mta-modles


MOF : but de la norme UML et CWM : peuvent tre utiliss pour en dfinir XMI : pour change de (mta-)modles entre outils C'est un mta-mta-modle

MOF
Utilis pour dfinir des mta-modles Entit/classe, relation/association, type de donnes, rfrence, package ... 4

Dfinit les concepts de base d'un mta-modle

Le MOF peut dfinir le MOF

Hirarchie de modlisation 4 niveaux

L'OMG dfinit 4 niveaux de modlisation


M0 : systme rel, systme modlis M1 : modle du systme rel dfini dans un certain langage M2 : mta-modle dfinissant ce langage M3 : mta-mta-modle dfinissant le mta-modle

Le niveau M3 est le MOF Dernier niveau, il est mta-circulaire : il peut se dfinir lui mme

Le MOF est pour l'OMG le mta-mta-modle unique servant de base la dfinition de tous les mta-modles

Hirarchie de modlisation 4 niveaux


M3 MOF

M2

MtaModle GestionEntreprise

MtaModle SystmesTechniques

M1

Modle 1

Modle 2

Modle 3

Modle 4

M0

Systme d'Information

Facturation

Systme Embarqu

Systme Tlcom

Hirarchie de modlisation 4 niveaux

Hirarchie 4 niveaux existe en dehors du MOF et d'UML, dans d'autres espaces technologiques que celui de l'OMG

Langage de programmation

M0 : l'excution d'un programme M1 : le programme M2 : la grammaire du langage dans lequel est crit le programme M3 : le concept de grammaire EBNF M0 : donnes du systme M1 : donnes modlises en XML M2 : DTD / Schema XML M3 : le langage XML 7

XML

Mta-modlisation UML

Avec UML, on retrouve galement les 4 niveaux


Mais avec le niveau M3 dfinissable en UML directement la place du MOF
Une pice possde 4 murs, 2 fentres et une porte Un mur possde une porte ou une fentre mais pas les 2 la fois Deux actions sont associes une porte ou une fentre : ouvrir et fermer Si on ouvre une porte ou une fentre ferme, elle devient ouverte Si on ferme une porte ou une fentre ouverte, elle devient ferme

Exemple de systme rel modliser (niveau M0)

Mta-modlisation UML

Pour modliser ce systme, il faut dfinir 2 diagrammes UML : niveau M1


Un diagramme de classe pour reprsenter les relations entre les lments (portes, murs, pice) Un diagramme d'tat pour spcifier le comportement d'une porte ou d'une fentre (ouverte, ferme) On peut abstraire le comportement des portes et des fentres en spcifiant les oprations d'ouverture fermeture dans une interface

Le diagramme d'tat est associ cette interface

Il faut galement ajouter des contraintes OCL pour prciser les contraintes entre les lments d'une pice
9

M1 : spcification du systme

context Mur inv: fenetre -> union(porte) -> size() <= 1 -- un mur a soit une fentre soit une porte (soit rien)
context Piece inv: mur.fenetre -> size() = 2 -- 2 murs de la pice ont une fentre mur.porte -> size() = 1 -- 1 mur de la pice a une porte
10

Mta-modlisation UML

Les 2 diagrammes de ce modle de niveau M1 sont des diagrammes UML valides Les contraintes sur les lments des diagrammes UML et leurs relations sont dfinies dans le mta-modle UML : niveau M2

Un diagramme UML (de classes, d'tats ...) doit tre conforme au mta-modle UML Diagramme de classe spcifiant la structure de tous types de diagrammes UML

Mta-modle UML

Diagramme de classe car c'est le diagramme UML permettant de dfinir des lments/concepts (via des classes) et leurs relations (via des associations) 11

Avec contraintes OCL pour spcification prcise

M2 : Mta-modle UML (trs simplifi)

12

M2 : Mta-modle UML (trs simplifi)

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 a1.name <> a2.name) 2 attributs d'une mme classe n'ont pas le mme nom

context StateMachine inv: transition -> forAll ( t | self.state -> includesAll(t.state)) Une transition d'un diagramme d'tat connecte 2 tats de ce diagramme d'tat
13

Liens lments modle/mta-modle

Chaque lment du modle


Est une instance d'un lment du mta-modle (d'un mtalment) En respectant les contraintes dfinies dans le mta-modle

Exemple avec diagramme tat

14

Partie spcifiant les machines tats

Extrait mta-modle UML 2.0

UML Superstructure Specification, v2.1.1 Figure 15.2 - State Machines, page 521

15

Extrait mta-modle UML 2.0

Exemples de contraintes OCL pour la specification des machines tats


Invariants de la classe StateMachine

The classifier context of a state machine cannot be an interface.

context->notEmpty() implies not context.oclIsKindOf(Interface)

The context classifier of the method state machine of a behavioral feature must be the classifier that owns the behavioral feature.

specification->notEmpty() implies (context->notEmpty() and specification->featuringClassifier->exists (c | c = context))

The connection points of a state machine are pseudostates of kind entry point or exit point.

connectionPoint->forAll (c | c.kind = #entryPoint or c.kind = #exitPoint)

UML Superstructure Specification, v2.1.1 Section 15.3.12 StateMachine, page 558

16

Extrait mta-modle UML 2.0

Pour comprendre les contraintes OCL


UML Superstructure Specification, v2.1.1 Figure 13.6 - Common Behavior, page 424

UML Superstructure Specification, v2.1.1 Figure 7.10 - Features diagram of the Kernel package, page 30

17

Mta-modlisation UML

Le mta-modle UML doit aussi tre prcisment dfini


Il doit tre conforme un mta-modle C'est le mta-mta-modle UML

Niveau M3

Qu'est ce que le mta-modle UML ?

Un diagramme de classe UML (avec contraintes OCL)

Comment spcifier les contraintes d'un diagramme de classe UML ?


Via le mta-modle UML Ou plus prcisment : via la partie du mta-modle UML spcifiant les diagrammes de classes
18

Mta-mta-modle UML = copie partielle du mtamodle UML

M3 : Mta-mta-modle UML (simplifi)

19

Mta-modlisation UML

Mta-mta-modle UML doit aussi tre clairement dfini

Il doit tre conforme un mta-modle Un diagramme de classe UML

Qu'est ce que le mta-mta-modle UML ?

Comment spcifier les contraintes d'un diagramme de classe ?

Via la partie du mta-modle UML spcifiant les diagrammes de classe

Cette partie est en fait le mta-mta-modle UML

Le mta-mta-modle UML peut donc se dfinir lui mme


Mta-circulaire Pas besoin de niveau mta supplmentaire


20

Hirarchie de modlisation
conforme

Niveau M3

conforme

Niveau M2

Niveau M1

conforme

Niveau M0

conforme

21

Diagrammes d'instance UML

Un diagramme d'instance est particulier car


Doit tre conforme au mta-modle UML

Qui dfinit la structure gnrale des diagrammes d'instances Ce diagramme de classe est un mta-modle pour le diagramme d'instance Diagramme de classe est conforme galement au mta-modle UML Mta-modle UML conforme Un diagramme d'instance 22 conforme Un diagramme de classe conforme

Doit aussi tre conforme un diagramme de classe


Hirarchie de modlisation

Architecture 4 niveaux

Conceptuellement pertinente Certains niveaux sont difficiles placer les uns par rapport aux autres Cas du diagramme d'instance

En pratique

Diagramme d'instance de l'application : niveau M1 Mta-modle UML : niveau M2 Diagramme de classe de l'application : niveau M1 ou M2 ?

M1 normalement car modlise l'application et conforme au mta-modle de niveau M2 Mais devrait tre M2 rapport au diagramme d'instance qui est de niveau M1

Conclusion

Pas toujours facile ni forcment pertinent de chercher placer absolument les modles tel ou tel niveau L'important est de savoir quel rle (modle / mta-modle) joue un modle dans une relation de conformit

23

Un langage est dfini par un mta-modle Un langage possde une syntaxe


Dfinit comment reprsenter chaque type d'lment d'un modle

Syntaxe

Elment d'un modle = instance d'un mta-lment

Syntaxe textuelle
Ensemble de mots-cl et de mots respectant des contraintes dfini selon des rgles prcises

Notions de syntaxe et de grammaire dans les langages Exemple pour langage Java : public class MaClasse implements MonInterface { ... } Grammaire Java pour la dclaration d'une classe : class_declaration ::= { modifier } "class" identifier [ "extends" class_name ] [ "implements" interface_name 24 { "," interface_name } ] "{" { field_declaration } "}"

Syntaxe

Syntaxe graphique
Notation graphique, chaque type d'lment a une forme graphique particulire Exemple : relations entre classes/interfaces dans les diagrammes de classe UML

Trait normal : association Flche, trait pointill : dpendance Flche en forme de triangle, trait en pointill : implmentation Flche en forme de triangle, trait plein : spcialisation

25

Syntaxe abstraite/concrte

Syntaxe

Abstraite

Les lments et leurs relations sans une notation spcialise Correspond ce qui est dfini au niveau du mta-modle, des instances de mta-lments Syntaxe graphique ou textuelle dfinie pour un type de modle Plusieurs syntaxes concrtes possibles pour une mme syntaxe abstraite

Concrte

Un modle peut tre dfini via n'importe quelle syntaxe


L'abstraite Une des concrtes Pas de syntaxe concrte dfinie

MOF : langage pour dfinir des mta-modles

26

Syntaxe

Exemple de la modlisation de la pice


Syntaxe concrte

2 diagrammes UML (classes et tats) avec syntaxes graphiques spcifiques ces types de diagrammes Diagramme d'instance (conforme au mta-modle) prcisant les instances particulires de classes, d'associations, d'tats... Diagramme dfini via syntaxe concrte : diagramme d'tats de l'exemple Diagramme dfini via syntaxe abstraite : diagramme d'instances conforme au mta-modle UML 27

Via la syntaxe abstraite

Pour la partie diagramme d'tats


Syntaxe : exemple diagramme tat

28

Dfinition de mta-modles

But : dfinir un type de modle avec tous ses types d'lments et leurs contraintes de relation Plusieurs approches possibles
Dfinir un mta-modle nouveau partir de rien, sans base de dpart

On se basera alors sur un mta-mta-modle existant comme MOF ou Ecore

Modifier un mta-modle existant : ajout, suppression, modification d'lments et des contraintes sur leurs relations Spcialiser un mta-modle existant en rajoutant des lments et des contraintes (sans en enlever)

Correspond aux profils UML

29

Profils UML

Un profil est une spcialisation du mta-modle UML

Ajouts de nouveaux types d'lments

Et des contraintes sur leurs relations entre eux et avec les lments d'UML

Ajouts de contraintes sur lments existants d'UML Ajouts de contraintes sur relations existantes entre les lments d'UML Aucune suppression de contraintes ou d'lments

Profil : mcanisme d'extension d'UML pour l'adapter un contexte mtier ou technique particulier

Profil pour composants EJB Profil pour gestion banquaire Profil pour architecture logicielle ...
30

Profils UML : lments de spcialisation

Strotype
Extension, spcialisation d'un lment du mta-modle

Classe, association, attribut, opration ... Le nom d'un strotype est indiqu entre << ... >> Il existe dj des strotypes dfinis dans UML

<< interface >> : une interface est un classifier particulier (sans attribut)

Tagged value (valeur marque)

Pour marquer des attributs d'une classe pour prciser une contrainte ou un rle particulier

Exemple : {unique} id: int


<< process >> << query >> Serveur {unique} IPadd: IP << data >> BDD

<< process >> << uses >> Client

31

Profils UML

Un profil UML est compos de 3 types d'lments


Des strotypes Des tagged values Des contraintes (exprimables en OCL)


Sur ces strotypes, tagged values Sur des lments du mta-modle existant Sur les relations entre les lments

Un profil UML est dfini sous la forme d'un package strotyp << profile >> Exemple de profil : architecture logicielle

Des composants client et serveur Un client est associ un serveur via une interface de service par l'intermdiaire d'un proxy

32

Exemple profil UML

Profil dfini
nomm ClientProxyServer Dfinit trois strotypes

Trois classes jouant un rle particulier : extensions de la mta-classe Class du mta-modle UML

Server, Proxy, Client

33

Exemple profil UML

Pour complter le profil, ajout de contraintes OCL

Navigation sur le mta-modle UML (simplifi) en considrant que la mta-classe Class a trois spcialisations (Server, Client, Proxy) Un proxy associ un client doit implmenter une des interfaces dont dpend le client et un proxy implmentant une interface d'un client doit avoir une association avec ce client context Client inv: let proxies = self.associationEnd.association.associationEnd.class -> select ( c | c.oclIsTypeOf(Proxy)) in let interfaces = self.dependsOn in interfaces -> forAll ( i | proxies.implements -> includes (i) and proxies -> forAll ( p | p.implements -> includes (i) implies p.hasClassRefWith(self)))

context Class def: hasClassRefWith(cl : Class) : Boolean = self.associationEnd.association.associationEnd.class -> exists ( c | c = cl )

34

Autre exemple : profil EJB

Source : norme UML 2.0

35

Meta Object Facilities (MOF) (version 2.0)


Mta-mta-modle de rfrence pour l'OMG Pas de syntaxe concrte Align depuis la version 2.0 avec le noyau du mtamodle d'UML 2.0 Dcompos en 2 parties

MOF

E-MOF : essential MOF

Mta-modle noyau Mta-modle plus complet

C-MOF : complete MOF

E-MOF et C-MOF peuvent se dfinir mutuellement et chacun eux-mmes Mta-modle = ensemble d'instances de mta-lments du 36 MOF associes entre elles

Dfinition d'un mta-modle via le MOF

MOF : mta-modle (version 1.4)

37

Ecore

Eclipse Modeling Framework (EMF)


Framework de modlisation intgr dans l'atelier de dveloppement Eclipse (IBM) pour le langage Java But : modliser des programmes Java et travailler au niveau modle en plus du code Mais peut aussi servir crer des modles et des mta-modles Mta-modle intgr dans EMF Mta-modle minimal align sur E-MOF

Ecore

38

Ecore

Elments du mta-modle Ecore

39

Ecore (dtails MM)

40