Cours informatique modélisation UML

Cours informatique modélisation UML
Introduction à la modélisation objet
1.1 Le génie logiciel
1.1.1 L’informatisation
L’informatisation est le phénomène le plus important de notre époque. Elle s’immisce maintenant dans la pluspart des objets de la vie courante et ce, que ce soit dans l’objet proprement dit1, ou bien dans le processus de conception ou de fabrication de cet objet.
Actuellement, l’informatique est au cœur de toutes les grandes entreprises. Le système d’information d’une entreprise est composé de matériels et de logiciels. Plus précisément, les investissements dans ce système d’information se réparatissent généralement de la manière suivante : 20% pour le matériel et 80% pour le logiciel. En e?et, depuis quelques années, la fabrication du matériel est assurée par quelques fabricants seulement. Ce matériel est relativement ?able et le marché est standardisé. Les problèmes liés à l’informatique sont essentiellement des problèmes de logiciel.
1.1.2 Les logiciels
Un logiciel ou une application est un ensemble de programmes, qui permet à un ordinateur ou à un système informatique d’assurer une tâche ou une fonction en particulier (exemple : logiciel de comptabilité, logiciel de gestion des prêts).
Cours informatique modélisation UML
Table des matières :
1 Introduction à la modélisation objet 11
1.1 Le génie logiciel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.1.1 L’informatisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.1.2 Les logiciels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.1.3 Le génie logiciel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.1.4 Notion de qualité pour un logiciel . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.2 Pourquoi et comment modéliser ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.2.1 Notions de modèle et de modélisation . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.2.2 Le cycle de vie d’un logiciel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.2.3 Modèles de cycles de vie d’un logiciel . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.2.4 Méthodes d’analyse et de conception . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1.3 De la programmation structurée à l’approche orientée objet . . . . . . . . . . . . . . . . . . 18
1.3.1 Méthodes fonctionnelles ou structurées . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.3.2 L’approche orientée objet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.3.3 Approche fonctionnelle vs. approche objet . . . . . . . . . . . . . . . . . . . . . . . 19
1.3.4 Concepts importants de l’approche objet . . . . . . . . . . . . . . . . . . . . . . . . 19
1.3.5 Historique la programmation par objets . . . . . . . . . . . . . . . . . . . . . . . . . 20
1.4 UML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
1.4.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
1.4.2 Histoire des modélisations par objets . . . . . . . . . . . . . . . . . . . . . . . . . . 21
1.4.3 UML en œuvre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
1.4.4 Comment présenter un modèle UML ? . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2 Diagramme de cas d’utilisation 25
2.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.2 Éléments des diagrammes de cas d’utilisation . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.2.1 Acteur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.2.2 Cas d’utilisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.2.3 Représentation d’un diagramme de cas d’utilisation . . . . . . . . . . . . . . . . . . 26
2.3 Relations dans les diagrammes de cas d’utilisation . . . . . . . . . . . . . . . . . . . . . . . 26
2.3.1 Relations entre acteurs et cas d’utilisation . . . . . . . . . . . . . . . . . . . . . . . . 26
2.3.2 Relations entre cas d’utilisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.3.3 Relations entre acteurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.4 Notions générales du langage UML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.4.1 Note . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.4.2 Stéréotype . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.4.3 Classeur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.4.4 Paquetage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.4.5 Espace de noms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.5 Modélisation des besoins avec UML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.5.1 Comment identi?er les acteurs ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.5.2 Comment recenser les cas d’utilisation ? . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.5.3 Description textuelle des cas d’utilisation . . . . . . . . . . . . . . . . . . . . . . . . 32
2.5.4 Description avec des diagrammes dynamiques simples . . . . . . . . . . . . . . . . 33
2.5.5 Remarques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
2.5.6 Les Use case Realization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3 Diagramme de classes 35
3.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.2 Les classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.2.1 Notions de classe et d’instance de classe . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.2.2 Notions de propriétés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
3.2.3 Représentation graphique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
3.2.4 Encapsulation, visibilité, interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.2.5 Nom d’une classe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.2.6 Les attributs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.2.7 Les méthodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.2.8 Classe active . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
3.3 Relations entre classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
3.3.1 Généralisation et Héritage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
3.3.2 Association . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
3.3.3 Multiplicité ou cardinalité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
3.3.4 Navigabilité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
3.3.5 Quali?cation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
3.3.6 Classe-association . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
3.3.7 Agrégation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
3.3.8 Composition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
3.3.9 Dépendance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
3.4 Interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
3.5 Élaboration d’un diagramme de classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
3.6 Diagramme d’objets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
3.6.1 Présentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
3.6.2 Représentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
3.6.3 Relation de dépendance d’instanciation . . . . . . . . . . . . . . . . . . . . . . . . . 46
4 Object constraint langage (OCL) 47
4.1 Expression des contraintes en UML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
4.1.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
4.1.2 Écriture des contraintes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
4.1.3 Représentation des contraintes et contraintes prédé?nies . . . . . . . . . . . . . . . 47
4.2 Intérêt d’OCL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
4.2.1 OCL – Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
4.2.2 Illustration par l’exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
4.3 Typologie des contraintes OCL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
4.3.1 Diagramme support des exemples illustratifs . . . . . . . . . . . . . . . . . . . . . . 51
4.3.2 Contexte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
4.3.3 Invariants (inv) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
4.3.4 Préconditions et postconditions (pre, post) . . . . . . . . . . . . . . . . . . . . . . . . 53
4.3.5 Résultat d’une méthode (body) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
4.3.6 Dé?nition d’attributs et de méthodes (def et let. . .in) . . . . . . . . . . . . . . . . . . 54
4.3.7 Initialisation (init) et évolution des attributs (derive) . . . . . . . . . . . . . . . . . . 55
4.4 Types et opérations utilisables dans les expressions OCL . . . . . . . . . . . . . . . . . . . 55
4.4.1 Types et opérateurs prédé?nis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
4.4.2 Types du modèle UML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
4.4.3 OCL est un langage typé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
4.4.4 Collections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
4.5 Accès aux propriétés et aux objets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
4.5.1 Accès aux attributs et aux opérations (self) . . . . . . . . . . . . . . . . . . . . . . . 57
4.5.2 Navigation via une association . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
4.5.3 Navigation via une association quali?ée . . . . . . . . . . . . . . . . . . . . . . . . . 58
4.5.4 Navigation vers une classe association . . . . . . . . . . . . . . . . . . . . . . . . . . 59
4.5.5 Navigation depuis une classe association . . . . . . . . . . . . . . . . . . . . . . . . 59
4.5.6 Accéder à une propriété redé?nie (oclAsType()) . . . . . . . . . . . . . . . . . . . . . 59
4.5.7 Propriétés prédé?nies sur tous les objets . . . . . . . . . . . . . . . . . . . . . . . . 59
4.5.8 Propriétés sur les classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
4.6 Opérations sur les collections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
4.6.1 Introduction : «.», «->», «: :» et self . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
4.6.2 Opérations de base sur les collections . . . . . . . . . . . . . . . . . . . . . . . . . . 61
4.6.3 Opération sur les éléments d’une collection . . . . . . . . . . . . . . . . . . . . . . . 62
4.6.4 Règles de précédence des opérateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
4.7 Exemples de contraintes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
5 Diagramme d’états-transitions 67
5.1 Introduction au formalisme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
5.1.1 Présentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
5.1.2 Notion d’automate à états ?nis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
5.1.3 Diagrammes d’états-transitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
5.2 État . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
5.2.1 Les deux acceptions du terme état . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
5.2.2 État initial et ?nal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
5.3 Événement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
5.3.1 Notion d’évènement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
5.3.2 Événement de type signal (signal) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
5.3.3 Événement d’appel (call) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
5.3.4 Événement de changement (change) . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
5.3.5 Événement temporel (after ou when) . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
5.4 Transition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
5.4.1 Dé?nition et syntaxe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
5.4.2 Condition de garde . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
5.4.3 E?et d’une transition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
5.4.4 Transition externe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
5.4.5 Transition d’achèvement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
5.4.6 Transition interne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
5.5 Point de choix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
5.5.1 Point de jonction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
5.5.2 Point de décision . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
5.6 États composites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
5.6.1 Présentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
5.6.2 Transition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
5.6.3 État historique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
5.6.4 Interface : les points de connexion . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
5.6.5 Concurrence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
6 Diagramme d’activités 79
6.1 Introduction au formalisme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
6.1.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
6.1.2 Action . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
6.1.3 Activité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
6.1.4 Groupe d’activités . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
6.1.5 Nœud d’activité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
6.1.6 Transition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
6.2 Nœud exécutable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
6.2.1 Nœud d’action . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
9.3.1 Modèle du domaine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
9.3.2 Diagramme de classes participantes . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
9.3.3 Diagrammes d’activités de navigation . . . . . . . . . . . . . . . . . . . . . . . . . . 117
9.4 Phase de conception . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
9.4.1 Diagrammes d’interaction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
9.4.2 Diagramme de classes de conception . . . . . . . . . . . . . . . . . . . . . . . . . . 119
9.5 Phase d’implémentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
9.5.1 Implémentation en Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
9.5.2 Implémentation en SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
Bibliographie 127
Cours informatique modélisation UML