Cours GL Modelisation
Cours GL Modelisation
Cours GL Modelisation
1
INTRODUCTION À LA
MODÉLISATION ORIENTÉE
OBJET
2
3
CYCLE DE VIE D’UN LOGICIEL
❖ Spécification
➢ Ce que le système doit être et comment il peut être
utilisé
❖ Analyse
➢ Éléments intervenant dans le SI, leurs structures et
relations
4
❖ A définir sur 3 axes:
■ Savoir-faire de l’objet ===> axe
fonctionnel
■ Structure de l’objet ===> axe statique
■ Cycle de vie de l’objet ===> axe dynamique
❖ Conception
performance et optimisation
5
❖ Implémentation
➢ Réalisation et programmation
❖ Tests et Vérification
➢ Contrôles de qualité
❖ Vérification de la correspondance avec le cahier des charges
❖ Maintenance et Evolution
➢ Maintenance corrective : traiter les erreurs (bugs)
➢ Maintenance évolutive : intégration de nouveaux
changements
6
CONCEPTION
8
- Sa cohésion
- Son appellation : Utilisation de noms
significatifs
- La complexité
❖ Adaptabilité : Dépend du couplage et de la
documentation. Un logiciel adaptable doit avoir un
haut degré de lisibilité.
9
MÉTHODES DE CONCEPTION
❖ Méthodes fonctionnelles
❖ Méthodes systémiques
❖ Méthodes orientées objets
10
MÉTHODES FONCTIONNELLES
11
MÉTHODES FONCTIONNELLES
❖ Points forts
➢ Simplicité du processus de conception
➢ Capacité à répondre rapidement aux besoins
ponctuels des utilisateurs
❖ Points faibles:
➢ Fixer les limites pour les décompositions
hiérarchiques
➢ Redondance (éventuelle) des données
12
MÉTHODES SYSTÉMIQUES
13
MÉTHODES SYSTÉMIQUES
❖ Points forts
➢ Approche globale prenant en compte la
modélisation des données et des traitements
➢ Niveaux d’abstraction dans le processus de
conception
➢ Bonne adaptation à la modélisation des données et
à la conception des BDs
❖ Points faibles:
14
MÉTHODES SYSTÉMIQUES
❖ Points faibles:
traitements
traitements)
15
MÉTHODES FONCTIONNELLES
ET SYSTÉMIQUES
❖ Les méthodes fonctionnelles et systémiques sont
❖ Inconvénients :
été conçus 16
MÉTHODES FONCTIONNELLES
ET SYSTÉMIQUES
17
MÉTHODES ORIENTÉES OBJETS
18
MÉTHODES ORIENTÉES OBJETS
comportement).
ascendantes.
19
MÉTHODES ORIENTÉES OBJETS
❖ La technologie Orientée Objet Guide la
conception par :
➢ Faciliter le prototypage
21
MÉTHODES ORIENTÉES OBJETS
Exemples
Système de gestion d’un lycée
❖ Objets
secrétaire
➢ Notes : Coefficients
22
MÉTHODES ORIENTÉES OBJETS
Exemples
Système de gestion d’un lycée
❖ Fonctions
➢ Calculer la moyenne
23
OBJECTIFS DES TECHNOLOGIES
À OBJETS
❖ Utiliser le langage du domaine : Modèle et
vocabulaire métier
ensemble de messages
❖ Caractérisé par :
objet?
25
■ Méthodes
LES OBJETS ...
❖ Son état : comment réagit l’objet quand on
applique ces méthodes ?
■ Attributs (Champs)
❖ Son identité : comment distinguer les objets qui
ont le même état et le même comportement?
■ Identifiant
❖ A les mêmes réactions et la même modularité que
le monde réel
❖ L’objet informatique est une projection de l’objet
du monde réel
26
UN MODÈLE ...
❖ Une simplification de la réalité
27
Modélisation, Modèle ?
Concepts de modélisation,
UML
28
La Modélisation
-Définition
-Pourquoi modéliser?
-Quel Langage utiliser?
-Logiciel=Code?
29
En quoi consiste la modélisation?
Abstraction =
• Ignorer les détails insignifiants
• Ressortir des détails les plus importants
– Important= décider de ce qui est signifiant et de ce qui
ne l’est pas, dépend directement de l’utilisation visée du
modèle
• Exemple: Google
– 400 000 Serveurs, une capacité de calcul gigantesque
– 1 milliard de requêtes par jour
• Chacune interrogeant 8 milliards de pages web en moins d’1/5 de
S.
33
Pourquoi Modéliser?
Pour communiquer
• Plusieurs acteurs dans le procédé de développement
– Clients, manager, marketing, ingénieurs système & réseaux,
etc.
La vision MDE
– Besoin de capitaliser un savoir faire indépendant du code et
des technos
– Capturer le métier sans se soucier des détails techniques
• Exemples de projets:
– Contrôleur aérien (Thalès): Projet ~8 ans, durée de vie 40 ans
– La construction d’un avion (Airbus): Projet ~10 ans, durée de
vie 50 ans
35
Pourquoi Modéliser?
Augmenter la productivité
• Génération de code à partir des modèles
– La vision MDE (Model-Driven Engineering)
– 100% du code généré dans certains domaines d’application
• Exp. Site Web, fichier de configuration, BD, etc.
• Maîtrise de la variabilité
– La vision ligne de produit
• Un modèle générique pour un produit, plusieurs variantes
• Exemple: Nokia
– 1,1 milliard de téléphones portables (100 millions de plus par
an)
– Des milliers de versions de logiciels
– Time-to-market ~3 mois
36
Logiciel = Code ?
37
Mais quel langage utiliser pour
modéliser?
• Plusieurs langages existaient/existent
38
UML
- Historique
- Les utilisations possibles d’UML
-Le processus de développement avec UML
-Les phases de développement couvertes par
UML
- UML: des diagrammes et des points de vue
39
Naissance d’UML
• Entre 89 et 94 : le nombre de méthodes orientées objet est passé de
10 à plus de 50
40
Historique
41
Généalogie d’UML
42
UML: Principales influences
44
Trois utilisations possibles d’UML
45
Trois utilisations possibles d’UML
48
Le processus de développement
avec UML
• UML est indépendant du procédé ou de la
méthode de développement
49
Les phases du développement
couvertes par UML
• Expression des besoins
• Analyse Bien couvertes par UML
• Conception Discutable:
• Réalisation Réalisation: si utilisation d’UML comme langage
de programmation.
• Validation Validation: génération automatique de cas de
tests mais loin d’être exhaustifs
• Déploiement Déploiement: un diagramme UML pour ça
• Maintenance Maintenance: possibilité de faire du reverse eng.
Application de Design patterns, round-trip eng.
50
UML: des diagrammes et des points
de vue
51
UML: des diagrammes et des
points de vue
Vidéothèque
Louer un
DVD
Rendre un
DVD
Diagramme de Cas
d’Utilisation Diagramme de
Diagramme séquences
d’activité
Diagramme
classes
Diagramme états/transitions
Digramme de packages
52
UML: des diagrammes et des
points de vue
Aspects fonctionnels du Système
-Diagramme de cas d’utilisation
-Diagramme de séquences
-[Diagramme d’activités]
53
UML: Point de vue Fonctionnel
54
UML: Point de vue Fonctionnel
56
Le diagramme de Cas
d’Utilisation
Le diagramme des cas d’utilisation est modélisé par
:
– Des acteurs
– Des cas d’utilisation
– Le Système
– Des relations
• Associations, Héritage, dépendances
57
Le diagramme de Cas
d’Utilisation: Acteur
• Un Acteur représente un rôle joué par une entité externe
qui interagit directement avec le système étudié (déf.
UML2.0, omg)
• Notations graphiques
Gestion de
stock
58
Le diagramme de Cas
d’Utilisation: Acteur
• Comment identifier les acteurs?
– Par un dialogue avec le client et les utilisateurs
– En délimitant les frontières du système
• Qui sont-ils ?
• les utilisateurs humains: les profils possibles sans oublier
l’administrateur et l’opérateur de maintenance
• les autres systèmes connexes interagissant avec le
système : logiciels, périphériques …
59
Le diagramme de Cas d’Utilisation:
Cas d’Utilisation
• Un Cas d’Utilisation représente un ensemble de séquences
d’actions qui sont réalisées par le système et qui produisent
un résultat observable intéressant pour un acteur
particulier (déf. UML2.0, omg)
60
Le diagramme de Cas d’Utilisation:
Cas d’Utilisation
Comment identifier les cas d’utilisations?
• Répondre aux questions suivantes:
• Quels sont les services rendus par le système ?
– Chaque fonctionnalité métier est représentée par un use case
61
Le diagramme de Cas d’Utilisation: Le
Système
• Le Système représente les limites de
l’application considérée et regroupe un ensemble
de cas d’utilisation
• Notations graphiques
Vidéothèque
Louer un
DVD
62
Le diagramme de Cas d’Utilisation:
Les Relations
Client Retirer
Argent
Client
Client de la banque
63
Le diagramme de Cas d’Utilisation:
Les Relations
Entre Cas d’utilisation: trois types de Virement
relations
• Généralisation (héritage): le cas fils Virement en
Ligne
spécialise le cas père. Sémantique
cependant ambigüe dans le cadre des
UC. À éviter <<include>>
Retirer Identificati
Argent on
• Inclusion (<<include>>): le cas source
incorpore directement et
nécessairement le cas cible à un
endroit précis dans son Retirer
enchaînement. Le cas inclus n’est Argent <<extend>>
Points Consulter
jamais exécuté tout seul. À utiliser d’extensio Solde
pour factoriser n:
Vérif. Solde
67
Les Scénarios
69
Les Scénarios: Exemple
70
Les Scénarios: Exemple
72
UML: Point de vue Statique
-Rappel OO
-Diagramme de Classes
-Diagramme d’Objet
- Diagramme de Structure Composite
73
Rappel OO
-Vision OO
-Concepts de base
74
Vision OO
76
Un Objet
Identité
– constante
– permet à un objet d'être manipulé, référencé par
d'autres
Etat
– variable
– conforme à un certain type (classe)
– caractérise la "valeur" d'un objet à un instant donné
Comportement
– opérations que peut accomplir l'objet
– invoqué via l'interface de l'objet
– modifie ou non l'état
77
Objet : Exemples
78
Objet: Exemples
79
Messages & Méthodes
• Messages
– La seule façon de communiquer entre objets
– Indiquent quel comportement les objets doivent
exécuter
• Méthodes
– Indiquent comment répondre à un message
(comment le comportement s’exécute)
– Ont accès aux données de l’objet (i.e. état)
80
Encapsulation
81
Encapsulation
82
Classe
• Un mécanisme de groupage, de
classification
83
Classe Vs. Objets
• Une classe spécifie la • Les objets sont des instances
structure et le de classe, ils peuvent être
comportement d’un détruits ou ajoutés pendant
ensemble d’objets de l’exécution
même nature (un
moule) • La valeur des attributs des
– La structure d’une objets peut changer
classe est constante
84
Classes et Instances
85
Variables d’instances
86
Héritage
• Super-classe
– Contient les éléments communs à un ensemble de
sous-classes
Vehicle
Person
Surgeon Family
Car Amphibious Vehicle Boat
Doctor
simple multiple
88
Polymorphisme
• Polymorphisme ad-hoc
– Ex.
• La méthode int addition(int, int) pourra retourner la somme de
deux entiers
90
Polymorphisme
Vehicle v = null;
v = new Car();
v.startEngine();
v = new Boat();
v.startEngine();
91
Polymorphisme
93
Diagramme de Classes
94
Diagramme de Classes
95
Classe
• Représentation simplifiée
Nom_classe
96
Les visibilités
public = usager
+
Interface package = frèr
~ e
héritie
protected = r
# implémenteu
corps private = - r
97
Attributs
• Une classe peut contenir des attributs
• La syntaxe d’un attribut est :
visibilité nom : type [= valeur par défaut]
• La visibilité est:
– ‘+’ pour public
– ‘#’ pour protected
– ‘-’ pour private
• UML définit son propre ensemble de types
– Integer, real, string, …
• Un attribut peut être un attribut de classe, il est alors
souligné.
cardinalité
Attribut de classe
Attribut calculé
• Un attribut de classe est un attribut dont la valeur est partagée par toutes
les instances de cette classe
99
Opérations
100
Opérations: Exemples
101
Les Associations
102
Les Associations: Vue ensembliste
103
Les Associations
104
Association: Notation
Navigabilité
Nom d’association
0..1
procède compte
Client Compte
client 1..
*
Rôle Cardinalité
précisée
105
Association réflexive
106
Les Associations N-aires
107
Classe d’association
Traduction
108
Association : Navigabilité
Produit
109
Association : Navigabilité
• Impact de la navigabilité et des noms de rôles sur la
génération de code
110
Associations: Rôles Indispensables
111
Associations: Agrégation &
Composition
• Notion de « est composé de », « contient » « est
construit à partir de », « est formé de », …
Agrégation
112
Associations: Agrégation
113
Associations: Composition
114
Associations: Agrégation &
Composition
• Attention aux abus d’utilisation de ces types d’associations
117
Généralisation: Héritage des
associations
estComposee
équipe membre
0..1 *
procède
membre Contrat
1..*
joueur entraineur
118
Les Classes et Opérations
Abstraites
• Une classe abstraite est une classe qui contient au
moins une opération abstraite
– Capture des comportements communs
– Servent à structurer le système
– Ne peut pas être instanciée
Forme
{abstract}
CalculerSurface() {abstract}
Attention: dans UML1.X, classe et
opération abstraite étaient en
italique. Ce n’est plus obligatoire
dans UML2.0. Rajouter {abstract}
Carre Cercle
{abstract} {abstract}
CalculerSurface() CalculerSurface()
119
Les Interfaces
• La vitrine de la classe
120
Les Interfaces: Notation
String
isEqual (Object) : boolean
isGreater (Object) : boolean
hash () : integer
«interface»
Comparable
isEqual (Object) : boolean
isGreater (Object) : boolean
Ou bien:
String
isEqual (Object) : boolean
isGreater (Object) : boolean
Comparable
hash () : integer
121
Les Notes (commentaires)
• Notation graphique
122
Les Contraintes
• Ça peut être des règles métiers, de bonne
structuration du modèle, etc.
123
Autres Concepts
124
Autres Concepts
125
Les Packages
• Un package permet de grouper des éléments
– Classes, use case, etc.
126
Les Packages: Exemple
• Import: élément est importé dans le
package avec une visibilité public.
l’import est transitif en cas de
plusieurs imports
127
Diagramme d’Objets
128
Diagramme d’Objets
• Un diagramme d’objet représente la vue statique d’un
ensemble d’instance de classes
130
Diagramme de Structure
Composite
131
Diagramme de Structure
Composite
• Nouveauté dans UML 2.0
Un composant avec
de multiples ports
133
UML: Point de vue Dynamique
-Diagramme de Séquence
-Diagramme de Collaboration
-Diagramme d’État/Transition
-Diagramme d’Activité
134
Les Diagrammes de Séquence
135
Diagrammes de Séquence
• Objectif: représenter des exemples (instances)
d’interaction entre objets dans la réalisation de
processus de l’application
– Interaction: un ensemble de messages échangés par une
partie du système
• Très utilisés!
– Peuvent aussi servir pour les Tests (abordés plus loin)
136
Exemple
137
Diagrammes de Séquence:
Constituants
• Objets: instances de classes qui participent à
l’interaction
138
Diagrammes de Séquence:
Constituants
• Messages: un message est une communication
entre objets pour communiquer une information
ou bien déclencher une action Les paramètres et le résultat,
de l’appel, si y’en a
résultat=:nomOp (param)
– Message de Retour
• Peut être omis
139
Diagrammes de Séquence: Messages
de Création et de Destruction
Ob1::
A
création
Ob2::
B
opératio 1
n
opératio 2
n
Destruction
X
140
Un autre exemple, d’autres
concepts
141
Diagrammes de Séquence: La bande
d’activation
• Permet de voir quand l’objet est actif dans
l’interaction
142
Diagrammes de Séquence:
L’appel récursif
• L’objet peut appeler une opération chez lui
(interaction interne)
– Voir aussi la bande d’activation
143
Diagrammes de Séquence: Le type de
contrôle
• Les diagrammes de séquence permettent
d’identifier aisément (visuellement) le type de
contrôle
– Contrôle centralisé Vs. Contrôle distribué
144
Diagrammes de Séquence: les
fragments combinés
• Permettent de représenter les boucles, les
branchements conditionnels, les références dans
un diagramme de séquence
Exemple de boucle
145
Diagrammes de Séquence: les
fragments combinés
• Exemple de l’opérateur ref : permet de référencer un
diagramme de séquence à partir d’autres D.S
Sd S1 Sd S2
re M12 re M12
f f
Sd
M12
146
Diagrammes de Séquences:
L’ancienne notation UML 1.x
• Principalement, la notation concernant les
boucles, les If, et les messages asynchrones
147
Diagrammes de Séquence:
Conclusions
• Permettent de décrire la dynamique d’un système
148
Diagramme de Collaboration
149
Diagrammes de Collaboration: En
bref
• Les mêmes constituants qu’un diagramme de
séquence
• Peu utilisé
151
Diagrammes d’États/Transitions
152
Diagrammes d’États/Transitions
Porte
ouvrir()
fermer()
verrouiller()
déverrouiller()
154
Diagrammes d’États/Transitions:
Constituants
• État: Un état est caractérisé par une notion de
durée et de stabilité. Il porte un nom
NomEtat
155
Diagrammes d’États/Transitions:
Syntaxe & Notation
• L'événement : "événement"
• déclenche l'action : "action"
• si la condition : "garde" est vérifiée.
condition de garde
action
événement reçu
156
Diagrammes d’États/Transitions:
Événements
• Stimulis auxquels réagissent les objets
– Occurrence déclenchant une transition d’état
157
Diagrammes d’États/Transitions:
Événements (types)
• Réalisation d’une condition arbitraire
– transcrit par une condition de garde sur la
transition
159
Diagrammes d’États/Transitions:
Action
• Action : opération instantanée (conceptuellement)
et atomique (ne peut être interrompue)
160
Diagrammes d’États/Transitions:
Action
• Actions à l’entrée et sortie de l’état
– entry/ indique une action exécutée à chaque
entrée dans l'état.
– exit/ indique une action exécutée à chaque sortie
de l'état.
Etat
entry/ faire quelque chose
exit/ faire autre chose
161
Diagrammes d’États/Transitions:
Activité Interne
• Activité : opération se déroulant continuellement
tant que l’objet est dans l ’état associé
– do/ action
162
Diagrammes d’États/Transitions:
Transition Interne
• L’objet ne change pas d’état
Etat
Ev1 [t=0]/ faire quelque chose
Ev1 [t>0]/ faire autre chose
163
Diagrammes d’États/Transitions:
Garde
• Une condition qui valide ou non le
déclenchement d'une transition lors de
l'occurrence d'un événement
164
Diagrammes d’
États/Transitions: Concepts
avancés
165
Diagrammes d’États/Transitions: État
composé
• Un état peut être décomposé en sous-états
– Pour simplifier la compréhension du problème
– Factoriser des transitions
166
Diagrammes d’États/Transitions: État
composé
Repos
occupé En
Tonalité occupée
connexion
Appelé raccroche
connecté
167
Diagrammes d’États/Transitions: État
composé
• Notion de souche: masque les détails
168
Diagrammes d’États/Transitions: État
composé & Concurrents
• Utilisation de sous-états concurrents pour ne pas à
avoir à expliciter le produit cartésien d ’automates
– si 2 ou plus aspects de l ’état d ’un objet sont indépendants
– Activités parallèles
• Sous-états concurrents séparés par pointillés
– « swim lanes »
169
Diagrammes d’États/Transitions: État
composé & Concurrents
• Autre exemple
170
Diagrammes d’États/Transitions: état
historique
• Par défaut, un état composite ne retient pas le sous-état
dans lequel il était à sa dernière sortie
171
Diagrammes d’États/Transitions:
Transition Composée
• Le choix de la transition est fait avant d'atteindre
le point de branchement
172
Diagramme d’Activités
173
Diagramme d’Activités
• Souvent utilisés pour modéliser les Workflow ou
Business Process
• Attachés à
– une classe,
– une opération,
– ou un use-case (workflow)
175
Diagramme d’Activités
• Attention dans UML 2.0 on ne parle plus d’activité comme
unité à grain fin mais d’Action (une action est atomique)
177
Diagramme d’Activités: Les Call
Actions
• Une activité peut appeler
une autre activité
(CallBehaviorAction)
178
Diagramme d’Activités: Les
Signaux
• Ça peut être suite à l’épuisement d’une durée
179
Diagramme d’Activités: Les Swim
Lanes
• Possibilité d’utiliser les swim lanes comme dans
UML 1.x
180
Diagramme d’Activités: Pas plus
loin
• Les diagrammes d’activités dans la nouvelle version du
standard sont très complets et très riches
182
Diagrammes de Temps
183
Diagrammes de Temps
184
UML: Point de vue
Déploiement
-Diagramme de Composants
-Diagramme de Déploiement
185
Diagramme de Composants
186
Diagramme de Composants
188
Diagramme de Composants:
Exemple
189
Diagramme de Déploiement
190
Diagramme de Déploiement
191
Diagramme de Déploiement :
Exemples
192
Lectures
• Software Engineering,
– Ian Sommerville, Addison Wesley; 8 edition (15 Jun 2006), ISBN-10: 0321313798
• The Mythical Man-Month
– Frederick P. Brooks JR., Addison-Wesley, 1995
• Cours de Software Engineering du Prof. Bertrand Meyer à cette @:
– http://se.ethz.ch/teaching/ss2007/252-0204-00/lecture.html
• Cours d’Antoine Beugnard à cette @:
– http://public.enst-bretagne.fr/~beugnard/
-----------------------
• UML Distilled 3rd édition, a brief guide to the standard object modeling language
– Martin Fowler, Addison-Wesley Object Technology Series, 2003, ISBN-10:
0321193687
• UML2 pour les développeurs, cours avec exercices et corrigés
– Xavier Blanc, Isabelle Mounier et Cédric Besse, Edition Eyrolles, 2006,
ISBN-2-212-12029-X
• UML 2 par la pratique, études de cas et exercices corrigés,
– Pascal Roques, 6ème édition, Edition Eyrolles, 2008
• Cours très intéressant du Prof. Jean-Marc Jézéquel à cette @:
– http://www.irisa.fr/prive/jezequel/enseignement/PolyUML/poly.pdf
• La page de l’OMG dédiée à UML: http://www.uml.org/
• Cours de Laurent Audibert sur
http://laurent-audibert.developpez.com/Cours-UML/html/Cours-UML.html
------------------------
• Design patterns. Catalogue des modèles de conception réutilisables
– Richard HelmRichard Helm (Auteur), Ralph JohnsonRichard Helm (Auteur), Ralph 193
Johnson (Auteur), John VlissidesRichard Helm (Auteur), Ralph Johnson (Auteur), John
Vlissides (Auteur), Eric Gamma (Auteur), Vuibert informatique (5 juillet 1999),