Académique Documents
Professionnel Documents
Culture Documents
MASTER
EN
INFORATIQUES
OPTION
Réseaux et Systèmes Distribués
Dirigé(s) par :
Pr.Chaoui Allaoua
Dr.SeidAli Rehab
Enfin, nous tenons également à remercier toutes les personnes qui ont
L’Ingénierie Dirigée par les Modèles(IDM) joue un rôle très important dans le dévelop-
pement des logiciels. Dans le contexte d’IDM, la transformation de modèle est une phase
important qui utilisée dans le processus de développement de logiciel elle permet d’aug-
menter la validation et la vérification d’une telle transformation des modèles .pour effectué
la transformation un utilise deux chose ,un environnement de modélisation et un outille
de transformation.
Dans notre travaille, nous proposons une transformation du Méta-Modèle Ecore en une
langage de Coq appelée Gallina / Vernacular. On utilise comme environnement Eclipse
Modeling Framework (EMF)) avec ca langage graphique(Ecore) qui permet de crée les
modèle, et comme un outil nous avons faire une transformation bidirectionnelle avec TGG-
Interpretre avec langage de transformation QVT qui vérifier la conformité des modèle par
langage OCL.
Mots Clés
L’Ingénierie Dirigée par les Modèles(IDM), Méta-Modéle Ecore, Coq, Gallina / Vernacular,
Eclipse Modeling Framework(EMF), TGG-Inerpretre, langage QVT, lagage OCL.
I
Abstract
Model Driven Engineering (IDM) plays a very important role in software development.
In the context of IDM, the model transformation is an important phase that used in the
software development process it allows to increase the validation and the verification of
such a transformation of the models. For carried out the transformation one uses two thing
, a modeling environment and a transformation tool. In our work, we propose a transfor-
mation of the Meta-Model Ecore into a Coq language called Gallina / Vernacular. We
use as environment Eclipse Modeling Framework (EMF)) with this graphical language
(Ecore) which makes it possible to create the model, and as a tool we have a bidirectional
transformation with TGG-Interpreter with language of transformation QVT which check
the conformance of the model by language OCL.
Key Words
II
Acronymes
III
Table des matières
Résumé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . I
Acronymes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . III
1.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.3.1 Definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
IV
1.3.8 Avantages d’EMF . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.4 Ecore . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.4.1 Définition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.5 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.2.2 Classification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.2.3.1 Model-checking . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.3.1 Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
V
2.3.5 Termes de base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.3.8.1 calculs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.4 conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.3 Concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.4.1 MOF : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.4.2 QVT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.4.3 UML : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.4.4 XMI : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.4.5 CWM : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.5.2.1 CIM : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
VI
3.5.2.2 PIM : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.5.2.3 PSM : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.5.2.4 PDM : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.8.1 Acceleo : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
3.8.2 AGG : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
3.8.3 AtoM3 : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
3.8.4 GROOVE : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
3.8.5 GrGen : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
VII
3.8.6 TGG-Interpreter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
3.9 conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
4 Contribution 47
4.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
4.2.1.3 Correspondance . . . . . . . . . . . . . . . . . . . . . . . . 53
VIII
4.2.2.13 Régle13 : makeBinder() . . . . . . . . . . . . . . . . . . . . 63
4.4 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
Conclusion Générale 71
Table des figures
3.7 un sous-graphe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
X
3.9 Application d’une règle de transformation . . . . . . . . . . . . . . . . . . . 42
XI
4.21 Règle TGG de typ2term()6 . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
4.22 Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
Aujourd’hui, l’informatique est appliquée à la plupart des activités humaines( Les sys-
tèmes actuels de transport, de télécommunications, d’administration, de soins médicaux,
la gestion de paiements électroniques, etc.). Dans ce genre d’application les enjeux sont
énormes, une erreur dans le logiciel peut être très coûteuse. Pour cette raison que ces sys-
tèmes doivent être conçus de sorte à atteindre la qualité zero-erreur. Ces derniers,doivent
être vérifiés d’une manière fiable et performante avant leur mise en œuvre.
La vérification du fonctionnement de ces systèmes avec Les méthodes traditionnelles uti-
lisées pour détecter les erreurs contenue dans un programme ne sont pas suffisantes pour
démontrer que ce dernier est correct, c’est-à-dire qu’il ne contient pas d’erreurs. Il faut donc
faire appel à des approches plus rigoureuses qui garantissent de façon absolue l’absence de
toute défaillance dans certains logiciels. C’est ce que proposent les méthodes formelles. Les
méthodes formelles sont des techniques qui permettent un raisonnement rigoureux, à l’aide
d’une sémantique et de modèle formel, sur des systèmes informatique ou même du matériel
électronique afin de prouver leur validité par rapport à un certain ensemble de propriétés
bien définies. Il existe essentiellement deux approches dans le domaine de la vérification
formelle : celle basée sur les modèles (model-checking) [1] pour des systèmes à ensemble
d’états fini, et celle basée sur la preuve de théorèmes (theorem-proving) qui permettent
de traiter des systèmes ayant un nombre infini d’états. Cette approche consiste à spécifier
et à démontrer les propriétés du système à l’aide d’un assistant de preuves tels que PVS
[2], HOL [3] et Coq [4] que nous avons utilisé dans notre travail. Coq est un assistant de
preuve qui permet d’exprimer les spécifications et le développement de programmes co-
hérents avec leur spécification. Cet outil s’applique alors parfaitement au développement
de programmes en lesquels une confiance absolue est requise. Dans plusieurs domaines,
la nécessité de programmes rigoureusement conformes à leur spécification exprime l’effort
demandé par leur validation.
XIII
Notre mémoire est une approche de transformation de modèle Ecore vers l’assistant de
preuve Coq basée sur la grammaire de graphes qui est automatisée grâce à l’outil de méta-
modélisation EMF et L’outil de transformation TGG Interpreter.
Dans le reste, nous détaillons ces idées à travers le plan du présent manuscrit :
Le premier chapitre : nous présentons le langage de méta-méta-modélisation Ecore qui
sera le modèle source pour notre approche de transformation.
Le deuxième chapitre : nous présentons la méthode de vérification formelle et ces dif-
férentes classifications et la notion de lambda calcul. Ensuite, nous présentons en détaille
l’assistant de preuve Coq et ces concepts de base.
Le troisième chapitre :nous présentons les notions de base de l’ingénierie Dirigée par les
Modèles, ainsi l’architecture dirigée par les modèles, en présentant les principaux notions
de l’IDM corresponds à la méta-modélisation et la transformation des modèles. Par la
suite, nous présentons les définitions de base de grammaires de graphes, et ces différentes
approches et outils pour la transformation de graphes, ainsi nous présentons le langage de
méta-méta-modélisation Ecore qui sera le modèle source pour notre approche de transfor-
mation.
Le quatrième chapitre : nous présentons notre approche de transformation qui com-
mence par la méta-modélisation de modèle Ecore avec le langage OCL. Ensuite, nous
présentons la génération des spécifications Coq en se basant sur le TGG à l’aide de l’outil
TGG Interpreter.
Et finalement, nous clôturons, notre mémoire par une conclusion générale qui résumera
ce qui a été réalisé et nous proposons éventuellement les travaux qui peuvent être réalisés
comme perspectives du présent manuscrit.
XIV
Chapitre 1
1.1 Introduction
Pour effectuée la transformation des modèles soit la transformation modèle vers mo-
dèle ou modèle vers code (génération du code), ou bien pour faire la modélisation ou la
Méta-Modélisation, nous avons besoin des environnements de modélisation comme l’EMF,
GMF[5]..etc, et de transformation comme TGG-Interpréter[6], AGG[7], AToM3[8], VIA-
TRA2[9]..etc. Permis les outils les plus importants dans ce domaine, nous avons choisi de
travailler avec Ecore, le langage de base d’Eclipse Modeling Framework (EMF). qui fournit
un cadre et une fonction de génération de code permettant de créer des applications ro-
bustes basées sur des modèles étonnamment simples. EMF offre une modélisation à faible
coût pour le grand public Java en utilisant le modèle intrinsèque dans une application .
Ce chapitre est analysé deux partie : EMF comme un outil de modélisation des modèle
après une définition plus détaillée d’Ecore comme un langage qui permet de décrire le mo-
dèle EMF. avant de faire sa , nous commençons par une présentation générale d’éclipse.
Ensuite nous précisons la relation entre UML[10] et EMF et les Méta-Modèle Ecore .
Eclipse[11] est un projet créé en 2001 par IBM .C’est un logiciel open source, extensible
et polyvalent en s’appuyant principalement sur Java. Il fournit une plate-forme des outils
hautement intégrée pour le développement logiciel sous forme d’activité, modélisation..etc.
1
Son architecture est basée sur la notion de plug-in. Chaque plug-in fournit un certain type
et un certain nombre des fonctionnalités dans le contexte d’Eclipse Workbench.[12]
1.3.1 Definition
EMF est un Framework qui peut être utilisés pour modéliser un modèle de données et
générer du code ou toute autre sortie basée sur ce modèle. Permet de construire rapide-
ment des applications basées sur un modèle de données structurées. Elle fournit des outils
permettant de générer un ensemble des classes Java pour le modèle à partir d’une spéci-
fication décrite généralement sous la forme d’un modèle en XMI . Elle offre un langage
de description de modèle (Méta-Modèle Ecore). la figure 1.1 se montrée les trois types de
fichiers qui peut traiter par EMF[13] :
• UML
• XML
• Code Java.
2
Figure 1.1 – Les fichier traiter par EMF[14]
Dès la conception de la plate-forme, plusieurs niveaux ont été mis en place. Tout d’abord,
Eclipse constitue l’ infrastructure technique de base. Il accueille les différents services sous
forme de composants (plug-ins) et permet de construire une interface graphique pour les
différentes activités. Il constitue la base d’atelier. Ensuite, EMF introduit un socle de pro-
grammation pour traiter des modèles. Ainsi, tous les modèles manipulés dans le cadre de
cette plate-forme ont au minimum un Méta-Modèle décrit en Ecore. Ceci assure une com-
patibilité technique après Les autres outils de la plate-forme sont montrés dans la figure
1.2 qui illustré organisation de EMF dans la plate-forme d’intégration.
3
Figure 1.2 – Organisation d’EMF dans la plate-forme d’intégration[15]
EMF est un Framework Open Source dont l’objectif dépasse la simple génération des
interfaces de manipulation des modèles, le but de ce framework est de faciliter la mani-
pulation des modèles afin de permettre leur intégration dans la plate-forme Éclipse. C’est
dans cet objectif que plusieurs fonctionnalités ont été améliorées pour permettre le déve-
loppement de nouveaux Méta-Modèles et assurer la manipulation des modèles instances
de ces Méta-Modèles dans la plate-forme Éclipse. Parmi ces fonctionnalités, celle qui est
certainement la plus agréable est la génération automatique d’un simple éditeur graphique
4
permettant l’édition des modèles sous forme arborescente. L’idée sous-jacente est de gé-
nérer automatiquement, à partir d’un Méta-Modèle, un éditeur graphique offrant une vue
arborescente d’un modèle. Chacun des nœuds de l’éditeur représentées une instance d’une
méta classe. Cette fonctionnalité s’utilise très simplement dans le framework EMF. Il suffit
de demander la génération des classes Java composant l’éditeur graphique correspondant
à un Méta-Modèle puis d’exécuter ces classes dans la plate-forme Éclipse afin de visua-
liser l’éditeur graphique. Nous avons utilisé cette fonctionnalité sur notre Méta-Modèle
exemple et avons pu élaborer notre modèle grâce à cet éditeur graphique, comme l’illustre
la figure1.3
5
EMF est une boı̂te des outils d’amélioration Java Éclipse au monde du développement
dirigé par les modèles, et pour modéliser avec EMF nous suivis les étapes qui illustrée
dans la figure1.4, au départ il faut définir Le Méta-Modèle (modèle de domaine) à l’aide
de l’éditeur de diagramme Ecore telle que son extension est .ecore, et a partir de ce modèle
on peut générer le code java et avant ca la génération nécessite la création des modèle de
génération qui appelée genmodele qui contient les information comme package, chemin
de génération.etc. Enfin, Personnalisation du code avec supplément fonctionnalité.
UML est devenu le langage dirigée par les modèles. Il englobe plusieurs diagrammes uti-
lisés pour représenter chaque vue, parmi les diagrammes les plus utilisés nous avons le
diagramme de classe qui représente l’aspect structurel de MOF[16] qui normalisée par
OMG[17]. Ecore est comparable pour MOF mais assez simple. Nous pouvons trouver
des similitudes dans leur capacité à spécifier des classes, caractéristiques structurelles et
comportementales, héritage et paquet.[18]
6
1.3.7 Architecture d’EMF
Outils EMF
• Prise en charge des éditeurs et des visualiseurs basés sur des modèles
• Éditeur de réflexion par défaut
Codegen
• Générateur de code pour modèles d’application et éditeurs
• Cadre extensible modèle importateur / exportateur
Trois niveaux de génération de code sont pris en charge :
• Modèle : fournit des interfaces Java et des classes d’implémentation pour toutes les
classes du modèle, ainsi qu’une classe d’implémentation d’usine et de package (métadon-
nées).
• noyau : génère des classes d’implémentation (appelées ItemProviders) qui adaptent les
classes de modèle à l’édition et à l’affichage.
• Editeur : produit un éditeur correctement structuré, conforme au style recommandé
pour les éditeurs de modèles Éclipse EMF et servant de point du départ pour la person-
nalisation.
7
Figure 1.5 – l’architecture d’EMF[11]
• EMF est un terrain d’entente dans la modélisation par rapport au monde de la program-
mation.
• L’accent est mis sur le sous-ensemble de diagrammes de classes de UML modélisation
(modèle d’objet).
• Transforme les modèles en modèles efficaces, corrects et code Java facilement personna-
lisable
• Fournit l’infrastructure pour utiliser des modèles efficacement dans le code
• Coût d’entrée très bas
• Outil de modélisation graphique à grande échelle non requis
• EMF est gratuit
8
1.4 Ecore
1.4.1 Définition
Le langage OCL (object Constraint Language) a été développé en 1997 par Jos Warmer
(IBM). Il a été officiellement incorporé dans UML 1.1 en 1999. OCL est un langage formel
qui est basé sur la notion des contraintes. cette dernier est une expression booléenne qui
peut être attachée à tout élément d’UML. Ce langage indique généralement une restriction
ou donne des informations sur un modèle. Les contraintes sont notamment utilisées pour
décrire la sémantique d’UML et ses différentes extensions, en participant à la définition
des profils UML. Le choix de ce langage est justifié par :
• OCL est un langage formel volontairement simple d’accès.
• OCL représente en fait un bon milieu entre un langage naturel et un langage très tech-
nique (langage mathématique, informatique, ...).
• Il permet ainsi de limiter les ambiguı̈tés, tout en restant accessible.
• Langage OCL est intégré dans le langage Ecore, donc il est facile à utiliser pour implé-
menter les contraintes.
•Intégré dans des AGLs, utilisé ou étendu dans des langages de transformations (ATL,
QVT...).
Dans ce qui suit, nous présentons deux contraintes en langage OCL. La première exprime
que les noms sont obligatoire. Pour la deuxième, explique le nom ambiguı̈té des transi-
9
tions c-à-d on ne peut pas trouver deux transitions avec le même nom, la même source et
destination et la même condition.
La figure 1.6 illustre la hiérarchie complète des classes des méta-modèle Ecore :
10
EOperation : désigne les opération d’une classe pouvant étre invoqué, cette méta-classe
identifiée par un nom et un type de retour et des paramétrés ,EOperations peut avoir des
paramètres représentés par les EParameters.
EAttributs : Les attributs sont des composants structurels d’une classe, identifiée par un
nom et un type.
EReference : représente une extrémité d’une association entre classe. Elle a un nom, un
flag booléen pour indiquer si elle a du contenu ou non et une référence type.
entre eAttributeType et EAttributes. Il définit que chaque attribut doit être saisi et plu-
sieurs attributs peuvent être typés avec un EDataType.
EEnum : Désigne le type énumérés parmi un ensemble de EenumLiteral .
11
EObject
eClass() : EClass
eIsProxy() : EBoolean
eResource() : EResource
eContainer() : EObject
eContainingFeature() : EStructuralFeature
eContainmentFeature() : EReference
eContents() : EEList
eAllContents() : ETreeIterator
eCrossReferences() : EEList
eGet(EStructuralFeature) : EJavaObject
eGet(EStructuralFeature,EBoolean) : EJavaObject
eSet(EStructuralFeature,EJavaObject)
eIsSet(EStructuralFeature) : EBoolean
eUnset(EStructuralFeature)
EModelElement
getEAnnotation(EString) : EAnnotation
EClass EDataType
abstract : EBoolean serializable : EBoolean EStructuralFeature EOperation EParameter
interface : EBoolean
changeable : EBoolean
isSuperTypeOf(EClass) : EBoolean volatile : EBoolean
getEStructuralFeature(EInt) : EStructuralFeature transient : EBoolean
getEStructuralFeature(EString) : EStructuralFeature defaultValueLiteral : EString
getFeatureCount() : EInt defaultValue : EJavaObject
getFeatureID(EStructuralFeature) : EInt unsettable : EBoolean
EEnum derived : EBoolean
getEEnumLiteral(EString) : EEnumLiteral getFeatureID() : EInt
getEEnumLiteral(EInt) : EEnumLiteral getContainerClass() : EJavaClass
getEEnumLiteralByLiteral(EString) : EEnumLiteral
EAttribute EReference
iD : EBoolean containment : EBoolean
container : EBoolean
resolveProxies : EBoolean
12
1.4.3 Représentation textuelle pour les Méta-Modèles
1.5 Conclusion
EMF est un projet open-source d’Eclipse.org fournissant un cadre et une fonction de gé-
nération de code permettant de créer des applications robustes basées sur des modèles
étonnamment simples. Les modèles peuvent être définis de différentes manières (interfaces
Java, schémas XML, UML) à partir desquels EMF générera une grande partie de l’appli-
cation. Le code généré est propre, efficace et facilement modifié à la main. Vous pouvez
même régénérer le modèle après avoir modifié le code, sans effacer vos modifications.
EMF fournit une modélisation à faible coût pour le grand public Java en utilisant le modèle
intrinsèque dans une application. Avec EMF, aucun outil de modélisation de haut niveau
n’est requis. L’utilisation des EMF présente deux avantages fondamentaux. Premièrement,
il en résulte un gain de productivité en fournissant un moyen agréable et de haut niveau
(UML) de communiquer la conception, puis de générer une partie du code d’implémen-
tation. Deuxièmement, EMF permet aux applications de s’intégrer avec une granularité
beaucoup plus fine qu’il n’est autrement possible. Les concepteurs d’EMF estiment qu’il
combine la bonne quantité de modélisation à la programmation afin de maximiser l’effica-
cité des deux.
13
Chapitre 2
2.1 Introduction
En génie logiciel, les méthodes formelles sont des techniques et des outils basés sur les
mathématiques pour la synthèse (c’est-à-dire le développement) et l’analyse de systèmes
logiciels. Les méthodes formelles peuvent être appliquées à différents moments du cycle
de développement du logiciel. Des méthodes formelles peuvent également être utilisées
14
en ingénierie inverse pour modéliser et analyser des systèmes existants. Les méthodes
formelles ne sont généralement utilisées que dans le développement de logiciels critiques
pour la sécurité, les affaires et la mission, où le coût des défauts est élevé.
En ce qui concerne le terme méthodes formelles, nous utilisons la définition suivante : une
méthode formelle est un ensemble d’outils et de notations (avec une sémantique formelle)
utilisés pour spécifier sans ambiguı̈té les exigences d’un système informatique qui prend
en charge la preuve des propriétés de cette spécification et les preuves de la justesse d’une
éventuelle mise en œuvre par rapport à celle.
Les principaux avantages des méthodes formelles peuvent être résumés dans les points
suivants :
• l’utilisation d’une méthode formelle basée sur des notations mathématiques et précises
permet d’éviter les ambiguı̈tés et les redondances dans la phase de spécification.
• La détection d’erreurs : garantie la détection des bugs de conception le plus tôt possible
dans ce processus.
• le raffinement des spécifications formelles et leurs décompositions successives permettent
de mettre des niveaux d’abstraction intéressants pour la résolution du problème et pour
promouvoir la réutilisation des spécifications.
2.2.2 Classification
Il y a plusieurs approches dans les méthodes formelles J.M.Wing [20] montrées dans La
Figure.2.1
• approches orientées données décrivant les états du système.
• approches orientées opérations décrivant le comportement du système par des axiomes.
• approches hybrides qui combinent les deux orientations.
Le développement est basé sur la description d’un système par un modèle qui a les pro-
priétés du système. Vérification des propriétés sur le modèle. Des raffinements corrects
15
Figure 2.1 – Classification des méthode formelles
successifs sont effectués sur le modèle. On caractérise deux sortes d’approches dans ce
contexte : l’approche dynamiques et l’approche par modèle abstrait .
• Approche dynamique : Cette approche s’intéresse à la modélisation des systèmes en
s’appuyant sur le concept de processus.Cette catégorie de spécifications a été développée
au sein des algèbres de processus comme CSP [21] ou CCS [22], dans les systèmes de tran-
sitions (automates, réseaux de Pétri, arbres JSD) [23] .
• Approche par modèle abstrait : Cette approche est constructive dont le système
formel est décrit par une syntaxe attribuée par les types et les opérations du modèle abs-
trait et dont la sémantique est attribuée.Nous citons comme exemple de cette catégorie
les langages de spécification VDM [24][25], Z [26][27].
16
2.2.2.2 Approche axiomatique :
Les approches hybrides enrichissent un modèle de données par une axiomatisation ou in-
versement [38]. LOTOS [39] est classifié comme étant l’un des langages algébriques puisque
ses expressions de contrôle sont spécifiées par une algèbre dont les termes sont des pro-
cessus. Tandis que les données sont spécifiées par une algèbre de types abstraits dont les
termes sont des expressions fonctionnelles [40]. Parmi les prédécesseurs de LOTOS, on
peut distinguer le langage CCS [41] et le langage ACT ONE [42].
Techniques pour la preuve de propriétés s’effectue par deux méthodes différentes : la vé-
rification de modèle (model checking) et la preuve de théorèmes (theorem proving).
17
2.2.3.1 Model-checking
C’est une approche qui permet de vérifier qu’un modèle de système à états finis (généra-
lement simultané, réactif) satisfait à une spécification formelle des exigences du système.
Dans cette approche, les modèles décrivent comment l’état du système peut évoluer avec
le temps, et les exigences sont quelques contraintes sur la manière dont l’état du système
est autorisé à évoluer dans le temps. Les outils qui effectuent automatiquement une véri-
fication de modèle sont appelés des vérificateurs de modèle.
L’avantage majeur de cette approche est sa grande automatisation. Le processus de vé-
rification de modèle permet de décider de la validité des propriétés à vérifier sans avoir
besoin d’aucune intervention d’utilisateur. Le rôle de l’utilisateur se réduit à modéliser le
système, spécifier les propriétés à vérifier et finalement lancer le calcul. Cette approche a
aussi l’avantage de pouvoir exhiber un modèle de comportement invalidant la propriété à
vérifier(un contre-exemple) quand celle-ci est insatisfaite.
Parmi les différents outils de la vérification de Model-checking on cite SPIN et UPPAAL
(a) SPIN : Spin (Simple Promela INterpreter) est un outil général permettant de
vérifier des systèmes distribués. Cet outil utilisé comme un langage de spécification. Il a
été écrit par Gerard J. Holzmann et d’autres personnes du groupe Unix de Centre du
recherche en sciences informatiques des Bell Labs, à partir de 1980.
(b) UPPAAL : UPPAAL est un environnement d’outils intégré pour la modélisation,
la validation et la vérification de systèmes temps réel modélisés sous la forme de réseaux
d’automates temporisais, étendus avec des types de données (entiers liés, tableaux, etc.).
développé par une collaboration entre le département technologie de l’information de l’uni-
versité d’Uppsala (Suède) et le département de d’informatique de l’université D’Aalborg
au Danemark et beaucoup d’autres.
Cette méthode consiste à spécifier et à démontrer les propriétés du système à l’aide d’outils
logiciels appelés assistants de preuves tels que Coq, HOL, Isabelle, LEGO, NuPRL. Toute
preuve est effectuée par l’utilisateur mais sa validité est garantie par ce système.
Cette approche a l’avantage d’être indépendante de la taille de l’espace d’états du système,
et peut donc s’appliquer sur des modèles avec un très grand nombre d’états, potentielle-
18
ment indéterminé ou infini. Néanmoins, son inconvénient est quelle nécessite l’intervention
et la créativité de l’utilisateur pour compléter la preuve, ce qui est parfois un processus as-
sez laborieux. Un autre inconvénient est son incapacité à fournir un contre-exemple lorsque
la propriété à vérifier est prouvée insatisfaite.
Parmi les outils de preuve semi-automatique :
(a) Assistant de preuve Coq : Coq est un système de manipulation de preuves
mathématiques formelles. Il est possible d’énoncer des théorèmes, des spécifications de
programme, et de développer interactivement leurs preuves à l’aide de tactiques.
(b) Assistant de preuve Isabelle : C’est un système de preuves basés sur un unique
calcul formel, en général la logique d’ordre supérieur.
(c) Assistant de preuve PVS : PVS (Prototype Vérification System) assistant de
preuves est écrit dans le langage de programmation Lisp. C’est un outil de vérification
intégrant le langage de spécification PVS qui se base sur la logique classique d’ordre su-
périeur.
Le système Coq est développé à l’INRIA dans le cadre du projet TypiCal. Coq est un
assistant de preuve permettant l’expression de spécifications et le développement de pro-
grammes cohérents avec leur spécification. Ce dernier se base sur le calcul des constructions
inductives [43]. Coq est avant tout un système permettant de faire des preuves dans une
logique très expressive, dite d’ordre supérieur. Ces preuves sont construites de façon inter-
active, assistée par des outils de recherche automatique de preuves dans des domaines où
cela est possible. Donc, Coq n’est pas seulement un assistant de preuve, mais également
un atelier de construction de programmes corrects par extraction depuis la spécification
vérifiés. Les preuves sont construites impérativement à l’aide des tactiques, qui sont des
outils préalablement existants dans l’assistant de preuve.
2.3.1 Architecture
19
• Un nombre limité de règles de vérification de type et de calcul.
• Un langage de développement de théories mathématiques qui est utilisé pour représenter
des objets, des fonctions, des propositions et des preuves : Gallina .
20
2.3.4 Vérification du programme en Coq
Le système Coq dispose d’une interface via laquelle l’utilisateur introduit toutes défini-
tions. Ceci en utilisant un langage précis, comportant un certain nombre de commandes et
de conventions syntaxiques. Les développeurs du système Coq ont choisi GALLINA pour
nom de ce langage de commandes. La syntaxe de ce langage est détaillée dans le manuel de
Coq [44]. Nous nous contentons d’aborder ici certains points liés à notre travail, à travers
une suite d’exemples.
L’assistant de preuve Coq utilise le langage Gallina dans lequel les définitions sont des
termes qui sont eux-mêmes typés, leurs types sont appelés Sortes. Coq fait la distinction
entre deux catégories de types : le type Prop pour les propositions (formules logiques)
et le type Set pour les types de données. Ces deux types sont aussi typés et leurs type
commun est nommé Type. La figure 2.1 illustre un résumé de la syntaxe de Coq pour les
propositions logiques et les quantificateurs. Comme il existe des fonctions prédéfinis on
cite : la fonction « if else » pour définir une condition, la fonction « match with » pour
21
définir les conditions multiples, la fonction « case » et la fonction « while ».
Coq distingue deux sortes de base Set et Prop : le type Prop pour les propositions (for-
mules logiques) et le type Set pour les types de données. Ces deux types sont aussi typés
et leurs type commun est nommé Type.
Set : la sorte des types de données destinée à contenir tous les objets ayant un contenu
calculatoire
Prop : la sorte des propriétés, pour rôle de contenir tout ce qui a trait à la logique pure,
comme par exemple les justifications diverses, pré- et post- conditions, autrement dit tout
ce qui peut être ignoré pendant des calculs.
La commande ”Check” permet d’obtenir le type d’un objet en Coq :
Check nat.
nat
: set
Check le.
le
: nat− > nat− > P rop
Par exemple, la sorte de nat (type des naturels) est Set tandis que celui de la relation le
(inférieur ou égal à) entre deux naturels est Prop.
Check Set.
Set
: Type
22
Check Prop.
Prop
: Type
Check Type.
Type
: Type
Les types inductifs permettent de définir par récurrence des ensembles de termes. A chaque
type de données inductif correspond une structure de calcul, basée sur le filtrage et la
récursion.
Pour définir une fonction récursive dans Coq, l’utilisateur doit déterminer les valeurs prises
par la fonction dans un ordre précis qui suit l’ordre dans lequel sont construits les termes
des types inductifs. Pour les nombres naturels, par exemple, on est obligé de construire 0
avant (S 0), (S 0) avant (S (S 0)) et ainsi de suite.
Pour la définition d’une fonction récursive sur les naturels, on utilise la valeur (f 0) pour
définir la valeur (f (S 0)), la valeur (f (S 0)) pour définir la valeur (f (S (S 0))) et de
manière générale, on utilise la valeur (f n) pour définir la valeur (f (S n)). La construction
des fonctions récursives se fait dans Coq avec la commande ”Fixpoint”.
Exemple Soit la fonction récursive plus qui calcule la somme de deux nombres naturels
n et m :
F ixpointplus(nm : nat)structn : nat :=
matchnwith
|O => m
23
|Sp => S(pluspm)
end.
La syntaxe Fixpoint permet de définir un terme avec la construction fix du CCI. La re-
présentation interne d’un objet en Coq peut être obtenue en utilisant la commande ”Print” :
P rintplus.
plus =
f ixplus(nm : nat) : nat := matchnwith
|O => m
|Sp => S(pluspm)
end
: nat− > nat− > na
Comme la taille des spécifications en Coq augmente relativement vite, il est souhaitable
de pouvoir factoriser les parties communes de la spécification dans un alias. Cet alias est
une constante dans le système et est définie en Gallina par la syntaxe suivante :
Definition c := t.
c is defined
Le Système Coq est fourni avec un grand nombre de tactiques, nous présentons ci-dessous
quelques une de ces tactiques :
intro(s) : : la tactique intro permet d’introduire des hypothèses dans le contexte du but
courant et de transformer un but quantifié universellement en un but sans quantification
24
universelle.
apply terme : cette tactique essaie de faire correspondre le but courant avec la conclusion
du type de terme (un terme dans le contexte local). Si elle réussit, elle retourne autant de
sous buts qu’il y a de prémisses dans term.
left :Cette tactique permet de remplacer un but de la forme A B par un seul but de la
forme A. Lorsque on cherche à prouver une expression de la forme A B il suffit parfois de
prouver A. C’est cette étape de raisonnement qui est fournie par la tactique left.
right : le comportement de cette tactique est exactement symétrique de celui de la tactique
left. Elle permet de transformer un but de la forme A B en un but de la forme B.
induction term : elle permet de faire une preuve par induction. L’argument term doit
être une constante inductive. Cette tactique génère un sous but pour chaque constructeur
du type inductif concerné et remplace chaque occurrence de term dans la conclusion et les
hypothèses du but en rajoutant au contexte local des hypothèses d’induction.
Simpl : son but est d’appliquer des définitions pour simplifier des calculs.
Coq propose une collection d’opérateurs permettant de composer les tactiques préexis-
tantes pour en former de nouvelles tactiques. Ces opérateurs sont appelés tacticielles. On
distingue deux variantes de composition :
• Composition simple : : la composition simple permet d’enchainer l’application de plu-
sieurs tactiques sans s’arrêter aux sous-buts intermédiaires, sous la forme tac1 ;tac2 ;... ;tacn.
• Composition généralisée : la composition généralisée notée tac [ tac1..tac2|...tacn]
s’apparente à la composition simple, excepté le fait que la tactique tac i s’applique au
i-ème sous-but(en supposant que la tactique tac engendre exactement n sous-buts).
Le lamda-calcul a été inventé par le logicien américain Alonzo Church[45][46] dans les
années 1930, dans l’espoir de fournir un fondement au mathématiques plus simple que la
théorie des ensembles, et fondé sur la notion de fonction. Ce programme a échoué, car le
lamda-calcul a un pouvoir d’expression beaucoup plus faible ,en revanche, le lamda calcul
a exactement le même pouvoir d’expression que les machines de Turing par exemple, ce
qui en fait un bon choix pour fonder la notion de fonction calculable.
25
Les trois constructions principales du lamda-calcul sont :
- Si x est une variable, alors c’est également un lamda-terme ;
- Si x est une variable et u un lamda-terme déjà construit, alors lamdax.u est un lamda-
terme, nous appelons un tel lambda-terme une abstraction. Intuitivement, lamda x.u est
la fonction qui envoie x vers u ;
- Si u,v sont des lamda termes déjà construits, alors uv(la juxtaposition des termes) est
un lamda-terme, nous appelons un tel lamda-terme une application
2.3.8.1 calculs
La règle d’abstraction (Abs) autorise à former une fonction x.v d’un type U vers un
type V si on peut créer un terme v de type V en utilisant le terme x supposé de type U.
26
2.3.9 les utilisations de Coq
2.4 conclusion
Dans ce chapitre nous avons rappelé l’importance de l’utilisation des techniques for-
melles,leurs différentes classifications de techniques de vérification formelle dans le cadre de
l’approche IDM ensuite nous avons présenté de maniéré plus détaille l’assistant de preuve
Coq .
27
Chapitre 3
3.1 Introduction
L’ingénierie dirigée par les modèles (IDM, ou MDE en anglais Model Driven Engineering)
est une méthodologie de développement logiciel qui permet aux entreprises d’économiser
beaucoup de temps et d’argent ainsi que de rationaliser leurs opérations. Grâce à la colla-
boration de toutes les parties au sein d’un même modèle, l’IDM améliore la coordination
entre les différentes parties prenantes, ce qui se traduit par une solution logicielle plus
robuste, avec moins des bugs donc, l’ingénierie dirigée par les modèles est parfaite pour
les entreprises ayant besoin de logiciels complexes et protégés contre les erreurs.
Ce chapitre se divise en deux grandes parties, dont nous proposons un tour d’horizon sur
l’IDM en mettant l’accent sur la transformation de modèles. Dans un premier temps, nous
entamons à décrire les concepts de base de l’IDM, en s’intéressant à l’architecture dirigée
par les modèles(MDA), en décrivant son processus et les différentes principales transforma-
tions existantes. Dans la deuxième partie de ce chapitre, nous passons en revue le principe
de la transformation des graphes, pour ensuite décrire les outils de transformation, en
choisissant l’outillage nécessaire pour nos transformations (TGG-Interpréter).
28
3.2 Présentation de l’IDM
L’IDM est une approche de développement logicielle proposée et soutenue par le groupe
OMG3. L’IDM se rapporte au développement de logiciels qui se réfère à une gamme d’ap-
proches de développement qui sont basées sur l’utilisation de la modélisation de logiciels
comme une forme primaire d’expression. Avec son développement rapide, l’IDM est devenu
une approche prometteuse du génie logiciel qui attire beaucoup d’attention dans l’indus-
trie et dans le milieu universitaire. Avec le développement de l’IDM, le modèle est devenu
le paradigme majeur par lequel l’industrie a apporté des améliorations significatives dans
le développement des systèmes complexes en fournissant les moyens permettant de passer
d’un niveau d’abstraction à un autre ou d’un espace de modélisation à un autre.
3.3 Concepts
La définition de l’IDM est basée sur trois notions clés : le modèle, Méta-Modèle et le
Méta-Méta-Modèle :
a- Modèles : Un modèle est un ensemble de faits caractérisant un aspect d’un système
dans un objectif donné. Un modèle représente donc un système selon un certain point de
vue, à un niveau d’abstraction facilitant la compréhension et la validation de cet aspect
particulier du système [47].
b- Un Méta-Modèle : Un Méta-Modèle définit l’ensemble des concepts, des relations et
des règles sémantiques régissant la manière dont les modèles peuvent être dénotés dans une
définition de langage particulière. Notez qu’un méta modèle peut également être vu comme
une syntaxe abstraite, qui peut être complétée par une ou plusieurs syntaxes concrètes (les
représentations graphiques ou textuelles que les concepteurs utilisent pour exprimer des
modèles dans ce langage) afin de fournir un langage de modélisation complet.
c- Un Méta-Méta-Modèle : Un Méta-Méta-Modèle est un modèle qui décrit un langage
de Méta-Modélisation, c’est-à-dire les éléments de modélisation nécessaires à la définition
des langages de modélisation. Il a de plus la capacité de se décrire lui-même.
29
3.4 Les standards liés à l’lDM
nous présentons dans cette section quelques standards de l’OMG relatifs à l’IDM :MOF
(Méta Objecte Facility), le standard pour la création de nouveaux langages de modélisa-
tion ; QVT (Query, Views, Transformation), le standard pour la modélisation des transfor-
mations de modèles ; UML (Unified Modeling Language), le standard pour la modélisation
orientée-objet ; XMI (XML Metadata Interchange), le standard afin de représenter les mo-
dèles sous forme de documents XML dont le but est toujours l’interopérabilité ; CWM
(Common Warehouse Metamodel),Metamodel), le standard pour la représentation des
techniques liées au entrepôts de données .
3.4.1 MOF :
3.4.2 QVT
Les transformations de modèles étant au coeur de l’IDM, un standard appelé QVT a été
défini afin de modéliser ces transformations. Ce standard décrit le méta-modèle qui per-
met d’élaborer des modèles de transformation. Nous pouvons citer comme exemple,une
transformation d’un diagramme de classes UML vers un schéma de base de données re-
lationnelle qui est élaborée sous le principe d’un modèle de transformation conforme au
méta-modèle QVT [48].
3.4.3 UML :
Uml est un langage visuel permettant de modéliser des systèmes à l’aide de diagrammes
et de textes. Les diagrammes UML sont regroupés dans deux classes principales :
30
* Les diagrammes dynamiques : regroupent les diagrammes de séquence, les dia-
grammes de communication (nouvelle appellation des diagrammes de collaboration d’UML),
les diagrammes d’activités, les machines à états, les diagrammes de vue d’ensemble d’in-
teraction, et les diagrammes de synchronisation.
* Les diagrammes statiques : regroupent les diagrammes de classes, les diagrammes
d’objets, les diagrammes de structure composite, les diagrammes de composants, les dia-
grammes de déploiement, et les diagrammes de paquetages.
3.4.4 XMI :
XMI est le langage d’échange entre le monde des modèles et le monde XML (eXten-
sible Markup Language). XMI décrit comment utiliser les balises XML pour représenter
un modèle UML en XML.Cette représentation facilite les échanges de données entre les
différents outils ou plateformes de modélisation.
3.4.5 CWM :
CWM définit à présent les méta-modèles les types d’entrepôts de données les plus impor-
tants (Relationnel, Objet, XML,etc.) en proposant ainsi des règles de transformation entre
ceux-ci. Les méta-modèles de données permettent la modélisation des ressources tels que
les bases de données relationnelles et les bases de données orientées objets [49].
Il existe différentes approches concrétisant différentes façons d’utiliser les modèles dans
leur processus de développement des systèmes. L’approche la plus connue et peut-être la
plus développée est l’approche MDA. Nous présentons cette approche dans la sous-section
suivante :
31
3.5.1 Architecture MDA
L’OMG a déjà défini plusieurs standards pour le MDA : nous en dressons ici une liste des
plus. La figure 3.1 illustre l’architecture du MDA
Niveau M3 (méta-méta-Niveau modèle) : Le niveau M3 définit les concepts, les at-
tributs et la relations pour les éléments de niveau M2, tandis que les éléments placés au
niveau M2 sont les instances des éléments au niveau M3. Dans ce niveau, l’OMG à défini
un langage qui est utilisé pour décrire tous les éléments du niveau M2, appelée (MOF).
Niveau M2 (méta-modèle) :Ce niveau représente les éléments du modèle au niveau
M1. Dans le cas d’un méta modèle tel que UML. Le niveau M2 définit les éléments valides
dans un modèle spécifique au niveau M1, alors que les éléments placés au niveau M1 sont
les instances des éléments au niveau M2.
Niveau M1(modèle) : Le niveau M1 définit les classifications des éléments au niveau
M0, alors que les éléments placés au niveau M0 sont les instances des éléments au niveau
M1.
Niveau M0 (réalité) : Niveau des instances des modèles. Il définit des informations pour
la modélisation des objets du monde réel.
32
3.5.2 Les modèles MDA
3.5.2.1 CIM :
3.5.2.2 PIM :
Le terme PIM est l’abréviation anglaise de Platform Independent Model. Cela signifie que
ce type de modèle n’a pas de dépendance Avec la plate-forme technique. Il décrit le sys-
tème mais ne montre pas les détails de son utilisation sur la plate-forme. Le PIM représente
ainsi le logique métier, spécifique au système, mais indépendant de la technique et de la
technologie. Le PIM correspond à la modélisation du système de manière indépendante à
la plate-forme [52].
3.5.2.3 PSM :
Le terme PSM est l’abréviation anglaise de Plate-forme Specific Model. Ce modèle décrit
les détails et les caractéristiques supprimés du PIM. Il doit être adapté pour spécifier l’im-
plémentation du système dans une seule et unique plateforme technologique.Il correspond
au modèle de conception et d’implémentation d’une application par rapport à une plate-
forme spécifique.
33
3.5.2.4 PDM :
Ce modèle est désigné par l’acronyme PDM pour Platform Description Model. Il corres-
pond à un modèle de transformation du PIM vers un PSM d’implémentation. L’architecte
doit choisir une ou plusieurs plates-formes pour l’implémentation du système avec les
qualités architecturales désirées. Ce modèle propre à la plate-forme est utile pour la trans-
formation du PIM en PSM. La démarche MDA est ainsi basée sur le détail des modèles
dépendant de la plate-forme. Il représente les particularités de chaque plate-forme. Il de-
vrait être fourni par le créateur de la plate-forme, le principe du processus MDA est montré
dans la Figure.3.2. [53]
34
correspondance entre les entités du modèle source et celles du modèle cible. En réalité, la
transformation se situe entre les méta-modèles source et cible qui décrivent la structure
des modèles cible et source. Le moteur de transformation de modèles prend en entrée un
ou plusieurs modèles sources et crée en sortie un ou plusieurs modèles cibles.
Une transformation des entités du modèle source met en jeu deux étapes. La première
étape permet d’identifier les correspondances entre les concepts des modèles source et
cible au niveau de leurs méta-modèles, ce qui induit l’existence d’une fonction de transfor-
mation applicable à toutes les instances du méta-modèle source. La seconde étape consiste
à appliquer la transformation du modèle source afin de générer automatiquement le mo-
dèle cible par un programme appelé moteur de transformation ou d’exécution. la figure
3.3 illustre ces deux étapes d’une transformation de modèles.
35
deux premiers types de transformations.
Nous classons ces approches en deux grandes familles : les approches modèle à modèle et
les approches modèle à code. Pour chacune de ces deux catégories, on distingue plusieurs
sous-catégories. La figure.3.4 résume cette classification d’approches de transformation de
modèles.
36
Viatra [55], ATOM [56] et GrGen [57] sont des exemples.
• Approches hybrides Les approches hybrides combinent différentes techniques des
catégories précédentes. Les différentes approches peuvent être combinées en composants
séparés ou de manière plus fine, au niveau des règles individuelles. On peut notamment
retrouver des approches utilisant à la fois des règles à logique déclarative et des règles à lo-
gique impérative. ATL , ETL , QVTop et ModTransf sont des approches de cette catégorie.
Dans cette catégorie, on retrouve les approches basées sur le parcours de modèles et celles
basées sur l’utilisation de templates.
• Approches basées sur le parcours de modèles : La transformation consiste à
fournir un certain mécanisme de parcours de la représentation interne du modèle source
et l’écriture du code dans un flux en sortie.
• Approches basées sur les templates : Ces approches sont les plus couramment
utilisées dans les outils MDA actuels de génération de code. Un template consiste en un
fragment de texte contenant des bouts de méta-code permettant :
• d’accéder aux modèles sources.
• d’effectuer une sélection de code.
• de réaliser des expansions itératives.
La structure du template est généralement très proche du code à générer. JET , Codagen
Architect , OptimalJ et ModTransf sont des exemples dans cette catégorie.
Dans cette partie, nous allons présenter quelques notions sur les graphes, ensuite nous
allons décrire avec détaille les transformations et les grammaires de graphes.
Un graphe est constitué d’un ensemble de sommets reliés par des arêtes, L’ordre d’un
graphe est le nombre de ses sommets. Le degré d’un sommet est le nombre d’arêtes dont
37
Figure 3.4 – les approches de transformation de modèle
Un graphe orienté G est un ensemble de sommets pouvant être connectés par des arcs.
Dans un graphe orienté, une arête est appelée arc. La figure3.5 représente exemple d’une
graphe orienté.
38
3.7.1.2 Graphe non orienté
Un graphe non orienté G est un ensemble de sommets pouvant être connectés par des
arêtes. On parlera de cycle au lieu de circuit, et de chaı̂ne au lieu de chemin. Un graphe
non orienté est connexe si tous ses sommets sont connectés, Sinon chaque groupe de som-
mets connectés forme une composante connexe du graphe. Un Arbre est un graphe non
orienté connexe sans Cycle. La figure 3.6 représente un graphe non orienté.
Les graphes étiquetés sont des graphes orientés, dont les arcs possèdent des étiquettes. Si
toutes les étiquettes sont des nombres positifs, on parle de graphe pondéré. La figure.3.8
représente un exemple d’un graphe étiqueté.
39
Figure 3.7 – un sous-graphe
Une grammaire de graphe [58] est généralement définie par un triplet : GG = (P, S, T)
Où :
- P : ensemble de règles.
- S : un graphe initial.
- T : ensemble de symboles.
Une grammaire de graphes distingue les graphes non terminaux, qui sont les résultats
intermédiaires sur lesquels les règles sont appliquées, des graphes terminaux sur lesquels
on ne peut plus appliquer aucune règle. Ces derniers sont dans le langage engendré par
la grammaire de graphe. Pour vérifier si un graphe G est dans le langage engendré par
une grammaire de graphe, il doit être analysé. Le processus d’analyse va déterminer une
séquence de règles dérivant G.
L’application de R à un graphe G pour fournir un graphe H est appelée une dérivation
directe depuis G vers H à travers R .
40
3.7.3 Le principe de règles de transformation
Une règle de transformation de graphe est définie par : R = (L ;R ;K ; glue ; emb ;cond).Elle
consiste en :
1 - LHS(L) graphe de côté gauche, et RHS(R) graphe de côté droit .
2 - Un sous graphe K de L.
3 - Une occurrence glue de K dans R qui relie le sous graphe avec le graphe de côté droit.
4 - Une relation d’enfoncement emb qui relie les sommets du graphe de côté gauche et
ceux du graphe du côté droit.
5 - Un ensemble cond qui spécifie les conditions d’application de la règle.
41
Figure 3.9 – Application d’une règle de transformation
42
3.8 Outils et langage de transformation
3.8.1 Acceleo :
Acceleo est un langage de transformation de modèles pour lequel les modèles cible ont
une syntaxe concrète textuelle. Il suit une approche de transformation par template. Le
template correspond au modèle cible qui prend la forme d’un texte avec des espaces réser-
vés aux informations provenant des modèles source. Acceloo utilise OCL pour accéder au
modèles source.
3.8.2 AGG :
3.8.3 AtoM3 :
ATOM3 ”Domain Specific Visual Languages” [60] est un outil pour la conception de Do-
main Specific Visual Languages (DSML). Il permet de définir la syntaxe abstraite et
concrète d’un langage visuel au moyen de la métamodélisa- tion et d’exprimer la ma-
nipulation du modèle en utilisant la transformation de graphe. Avec les informations de
métamodèle, ATOM3 génère un environnement de modélisation personnalisé pour le lan-
gage décrit. Récemment, ATOM3 a été étendu avec des fonctionnalités pour générer des
environnements avec des vues multiples de langages visuels (tels que UML) et Triple Graph
43
Grammar (TGG) [61]. Ce dernier est utile pour exprimer l’évolution de deux modèles dif-
férents liés par un modèle intermédiaire
3.8.4 GROOVE :
GROOVE ”GRaph of Object Oriented VErification” est un outil d’usage général basé sur
la transformation de graphes pour modéliser la conception, la compilation et la struc-
ture d’exécution des systèmes orienté objet. La transformation de graphes avec GROOVE
se base sur la transformation de modèles et la sémantique opérationnelle. Cela implique
l’usage d’un fondement formel de transformation de modèles et de sémantique dynamique,
et aussi la capacité de vérifier la transformation de modèle en utilisant le model checking.
L’outil GROOVE a un éditeur pour la création des règles de production graphiques, un si-
mulateur pour calculer visuellement les transformations de graphe induit par un ensemble
de règles de production graphique .
3.8.5 GrGen :
GrGen est un outil de transformation de graphes utilisé dans différents domaines tels que
la transformation de données graphiques complexes, la linguistique infor- matique, ou la
construction de compilateur moderne. GrGen permet de travailler à un niveau très abstrait
en utilisant le modèle déclaratif. Le code généré par GrGen s’exécute très rapidement. En
termes de performance par rapport aux autres outils GrGen permet la manipulation et
la transformation des systèmes complexes. Le système GrGen est écrit en Java et C. Son
noyau est un générateur de grammaires de graphe.
3.8.6 TGG-Interpreter
L’approche des grammaires de graphes triples (Triple Graph Grammar : TGG), intro-
duite par Andy Schürr ) est une tentative de créer une méthode pour connecter différents
systèmes/modèles par rapport à certains règles/critères prédéfinis, de sorte que les change-
ments dans un système/modèle conduirait inévitablement à des changements dans l’autre.
TGG peut être utilisé dans différents transformation de modèles et les scénarios de syn-
44
chronisation. TGG est spécifié pour les transformations bidirectionnelles (transformation
à l’avant et en arrière). TGG est un triplet de grammaires de graphes où on a une gram-
maire de graphe source, une grammaire de graphe cible et une grammaire de graphe de
correspondance ainsi que deux morphismes le premier relie la grammaire de graphe source
et de correspondance et le deuxième relie la grammaire de graphe de correspondance et
cible.
L’avantage de TGG est permettant de faire la transformation de façons déclarative, et
l’exécution dans les deux sens. Lorsque l’un des modèles est modifié, l’autre peut être mo-
difié en conséquence, ce qui signifie que les transformations ou les synchronisations peuvent
être appliquées de manière incrémentielle.
Modelware est l’espace technique des modèles, des méta-modèles et leurs transformations
dans l’IDM. Grammarware est l’espace technique des grammaires. Le pont technologique
sert à trouver une communication ou une connexion entre l’espace technique des modèles
et l’espace technique des grammaires. le méta-modèle a une relation avec le concept d’une
grammaire où un modèle conforme à un méta-modèle est comme une chaı̂ne reconnue par
une grammaire. En outre, les propriétés syntaxiques et sémantiques en relation avec la
conformité d’un modèle à un méta-modèle, peuvent être prises en considération dans la
sémantique d’une grammaire.
La figure.3.11 sert à lier l’espace technique de l’IDM et l’espace technique des gram-
maires, où la transformation d’un méta-modèle en une grammaire se fait d’une manière
automatique. Les deux méta-modèles source et cible sont transformé automatiquement
en grammaires de graphes qui permettent de créer d’une manière graduelle les règles de
transformation et aussi la grammaire de correspondance. Un moteur de transformation
sera généré à partir des correspondances, qui lient en entrée un modèle source et produit
en sortie un modèle cible.
Pour mieux comprendre l’approche TGG, nous détaillerons le formalisme TGG dans le
chapitre 4.
45
Figure 3.11 – Transformation dans les espaces techniques IDM et TGG
3.9 conclusion
Dans ce chapitre , nous avons exploré les composants de base des techniques MDE et ainsi
l’architecture MDA avec ces différents modèles, dabord nous avons présenté le concept
de transformation de modèles et Dans ce contexte, nous avons présenté les différentes
approches, méthodes et outils existants dans la littérature et plus précisément la transfor-
mation de graphes.
46
Chapitre 4
Contribution
4.1 Introduction
Dans ce chapitre, nous proposons notre approche intégrée qui sert à traduire des modèles
Ecore vers des spécifications formelles en langage Coq, en s’appuyant sur des règles de
réécriture de graphes.
Ce chapitre est structurée comme suit : la première partie est présentée un vue générale
pondance entre les deux) qui sont implémentés par l’outil de la modélisation EMF. la
troisième partie nous spécifions toutes les règles TGG. Enfin en termine avec une etude
Dans notre approche qui illustrée dans la figure 4.1, nous définissons des règles de trans-
47
intermédiaire en XMI équivalent aux Méta-Modèle Ecore à transformer.
l’assistant de preuve Coq, elle est vérifiées par des preuves automatiques et interactives
et leurs relations). Dans cette phase de notre approche, nous avons utilisé un outils d’im-
plémentation pour la Méta-Modélisation. L’outil est celui du standard EMF (plug-in sous
Eclipse) qui a pour objectif de Méta-Modéliser les parties visées dans la première sous-
48
approche de transformation réalisée en TGG.
pour :
les modèles sources constituant la partie LHS des règles de transformation TGG ; les
modèles cibles de ces règles (partie RHS), ainsi que ceux de la correspondance entre les
deux parties (LHS et RHS).Pour cela, nous proposons d’implémenter trois Méta-Modèles
suivant :
— Méta-Modèle Ecore.
— Méta-Modèle Coq.
— Méta-Modèle correspondance.
leElement qui représente la classe mère du Méta-Modèle Ecore afin de pouvoir disposer
de chaque élément du Méta-Modèle, est seulement réalisée pour ne pas répéter l’attribut
des modèle. Possède un nom (name)et ainsi un URI et Prefix pour l’identification
— SIDefinition : Elle possède un nom et elle dérive à deux autre classe SIIndicti-
49
veGroupDefinition qui compose d’inductive(SIInductive),et SISimpleDefini-
— SIDatatype
type(SITypeParamete).
— SIGAnyType.
— SIGVariableType
50
Figure 4.2 – Méta-Modèle source (Ecore)
Le Méta-Modèle Coq est illustré dans la figure 4.3. Elle compose de 19 classe, la classe
racine est appelée Fille qui caractériser par un nom et compose de commands de la classe
Command, cette dernière classe dériver on deux notre classe : Inductive ou Definition,
Binder.
51
InductiveBody prend comme un attribut un nom et peut contient des constuctors(classe
nom et un binder. Binder identifier (classe Ident par un nom et peut contient un type
de term).
cette dernière classe dériver on six classe : Sort( dériver on Set, Prop, Type) , Literal(
Z, String), Apply( contient un term right et un term left), Fun et Forall ( contient les
[1..1] term
Term
[1..1] left
[1..1] term
[1..1] right
[0..1] type
File Command
[0..*] commands
name : EString
[1..1] binder
Binder
[1..1] binder name : EString
[1..1] term
Inductive Definition Set Prop Type
[1..1] binder
name : EString name : EString Ident
[1..1] binder
Constructor
[1..1] binder
[0..*] constructors
InductiveBody
name : EString
[1..*] bodies
52
4.2.1.3 Correspondance
Ecore et Coq. Nous établissons cette correspondance par des nœuds additionnels qui se
rapportent à des éléments méta des deux Méta-Modèle source et cible. Ces nœuds de
RHS dans chaque règle TGG, tous ces nœuds hériter la même racine Root qui indique que
— pkg2file() : pour exprimer la correspondance entre les racines des deux Méta-
Inductive.
finition
tive.
53
— makeBinder() : signifie la correspondance entre SITypeParameter et Binder.
54
4.2.2 Spécification des règles de transformation
Dans cette phase, nous proposons une grammaires de graphes pour la transformation des
Méta-Modèle Ecore vers Coq, cette grammaire est définie sous forme des règles TGG qui
implémentée sous l’outil TGG-Interpreter pour faire une transformation M2M vers un
C’est la règle de départ de toute les règle de transformation qui nommée axiom dans TGG.
Cet axiom est montré dans la figure 4.5, sur la coté gauche (LHS) nous trouvons la racine
à partir de cette axiome, en transforme une SIPackage de partie LHS vers File de partie
RHS, et le nom de File dans le modèle de sortie prend le même nom(name)que le SIPackage.
55
Figure 4.5 – Règle TGG de Axiom
nous réalisons le passage SIDefinition (LHS) vers Command (RHS)par quatre règles
cable.
lement en un type Coq (Inductive) (RHS) : le nom de l’Inductive prend le même nom
SISimpleDefinition), le mot clé OclAsType (Dans le code QVT ) est utilisé pour
56
Figure 4.6 – Règle TGG de ind2ind
Même principe de règle 04, sauf le mot clé OclAsType (Dans le code QVT ) est utilisé
pour envoyer les caractéristiques de l’élément SITypeDef.Cette règle est montré dans la
figure 4.8
57
Figure 4.8 – Règle TGG de typedef2def()
Ecore vers Inductive(RHS), le nom de Inductive prend le méme nom de l’attribut nom-
classe SISimpleDefinition).
58
4.2.2.7 Régle07 : ind2body()
SIInductive.
SIConstructor.
Cette règle illustré dans la figure 4.12. exprime la transformation de la SIDataType dans
le Méta-Modèle Ecore (partie LHS) vers Binder (partie RHS), en ajoutons dans la partie
59
Figure 4.11 – Règle TGG de ctor2ctor()
en Coq(Binder)(RHS), son principe et le même que la règle 08. la figure 4.13 montrée
cette transformation.
60
Figure 4.13 – Règle TGG de makeBinder()2
Cette règle qui est montré dans la figure 4.14 ,elle est comme objective de transformer en
Coq SITypeDef dans la partie LHS est transformé en Binder(RHS). en ajoutons le type
de Binder, et par la déclaration OCL le nom de Binder prend le même nom de l’attribut
nom-classe SITypeDef.
61
Figure 4.14 – Règle TGG de makeBinder()3
Cette règle est illustrée par la figure 4.15. Elle réalise la transformation de SITypePara-
meter (partie LHS) vers Binder(partie RHS) en spécifie formellement en Coq et utilisons
62
4.2.2.13 Régle13 : makeBinder()
Cette règle est illustré dans la figure 4.16. Elle permet de transformé SIParameter vers
Binder. et par OCL le nom de Binder prend le même nom de l’attribut nom-classe
SIParameter.
nous réalisons le passage SIGType vers Term par les cinq règles de typ2term pour trouver
La figure 4.17 décrit cette règle qui réalise la transformation d’une classe SIGClassifier-
63
Figure 4.17 – Règle TGG de typ2term()2
LHS vers Ident dans la partie RHS, on utilisons le même principe de la règle précédant.
Dans cette règle qui illustrée dans la figure 4.19, on réalisée la transformation entre SI-
L’idée de transformation est montrée dans la figure 4.20. Elle sert à la formalisation en
64
Figure 4.18 – Règle TGG de typ2term()3
Selon la figure 4.21, cette règle est appliquée pour transformer SIGLowerBoundType
65
Figure 4.20 – Règle TGG de typ2term()5
Dans cette partie nous présentons une étude de cas d’un exemple de Méta-Modéle, afin
66
grammaire définie qui a était proposé dans cet chapitre. en suivant tous les règles de
transformation.
67
4.3.1 Etapes d’exécutions sur le fichier XMI
Lors de l’application des règles proposées dans notre approche sur le fichier
68
Figure 4.24 – fenetre de terminaison d’execution de transformation des règles avec succés.
69
4.4 Conclusion
Dans ce chapitre, Nous avons proposé une approche intégrée Ecore/Coq pour la modéli-
deling Framework (EMF) pour mettre en œuvre les Méta-Modèles, les modèles et les
de graphes TGG .
Dans ce chapitre, nous avons transformer le modèle Ecore vers Coq,danc nous avons in-
Finalement, nous avons donné une étude de cas pour illustrer cette transformation.
70
Conclusion Général
Le travail que nous avons présenté est se concentre sur le cadre de la modélisation et la
vérification et validation qui basé sur le principe de l’Ingénierie Dirigé par les Modèle,
ce dernier joue un rôle centrale sur le développement logicielle et elle a plusieurs avan-
tage dans la production et la maintenance des Système, elle n’est intéressante que si la
transformation de modèle qui occupe place très important est partiellement ou complète-
ment automatisée dans le processus de développement. Cette transformation basé sur des
langage et des outils son rôle principale est de faciliter le concept de programmation et
Dans cette recherche nous avons contribué au développement contenant deux apparences
de transformer le Ecore vers Coq, se justifie par son caractère intuitif et algébrique en
même temps.
Le résultat de notre travail est une approche automatique pour cette transformation , l’
approche est intégré sur le plateforme EMF telle que les deux Méta-Modèle source(Ecore)
Les travaux accomplis durant ce projet de recherche ouvrent un certain nombre de Perspec-
tives, qui liée à la transformation des modèle, nous avons proposée quelque développements
possibles :
1. Réaliser la transformation modèle vers texte (M2T) des modèles Coq qui générés a
2. Notre approche permet de faite le passage entre Ecore et Coq,ce dernier elle nous a
permis de réaliser des preuves et de trouver des erreurs. parfois les changements sur
de notre approche, il serait très important de compléter notre approche par des
3. Dans les travaux futurs, nous étudierons comment du Méta-Modèle Ecore peut être
72
Bibliographie
[1] Christel Baier and Joost-Pieter Katoen. Principles of Model Checking. The MIT
[2] Francisco José CHÁVES ALONSO. Utilisation et certification de l’arithmé- tique d’in-
2007.
[4] The Coq Proof Assistant Reference Manual - Version 8.2. Technical report, INRIA,
http ://www.eclipse.org/gmf/
vembre 2017).
[6] AGG. . . Taentzer, G : AGG : A Graph Transformation Environment for Modeling and
73
[7] Atom3. . . .de Lara, J., Vangheluwe, H., Alfonseca, M. : Meta-Modelling and Graph
home/subprojects/VIATRA2/index.html.
[9] Thèse de Doctorat en Sciences Présentée par ”Seidali REHAB” « Une approche de
[11] EMF : Éclipse Modeling Framework. « Dave Steinberg ; Frank Budinsky ; Marcelo
16, 2008.
[12] EMF : Éclipse Modeling Framework. « Dave Steinberg ; Frank Budinsky ; Marcelo
16, 2008.
[13] EMF : Éclipse Modeling Framework. « Dave Steinberg ; Frank Budinsky ; Marcelo
16, 2008.page31. [
[14] ] Éclipse Platform Technical Overview.” Object Technology International, Inc. Fe-
74
[15] MOF. . . .Meta-Object Facility (MOF), http ://www.omg.org/mof/
[18] : Eclipse Modeling Framework. « Dave Steinberg ; Frank Budinsky ; Marcelo Pater-
[21] Milner 89 R. Milner. Communication and Concurrency. C.A.R. Hoare Series. Prentice-
[22] T. Murata, Petri nets : Properties, Analysis and Applications, In Proceedings of the
[23] J. Cliff, Systematic Software Development Using VDM, Prentice-Hall ISBN 978-
0138807252, 1986.
[25] J. M. Spivey. The Z Notation : A Reference Manual. Prentice Hail International Series
75
[26] J. Christian Attiogbé, Contributions aux approches formelles de développement de
[28] J. V. Guttag. The Larch Approach to Specification. VDM ’91 : Formal Software
[29] D. Bert and P. Drabik. LPG : structuration des spécifications et validation sémantique
[30] J.A. Goguen and G. Malcolm. Algebraic Semantics of Impertive Programs. MIT Press,
[31] N. Shankar, S. Owre, and J. M. Rushby. PVS Tutorial. Computer Science Laboratory,
SRI International,Menlo Park, CA, February 1993. Also appears in Tutorial Notes,
[32] L. C. Paulson. Isabelle : A Generic Theorem Prover. Numéro 828 in LNCS. Springer
Verlag, 1994.
[34] G. Huet, G. Kahn, and c. Paulin-Mohring. The Coq Proof Assitant : A Tutorial. Coq
on the International School on Formal Methods for the Design of Computer, Commu-
76
nication, and Software Systems, volume 3185 of Lecture Notes in Computer Science,
[37] K. J. Turner, Representing and analysing composed web services using CRESS, in
Journal of network and computer applications, ISSN 1084-8045 vol. 30, n 2, pp. 541-
562, 2007.
[41] Thierry Coquand and Gerard Huet. The calculus of constructions. Information and
[42] The Coq Proof Assistant Reference Manual - Version 8.2. Technical report, INRIA,
77
[43] Tomasz BLANC. Propriétés de sécurité dans le lambda-calcul. Thèse de doctorat.
[44] Nicolas OURY. Egalité et filtrage avec types dépendants dans le calcul des construc-
[45] Jean-Marc Jezequel, Benoit Combemale et Didier Vojtisek. Ingénierie dirigée par les
Avril 2008
[48] NGUYEN Viet HOA, Capitalisation des architectures métiers pour une implémenta-
tion sur Différentes plates –formes techniques en utilisant la démarche MDA, Hanoı̈,
Juin 2008.
Nantes.
[51] ATOM3. Web site. http ://atom3.cs.mcgill.ca/. MSDL : Modelling, Simulation and
Design Lab.
[54] ATLAS Group et al. ATL User Manual Version 0.7, 2006. LINA , INRIA.
78
[55] Marc Andries, Gregor Engels, Annegret Habel, Berthold Hoffmann, Hans-Jorg
Kreowski, Sabine Kuske, Detlef Pump, Andy Schürr and Gabriele Taentzer, ”Graph
[56] Gabriele Taentzer. AGG : A tool environment for algebraic graph transfor- mation.
[57] ATOM3. Web site. http ://atom3.cs.mcgill.ca/. MSDL : Modelling, Simulation and
Design Lab.
79