SlideShare ist ein Scribd-Unternehmen logo
1 von 323
Downloaden Sie, um offline zu lesen
1
Conception des Systùmes d’Information
Langage de modélisation UML
Unified Modeling Language
Dr. Slim Mesfar
Mail : mesfarslim@yahoo.fr
Ch1 : Introduction  Notion de systĂšme d’information
 PrĂ©sentation de UML2
 PrĂ©sentation des diffĂ©rentes Ă©tapes de dĂ©veloppement logiciel
Chapitre 2 :
Analyse fonctionnelle
 Diag de contexte statique
 Diag de CU avec description textuelle des CU
Chapitre 3 :
Analyse dynamique
 Diag de contexte dynamique
 Diag de sĂ©quence systĂšme
 Diag d'activitĂ©s (modĂ©lisation processus mĂ©tier et CU)
Chapitre 4 :
Analyse statique
 Diag de classes d’analyse (+ contraintes, stĂ©rĂ©otypes)
 Diag d’objets
 Diag de package
Chapitre 5 :
Conception
 Diag de sĂ©quence objet (stĂ©rĂ©otypes de Jacobson)
 Diag de classes de conception (navigabilitĂ©, traduction de l’analyse)
 Diag de communication / de collaboration
 Diag Ă©tat transition
 Diag de composants
 Diag de dĂ©ploiement
Chapitre 6 :
Implémentation
 GĂ©nĂ©ration Ă  partir d’un diagramme de classe :
- D’une base de donnĂ©es
- Code source JAVA/C++

2
Plan du cours
3
Les systùmes d’information
‱ Des exemples de SI
– Une application de gestion de stocks d’un
supermarché
– Un site web de vente en ligne
– Une bibliothĂšque numĂ©rique
– Un portail avec intranet pour une Ă©cole/ institut
– ...
Introduction générale
4
Les systùmes d’information
‱ Qu’est ce qu’un SI ?
un SI est un ou plusieurs logiciels manipulant un
ensemble d’informations structurĂ©es et cohĂ©rentes.
Par exemple : l’intra d’une Ă©cole supĂ©rieure : des
cours, des Ă©lĂšves, des profs, des horaires, des
projets, des groupes, des notes, etc. On peut les
consulter, les créer, les modifier, les détruire.
ïżœ Plus largement, aujourd’hui, tout logiciel peut ĂȘtre
considĂ©rĂ© comme un systĂšme d’information.
Introduction générale
5
Les systùmes d’information
‱ Autrement dit :
un SI est un ensemble organisé de ressources :
matériel, logiciel, personnel, données, procédures

permettant d’acquĂ©rir, de traiter, de stocker des
informations (sous formes de données, textes,
images, sons, etc.) dans et entre des organisations.
ïżœ NĂ©cessitĂ© de collaboration entre les intervenants
pour garantir la bonne conduite du processus de
dĂ©veloppement d’un SI
ïżœ NĂ©cessitĂ© d’un langage de communication unifiĂ©
Introduction générale
6
Sommaire
‱ Historique
‱ La ModĂ©lisation
‱ Les Diagrammes UML
Chapitre 1 : Introduction et historique d’UML
7
Historique
8
BOOCH
‱ Pionnier de l’OrientĂ©-Objet
– Article en 1981: ‘ Object Oriented Development ’
– Au dĂ©but, mĂ©thode pour le dĂ©veloppement
d’applications en Ada pour le ‘ Department of
Defense ’
– Etendue au C++
‱ Distingue 2 niveaux:
– Logique
‱ Diagrammes de classes
‱ Diagramme d’instances
‱ Diagramme Ă©tats/transitions
– Physique
‱ Diagrammes de modules (principe des packages)
‱ Diagramme de processus
Les Principales MĂ©thodes Objet
Grady Booch
Historique
9
OMT
‱ Object Modeling Technique
– Livre de James Rumbaugh (1991)
‱ 3 axes
– Statique : identifie les propriĂ©tĂ©s des objets et leurs
liaisons avec les autres objets
– Dynamique : dĂ©finit le cycle de vie des objets :
comportement des objets, les différents états par
lesquels ils passent, et les événements déclanchant
ces changements d’états
– Fonctionnel : prĂ©cise les fonctions rĂ©alisĂ©es par les
objets par l’intermĂ©diaire des mĂ©thodes.
James Rumbaugh
Les Principales MĂ©thodes Objet
Historique
10
OOSE
‱ Object Oriented Software Engineering
– Souvent appelĂ©e Objectory
‱ 5 modùles
– Description des besoins
– Analyse
– Conception
– Implantation
– Test
‱ 3 types d ’objets
– entitĂ©s
– contrîles
– interfaces
‱ Notion de Cas d’Utilisation: Use Cases
Ivar Jacobson
Les Principales MĂ©thodes Objet
Historique
11
MĂ©thodes Objets
‱ En 1994, plus de 50 mĂ©thodes OO
– Fusion, Shlaer-Mellor, ROOM, Classe-Relation, Wirfs-Brock, Coad-
Yourdon, MOSES, Syntropy, BOOM, OOSD, OSA, BON, Catalysis,
COMMA, HOOD, Ooram, DOORS...
‱ Les notations graphiques sont toutes diffĂ©rentes
‱ L’industrie a besoin de standards
Les Principales MĂ©thodes Objet
Historique
12
Naissance d’UML
‱ 1993-1994: Booch’93, OMT-2
– Les 2 mĂ©thodes sont leaders sur le marchĂ©
– Elles sont de plus en plus proches
‱ Octobre 1994
– J. Rumbaugh (OMT) rejoint G. Booch
– Annonce de l’unification des deux mĂ©thodes
‱ Octobre 1995: MĂ©thode UnifiĂ©e v0.8
‱ Fin 1995: le fondateur d ’Objectory, Ivar Jacoson, rejoint
Ă  son tour J. Rumbaugh et G. Booch
‱ Janvier 97 : Soumission à l’OMG de la version UML 1.0
– OMG: Object Management Group
‱ Organisme Ă  but non lucratif fondĂ© en 1989
‱ Plus de 700 entreprises y adhùrent
‱ Septembre 97 : UML 1.1
Historique
13
Conclusion
‱ UML: Prendre le meilleur de chacune des mĂ©thodes
– OOSE (Jacobson): Use Cases
– OMT (Rumbaugh): Analyse
– Booch: Conception, Architecture
‱ Depuis 1997, UML est dans le domaine public
‱ A partir Juin 2004 : Version UML 2.x avec divers apports :
– Plus de possibilitĂ©s de reprĂ©sentation, de prĂ©cision et de capacitĂ©s de modĂ©lisation
(ex : diagrammes de séquence totalement refondus)
– Meilleur support de l’ingĂ©nierie des systĂšmes
– PossibilitĂ© de dĂ©finir et de raffiner les systĂšmes jusqu’aux couches logicielles
– 

ïżœ Plus proche des MDAs
‱ Actuellement : Version UML 2.4.1 (depuis Aout 2011)
La Convergence vers UML
Historique
14
La Modélisation
15
UML ?
‱ Est une notation, pas une mĂ©thode
‱ Est un langage de modĂ©lisation objet
‱ Convient à tous les langages objets
– SmallTalk
– C++ (HĂ©ritage multiple)
– Java (Interface)
DĂ©finition
La Modélisation
16
Un modĂšle permet de :
– mieux comprendre le systĂšme Ă  dĂ©velopper,
– visualiser le systùme comme il est ou comme il devrait
l'ĂȘtre,
– valider le modùle vis à vis des clients,
– spĂ©cifier les structures de donnĂ©es et le comportement
du systĂšme,
– fournir un guide pour la construction du systùme,
– documenter le systĂšme et les dĂ©cisions prises.
La Modélisation
A quoi sert la modélisation?
17
Qu’apporte la modĂ©lisation objet?
‱ plus grande indĂ©pendance du modĂšle par rapport
aux fonctionnalités demandées
‱ des fonctionnalitĂ©s peuvent ĂȘtre rajoutĂ©es ou
modifiées sans que le modÚle objet change
‱ plus proche du monde rĂ©el
La Modélisation
A quoi sert la modélisation?
18
La Modélisation
Objectifs d’UML
‱ReprĂ©senter des systĂšmes entiers,
‱CrĂ©er un langage de modĂ©lisation utilisable Ă  la fois par les
humains et les machines,
‱Rechercher un langage commun qui est utilisable par toutes
les méthodes et adapté à toutes les phases du développement
Pourquoi UML?
19
La Modélisation
UML ?
ïżœUML n’est pas une mĂ©thode
ïżœUML est un langage de modĂ©lisation objet
ïżœUML est adoptĂ© par toutes les mĂ©thodes objet
ïżœUML est une norme dans le domaine public
‱visualiser
‱spĂ©cifier
‱construire
‱documenter
‱S.I des entreprises
‱Banques et les services financiers
‱TĂ©lĂ©communications
‱Transport
‱DĂ©fense et aĂ©rospatiale
‱Scientifique
‱Applications distribuĂ©es par le WEB
Utilisé
pour
Utilisé
dans
20
Architecture 4+1
La Modélisation
‱ Vue des cas d'utilisation : c'est la description du modùle
« vue » par les acteurs du systÚme. Elle correspond aux besoins
attendus par chaque acteur (c'est le QUOI et le QUI).
21
Architecture 4+1
La Modélisation
‱Vue logique : c'est la dĂ©finition du systĂšme vu de l'intĂ©rieur. Elle
explique comment peuvent ĂȘtre satisfaits les besoins des acteurs
(c'est le COMMENT).
‱Vue d'implĂ©mentation : cette vue dĂ©finit les dĂ©pendances entre
les modules.
‱Vue de comportement ou des processus : c'est la vue
temporelle et technique, qui met en Ɠuvre les notions de tñches
concurrentes, stimuli, contrĂŽle, synchronisation, etc.
‱Vue de dĂ©ploiement : cette vue dĂ©crit la position gĂ©ographique
et l'architecture physique de chaque élément du systÚme (c'est le
OÙ).
22
Axes de Modélisation avec UML
Statiques
DynamiquesFonctionnels
Diagramme de Classes
Diagramme d’Objets
Diagramme de Composants
Diagramme de DĂ©ploiement
Diagramme de paquetages
Diagramme de structure composite (UML 2.x)
Diagramme de Use Case
Diagramme de SĂ©quence
Diagramme de communication (UML 2.x)
Diagramme global d’interaction (UML 2.x)
Diagramme de temps (UML 2.x)
Diagramme d'Etats-Transitions
Diagramme d'activités
Cycle de DĂ©veloppement
La Modélisation
23
Modélisation fonctionnelle
La Modélisation
‱ Diagramme des cas d'utilisation (use-cases) : il permet
d'identifier les possibilités d'interaction entre le systÚme et les
acteurs (intervenants extérieurs au systÚme), c'est-à-dire toutes
les fonctionnalités que doit fournir le systÚme.
24
Modélisation statique
La Modélisation
‱Diagramme de classes : il reprĂ©sente les classes intervenant dans
le systĂšme.
‱Diagramme d'objets : il sert Ă  reprĂ©senter les instances de classes
(objets) utilisées dans le systÚme.
‱Diagramme de composants : il permet de montrer les composants
du systùme d'un point de vue physique, tels qu'ils sont mis en Ɠuvre
(fichiers, bibliothÚques, bases de données...)
‱Diagramme de dĂ©ploiement : il sert Ă  reprĂ©senter les Ă©lĂ©ments
matériels (ordinateurs, périphériques, réseaux, systÚmes de
stockage...) et la maniĂšre dont les composants du systĂšme sont
répartis sur ces éléments matériels et interagissent entre eux.
25
Modélisation statique
La Modélisation
‱Diagramme des paquetages : un paquetage Ă©tant un conteneur
logique permettant de regrouper et d'organiser les éléments dans le
modÚle UML, le Diagramme de paquetage sert à représenter les
dĂ©pendances entre paquetages, c’est-Ă -dire les dĂ©pendances entre
ensembles de définitions.
‱Diagramme de structure composite (UML 2.x) : permet de
décrire sous forme de boßte blanche les relations entre composants
d'une classe.
26
Modélisation dynamique
La Modélisation
‱Diagramme de sĂ©quence : reprĂ©sentation sĂ©quentielle du
déroulement des traitements et des interactions entre les éléments du
systĂšme et/ou de ses acteurs.
‱Diagramme de communication (UML 2.x) : reprĂ©sentation
simplifiée d'un diagramme de séquence se concentrant sur les
Ă©changes de messages entre les objets.
‱Diagramme global d'interaction (UML 2.x) : permet de dĂ©crire
les enchaßnements possibles entre les scénarios préalablement
identifiés sous forme de diagrammes de séquences (variante du
diagramme d'activités).
27
Modélisation dynamique
La Modélisation
‱ Diagramme de temps (UML 2.x) : permet de dĂ©crire les
variations d'une donnée au cours du temps.
‱Diagramme Ă©tats-transitions : permet de dĂ©crire sous forme de
machine Ă  Ă©tats finis le comportement du systĂšme ou de ses
composants.
‱ Diagramme d'activitĂ©s : permet de dĂ©crire sous forme de flux ou
d'enchaßnement d'activités le comportement du systÚme ou de ses
composants.
28
Cycle de développement du
logiciel
ïżœ Expression des besoins
ïżœ SpĂ©cification
ïżœ Analyse
ïżœ Conception
ïżœ ImplĂ©mentation
ïżœ Validation
ïżœ Tests de vĂ©rification
ïżœ Maintenance et Ă©volution
Les différentes étapes du développement logiciel
ïżœ L’ Expression des besoins
- Interview de l’expert mĂ©tier
ïżœ La SpĂ©cification
– Ce que le systĂšme doit ĂȘtre et comment il peut ĂȘtre utilisĂ©.
ïżœ L’Analyse
– L’objectif est de dĂ©terminer les Ă©lĂ©ments intervenant dans le
systĂšme Ă  construire, ainsi que leur structure et leurs
relations . Elle doit décrire chaque objet selon 3 axes :
 Axe fonctionnel : savoir-faire de l’objet.
 Axe statique : structure de l’objet.
 Axe dynamique : cycle de vie de l’objet au cours
de l’application (États et messages de l’objet).
Ces descriptions ne tiennent pas compte de
contraintes techniques (informatique).
ïżœ La Conception :
Elle consiste Ă  apporter des solutions techniques
aux descriptions dĂ©finies lors de l’analyse :
‱ architecture technique
‱ performances et optimisation
‱ stratĂ©gie de programmation
On y définit les structures et les algorithmes.
Cette phase sera validée lors des tests.
ïżœ L’implĂ©mentation
C’est la rĂ©alisation de la programmation.
ïżœ La Validation
Le dĂ©veloppement d’une application doit ĂȘtre liĂ© Ă 
un contrat ayant une forme d’un cahier des charges, oĂč
doivent se trouver tous les besoins de l’utilisateur. Ce
cahier des charges doit ĂȘtre rĂ©digĂ© avec la collaboration de
l’utilisateur et peut ĂȘtre par ailleurs complĂ©tĂ© par la suite.
Tout au long de ces Ă©tapes, il doit y avoir des
validations en collaboration Ă©galement avec l’utilisateur.
Une autre validation doit aussi ĂȘtre envisagĂ©e lors
de l’achĂšvement du travail de dĂ©veloppement, une fois
que la qualité technique du systÚme est démontrée. Elle
permettra de garantir la logique et la complétude du
systĂšme.
ïżœ Les tests de vĂ©rification
Ils permettent de réaliser des contrÎles pour la
qualité technique du systÚme.
Il s’agit de relever les Ă©ventuels dĂ©fauts de
conception et de programmation (revue de code, tests
des composants,...).
Il faut instaurer ces tests tout au long du cycle de
développement et non à la fin pour éviter des reprises
conséquentes du travail (programmes de tests robustes ;
Logiciels de tests).
ïżœ Maintenance et Ă©volution
Deux sortes de maintenances sont à considérer :
 Une maintenance corrective, qui consiste Ă 
traiter les “buggs ”.
 Une maintenance Ă©volutive, qui permet au
systĂšme d’intĂ©grer de nouveaux besoins ou des
changements technologiques.
Le dĂ©veloppement d’un logiciel repose sur les activitĂ©s
suivantes :
ïżœ DĂ©termination des besoins (quel est le cahier des
charges ?)
ïżœ Analyse (que fera le logiciel ?)
ïżœ Conception (comment le fera-t-il ?)
ïżœ ImplĂ©mentation (quel code exĂ©cutera-t-il ?)
ïżœ Test (sera-t-il conforme Ă  l’analyse et au cahier des
charges ?)
Une organisation de ces activités forme un processus de
développement.
Résumé des différentes étapes du développement logiciel
36
Chap 2 :
Analyse fonctionnelle
37
Analyse fonctionnelle
Permet d’élaborer le cahier des charges ou le document
de spécification des besoins du logiciel
ïżœ permet de structurer les besoins des utilisateurs,
les objectifs correspondants d'un systĂšme
ïżœ On recense, l'ensemble des fonctionnalitĂ©s d'un
systĂšme en examinant les besoins fonctionnels de
chaque acteur.
38
DĂ©termination des besoins
Besoins (« requirement ») = exigence de ce que le systÚme
devrait satisfaire
ïżœ DĂ©termination des besoins attendus par chaque acteur :
ïżœ le QUI ?
ïżœ le QUOI ?
Analyse fonctionnelle
39
DĂ©termination des besoins
‱ Besoins fonctionnels
– À quoi sert le systùme
– Ce que doit faire le systùme, les fonctions utiles
– Description des donnĂ©es manipulĂ©es
‱ Besoins non fonctionnels : des restrictions ou des
contraintes qui pĂšsent sur un service du systĂšme
– description des contraintes,
– Pour chaque fonction et pour le systùme global, il est possible
d’exprimer diffĂ©rents types de contraintes.
Exemple : portabilité, compatibilité, fiabilité, sécurité, 

Les différents types de besoins
40
Analyse fonctionnelle
MĂ©thodologie :
1. Identifier les acteurs,
a. humains ou systĂšmes connexes
b. principaux ou secondaires
2. Etablir le diagramme de contexte statique
3. Identifier les cas d'utilisation (UC)
4. Description des UC
a. graphiquement
b. textuellement
41
2.1. Les diagrammes de
contexte statique
42
Le diagramme de contexte statique
‱ Le diagramme de contexte statique permet de positionner le
systÚme dans son environnement selon un point de vue matériel.
‱ Le systĂšme est donc dĂ©crit physiquement est non pas en termes
de fonctionnalités
‱ De plus, pour chaque type d’élĂ©ment matĂ©riel extĂ©rieur au
systÚme, il est précisé le nombre minimal et maximal, appelés
cardinalités, qui sont mis en jeu
43
2.2. Les diagrammes de
cas d’utilisation
‱ Le diagramme de cas d’utilisation dĂ©crit les
fonctionnalitĂ©s d’un systĂšme d’un point de vue utilisateur,
sous la forme d’actions et de rĂ©actions ; l’ensemble des
fonctionnalités est déterminé en examinant les besoins
fonctionnels de tous les utilisateurs potentiels.
‱ Le but est d’identifier :
– les catĂ©gories d’utilisateurs : chacune d’entre elles, appelĂ©e acteur,
est susceptible de mettre en oeuvre une ou plusieurs fonctionnalités
du systĂšme ;
– les besoins du systĂšme : chaque fonctionnalitĂ©, appelĂ©e cas
d’utilisation, doit rĂ©pondre Ă  l’un des besoins nĂ©cessitĂ©s par une
ou plusieurs catĂ©gories d’utilisateurs.
44
Le diagramme des cas d’utilisation (Use cases)
‱ Le diagramme des cas d’utilisation se base sur le
cahier des charges pour ĂȘtre construit ; il fait donc
partie, en termes de gestion de projet, de la
spécification du systÚme.
‱ Processus de construction du diagramme de cas
d’utilisation
45
Le diagramme des cas d’utilisation (Use cases)
46
Le diagramme des cas d’utilisation (Use cases)
Les diagrammes UML
47
1. Acteur : entité (humain ou machine) externe qui agit sur le systÚme
(opérateur, composant interne
) :
Le diagramme des cas d’utilisation (Use cases)
Identification des acteurs
‱permettant d’en dĂ©terminer les limites
‱jouant un rîle par rapport à lui
‱dĂ©clenchant un stimulus initial entraĂźnant une rĂ©action du systĂšme
‱Un acteur est dĂ©crit prĂ©cisĂ©ment
en quelques lignes :
48
1. Acteur
Le diagramme des cas d’utilisation (Use cases)
Identification des acteurs
4 catĂ©gories d’acteurs :
‱acteurs principaux : personnes utilisant les fonctions principales du
systĂšme. Dans le cas d'un distributeur de billets, il s'agit des clients.
‱acteurs secondaires : personnes qui effectuent des tñches administratives ou
de maintenance. Dans le cas d'un distributeur de billets, il s'agit de la
personne qui recharge la caisse du distributeur.
‱matĂ©riel externe : dispositifs matĂ©riels autres que les ordinateurs comme les
périphériques. Dans le cas d'un distributeur de billets, il s'agit de
l'imprimante, du lecteur de carte, de la trieuse de billets.
‱autres systùmes : les systùmes avec lesquels le systùme interagit. Dans le
cas d'un distributeur de billets, il s'agit du groupement bancaire qui gĂšre
l'ordinateur central qui relie tous les distributeurs.
49
Le diagramme des cas d’utilisation (Use cases)
La Modélisation des besoins en UML
2. Use case : ensemble d’actions rĂ©alisĂ©es par le systĂšme, en
rĂ©ponse Ă  une action d’un acteur. L’ensemble des uses cases dĂ©crit
les objectifs (le but) du systĂšme.
Exemple. identification, retrait de liquide.
‱ ScĂ©narios d’un CU
SĂ©quence particuliĂšre de messages dans le CU pendant une interaction
particuliùre (“chemin” dans le cas d’utilisation),
50
Description dĂ©taillĂ©e de chaque cas d’utilisation
ïżœ Chaque cas d ’utilisation doit ĂȘtre dĂ©crit en dĂ©tail
ïżœ Commencer par les CU prioritaires
ïżœ Description utile pour la suite du dĂ©veloppement
ïżœ Description dĂ©taillĂ©e plus ou moins formelle
ïżœ langue naturelle mais structurĂ©e,
ïżœ vocabulaire prĂ©cis,
ïżœ ...
Le diagramme des cas d’utilisation (Use case)
La Modélisation des besoins en UML
51
Informations à décrire
ïżœ Quand le CU commence, prĂ©-conditions
ïżœ Quand le CU se termine, post-conditions
ïżœ Le chemin correspondant au dĂ©roulement normal
ïżœ Les variantes possibles et les cas d’erreurs (les points d’extensions)
ïżœ Les interactions entre le systĂšme et les acteurs
ïżœ Les informations Ă©changĂ©es
ïżœ Les Ă©ventuels besoins non fonctionnels
Le diagramme des cas d’utilisation (Use case)
La Modélisation des besoins en UML
52
Exemple de description dĂ©taillĂ©e d’un CU
Précondition :
Le distributeur contient des billets, il est en attente d ’une
opĂ©ration, il n’est ni en panne, ni en maintenance
DĂ©but : lorsqu’un client introduit sa carte bancaire dans le
distributeur.
Fin : lorsque la carte bancaire et les billets sont sortis.
Postcondition :
Si de l ’argent a pu ĂȘtre retirĂ©, la somme d’argent sur le
compte est Ă©gale Ă  la somme d’argent qu’il y avait avant,
moins le montant du retrait. Sinon la somme d ’argent sur
le compte est la mĂȘme qu’avant.
Retirer
de l’Argent
Retirer
de l’Argent
Le diagramme des cas d’utilisation (Use case)
La Modélisation des besoins en UML
53
Retirer
de l’Argent
Scénario nominal :
(1) le client introduit sa carte bancaire
(2) le systÚme lit la carte et vérifie si la carte est valide
(3) le systĂšme demande au client de taper son code
(4) le client tape son code confidentiel
(5) le systÚme vérifie que le code correspond à la carte
(6) le client choisi une opération de retrait
(7) le systĂšme demande le montant Ă  retirer


Variantes :
(A) Carte invalide : au cours de l ’étape (2) si la carte est
jugĂ©e invalide, le systĂšme affiche un message d ’erreur,
rejùte la carte et le cas d ’utilisation se termine.
(B) Code erronĂ© : au cours de l ’étape (5) ...
Le diagramme des cas d’utilisation (Use case)
La Modélisation des besoins en UML
Exemple de description dĂ©taillĂ©e d’un CU
54
Contraintes non fonctionnelles :
(A) Performance : le systÚme doit réagir dans un délai
infĂ©rieur Ă  4 secondes, quelque soit l’action de l ’utilisateur.
(B) RĂ©sistance aux pannes : si une coupure de courant
ou une autre défaillance survient au cours du cas
d ’utilisation, la transaction sera annulĂ©e, l ’argent ne sera
pas distribué. Le systÚme doit pouvoir redémarrer
automatiquement dans un état cohérent et sans
intervention humaine.
(C) Résistance à la charge : le systÚme doit pouvoir gérer
plus de 1000 retraits d ’argent simultanĂ©ment
...
Retirer
de l’Argent
Retirer
de l’Argent
Le diagramme des cas d’utilisation (Use case)
La Modélisation des besoins en UML
Exemple de description dĂ©taillĂ©e d’un CU
55
Le diagramme des cas d’utilisation (Use case)
La Modélisation des besoins en UML
‱Relations entre les cas d’utilisation
-« utilise» ou « include »: dĂ©finit le fait qu’un use case contient le
comportement défini dans un autre use case.
Cas d'utilisation B
<< Utilise >>
Cas d'utilisation A
-« Ă©tend » ou « extend »: dĂ©finit le fait qu’une instance d’un use case peut
ĂȘtre augmentĂ©e avec un comportement quelconque dĂ©fini dans un use case
Ă©tendu
Cas d'utilisation A Cas d'utilisation B
<< Etend >>
- « gĂ©nĂ©ralisation » Un cas A est une gĂ©nĂ©ralisation d’un cas B si B
est un cas particulier de A.
56
Le diagramme des cas d’utilisation (Use case)
La Modélisation des besoins en UML
‱Relations entre les cas d’utilisation
57
Le diagramme des cas d’utilisation (Use case)
La Modélisation des besoins en UML
‱Relation d’hĂ©ritage entre les acteurs
secrétaire
médecin
Consulter fiche patient
Remplir fiche
consultation
créer fiche patient
Erreurs usuelles - rĂŽles
58
Le diagramme des cas d’utilisation (Use case)
La Modélisation des besoins en UML
Erreurs usuelles - factorisation
59
Le diagramme des cas d’utilisation (Use case)
La Modélisation des besoins en UML
GĂ©rer
client
60
Chap 3 :
Analyse dynamique
61
3.1. Les diagrammes de
contexte dynamique
62
Le diagramme de contexte dynamique
‱ Le diagramme de contexte dynamique permet de positionner
le systĂšme dans son environnement selon le point de vue des
communications.
‱ Il reprend les Ă©lĂ©ments du contexte statique et prĂ©cise les
Ă©changes d’informations qui sont rĂ©alisĂ©s entre le systĂšme et les
éléments matériels extérieurs au systÚme.
‱ Le systĂšme est donc dĂ©crit physiquement et logiquement.
63
3.2. Les diagrammes de
séquence systÚme
64
Le diagramme de séquence
Les diagrammes UML
Deux différents types de diagrammes de séquence :
‱ Diagramme de sĂ©quence systĂšme au niveau de l’analyse
dynamique
ïżœreprĂ©sentation des diffĂ©rents scĂ©narios des cas d’utilisation
ïżœ interaction entre les acteurs et le systĂšme (une boite noire) selon un
ordre chronologique
‱Diagramme de sĂ©quence dĂ©taillĂ© au niveau de la conception
ïżœ reprĂ©sentation des collaborations entre des objets pour la rĂ©alisation d’un
cas d’utilisation, selon un point de vue temporel.
ïżœ reprĂ©sentation de la chronologie des envois de messages entre les objets.
S. Mesfar
65
Le diagramme de séquence
Les diagrammes UML
Du diagramme de séquence systÚme à la conception
S. Mesfar
66
Le diagramme de séquence
Les diagrammes UML
‱ Il y a autant de diagrammes de sĂ©quence qu’il y a de scĂ©narios
‱ Un ScĂ©nario montre une sĂ©quence particuliĂšre d’interactions
entre objets, dans un seul contexte d’exĂ©cution du systĂšme
‱ Un scĂ©nario peut ĂȘtre vu comme une rĂ©ponse Ă  un besoin ou
une partie d’un besoin du diagramme des Uses Cases.
‱ On y fait intervenir des objets / systùme complet, des
messages et des événements
Représentation de Scénarios
objet1 : Classe objet2 : Classe
Objets de type Classe
S. Mesfar
67
Le diagramme de séquence
Les diagrammes UML
ïżœl'ordre d'envoi d'un message est dĂ©terminĂ© par sa position sur
l'axe vertical du diagramme ; le temps s'Ă©coule "de haut en bas"
de cet axe : La ligne de vie. La disposition des objets sur l'axe
horizontal n'a pas de conséquence particuliÚre sur la sémantique
du diagramme.
S. Mesfar
Numérotation des messages
‱ Les messages peuvent ĂȘtre numĂ©rotĂ©s sĂ©quentiellement
A B
1: Message
A B
1: Message 1
C
1.1: message 2
Le diagramme de séquence
Les diagrammes UML
S. Mesfar 68
DurĂ©e d’activation(pĂ©riode d’activation)
– correspond au temps pendant lequel un objet effectue une action
– est reprĂ©sentĂ©e par une bande rectangulaire :
‱ Le long de la ligne de vie de l’objet
‱ Dont les extrĂ©mitĂ©s reprĂ©sentent le dĂ©but et la fin de l’activitĂ©.
Un objet
Durée
d’activation
Objet 1 Objet 2
Remarque : souvent quand l’objet est en activitĂ© continue, on nĂ©glige
la reprĂ©sentation de cette pĂ©riode d’activation
Le diagramme de séquence
Les diagrammes UML
S. Mesfar 69
70
Le diagramme de séquence
Les diagrammes UML
Notation Graphique
Objet
S. Mesfar
Appelant: Ligne téléphonique: Appelé:
décroche()
tonalité
numérotation()
indication sonnerie
indication sonnerie()
décroche
Transmission de données
‱ Les messages peuvent vĂ©hiculer des donnĂ©es entre les acteurs et le
systĂšme ou entre les objets
A B
1: Message (donnee1, donnee2)
Le diagramme de séquence
Les diagrammes UML
S. Mesfar 71
72
Le diagramme de séquence
Les diagrammes UML
Représentation graphique SystÚme comme une boite noire
S. Mesfar
73
Le diagramme de séquence
Les diagrammes UML
‱SpĂ©cificitĂ©s des diagrammes de sĂ©quences
ïżœun objet peut s’envoyer un message,
Un objet:
Message
réflexif
S. Mesfar
74
Le diagramme de séquence
Les diagrammes UML
Représentation graphique enrichie
S. Mesfar
75
Le diagramme de séquence
Les diagrammes UML
‱SpĂ©cificitĂ©s des diagrammes de sĂ©quences
ïżœun message peut entraĂźner la crĂ©ation ou la
destruction d’autres objets,
Créer
DĂ©truire
Un objet:
Un autre
objet:
S. Mesfar
Les types de messages
Dans un diagramme de séquences trois principaux types de
messages sont distingués :
‱message synchrone (flĂšche avec une extrĂ©mitĂ© pleine)
Bloque l’émetteur jusqu'Ă  prise en compte du message par le destinataire.
Le flot de contrÎle passe de l'émetteur au récepteur (l'émetteur devient
passif et le récepteur actif) à la prise en compte du message.
‱message asynchrone (flĂšche avec une extrĂ©mitĂ© non pleine)
N'interrompt pas l'exĂ©cution de l’émetteur. Le message envoyĂ© peut ĂȘtre
pris en compte par le récepteur à tout moment ou ignoré (jamais traité).
Le diagramme de séquence
Les diagrammes UML
S. Mesfar 76
Les réponses aux messages
Dans le cas des envois synchrones,
le retour peut ĂȘtre implicite en fin
d'activités et ne nécessitera pas de
représentation particuliÚre
Dans le cas des envois asynchrones,
le retour doit ĂȘtre explicite
Le diagramme de séquence
Les diagrammes UML
S. Mesfar 77
Les types de messages
Sd diagramme1
Objet1: Objet2: Objet3::client
Message 1( )
Message 2( )
Message 3( )
Message 5( )
Message 6( )
Retour Message 3( )
Message
synchrone
Message
asynchrone
Message 4( )
Activation
d’un objet
Le diagramme de séquence
Les diagrammes UML
S. Mesfar 78
Exemple
Le diagramme de séquence
Les diagrammes UML
S. Mesfar 79
Comité de
programme
Comité
d'organisation
PAPIERAuteur RAPPORTLecteur
Appel( )
Enregistrer le papier
Papier enregistré
Affecter_lecteur( )
Note( )
RĂ©diger( )
Envoi
Enreg_papier(true)
Evalué( )
Papier évalué
Exemple2
Le diagramme de séquence
Les diagrammes UML
S. Mesfar 80
Exemple3
Le diagramme de séquence
Les diagrammes UML
S. Mesfar 81
Autres types de messages
Dans un diagramme de séquence, il peut y avoir
d’autres types de messages tels que:
Le diagramme de séquence
Les diagrammes UML
‱message minutĂ© (timeout) : Bloque l'expĂ©diteur pendant un
temps donnĂ© (qui peut ĂȘtre spĂ©cifiĂ© dans une contrainte), en
attendant la prise en compte du message par le récepteur.
L'expéditeur est libéré si la prise en compte n'a pas eu lieu
pendant le délai spécifié.
‱ message dĂ©robant : Le message est mis en attente dans une
liste d'attente de traitement chez le récepteur.
S. Mesfar 82
S. Mesfar 83
Le diagramme de séquence
Les diagrammes UML
Pseudo-code
L’ajout de pseudo-code sur la partie gauche du diagramme
permet la représentation des boucles et des branchements
alternatifs
ïżœ les diagrammes de sĂ©quence peuvent reprĂ©senter la forme
gĂ©nĂ©rale d’une interaction , au-delĂ  de la seule prise en
compte d’un scĂ©nario particulier
ïżœ
S. Mesfar 84
Le diagramme de séquence
Les diagrammes UML
Pseudo-code
ïżœ
Diagramme de séquences :
Fragment d’interaction ou fragments combinĂ©s
Un fragment d’interaction se reprĂ©sente globalement
comme un diagramme de séquence dans un rectangle avec
indication dans le coin Ă  gauche du nom du fragment.
Un port d’entrĂ©e et un port de sortie peuvent ĂȘtre indiquĂ©s
pour connaĂźtre la maniĂšre dont ce fragment peut ĂȘtre reliĂ© au
reste du diagramme. Dans le cas oĂč aucun port n’est indiquĂ©
c’est l’ensemble du fragment qui est appelĂ© pour exĂ©cution
Le diagramme de séquence
Les diagrammes UML
S. Mesfar 85
Fragment d’interaction
Le diagramme de séquence
Les diagrammes UML
S. Mesfar 86
Un fragment d’interaction dit combinĂ© correspond Ă 
un ensemble d’interactions auquel on applique un
opérateur.
Un frag combinĂ© se reprĂ©sente globalement comme un
diagramme de séquence avec indication dans le coin à
gauche du nom de l’opĂ©rateur.
13 opĂ©rateurs ont Ă©tĂ© dĂ©finis dans UML : alt, opt, loop,
par, strict/weak, break, ignore/consider, critical, negative,
assertion et ref.
Fragment d’interaction
Le diagramme de séquence
Les diagrammes UML
S. Mesfar 87
L’opĂ©rateur alt :
correspond Ă  une instruction de test avec une ou plusieurs alternatives
possibles. Il est aussi permis d’utiliser les clauses de type sinon.
Fragment d’interaction
Le diagramme de séquence
Les diagrammes UML
S. Mesfar 88
L’opĂ©rateur opt :
L’opĂ©rateur opt (optional) correspond Ă  une instruction de test sans
alternative (sinon).
Fragment d’interaction
Le diagramme de séquence
Les diagrammes UML
S. Mesfar 89
L’opĂ©rateur loop
correspond Ă  une instruction de boucle qui permet d’exĂ©cuter une
sĂ©quence d’interaction tant qu’une condition est satisfaite.
Il est possible aussi d’utiliser une condition portant sur un nombre
minimum et maximum d’exĂ©cution de la boucle en Ă©crivant : loop min,
max. Dans ce cas, la boucle s’exĂ©cutera au minimum min fois et au
maximum max fois
Fragment d’interaction
Le diagramme de séquence
Les diagrammes UML
S. Mesfar 90
L’opĂ©rateur par
L’opĂ©rateur par (parallĂšle) permet de reprĂ©senter deux sĂ©ries d’interactions
qui se déroulent en parallÚle.
Fragment d’interaction
Le diagramme de séquence
Les diagrammes UML
S. Mesfar 91
Les opĂ©rateurs strict et weak sequencing
Les opérateurs strict et weak permettent de représenter une série
d’interactions dont certaines s’opĂšrent sur des objets indĂ©pendants :
ïżœ L’opĂ©rateur strict est utilisĂ© quand l’ordre d’exĂ©cution des opĂ©rations
doit ĂȘtre strictement respectĂ©.
ïżœ L’opĂ©rateur weak est utilisĂ© quand l’ordre d’exĂ©cution des opĂ©rations
n’a pas d’importance.
Fragment d’interaction
Le diagramme de séquence
Les diagrammes UML
S. Mesfar 92
Les opĂ©rateurs strict et weak sequencing
Fragment d’interaction
Le diagramme de séquence
Les diagrammes UML
S. Mesfar 93
Les opĂ©rateurs break
L’opĂ©rateur break permet de reprĂ©senter une situation exceptionnelle
correspondante à un scénario de rupture par rapport au scénario général. Le
scĂ©nario de rupture s’exĂ©cute si la condition de garde est satisfaite.
Fragment d’interaction
Le diagramme de séquence
Les diagrammes UML
S. Mesfar 94
Les opĂ©rateurs ignore et consider
Les opérateurs ignore et consider sont utilisés pour des fragments
d’interactions dans lesquels on veut montrer que certains messages peuvent
ĂȘtre soit absents sans avoir d’incidence sur le dĂ©roulement des interactions
(ignore), soit obligatoirement présents (consider).
Fragment d’interaction
Le diagramme de séquence
Les diagrammes UML
S. Mesfar 95
Les opĂ©rateurs ignore et consider
Fragment d’interaction
Le diagramme de séquence
Les diagrammes UML
S. Mesfar 96
Les opĂ©rateurs critical
L’opĂ©rateur critical permet d’indiquer qu’une sĂ©quence d’interactions
ne peut ĂȘtre interrompue compte tenu du caractĂšre critique des
opérations traitées.
On considĂšre que le traitement des interactions comprises dans la
séquence critique est atomique.
Fragment d’interaction
Le diagramme de séquence
Les diagrammes UML
S. Mesfar 97
L’opĂ©rateur critical
Fragment d’interaction
Le diagramme de séquence
Les diagrammes UML
S. Mesfar 98
Les opĂ©rateurs neg
L’opĂ©rateur neg (negative) permet d’indiquer qu’une sĂ©quence d’interactions
est invalide.
Fragment d’interaction
Le diagramme de séquence
Les diagrammes UML
S. Mesfar 99
Les opĂ©rateurs assert
L’opĂ©rateur assert (assertion) permet d’indiquer qu’une sĂ©quence
d’interactions est l’unique sĂ©quence possible en considĂ©rant les messages
échangés dans le fragment.
Toute autre configuration de message est invalide.
Fragment d’interaction
Le diagramme de séquence
Les diagrammes UML
S. Mesfar 100
Les opĂ©rateurs ref
L’opĂ©rateur ref permet d’appeler une sĂ©quence d’interactions dĂ©crite par
ailleurs constituant ainsi une sorte de sous-diagramme de séquence.
Fragment d’interaction
Le diagramme de séquence
Les diagrammes UML
S. Mesfar 101
102
3.3. Les diagrammes
d'activités
Digramme d'activités
UML permet de représenter graphiquement le comportement d'une
méthode ou le déroulement d'un cas d'utilisation, à l'aide de
diagrammes d'activités (une variante des diagrammes d'états-
transitions).
‱ Une activitĂ© reprĂ©sente une exĂ©cution d'un mĂ©canisme, un
déroulement d'étapes séquentielles.
‱ Le passage d'une activitĂ© vers une autre est matĂ©rialisĂ© par une
transition.
‱ Les transitions sont dĂ©clenchĂ©es par la fin d'une activitĂ© et
provoquent le début immédiat d'une autre (elles sont
automatiques).
Le diagramme d'activités
Les diagrammes UML
Digramme d'activités
En thĂ©orie, tous les mĂ©canismes dynamiques pourraient ĂȘtre
décrits par un diagramme d'activités, mais seuls les mécanismes
complexes ou intĂ©ressants mĂ©ritent d'ĂȘtre reprĂ©sentĂ©s.
‱ Buts :
1. DĂ©crire le comportement gĂ©nĂ©rique d’un cas d’utilisation
2. DĂ©crire en dĂ©tail le comportement d’une opĂ©ration
3. Modéliser les processus métiers
Le diagramme d'activités
Les diagrammes UML
Le diagramme d’activitĂ©s est organisĂ©e par rapport aux
actions et destinĂ©e Ă  reprĂ©senter le comportement interne d’une
opĂ©ration ou d’un cas d ’utilisation.
Mesurer température
Chauffer Refroidir
AĂ©rerArrĂȘter chauffage
[trop froid] [trop chaud]
« synchronisation »
Le diagramme d'activités
Les diagrammes UML
‱ Exemple de Diagramme d'activitĂ©s :
Le diagramme d'activités
Les diagrammes UML
Le but du diagramme d'activités
‱ Diagramme d'activitĂ©s est utilisĂ© pour:
– ModĂ©liser un workflow dans un use case ou entre
plusieurs use cases.
– SpĂ©cifier une opĂ©ration (dĂ©crire la logique d’une
opération)
‱ Le diagramme d'activitĂ©s est le plus appropriĂ©
pour modĂ©liser la dynamique d’une tĂąche, d’un
use case lorsque le diagramme de classe n’est
pas encore stabilisé.
Le diagramme d'activités
Les diagrammes UML
Notion du diagramme d'activités
Diagramme d'activités =
‱ ensemble d'activitĂ©s liĂ©s par:
– Transition (sequentielle)
– Transitions alternatives (conditionnelle)
– Synchronisation (disjonction et conjonctions
d'activités)
– ItĂ©ration
‱ + 2 Ă©tats: Ă©tat de dĂ©part et Ă©tat de terminaison
‱ Swimlanes: reprĂ©sente le lieu, le responsable des
activités.
Le diagramme d'activités
Les diagrammes UML
Notion du diagramme d'activités
‱Etat de dĂ©part
‱Etat de terminaison
‱Transition
‱Transition Alternative
[ ] [ ]
Le diagramme d'activités
Les diagrammes UML
Notion du diagramme d'activités
Synchronisation disjonctive et
conjonctive
Le diagramme d'activités
Les diagrammes UML
Notion du diagramme d'activités
Itération
Le diagramme d'activités
Les diagrammes UML
Exemple de Diagramme d'activités :
Swimlanes / partitions
Ou couloirs d’activitĂ©s
Le diagramme d'activités
Les diagrammes UML
Le diagramme d'activités
Les diagrammes UML
Exemple de Diagramme d'activités :
Les nƓuds de contrîle
‱ Il existe plusieurs types de nƓuds de contrîle:
– nƓud initial(initial node);
– nƓud de fin d'activitĂ©s(final node);
– nƓud de dĂ©cision(decision node);
– nƓud de fusion(merge node);
– nƓud de bifurcation(fork node);
– nƓud d’union(join node).
Le diagramme d'activités
Les diagrammes UML
Le diagramme d'activités
Les diagrammes UML
diagramme d'activités
‱ Partitions /
swimlanes
ou couloirs
d’activitĂ©s
Le diagramme d'activités
Les diagrammes UML
117
Chap 4 :
Analyse statique
118
Analyse statique
L’analyse statique permet de reprĂ©senter l’ensemble des
classes, d’interfaces et de paquetages ainsi que leurs
relations.
‱ Une classe dĂ©crit un ensemble d’objets (instances de la
classe).
‱ Une association dĂ©crit un ensemble de liens (instances
de l’association).
119
4.1. Les diagrammes de
classes d’analyse
120
Le diagramme de classes
Les diagrammes UML
Utilisation
‱ Lors de l’analyse et de la conception:
– DĂ©finitions formelles des objets qui composent le systĂšme Ă  partir des
cas d’utilisation et des diagrammes d’interaction (sĂ©quence ou
collaboration).
– Bases conceptuelles pour les diagrammes d’état-transition, de
déploiement, ...
‱ Lors de l’implĂ©mentation :
– GĂ©nĂ©ration automatique des structures statiques du systĂšme (classes,
relations, ...).
121
Le diagramme de classes
Les diagrammes UML
ïżœLe plus important de la modĂ©lisation O.O.
ïżœLe seul obligatoire lors d’une telle modĂ©lisation
ïżœ fournit une reprĂ©sentation abstraite des objets du systĂšme qui vont
interagir ensemble pour rĂ©aliser les cas d’utilisation
ïżœVue statique : les Ă©lĂ©ments principaux sont : les classes et leurs relations
122
Le diagramme de classes
Les diagrammes UML
Notion de classe
DĂ©finition :
Une classe est une description d’un ensemble d’objets ayant une
sémantique, des attributs, des méthodes et des relations en commun.
Un objet est une instance d’une classe.
Objet de type VoitureClasse
‱ Une classe est une description abstraite d’un ensemble
d’objets ayant :
– des propriĂ©tĂ©s similaires,
– un comportement commun,
– des relations communes avec d’autres objets
– des sĂ©mantiques communes
‱ Chaque classe possùde :
– une composante «statique» : attributs ou champs possĂ©dant une valeur
– une composante «dynamique» :
méthodes qui représentent le
comportement commun des
objets de la classe
Liste des attributs
Liste des méthodes
Nom de la classe
123S. Mesfar
Le diagramme de classes : Qu’est ce qu’une classe ?
Les diagrammes UML
124
Le diagramme de classes
Les diagrammes UML
Notion de classe
Attribut = propriĂ©tĂ© nommĂ©e d ’une classe
la portĂ©e standard d’un attribut est limitĂ© Ă  un objet
‱ Syntaxe
– visibilitĂ© nom : type = valeur initiale
‱ VisibilitĂ©
– + public : propriĂ©tĂ© ou classe visible partout
– # protĂ©gĂ© : propriĂ©tĂ© ou classe visible dans la classe et par tous ses descendants
– - privĂ© : propriĂ©tĂ© ou classe visible uniquement dans la classe
– ~ package : propriĂ©tĂ© ou classe visible uniquement dans le paquetage oĂč la
classe est définie
‱ Attribut de classe
– quand cette portĂ©e s’applique Ă  la classe elle mĂȘme, on parle d’attribut de classe
(représenté par le symbole $ ou souligné)
‱ Attribut dĂ©rivĂ©
– attribut qui peut ĂȘtre dĂ©duit d’un ou plusieurs autres attributs (reprĂ©sentĂ© par le
symbole /)
125
Le diagramme de classes
Les diagrammes UML
Notion de classe
MĂ©thode = service que l’on peut demander Ă  un objet pour rĂ©aliser un
comportement
‱ Syntaxe
– visibilitĂ© nom (paramĂštres) : type retour
‱ MĂȘmes notions que l’attribut
– visibilitĂ©
– mĂ©thode de classe
126
Le diagramme de classes
Les diagrammes UML
Notion de classe
Notation ComplĂšte
Visibilité
Static
Dérivé
ParamĂštre
Retour
Initialisation
Nom de la Classe
Fenetre
+ taille : Rectangle = 100,100
- visible : Boolean = true
couleur : Color = blue
#$ tailleMax : Rectangle
#$ tailleMin : Rectangle
/#$ tailleMoyenne : Rectangle
+ afficher() : Position
+ cacher()
# setTaille(taille : Rectangle)
}
}Attributs
MĂ©thodes
‱ Un diagramme de classes reprĂ©sente la structure du
systĂšme sous la forme de classes et de relations entre ces
classes
‱ Un diagramme d’objets illustre les objets et les liens qui
les unissent
127S. Mesfar
Le diagramme de classes et le diagramme d’objets
Les diagrammes UML
Le concept d’encapsulation
‱ L'encapsulation est un mĂ©canisme consistant Ă  rassembler les donnĂ©es
et les méthodes au sein d'une structure en cachant l'implémentation de
l'objet c-Ă -d en empĂȘchant l'accĂšs aux donnĂ©es par un autre moyen que
les mĂ©thodes proposĂ©s pour la manipulation de l’objet.
ïżœ L'encapsulation permet donc de garantir l'intĂ©gritĂ© des donnĂ©es
contenues dans l'objet.
‱ L'encapsulation permet de dĂ©finir des niveaux de visibilitĂ© des
éléments de la classe. Ces niveaux de visibilité définissent les droits
d'accÚs aux données selon que l'on y accÚde par une méthode de la
classe elle-mĂȘme, d'une classe hĂ©ritiĂšre, ou bien d'une classe
quelconque.
S. Mesfar 128
Le diagramme de classes
Les diagrammes UML
Le concept d’encapsulation
– Quatre niveaux de protection :
‱ Public (+) : accĂšs Ă  partir de toute entitĂ© interne ou
externe Ă  la classe
‱ ProtĂ©gĂ© (#) : accĂšs Ă  partir de la classe ou des sous-
classes
‱ PrivĂ© (-) : accĂšs Ă  partir des opĂ©rations de la classe
‱ Package (~ ou rien) : accĂšs Ă  partir des classes du mĂȘme
package
129S. Mesfar
Le diagramme de classes
Les diagrammes UML
S. Mesfar 130
HĂ©ritage
‱ HĂ©ritage
– MĂ©canisme de transmission des propriĂ©tĂ©s (attributs, comportement)
d’une classe vers ses sous classes
– Ce qui est gĂ©nĂ©rique est dĂ©fini au niveau de la super-classe, ce qui est
spécifique est défini au niveau de la sous-classes
‱ GĂ©nĂ©ralisation/spĂ©cialisation
– GĂ©nĂ©ralisation : mise en commun des propriĂ©tĂ©s communes entre
différentes classes dans une super-classe.
– SpĂ©cialisation : crĂ©ation d’une sous-classe par mise en avant de
propriétés spécifiques non communes à toutes les classes de la super-
classe
Le diagramme de classes
Les diagrammes UML
S. Mesfar 131
HĂ©ritage : exemple
Généralisation
Spécialisation
personne
Ă©tudiantpersonnel
EnseignantAdministratif
Le diagramme de classes
Les diagrammes UML
Exemple d’hĂ©ritage
132S. Mesfar
Le diagramme de classes
Les diagrammes UML
S. Mesfar 133
HĂ©ritage multiple
ïżœ une classe peut hĂ©riter des propriĂ©tĂ©s de plusieurs
super-classes
personne
Ă©tudiantpersonnel
EnseignantAdministratif
Doctorant
Le diagramme de classes
Les diagrammes UML
Exemple d’hĂ©ritage multiple
134S. Mesfar
Le diagramme de classes
Les diagrammes UML
Contraintes de généralisation
‱ Une classe peut ĂȘtre spĂ©cialisĂ©e selon plusieurs critĂšres
‱ Certaines contraintes peuvent ĂȘtre posĂ©es sur les relations de
généralisation
‱ Par dĂ©faut, la gĂ©nĂ©ralisation symbolise une dĂ©composition
exclusive
135S. Mesfar
Le diagramme de classes
Les diagrammes UML
Contraintes de généralisation
{disjoint} ( = { exclusif } )
‱ La contrainte {Disjoint} (ou
{exclusif}) indique la
participation exclusive d’un objet
à l’une des collections
spécialisées
136S. Mesfar
Le diagramme de classes
Les diagrammes UML
Contraintes de généralisation
{chevauchement} (={ inclusif })
‱ La contrainte
{chevauchement} (ou
{inclusif}) indique la
participation possible d’un
objet Ă  plusieurs collections
spécialisées
137S. Mesfar
Le diagramme de classes
Les diagrammes UML
Contraintes de généralisation
{Complùte} ≠ {Incomplùte}
‱ La contrainte {ComplĂšte} indique la gĂ©nĂ©ralisation est
terminée : tout ajout de sous-classe est alors impossible
‱ à l’inverse, la contrainte {Incomplùte} indique une
généralisation extensible
138S. Mesfar
Le diagramme de classes
Les diagrammes UML
Le polymorphisme
‱ Alors que l'hĂ©ritage concerne les classes (et leur hiĂ©rarchie), le
polymorphisme est relatif aux méthodes des objets.
‱ On distingue gĂ©nĂ©ralement trois types de polymorphisme :
1. Le polymorphisme ad hoc (également appelé surcharge) : permet de définir
des opérateurs dont l'utilisation sera différente selon le type des paramÚtres qui
leur sont passĂ©s ïżœ par exemple, il est possible de surcharger l'opĂ©rateur + et de
lui faire réaliser des actions différentes selon qu'il s'agit d'une opération entre
deux entiers (addition) ou entre deux chaßnes de caractÚres (concaténation)
2. Le polymorphisme paramétrique (également appelé généricité) : représente la
possibilitĂ© de dĂ©finir plusieurs fonctions de mĂȘme nom mais possĂ©dant des
paramĂštres diffĂ©rents (en nombre et/ou en type) ïżœ Il rend ainsi possible le choix
automatique de la bonne méthode à adopter en fonction du type de donnée
passée en paramÚtre
S. Mesfar 139
Le diagramme de classes
Les diagrammes UML
Le polymorphisme
3. Le polymorphisme d'héritage (également appelé redéfinition) :
représente la possibilité de redéfinir une méthode dans des classes héritant
d'une classe de base. Il est alors possible d'appeler la méthode d'un objet
sans se soucier de son type intrinsĂšque ïżœ faire abstraction des dĂ©tails des
classes spécialisées d'une famille d'objet, en les masquant par une interface
commune (qui est la classe de base).
– Par exemple, un jeu d'Ă©chec comporte plusieurs objets roi, reine, fou, cavalier,
tour, pion, héritant chacun de l'objet piÚce.
La mĂ©thode mouvement() pourra, grĂące au polymorphisme d'hĂ©ritage, d’effectuer
le mouvement approprié en fonction de la classe de l'objet référencé au moment de
l'appel. Cela permettra notamment au programme d’appeler piùce.mouvement()
sans avoir à se préoccuper de la classe de la piÚce.
S. Mesfar 140
Le diagramme de classes
Les diagrammes UML
Exemple de polymorphisme d’hĂ©ritage
S. Mesfar 141
Le diagramme de classes
Les diagrammes UML
‱ Une association reprĂ©sente une relation entre les classes
d’objets
Classe A Classe B
Société Personne
Voiture Personne
Classe A
142S. Mesfar
Le diagramme de classes : Les associations
Les diagrammes UML
‱ Une association qui contient des attributs et
qui ne participe pas Ă  des relations avec
d’autres classe est appelĂ©e classe attribuĂ©e.
Classe A Classe B
Classe C
Attributs
143S. Mesfar
Le diagramme de classes : Les associations
Les diagrammes UML
‱ Une association ternaire entre salle, Ă©tudiant et enseignant est
réifiée comme une classe cours ayant deux attributs : début et fin
Enseignant
Salle
Classe
Cours
DĂ©but
Fin
144S. Mesfar
Le diagramme de classes : Les associations
Les diagrammes UML
‱ GĂ©nĂ©ralement, on note les associations par une forme verbale, soit
active, soit passive
Classe A Classe B
Société Personne
Voiture Personne
Forme
verbale
< travaille pour
Est la
propriÚté de > 145
S. Mesfar
Le diagramme de classes : Les associations
Les diagrammes UML
Nommage des rĂŽles
‱ Toute association binaire possùde 2 rîles
‱ un rĂŽle dĂ©finit la maniĂšre dont une classe intervient dans une
relation
‱ Le nommage des associations et le nommage des rîles ne sont
pas exclusifs l’un de l’autre
‱ IntĂ©rĂȘt des rĂŽles dans le cas oĂč plusieurs associations lient deux
classes : distinction des concepts attachés aux associations
Société Personne< travaille pour
employeur employé
Avion PersonnePilote
Passagers
146S. Mesfar
Le diagramme de classes : Les associations
Les diagrammes UML
Association réflexive
‱ Nommage des rĂŽles indispensable Ă  la clartĂ© du
diagramme
Personne
Enfants
Parents 2
*
147S. Mesfar
Le diagramme de classes : Les associations
Les diagrammes UML
Multiplicité des associations
‱ La multiplicitĂ© est une information portĂ©e par le rĂŽle, qui
quantifie le nombre de fois oĂč un objet participe Ă  une instance
de relation
‱ MultiplicitĂ© = indique le nombre d’instances d’une classe qui
peut ĂȘtre mise en relation avec une seul instance de la classe
associée
– 1 : obligatoire
– 0..1 : optionnel
– 0..* ou * : quelconque
– 1..* : au moins 1
– 1..5, 10 : entre 1 et 5, ou 10
148S. Mesfar
Le diagramme de classes : Les associations
Les diagrammes UML
Multiplicité des associations
‱ 1 : Chaque personne travaille pour une et une seule sociĂ©tĂ©
(toutes les personnes ont un emploi)
‱ 0 .. * : Une sociĂ©tĂ© emploie de zĂ©ro Ă  plusieurs personnes
Société Personne< travaille pour
employeur employé
1 0..*
149S. Mesfar
Le diagramme de classes : Les associations
Les diagrammes UML
Contraintes sur les associations
‱ Contrainte d’association : porte sur une relation ou sur un groupe de
relations (notée {contrainte })
‱ Par exemple, placĂ©e sur un rĂŽle, la contrainte {ordonnĂ©e} dĂ©finit
une relation d’ordre entre les objets de la collection (les comptes)
qui sont liés à une personne
Personne ComptePropriétaire
{ordonnée}1
0..n
150S. Mesfar
Le diagramme de classes : Les associations
Les diagrammes UML
Contraintes sur les associations
‱ La contrainte {sous-ensemble} indique qu’une collection est incluse
dans une autre collection
‱ La contrainte {Ou-exclusif} prĂ©cise que, pour un objet donnĂ©, une
seule association parmi un groupe d’associations est valide
Classe Personne
Université Personne
{Sous ensemble}
Parents d’élĂšve
Délégués
*
*
{OU-exclusif}
Enseignants
Étudiants
*
* 151
S. Mesfar
Le diagramme de classes : Les associations
Les diagrammes UML
Restriction des associations
‱ La restriction (dite qualification en UML) d’une association
consiste Ă  sĂ©lectionner un sous-ensemble d’objets parmi
l’ensemble des objets qui participent Ă  une association rĂ©alisĂ©e
au moyen d’une clĂ©, ensemble d’attributs particuliers.
‱ Un objet qualifiĂ© et une valeur de qualificatif gĂ©nĂšrent un objet
cible lié unique
152S. Mesfar
Le diagramme de classes : Les associations
Les diagrammes UML
Association particuliÚre : Agrégation
‱ Une agrĂ©gation est une association non symĂ©trique : l’une des extrĂ©mitĂ©s
joue un rĂŽle prĂ©dominant par rapport Ă  l’autre
‱ Elle se justifie lorsque une classe B « fait partie » intĂ©grante d’une
classe A.
‱ Exemple:
153S. Mesfar
Livre MotChapitre
1..* 1..*1..* 1..*
Le diagramme de classes : Les associations
Les diagrammes UML
Agrégation particuliÚre : Composition
‱ La composition est une forme particuliĂšre d’agrĂ©gation
‱ Le composant est « physiquement » contenu dans l’agrĂ©gat
‱ La composition implique une contrainte sur la valeur de la
multiplicitĂ© du cotĂ© de l’agrĂ©gat : (0 ou 1)
154S. Mesfar
Le diagramme de classes : Les associations
Les diagrammes UML
Agrégation particuliÚre : Composition
‱ La composition peut ĂȘtre modĂ©lisĂ©e au moyen d’attributs
‱ La notation par composition doit ĂȘtre retenue lorsque d’un
attribut participe Ă  des relations
155S. Mesfar
Le diagramme de classes : Les associations
Les diagrammes UML
156
Composition
Le diagramme de classes : Les associations
Les diagrammes UML
157
Le diagramme de classes : Les associations
Les diagrammes UML
Une Université contient au moins
un département.
Des départements peuvent avoir
différents professeurs.
Détruire une université détruit
ses départements,
mais en aucun cas ne met fin Ă  la
vie des professeurs.
En C++ :
class Professeur;
class Departement { ...
private: // Agrégation
Professeur* enseignants[5]; .
.. };
class Universite { ...
private: // Composition
Departement facultes[20];
... };
158
4.2. Les diagrammes
d’objets
Un diagramme de d’objets :
‱ ReprĂ©sente les liens structurels entre instances de classes
‱ Facilite la comprĂ©hension de structures complexes
‱ Trois reprĂ©sentations possibles des instances :
159S. Mesfar
Le diagramme d’objets
Les diagrammes UML
‱ les valeurs des attributs sont optionnelles ainsi que les liens
entre objets
160S. Mesfar
Le diagramme d’objets
Les diagrammes UML
Diagramme d’objets : liens entre objets
‱ Les liens des associations rĂ©flexives peuvent relier
un objet Ă  lui mĂȘme
161S. Mesfar
Le diagramme d’objets
Les diagrammes UML
Diagramme d’objets : liens entre objets
‱ Les liens d’aritĂ© supĂ©rieure Ă  2 ou la multiplicitĂ© peuvent
ĂȘtre reprĂ©sentĂ©s :
162S. Mesfar
Le diagramme d’objets
Les diagrammes UML
Diagramme d’objets : liens entre objets
‱ Les objets composĂ©s de sous-objets peuvent ĂȘtre visualisĂ©s :
‱ Les objets composites sont instances de classes composites :
163S. Mesfar
Le diagramme d’objets
Les diagrammes UML
Diagramme d’objets : structures complexes
‱ Les diagrammes d’objets facilitent la comprĂ©hension et
l’élaboration d’un diagramme de classes :
164S. Mesfar
Le diagramme d’objets
Les diagrammes UML
165
Chap 5 :
La conception
Rappel des concepts de base
‱ Classe
– attribut
– mĂ©thode
‱ Association
– rîle
– cardinalitĂ©
– AgrĂ©g./Comp./Associative/QualifiĂ©e
o1
o2
o1
o2
o3
o4
o5
o1
o2
o3
ïź Objet ïź Lien ïź Inclusion
ensembliste
ïź HĂ©ritage
M1
M0
La conception
Les diagrammes UML
De quoi parle-t-on ?
Analyse
Objets du
monde
réel
Objets
du
logiciel
Algorithme
du monde réel
(scénario)
Comment ‘logique’ ?
Conception
Objets
du
langage
Algorithme
du logiciel
(scénario)
Comment ‘physique’ ?
Code
ModĂšle conceptuel ModĂšle logique ModĂšle physique
La conception
Les diagrammes UML
‱ Deux niveaux de conception :
– Logique : indĂ©pendante de l’environnement de
réalisation.
– Physique : liĂ©e Ă  des particularitĂ©s des langages de
programmation ou de l’environnement d’exĂ©cution
168
La conception
Les diagrammes UML
169
ïżœ Un des principaux soucis de l’activitĂ© de conception est de dĂ©velopper un design
qui facilite l’ajustement du systùme aux changements.
Pendant la conception:
ïŹ Importante qualitĂ© logicielle en jeu ïżœ Ă©volutivitĂ©
ïŹ anticipation du changement ïżœ Modularisation
La phase de conception vise Ă  :
 dĂ©terminer quels seront les composants du logiciel Ă  dĂ©velopper,
 prĂ©ciser les caractĂ©ristiques de ces composants,
 concevoir les algorithmes permettant Ă  ces composants d’effectuer
les activités dont ils sont responsables.
La conception
Les diagrammes UML
170
5.1. Les diagrammes de
package
Chapitre 9: Architecture et conception de logiciel
171
Différentes façons de subdiviser un
systĂšme
– Un systĂšme distribuĂ© est divisĂ© en clients et serveurs
– Un systĂšme est divisĂ© en sous-systĂšmes
– Un sous-systĂšme peut ĂȘtre subdivisĂ© en paquetages
– Un paquetage est composĂ© de classes
– Une classe est composĂ©e de mĂ©thodes
Le diagramme de package
Les diagrammes UML
Packages
Le diagramme de package
Les diagrammes UML
Soit le cas ’’RĂ©servation de vols dans une agence de voyages’’
1° Des compagnies aériennes proposent différents vols.
2° Un vol est ouvert à la réservation et fermé sur ordre de la compagnie.
3° Un client peut réserver un ou plusieurs vols, pour des passagers différents.
4° Une réservation concerne un seul vol, et un seul passager.
5° Une rĂ©servation peut ĂȘtre annulĂ©e ou confirmĂ©e.
6° Un vol a un aĂ©roport de dĂ©part et un aĂ©roport d’arrivĂ©e.
7° Un vol a un jour et une heure de dĂ©part et un jour et une heure d’arrivĂ©e.
8° Un vol peut comporter des escales dans des aéroports
9° Une escale a une heure d’arrivĂ©e et une heure de dĂ©part.
10° Chaque aéroport dessert une ou plusieurs villes
Le diagramme de package – Etude de cas
Les diagrammes UML
CompagnieAerienne VolPropose
1..*
ïżœ ModĂ©lisation de la phrase :
1° Des compagnies aériennes proposent différents vols.
CompagnieAerienne et Vols sont 2 objets métiers : 2 classes
‱ Un vol est rĂ©alisĂ© par une seule compagnie mais partagĂ© par plusieurs affrĂ©teurs
CompagnieAerienne VolPropose
1..*
affréteur
1..*
Le diagramme de package – Etude de cas
Les diagrammes UML
ïżœ ModĂ©lisation de la phrase :
2° Un vol est ouvert à la réservation et fermé sur ordre de la compagnie.
ïżœ Tout objet peut avoir un Ă©tat (diagramme d’états).
ïżœ Dans un diagramme de classes tout concept dynamique est modĂ©lisĂ© en opĂ©ration.
ïżœ Il faut reprĂ©senter la 2° phrase par 2 opĂ©rations : ouvrirReservation( ) et fermerReservation( )
ïżœ Dans quelle classe ? ResponsabilitĂ© d’une classe
CompagnieAerienne Propose
1..*
affréteur
1..*
Vol
état (ouvert, fermé)
CompagnieAerienne Propose
1..*
affréteur
1..*
Vol
ouvrirVol( )
fermerVol( )
ïżœ Les opĂ©rations sont dĂ©clarĂ©es dans l’objet dans lequel elles doivent s’exĂ©cuter
ïżœ Les autres pourront dĂ©clencher ces opĂ©rations par envoi de messages
ïżœ Le classe CompagnieAerienne a une association avec la classe vol.
Le diagramme de package – Etude de cas
Les diagrammes UML
ïżœ ModĂ©lisation des phrases :
7° Un vol a un jour et une heure de dĂ©part et un jour et une heure d’arrivĂ©e.
ïżœ Les dates et les heures de dĂ©part et d’arrivĂ©e ne reprĂ©sentent que des valeurs : attributs.
CompagnieAerienne Propose
1..*
affréteur
1..*
Vol
ouvrirVol( )
fermerVol( )
dateDepart
heureDepart
dateArrivee
heureArrivee
ïżœ Pour savoir si un Ă©lĂ©ment doit ĂȘtre reprĂ©sentĂ© en attribut ou en objet :
ïżœ S’il n’ y a que sa valeur qui est intĂ©ressante : c’est plutĂŽt un attribut.
ïżœ Si plusieurs questions peuvent concerner l’élĂ©ment, alors il faut le reprĂ©senter en objet.
Le diagramme de package – Etude de cas
Les diagrammes UML
ïżœ ModĂ©lisation des phrases :
6° Un vol a un aĂ©roport de dĂ©part et un aĂ©roport d’arrivĂ©e.
ïżœ ModĂ©lisation peu parlante.
ïżœ Par quoi peut-on reprĂ©senter l’élĂ©ment ‘’AĂ©roport’’ ?
3 réponses sont envisageables :
1. Soit avec une classe et une association de multiplicité 2
{ ordered}
2
Vol
ouvrirVol( )
fermerVol( )
dateDepart
heureDepart
dateArrivee
heureArrivee
aeroportDepart
aeroportArivvee
AĂ©roport
nom
Le diagramme de package – Etude de cas
Les diagrammes UML
ïżœ ModĂ©lisation des phrases :
6° Un vol a un aĂ©roport de dĂ©part et un aĂ©roport d’arrivĂ©e.
ïżœ ModĂ©lisation non correcte. Tout aĂ©roport peut ĂȘtre de dĂ©part et d’arrivĂ©e.
2. Soit avec 2 classes
1
Vols
ouvrirReservation()
fermerReservation()
dateDepart
heureDepart
dateArrivee
heureArrivee
aeroportDepartr
aeroportArivvee
AĂ©roport
nom
AeroportDepart
AeroportArrivee1
Le diagramme de package – Etude de cas
Les diagrammes UML
ïżœ ModĂ©lisation des phrases :
6° Un vol a un aĂ©roport de dĂ©part et un aĂ©roport d’arrivĂ©e.
ïżœ Le rĂŽle de chaque association prĂ©cise son sens.
2. Soit avec 2 associations
1
Vol
ouvrirVol( )
fermerVol( )
dateDepart
heureDepart
dateArrivee
heureArrivee
AĂ©roport
Nom


1
DĂ©part
Arrivée
Le diagramme de package – Etude de cas
Les diagrammes UML
ïżœ ModĂ©lisation des phrases :
10° Chaque aéroport dessert une ou plusieurs villes
AĂ©roport dessert
1..*
Ville
0..*
ïżœ Si on considĂšre que desservir une ville signifie l’aĂ©roport le plus proche, il n’ en y a qu’un : la
multiplicité est de 1
ïżœ Si on considĂšre que desservir une ville signifie les aĂ©roports dans un rayon de 35 km : la
multiplicité est de 0..*
ïżœ On ne peut pas savoir la multiplicitĂ© de ‘’AĂ©roport’’
Le diagramme de package – Etude de cas
Les diagrammes UML
ïżœ ModĂ©lisation des phrases :
8° Un vol peut comporter des escales dans des aéroports
9° Une escale a une heure d’arrivĂ©e et une heure de dĂ©part.
Vol
ouvrirVol( )
fermerVol( )
dateDepart
heureDepart
dateArrivee
heureArrivee
AĂ©roport
nom1
1
Depart
Arrivee
Escale
heureArrivee
heureDepart
0..*
ïżœ Une escale a les propriĂ©tĂ©s heure d’arrivĂ©e et heure de dĂ©part, c’est donc un objet.
ïżœ Quelles sont alors les multiplicitĂ©s entre ‘’Vols’’ et
‘’Escale’’, entre ‘’Escale’’ et ‘’Aeroport’’ et entre
‘’Aeroport’’ et ’Vols’’ ?
0..*
0..*
1
1
0..*
Le diagramme de package – Etude de cas
Les diagrammes UML
ïżœ ModĂ©lisation des phrases :
8° Un vol peut comporter des escales dans des aéroports
9° Une escale a une heure d’arrivĂ©e et une heure de dĂ©part.
ïżœ ‘’Escale’’ a peu d’informations propres. Elle n’est qu’une partie de ’’Vol’’ .
ïżœ On peut la reprĂ©senter comme une spĂ©cialisation de ’’AĂ©roport’’ . Mais elle n’est pas totalement un aĂ©roport.
ïżœ La meilleure solution serait de la modĂ©liser comme une classe d’association entre et ’Vols’’ et ‘’AĂ©roport’’.
Vol
ouvrirVol( )
fermerVol( )
dateDepart
heureDepart
dateArrivee
heureArrivee
AĂ©roport
nom
1
1
DĂ©part
Arrivée
Escale
heureArrivee
heureDepart
Escale
0..*0..*
0..*
0..*
{Ordered}
Le diagramme de package – Etude de cas
Les diagrammes UML
ïżœ ModĂ©lisation des phrases :
4° Une réservation concerne un seul vol, et un seul passager.
5° Une rĂ©servation peut ĂȘtre annulĂ©e ou confirmĂ©e.
ïżœ La rĂ©servation et le passager sont 2 concepts mĂ©tier : 2 classes d’objets
ïżœ Un rĂ©servation concerne un seul vol et un seul passager: donc 2 associations entre ‘’Vol’’ et ’’RĂ©servation’’ et entre
’’RĂ©servation’’ et ‘’Passager’’.
ïżœ La 5° phrase se traduit par l’ajout de 2 opĂ©rations annuler( ) et confirmer( ) dans ‘’Reservation’’.
Vol
ouvrirVol( )
fermerVol( )
dateDepart
heureDepart
dateArrivee
heureArrivee
Passager
1
1
concerne
RĂ©servation
Annuler( )
Confirmer( )
concerne
Le diagramme de package – Etude de cas
Les diagrammes UML
ïżœ ModĂ©lisation des phrases :
3° Un client peut réserver un ou plusieurs vols, pour des passagers différents.
ïżœ Il faut discerner un client d’un passager
a effectué
0..*
0..*
0..* Vol
Passager
1
1
concerne
RĂ©servation
Annuler( )
Confirmer( )
concerne
Client 1
Le diagramme de package – Etude de cas
Les diagrammes UML
ïżœ Le diagramme des classe complet est :
Vol
ouvrirVol( )
fermerVol( )
dateDepart
heureDepart
dateArrivee
heureArrivee
AĂ©roport
nom
1
1
départ
arrivée
InfosEscale
heureArrivee
heureDepart
escale
0..*0..*
0..*
0..*
{ordered}
Ville
0..*
Passager
1
concerne
RĂ©servation
Annuler( )
Confirmer( )
Client
a effectué
0..*
1
0..*
1
concerne
CompagnieAerinne
Propose
1..*
1..*
nom Prénom
adresse
téléphone
e-mail
nom
nom Prénom
nom
date
numéro
Le diagramme de package – Etude de cas
Les diagrammes UML
ïżœ Diagramme des classe complet et annotĂ©
InfosEscale
heureArrivee
heureDepart
Vol
ouvrirVol( )
fermerVol( )
dateDepart
heureDepart
dateArrivee
heureArrivee
AĂ©roport
nom
1
1
départ
arrivée
escale
0..*0..*
0..*
0..*
{ordered}
Ville
0..*
Passager
1
concerne
RĂ©servation
Annuler( )
Confirmer( )
Client
a effectué
0..*
1
0..*
1
concerne
Propose
0..1
1..*
nom Prénom
adresse
tél
e-mail
nom Prénom
nom
{frozen}
{frozen}
CompagnieAerinne
nom
numéro
date
numéro
Le diagramme de package – Etude de cas
Les diagrammes UML
ïżœ Le diagramme des classe complet devient :
InfosEscale
heureArrivée
heureDĂ©part
‘’ mĂ©taclasse ‘’
VolGenerique
ouvrirVol( )
fermerVol( )
jour
heureDĂ©part
heureArrivée
/durée
périodevalidité
AĂ©roport
nom
1
1
départ
arrivée
escale
0..*0..*
0..*
0..*
{ordered}
Ville
0..* 1
concerne
RĂ©servation
Annuler( )
Confirmer( )
Client
a effectué
0..*
1
0..*
1
concerne
Propose
0..1
1
nom Prénom
adresse
téléphone
e-mail
Passager
nom Prénom
nom
{frozen}
{frozen}
CompagnieAĂ©rienne
nom
numéro
date
numéro
Vol
ouvrirVol( )
fermerVol( )
dateDĂ©part
dateArrivée
{frozen}{AddOnly}
décrit
0..* 1
1..*
0..*
propose
Affréteur
Le diagramme de package – Etude de cas
Les diagrammes UML
ïżœ Le diagramme des classes peut ĂȘtre rĂ©organisĂ© en packages
InfosEscale
heureArrivee
heureDepart
‘’ metaclasse ‘’
VolGenerique
ouvrirVol( )
fermerVol( )
jour
heureDepart
heureArrivee
/durée
periodevalidite
AĂ©roport
nom
1
1
départ
arrivée
escale
0..*0..*
0..*
0..*
{ordered}
Ville
0..* 1
concerne
RĂ©servation
Annuler( )
Confirmer( )
Client
a effectué
0..*
1
0..*
1
concerne
Propose
0..1
1..*
nom Prénom
adresse
tééphonel
e-mail
Passager
nom Prénom
nom
{frozen}
{frozen}
CompagnieAerinne
nom
numéro
date
numero
Vol
ouvrirVol( )
fermerVol( )
dateDepart
dateArrivee
{frozen}{AddOnly}
décrit
0..* 1
1..*
0..*
propose
Affréteur
Le diagramme de package – Etude de cas
Les diagrammes UML
ïżœ RĂ©duire la dĂ©pendance mutuelle afin d’augmenter la modularitĂ© et
l’évolutivitĂ© d’une application
0..* 1
concerne
{frozen}
RĂ©servation
Annuler( )
Confirmer( )
date
numéro
RĂ©servations
Vol
ouvrirVol( )
fermerVol( )
dateDepart
dateArrivee
Vol
Le diagramme de package – Etude de cas
Les diagrammes UML
RĂ©servations
RĂ©servation
Annuler( )
Confirmer( )
Client
a effectué
0..*
1
0..*
1
concerne
nom Prénom
adresse
téléphone
e-mail
Passager
nom Prénom
{frozen}
date
numéro
Vol
InfosEscale
heureArrivee
heureDepart
‘’ metaclasse ‘’
VolGenerique
ouvrirVol( )
fermerVol( )
jour
heureDepart
heureArrivee
/durée
periodevalidite
AĂ©roport
nom
1
1
départ
arrivée
escale
0..*0..*
0..*
0..*
{ordered}
Ville
Propose
0..1
1
nom
CompagnieAerinne
nom
numéro
Vol
ouvrirVol( )
fermerVol( )
dateDepart
dateArrivee
{frozen}{AddOnly}
decrit
0..* 1
1..*
0..*
propose
Affréteur
0..* 1
concerne
{frozen}
Le diagramme de package – Etude de cas
Les diagrammes UML
Généralisation et réutilisation
ïżœ On veut Ă©largir ce domaine aux voyages par bus que des transporteurs assurent.
ïżœ Un voyage en bus Ă  une ville de dĂ©part et un ville d’arrivĂ©e avec des dates et des heures
associées.
ïżœ Un trajet peut comporter des arrĂȘts dans des villes intermĂ©diaires.
ïżœ Un client peut rĂ©server un ou plusieurs voyages pour un ou plusieurs passagers
VoyageEnBus
OuvrirVoyage( )
fermerVoyage( )
dateDepart
dateArrivee
VoyagesBus
ReservationsBus
ReservationBus
Annuler( )
Confirmer( )
date
numéro
0..* 1
concerne
{frozen}
Le diagramme de package – Etude de cas
Les diagrammes UML
concerne
VoyagesBus
InfosArret
heureArrivee
heureDepart
VoyageEnBus
ouvrirVoyage( )
fermerVoyage()
dateDepart
heureDepart
dateArrivee
heureArrivee
/durée
1
1
départ
arrivée
arrĂȘt
0..*0..*
0..*
0..*
{ordered}
Propose
0..1
1
Voyagiste
nom
référence
Ville
nom
ReservationsBus
0..*
1..*
concerne
Client
nom Prénom
adresse
téléphone
e-mail
Passager
nom Prénom
{frozen}
ReservationBus
Annuler( )
Confirmer( )
date
numéro
a effectué
0..*
1
{frozen}
Le diagramme de package – Etude de cas
Les diagrammes UML
Fusion des 2 modĂšles
1. Il faut isoler les classes communes dans des packages
2. Il faut factoriser les propriétés communes
AVION
Vols
ReservationVols
BUS
ReservationBus
VoyagesBus
Lieux
ïżœ
Le diagramme de package – Etude de cas
Les diagrammes UML
Il faut isoler les classes communes dans des packages
ïżœ
Vol
(from Vols)
ReservationVol
(from ReservationsVols)
ReservationBus
(from ReservationsBus)
VoyageEnBus
(from VoyagesBus)
concerne concerne
{frozen} {frozen}
1 1
RĂ©servations
0..* 1
concerneClient
nom Prénom
adresse
tél
e-mail
Passager
nom Prénom
RĂ©servation
Annuler( )
Confirmer( )
date
numéro
{frozen}
a effectué
0..*1
Classe
abstraite
Le diagramme de package – Etude de cas
Les diagrammes UML
VolsVoyagesBus
LieuxPackage réutilisable
ReservationsBus
RĂ©servations
ReservationsVols
Packages spécialisés
Package généralisé
Le diagramme de package – Etude de cas
Les diagrammes UML
196
5.2. Les diagrammes de
classes de conception
Stéréotypes
‱ MĂ©canisme d’extensibilitĂ©
‱ SĂ©mantique du concept est insuffisante ïżœ le
stéréotype permet la métaclassification
ïżœAjouter de nouvelles classes sans perdre la
sémantique
ïżœ Faciliter l’unification des sous-systĂšmes et
catégories
Le diagramme de classe : de l’analyse à conception
Les diagrammes UML
198
Stéréotype : définition
‱ Un stĂ©rĂ©otype permet d’étendre les classes dĂ©jĂ  existantes en leur
donnant une signification sémantique différente.
‱ Si la classe A est un stĂ©rĂ©otype de la classe B, alors A se comporte
comme B tout en ayant une signification sémantique différente.
‱ ReprĂ©sentation UML: <<stĂ©rĂ©otype>>
Nom de la Classe
Le diagramme de classe : de l’analyse à conception
Les diagrammes UML
199
Utilisation des stéréotypes
StĂ©rĂ©otypes prĂ©dĂ©finis pour les classes d’analyse (proposĂ©s par Jacobson):
‱ Boundary ou frontiùre ou interface
‱ Control ou contrîle
‱ Entity ou entitĂ©
Représentation de
Jacobson
Nom du stéréotype
Le diagramme de classe : de l’analyse à conception
Les diagrammes UML
200
Stéréotypes
 : boundary
‱ La classe stĂ©rĂ©otypĂ©e <<Boundary>> modĂ©lise la communication entre les
acteurs et les composantes internes du systĂšme (les interfaces
homme/machine, les interfaces des systĂšmes (protocole de
communication,
) , interfaces des matériels (écran, clavier, imprimante,
))
<<boundary>>
InterfaceRechercheSimple
Auteur
ISBN
Titre
Rechercher()
Le diagramme de classe : de l’analyse à conception
Les diagrammes UML
201
Stéréotypes
 : Entity
‱ La classe stĂ©rĂ©otypĂ©e <<Entity>> modĂ©lise les informations persistantes
du systùme. Exemples : classes qui contiennent des informations d’un
Ă©tudiant, d’un employĂ©, 

<<Entity>>
Livre
code :entier
titre : chaĂźne
ISBN : entier
nbrexemplaires:entier
Getcode()
GetTitre()
FindByISBN (ISBN:entier)
setNbrexemp(nbreexemplaires:entier)
Le diagramme de classe : de l’analyse à conception
Les diagrammes UML
202
Stéréotypes
 : control
«Control classes are generally used to represent coordination, sequencing,
transactions, and control of other objects. And it is often used to
encapsulate control related to a specific use case »
[I. Jacobson, G.Booch, J.Rumbaugh,”The Unified Software Development
Process”, Addison Wesley, 1999]
Le diagramme de classe : de l’analyse à conception
Les diagrammes UML
203
Stéréotypes
 : control
‱ La classe stĂ©rĂ©otypĂ©e <<control>> assure la coordination entre classes
‱ Elle contrĂŽle le sĂ©quencement, ou coordonne l'exĂ©cution des objets contrĂŽlĂ©s.
‱ Elle contrĂŽle la concurrence entre classes contrĂŽlĂ©es,
‱ Elle est l'implantation d'un objet intangible,
‱ Au dĂ©part , on crĂ©e une classe "control" pour chaque use-case; cette classe gĂšre le
flot d'Ă©vĂšnements dans le use-case,
‱ Au fur et Ă  mesure de l'avancement de l'analyse, les classes "control« peuvent ĂȘtre
supprimées, découpées ou regroupées.
<<control>>
CTRLrecherche
rechercherLivres()
Le diagramme de classe : de l’analyse à conception
Les diagrammes UML
204
<<control>>
CTRLrecherche
rechercherLivres()
‱ Classes stĂ©rĂ©otypĂ©es en relation
<<Entity>>
Livre
auteur :entier
titre : chaĂźne
ISBN : entier
nbrexemplaires:entier
Getcode()
GetTitre()
FindByISBN (ISBN:entier)
setNbrexemp(nbreexemplaires:entier)
<<boundary>>
InterfaceRechercheSimple
Auteur
ISBN
Titre
Rechercher()
0..*
0..*
<DĂ©clencherrech
Le diagramme de classe : de l’analyse à conception
Les diagrammes UML
205
‱ Les associations entre les classes stĂ©rĂ©otypĂ©es suivent des rĂšgles assez
strictes :
– Les « boundary » ne peuvent ĂȘtre reliĂ©es qu’aux « control »
– Les « control » ont accĂšs aux « boundary », aux « entity » et aux autres
contrĂŽles
– Les « entity » ont accĂšs aux autres « entity » et ne sont reliĂ©es qu’aux «
control »
ïżœ Pour aller plus loin : utiliser des partons de conception (les design
patterns)
Le diagramme de classe : de l’analyse à conception
Les diagrammes UML
206
Le diagramme de classe : de l’analyse à conception
Les diagrammes UML
Exemple de la localisation d’un DAB
207
Le diagramme de classe : de l’analyse à conception
Les diagrammes UML
Conception détaillée
Deux niveaux de conception :
- une Ă©tape logique: indĂ©pendante de l’environnement de rĂ©alisation:
‱ Conception dĂ©taillĂ©e des classes: trouver la meilleure maniĂšre de concevoir les
structure logique,
‱ Conception dĂ©taillĂ©e des associations (typage, portĂ©e, rĂ©manence/persistance):
– assurer la gestion des liens
– traiter les classes associatives
– optimiser la navigation
‱ DĂ©lĂ©gation: dĂ©pendance des relations d’agrĂ©gation et de composition.
‱ Raffiner la gĂ©nĂ©ralisation/spĂ©cialisation (hĂ©ritage simple ou multiple):
– propriĂ©tĂ©s structurelles
– Interface
– propriĂ©tĂ©s comportementales
- une étape physique: liée à des particularités des langages de programmation ou de
l’environnement d’exĂ©cution
Raffinementdesdiagrammesstructurels
208
Le diagramme de classe de conception
Les diagrammes UML
Conception détaillée des classes
‱ DĂ©finir le type des attributs identifiĂ©s en analyse.
– Type de base + composĂ©
‱ Structure
‱ EnumĂ©ration
‱ SpĂ©cifier les Structures de DonnĂ©es.
‱ SpĂ©cifier les visibilitĂ©s des attributs et mĂ©thodes + prise en
compte des propriétés (ordered, addOnly, frozen)
‱ SpĂ©cifier les mĂ©thodes + celles spĂ©cifiques Ă  l’implantation
‱ Montrer les dĂ©pendances + Classes spĂ©cifiques
Le diagramme de classe de conception
Les diagrammes UML
Structure
– DĂ©finition : Ensemble d’attributs pouvant ĂȘtre regroupĂ©s.
<<structure>>
Date
jour
mois
années
<<structure>>
Adresse
numRue
rue
codePostal
ville
pays
210
Le diagramme de classe de conception
Les diagrammes UML
Enumération
– DĂ©finition : Ensemble de littĂ©raux d’énumĂ©ration, ordonnĂ©.
<<enumeration>>
Jour
Lundi
Mardi
Mercredi
Jeudi
Vendredi
Samedi
Dimanche
<<enumeration>>
Titre
Secretaire
President
Tresorier
VicePresident
Membre
Le diagramme de classe de conception
Les diagrammes UML
Visibilité des éléments
‱ Restreindre l'accĂšs aux Ă©lĂ©ments d'un modĂšle
‱ ContrĂŽler et Ă©viter les dĂ©pendances entre classes (et paquetages)
+ public visible Ă  l’extĂ©rieur de la classe
# protégé visible que dans la classe et ses sous-classes
 privĂ© visible dans la classe uniquement
~ package visible dans la package uniquement
$ élément de classe
Remarques:
‱ Utile lors de la conception et de l'implĂ©mentation, pas avant !
-N'a pas vraiment de sens dans le modùle d’analyse-
‱ La sĂ©mantique exacte dĂ©pend du langage de programmation !
212
Le diagramme de classe de conception
Les diagrammes UML
DĂ©claration d'attributs
[/] [ visibilité ] nom [ : type ] [card ordre] [ = valeur-initiale ] [ { props... } ]
exemples: age
+age
/age
- solde : Integer = 0
# age : Integer [0..1]
# numsecu : Integer {frozen}
# motsClés : String [*] {addOnly}
$nbPersonne : Integer
ïź Adapter le niveau de dĂ©tail au niveau d'abstraction
ïź La non prĂ©cision de visibilitĂ© ïżœ privĂ©e
Le diagramme de classe de conception
Les diagrammes UML
Déclaration d'opérations
[ visibilité ] nom [ ( params ) ] [ : type ] [ { props... } ]
getAge()
+ getAge() : Integer
- updateAge( in date : Date ) : Boolean
# getName() : String [0..1]
+getAge() : Integer
+addProject()
+$main( in args : String [*] {ordered} )
ïź Adapter le niveau de dĂ©tail au niveau d'abstraction
ïź La non prĂ©cision de visibilitĂ© ïżœ public
Le diagramme de classe de conception
Les diagrammes UML
Conception détaillée des classes :
classes spécifiques
‱ Classe utilitaire
ïżœ Exemple: fonctions mathĂ©matiques d’une bibliothĂšque
« Utilitaire »
Math
Math
Le diagramme de classe de conception
Les diagrammes UML
217
Contraintes de gestion de l’association
Par exemple :
‱ { ordered } : les Ă©lĂ©ments de la collection sont ordonnĂ©s
‱ { frozen } : fixĂ© lors de la crĂ©ation de l ’objet, ne peut pas changer
‱ { addOnly } : impossible de supprimer un Ă©lĂ©ment
RelevéDeCompte
Ligne
Opération
*{ordered,addOnly}
lignes
Le diagramme de classe de conception
Les diagrammes UML
218
RĂŽle : traduction
B
*
R
A B
1
A
R
bs
rs
*
b
1
a
rolea
carda
carda
rolea
Le diagramme de classe de conception
Les diagrammes UML
219
Classe associative: traduction
B
*
A B
1
A
R
bs
*
b
1
a
as
*
*
Le diagramme de classe de conception
Les diagrammes UML
R
Relation ternaire: traduction
Le diagramme de classe de conception
Les diagrammes UML
B
*
{ordered}
R
Role ordonné :
traduction générale par index
A B
1
A
R
bs
rs
ib : integer
*
b
Pour tout a, tous les rs ont un indice ib différent et couvrant l'intervalle
de 1 au nombre de bs.
1
a
rolea
carda
carda
rolea
Le diagramme de classe de conception
Les diagrammes UML
Pour tout a, tous les bs ont un indice iRb
différent et couvrant l'intervalle de 1 au
nombre de bs.
B
*
{ordered}
R
RÎle ordonné 1 - * : traduction par
index
A B
*
A
bs
bsa
a
1
iRb : integer
1
Le diagramme de classe de conception
Les diagrammes UML
224
NavigabilitĂ© d’une Association
ïżœLa navigabilitĂ© permet de spĂ©cifier dans quel(s) sens il est possible
de traverser l'association à l'exécution.
ïżœOn interdit la navigation par une croix (X) du cĂŽtĂ© qui n'est pas
atteignable.
ïżœOn peut reprĂ©senter les associations navigables dans un
seul sens par des attributs. Les attributs sont toujours
navigables.
Le diagramme de classe de conception
Les diagrammes UML
exist
getAll
nb
empty
Spécifier les méthodes pour la gestion des liens
set
get
a b
R
M1
M0
0..10..1
Remarque :
i. Les méthodes (ajout/suppression) doivent préserver la cohérence des
cardinalités et les contraintes (exemple : AddOnly)
ii. Les mĂ©thodes de navigation doivent ĂȘtre cohĂ©rentes avec le sens de
navigation
iii. En cas de cardinalitĂ© > 1 ïżœ possibilitĂ© de prĂ©voir un attribut de type
collection (surtout Ă  dĂ©finir lors de l’implĂ©mentation !! )
remove
removeAll
removeIdx
add
setAll
insert
a b
R
M1
M0
0..*0..1
Le diagramme de classe de conception
Les diagrammes UML
Classes de conception
Le diagramme de classe de conception
Les diagrammes UML
Classes de conception
Le diagramme de classe de conception
Les diagrammes UML
Classes de conception
Le diagramme de classe de conception
Les diagrammes UML
Classes de conception
Le diagramme de classe de conception
Les diagrammes UML
Classes de conception
Le diagramme de classe de conception
Les diagrammes UML
232
5.3. Notions d’abstraction
et d’interfaces
233
Le diagramme de classes Notion de classe abstraite
Les diagrammes UML
Une classe abstraite est une classe dont au moins une
méthode est abstraite
Une méthode abstraite est définie uniquement par son intitulé
sans code
abstract void calcul_long();
Dans les classes dĂ©rivĂ©es, la mĂ©thode abstraite doit ĂȘtre dĂ©crite
 La mĂ©thode abstraite ne peut pas ĂȘtre private
On ne peut pas crĂ©er un objet d’une classe abstraite
Une classe abstraite est un type, il est possible de dĂ©finir des
variables ou paramĂštres de ce type; mais il faut affecter un objet
d’une classe concrùte, descendante
234
Le diagramme de classes Notion de classe abstraite
Les diagrammes UML
But d’une classe abstraite
Une classe abstraite permet de définir les caractéristiques
communes Ă  plusieurs classes.
Une classe abstraite permet à un développeur :
de fournir Ă  d'autres dĂ©veloppeurs une partie de l'implĂ©mentation
d'une classe
de laisser aux autres dĂ©veloppeurs la maniĂšre d'implĂ©menter le
reste de la classe
d'imposer aux autres dĂ©veloppeurs d'implĂ©menter certaines
méthodes s'ils veulent pouvoir utiliser ses classes
‱ Exemple: deux classes Cercle, Carre qui
possÚdent des méthodes communes:
– float surface()
– void afficheInfo()
dont les implémentations sont trÚs différentes
235
Le diagramme de classes Notion de classe abstraite
Les diagrammes UML
‱ Solution :
abstract class Figure{
private String nom;
public String getNom( ){
return nom; }
public abstract void afficheinfos( );
public abstract float surface( );
}
236
Le diagramme de classes Notion de classe abstraite
Les diagrammes UML
‱ Les rĂšgles usuelles d'hĂ©ritage s'appliquent aux
classes abstraites.
‱ Les classes dĂ©rivĂ©es de Figure peuvent
implémenter complÚtement, partiellement, ou
pas du tout, les méthodes abstraites de Figure.
‱ Suite de la solution :
Figure f;
f = new Cercle (
);
f.surface( ); // utiliser la liaison dynamique
...
237
Le diagramme de classes Notion de classe abstraite
Les diagrammes UML
‱ Si A est dĂ©clarĂ©e comme classe abstraite
alors on ne peut pas créer d'instance de la
classe.
‱ En revanche, on peut (on devrait) dĂ©clarer
des variables de type A, et les instancier par
n'importe quel objet de n'importe quelle
classe concrÚte (non abstraite) dérivée de A.
238
Le diagramme de classes Notion de classe abstraite
Les diagrammes UML
239
Le diagramme de classes Notion d’interface
Les diagrammes UML
Une interface est une classe abstraite ayant les caractéristiques
suivants:
toutes les mĂ©thodes sont abstraites et public, alors qu’une classe
abstraite peut avoir des méthodes non abstraites
tous les attributs sont static, alors qu’une classe abstraite peut
avoir des attributs ordinaires
toute classe peut hĂ©riter de plusieurs interfaces
une interface peut hĂ©riter d’une ou plusieurs interfaces mais elle
ne peut pas hĂ©riter d’une classe
il n’est pas nĂ©cessaire d’indiquer abstract pour les mĂ©thodes et
static pour les attributs
240
Le diagramme de classes Notion d’interface
Les diagrammes UML
« interface »
NomInterface
NomClasse
ou NomClasse
Une classe qui implémente une interface doit définir le corps (les
instructions) de toutes ses méthodes abstraites
implémente
interface Chapeau{
void ajoute(Object o);
Object tire();
boolean estVide();
}
class ChapeauDoubleFond implements Chapeau{... }
class ChapeauTripleFond implements Chapeau{... }
class TourCartes{


public void ajouteChapeau(Chapeau c){... }
} 241
Le diagramme de classes Notion d’interface
Les diagrammes UML
‱ Le code de TourCartes n'est pas liĂ© Ă  une
implémentation particuliÚre de Chapeau.
TourCartes t=new TourCartes();
Chapeau c=new ChapeauDoubleFond();
t.ajouteChapeau(c);
‱ Le seul moment oĂč est mentionnĂ© le choix
d'implémentation est lors de la construction de l'objet.
242
Le diagramme de classes Notion d’interface
Les diagrammes UML
‱ IntĂ©rĂȘt :
– SĂ©paration interface publique/implĂ©mentation
– Permet une forme d’hĂ©ritage multiple :
‱ Par exemple, une classe C2 peut Ă©tendre une classe C1
et implémenter une interface I
‱ Rîles :
– rĂŽle des interfaces: dĂ©claration des mĂ©thodes
publiques
– rĂŽle des classes: implĂ©mentation de ces mĂ©thodes
243
Le diagramme de classes Notion d’interface
Les diagrammes UML
Une démarche couramment utilisée pour bùtir un diagramme de
classes consiste Ă  :
1. Trouver les classes du domaine étudié.
Cette étape empirique se fait généralement en collaboration avec
un expert du domaine. Les classes correspondent généralement à
des concepts ou des substantifs du domaine.
2. Trouver les associations entre classes.
Les associations correspondent souvent Ă  des verbes, ou des
constructions verbales, mettant en relation plusieurs classes,
comme << est composé de >>, << pilote >>, << travaille
pour >>.
S. Mesfar 244
Etapes de l’élaboration d’un diagramme de classes
Les diagrammes UML
3. Trouver les attributs des classes.
Les attributs correspondent souvent Ă  des substantifs, ou des
groupes nominaux, tels que << la masse d’une voiture >> ou
<< le montant d’une transaction >>. Les adjectifs et les valeurs
correspondent souvent à des valeurs d’attributs.
NB: Souvent, on ajoute des attributs Ă  toutes les Ă©tapes du cycle
de vie d’un projet (implĂ©mentation comprise).
4. Organiser et simplifier le modĂšle en Ă©liminant les classes
redondantes et en utilisant l’hĂ©ritage.
5. Itérer et raffiner le modÚle.
Un modĂšle est rarement correct dĂšs sa premiĂšre construction. La
modélisation objet est un processus non pas linéaire mais
itératif.
S. Mesfar 245
Etapes de l’élaboration d’un diagramme de classes
Les diagrammes UML
246
5.4 : Les Diagrammes de
collaboration / communication
S. Mesfar
Notation
‱ Les diagrammes de collaboration montrent des
interactions entre objets, en insistant plus
particuliĂšrement sur la structure spatiale statique qui
permet la mise en collaboration d’un groupe d’objets.
‱ Les diagrammes de collaboration expriment à la fois
le contexte d’un groupe d’objets (au travers des objets
et des liens) et l’interaction entre ces objets (par la
reprĂ©sentation de l’envoi de messages).
ïżœ Les diagrammes de collaboration sont une extension
des diagrammes d’objet.
S. Mesfar 247
Le diagramme de communication / collaboration
Les diagrammes UML
Notation
‱Les diagrammes de collaboration sont un recoupement
des diagrammes d’objets et des diagrammes de
séquences.
‱Chaque objet intervient de la mĂȘme façon que dans les
diagrammes de séquence
‱Les messages sont obligatoirement numĂ©rotĂ©s
S. Mesfar 248
Le diagramme de communication / collaboration
Les diagrammes UML
Notation
Objet 1
Objet 2
Objet 3
1 : message
4 : message
2 : message
3 : message
S. Mesfar 249
Le diagramme de communication / collaboration
Les diagrammes UML
Exemple
S. Mesfar 250
Le diagramme de communication / collaboration
Les diagrammes UML
RĂŽles et connecteurs
Le rÎle permet de définir le contexte d'utilisation de l'interaction.
ïżœSi la ligne de vie est un objet, celui-ci peut avoir plusieurs rĂŽles
au cours de sa vie.
Les relations entre les lignes de vie sont appelées connecteurs .
ïżœUn connecteur se reprĂ©sente de la mĂȘme façon qu'une
association mais la sémantique est plus large : un connecteur est
souvent une association transitoire.
S. Mesfar 251
Le diagramme de communication / collaboration
Les diagrammes UML
Notation (
)
La place de l’utilisateur
ïżœ La notation permet de faire figurer un acteur dans un
diagramme de collaboration afin de représenter le
déclenchement des interactions par un élément externe au
systĂšme. GrĂące Ă  cet artifice, l’interaction peu ĂȘtre dĂ©crite de
maniÚre plus abstraite sans entrer dans les détails des objets de
l’interface utilisateur.
ïżœ Le premier message est envoyĂ© par l’acteur, reprĂ©sentĂ© par un
symbole graphique (type bonhomme) semblable au modĂšle des
cas d’utilisation, ou bien par un objet muni d’un stĂ©rĂ©otype qui
prĂ©cise sa qualitĂ© d’acteur.
S. Mesfar 252
Le diagramme de communication / collaboration
Les diagrammes UML
Représentation des messages
Les flÚches représentant les messages sont tracées à cÎté des
connecteurs qui les supportent.
Attention
Bien faire la distinction entre les messages et les connecteurs : on
pourrait avoir un connecteur sans message, mais jamais
l'inverse.
S. Mesfar 253
Le diagramme de communication / collaboration
Les diagrammes UML
Multiplicité
Les connecteurs permettent de rendre compte de la
multiplicité.
S. Mesfar 254
Le diagramme de communication / collaboration
Les diagrammes UML
Numéros de séquence des messages
Pour représenter les aspects temporels, on adjoint des numéros de
séquence aux messages.
ïżœDes messages successifs sont ordonnĂ©s selon un numĂ©ro de
séquence croissant (1, 2, 3, ... ou encore 3.1, 3.2, 3.3, ...).
ïżœDes messages envoyĂ©s en cascade (ex : appel de mĂ©thode Ă 
l'intérieur d'une méthode) portent un numéro d'emboßtement avec
une notation pointée
‱1.1, 1.2, ... pour des messages appelĂ©s par une mĂ©thode dont
l'appel portait le numéro 1
‱2.a.1, 2.a.2, ... pour des messages appelĂ©s par une mĂ©thode
dont l'appel portait le numéro 2.a
S. Mesfar 255
Le diagramme de communication / collaboration
Les diagrammes UML
Equivalence avec un diagramme de
séquence
S. Mesfar 256
Le diagramme de communication / collaboration
Les diagrammes UML
Equivalence avec un diagramme de
séquence
S. Mesfar 257
Le diagramme de communication / collaboration
Les diagrammes UML
Messages simultanés
Lorsque des messages sont envoyés en parallÚle, on les numérote
avec des lettres
‱1.a, 1.b,... pour des messages simultanĂ©s envoyĂ©s en rĂ©ponse Ă 
un message dont l'envoi portait le numéro 1
S. Mesfar 258
Le diagramme de communication / collaboration
Les diagrammes UML
S. Mesfar 259
Classes
Collaboration
Le diagramme de communication / collaboration
Les diagrammes UML
Opérateurs de choix et de boucle
Pas d'opérateurs combinés dans les diagrammes de communication
‱*[<clauseItĂ©ration>] reprĂ©sente une itĂ©ration.
ïżœLa clause d'itĂ©ration peut ĂȘtre exprimĂ©e dans le format
i:=1..n
‱[<clauseCondition>] reprĂ©sente un choix. La clause de
condition est une condition booléenne. Elle représente la
condition d’arrĂȘt
S. Mesfar 261
Le diagramme de communication / collaboration
Les diagrammes UML
Syntaxe des messages
ïżœSyntaxe complĂšte des messages est :
[<numeroSĂ©quence>][<expression>]:<message>
ïżœÂ« message » a la mĂȘme forme que dans les diagrammes de
séquence, « numéroSéquence » représente le numéro de
séquencement des messages et « expression » précise une itération
ou un branchement conditionnel.
ïżœExemples :
ïżœ2 : affiche(x,y) : message simple.
ïżœ1.3.1 : trouve("Hadock") : appel emboĂźtĂ©.
ïżœ4 [x < 0] : inverse(x,couleur) : conditionnel.
ïżœ3.1 *[i:=1..10] : recommencer() : itĂ©ration.
S. Mesfar 262
Le diagramme de communication / collaboration
Les diagrammes UML
Collaborations et interactions
ïżœLes collaborations donnent lieu Ă  des interactions
ïżœLes interactions documentent les collaborations
ïżœLes collaborations organisent les interactions.
ïżœLes interactions se reprĂ©sentent indiffĂ©remment par des
diagrammes de communication ou de séquence
S. Mesfar 263
Le diagramme de communication / collaboration
Les diagrammes UML
UML - Le langage Objet unifié
x : ClasseA y : ClasseB
[ x ] 1: message
message soumis Ă  la condition x
x : ClasseA
y : ClasseB
1.a : message1
z : ClasseC1.b : message2
message1 et message 2 en parallĂšle
x : ClasseA
y : ClasseB
1.1 : message1
z : ClasseC1.2 : message2
message1.1 et message1.2 envoyés
successivement vers y et z
x : ClasseA y : ClasseB
1 : * [ 1..n ] message
message envoyé n fois
x : ClasseA : ClasseB
// 1: message message envoyé en parallÚle à plusieurs
instances de la classe B
x : ClasseA y : ClasseB
1.a, 2.c / 5: message message envoyé à y lorsque 1.a et 2.c sont
satisfaits (synchronisation) : Voir diag. d’activitĂ©s
x : ClasseA y : ClasseB
1 : a : = message
a rĂ©cupĂšre la valeur renvoyĂ©e par l’exĂ©cution du
message (rĂ©cupĂ©ration d’un rĂ©sultat)S. Mesfar
Le diagramme de communication / collaboration
Les diagrammes UML
Buts :
1. DĂ©crire l’interaction des objets entre eux
2. Illustrer les scénarios des use cases
3. Valider les choix d’analyse et de conception
(prototypage)
4. Aider au raffinement des diagrammes de classes de
conception
265 S. Mesfar
Le diagramme de communication / collaboration
Les diagrammes UML
266
5.5 : Les Diagrammes
Etats-transitions
S. Mesfar
Concepts liĂ©s Ă  la phase d’analyse
ïżœ Un Ă©tat rĂ©fĂšre l’ensemble des valeurs qui dĂ©crit
un objet à un moment spécifique.
ïżœ En d’autres termes, l’état d’un objet est
déterminé par les valeurs associées à ses
attributs.
ïżœ Quand les messages sont reçus, les opĂ©rations
associées aux classes des objets considérés
amĂšnent des modifications de ces valeurs.
267
Le diagramme Etats-Transitions
Les diagrammes UML
CoursUML-SlimMesfar-Total
CoursUML-SlimMesfar-Total
CoursUML-SlimMesfar-Total
CoursUML-SlimMesfar-Total
CoursUML-SlimMesfar-Total
CoursUML-SlimMesfar-Total
CoursUML-SlimMesfar-Total
CoursUML-SlimMesfar-Total
CoursUML-SlimMesfar-Total
CoursUML-SlimMesfar-Total
CoursUML-SlimMesfar-Total
CoursUML-SlimMesfar-Total
CoursUML-SlimMesfar-Total
CoursUML-SlimMesfar-Total
CoursUML-SlimMesfar-Total
CoursUML-SlimMesfar-Total
CoursUML-SlimMesfar-Total
CoursUML-SlimMesfar-Total
CoursUML-SlimMesfar-Total
CoursUML-SlimMesfar-Total
CoursUML-SlimMesfar-Total
CoursUML-SlimMesfar-Total
CoursUML-SlimMesfar-Total
CoursUML-SlimMesfar-Total
CoursUML-SlimMesfar-Total
CoursUML-SlimMesfar-Total
CoursUML-SlimMesfar-Total
CoursUML-SlimMesfar-Total
CoursUML-SlimMesfar-Total
CoursUML-SlimMesfar-Total
CoursUML-SlimMesfar-Total
CoursUML-SlimMesfar-Total
CoursUML-SlimMesfar-Total
CoursUML-SlimMesfar-Total
CoursUML-SlimMesfar-Total
CoursUML-SlimMesfar-Total
CoursUML-SlimMesfar-Total
CoursUML-SlimMesfar-Total
CoursUML-SlimMesfar-Total
CoursUML-SlimMesfar-Total
CoursUML-SlimMesfar-Total
CoursUML-SlimMesfar-Total
CoursUML-SlimMesfar-Total
CoursUML-SlimMesfar-Total
CoursUML-SlimMesfar-Total
CoursUML-SlimMesfar-Total
CoursUML-SlimMesfar-Total
CoursUML-SlimMesfar-Total
CoursUML-SlimMesfar-Total
CoursUML-SlimMesfar-Total
CoursUML-SlimMesfar-Total
CoursUML-SlimMesfar-Total
CoursUML-SlimMesfar-Total
CoursUML-SlimMesfar-Total
CoursUML-SlimMesfar-Total
CoursUML-SlimMesfar-Total
CoursUML-SlimMesfar-Total
CoursUML-SlimMesfar-Total
CoursUML-SlimMesfar-Total
CoursUML-SlimMesfar-Total

Weitere Àhnliche Inhalte

Was ist angesagt?

Chp5 - Diagramme d'Etat Transition
Chp5 - Diagramme d'Etat TransitionChp5 - Diagramme d'Etat Transition
Chp5 - Diagramme d'Etat TransitionLilia Sfaxi
 
PrĂ©sentation PFE : Mise en place d’une solution de gestion intĂ©grĂ©e (OpenERP...
PrĂ©sentation PFE :  Mise en place d’une solution de gestion intĂ©grĂ©e (OpenERP...PrĂ©sentation PFE :  Mise en place d’une solution de gestion intĂ©grĂ©e (OpenERP...
PrĂ©sentation PFE : Mise en place d’une solution de gestion intĂ©grĂ©e (OpenERP...Mohamed Cherkaoui
 
TP2-UML-Correction
TP2-UML-CorrectionTP2-UML-Correction
TP2-UML-CorrectionLilia Sfaxi
 
TD4-UML-Correction
TD4-UML-CorrectionTD4-UML-Correction
TD4-UML-CorrectionLilia Sfaxi
 
Rapport de mini projet de programation web
Rapport de mini projet de programation webRapport de mini projet de programation web
Rapport de mini projet de programation webMOHAMMED MOURADI
 
TP1-UML-Correction
TP1-UML-CorrectionTP1-UML-Correction
TP1-UML-CorrectionLilia Sfaxi
 
TD1-UML-correction
TD1-UML-correctionTD1-UML-correction
TD1-UML-correctionLilia Sfaxi
 
Rapport de stage d'initiation 2015 Mahmoudi Mohamed Amine
Rapport de stage d'initiation 2015 Mahmoudi Mohamed AmineRapport de stage d'initiation 2015 Mahmoudi Mohamed Amine
Rapport de stage d'initiation 2015 Mahmoudi Mohamed AmineMohamed Amine Mahmoudi
 
TD2 - UML - Correction
TD2 - UML - CorrectionTD2 - UML - Correction
TD2 - UML - CorrectionLilia Sfaxi
 
Rapport Projet ERP - Plateforme Odoo 12 (PFE Licence)
Rapport Projet ERP - Plateforme Odoo 12 (PFE Licence)Rapport Projet ERP - Plateforme Odoo 12 (PFE Licence)
Rapport Projet ERP - Plateforme Odoo 12 (PFE Licence)Yasmine Tounsi
 
Chp1 - Introduction aux méthodologies de Conception
Chp1 - Introduction aux méthodologies de ConceptionChp1 - Introduction aux méthodologies de Conception
Chp1 - Introduction aux méthodologies de ConceptionLilia Sfaxi
 
Chap5 diagramme d'etats-transitions
Chap5 diagramme d'etats-transitionsChap5 diagramme d'etats-transitions
Chap5 diagramme d'etats-transitionsAmir Souissi
 
Conception et réalisation d'une application de gestion intégrée au sein de la...
Conception et réalisation d'une application de gestion intégrée au sein de la...Conception et réalisation d'une application de gestion intégrée au sein de la...
Conception et réalisation d'une application de gestion intégrée au sein de la...Addi Ait-Mlouk
 
Exercices uml-corrige
Exercices uml-corrigeExercices uml-corrige
Exercices uml-corrigeAmineMouhout1
 
Rapport stage pfe
Rapport stage  pfe Rapport stage  pfe
Rapport stage pfe rimeh moussi
 
Rapport Projet De Fin D'Ă©tude DĂ©veloppent d'une application web avec Symfony2
Rapport Projet De Fin D'Ă©tude DĂ©veloppent d'une application web avec Symfony2Rapport Projet De Fin D'Ă©tude DĂ©veloppent d'une application web avec Symfony2
Rapport Projet De Fin D'Ă©tude DĂ©veloppent d'une application web avec Symfony2Sofien Benrhouma
 
Rapport PFE - Mise en place d'OpenERP pour IT-Consulting
Rapport PFE - Mise en place d'OpenERP pour IT-ConsultingRapport PFE - Mise en place d'OpenERP pour IT-Consulting
Rapport PFE - Mise en place d'OpenERP pour IT-ConsultingMohamed Cherkaoui
 
Android-Tp1: éléments graphiques de base et intents
Android-Tp1: éléments graphiques de base et intentsAndroid-Tp1: éléments graphiques de base et intents
Android-Tp1: éléments graphiques de base et intentsLilia Sfaxi
 
Présentation PFE
Présentation PFEPrésentation PFE
Présentation PFESemah Mhamdi
 

Was ist angesagt? (20)

Chp5 - Diagramme d'Etat Transition
Chp5 - Diagramme d'Etat TransitionChp5 - Diagramme d'Etat Transition
Chp5 - Diagramme d'Etat Transition
 
PrĂ©sentation PFE : Mise en place d’une solution de gestion intĂ©grĂ©e (OpenERP...
PrĂ©sentation PFE :  Mise en place d’une solution de gestion intĂ©grĂ©e (OpenERP...PrĂ©sentation PFE :  Mise en place d’une solution de gestion intĂ©grĂ©e (OpenERP...
PrĂ©sentation PFE : Mise en place d’une solution de gestion intĂ©grĂ©e (OpenERP...
 
TP2-UML-Correction
TP2-UML-CorrectionTP2-UML-Correction
TP2-UML-Correction
 
TD4-UML-Correction
TD4-UML-CorrectionTD4-UML-Correction
TD4-UML-Correction
 
Rapport de mini projet de programation web
Rapport de mini projet de programation webRapport de mini projet de programation web
Rapport de mini projet de programation web
 
TP1-UML-Correction
TP1-UML-CorrectionTP1-UML-Correction
TP1-UML-Correction
 
TD1-UML-correction
TD1-UML-correctionTD1-UML-correction
TD1-UML-correction
 
Rapport de stage d'initiation 2015 Mahmoudi Mohamed Amine
Rapport de stage d'initiation 2015 Mahmoudi Mohamed AmineRapport de stage d'initiation 2015 Mahmoudi Mohamed Amine
Rapport de stage d'initiation 2015 Mahmoudi Mohamed Amine
 
TD2 - UML - Correction
TD2 - UML - CorrectionTD2 - UML - Correction
TD2 - UML - Correction
 
Rapport Projet ERP - Plateforme Odoo 12 (PFE Licence)
Rapport Projet ERP - Plateforme Odoo 12 (PFE Licence)Rapport Projet ERP - Plateforme Odoo 12 (PFE Licence)
Rapport Projet ERP - Plateforme Odoo 12 (PFE Licence)
 
Chp1 - Introduction aux méthodologies de Conception
Chp1 - Introduction aux méthodologies de ConceptionChp1 - Introduction aux méthodologies de Conception
Chp1 - Introduction aux méthodologies de Conception
 
Chap5 diagramme d'etats-transitions
Chap5 diagramme d'etats-transitionsChap5 diagramme d'etats-transitions
Chap5 diagramme d'etats-transitions
 
Conception et réalisation d'une application de gestion intégrée au sein de la...
Conception et réalisation d'une application de gestion intégrée au sein de la...Conception et réalisation d'une application de gestion intégrée au sein de la...
Conception et réalisation d'une application de gestion intégrée au sein de la...
 
Exercices uml-corrige
Exercices uml-corrigeExercices uml-corrige
Exercices uml-corrige
 
Rapport stage pfe
Rapport stage  pfe Rapport stage  pfe
Rapport stage pfe
 
Rapport Projet De Fin D'Ă©tude DĂ©veloppent d'une application web avec Symfony2
Rapport Projet De Fin D'Ă©tude DĂ©veloppent d'une application web avec Symfony2Rapport Projet De Fin D'Ă©tude DĂ©veloppent d'une application web avec Symfony2
Rapport Projet De Fin D'Ă©tude DĂ©veloppent d'une application web avec Symfony2
 
2 TUP
2 TUP2 TUP
2 TUP
 
Rapport PFE - Mise en place d'OpenERP pour IT-Consulting
Rapport PFE - Mise en place d'OpenERP pour IT-ConsultingRapport PFE - Mise en place d'OpenERP pour IT-Consulting
Rapport PFE - Mise en place d'OpenERP pour IT-Consulting
 
Android-Tp1: éléments graphiques de base et intents
Android-Tp1: éléments graphiques de base et intentsAndroid-Tp1: éléments graphiques de base et intents
Android-Tp1: éléments graphiques de base et intents
 
Présentation PFE
Présentation PFEPrésentation PFE
Présentation PFE
 

Andere mochten auch

1iĂšres rencontres franco canadiennes d’intelligence compĂ©titive - 27-10-2011
1iĂšres rencontres franco canadiennes d’intelligence compĂ©titive - 27-10-20111iĂšres rencontres franco canadiennes d’intelligence compĂ©titive - 27-10-2011
1iĂšres rencontres franco canadiennes d’intelligence compĂ©titive - 27-10-2011VedoShare
 
E-Reputation : 10 erreurs à éviter, ou comment réussir son buzzmonitoring
E-Reputation : 10 erreurs à éviter, ou comment réussir son buzzmonitoringE-Reputation : 10 erreurs à éviter, ou comment réussir son buzzmonitoring
E-Reputation : 10 erreurs à éviter, ou comment réussir son buzzmonitoringHUB INSTITUTE
 
Les horaires d'ouverture, quelle histoire !
Les horaires d'ouverture, quelle histoire !Les horaires d'ouverture, quelle histoire !
Les horaires d'ouverture, quelle histoire !Dominique Lahary
 
Slides Paris Gamification Day
Slides Paris Gamification DaySlides Paris Gamification Day
Slides Paris Gamification Dayservicesmobiles.fr
 
Appretsupercap refait
Appretsupercap refaitAppretsupercap refait
Appretsupercap refaitibndawood
 
Données Ouvertes : mode d'emploi ?
Données Ouvertes : mode d'emploi ?Données Ouvertes : mode d'emploi ?
Données Ouvertes : mode d'emploi ?mondeca
 
Placage de la lentille lunettes de soleil prada pas cher
Placage de la lentille lunettes de soleil prada pas cherPlacage de la lentille lunettes de soleil prada pas cher
Placage de la lentille lunettes de soleil prada pas cherJoe Gowey
 
Comparatif des adj et adv
Comparatif des adj et advComparatif des adj et adv
Comparatif des adj et advMmeOnsdorff
 
Description Physique
Description PhysiqueDescription Physique
Description Physiquealejandraprofe
 
Tableau tp12
Tableau tp12Tableau tp12
Tableau tp12Jef Chouzier
 
Lutter contre les bactéries à Gram négatif
Lutter contre les bactéries à Gram négatifLutter contre les bactéries à Gram négatif
Lutter contre les bactéries à Gram négatifBiomin
 
Cours Chromato2
Cours Chromato2Cours Chromato2
Cours Chromato2bio svi
 
Comment les médicaments sont-ils mis au point?
Comment les médicaments sont-ils mis au point?Comment les médicaments sont-ils mis au point?
Comment les médicaments sont-ils mis au point?Xplore Health
 
Nouveau microsoft word document
Nouveau microsoft word documentNouveau microsoft word document
Nouveau microsoft word documentkarimfpk
 
01 fonction stockage_la_batterie
01 fonction stockage_la_batterie01 fonction stockage_la_batterie
01 fonction stockage_la_batterieAbdellah HILALI
 
SĂ©minaire de formation - Introduction
SĂ©minaire de formation - IntroductionSĂ©minaire de formation - Introduction
SĂ©minaire de formation - IntroductionGroupe Managem
 
Brochure Meca-19102016-bd
Brochure Meca-19102016-bdBrochure Meca-19102016-bd
Brochure Meca-19102016-bdCamille Volant
 
Protection des métaux contre la corrosion
Protection des métaux contre la corrosionProtection des métaux contre la corrosion
Protection des métaux contre la corrosionCHTAOU Karim
 

Andere mochten auch (20)

1iĂšres rencontres franco canadiennes d’intelligence compĂ©titive - 27-10-2011
1iĂšres rencontres franco canadiennes d’intelligence compĂ©titive - 27-10-20111iĂšres rencontres franco canadiennes d’intelligence compĂ©titive - 27-10-2011
1iĂšres rencontres franco canadiennes d’intelligence compĂ©titive - 27-10-2011
 
E-Reputation : 10 erreurs à éviter, ou comment réussir son buzzmonitoring
E-Reputation : 10 erreurs à éviter, ou comment réussir son buzzmonitoringE-Reputation : 10 erreurs à éviter, ou comment réussir son buzzmonitoring
E-Reputation : 10 erreurs à éviter, ou comment réussir son buzzmonitoring
 
Les horaires d'ouverture, quelle histoire !
Les horaires d'ouverture, quelle histoire !Les horaires d'ouverture, quelle histoire !
Les horaires d'ouverture, quelle histoire !
 
Slides Paris Gamification Day
Slides Paris Gamification DaySlides Paris Gamification Day
Slides Paris Gamification Day
 
Appretsupercap refait
Appretsupercap refaitAppretsupercap refait
Appretsupercap refait
 
Données Ouvertes : mode d'emploi ?
Données Ouvertes : mode d'emploi ?Données Ouvertes : mode d'emploi ?
Données Ouvertes : mode d'emploi ?
 
Placage de la lentille lunettes de soleil prada pas cher
Placage de la lentille lunettes de soleil prada pas cherPlacage de la lentille lunettes de soleil prada pas cher
Placage de la lentille lunettes de soleil prada pas cher
 
Comparatif des adj et adv
Comparatif des adj et advComparatif des adj et adv
Comparatif des adj et adv
 
Description Physique
Description PhysiqueDescription Physique
Description Physique
 
Génie chimique - Nanomatériaux, Catalyse, Electrochimie - ULg
Génie chimique - Nanomatériaux, Catalyse, Electrochimie - ULgGénie chimique - Nanomatériaux, Catalyse, Electrochimie - ULg
Génie chimique - Nanomatériaux, Catalyse, Electrochimie - ULg
 
19
1919
19
 
Tableau tp12
Tableau tp12Tableau tp12
Tableau tp12
 
Lutter contre les bactéries à Gram négatif
Lutter contre les bactéries à Gram négatifLutter contre les bactéries à Gram négatif
Lutter contre les bactéries à Gram négatif
 
Cours Chromato2
Cours Chromato2Cours Chromato2
Cours Chromato2
 
Comment les médicaments sont-ils mis au point?
Comment les médicaments sont-ils mis au point?Comment les médicaments sont-ils mis au point?
Comment les médicaments sont-ils mis au point?
 
Nouveau microsoft word document
Nouveau microsoft word documentNouveau microsoft word document
Nouveau microsoft word document
 
01 fonction stockage_la_batterie
01 fonction stockage_la_batterie01 fonction stockage_la_batterie
01 fonction stockage_la_batterie
 
SĂ©minaire de formation - Introduction
SĂ©minaire de formation - IntroductionSĂ©minaire de formation - Introduction
SĂ©minaire de formation - Introduction
 
Brochure Meca-19102016-bd
Brochure Meca-19102016-bdBrochure Meca-19102016-bd
Brochure Meca-19102016-bd
 
Protection des métaux contre la corrosion
Protection des métaux contre la corrosionProtection des métaux contre la corrosion
Protection des métaux contre la corrosion
 

Ähnlich wie CoursUML-SlimMesfar-Total

Présentation cours UML.pptx
Présentation  cours UML.pptxPrésentation  cours UML.pptx
Présentation cours UML.pptxPrinceLankoand
 
Support de cours Conception orientée objets - partie 1.pdf
Support de cours Conception orientée objets - partie 1.pdfSupport de cours Conception orientée objets - partie 1.pdf
Support de cours Conception orientée objets - partie 1.pdfYasushiTsubakik
 
Uml partie 1
Uml partie 1Uml partie 1
Uml partie 1Lamine Niane
 
Rattrapage uml
Rattrapage umlRattrapage uml
Rattrapage umlvangogue
 
SysML (Valtech Days 2008)
SysML (Valtech Days 2008)SysML (Valtech Days 2008)
SysML (Valtech Days 2008)Pascal Roques
 
UML Part1-Introduction Mansouri
UML Part1-Introduction MansouriUML Part1-Introduction Mansouri
UML Part1-Introduction MansouriMansouri Khalifa
 
Présentation UML.ppt
Présentation UML.pptPrésentation UML.ppt
Présentation UML.pptNajiHita1
 
Introduction Ă  Sysml
Introduction Ă  SysmlIntroduction Ă  Sysml
Introduction Ă  SysmlYassine SIDKI
 
ppt sur Le langage de modélisation UML.pdf
ppt sur  Le langage de modélisation UML.pdfppt sur  Le langage de modélisation UML.pdf
ppt sur Le langage de modélisation UML.pdfimenhamada17
 
UML-jamil.pptx
UML-jamil.pptxUML-jamil.pptx
UML-jamil.pptxkdekde1
 
Unified Modeling Language Intro 2021-2022 VF
Unified Modeling Language Intro 2021-2022 VFUnified Modeling Language Intro 2021-2022 VF
Unified Modeling Language Intro 2021-2022 VFcifaf13039
 
diagramme de cas d'utilisation
diagramme de cas d'utilisationdiagramme de cas d'utilisation
diagramme de cas d'utilisationKamel Eddine Heragmi
 
7 diagramme de cas d'utilisation
7 diagramme de cas d'utilisation7 diagramme de cas d'utilisation
7 diagramme de cas d'utilisationKamel Eddine Heragmi
 
Introduction à l'objet - DeuxiÚme année ISIMA
Introduction à l'objet - DeuxiÚme année ISIMAIntroduction à l'objet - DeuxiÚme année ISIMA
Introduction à l'objet - DeuxiÚme année ISIMALoic Yon
 
Introduction Ă  NetLogo
Introduction Ă  NetLogoIntroduction Ă  NetLogo
Introduction Ă  NetLogoAlvaro Gil
 

Ähnlich wie CoursUML-SlimMesfar-Total (20)

Présentation cours UML.pptx
Présentation  cours UML.pptxPrésentation  cours UML.pptx
Présentation cours UML.pptx
 
Support de cours Conception orientée objets - partie 1.pdf
Support de cours Conception orientée objets - partie 1.pdfSupport de cours Conception orientée objets - partie 1.pdf
Support de cours Conception orientée objets - partie 1.pdf
 
Uml 2
Uml 2Uml 2
Uml 2
 
Uml partie 1
Uml partie 1Uml partie 1
Uml partie 1
 
Rattrapage uml
Rattrapage umlRattrapage uml
Rattrapage uml
 
CM uml-intro
CM uml-introCM uml-intro
CM uml-intro
 
SysML (Valtech Days 2008)
SysML (Valtech Days 2008)SysML (Valtech Days 2008)
SysML (Valtech Days 2008)
 
UML Part1-Introduction Mansouri
UML Part1-Introduction MansouriUML Part1-Introduction Mansouri
UML Part1-Introduction Mansouri
 
Présentation UML.ppt
Présentation UML.pptPrésentation UML.ppt
Présentation UML.ppt
 
Introduction Ă  Sysml
Introduction Ă  SysmlIntroduction Ă  Sysml
Introduction Ă  Sysml
 
ppt sur Le langage de modélisation UML.pdf
ppt sur  Le langage de modélisation UML.pdfppt sur  Le langage de modélisation UML.pdf
ppt sur Le langage de modélisation UML.pdf
 
UML-jamil.pptx
UML-jamil.pptxUML-jamil.pptx
UML-jamil.pptx
 
Unified Modeling Language Intro 2021-2022 VF
Unified Modeling Language Intro 2021-2022 VFUnified Modeling Language Intro 2021-2022 VF
Unified Modeling Language Intro 2021-2022 VF
 
Cours uml
Cours umlCours uml
Cours uml
 
diagramme de cas d'utilisation
diagramme de cas d'utilisationdiagramme de cas d'utilisation
diagramme de cas d'utilisation
 
7 diagramme de cas d'utilisation
7 diagramme de cas d'utilisation7 diagramme de cas d'utilisation
7 diagramme de cas d'utilisation
 
Uml upxp2
Uml upxp2Uml upxp2
Uml upxp2
 
Introduction à l'objet - DeuxiÚme année ISIMA
Introduction à l'objet - DeuxiÚme année ISIMAIntroduction à l'objet - DeuxiÚme année ISIMA
Introduction à l'objet - DeuxiÚme année ISIMA
 
Plasticitérecherche2017
Plasticitérecherche2017Plasticitérecherche2017
Plasticitérecherche2017
 
Introduction Ă  NetLogo
Introduction Ă  NetLogoIntroduction Ă  NetLogo
Introduction Ă  NetLogo
 

CoursUML-SlimMesfar-Total

  • 1. 1 Conception des SystĂšmes d’Information Langage de modĂ©lisation UML Unified Modeling Language Dr. Slim Mesfar Mail : mesfarslim@yahoo.fr
  • 2. Ch1 : Introduction  Notion de systĂšme d’information  PrĂ©sentation de UML2  PrĂ©sentation des diffĂ©rentes Ă©tapes de dĂ©veloppement logiciel Chapitre 2 : Analyse fonctionnelle  Diag de contexte statique  Diag de CU avec description textuelle des CU Chapitre 3 : Analyse dynamique  Diag de contexte dynamique  Diag de sĂ©quence systĂšme  Diag d'activitĂ©s (modĂ©lisation processus mĂ©tier et CU) Chapitre 4 : Analyse statique  Diag de classes d’analyse (+ contraintes, stĂ©rĂ©otypes)  Diag d’objets  Diag de package Chapitre 5 : Conception  Diag de sĂ©quence objet (stĂ©rĂ©otypes de Jacobson)  Diag de classes de conception (navigabilitĂ©, traduction de l’analyse)  Diag de communication / de collaboration  Diag Ă©tat transition  Diag de composants  Diag de dĂ©ploiement Chapitre 6 : ImplĂ©mentation  GĂ©nĂ©ration Ă  partir d’un diagramme de classe : - D’une base de donnĂ©es - Code source JAVA/C++
 2 Plan du cours
  • 3. 3 Les systĂšmes d’information ‱ Des exemples de SI – Une application de gestion de stocks d’un supermarchĂ© – Un site web de vente en ligne – Une bibliothĂšque numĂ©rique – Un portail avec intranet pour une Ă©cole/ institut – ... Introduction gĂ©nĂ©rale
  • 4. 4 Les systĂšmes d’information ‱ Qu’est ce qu’un SI ? un SI est un ou plusieurs logiciels manipulant un ensemble d’informations structurĂ©es et cohĂ©rentes. Par exemple : l’intra d’une Ă©cole supĂ©rieure : des cours, des Ă©lĂšves, des profs, des horaires, des projets, des groupes, des notes, etc. On peut les consulter, les crĂ©er, les modifier, les dĂ©truire. ïżœ Plus largement, aujourd’hui, tout logiciel peut ĂȘtre considĂ©rĂ© comme un systĂšme d’information. Introduction gĂ©nĂ©rale
  • 5. 5 Les systĂšmes d’information ‱ Autrement dit : un SI est un ensemble organisĂ© de ressources : matĂ©riel, logiciel, personnel, donnĂ©es, procĂ©dures
 permettant d’acquĂ©rir, de traiter, de stocker des informations (sous formes de donnĂ©es, textes, images, sons, etc.) dans et entre des organisations. ïżœ NĂ©cessitĂ© de collaboration entre les intervenants pour garantir la bonne conduite du processus de dĂ©veloppement d’un SI ïżœ NĂ©cessitĂ© d’un langage de communication unifiĂ© Introduction gĂ©nĂ©rale
  • 6. 6 Sommaire ‱ Historique ‱ La ModĂ©lisation ‱ Les Diagrammes UML Chapitre 1 : Introduction et historique d’UML
  • 8. 8 BOOCH ‱ Pionnier de l’OrientĂ©-Objet – Article en 1981: ‘ Object Oriented Development ’ – Au dĂ©but, mĂ©thode pour le dĂ©veloppement d’applications en Ada pour le ‘ Department of Defense ’ – Etendue au C++ ‱ Distingue 2 niveaux: – Logique ‱ Diagrammes de classes ‱ Diagramme d’instances ‱ Diagramme Ă©tats/transitions – Physique ‱ Diagrammes de modules (principe des packages) ‱ Diagramme de processus Les Principales MĂ©thodes Objet Grady Booch Historique
  • 9. 9 OMT ‱ Object Modeling Technique – Livre de James Rumbaugh (1991) ‱ 3 axes – Statique : identifie les propriĂ©tĂ©s des objets et leurs liaisons avec les autres objets – Dynamique : dĂ©finit le cycle de vie des objets : comportement des objets, les diffĂ©rents Ă©tats par lesquels ils passent, et les Ă©vĂ©nements dĂ©clanchant ces changements d’états – Fonctionnel : prĂ©cise les fonctions rĂ©alisĂ©es par les objets par l’intermĂ©diaire des mĂ©thodes. James Rumbaugh Les Principales MĂ©thodes Objet Historique
  • 10. 10 OOSE ‱ Object Oriented Software Engineering – Souvent appelĂ©e Objectory ‱ 5 modĂšles – Description des besoins – Analyse – Conception – Implantation – Test ‱ 3 types d ’objets – entitĂ©s – contrĂŽles – interfaces ‱ Notion de Cas d’Utilisation: Use Cases Ivar Jacobson Les Principales MĂ©thodes Objet Historique
  • 11. 11 MĂ©thodes Objets ‱ En 1994, plus de 50 mĂ©thodes OO – Fusion, Shlaer-Mellor, ROOM, Classe-Relation, Wirfs-Brock, Coad- Yourdon, MOSES, Syntropy, BOOM, OOSD, OSA, BON, Catalysis, COMMA, HOOD, Ooram, DOORS... ‱ Les notations graphiques sont toutes diffĂ©rentes ‱ L’industrie a besoin de standards Les Principales MĂ©thodes Objet Historique
  • 12. 12 Naissance d’UML ‱ 1993-1994: Booch’93, OMT-2 – Les 2 mĂ©thodes sont leaders sur le marchĂ© – Elles sont de plus en plus proches ‱ Octobre 1994 – J. Rumbaugh (OMT) rejoint G. Booch – Annonce de l’unification des deux mĂ©thodes ‱ Octobre 1995: MĂ©thode UnifiĂ©e v0.8 ‱ Fin 1995: le fondateur d ’Objectory, Ivar Jacoson, rejoint Ă  son tour J. Rumbaugh et G. Booch ‱ Janvier 97 : Soumission Ă  l’OMG de la version UML 1.0 – OMG: Object Management Group ‱ Organisme Ă  but non lucratif fondĂ© en 1989 ‱ Plus de 700 entreprises y adhĂšrent ‱ Septembre 97 : UML 1.1 Historique
  • 13. 13 Conclusion ‱ UML: Prendre le meilleur de chacune des mĂ©thodes – OOSE (Jacobson): Use Cases – OMT (Rumbaugh): Analyse – Booch: Conception, Architecture ‱ Depuis 1997, UML est dans le domaine public ‱ A partir Juin 2004 : Version UML 2.x avec divers apports : – Plus de possibilitĂ©s de reprĂ©sentation, de prĂ©cision et de capacitĂ©s de modĂ©lisation (ex : diagrammes de sĂ©quence totalement refondus) – Meilleur support de l’ingĂ©nierie des systĂšmes – PossibilitĂ© de dĂ©finir et de raffiner les systĂšmes jusqu’aux couches logicielles – 
 ïżœ Plus proche des MDAs ‱ Actuellement : Version UML 2.4.1 (depuis Aout 2011) La Convergence vers UML Historique
  • 15. 15 UML ? ‱ Est une notation, pas une mĂ©thode ‱ Est un langage de modĂ©lisation objet ‱ Convient Ă  tous les langages objets – SmallTalk – C++ (HĂ©ritage multiple) – Java (Interface) DĂ©finition La ModĂ©lisation
  • 16. 16 Un modĂšle permet de : – mieux comprendre le systĂšme Ă  dĂ©velopper, – visualiser le systĂšme comme il est ou comme il devrait l'ĂȘtre, – valider le modĂšle vis Ă  vis des clients, – spĂ©cifier les structures de donnĂ©es et le comportement du systĂšme, – fournir un guide pour la construction du systĂšme, – documenter le systĂšme et les dĂ©cisions prises. La ModĂ©lisation A quoi sert la modĂ©lisation?
  • 17. 17 Qu’apporte la modĂ©lisation objet? ‱ plus grande indĂ©pendance du modĂšle par rapport aux fonctionnalitĂ©s demandĂ©es ‱ des fonctionnalitĂ©s peuvent ĂȘtre rajoutĂ©es ou modifiĂ©es sans que le modĂšle objet change ‱ plus proche du monde rĂ©el La ModĂ©lisation A quoi sert la modĂ©lisation?
  • 18. 18 La ModĂ©lisation Objectifs d’UML ‱ReprĂ©senter des systĂšmes entiers, ‱CrĂ©er un langage de modĂ©lisation utilisable Ă  la fois par les humains et les machines, ‱Rechercher un langage commun qui est utilisable par toutes les mĂ©thodes et adaptĂ© Ă  toutes les phases du dĂ©veloppement Pourquoi UML?
  • 19. 19 La ModĂ©lisation UML ? ïżœUML n’est pas une mĂ©thode ïżœUML est un langage de modĂ©lisation objet ïżœUML est adoptĂ© par toutes les mĂ©thodes objet ïżœUML est une norme dans le domaine public ‱visualiser ‱spĂ©cifier ‱construire ‱documenter ‱S.I des entreprises ‱Banques et les services financiers ‱TĂ©lĂ©communications ‱Transport ‱DĂ©fense et aĂ©rospatiale ‱Scientifique ‱Applications distribuĂ©es par le WEB UtilisĂ© pour UtilisĂ© dans
  • 20. 20 Architecture 4+1 La ModĂ©lisation ‱ Vue des cas d'utilisation : c'est la description du modĂšle « vue » par les acteurs du systĂšme. Elle correspond aux besoins attendus par chaque acteur (c'est le QUOI et le QUI).
  • 21. 21 Architecture 4+1 La ModĂ©lisation ‱Vue logique : c'est la dĂ©finition du systĂšme vu de l'intĂ©rieur. Elle explique comment peuvent ĂȘtre satisfaits les besoins des acteurs (c'est le COMMENT). ‱Vue d'implĂ©mentation : cette vue dĂ©finit les dĂ©pendances entre les modules. ‱Vue de comportement ou des processus : c'est la vue temporelle et technique, qui met en Ɠuvre les notions de tĂąches concurrentes, stimuli, contrĂŽle, synchronisation, etc. ‱Vue de dĂ©ploiement : cette vue dĂ©crit la position gĂ©ographique et l'architecture physique de chaque Ă©lĂ©ment du systĂšme (c'est le OÙ).
  • 22. 22 Axes de ModĂ©lisation avec UML Statiques DynamiquesFonctionnels Diagramme de Classes Diagramme d’Objets Diagramme de Composants Diagramme de DĂ©ploiement Diagramme de paquetages Diagramme de structure composite (UML 2.x) Diagramme de Use Case Diagramme de SĂ©quence Diagramme de communication (UML 2.x) Diagramme global d’interaction (UML 2.x) Diagramme de temps (UML 2.x) Diagramme d'Etats-Transitions Diagramme d'activitĂ©s Cycle de DĂ©veloppement La ModĂ©lisation
  • 23. 23 ModĂ©lisation fonctionnelle La ModĂ©lisation ‱ Diagramme des cas d'utilisation (use-cases) : il permet d'identifier les possibilitĂ©s d'interaction entre le systĂšme et les acteurs (intervenants extĂ©rieurs au systĂšme), c'est-Ă -dire toutes les fonctionnalitĂ©s que doit fournir le systĂšme.
  • 24. 24 ModĂ©lisation statique La ModĂ©lisation ‱Diagramme de classes : il reprĂ©sente les classes intervenant dans le systĂšme. ‱Diagramme d'objets : il sert Ă  reprĂ©senter les instances de classes (objets) utilisĂ©es dans le systĂšme. ‱Diagramme de composants : il permet de montrer les composants du systĂšme d'un point de vue physique, tels qu'ils sont mis en Ɠuvre (fichiers, bibliothĂšques, bases de donnĂ©es...) ‱Diagramme de dĂ©ploiement : il sert Ă  reprĂ©senter les Ă©lĂ©ments matĂ©riels (ordinateurs, pĂ©riphĂ©riques, rĂ©seaux, systĂšmes de stockage...) et la maniĂšre dont les composants du systĂšme sont rĂ©partis sur ces Ă©lĂ©ments matĂ©riels et interagissent entre eux.
  • 25. 25 ModĂ©lisation statique La ModĂ©lisation ‱Diagramme des paquetages : un paquetage Ă©tant un conteneur logique permettant de regrouper et d'organiser les Ă©lĂ©ments dans le modĂšle UML, le Diagramme de paquetage sert Ă  reprĂ©senter les dĂ©pendances entre paquetages, c’est-Ă -dire les dĂ©pendances entre ensembles de dĂ©finitions. ‱Diagramme de structure composite (UML 2.x) : permet de dĂ©crire sous forme de boĂźte blanche les relations entre composants d'une classe.
  • 26. 26 ModĂ©lisation dynamique La ModĂ©lisation ‱Diagramme de sĂ©quence : reprĂ©sentation sĂ©quentielle du dĂ©roulement des traitements et des interactions entre les Ă©lĂ©ments du systĂšme et/ou de ses acteurs. ‱Diagramme de communication (UML 2.x) : reprĂ©sentation simplifiĂ©e d'un diagramme de sĂ©quence se concentrant sur les Ă©changes de messages entre les objets. ‱Diagramme global d'interaction (UML 2.x) : permet de dĂ©crire les enchaĂźnements possibles entre les scĂ©narios prĂ©alablement identifiĂ©s sous forme de diagrammes de sĂ©quences (variante du diagramme d'activitĂ©s).
  • 27. 27 ModĂ©lisation dynamique La ModĂ©lisation ‱ Diagramme de temps (UML 2.x) : permet de dĂ©crire les variations d'une donnĂ©e au cours du temps. ‱Diagramme Ă©tats-transitions : permet de dĂ©crire sous forme de machine Ă  Ă©tats finis le comportement du systĂšme ou de ses composants. ‱ Diagramme d'activitĂ©s : permet de dĂ©crire sous forme de flux ou d'enchaĂźnement d'activitĂ©s le comportement du systĂšme ou de ses composants.
  • 29. ïżœ Expression des besoins ïżœ SpĂ©cification ïżœ Analyse ïżœ Conception ïżœ ImplĂ©mentation ïżœ Validation ïżœ Tests de vĂ©rification ïżœ Maintenance et Ă©volution Les diffĂ©rentes Ă©tapes du dĂ©veloppement logiciel
  • 30. ïżœ L’ Expression des besoins - Interview de l’expert mĂ©tier ïżœ La SpĂ©cification – Ce que le systĂšme doit ĂȘtre et comment il peut ĂȘtre utilisĂ©. ïżœ L’Analyse – L’objectif est de dĂ©terminer les Ă©lĂ©ments intervenant dans le systĂšme Ă  construire, ainsi que leur structure et leurs relations . Elle doit dĂ©crire chaque objet selon 3 axes :  Axe fonctionnel : savoir-faire de l’objet.  Axe statique : structure de l’objet.  Axe dynamique : cycle de vie de l’objet au cours de l’application (États et messages de l’objet). Ces descriptions ne tiennent pas compte de contraintes techniques (informatique).
  • 31. ïżœ La Conception : Elle consiste Ă  apporter des solutions techniques aux descriptions dĂ©finies lors de l’analyse : ‱ architecture technique ‱ performances et optimisation ‱ stratĂ©gie de programmation On y dĂ©finit les structures et les algorithmes. Cette phase sera validĂ©e lors des tests. ïżœ L’implĂ©mentation C’est la rĂ©alisation de la programmation.
  • 32. ïżœ La Validation Le dĂ©veloppement d’une application doit ĂȘtre liĂ© Ă  un contrat ayant une forme d’un cahier des charges, oĂč doivent se trouver tous les besoins de l’utilisateur. Ce cahier des charges doit ĂȘtre rĂ©digĂ© avec la collaboration de l’utilisateur et peut ĂȘtre par ailleurs complĂ©tĂ© par la suite. Tout au long de ces Ă©tapes, il doit y avoir des validations en collaboration Ă©galement avec l’utilisateur. Une autre validation doit aussi ĂȘtre envisagĂ©e lors de l’achĂšvement du travail de dĂ©veloppement, une fois que la qualitĂ© technique du systĂšme est dĂ©montrĂ©e. Elle permettra de garantir la logique et la complĂ©tude du systĂšme.
  • 33. ïżœ Les tests de vĂ©rification Ils permettent de rĂ©aliser des contrĂŽles pour la qualitĂ© technique du systĂšme. Il s’agit de relever les Ă©ventuels dĂ©fauts de conception et de programmation (revue de code, tests des composants,...). Il faut instaurer ces tests tout au long du cycle de dĂ©veloppement et non Ă  la fin pour Ă©viter des reprises consĂ©quentes du travail (programmes de tests robustes ; Logiciels de tests).
  • 34. ïżœ Maintenance et Ă©volution Deux sortes de maintenances sont Ă  considĂ©rer :  Une maintenance corrective, qui consiste Ă  traiter les “buggs ”.  Une maintenance Ă©volutive, qui permet au systĂšme d’intĂ©grer de nouveaux besoins ou des changements technologiques.
  • 35. Le dĂ©veloppement d’un logiciel repose sur les activitĂ©s suivantes : ïżœ DĂ©termination des besoins (quel est le cahier des charges ?) ïżœ Analyse (que fera le logiciel ?) ïżœ Conception (comment le fera-t-il ?) ïżœ ImplĂ©mentation (quel code exĂ©cutera-t-il ?) ïżœ Test (sera-t-il conforme Ă  l’analyse et au cahier des charges ?) Une organisation de ces activitĂ©s forme un processus de dĂ©veloppement. RĂ©sumĂ© des diffĂ©rentes Ă©tapes du dĂ©veloppement logiciel
  • 36. 36 Chap 2 : Analyse fonctionnelle
  • 37. 37 Analyse fonctionnelle Permet d’élaborer le cahier des charges ou le document de spĂ©cification des besoins du logiciel ïżœ permet de structurer les besoins des utilisateurs, les objectifs correspondants d'un systĂšme ïżœ On recense, l'ensemble des fonctionnalitĂ©s d'un systĂšme en examinant les besoins fonctionnels de chaque acteur.
  • 38. 38 DĂ©termination des besoins Besoins (« requirement ») = exigence de ce que le systĂšme devrait satisfaire ïżœ DĂ©termination des besoins attendus par chaque acteur : ïżœ le QUI ? ïżœ le QUOI ? Analyse fonctionnelle
  • 39. 39 DĂ©termination des besoins ‱ Besoins fonctionnels – À quoi sert le systĂšme – Ce que doit faire le systĂšme, les fonctions utiles – Description des donnĂ©es manipulĂ©es ‱ Besoins non fonctionnels : des restrictions ou des contraintes qui pĂšsent sur un service du systĂšme – description des contraintes, – Pour chaque fonction et pour le systĂšme global, il est possible d’exprimer diffĂ©rents types de contraintes. Exemple : portabilitĂ©, compatibilitĂ©, fiabilitĂ©, sĂ©curitĂ©, 
 Les diffĂ©rents types de besoins
  • 40. 40 Analyse fonctionnelle MĂ©thodologie : 1. Identifier les acteurs, a. humains ou systĂšmes connexes b. principaux ou secondaires 2. Etablir le diagramme de contexte statique 3. Identifier les cas d'utilisation (UC) 4. Description des UC a. graphiquement b. textuellement
  • 41. 41 2.1. Les diagrammes de contexte statique
  • 42. 42 Le diagramme de contexte statique ‱ Le diagramme de contexte statique permet de positionner le systĂšme dans son environnement selon un point de vue matĂ©riel. ‱ Le systĂšme est donc dĂ©crit physiquement est non pas en termes de fonctionnalitĂ©s ‱ De plus, pour chaque type d’élĂ©ment matĂ©riel extĂ©rieur au systĂšme, il est prĂ©cisĂ© le nombre minimal et maximal, appelĂ©s cardinalitĂ©s, qui sont mis en jeu
  • 43. 43 2.2. Les diagrammes de cas d’utilisation
  • 44. ‱ Le diagramme de cas d’utilisation dĂ©crit les fonctionnalitĂ©s d’un systĂšme d’un point de vue utilisateur, sous la forme d’actions et de rĂ©actions ; l’ensemble des fonctionnalitĂ©s est dĂ©terminĂ© en examinant les besoins fonctionnels de tous les utilisateurs potentiels. ‱ Le but est d’identifier : – les catĂ©gories d’utilisateurs : chacune d’entre elles, appelĂ©e acteur, est susceptible de mettre en oeuvre une ou plusieurs fonctionnalitĂ©s du systĂšme ; – les besoins du systĂšme : chaque fonctionnalitĂ©, appelĂ©e cas d’utilisation, doit rĂ©pondre Ă  l’un des besoins nĂ©cessitĂ©s par une ou plusieurs catĂ©gories d’utilisateurs. 44 Le diagramme des cas d’utilisation (Use cases)
  • 45. ‱ Le diagramme des cas d’utilisation se base sur le cahier des charges pour ĂȘtre construit ; il fait donc partie, en termes de gestion de projet, de la spĂ©cification du systĂšme. ‱ Processus de construction du diagramme de cas d’utilisation 45 Le diagramme des cas d’utilisation (Use cases)
  • 46. 46 Le diagramme des cas d’utilisation (Use cases) Les diagrammes UML
  • 47. 47 1. Acteur : entitĂ© (humain ou machine) externe qui agit sur le systĂšme (opĂ©rateur, composant interne
) : Le diagramme des cas d’utilisation (Use cases) Identification des acteurs ‱permettant d’en dĂ©terminer les limites ‱jouant un rĂŽle par rapport Ă  lui ‱dĂ©clenchant un stimulus initial entraĂźnant une rĂ©action du systĂšme ‱Un acteur est dĂ©crit prĂ©cisĂ©ment en quelques lignes :
  • 48. 48 1. Acteur Le diagramme des cas d’utilisation (Use cases) Identification des acteurs 4 catĂ©gories d’acteurs : ‱acteurs principaux : personnes utilisant les fonctions principales du systĂšme. Dans le cas d'un distributeur de billets, il s'agit des clients. ‱acteurs secondaires : personnes qui effectuent des tĂąches administratives ou de maintenance. Dans le cas d'un distributeur de billets, il s'agit de la personne qui recharge la caisse du distributeur. ‱matĂ©riel externe : dispositifs matĂ©riels autres que les ordinateurs comme les pĂ©riphĂ©riques. Dans le cas d'un distributeur de billets, il s'agit de l'imprimante, du lecteur de carte, de la trieuse de billets. ‱autres systĂšmes : les systĂšmes avec lesquels le systĂšme interagit. Dans le cas d'un distributeur de billets, il s'agit du groupement bancaire qui gĂšre l'ordinateur central qui relie tous les distributeurs.
  • 49. 49 Le diagramme des cas d’utilisation (Use cases) La ModĂ©lisation des besoins en UML 2. Use case : ensemble d’actions rĂ©alisĂ©es par le systĂšme, en rĂ©ponse Ă  une action d’un acteur. L’ensemble des uses cases dĂ©crit les objectifs (le but) du systĂšme. Exemple. identification, retrait de liquide. ‱ ScĂ©narios d’un CU SĂ©quence particuliĂšre de messages dans le CU pendant une interaction particuliĂšre (“chemin” dans le cas d’utilisation),
  • 50. 50 Description dĂ©taillĂ©e de chaque cas d’utilisation ïżœ Chaque cas d ’utilisation doit ĂȘtre dĂ©crit en dĂ©tail ïżœ Commencer par les CU prioritaires ïżœ Description utile pour la suite du dĂ©veloppement ïżœ Description dĂ©taillĂ©e plus ou moins formelle ïżœ langue naturelle mais structurĂ©e, ïżœ vocabulaire prĂ©cis, ïżœ ... Le diagramme des cas d’utilisation (Use case) La ModĂ©lisation des besoins en UML
  • 51. 51 Informations Ă  dĂ©crire ïżœ Quand le CU commence, prĂ©-conditions ïżœ Quand le CU se termine, post-conditions ïżœ Le chemin correspondant au dĂ©roulement normal ïżœ Les variantes possibles et les cas d’erreurs (les points d’extensions) ïżœ Les interactions entre le systĂšme et les acteurs ïżœ Les informations Ă©changĂ©es ïżœ Les Ă©ventuels besoins non fonctionnels Le diagramme des cas d’utilisation (Use case) La ModĂ©lisation des besoins en UML
  • 52. 52 Exemple de description dĂ©taillĂ©e d’un CU PrĂ©condition : Le distributeur contient des billets, il est en attente d ’une opĂ©ration, il n’est ni en panne, ni en maintenance DĂ©but : lorsqu’un client introduit sa carte bancaire dans le distributeur. Fin : lorsque la carte bancaire et les billets sont sortis. Postcondition : Si de l ’argent a pu ĂȘtre retirĂ©, la somme d’argent sur le compte est Ă©gale Ă  la somme d’argent qu’il y avait avant, moins le montant du retrait. Sinon la somme d ’argent sur le compte est la mĂȘme qu’avant. Retirer de l’Argent Retirer de l’Argent Le diagramme des cas d’utilisation (Use case) La ModĂ©lisation des besoins en UML
  • 53. 53 Retirer de l’Argent ScĂ©nario nominal : (1) le client introduit sa carte bancaire (2) le systĂšme lit la carte et vĂ©rifie si la carte est valide (3) le systĂšme demande au client de taper son code (4) le client tape son code confidentiel (5) le systĂšme vĂ©rifie que le code correspond Ă  la carte (6) le client choisi une opĂ©ration de retrait (7) le systĂšme demande le montant Ă  retirer 
 Variantes : (A) Carte invalide : au cours de l ’étape (2) si la carte est jugĂ©e invalide, le systĂšme affiche un message d ’erreur, rejĂšte la carte et le cas d ’utilisation se termine. (B) Code erronĂ© : au cours de l ’étape (5) ... Le diagramme des cas d’utilisation (Use case) La ModĂ©lisation des besoins en UML Exemple de description dĂ©taillĂ©e d’un CU
  • 54. 54 Contraintes non fonctionnelles : (A) Performance : le systĂšme doit rĂ©agir dans un dĂ©lai infĂ©rieur Ă  4 secondes, quelque soit l’action de l ’utilisateur. (B) RĂ©sistance aux pannes : si une coupure de courant ou une autre dĂ©faillance survient au cours du cas d ’utilisation, la transaction sera annulĂ©e, l ’argent ne sera pas distribuĂ©. Le systĂšme doit pouvoir redĂ©marrer automatiquement dans un Ă©tat cohĂ©rent et sans intervention humaine. (C) RĂ©sistance Ă  la charge : le systĂšme doit pouvoir gĂ©rer plus de 1000 retraits d ’argent simultanĂ©ment ... Retirer de l’Argent Retirer de l’Argent Le diagramme des cas d’utilisation (Use case) La ModĂ©lisation des besoins en UML Exemple de description dĂ©taillĂ©e d’un CU
  • 55. 55 Le diagramme des cas d’utilisation (Use case) La ModĂ©lisation des besoins en UML ‱Relations entre les cas d’utilisation -« utilise» ou « include »: dĂ©finit le fait qu’un use case contient le comportement dĂ©fini dans un autre use case. Cas d'utilisation B << Utilise >> Cas d'utilisation A -« Ă©tend » ou « extend »: dĂ©finit le fait qu’une instance d’un use case peut ĂȘtre augmentĂ©e avec un comportement quelconque dĂ©fini dans un use case Ă©tendu Cas d'utilisation A Cas d'utilisation B << Etend >> - « gĂ©nĂ©ralisation » Un cas A est une gĂ©nĂ©ralisation d’un cas B si B est un cas particulier de A.
  • 56. 56 Le diagramme des cas d’utilisation (Use case) La ModĂ©lisation des besoins en UML ‱Relations entre les cas d’utilisation
  • 57. 57 Le diagramme des cas d’utilisation (Use case) La ModĂ©lisation des besoins en UML ‱Relation d’hĂ©ritage entre les acteurs secrĂ©taire mĂ©decin Consulter fiche patient Remplir fiche consultation crĂ©er fiche patient
  • 58. Erreurs usuelles - rĂŽles 58 Le diagramme des cas d’utilisation (Use case) La ModĂ©lisation des besoins en UML
  • 59. Erreurs usuelles - factorisation 59 Le diagramme des cas d’utilisation (Use case) La ModĂ©lisation des besoins en UML GĂ©rer client
  • 60. 60 Chap 3 : Analyse dynamique
  • 61. 61 3.1. Les diagrammes de contexte dynamique
  • 62. 62 Le diagramme de contexte dynamique ‱ Le diagramme de contexte dynamique permet de positionner le systĂšme dans son environnement selon le point de vue des communications. ‱ Il reprend les Ă©lĂ©ments du contexte statique et prĂ©cise les Ă©changes d’informations qui sont rĂ©alisĂ©s entre le systĂšme et les Ă©lĂ©ments matĂ©riels extĂ©rieurs au systĂšme. ‱ Le systĂšme est donc dĂ©crit physiquement et logiquement.
  • 63. 63 3.2. Les diagrammes de sĂ©quence systĂšme
  • 64. 64 Le diagramme de sĂ©quence Les diagrammes UML Deux diffĂ©rents types de diagrammes de sĂ©quence : ‱ Diagramme de sĂ©quence systĂšme au niveau de l’analyse dynamique ïżœreprĂ©sentation des diffĂ©rents scĂ©narios des cas d’utilisation ïżœ interaction entre les acteurs et le systĂšme (une boite noire) selon un ordre chronologique ‱Diagramme de sĂ©quence dĂ©taillĂ© au niveau de la conception ïżœ reprĂ©sentation des collaborations entre des objets pour la rĂ©alisation d’un cas d’utilisation, selon un point de vue temporel. ïżœ reprĂ©sentation de la chronologie des envois de messages entre les objets. S. Mesfar
  • 65. 65 Le diagramme de sĂ©quence Les diagrammes UML Du diagramme de sĂ©quence systĂšme Ă  la conception S. Mesfar
  • 66. 66 Le diagramme de sĂ©quence Les diagrammes UML ‱ Il y a autant de diagrammes de sĂ©quence qu’il y a de scĂ©narios ‱ Un ScĂ©nario montre une sĂ©quence particuliĂšre d’interactions entre objets, dans un seul contexte d’exĂ©cution du systĂšme ‱ Un scĂ©nario peut ĂȘtre vu comme une rĂ©ponse Ă  un besoin ou une partie d’un besoin du diagramme des Uses Cases. ‱ On y fait intervenir des objets / systĂšme complet, des messages et des Ă©vĂ©nements ReprĂ©sentation de ScĂ©narios objet1 : Classe objet2 : Classe Objets de type Classe S. Mesfar
  • 67. 67 Le diagramme de sĂ©quence Les diagrammes UML ïżœl'ordre d'envoi d'un message est dĂ©terminĂ© par sa position sur l'axe vertical du diagramme ; le temps s'Ă©coule "de haut en bas" de cet axe : La ligne de vie. La disposition des objets sur l'axe horizontal n'a pas de consĂ©quence particuliĂšre sur la sĂ©mantique du diagramme. S. Mesfar
  • 68. NumĂ©rotation des messages ‱ Les messages peuvent ĂȘtre numĂ©rotĂ©s sĂ©quentiellement A B 1: Message A B 1: Message 1 C 1.1: message 2 Le diagramme de sĂ©quence Les diagrammes UML S. Mesfar 68
  • 69. DurĂ©e d’activation(pĂ©riode d’activation) – correspond au temps pendant lequel un objet effectue une action – est reprĂ©sentĂ©e par une bande rectangulaire : ‱ Le long de la ligne de vie de l’objet ‱ Dont les extrĂ©mitĂ©s reprĂ©sentent le dĂ©but et la fin de l’activitĂ©. Un objet DurĂ©e d’activation Objet 1 Objet 2 Remarque : souvent quand l’objet est en activitĂ© continue, on nĂ©glige la reprĂ©sentation de cette pĂ©riode d’activation Le diagramme de sĂ©quence Les diagrammes UML S. Mesfar 69
  • 70. 70 Le diagramme de sĂ©quence Les diagrammes UML Notation Graphique Objet S. Mesfar Appelant: Ligne tĂ©lĂ©phonique: AppelĂ©: dĂ©croche() tonalitĂ© numĂ©rotation() indication sonnerie indication sonnerie() dĂ©croche
  • 71. Transmission de donnĂ©es ‱ Les messages peuvent vĂ©hiculer des donnĂ©es entre les acteurs et le systĂšme ou entre les objets A B 1: Message (donnee1, donnee2) Le diagramme de sĂ©quence Les diagrammes UML S. Mesfar 71
  • 72. 72 Le diagramme de sĂ©quence Les diagrammes UML ReprĂ©sentation graphique SystĂšme comme une boite noire S. Mesfar
  • 73. 73 Le diagramme de sĂ©quence Les diagrammes UML ‱SpĂ©cificitĂ©s des diagrammes de sĂ©quences ïżœun objet peut s’envoyer un message, Un objet: Message rĂ©flexif S. Mesfar
  • 74. 74 Le diagramme de sĂ©quence Les diagrammes UML ReprĂ©sentation graphique enrichie S. Mesfar
  • 75. 75 Le diagramme de sĂ©quence Les diagrammes UML ‱SpĂ©cificitĂ©s des diagrammes de sĂ©quences ïżœun message peut entraĂźner la crĂ©ation ou la destruction d’autres objets, CrĂ©er DĂ©truire Un objet: Un autre objet: S. Mesfar
  • 76. Les types de messages Dans un diagramme de sĂ©quences trois principaux types de messages sont distinguĂ©s : ‱message synchrone (flĂšche avec une extrĂ©mitĂ© pleine) Bloque l’émetteur jusqu'Ă  prise en compte du message par le destinataire. Le flot de contrĂŽle passe de l'Ă©metteur au rĂ©cepteur (l'Ă©metteur devient passif et le rĂ©cepteur actif) Ă  la prise en compte du message. ‱message asynchrone (flĂšche avec une extrĂ©mitĂ© non pleine) N'interrompt pas l'exĂ©cution de l’émetteur. Le message envoyĂ© peut ĂȘtre pris en compte par le rĂ©cepteur Ă  tout moment ou ignorĂ© (jamais traitĂ©). Le diagramme de sĂ©quence Les diagrammes UML S. Mesfar 76
  • 77. Les rĂ©ponses aux messages Dans le cas des envois synchrones, le retour peut ĂȘtre implicite en fin d'activitĂ©s et ne nĂ©cessitera pas de reprĂ©sentation particuliĂšre Dans le cas des envois asynchrones, le retour doit ĂȘtre explicite Le diagramme de sĂ©quence Les diagrammes UML S. Mesfar 77
  • 78. Les types de messages Sd diagramme1 Objet1: Objet2: Objet3::client Message 1( ) Message 2( ) Message 3( ) Message 5( ) Message 6( ) Retour Message 3( ) Message synchrone Message asynchrone Message 4( ) Activation d’un objet Le diagramme de sĂ©quence Les diagrammes UML S. Mesfar 78
  • 79. Exemple Le diagramme de sĂ©quence Les diagrammes UML S. Mesfar 79
  • 80. ComitĂ© de programme ComitĂ© d'organisation PAPIERAuteur RAPPORTLecteur Appel( ) Enregistrer le papier Papier enregistrĂ© Affecter_lecteur( ) Note( ) RĂ©diger( ) Envoi Enreg_papier(true) EvaluĂ©( ) Papier Ă©valuĂ© Exemple2 Le diagramme de sĂ©quence Les diagrammes UML S. Mesfar 80
  • 81. Exemple3 Le diagramme de sĂ©quence Les diagrammes UML S. Mesfar 81
  • 82. Autres types de messages Dans un diagramme de sĂ©quence, il peut y avoir d’autres types de messages tels que: Le diagramme de sĂ©quence Les diagrammes UML ‱message minutĂ© (timeout) : Bloque l'expĂ©diteur pendant un temps donnĂ© (qui peut ĂȘtre spĂ©cifiĂ© dans une contrainte), en attendant la prise en compte du message par le rĂ©cepteur. L'expĂ©diteur est libĂ©rĂ© si la prise en compte n'a pas eu lieu pendant le dĂ©lai spĂ©cifiĂ©. ‱ message dĂ©robant : Le message est mis en attente dans une liste d'attente de traitement chez le rĂ©cepteur. S. Mesfar 82
  • 83. S. Mesfar 83 Le diagramme de sĂ©quence Les diagrammes UML Pseudo-code L’ajout de pseudo-code sur la partie gauche du diagramme permet la reprĂ©sentation des boucles et des branchements alternatifs ïżœ les diagrammes de sĂ©quence peuvent reprĂ©senter la forme gĂ©nĂ©rale d’une interaction , au-delĂ  de la seule prise en compte d’un scĂ©nario particulier ïżœ
  • 84. S. Mesfar 84 Le diagramme de sĂ©quence Les diagrammes UML Pseudo-code ïżœ
  • 85. Diagramme de sĂ©quences : Fragment d’interaction ou fragments combinĂ©s Un fragment d’interaction se reprĂ©sente globalement comme un diagramme de sĂ©quence dans un rectangle avec indication dans le coin Ă  gauche du nom du fragment. Un port d’entrĂ©e et un port de sortie peuvent ĂȘtre indiquĂ©s pour connaĂźtre la maniĂšre dont ce fragment peut ĂȘtre reliĂ© au reste du diagramme. Dans le cas oĂč aucun port n’est indiquĂ© c’est l’ensemble du fragment qui est appelĂ© pour exĂ©cution Le diagramme de sĂ©quence Les diagrammes UML S. Mesfar 85
  • 86. Fragment d’interaction Le diagramme de sĂ©quence Les diagrammes UML S. Mesfar 86
  • 87. Un fragment d’interaction dit combinĂ© correspond Ă  un ensemble d’interactions auquel on applique un opĂ©rateur. Un frag combinĂ© se reprĂ©sente globalement comme un diagramme de sĂ©quence avec indication dans le coin Ă  gauche du nom de l’opĂ©rateur. 13 opĂ©rateurs ont Ă©tĂ© dĂ©finis dans UML : alt, opt, loop, par, strict/weak, break, ignore/consider, critical, negative, assertion et ref. Fragment d’interaction Le diagramme de sĂ©quence Les diagrammes UML S. Mesfar 87
  • 88. L’opĂ©rateur alt : correspond Ă  une instruction de test avec une ou plusieurs alternatives possibles. Il est aussi permis d’utiliser les clauses de type sinon. Fragment d’interaction Le diagramme de sĂ©quence Les diagrammes UML S. Mesfar 88
  • 89. L’opĂ©rateur opt : L’opĂ©rateur opt (optional) correspond Ă  une instruction de test sans alternative (sinon). Fragment d’interaction Le diagramme de sĂ©quence Les diagrammes UML S. Mesfar 89
  • 90. L’opĂ©rateur loop correspond Ă  une instruction de boucle qui permet d’exĂ©cuter une sĂ©quence d’interaction tant qu’une condition est satisfaite. Il est possible aussi d’utiliser une condition portant sur un nombre minimum et maximum d’exĂ©cution de la boucle en Ă©crivant : loop min, max. Dans ce cas, la boucle s’exĂ©cutera au minimum min fois et au maximum max fois Fragment d’interaction Le diagramme de sĂ©quence Les diagrammes UML S. Mesfar 90
  • 91. L’opĂ©rateur par L’opĂ©rateur par (parallĂšle) permet de reprĂ©senter deux sĂ©ries d’interactions qui se dĂ©roulent en parallĂšle. Fragment d’interaction Le diagramme de sĂ©quence Les diagrammes UML S. Mesfar 91
  • 92. Les opĂ©rateurs strict et weak sequencing Les opĂ©rateurs strict et weak permettent de reprĂ©senter une sĂ©rie d’interactions dont certaines s’opĂšrent sur des objets indĂ©pendants : ïżœ L’opĂ©rateur strict est utilisĂ© quand l’ordre d’exĂ©cution des opĂ©rations doit ĂȘtre strictement respectĂ©. ïżœ L’opĂ©rateur weak est utilisĂ© quand l’ordre d’exĂ©cution des opĂ©rations n’a pas d’importance. Fragment d’interaction Le diagramme de sĂ©quence Les diagrammes UML S. Mesfar 92
  • 93. Les opĂ©rateurs strict et weak sequencing Fragment d’interaction Le diagramme de sĂ©quence Les diagrammes UML S. Mesfar 93
  • 94. Les opĂ©rateurs break L’opĂ©rateur break permet de reprĂ©senter une situation exceptionnelle correspondante Ă  un scĂ©nario de rupture par rapport au scĂ©nario gĂ©nĂ©ral. Le scĂ©nario de rupture s’exĂ©cute si la condition de garde est satisfaite. Fragment d’interaction Le diagramme de sĂ©quence Les diagrammes UML S. Mesfar 94
  • 95. Les opĂ©rateurs ignore et consider Les opĂ©rateurs ignore et consider sont utilisĂ©s pour des fragments d’interactions dans lesquels on veut montrer que certains messages peuvent ĂȘtre soit absents sans avoir d’incidence sur le dĂ©roulement des interactions (ignore), soit obligatoirement prĂ©sents (consider). Fragment d’interaction Le diagramme de sĂ©quence Les diagrammes UML S. Mesfar 95
  • 96. Les opĂ©rateurs ignore et consider Fragment d’interaction Le diagramme de sĂ©quence Les diagrammes UML S. Mesfar 96
  • 97. Les opĂ©rateurs critical L’opĂ©rateur critical permet d’indiquer qu’une sĂ©quence d’interactions ne peut ĂȘtre interrompue compte tenu du caractĂšre critique des opĂ©rations traitĂ©es. On considĂšre que le traitement des interactions comprises dans la sĂ©quence critique est atomique. Fragment d’interaction Le diagramme de sĂ©quence Les diagrammes UML S. Mesfar 97
  • 98. L’opĂ©rateur critical Fragment d’interaction Le diagramme de sĂ©quence Les diagrammes UML S. Mesfar 98
  • 99. Les opĂ©rateurs neg L’opĂ©rateur neg (negative) permet d’indiquer qu’une sĂ©quence d’interactions est invalide. Fragment d’interaction Le diagramme de sĂ©quence Les diagrammes UML S. Mesfar 99
  • 100. Les opĂ©rateurs assert L’opĂ©rateur assert (assertion) permet d’indiquer qu’une sĂ©quence d’interactions est l’unique sĂ©quence possible en considĂ©rant les messages Ă©changĂ©s dans le fragment. Toute autre configuration de message est invalide. Fragment d’interaction Le diagramme de sĂ©quence Les diagrammes UML S. Mesfar 100
  • 101. Les opĂ©rateurs ref L’opĂ©rateur ref permet d’appeler une sĂ©quence d’interactions dĂ©crite par ailleurs constituant ainsi une sorte de sous-diagramme de sĂ©quence. Fragment d’interaction Le diagramme de sĂ©quence Les diagrammes UML S. Mesfar 101
  • 103. Digramme d'activitĂ©s UML permet de reprĂ©senter graphiquement le comportement d'une mĂ©thode ou le dĂ©roulement d'un cas d'utilisation, Ă  l'aide de diagrammes d'activitĂ©s (une variante des diagrammes d'Ă©tats- transitions). ‱ Une activitĂ© reprĂ©sente une exĂ©cution d'un mĂ©canisme, un dĂ©roulement d'Ă©tapes sĂ©quentielles. ‱ Le passage d'une activitĂ© vers une autre est matĂ©rialisĂ© par une transition. ‱ Les transitions sont dĂ©clenchĂ©es par la fin d'une activitĂ© et provoquent le dĂ©but immĂ©diat d'une autre (elles sont automatiques). Le diagramme d'activitĂ©s Les diagrammes UML
  • 104. Digramme d'activitĂ©s En thĂ©orie, tous les mĂ©canismes dynamiques pourraient ĂȘtre dĂ©crits par un diagramme d'activitĂ©s, mais seuls les mĂ©canismes complexes ou intĂ©ressants mĂ©ritent d'ĂȘtre reprĂ©sentĂ©s. ‱ Buts : 1. DĂ©crire le comportement gĂ©nĂ©rique d’un cas d’utilisation 2. DĂ©crire en dĂ©tail le comportement d’une opĂ©ration 3. ModĂ©liser les processus mĂ©tiers Le diagramme d'activitĂ©s Les diagrammes UML
  • 105. Le diagramme d’activitĂ©s est organisĂ©e par rapport aux actions et destinĂ©e Ă  reprĂ©senter le comportement interne d’une opĂ©ration ou d’un cas d ’utilisation. Mesurer tempĂ©rature Chauffer Refroidir AĂ©rerArrĂȘter chauffage [trop froid] [trop chaud] « synchronisation » Le diagramme d'activitĂ©s Les diagrammes UML
  • 106. ‱ Exemple de Diagramme d'activitĂ©s : Le diagramme d'activitĂ©s Les diagrammes UML
  • 107. Le but du diagramme d'activitĂ©s ‱ Diagramme d'activitĂ©s est utilisĂ© pour: – ModĂ©liser un workflow dans un use case ou entre plusieurs use cases. – SpĂ©cifier une opĂ©ration (dĂ©crire la logique d’une opĂ©ration) ‱ Le diagramme d'activitĂ©s est le plus appropriĂ© pour modĂ©liser la dynamique d’une tĂąche, d’un use case lorsque le diagramme de classe n’est pas encore stabilisĂ©. Le diagramme d'activitĂ©s Les diagrammes UML
  • 108. Notion du diagramme d'activitĂ©s Diagramme d'activitĂ©s = ‱ ensemble d'activitĂ©s liĂ©s par: – Transition (sequentielle) – Transitions alternatives (conditionnelle) – Synchronisation (disjonction et conjonctions d'activitĂ©s) – ItĂ©ration ‱ + 2 Ă©tats: Ă©tat de dĂ©part et Ă©tat de terminaison ‱ Swimlanes: reprĂ©sente le lieu, le responsable des activitĂ©s. Le diagramme d'activitĂ©s Les diagrammes UML
  • 109. Notion du diagramme d'activitĂ©s ‱Etat de dĂ©part ‱Etat de terminaison ‱Transition ‱Transition Alternative [ ] [ ] Le diagramme d'activitĂ©s Les diagrammes UML
  • 110. Notion du diagramme d'activitĂ©s Synchronisation disjonctive et conjonctive Le diagramme d'activitĂ©s Les diagrammes UML
  • 111. Notion du diagramme d'activitĂ©s ItĂ©ration Le diagramme d'activitĂ©s Les diagrammes UML
  • 112. Exemple de Diagramme d'activitĂ©s : Swimlanes / partitions Ou couloirs d’activitĂ©s Le diagramme d'activitĂ©s Les diagrammes UML
  • 113. Le diagramme d'activitĂ©s Les diagrammes UML Exemple de Diagramme d'activitĂ©s :
  • 114. Les nƓuds de contrĂŽle ‱ Il existe plusieurs types de nƓuds de contrĂŽle: – nƓud initial(initial node); – nƓud de fin d'activitĂ©s(final node); – nƓud de dĂ©cision(decision node); – nƓud de fusion(merge node); – nƓud de bifurcation(fork node); – nƓud d’union(join node). Le diagramme d'activitĂ©s Les diagrammes UML
  • 116. diagramme d'activitĂ©s ‱ Partitions / swimlanes ou couloirs d’activitĂ©s Le diagramme d'activitĂ©s Les diagrammes UML
  • 117. 117 Chap 4 : Analyse statique
  • 118. 118 Analyse statique L’analyse statique permet de reprĂ©senter l’ensemble des classes, d’interfaces et de paquetages ainsi que leurs relations. ‱ Une classe dĂ©crit un ensemble d’objets (instances de la classe). ‱ Une association dĂ©crit un ensemble de liens (instances de l’association).
  • 119. 119 4.1. Les diagrammes de classes d’analyse
  • 120. 120 Le diagramme de classes Les diagrammes UML Utilisation ‱ Lors de l’analyse et de la conception: – DĂ©finitions formelles des objets qui composent le systĂšme Ă  partir des cas d’utilisation et des diagrammes d’interaction (sĂ©quence ou collaboration). – Bases conceptuelles pour les diagrammes d’état-transition, de dĂ©ploiement, ... ‱ Lors de l’implĂ©mentation : – GĂ©nĂ©ration automatique des structures statiques du systĂšme (classes, relations, ...).
  • 121. 121 Le diagramme de classes Les diagrammes UML ïżœLe plus important de la modĂ©lisation O.O. ïżœLe seul obligatoire lors d’une telle modĂ©lisation ïżœ fournit une reprĂ©sentation abstraite des objets du systĂšme qui vont interagir ensemble pour rĂ©aliser les cas d’utilisation ïżœVue statique : les Ă©lĂ©ments principaux sont : les classes et leurs relations
  • 122. 122 Le diagramme de classes Les diagrammes UML Notion de classe DĂ©finition : Une classe est une description d’un ensemble d’objets ayant une sĂ©mantique, des attributs, des mĂ©thodes et des relations en commun. Un objet est une instance d’une classe. Objet de type VoitureClasse
  • 123. ‱ Une classe est une description abstraite d’un ensemble d’objets ayant : – des propriĂ©tĂ©s similaires, – un comportement commun, – des relations communes avec d’autres objets – des sĂ©mantiques communes ‱ Chaque classe possĂšde : – une composante «statique» : attributs ou champs possĂ©dant une valeur – une composante «dynamique» : mĂ©thodes qui reprĂ©sentent le comportement commun des objets de la classe Liste des attributs Liste des mĂ©thodes Nom de la classe 123S. Mesfar Le diagramme de classes : Qu’est ce qu’une classe ? Les diagrammes UML
  • 124. 124 Le diagramme de classes Les diagrammes UML Notion de classe Attribut = propriĂ©tĂ© nommĂ©e d ’une classe la portĂ©e standard d’un attribut est limitĂ© Ă  un objet ‱ Syntaxe – visibilitĂ© nom : type = valeur initiale ‱ VisibilitĂ© – + public : propriĂ©tĂ© ou classe visible partout – # protĂ©gĂ© : propriĂ©tĂ© ou classe visible dans la classe et par tous ses descendants – - privĂ© : propriĂ©tĂ© ou classe visible uniquement dans la classe – ~ package : propriĂ©tĂ© ou classe visible uniquement dans le paquetage oĂč la classe est dĂ©finie ‱ Attribut de classe – quand cette portĂ©e s’applique Ă  la classe elle mĂȘme, on parle d’attribut de classe (reprĂ©sentĂ© par le symbole $ ou soulignĂ©) ‱ Attribut dĂ©rivĂ© – attribut qui peut ĂȘtre dĂ©duit d’un ou plusieurs autres attributs (reprĂ©sentĂ© par le symbole /)
  • 125. 125 Le diagramme de classes Les diagrammes UML Notion de classe MĂ©thode = service que l’on peut demander Ă  un objet pour rĂ©aliser un comportement ‱ Syntaxe – visibilitĂ© nom (paramĂštres) : type retour ‱ MĂȘmes notions que l’attribut – visibilitĂ© – mĂ©thode de classe
  • 126. 126 Le diagramme de classes Les diagrammes UML Notion de classe Notation ComplĂšte VisibilitĂ© Static DĂ©rivĂ© ParamĂštre Retour Initialisation Nom de la Classe Fenetre + taille : Rectangle = 100,100 - visible : Boolean = true couleur : Color = blue #$ tailleMax : Rectangle #$ tailleMin : Rectangle /#$ tailleMoyenne : Rectangle + afficher() : Position + cacher() # setTaille(taille : Rectangle) } }Attributs MĂ©thodes
  • 127. ‱ Un diagramme de classes reprĂ©sente la structure du systĂšme sous la forme de classes et de relations entre ces classes ‱ Un diagramme d’objets illustre les objets et les liens qui les unissent 127S. Mesfar Le diagramme de classes et le diagramme d’objets Les diagrammes UML
  • 128. Le concept d’encapsulation ‱ L'encapsulation est un mĂ©canisme consistant Ă  rassembler les donnĂ©es et les mĂ©thodes au sein d'une structure en cachant l'implĂ©mentation de l'objet c-Ă -d en empĂȘchant l'accĂšs aux donnĂ©es par un autre moyen que les mĂ©thodes proposĂ©s pour la manipulation de l’objet. ïżœ L'encapsulation permet donc de garantir l'intĂ©gritĂ© des donnĂ©es contenues dans l'objet. ‱ L'encapsulation permet de dĂ©finir des niveaux de visibilitĂ© des Ă©lĂ©ments de la classe. Ces niveaux de visibilitĂ© dĂ©finissent les droits d'accĂšs aux donnĂ©es selon que l'on y accĂšde par une mĂ©thode de la classe elle-mĂȘme, d'une classe hĂ©ritiĂšre, ou bien d'une classe quelconque. S. Mesfar 128 Le diagramme de classes Les diagrammes UML
  • 129. Le concept d’encapsulation – Quatre niveaux de protection : ‱ Public (+) : accĂšs Ă  partir de toute entitĂ© interne ou externe Ă  la classe ‱ ProtĂ©gĂ© (#) : accĂšs Ă  partir de la classe ou des sous- classes ‱ PrivĂ© (-) : accĂšs Ă  partir des opĂ©rations de la classe ‱ Package (~ ou rien) : accĂšs Ă  partir des classes du mĂȘme package 129S. Mesfar Le diagramme de classes Les diagrammes UML
  • 130. S. Mesfar 130 HĂ©ritage ‱ HĂ©ritage – MĂ©canisme de transmission des propriĂ©tĂ©s (attributs, comportement) d’une classe vers ses sous classes – Ce qui est gĂ©nĂ©rique est dĂ©fini au niveau de la super-classe, ce qui est spĂ©cifique est dĂ©fini au niveau de la sous-classes ‱ GĂ©nĂ©ralisation/spĂ©cialisation – GĂ©nĂ©ralisation : mise en commun des propriĂ©tĂ©s communes entre diffĂ©rentes classes dans une super-classe. – SpĂ©cialisation : crĂ©ation d’une sous-classe par mise en avant de propriĂ©tĂ©s spĂ©cifiques non communes Ă  toutes les classes de la super- classe Le diagramme de classes Les diagrammes UML
  • 131. S. Mesfar 131 HĂ©ritage : exemple GĂ©nĂ©ralisation SpĂ©cialisation personne Ă©tudiantpersonnel EnseignantAdministratif Le diagramme de classes Les diagrammes UML
  • 132. Exemple d’hĂ©ritage 132S. Mesfar Le diagramme de classes Les diagrammes UML
  • 133. S. Mesfar 133 HĂ©ritage multiple ïżœ une classe peut hĂ©riter des propriĂ©tĂ©s de plusieurs super-classes personne Ă©tudiantpersonnel EnseignantAdministratif Doctorant Le diagramme de classes Les diagrammes UML
  • 134. Exemple d’hĂ©ritage multiple 134S. Mesfar Le diagramme de classes Les diagrammes UML
  • 135. Contraintes de gĂ©nĂ©ralisation ‱ Une classe peut ĂȘtre spĂ©cialisĂ©e selon plusieurs critĂšres ‱ Certaines contraintes peuvent ĂȘtre posĂ©es sur les relations de gĂ©nĂ©ralisation ‱ Par dĂ©faut, la gĂ©nĂ©ralisation symbolise une dĂ©composition exclusive 135S. Mesfar Le diagramme de classes Les diagrammes UML
  • 136. Contraintes de gĂ©nĂ©ralisation {disjoint} ( = { exclusif } ) ‱ La contrainte {Disjoint} (ou {exclusif}) indique la participation exclusive d’un objet Ă  l’une des collections spĂ©cialisĂ©es 136S. Mesfar Le diagramme de classes Les diagrammes UML
  • 137. Contraintes de gĂ©nĂ©ralisation {chevauchement} (={ inclusif }) ‱ La contrainte {chevauchement} (ou {inclusif}) indique la participation possible d’un objet Ă  plusieurs collections spĂ©cialisĂ©es 137S. Mesfar Le diagramme de classes Les diagrammes UML
  • 138. Contraintes de gĂ©nĂ©ralisation {ComplĂšte} ≠ {IncomplĂšte} ‱ La contrainte {ComplĂšte} indique la gĂ©nĂ©ralisation est terminĂ©e : tout ajout de sous-classe est alors impossible ‱ Ă  l’inverse, la contrainte {IncomplĂšte} indique une gĂ©nĂ©ralisation extensible 138S. Mesfar Le diagramme de classes Les diagrammes UML
  • 139. Le polymorphisme ‱ Alors que l'hĂ©ritage concerne les classes (et leur hiĂ©rarchie), le polymorphisme est relatif aux mĂ©thodes des objets. ‱ On distingue gĂ©nĂ©ralement trois types de polymorphisme : 1. Le polymorphisme ad hoc (Ă©galement appelĂ© surcharge) : permet de dĂ©finir des opĂ©rateurs dont l'utilisation sera diffĂ©rente selon le type des paramĂštres qui leur sont passĂ©s ïżœ par exemple, il est possible de surcharger l'opĂ©rateur + et de lui faire rĂ©aliser des actions diffĂ©rentes selon qu'il s'agit d'une opĂ©ration entre deux entiers (addition) ou entre deux chaĂźnes de caractĂšres (concatĂ©nation) 2. Le polymorphisme paramĂ©trique (Ă©galement appelĂ© gĂ©nĂ©ricitĂ©) : reprĂ©sente la possibilitĂ© de dĂ©finir plusieurs fonctions de mĂȘme nom mais possĂ©dant des paramĂštres diffĂ©rents (en nombre et/ou en type) ïżœ Il rend ainsi possible le choix automatique de la bonne mĂ©thode Ă  adopter en fonction du type de donnĂ©e passĂ©e en paramĂštre S. Mesfar 139 Le diagramme de classes Les diagrammes UML
  • 140. Le polymorphisme 3. Le polymorphisme d'hĂ©ritage (Ă©galement appelĂ© redĂ©finition) : reprĂ©sente la possibilitĂ© de redĂ©finir une mĂ©thode dans des classes hĂ©ritant d'une classe de base. Il est alors possible d'appeler la mĂ©thode d'un objet sans se soucier de son type intrinsĂšque ïżœ faire abstraction des dĂ©tails des classes spĂ©cialisĂ©es d'une famille d'objet, en les masquant par une interface commune (qui est la classe de base). – Par exemple, un jeu d'Ă©chec comporte plusieurs objets roi, reine, fou, cavalier, tour, pion, hĂ©ritant chacun de l'objet piĂšce. La mĂ©thode mouvement() pourra, grĂące au polymorphisme d'hĂ©ritage, d’effectuer le mouvement appropriĂ© en fonction de la classe de l'objet rĂ©fĂ©rencĂ© au moment de l'appel. Cela permettra notamment au programme d’appeler piĂšce.mouvement() sans avoir Ă  se prĂ©occuper de la classe de la piĂšce. S. Mesfar 140 Le diagramme de classes Les diagrammes UML
  • 141. Exemple de polymorphisme d’hĂ©ritage S. Mesfar 141 Le diagramme de classes Les diagrammes UML
  • 142. ‱ Une association reprĂ©sente une relation entre les classes d’objets Classe A Classe B SociĂ©tĂ© Personne Voiture Personne Classe A 142S. Mesfar Le diagramme de classes : Les associations Les diagrammes UML
  • 143. ‱ Une association qui contient des attributs et qui ne participe pas Ă  des relations avec d’autres classe est appelĂ©e classe attribuĂ©e. Classe A Classe B Classe C Attributs 143S. Mesfar Le diagramme de classes : Les associations Les diagrammes UML
  • 144. ‱ Une association ternaire entre salle, Ă©tudiant et enseignant est rĂ©ifiĂ©e comme une classe cours ayant deux attributs : dĂ©but et fin Enseignant Salle Classe Cours DĂ©but Fin 144S. Mesfar Le diagramme de classes : Les associations Les diagrammes UML
  • 145. ‱ GĂ©nĂ©ralement, on note les associations par une forme verbale, soit active, soit passive Classe A Classe B SociĂ©tĂ© Personne Voiture Personne Forme verbale < travaille pour Est la propriĂštĂ© de > 145 S. Mesfar Le diagramme de classes : Les associations Les diagrammes UML
  • 146. Nommage des rĂŽles ‱ Toute association binaire possĂšde 2 rĂŽles ‱ un rĂŽle dĂ©finit la maniĂšre dont une classe intervient dans une relation ‱ Le nommage des associations et le nommage des rĂŽles ne sont pas exclusifs l’un de l’autre ‱ IntĂ©rĂȘt des rĂŽles dans le cas oĂč plusieurs associations lient deux classes : distinction des concepts attachĂ©s aux associations SociĂ©tĂ© Personne< travaille pour employeur employĂ© Avion PersonnePilote Passagers 146S. Mesfar Le diagramme de classes : Les associations Les diagrammes UML
  • 147. Association rĂ©flexive ‱ Nommage des rĂŽles indispensable Ă  la clartĂ© du diagramme Personne Enfants Parents 2 * 147S. Mesfar Le diagramme de classes : Les associations Les diagrammes UML
  • 148. MultiplicitĂ© des associations ‱ La multiplicitĂ© est une information portĂ©e par le rĂŽle, qui quantifie le nombre de fois oĂč un objet participe Ă  une instance de relation ‱ MultiplicitĂ© = indique le nombre d’instances d’une classe qui peut ĂȘtre mise en relation avec une seul instance de la classe associĂ©e – 1 : obligatoire – 0..1 : optionnel – 0..* ou * : quelconque – 1..* : au moins 1 – 1..5, 10 : entre 1 et 5, ou 10 148S. Mesfar Le diagramme de classes : Les associations Les diagrammes UML
  • 149. MultiplicitĂ© des associations ‱ 1 : Chaque personne travaille pour une et une seule sociĂ©tĂ© (toutes les personnes ont un emploi) ‱ 0 .. * : Une sociĂ©tĂ© emploie de zĂ©ro Ă  plusieurs personnes SociĂ©tĂ© Personne< travaille pour employeur employĂ© 1 0..* 149S. Mesfar Le diagramme de classes : Les associations Les diagrammes UML
  • 150. Contraintes sur les associations ‱ Contrainte d’association : porte sur une relation ou sur un groupe de relations (notĂ©e {contrainte }) ‱ Par exemple, placĂ©e sur un rĂŽle, la contrainte {ordonnĂ©e} dĂ©finit une relation d’ordre entre les objets de la collection (les comptes) qui sont liĂ©s Ă  une personne Personne ComptePropriĂ©taire {ordonnĂ©e}1 0..n 150S. Mesfar Le diagramme de classes : Les associations Les diagrammes UML
  • 151. Contraintes sur les associations ‱ La contrainte {sous-ensemble} indique qu’une collection est incluse dans une autre collection ‱ La contrainte {Ou-exclusif} prĂ©cise que, pour un objet donnĂ©, une seule association parmi un groupe d’associations est valide Classe Personne UniversitĂ© Personne {Sous ensemble} Parents d’élĂšve DĂ©lĂ©guĂ©s * * {OU-exclusif} Enseignants Étudiants * * 151 S. Mesfar Le diagramme de classes : Les associations Les diagrammes UML
  • 152. Restriction des associations ‱ La restriction (dite qualification en UML) d’une association consiste Ă  sĂ©lectionner un sous-ensemble d’objets parmi l’ensemble des objets qui participent Ă  une association rĂ©alisĂ©e au moyen d’une clĂ©, ensemble d’attributs particuliers. ‱ Un objet qualifiĂ© et une valeur de qualificatif gĂ©nĂšrent un objet cible liĂ© unique 152S. Mesfar Le diagramme de classes : Les associations Les diagrammes UML
  • 153. Association particuliĂšre : AgrĂ©gation ‱ Une agrĂ©gation est une association non symĂ©trique : l’une des extrĂ©mitĂ©s joue un rĂŽle prĂ©dominant par rapport Ă  l’autre ‱ Elle se justifie lorsque une classe B « fait partie » intĂ©grante d’une classe A. ‱ Exemple: 153S. Mesfar Livre MotChapitre 1..* 1..*1..* 1..* Le diagramme de classes : Les associations Les diagrammes UML
  • 154. AgrĂ©gation particuliĂšre : Composition ‱ La composition est une forme particuliĂšre d’agrĂ©gation ‱ Le composant est « physiquement » contenu dans l’agrĂ©gat ‱ La composition implique une contrainte sur la valeur de la multiplicitĂ© du cotĂ© de l’agrĂ©gat : (0 ou 1) 154S. Mesfar Le diagramme de classes : Les associations Les diagrammes UML
  • 155. AgrĂ©gation particuliĂšre : Composition ‱ La composition peut ĂȘtre modĂ©lisĂ©e au moyen d’attributs ‱ La notation par composition doit ĂȘtre retenue lorsque d’un attribut participe Ă  des relations 155S. Mesfar Le diagramme de classes : Les associations Les diagrammes UML
  • 156. 156 Composition Le diagramme de classes : Les associations Les diagrammes UML
  • 157. 157 Le diagramme de classes : Les associations Les diagrammes UML Une UniversitĂ© contient au moins un dĂ©partement. Des dĂ©partements peuvent avoir diffĂ©rents professeurs. DĂ©truire une universitĂ© dĂ©truit ses dĂ©partements, mais en aucun cas ne met fin Ă  la vie des professeurs. En C++ : class Professeur; class Departement { ... private: // AgrĂ©gation Professeur* enseignants[5]; . .. }; class Universite { ... private: // Composition Departement facultes[20]; ... };
  • 159. Un diagramme de d’objets : ‱ ReprĂ©sente les liens structurels entre instances de classes ‱ Facilite la comprĂ©hension de structures complexes ‱ Trois reprĂ©sentations possibles des instances : 159S. Mesfar Le diagramme d’objets Les diagrammes UML
  • 160. ‱ les valeurs des attributs sont optionnelles ainsi que les liens entre objets 160S. Mesfar Le diagramme d’objets Les diagrammes UML
  • 161. Diagramme d’objets : liens entre objets ‱ Les liens des associations rĂ©flexives peuvent relier un objet Ă  lui mĂȘme 161S. Mesfar Le diagramme d’objets Les diagrammes UML
  • 162. Diagramme d’objets : liens entre objets ‱ Les liens d’aritĂ© supĂ©rieure Ă  2 ou la multiplicitĂ© peuvent ĂȘtre reprĂ©sentĂ©s : 162S. Mesfar Le diagramme d’objets Les diagrammes UML
  • 163. Diagramme d’objets : liens entre objets ‱ Les objets composĂ©s de sous-objets peuvent ĂȘtre visualisĂ©s : ‱ Les objets composites sont instances de classes composites : 163S. Mesfar Le diagramme d’objets Les diagrammes UML
  • 164. Diagramme d’objets : structures complexes ‱ Les diagrammes d’objets facilitent la comprĂ©hension et l’élaboration d’un diagramme de classes : 164S. Mesfar Le diagramme d’objets Les diagrammes UML
  • 165. 165 Chap 5 : La conception
  • 166. Rappel des concepts de base ‱ Classe – attribut – mĂ©thode ‱ Association – rĂŽle – cardinalitĂ© – AgrĂ©g./Comp./Associative/QualifiĂ©e o1 o2 o1 o2 o3 o4 o5 o1 o2 o3 ïź Objet ïź Lien ïź Inclusion ensembliste ïź HĂ©ritage M1 M0 La conception Les diagrammes UML
  • 167. De quoi parle-t-on ? Analyse Objets du monde rĂ©el Objets du logiciel Algorithme du monde rĂ©el (scĂ©nario) Comment ‘logique’ ? Conception Objets du langage Algorithme du logiciel (scĂ©nario) Comment ‘physique’ ? Code ModĂšle conceptuel ModĂšle logique ModĂšle physique La conception Les diagrammes UML
  • 168. ‱ Deux niveaux de conception : – Logique : indĂ©pendante de l’environnement de rĂ©alisation. – Physique : liĂ©e Ă  des particularitĂ©s des langages de programmation ou de l’environnement d’exĂ©cution 168 La conception Les diagrammes UML
  • 169. 169 ïżœ Un des principaux soucis de l’activitĂ© de conception est de dĂ©velopper un design qui facilite l’ajustement du systĂšme aux changements. Pendant la conception: ïŹ Importante qualitĂ© logicielle en jeu ïżœ Ă©volutivitĂ© ïŹ anticipation du changement ïżœ Modularisation La phase de conception vise Ă  :  dĂ©terminer quels seront les composants du logiciel Ă  dĂ©velopper,  prĂ©ciser les caractĂ©ristiques de ces composants,  concevoir les algorithmes permettant Ă  ces composants d’effectuer les activitĂ©s dont ils sont responsables. La conception Les diagrammes UML
  • 170. 170 5.1. Les diagrammes de package
  • 171. Chapitre 9: Architecture et conception de logiciel 171 DiffĂ©rentes façons de subdiviser un systĂšme – Un systĂšme distribuĂ© est divisĂ© en clients et serveurs – Un systĂšme est divisĂ© en sous-systĂšmes – Un sous-systĂšme peut ĂȘtre subdivisĂ© en paquetages – Un paquetage est composĂ© de classes – Une classe est composĂ©e de mĂ©thodes Le diagramme de package Les diagrammes UML
  • 172. Packages Le diagramme de package Les diagrammes UML
  • 173. Soit le cas ’’RĂ©servation de vols dans une agence de voyages’’ 1° Des compagnies aĂ©riennes proposent diffĂ©rents vols. 2° Un vol est ouvert Ă  la rĂ©servation et fermĂ© sur ordre de la compagnie. 3° Un client peut rĂ©server un ou plusieurs vols, pour des passagers diffĂ©rents. 4° Une rĂ©servation concerne un seul vol, et un seul passager. 5° Une rĂ©servation peut ĂȘtre annulĂ©e ou confirmĂ©e. 6° Un vol a un aĂ©roport de dĂ©part et un aĂ©roport d’arrivĂ©e. 7° Un vol a un jour et une heure de dĂ©part et un jour et une heure d’arrivĂ©e. 8° Un vol peut comporter des escales dans des aĂ©roports 9° Une escale a une heure d’arrivĂ©e et une heure de dĂ©part. 10° Chaque aĂ©roport dessert une ou plusieurs villes Le diagramme de package – Etude de cas Les diagrammes UML
  • 174. CompagnieAerienne VolPropose 1..* ïżœ ModĂ©lisation de la phrase : 1° Des compagnies aĂ©riennes proposent diffĂ©rents vols. CompagnieAerienne et Vols sont 2 objets mĂ©tiers : 2 classes ‱ Un vol est rĂ©alisĂ© par une seule compagnie mais partagĂ© par plusieurs affrĂ©teurs CompagnieAerienne VolPropose 1..* affrĂ©teur 1..* Le diagramme de package – Etude de cas Les diagrammes UML
  • 175. ïżœ ModĂ©lisation de la phrase : 2° Un vol est ouvert Ă  la rĂ©servation et fermĂ© sur ordre de la compagnie. ïżœ Tout objet peut avoir un Ă©tat (diagramme d’états). ïżœ Dans un diagramme de classes tout concept dynamique est modĂ©lisĂ© en opĂ©ration. ïżœ Il faut reprĂ©senter la 2° phrase par 2 opĂ©rations : ouvrirReservation( ) et fermerReservation( ) ïżœ Dans quelle classe ? ResponsabilitĂ© d’une classe CompagnieAerienne Propose 1..* affrĂ©teur 1..* Vol Ă©tat (ouvert, fermĂ©) CompagnieAerienne Propose 1..* affrĂ©teur 1..* Vol ouvrirVol( ) fermerVol( ) ïżœ Les opĂ©rations sont dĂ©clarĂ©es dans l’objet dans lequel elles doivent s’exĂ©cuter ïżœ Les autres pourront dĂ©clencher ces opĂ©rations par envoi de messages ïżœ Le classe CompagnieAerienne a une association avec la classe vol. Le diagramme de package – Etude de cas Les diagrammes UML
  • 176. ïżœ ModĂ©lisation des phrases : 7° Un vol a un jour et une heure de dĂ©part et un jour et une heure d’arrivĂ©e. ïżœ Les dates et les heures de dĂ©part et d’arrivĂ©e ne reprĂ©sentent que des valeurs : attributs. CompagnieAerienne Propose 1..* affrĂ©teur 1..* Vol ouvrirVol( ) fermerVol( ) dateDepart heureDepart dateArrivee heureArrivee ïżœ Pour savoir si un Ă©lĂ©ment doit ĂȘtre reprĂ©sentĂ© en attribut ou en objet : ïżœ S’il n’ y a que sa valeur qui est intĂ©ressante : c’est plutĂŽt un attribut. ïżœ Si plusieurs questions peuvent concerner l’élĂ©ment, alors il faut le reprĂ©senter en objet. Le diagramme de package – Etude de cas Les diagrammes UML
  • 177. ïżœ ModĂ©lisation des phrases : 6° Un vol a un aĂ©roport de dĂ©part et un aĂ©roport d’arrivĂ©e. ïżœ ModĂ©lisation peu parlante. ïżœ Par quoi peut-on reprĂ©senter l’élĂ©ment ‘’AĂ©roport’’ ? 3 rĂ©ponses sont envisageables : 1. Soit avec une classe et une association de multiplicitĂ© 2 { ordered} 2 Vol ouvrirVol( ) fermerVol( ) dateDepart heureDepart dateArrivee heureArrivee aeroportDepart aeroportArivvee AĂ©roport nom Le diagramme de package – Etude de cas Les diagrammes UML
  • 178. ïżœ ModĂ©lisation des phrases : 6° Un vol a un aĂ©roport de dĂ©part et un aĂ©roport d’arrivĂ©e. ïżœ ModĂ©lisation non correcte. Tout aĂ©roport peut ĂȘtre de dĂ©part et d’arrivĂ©e. 2. Soit avec 2 classes 1 Vols ouvrirReservation() fermerReservation() dateDepart heureDepart dateArrivee heureArrivee aeroportDepartr aeroportArivvee AĂ©roport nom AeroportDepart AeroportArrivee1 Le diagramme de package – Etude de cas Les diagrammes UML
  • 179. ïżœ ModĂ©lisation des phrases : 6° Un vol a un aĂ©roport de dĂ©part et un aĂ©roport d’arrivĂ©e. ïżœ Le rĂŽle de chaque association prĂ©cise son sens. 2. Soit avec 2 associations 1 Vol ouvrirVol( ) fermerVol( ) dateDepart heureDepart dateArrivee heureArrivee AĂ©roport Nom 
 1 DĂ©part ArrivĂ©e Le diagramme de package – Etude de cas Les diagrammes UML
  • 180. ïżœ ModĂ©lisation des phrases : 10° Chaque aĂ©roport dessert une ou plusieurs villes AĂ©roport dessert 1..* Ville 0..* ïżœ Si on considĂšre que desservir une ville signifie l’aĂ©roport le plus proche, il n’ en y a qu’un : la multiplicitĂ© est de 1 ïżœ Si on considĂšre que desservir une ville signifie les aĂ©roports dans un rayon de 35 km : la multiplicitĂ© est de 0..* ïżœ On ne peut pas savoir la multiplicitĂ© de ‘’AĂ©roport’’ Le diagramme de package – Etude de cas Les diagrammes UML
  • 181. ïżœ ModĂ©lisation des phrases : 8° Un vol peut comporter des escales dans des aĂ©roports 9° Une escale a une heure d’arrivĂ©e et une heure de dĂ©part. Vol ouvrirVol( ) fermerVol( ) dateDepart heureDepart dateArrivee heureArrivee AĂ©roport nom1 1 Depart Arrivee Escale heureArrivee heureDepart 0..* ïżœ Une escale a les propriĂ©tĂ©s heure d’arrivĂ©e et heure de dĂ©part, c’est donc un objet. ïżœ Quelles sont alors les multiplicitĂ©s entre ‘’Vols’’ et ‘’Escale’’, entre ‘’Escale’’ et ‘’Aeroport’’ et entre ‘’Aeroport’’ et ’Vols’’ ? 0..* 0..* 1 1 0..* Le diagramme de package – Etude de cas Les diagrammes UML
  • 182. ïżœ ModĂ©lisation des phrases : 8° Un vol peut comporter des escales dans des aĂ©roports 9° Une escale a une heure d’arrivĂ©e et une heure de dĂ©part. ïżœ ‘’Escale’’ a peu d’informations propres. Elle n’est qu’une partie de ’’Vol’’ . ïżœ On peut la reprĂ©senter comme une spĂ©cialisation de ’’AĂ©roport’’ . Mais elle n’est pas totalement un aĂ©roport. ïżœ La meilleure solution serait de la modĂ©liser comme une classe d’association entre et ’Vols’’ et ‘’AĂ©roport’’. Vol ouvrirVol( ) fermerVol( ) dateDepart heureDepart dateArrivee heureArrivee AĂ©roport nom 1 1 DĂ©part ArrivĂ©e Escale heureArrivee heureDepart Escale 0..*0..* 0..* 0..* {Ordered} Le diagramme de package – Etude de cas Les diagrammes UML
  • 183. ïżœ ModĂ©lisation des phrases : 4° Une rĂ©servation concerne un seul vol, et un seul passager. 5° Une rĂ©servation peut ĂȘtre annulĂ©e ou confirmĂ©e. ïżœ La rĂ©servation et le passager sont 2 concepts mĂ©tier : 2 classes d’objets ïżœ Un rĂ©servation concerne un seul vol et un seul passager: donc 2 associations entre ‘’Vol’’ et ’’RĂ©servation’’ et entre ’’RĂ©servation’’ et ‘’Passager’’. ïżœ La 5° phrase se traduit par l’ajout de 2 opĂ©rations annuler( ) et confirmer( ) dans ‘’Reservation’’. Vol ouvrirVol( ) fermerVol( ) dateDepart heureDepart dateArrivee heureArrivee Passager 1 1 concerne RĂ©servation Annuler( ) Confirmer( ) concerne Le diagramme de package – Etude de cas Les diagrammes UML
  • 184. ïżœ ModĂ©lisation des phrases : 3° Un client peut rĂ©server un ou plusieurs vols, pour des passagers diffĂ©rents. ïżœ Il faut discerner un client d’un passager a effectuĂ© 0..* 0..* 0..* Vol Passager 1 1 concerne RĂ©servation Annuler( ) Confirmer( ) concerne Client 1 Le diagramme de package – Etude de cas Les diagrammes UML
  • 185. ïżœ Le diagramme des classe complet est : Vol ouvrirVol( ) fermerVol( ) dateDepart heureDepart dateArrivee heureArrivee AĂ©roport nom 1 1 dĂ©part arrivĂ©e InfosEscale heureArrivee heureDepart escale 0..*0..* 0..* 0..* {ordered} Ville 0..* Passager 1 concerne RĂ©servation Annuler( ) Confirmer( ) Client a effectuĂ© 0..* 1 0..* 1 concerne CompagnieAerinne Propose 1..* 1..* nom PrĂ©nom adresse tĂ©lĂ©phone e-mail nom nom PrĂ©nom nom date numĂ©ro Le diagramme de package – Etude de cas Les diagrammes UML
  • 186. ïżœ Diagramme des classe complet et annotĂ© InfosEscale heureArrivee heureDepart Vol ouvrirVol( ) fermerVol( ) dateDepart heureDepart dateArrivee heureArrivee AĂ©roport nom 1 1 dĂ©part arrivĂ©e escale 0..*0..* 0..* 0..* {ordered} Ville 0..* Passager 1 concerne RĂ©servation Annuler( ) Confirmer( ) Client a effectuĂ© 0..* 1 0..* 1 concerne Propose 0..1 1..* nom PrĂ©nom adresse tĂ©l e-mail nom PrĂ©nom nom {frozen} {frozen} CompagnieAerinne nom numĂ©ro date numĂ©ro Le diagramme de package – Etude de cas Les diagrammes UML
  • 187. ïżœ Le diagramme des classe complet devient : InfosEscale heureArrivĂ©e heureDĂ©part ‘’ mĂ©taclasse ‘’ VolGenerique ouvrirVol( ) fermerVol( ) jour heureDĂ©part heureArrivĂ©e /durĂ©e pĂ©riodevaliditĂ© AĂ©roport nom 1 1 dĂ©part arrivĂ©e escale 0..*0..* 0..* 0..* {ordered} Ville 0..* 1 concerne RĂ©servation Annuler( ) Confirmer( ) Client a effectuĂ© 0..* 1 0..* 1 concerne Propose 0..1 1 nom PrĂ©nom adresse tĂ©lĂ©phone e-mail Passager nom PrĂ©nom nom {frozen} {frozen} CompagnieAĂ©rienne nom numĂ©ro date numĂ©ro Vol ouvrirVol( ) fermerVol( ) dateDĂ©part dateArrivĂ©e {frozen}{AddOnly} dĂ©crit 0..* 1 1..* 0..* propose AffrĂ©teur Le diagramme de package – Etude de cas Les diagrammes UML
  • 188. ïżœ Le diagramme des classes peut ĂȘtre rĂ©organisĂ© en packages InfosEscale heureArrivee heureDepart ‘’ metaclasse ‘’ VolGenerique ouvrirVol( ) fermerVol( ) jour heureDepart heureArrivee /durĂ©e periodevalidite AĂ©roport nom 1 1 dĂ©part arrivĂ©e escale 0..*0..* 0..* 0..* {ordered} Ville 0..* 1 concerne RĂ©servation Annuler( ) Confirmer( ) Client a effectuĂ© 0..* 1 0..* 1 concerne Propose 0..1 1..* nom PrĂ©nom adresse tĂ©Ă©phonel e-mail Passager nom PrĂ©nom nom {frozen} {frozen} CompagnieAerinne nom numĂ©ro date numero Vol ouvrirVol( ) fermerVol( ) dateDepart dateArrivee {frozen}{AddOnly} dĂ©crit 0..* 1 1..* 0..* propose AffrĂ©teur Le diagramme de package – Etude de cas Les diagrammes UML
  • 189. ïżœ RĂ©duire la dĂ©pendance mutuelle afin d’augmenter la modularitĂ© et l’évolutivitĂ© d’une application 0..* 1 concerne {frozen} RĂ©servation Annuler( ) Confirmer( ) date numĂ©ro RĂ©servations Vol ouvrirVol( ) fermerVol( ) dateDepart dateArrivee Vol Le diagramme de package – Etude de cas Les diagrammes UML
  • 190. RĂ©servations RĂ©servation Annuler( ) Confirmer( ) Client a effectuĂ© 0..* 1 0..* 1 concerne nom PrĂ©nom adresse tĂ©lĂ©phone e-mail Passager nom PrĂ©nom {frozen} date numĂ©ro Vol InfosEscale heureArrivee heureDepart ‘’ metaclasse ‘’ VolGenerique ouvrirVol( ) fermerVol( ) jour heureDepart heureArrivee /durĂ©e periodevalidite AĂ©roport nom 1 1 dĂ©part arrivĂ©e escale 0..*0..* 0..* 0..* {ordered} Ville Propose 0..1 1 nom CompagnieAerinne nom numĂ©ro Vol ouvrirVol( ) fermerVol( ) dateDepart dateArrivee {frozen}{AddOnly} decrit 0..* 1 1..* 0..* propose AffrĂ©teur 0..* 1 concerne {frozen} Le diagramme de package – Etude de cas Les diagrammes UML
  • 191. GĂ©nĂ©ralisation et rĂ©utilisation ïżœ On veut Ă©largir ce domaine aux voyages par bus que des transporteurs assurent. ïżœ Un voyage en bus Ă  une ville de dĂ©part et un ville d’arrivĂ©e avec des dates et des heures associĂ©es. ïżœ Un trajet peut comporter des arrĂȘts dans des villes intermĂ©diaires. ïżœ Un client peut rĂ©server un ou plusieurs voyages pour un ou plusieurs passagers VoyageEnBus OuvrirVoyage( ) fermerVoyage( ) dateDepart dateArrivee VoyagesBus ReservationsBus ReservationBus Annuler( ) Confirmer( ) date numĂ©ro 0..* 1 concerne {frozen} Le diagramme de package – Etude de cas Les diagrammes UML
  • 193. Fusion des 2 modĂšles 1. Il faut isoler les classes communes dans des packages 2. Il faut factoriser les propriĂ©tĂ©s communes AVION Vols ReservationVols BUS ReservationBus VoyagesBus Lieux ïżœ Le diagramme de package – Etude de cas Les diagrammes UML
  • 194. Il faut isoler les classes communes dans des packages ïżœ Vol (from Vols) ReservationVol (from ReservationsVols) ReservationBus (from ReservationsBus) VoyageEnBus (from VoyagesBus) concerne concerne {frozen} {frozen} 1 1 RĂ©servations 0..* 1 concerneClient nom PrĂ©nom adresse tĂ©l e-mail Passager nom PrĂ©nom RĂ©servation Annuler( ) Confirmer( ) date numĂ©ro {frozen} a effectuĂ© 0..*1 Classe abstraite Le diagramme de package – Etude de cas Les diagrammes UML
  • 195. VolsVoyagesBus LieuxPackage rĂ©utilisable ReservationsBus RĂ©servations ReservationsVols Packages spĂ©cialisĂ©s Package gĂ©nĂ©ralisĂ© Le diagramme de package – Etude de cas Les diagrammes UML
  • 196. 196 5.2. Les diagrammes de classes de conception
  • 197. StĂ©rĂ©otypes ‱ MĂ©canisme d’extensibilitĂ© ‱ SĂ©mantique du concept est insuffisante ïżœ le stĂ©rĂ©otype permet la mĂ©taclassification ïżœAjouter de nouvelles classes sans perdre la sĂ©mantique ïżœ Faciliter l’unification des sous-systĂšmes et catĂ©gories Le diagramme de classe : de l’analyse Ă  conception Les diagrammes UML
  • 198. 198 StĂ©rĂ©otype : dĂ©finition ‱ Un stĂ©rĂ©otype permet d’étendre les classes dĂ©jĂ  existantes en leur donnant une signification sĂ©mantique diffĂ©rente. ‱ Si la classe A est un stĂ©rĂ©otype de la classe B, alors A se comporte comme B tout en ayant une signification sĂ©mantique diffĂ©rente. ‱ ReprĂ©sentation UML: <<stĂ©rĂ©otype>> Nom de la Classe Le diagramme de classe : de l’analyse Ă  conception Les diagrammes UML
  • 199. 199 Utilisation des stĂ©rĂ©otypes StĂ©rĂ©otypes prĂ©dĂ©finis pour les classes d’analyse (proposĂ©s par Jacobson): ‱ Boundary ou frontiĂšre ou interface ‱ Control ou contrĂŽle ‱ Entity ou entitĂ© ReprĂ©sentation de Jacobson Nom du stĂ©rĂ©otype Le diagramme de classe : de l’analyse Ă  conception Les diagrammes UML
  • 200. 200 StĂ©rĂ©otypes
 : boundary ‱ La classe stĂ©rĂ©otypĂ©e <<Boundary>> modĂ©lise la communication entre les acteurs et les composantes internes du systĂšme (les interfaces homme/machine, les interfaces des systĂšmes (protocole de communication,
) , interfaces des matĂ©riels (Ă©cran, clavier, imprimante,
)) <<boundary>> InterfaceRechercheSimple Auteur ISBN Titre Rechercher() Le diagramme de classe : de l’analyse Ă  conception Les diagrammes UML
  • 201. 201 StĂ©rĂ©otypes
 : Entity ‱ La classe stĂ©rĂ©otypĂ©e <<Entity>> modĂ©lise les informations persistantes du systĂšme. Exemples : classes qui contiennent des informations d’un Ă©tudiant, d’un employĂ©, 
 <<Entity>> Livre code :entier titre : chaĂźne ISBN : entier nbrexemplaires:entier Getcode() GetTitre() FindByISBN (ISBN:entier) setNbrexemp(nbreexemplaires:entier) Le diagramme de classe : de l’analyse Ă  conception Les diagrammes UML
  • 202. 202 StĂ©rĂ©otypes
 : control «Control classes are generally used to represent coordination, sequencing, transactions, and control of other objects. And it is often used to encapsulate control related to a specific use case » [I. Jacobson, G.Booch, J.Rumbaugh,”The Unified Software Development Process”, Addison Wesley, 1999] Le diagramme de classe : de l’analyse Ă  conception Les diagrammes UML
  • 203. 203 StĂ©rĂ©otypes
 : control ‱ La classe stĂ©rĂ©otypĂ©e <<control>> assure la coordination entre classes ‱ Elle contrĂŽle le sĂ©quencement, ou coordonne l'exĂ©cution des objets contrĂŽlĂ©s. ‱ Elle contrĂŽle la concurrence entre classes contrĂŽlĂ©es, ‱ Elle est l'implantation d'un objet intangible, ‱ Au dĂ©part , on crĂ©e une classe "control" pour chaque use-case; cette classe gĂšre le flot d'Ă©vĂšnements dans le use-case, ‱ Au fur et Ă  mesure de l'avancement de l'analyse, les classes "control« peuvent ĂȘtre supprimĂ©es, dĂ©coupĂ©es ou regroupĂ©es. <<control>> CTRLrecherche rechercherLivres() Le diagramme de classe : de l’analyse Ă  conception Les diagrammes UML
  • 204. 204 <<control>> CTRLrecherche rechercherLivres() ‱ Classes stĂ©rĂ©otypĂ©es en relation <<Entity>> Livre auteur :entier titre : chaĂźne ISBN : entier nbrexemplaires:entier Getcode() GetTitre() FindByISBN (ISBN:entier) setNbrexemp(nbreexemplaires:entier) <<boundary>> InterfaceRechercheSimple Auteur ISBN Titre Rechercher() 0..* 0..* <DĂ©clencherrech Le diagramme de classe : de l’analyse Ă  conception Les diagrammes UML
  • 205. 205 ‱ Les associations entre les classes stĂ©rĂ©otypĂ©es suivent des rĂšgles assez strictes : – Les « boundary » ne peuvent ĂȘtre reliĂ©es qu’aux « control » – Les « control » ont accĂšs aux « boundary », aux « entity » et aux autres contrĂŽles – Les « entity » ont accĂšs aux autres « entity » et ne sont reliĂ©es qu’aux « control » ïżœ Pour aller plus loin : utiliser des partons de conception (les design patterns) Le diagramme de classe : de l’analyse Ă  conception Les diagrammes UML
  • 206. 206 Le diagramme de classe : de l’analyse Ă  conception Les diagrammes UML
  • 207. Exemple de la localisation d’un DAB 207 Le diagramme de classe : de l’analyse Ă  conception Les diagrammes UML
  • 208. Conception dĂ©taillĂ©e Deux niveaux de conception : - une Ă©tape logique: indĂ©pendante de l’environnement de rĂ©alisation: ‱ Conception dĂ©taillĂ©e des classes: trouver la meilleure maniĂšre de concevoir les structure logique, ‱ Conception dĂ©taillĂ©e des associations (typage, portĂ©e, rĂ©manence/persistance): – assurer la gestion des liens – traiter les classes associatives – optimiser la navigation ‱ DĂ©lĂ©gation: dĂ©pendance des relations d’agrĂ©gation et de composition. ‱ Raffiner la gĂ©nĂ©ralisation/spĂ©cialisation (hĂ©ritage simple ou multiple): – propriĂ©tĂ©s structurelles – Interface – propriĂ©tĂ©s comportementales - une Ă©tape physique: liĂ©e Ă  des particularitĂ©s des langages de programmation ou de l’environnement d’exĂ©cution Raffinementdesdiagrammesstructurels 208 Le diagramme de classe de conception Les diagrammes UML
  • 209. Conception dĂ©taillĂ©e des classes ‱ DĂ©finir le type des attributs identifiĂ©s en analyse. – Type de base + composĂ© ‱ Structure ‱ EnumĂ©ration ‱ SpĂ©cifier les Structures de DonnĂ©es. ‱ SpĂ©cifier les visibilitĂ©s des attributs et mĂ©thodes + prise en compte des propriĂ©tĂ©s (ordered, addOnly, frozen) ‱ SpĂ©cifier les mĂ©thodes + celles spĂ©cifiques Ă  l’implantation ‱ Montrer les dĂ©pendances + Classes spĂ©cifiques Le diagramme de classe de conception Les diagrammes UML
  • 210. Structure – DĂ©finition : Ensemble d’attributs pouvant ĂȘtre regroupĂ©s. <<structure>> Date jour mois annĂ©es <<structure>> Adresse numRue rue codePostal ville pays 210 Le diagramme de classe de conception Les diagrammes UML
  • 211. EnumĂ©ration – DĂ©finition : Ensemble de littĂ©raux d’énumĂ©ration, ordonnĂ©. <<enumeration>> Jour Lundi Mardi Mercredi Jeudi Vendredi Samedi Dimanche <<enumeration>> Titre Secretaire President Tresorier VicePresident Membre Le diagramme de classe de conception Les diagrammes UML
  • 212. VisibilitĂ© des Ă©lĂ©ments ‱ Restreindre l'accĂšs aux Ă©lĂ©ments d'un modĂšle ‱ ContrĂŽler et Ă©viter les dĂ©pendances entre classes (et paquetages) + public visible Ă  l’extĂ©rieur de la classe # protĂ©gĂ© visible que dans la classe et ses sous-classes  privĂ© visible dans la classe uniquement ~ package visible dans la package uniquement $ Ă©lĂ©ment de classe Remarques: ‱ Utile lors de la conception et de l'implĂ©mentation, pas avant ! -N'a pas vraiment de sens dans le modĂšle d’analyse- ‱ La sĂ©mantique exacte dĂ©pend du langage de programmation ! 212 Le diagramme de classe de conception Les diagrammes UML
  • 213. DĂ©claration d'attributs [/] [ visibilitĂ© ] nom [ : type ] [card ordre] [ = valeur-initiale ] [ { props... } ] exemples: age +age /age - solde : Integer = 0 # age : Integer [0..1] # numsecu : Integer {frozen} # motsClĂ©s : String [*] {addOnly} $nbPersonne : Integer ïź Adapter le niveau de dĂ©tail au niveau d'abstraction ïź La non prĂ©cision de visibilitĂ© ïżœ privĂ©e Le diagramme de classe de conception Les diagrammes UML
  • 214. DĂ©claration d'opĂ©rations [ visibilitĂ© ] nom [ ( params ) ] [ : type ] [ { props... } ] getAge() + getAge() : Integer - updateAge( in date : Date ) : Boolean # getName() : String [0..1] +getAge() : Integer +addProject() +$main( in args : String [*] {ordered} ) ïź Adapter le niveau de dĂ©tail au niveau d'abstraction ïź La non prĂ©cision de visibilitĂ© ïżœ public Le diagramme de classe de conception Les diagrammes UML
  • 215. Conception dĂ©taillĂ©e des classes : classes spĂ©cifiques ‱ Classe utilitaire ïżœ Exemple: fonctions mathĂ©matiques d’une bibliothĂšque « Utilitaire » Math Math Le diagramme de classe de conception Les diagrammes UML
  • 216. 217 Contraintes de gestion de l’association Par exemple : ‱ { ordered } : les Ă©lĂ©ments de la collection sont ordonnĂ©s ‱ { frozen } : fixĂ© lors de la crĂ©ation de l ’objet, ne peut pas changer ‱ { addOnly } : impossible de supprimer un Ă©lĂ©ment RelevĂ©DeCompte Ligne OpĂ©ration *{ordered,addOnly} lignes Le diagramme de classe de conception Les diagrammes UML
  • 217. 218 RĂŽle : traduction B * R A B 1 A R bs rs * b 1 a rolea carda carda rolea Le diagramme de classe de conception Les diagrammes UML
  • 218. 219 Classe associative: traduction B * A B 1 A R bs * b 1 a as * * Le diagramme de classe de conception Les diagrammes UML R
  • 219. Relation ternaire: traduction Le diagramme de classe de conception Les diagrammes UML
  • 220. B * {ordered} R Role ordonnĂ© : traduction gĂ©nĂ©rale par index A B 1 A R bs rs ib : integer * b Pour tout a, tous les rs ont un indice ib diffĂ©rent et couvrant l'intervalle de 1 au nombre de bs. 1 a rolea carda carda rolea Le diagramme de classe de conception Les diagrammes UML
  • 221. Pour tout a, tous les bs ont un indice iRb diffĂ©rent et couvrant l'intervalle de 1 au nombre de bs. B * {ordered} R RĂŽle ordonnĂ© 1 - * : traduction par index A B * A bs bsa a 1 iRb : integer 1 Le diagramme de classe de conception Les diagrammes UML
  • 222. 224 NavigabilitĂ© d’une Association ïżœLa navigabilitĂ© permet de spĂ©cifier dans quel(s) sens il est possible de traverser l'association Ă  l'exĂ©cution. ïżœOn interdit la navigation par une croix (X) du cĂŽtĂ© qui n'est pas atteignable. ïżœOn peut reprĂ©senter les associations navigables dans un seul sens par des attributs. Les attributs sont toujours navigables. Le diagramme de classe de conception Les diagrammes UML
  • 223. exist getAll nb empty SpĂ©cifier les mĂ©thodes pour la gestion des liens set get a b R M1 M0 0..10..1 Remarque : i. Les mĂ©thodes (ajout/suppression) doivent prĂ©server la cohĂ©rence des cardinalitĂ©s et les contraintes (exemple : AddOnly) ii. Les mĂ©thodes de navigation doivent ĂȘtre cohĂ©rentes avec le sens de navigation iii. En cas de cardinalitĂ© > 1 ïżœ possibilitĂ© de prĂ©voir un attribut de type collection (surtout Ă  dĂ©finir lors de l’implĂ©mentation !! ) remove removeAll removeIdx add setAll insert a b R M1 M0 0..*0..1 Le diagramme de classe de conception Les diagrammes UML
  • 224. Classes de conception Le diagramme de classe de conception Les diagrammes UML
  • 225. Classes de conception Le diagramme de classe de conception Les diagrammes UML
  • 226. Classes de conception Le diagramme de classe de conception Les diagrammes UML
  • 227. Classes de conception Le diagramme de classe de conception Les diagrammes UML
  • 228. Classes de conception Le diagramme de classe de conception Les diagrammes UML
  • 230. 233 Le diagramme de classes Notion de classe abstraite Les diagrammes UML Une classe abstraite est une classe dont au moins une mĂ©thode est abstraite Une mĂ©thode abstraite est dĂ©finie uniquement par son intitulĂ© sans code abstract void calcul_long(); Dans les classes dĂ©rivĂ©es, la mĂ©thode abstraite doit ĂȘtre dĂ©crite  La mĂ©thode abstraite ne peut pas ĂȘtre private On ne peut pas crĂ©er un objet d’une classe abstraite Une classe abstraite est un type, il est possible de dĂ©finir des variables ou paramĂštres de ce type; mais il faut affecter un objet d’une classe concrĂšte, descendante
  • 231. 234 Le diagramme de classes Notion de classe abstraite Les diagrammes UML But d’une classe abstraite Une classe abstraite permet de dĂ©finir les caractĂ©ristiques communes Ă  plusieurs classes. Une classe abstraite permet Ă  un dĂ©veloppeur : de fournir Ă  d'autres dĂ©veloppeurs une partie de l'implĂ©mentation d'une classe de laisser aux autres dĂ©veloppeurs la maniĂšre d'implĂ©menter le reste de la classe d'imposer aux autres dĂ©veloppeurs d'implĂ©menter certaines mĂ©thodes s'ils veulent pouvoir utiliser ses classes
  • 232. ‱ Exemple: deux classes Cercle, Carre qui possĂšdent des mĂ©thodes communes: – float surface() – void afficheInfo() dont les implĂ©mentations sont trĂšs diffĂ©rentes 235 Le diagramme de classes Notion de classe abstraite Les diagrammes UML
  • 233. ‱ Solution : abstract class Figure{ private String nom; public String getNom( ){ return nom; } public abstract void afficheinfos( ); public abstract float surface( ); } 236 Le diagramme de classes Notion de classe abstraite Les diagrammes UML
  • 234. ‱ Les rĂšgles usuelles d'hĂ©ritage s'appliquent aux classes abstraites. ‱ Les classes dĂ©rivĂ©es de Figure peuvent implĂ©menter complĂštement, partiellement, ou pas du tout, les mĂ©thodes abstraites de Figure. ‱ Suite de la solution : Figure f; f = new Cercle (
); f.surface( ); // utiliser la liaison dynamique ... 237 Le diagramme de classes Notion de classe abstraite Les diagrammes UML
  • 235. ‱ Si A est dĂ©clarĂ©e comme classe abstraite alors on ne peut pas crĂ©er d'instance de la classe. ‱ En revanche, on peut (on devrait) dĂ©clarer des variables de type A, et les instancier par n'importe quel objet de n'importe quelle classe concrĂšte (non abstraite) dĂ©rivĂ©e de A. 238 Le diagramme de classes Notion de classe abstraite Les diagrammes UML
  • 236. 239 Le diagramme de classes Notion d’interface Les diagrammes UML Une interface est une classe abstraite ayant les caractĂ©ristiques suivants: toutes les mĂ©thodes sont abstraites et public, alors qu’une classe abstraite peut avoir des mĂ©thodes non abstraites tous les attributs sont static, alors qu’une classe abstraite peut avoir des attributs ordinaires toute classe peut hĂ©riter de plusieurs interfaces une interface peut hĂ©riter d’une ou plusieurs interfaces mais elle ne peut pas hĂ©riter d’une classe il n’est pas nĂ©cessaire d’indiquer abstract pour les mĂ©thodes et static pour les attributs
  • 237. 240 Le diagramme de classes Notion d’interface Les diagrammes UML « interface » NomInterface NomClasse ou NomClasse Une classe qui implĂ©mente une interface doit dĂ©finir le corps (les instructions) de toutes ses mĂ©thodes abstraites implĂ©mente
  • 238. interface Chapeau{ void ajoute(Object o); Object tire(); boolean estVide(); } class ChapeauDoubleFond implements Chapeau{... } class ChapeauTripleFond implements Chapeau{... } class TourCartes{ 
 public void ajouteChapeau(Chapeau c){... } } 241 Le diagramme de classes Notion d’interface Les diagrammes UML
  • 239. ‱ Le code de TourCartes n'est pas liĂ© Ă  une implĂ©mentation particuliĂšre de Chapeau. TourCartes t=new TourCartes(); Chapeau c=new ChapeauDoubleFond(); t.ajouteChapeau(c); ‱ Le seul moment oĂč est mentionnĂ© le choix d'implĂ©mentation est lors de la construction de l'objet. 242 Le diagramme de classes Notion d’interface Les diagrammes UML
  • 240. ‱ IntĂ©rĂȘt : – SĂ©paration interface publique/implĂ©mentation – Permet une forme d’hĂ©ritage multiple : ‱ Par exemple, une classe C2 peut Ă©tendre une classe C1 et implĂ©menter une interface I ‱ RĂŽles : – rĂŽle des interfaces: dĂ©claration des mĂ©thodes publiques – rĂŽle des classes: implĂ©mentation de ces mĂ©thodes 243 Le diagramme de classes Notion d’interface Les diagrammes UML
  • 241. Une dĂ©marche couramment utilisĂ©e pour bĂątir un diagramme de classes consiste Ă  : 1. Trouver les classes du domaine Ă©tudiĂ©. Cette Ă©tape empirique se fait gĂ©nĂ©ralement en collaboration avec un expert du domaine. Les classes correspondent gĂ©nĂ©ralement Ă  des concepts ou des substantifs du domaine. 2. Trouver les associations entre classes. Les associations correspondent souvent Ă  des verbes, ou des constructions verbales, mettant en relation plusieurs classes, comme << est composĂ© de >>, << pilote >>, << travaille pour >>. S. Mesfar 244 Etapes de l’élaboration d’un diagramme de classes Les diagrammes UML
  • 242. 3. Trouver les attributs des classes. Les attributs correspondent souvent Ă  des substantifs, ou des groupes nominaux, tels que << la masse d’une voiture >> ou << le montant d’une transaction >>. Les adjectifs et les valeurs correspondent souvent Ă  des valeurs d’attributs. NB: Souvent, on ajoute des attributs Ă  toutes les Ă©tapes du cycle de vie d’un projet (implĂ©mentation comprise). 4. Organiser et simplifier le modĂšle en Ă©liminant les classes redondantes et en utilisant l’hĂ©ritage. 5. ItĂ©rer et raffiner le modĂšle. Un modĂšle est rarement correct dĂšs sa premiĂšre construction. La modĂ©lisation objet est un processus non pas linĂ©aire mais itĂ©ratif. S. Mesfar 245 Etapes de l’élaboration d’un diagramme de classes Les diagrammes UML
  • 243. 246 5.4 : Les Diagrammes de collaboration / communication S. Mesfar
  • 244. Notation ‱ Les diagrammes de collaboration montrent des interactions entre objets, en insistant plus particuliĂšrement sur la structure spatiale statique qui permet la mise en collaboration d’un groupe d’objets. ‱ Les diagrammes de collaboration expriment Ă  la fois le contexte d’un groupe d’objets (au travers des objets et des liens) et l’interaction entre ces objets (par la reprĂ©sentation de l’envoi de messages). ïżœ Les diagrammes de collaboration sont une extension des diagrammes d’objet. S. Mesfar 247 Le diagramme de communication / collaboration Les diagrammes UML
  • 245. Notation ‱Les diagrammes de collaboration sont un recoupement des diagrammes d’objets et des diagrammes de sĂ©quences. ‱Chaque objet intervient de la mĂȘme façon que dans les diagrammes de sĂ©quence ‱Les messages sont obligatoirement numĂ©rotĂ©s S. Mesfar 248 Le diagramme de communication / collaboration Les diagrammes UML
  • 246. Notation Objet 1 Objet 2 Objet 3 1 : message 4 : message 2 : message 3 : message S. Mesfar 249 Le diagramme de communication / collaboration Les diagrammes UML
  • 247. Exemple S. Mesfar 250 Le diagramme de communication / collaboration Les diagrammes UML
  • 248. RĂŽles et connecteurs Le rĂŽle permet de dĂ©finir le contexte d'utilisation de l'interaction. ïżœSi la ligne de vie est un objet, celui-ci peut avoir plusieurs rĂŽles au cours de sa vie. Les relations entre les lignes de vie sont appelĂ©es connecteurs . ïżœUn connecteur se reprĂ©sente de la mĂȘme façon qu'une association mais la sĂ©mantique est plus large : un connecteur est souvent une association transitoire. S. Mesfar 251 Le diagramme de communication / collaboration Les diagrammes UML
  • 249. Notation (
) La place de l’utilisateur ïżœ La notation permet de faire figurer un acteur dans un diagramme de collaboration afin de reprĂ©senter le dĂ©clenchement des interactions par un Ă©lĂ©ment externe au systĂšme. GrĂące Ă  cet artifice, l’interaction peu ĂȘtre dĂ©crite de maniĂšre plus abstraite sans entrer dans les dĂ©tails des objets de l’interface utilisateur. ïżœ Le premier message est envoyĂ© par l’acteur, reprĂ©sentĂ© par un symbole graphique (type bonhomme) semblable au modĂšle des cas d’utilisation, ou bien par un objet muni d’un stĂ©rĂ©otype qui prĂ©cise sa qualitĂ© d’acteur. S. Mesfar 252 Le diagramme de communication / collaboration Les diagrammes UML
  • 250. ReprĂ©sentation des messages Les flĂšches reprĂ©sentant les messages sont tracĂ©es Ă  cĂŽtĂ© des connecteurs qui les supportent. Attention Bien faire la distinction entre les messages et les connecteurs : on pourrait avoir un connecteur sans message, mais jamais l'inverse. S. Mesfar 253 Le diagramme de communication / collaboration Les diagrammes UML
  • 251. MultiplicitĂ© Les connecteurs permettent de rendre compte de la multiplicitĂ©. S. Mesfar 254 Le diagramme de communication / collaboration Les diagrammes UML
  • 252. NumĂ©ros de sĂ©quence des messages Pour reprĂ©senter les aspects temporels, on adjoint des numĂ©ros de sĂ©quence aux messages. ïżœDes messages successifs sont ordonnĂ©s selon un numĂ©ro de sĂ©quence croissant (1, 2, 3, ... ou encore 3.1, 3.2, 3.3, ...). ïżœDes messages envoyĂ©s en cascade (ex : appel de mĂ©thode Ă  l'intĂ©rieur d'une mĂ©thode) portent un numĂ©ro d'emboĂźtement avec une notation pointĂ©e ‱1.1, 1.2, ... pour des messages appelĂ©s par une mĂ©thode dont l'appel portait le numĂ©ro 1 ‱2.a.1, 2.a.2, ... pour des messages appelĂ©s par une mĂ©thode dont l'appel portait le numĂ©ro 2.a S. Mesfar 255 Le diagramme de communication / collaboration Les diagrammes UML
  • 253. Equivalence avec un diagramme de sĂ©quence S. Mesfar 256 Le diagramme de communication / collaboration Les diagrammes UML
  • 254. Equivalence avec un diagramme de sĂ©quence S. Mesfar 257 Le diagramme de communication / collaboration Les diagrammes UML
  • 255. Messages simultanĂ©s Lorsque des messages sont envoyĂ©s en parallĂšle, on les numĂ©rote avec des lettres ‱1.a, 1.b,... pour des messages simultanĂ©s envoyĂ©s en rĂ©ponse Ă  un message dont l'envoi portait le numĂ©ro 1 S. Mesfar 258 Le diagramme de communication / collaboration Les diagrammes UML
  • 256. S. Mesfar 259 Classes Collaboration Le diagramme de communication / collaboration Les diagrammes UML
  • 257. OpĂ©rateurs de choix et de boucle Pas d'opĂ©rateurs combinĂ©s dans les diagrammes de communication ‱*[<clauseItĂ©ration>] reprĂ©sente une itĂ©ration. ïżœLa clause d'itĂ©ration peut ĂȘtre exprimĂ©e dans le format i:=1..n ‱[<clauseCondition>] reprĂ©sente un choix. La clause de condition est une condition boolĂ©enne. Elle reprĂ©sente la condition d’arrĂȘt S. Mesfar 261 Le diagramme de communication / collaboration Les diagrammes UML
  • 258. Syntaxe des messages ïżœSyntaxe complĂšte des messages est : [<numeroSĂ©quence>][<expression>]:<message> ïżœÂ« message » a la mĂȘme forme que dans les diagrammes de sĂ©quence, « numĂ©roSĂ©quence » reprĂ©sente le numĂ©ro de sĂ©quencement des messages et « expression » prĂ©cise une itĂ©ration ou un branchement conditionnel. ïżœExemples : ïżœ2 : affiche(x,y) : message simple. ïżœ1.3.1 : trouve("Hadock") : appel emboĂźtĂ©. ïżœ4 [x < 0] : inverse(x,couleur) : conditionnel. ïżœ3.1 *[i:=1..10] : recommencer() : itĂ©ration. S. Mesfar 262 Le diagramme de communication / collaboration Les diagrammes UML
  • 259. Collaborations et interactions ïżœLes collaborations donnent lieu Ă  des interactions ïżœLes interactions documentent les collaborations ïżœLes collaborations organisent les interactions. ïżœLes interactions se reprĂ©sentent indiffĂ©remment par des diagrammes de communication ou de sĂ©quence S. Mesfar 263 Le diagramme de communication / collaboration Les diagrammes UML
  • 260. UML - Le langage Objet unifiĂ© x : ClasseA y : ClasseB [ x ] 1: message message soumis Ă  la condition x x : ClasseA y : ClasseB 1.a : message1 z : ClasseC1.b : message2 message1 et message 2 en parallĂšle x : ClasseA y : ClasseB 1.1 : message1 z : ClasseC1.2 : message2 message1.1 et message1.2 envoyĂ©s successivement vers y et z x : ClasseA y : ClasseB 1 : * [ 1..n ] message message envoyĂ© n fois x : ClasseA : ClasseB // 1: message message envoyĂ© en parallĂšle Ă  plusieurs instances de la classe B x : ClasseA y : ClasseB 1.a, 2.c / 5: message message envoyĂ© Ă  y lorsque 1.a et 2.c sont satisfaits (synchronisation) : Voir diag. d’activitĂ©s x : ClasseA y : ClasseB 1 : a : = message a rĂ©cupĂšre la valeur renvoyĂ©e par l’exĂ©cution du message (rĂ©cupĂ©ration d’un rĂ©sultat)S. Mesfar Le diagramme de communication / collaboration Les diagrammes UML
  • 261. Buts : 1. DĂ©crire l’interaction des objets entre eux 2. Illustrer les scĂ©narios des use cases 3. Valider les choix d’analyse et de conception (prototypage) 4. Aider au raffinement des diagrammes de classes de conception 265 S. Mesfar Le diagramme de communication / collaboration Les diagrammes UML
  • 262. 266 5.5 : Les Diagrammes Etats-transitions S. Mesfar
  • 263. Concepts liĂ©s Ă  la phase d’analyse ïżœ Un Ă©tat rĂ©fĂšre l’ensemble des valeurs qui dĂ©crit un objet Ă  un moment spĂ©cifique. ïżœ En d’autres termes, l’état d’un objet est dĂ©terminĂ© par les valeurs associĂ©es Ă  ses attributs. ïżœ Quand les messages sont reçus, les opĂ©rations associĂ©es aux classes des objets considĂ©rĂ©s amĂšnent des modifications de ces valeurs. 267 Le diagramme Etats-Transitions Les diagrammes UML