Table des figures
1.1
|
Modèle UML de la structure de données Pile
|
13
|
1.2
|
Modèle UML d'une compagnie
|
14
|
1.3
|
Le package Types représentant le
méta-modèle des types supportés par OCL . .
|
14
|
1.4
|
Les types collectifs en OCL
|
16
|
2.1
|
Le méta-modèle des types EM-OCL
|
26
|
2.2
|
Graphe de classes de la bibliothèque EM ajoutée
à OCL
|
34
|
3.1
|
Modèle initial tiré à partir de la
spécification initiale
|
46
|
3.2
|
Second modèle après premier raffinement
|
47
|
3.3
|
Troisième modèle après deuxième
raffinement
|
49
|
3.4
|
Quatrième modèle après troisième
raffinement
|
52
|
3.5
|
Cinquième modèle après quatrième
raffinement
|
54
|
3.6
|
Accès Personne/Bâtiment
|
57
|
3.7
|
Deux diagrammes d'objets rspectant l'invariant global
|
58
|
3.8
|
Système bancaire simple
|
60
|
Liste des tableaux
3.1 Modèle mathématique correspondant à une
association UML 59
Table des matières
Table de figures
Liste de tables
Introduction Générale
|
1
3
8
|
1
|
La conception par contrats en UML/OCL
|
9
|
|
1.1
|
Généralités sur la conception par contrats
|
9
|
|
1.2
|
Le langage OCL
|
10
|
|
|
1.2.1 OCL langage sans effet de bord
|
10
|
|
|
1.2.2 OCL est un langage basé sur la logique des
prédicats du 1er ordre . . .
|
10
|
|
|
1.2.3 L'approche fonctionnelle du langage OCL
|
11
|
|
|
1.2.4 Exemples
|
12
|
|
1.3
|
Mécanisme de typage dans le langage OCL
|
14
|
|
|
1.3.1 Les types collectifs en OCL
|
15
|
|
1.4
|
Travaux liés à OCL
|
21
|
2
|
Une extension d'OCL : EM-OCL
|
25
|
|
2.1
|
Augmentations liées au package Types
|
25
|
|
|
2.1.1 Description de nouveaux types
|
26
|
|
|
2.1.2 Conformité des types
|
28
|
|
|
2.1.3 Règles de bonnes utilisations des nouveaux types
|
30
|
|
2.2
|
Augmentations liées à la bibliothèque
standard d'OCL
|
32
|
|
|
2.2.1 Conception d'une bibliothèque mathématique
|
32
|
|
|
2.2.2 Opérations offertes par la bibliothèque EM
|
34
|
3 Quelques utilisations potentielles d'EM-OCL
43
3.1 Notion de raffinement 43
3.2 Le raffinement en EM-OCL 44
3.2.1 Spécification initiale 44
3.2.2 Premier raffinement 47
3.2.3 Deuxième raffinement : Introduction des portes
48
3.2.4 Troisième Raffinement : Introduction des voyants
lumineux 51
3.2.5 Quatrième raffinement : Introduction des lecteurs de
cartes 53
3.2.6 Discussion 56
3.3 Validation d'un diagramme de classes 56
3.3.1 Approche de validation proposée 56
3.3.2 Exemple 56
3.4 EM-OCL en tant que langage de requêtes 59
3.4.1 Formulation en OCL 60
3.4.2 Formulation en utilisant EM-OCL 60
3.4.3 Comparaison 60
Conclusion et Perspectives 62
A Annexe mathématique 63
A.1 Logique fondamentale 63
A.2 Ensemble 64
A.3 Tuple 64
A.4 Relations 64
A.4.1 Opérations sur les relations 65
A.4.2 Itérations 65
A.4.3 Restrictions 66
A.5 Fonctions 66
B Annexe de la bibliothèque EM 67
B.1 Pair 67
B.2 SetRef 67
B.3 SequenceRef 67
B.4 BinaryRelation 68
Introduction Générale
OCL [10] [11](Object Constraint Language), est un langage
déclaratif basé sur la logique du premier ordre. Il est de plus
en plus utilisé pour décrire des contraintes formelles des
modèles UML en s'inspirant de la conception par contrat [1] [2]
(précondition, postcondition et invariant). En outre, OCL est
utilisé au niveau méta-modélisation afin de décrire
d'une façon formelle les règles de bonne utilisation
(Well-formedness rules) des langages de modélisation comme UML et les
profils UML.
Mais OCL présente des insuffisances vis-à-vis de
son utilisation dans les domaines suivants : développement
incrémental des diagrammes de classes basé sur la technique de
raffinement, à l'instar des méthodes formelles comme B [3] [7] et
Event-B [21], validation des diagrammes de classes en se basant sur des
scénarios plausibles décrits en utilisant les diagrammes d'objets
et utilisation d'OCL en tant que langage de requêtes. Ces applications
nécessitent des propriétés invariantes globales
liées aux modèles UML et a fortiori à des diagrammes de
classes.
La description des propriétés invariantes
globales nécessitent des objets mathématiques non
supportés par OCL tels que relations et fonctions. Pour y parvenir, nous
apportons une extension à OCL -intitulée EM-OCL (Extension
Mathématique pour le langage OCL)- en révisitant sa
bibliothèque de classes afin d'y intégrer de nouvelles classes
modélisant les relations et fonctions mathématiques.
Ce mémoire se compose de trois chapitres et de deux
annexes. Le premier chapitre comporte une présentation de la conception
par contrats en UML. En effet, nous présentons successivement la
conception par contrats issue du langage Eiffel [6] [4] [5], le langage OCL
notamment son mécanisme de typage et ses types collectifs (Collection,
Set, Bag, OrderdSet et Sequence). En outre, ce chapitre donne un aperçu
sur les travaux de recherche récents liés au langage OCL. Le
deuxième chapitre, présente notre extension mathématique
d'OCL : EM-OCL. Ce chapitre comporte deux sections importantes : la
première section propose des augmentations liées au
package Types d'OCL, quant à la deuxième
section, elle propose des augmentations liées à la
bibliothèque standard d'OCL. Le dernier chapitre, est consacré
à des utilisations potentielles de notre bibliothèque EM-OCL. La
première utilisation concerne le développement incrémental
des diagrammes de classes UML basé sur la technique de raffinement. La
deuxième utilisation concerne la validation des diagrammes de classes,
et la dernière utilisation permet d'exhiber les facilités
offertes par EM-OCL en tant que langage de requêtes. Enfin, l'annexe A
regroupe les définitions des notions mathématiques
utilisées pour étendre OCL, et l'annexe B récapitule les
nouvelles possibilités offertes par EM-OCL.
|