Académique Documents
Professionnel Documents
Culture Documents
husseinbilal@ul.edu.lb
2017-2018
SOMMAIRE
Introduction à la conception
objet
Conception à base de Patrons
Patrons de création (Creational
design pattern)
Patrons de structure
Patrons de comportement
INTRODUCTION A LA
CONCEPTION OBJET
Méthodes de conception
à base:
- Fonctionnelles
- Objet
- Composant
CONCEPTION FONCTIONNELLE
Décomposition en sous systèmes
Hiérarchisation et partage de ressources
Modularité
Structuration de l’application en
modules fonctionnels
Anciennes méthodes fonctionnelles
(SADT, SASD)
Principe : Séparation des données et
des traitements
Diagramme de Structure (SD, Yourdon)
Encapsulation
Identification des relations entre objets
Méthodes Objet
OOA (Cood et Yourdon, 90)
Architecture 3-tiers
Structuration de l’application
en trois niveaux: Présentation,
Métier et Données
UNIFIED MODELING LANGUAGE
UML
Rappel
Grady Booch
James Rumbaugh
Ivar Jacobson
Le "Langage Unifié de Modélisation" constitue une synthèse des méthodes
Booch, OMT et OOSE.
1.3. DE OMT À UML
UML 1.3
UML 1.1
UML 1.0
UML 0.9
Scenario State
Scenario State
Diagrams
Diagrammes Modèle Diagrams
Diagramme
Diagrams Diagrams
de collaboration de composan
Scenario
Scenario Component
Diagrams
Diagrammes Diagrammes
Component
Diagrams
Diagrammes
Diagrams Diagrams
d’états-transitions d’activités de déploiement
2. MODÉLISATION UML
2.2 LE R.U.P. (RATIONAL UNIFIED PROCESS)
Inception Elaboration Construction Transition
temps
Analyse
Analyse
Implémentation Impl.
Test Test
2. MODÉLISATION UML
2.2 LE R.U.P. : RELATION MODÈLE - DIGRAMMES UML
Use Case
Use Case
Classes Objets
Analyse
Composants
Collaboration
Impl.
Etats-
transitions
Test
Activités
2. MODÉLISATION UML
2.2 LE R.U.P. : RELATION MODÈLE - DIGRAMMES UML
Use Case
Use Case
Classes Objets
Analyse
Composants
Inclus . Sous-sytèmes
et paquetages
ModèlesConcept. Déploiement
Diagramme
Séquence
Dépl.
Collaboration
Impl.
Etats-
transitions
Test
Activités
2. MODÉLISATION UML
2.2 LE R.U.P. : RELATION MODÈLE - DIGRAMMES UML
Use Case
Use Case
Classes Objets
Analyse
Composants
ModèlesConcept. Déploiement
Diagramme
Séquence
Dépl.
Collaboration
Impl.
Etats-
transitions
Test
Activités
2. MODÉLISATION UML
2.2 LE R.U.P. : RELATION MODÈLE - DIGRAMMES UML
Use Case
Use Case
Classes Objets
Analyse
Composants
Pour pouvoir utiliser la messagerie, il faudra être reconnu par l’application (notion
d’abonné). C'est l'administrateur qui décide de l'inscription d'un abonné.
Inscription
abonné
Serveur
{ • Vérification abonné
• stockage messages
• routage messages
administrateur
2. MODÉLISATION UML
2.4 MESSAGERIE
Objectifs
connexion
création abonné
lecture message
suppression abonné
déconnexion
2.5. DIAGRAMME DE USE CASE
DÉFINITION
Use case
Acteur
Confirmer vol
Vérifier planning
1 * Ligne de
crédit
Superviseur
2.5. DIAGRAMME DE USE CASE
RELATIONS DES USE CASE
« include »
« include »
« include »
Prise de commande
1 * « extend »
Extension
commande supplémentaire: le Vendeur veut consulter
après création de commande le Catalogue
Vendeur Catalogue
produits
2.5. DIAGRAMME DE USE CASE
RELATIONS ENTRE LES CAS D ’UTILISATION
Virement par
minitel
<<extend>>
Le client utilise un Minitel
Virement Client
<<utilise>>
Identification
2.5. DIAGRAMME DE USE CASE
USE CASE ET SCÉNARII
Un cas d'utilisation décrit le comportement d’un système,
d’un sous-système, voire d’une classe, du point de vue de
l’utilisateur (au sens large).
Les diagrammes de cas d'utilisation permettent de définir
les limites du système et d'identifier les intervenants
extérieurs
Un scénario est une instance de cas d'utilisation qui sert à
décrire les interactions non triviales entre objets. Il décrit
un ensemble d'interactions entre des objets impliqués dans
une réalisation particulière et inconditionnelle (UML
introduit la représentation de conditions) du système
Un diagramme de séquences représente un scénario en
privilégiant l'aspect temporel des relations entre objets
Un diagramme de collaboration représente un scénario en
privilégiant l'aspect topologique des relations entre objets.
2.5. DIAGRAMME DE USE CASE
LES DIAGRAMMES DYNAMIQUES
Rappel : un scénario décrit un ensemble d'interactions entre des objets impliqués
dans une réalisation particulière et inconditionnelle d ’un cas d ’utilisation.
Étapes à réaliser
Identifier les objets, en déduire les classes
Décrire un dictionnaire de données contenant les
descriptions des classes, des attributs, des méthodes
évidentes et des associations
Enrichir, par l'analyse, les associations entre classes
Ajouter des attributs pour les objets et les liens
Organiser et simplifier les classes en utilisant
l'héritage
Tester le modèle en utilisant les scénarios d'analyse
…
message Envoyer message utilisateur
Il faut éliminer :
Système
affichage écran de connexion
Utilisateur
nom
mot de passe
lePosteClient
affichage écran de connexion
Utilisateur
nom leServeur
mot de passe
demande de connexion(nom,mot de passe)
connexion autorisée
affichage écran principal
lePosteClient
affichage écran de connexion
Utilisateur
nom leServeur
décrocher
tonalité
numéro (n)
décrocher
arrêt tonalité arrêt sonnerie
a décrocher
{ b - a < 10 sec }
tonalité
b
< 10 sec
numéro (n)
Temps
c
routage { d - c < 5 sec }
echo sonnerie d sonnerie
décrocher
arrêt tonnalité arrêt sonnerie
tonnalité
numéro (n)
Temps
décrocher
arrêt tonnalité arrêt sonnerie
afficher()
position()
p0
position()
p1
return
2.7. DIAGRAMMES DE COLLABORATION
DÉFINITION
Niveau instances :
Rafraîchir() fenêtre
:Contrôleur :Fenêtre
<<parameter>>fenêtre
1: AfficherCoordonnées(fenêtre) 1.1.3.1 : Ajouter(self)
<<local>>ligne *
unTrait:Trait new Ligne
1.1* [i=1..n] : AfficherSegment(i) : Ligne {new}
<<self>> 1.1.2 : Créer(r0,r1)
i-1 i 1.1.3 : Afficher(fenêtre)
Gauche:Point Droit:Point
2.7. DIAGRAMMES DE COLLABORATION
NIVEAU INSTANCES
Niveau instances :
serveurs
:Serveur
:Serveur
client
1: unServeur := find(specs)
<<local>>unServeur *
: Serveur
new Ligne
2 : process(request)
2.7. DIAGRAMMES DE COLLABORATION
NIVEAU SPÉCIFICATIONS
niveau spécifications
donne les rôles des classes et des associations
Tuteur 1 Élève *
/ Enseignant : Personne / Étudiant : Personne
Faculté Cours
Faculté 1 Cours * Cours *
2.7. DIAGRAMMES DE COLLABORATION
NIVEAU INSTANCES
niveau instances :
étudiantEnseignant()
1: NomEnseignant()
1.i.1:nom()
1.1*[i:=1..n]:Conférencier()
Objets de présentation
Texte
Son
Objets d'interface
IHM(s)
Objets de contrôle
Socket
2.8 DIAGRAMME DE CLASSES
DIAGRAMME DE CLASSES DE LA MESSAGERIE
Serveur
* quidam
Client Abonné
{quidam privilégié} nom
mot_de_passe
administrateur
Message
titre
texte Contient
Boîte_à_lettre
1..* s
2.8 DIAGRAMME DE CLASSES
NOTATION
Chaîne : CompteBancaire
{ auteur = « Jean Dupont », status =
analyse}
Nom : CompteBancaire
Mathématiques::Matrices::MatriceInvers
e
Label : CompteBancaire
compte
Expression : CompteBancaire
CompteBancaire * (*) (Personne*, int)
2.8 DIAGRAMME DE CLASSES
NOTATION (SUITE-1)
Expression OCL : item . selector
item . selector [qualifier-value]
set -> select (boolean-expression)
vol.pilote.heures_vol > vol.avion.minimum_heures
compagnie.employés->select (titre=« Manager » and self.rapports-
>taille > 10
Note
:
2.8 DIAGRAMME DE CLASSES
NOTATION (SUITE-2)
Correspondance type/instance :
Point
x: Real p1:Point
y: real x = 3.14
rotation(angle: Real) y = 2.718
échelle (facteur: Real)
:Point
x=1
y = 1.414
2.8 DIAGRAMME DE CLASSES
NOTATION (SUITE-3)
Correspondance rôle/instance :
Rôle : Objets :
p1/tête:Point
fin : Point
p2/fin:Point
x=1
y = 1.414
<Package>
Class1
Class2 Pack1
Pack2
Pack3
2.8 DIAGRAMME DE CLASSES
PACKAGE : STÉRÉOTYPES PRÉDÉFINIS
Stéréotypes de package
« topLevel » : racine de l’arbre (le plus haut de la
hiérarchie)
« facade » : représentation de processus, sous-systèmes
« framework » : classes réutilisables
« stub »
« access » : référence un élément public d ’un autre
package
« import » : intégration d ’éléments publics d ’un autre
package
Clients Banque
« access »
Banque::CompteBancaire
CompteBancaire
2.8 DIAGRAMME DE CLASSES
PACKAGE : EXEMPLE ÉDITEUR
Éditeur
« import » Contrôleur
« import » « access
Figure »
« access »
VueObjet « import »
Dessin Système de fenêtrage
« import »
Mode Motif Motif
« import »
Mode MS Windows MS Windows
2.8 DIAGRAMME DE CLASSES
PACKAGE : EXEMPLE ÉDITEUR
Éditeur
Entreprise
« facade » « facade »
Comptabilité Commercial
« facade »
Livraison
2.8 DIAGRAMME DE CLASSES
SOUS SYSTÈME
Opérations
Op1 :
Type1
Op2 :
Type2
Spécification
Réalisation
2.8 DIAGRAMME DE CLASSES
MODÈLE
Point de vue
visualisation sous un certain angle d’un système
exemple : analyse, design, conception, architecture
abstraction thématique (point de vue) du système
enrichissement du modèle UML par apport de
nouveaux modèles
plusieurs modèles pour un même sujet
relations inter-modèles : matérialisation des
dépendances
Regroupement de modèles
stéréotype : « systemModel »
2.8 DIAGRAMME DE CLASSES
MODÈLE
Symbolisé par un triangle en haut à droite
« systemModel »
Analyse Design
Exemple : un projet peut être vu via son dossier d ’analyse, ou par son dossier d ’architecture.
Chaque dossier correspond à un modèle (une vue particulière) du projet
2.8 DIAGRAMME DE CLASSES
EXTENSIONS
Contraintes et commentaires
Propriétés
Stéréotypes
2.8 DIAGRAMME DE CLASSES
CONTRAINTES ET COMMENTAIRES
Contraintes
relation sémantique entre les éléments du modèle
conditions et propositions qui doivent être vérifiées
pour valider le système modélisé
contraintes prédéfinies : xor
définies par l ’utilisateur dans un langage adapté
langage prédéfini : OCL
Commentaires
texte descriptif rattaché à un élément du modèle
2.8 DIAGRAMME DE CLASSES
CONTRAINTES ET COMMENTAIRES
Contrainte : { expression }
* Membre-de *
1 Président *
travailleur
employé employeur
*
Personne * 0..1 Entreprise
0..1
patron
{Personne.employeur =
Personne.patron.employeur }
2.8 DIAGRAMME DE CLASSES
PROPRIÉTÉ
Valeur attachée à un élément de modèle
attributs définis dans le métamodèle
valeur étiquetée (couple mot-clé/valeur) prédéfinie ou
définie par l ’utilisateur; le tag (mot-clé) représente
la propriété
liste de valeurs étiquetées
valeur étiquetée booléenne : isEtiquette
Notation :
{ nom = valeur }
{ nom1 = valeur1, nom2 = « autre valeur », nom3 = blabla }
{isNom = true }
{ isNom }
2.8 DIAGRAMME DE CLASSES
STÉRÉOTYPES
Modélisation d’utilisation
applicable à une classe, une relation entre éléments,
...
même forme (attributs et services) que la classe, mais
signification différente
mode d’utilisation de la classe
peut avoir des contraintes en plus de celles de la
classe
peut nécessiter des tagged values
extension native de UML
« motClé » inscrit au-dessus du nom de l’élément
concerné
peut être iconifié
peut être décrit par un rectangle identifié par le mot
clé « stereotype »
2.8 DIAGRAMME DE CLASSES
STÉRÉOTYPES
Stéréotype de classe : classe de contrôle
« control » « control »
Crayon_Traceur Crayon_traceur Crayon_Traceur
« call »
JobManager Scheduler
2.8 DIAGRAMME DE CLASSES
STÉRÉOTYPES PRÉDÉFINIS
stéréotypes de classes :
« actor » : intervenant extérieur (agit sur le comportement)
« utility » : classe utilitaire (attributs et opérations globales)
« signal » : événement
stéréotypes de méthodes de classes :
« constructor » , « destructor » : services particuliers
stéréotype d ’objets :
« local » , « global » , « transiant »
stéréotypes de modèles :
« systemModel » , « subsystem » , « useCaseModel »
« extends » , « uses » : relations entre use case
stéréotypes de package :
« topLevel » , « façade » , « framework », « stub »
« import » , « access » : relations entre packages
2.8 DIAGRAMME DE CLASSES
STÉRÉOTYPES PRÉDÉFINIS
acteur modèle
contrôle sous-système
2.8 DIAGRAMME DE CLASSES
Classes
Relations
Contraintes (OCL)
2.8 DIAGRAMME DE CLASSES
STRUCTURE STATIQUE
Le diagramme de classes permet d’appréhender, d’un point de vue logique, la structure
statique du système, en indiquant :
• la structure des objets composant le système,
• les liens structurels entre ces objets.
Un diagramme de classes contient aussi bien des classes que des interfaces, des
packages, des relations et des instances (objets et liens). Il ne contient pas
d ’informations temporelles.
classe utilitaire
métaclasse
énumération
objet
2.8 DIAGRAMME DE CLASSES
CLASSE : NOTATION
Une classe est représentée sous la forme d’un rectangle comportant 3 sections dédiées
respectivement :
• au nommage
• à la liste des attributs
• à la liste des opérations (méthodes).
nommage { ArticleDeLuxe
Référence : Entier
Désignation : Chaîne
attributs { PrixHT: Réel
Quantité : Entier
PrixTTC () : Réel
PrixTransport () : Réel
opérations { Retirer (q:Entier) : Entier
Ajouter (q:Entier) : Entier
2.8 DIAGRAMME DE CLASSES
CLASSE : NOTATION
Une classe peut être reconnue au travers de son package d’appartenance :
NomDePaquetage::NomDeClasse.
Selon le niveau d'abstraction requis, la représentation d'une classe pourra prendre une
des formes suivantes:
ArticleDeLuxe
PrixTTC () : Réel
PrixTransport () : Réel
Retirer (q:Entier) : Entier Articles ::
Ajouter (q:Entier) : Entier ArticleDeLuxe
2.8 DIAGRAMME DE CLASSES
CLASSE : NOTATION
Section de nommage :
• nom de la classe (obligatoire)
• stéréotype (ou icône) pour classifier la classe (métaclasse)
• propriétés (entre accolades)
<<Exception>>
ErreurSocket
avec visibilité :
public : pubic ou +
protégé : protected ou #
privé : private ou -
Le soulignage de l ’attribut spécifie que celui-ci est un attribut de classe et non pas
uniquement un attribut d’une instance de cette classe (i.e. attribut global, commun
à toutes les instances de la classe)
2.8 DIAGRAMME DE CLASSES
CLASSE : MÉTHODE
Syntaxe:
visibilité nom ( paramètres ) : type-retour { propriétés }
avec pour visibilité les mêmes possibilités que pour les attributs
Attributs
Errno: integer
Méthodes
throw ()
Fenêtre de
visualisation
{ auteur = J. DUPONT
}
# Visibilité : Booléen =
invisible
+ TailleDefaut : Entier
# TailleMax : Entier
+ Afficher () {abstract}
+ Cacher () {abstract}
+ Créer () {abstract}
Rafraîchir (mode : integer)
2.8 DIAGRAMME DE CLASSES
CLASSE : DOCUMENTATION
Pour un attribut :
Nom, Type, Valeur par défaut, contraintes, description, visibilité, Accès, …
T,n:Entier
Vecteur
kimono : Article
Kimono : Article
Référence = 30341
Désignation = “kimono”
PrixHT = 495.00 : Article
Quantité : Integer = 1000
2.8 DIAGRAMME DE CLASSES
RELATIONS
Relations :
par association (coopération)
par agrégation (association de composition)
par héritage (spécialisation/généralisation)
par dépendances
élément dérivé
2.8 DIAGRAMME DE CLASSES
ASSOCIATION
Association
Relation : décrit un ensemble de liens (instance d ’association)
entre des instances de classes
Association entre une classe (ou ensemble de classes) associée
à une autre
Représentation : une ligne droite, brisée ou courbe, reliant
deux classes
Exemple avec :
nom (Personnel)
sens de lecture Entreprise Personnel Personne
propriété (Travaille
Travaille pour
Nom Nom
pour) Adresse No S.S.
Adresse
2.8 DIAGRAMME DE CLASSES
ASSOCIATION
Exemple avec :
visibilité sur +Rôle_B
rôle
Classe_B
Classe_A
Classe_C
-Rôle_C
+Role_B : accès public à la classe Classe_B
-Role_C : accès privé à la classe Classe_C; c ’est une classe d ’implémentation;
elle n ’est accessible que quand on est dans la classe Classe_A
2.8 DIAGRAMME DE CLASSES
ASSOCIATION : CARDINALITÉ D ’ASSOCIATION
La cardinalité donne le nombre d’instances de chacune des
classes mises en relation avec une instance de la classe
associée
Elle est indiquée par une expression placée à chaque
extrémité du lien
classe Exactement 1 instance
* Plusieurs (0 ou plus)
classe
0..1 Optionnel (0 ou 1)
classe
1..* 1 ou plus
classe
* {ordered}
classe Avec ordonnancement
2.8 DIAGRAMME DE CLASSES
ASSOCIATION : CARDINALITÉ D ’ASSOCIATION
Exemples de cardinalités :
Un seul fabriquant (qui est une entreprise) crée un ensemble produits de type articles de luxe
1 Fabrique *
Entrepris ArticleDeLuxe
e fabricant produit fabriqué
Nom : Chaîne Référence : Entier
AdresseSiège: Chaîne Désignation : Chaîne
AdresseUsine: Chaîne PrixHT : Réel
Quantité : Entier
* Vend *
Boutique de luxe ArticleDeLuxe
revendeur produit diffusé
{ordered}
2.8 DIAGRAMME DE CLASSES
ASSOCIATION : CONTRAINTES
Une classe peut être impliquée dans deux associations distinctes par l’intermédiaire de deux instances:
chacune des instances participe à une et une seule des deux associations. Cette situation est représentée en
appliquant une contrainte entre les deux liens:
Exemple : Le détenteur d ’un compte bancaire est soit un particulier, soit une entreprise (exclusion)
1..2
Particulier
Compte bancaire {ou-exclusif} détenteur
1
Entreprise
Remarque : la contrainte ou-exclusif mentionnée ici aurait pu être donnée en utilisant le mot clé xor
Collaborateur 0..*
Personne 1..*
{subset} Entreprise
1 0..*
Patron
2.8 DIAGRAMME DE CLASSES
ASSOCIATION : QUALIFICATION
Une association peut être qualifiée par un (ou plusieurs) attribut. La valeur de cet attribut
permet de réduire l ’ensemble des instances répondant à l ’association. Ce qualificatif est
associé à la source de l ’association. La cardinalité précise :
0..1 : une seule valeur peut être sélectionnée, mais chaque valeur de l ’attribut n ’est pas
obligatoirement discriminante
1 : chaque attribut définit une instance unique
* : la valeur de l ’attribut est un index permettant de regrouper les instances en sous-ensembles
Échiquier
Banque
ligne:Ligne
compte # colonne:Colon
ne
* 1
0..1 1
Personne Carré
* Emploi *
Entrepri Personne
se employeur employé
Nom Nom
Adresse Numéro Sécurité Sociale
Emploi Adresse
Salaire
Fonction Patron
0..1
Collaborateur *
Dirige
Salaire et Fonction sont des attributs de la classe caractérisant l’association entre les Personnes et
l ’Entreprise. Ce ne sont ni des attributs de la classe Entreprise, ni des attributs de la classe Personne.
Cette classe (emploi) peut avoir une relation d ’association (dirige) entre ses représentants (poste de
patron, simple collaborateur)
2.8 DIAGRAMME DE CLASSES
ASSOCIATION : CAS PARTICULIERS
Réservation
Person Place
Vol
Nom
ne patron vol place
Numéro Sécurité Sociale 0..1 Date passager Numéro
Adresse Situation
Dirige Individ
u
Nom
employé *
2.8 DIAGRAMME DE CLASSES
AGRÉGATION
Agrégation :
un ensemble d ’objets fait partie intégrante d ’un
autre objet
Agrégation partagée
symbolisée par :
La destruction de la classe sur laquelle porte
l ’agrégation n ’implique pas la destruction des objets
qui la composent
cfr. les objets pointés ou les références en C++
Agrégation de composition
symbolisée par :
La destruction de la classe sur laquelle porte
l ’agrégation entraîne la destruction des objets qui la
composent
cfr. les classes membre de classe en C++
2.8 DIAGRAMME DE CLASSES
AGRÉGATION
Agrégation partagée
peut être qualifiée : {ordered} .
Dessin Dessin
Carré Triangle
Carré Triangle
3..*
Polygon
{ordered} Point
e
2.8 DIAGRAMME DE CLASSES
AGRÉGATION
Agrégation de composition :
Moto
2 1 1 1
Roue Siège Châssis Moteu
r
2.8 DIAGRAMME DE CLASSES
AGRÉGATION
uneMoto:Moto
leChâssis:Châssis leMoteur:Moteur
Moto
Siège 1 2
Roue
Châssis 1 Moteur 1
2.8 DIAGRAMME DE CLASSES
AGRÉGATION Vue globale
Connecté à
* *
* 1
Feu tricolore Coordonné par Centre de contrôle
* *
3 1 1 1
1 Ordinateur
Lampe * Coordonné par
Contrôleur
*
1
1 1
* *
Capteur 2 Capteur
1 *
magnétique Afficheur
* optique
2.8 DIAGRAMME DE CLASSES
HÉRITAGE
Héritage : association particulière (héritage de données
et code)
classe mère (classe de base, super-classe) : généralisation
classe fille (classe dérivée, sous-classe) : spécialisation
représentée par :
Super-classe
Sous-classe A Sous-classe B
2.8 DIAGRAMME DE CLASSES
HÉRITAGE
Exemple : un article électroménager, un article de luxe, ou un vêtement ont en
commun les mêmes caractéristiques décrites dans la classe Article
Article
Référence
Désignation
PrixHT
Quantité
{ Classe de base
classe mère
super-classe
GENERALISATION
SPECIALISATION
PrixTTC ()
PrixTransport ()
Retirer ()
Ajouter ()
Véhicule
{non disjointes} ou {inclusif}
Motorisation Milieu
Contraintes prédéfinies :
{disjoint} : une instance de sous-classe ne peut être instance d ’une autre sous-classe
{overlapping} : une instance peut appartenir à plusieurs sous-classes
{complete} : l ’arbre d ’héritage est exhaustif
{incomplete} : d ’autres sous-classes peuvent être ajoutées à l ’arbre des sous-classes
Discriminant :
Le discriminant sert à préciser le critère de classification utilisé
2.8 DIAGRAMME DE CLASSES
DÉPENDANCES
Dépendance
relation sémantique entre deux ou plusieurs éléments
une modification de la cible implique une modification de la source
« fiend »
« instantiate » Opération()
ClassC
« call »
T,k:Integer
Tableau
k..k
T
« bind » (Adresse, 24)
ListeAdresses
2.8 DIAGRAMME DE CLASSES
DÉPENDANCES
Dépendances prédéfinies entre packages
access : permet à un package de référencer un élément
public d ’un autre package; stéréotype « access »
import : permet à un package d ’utiliser le nom des
éléments publics d ’un autre package directement dans le
package courant en les y associant comme s ’ils étaient
définis localement; stéréotype « import »
« access »
« access » « access »
Diagram Elements « access »
Entreprise Département
employeur
1 employeur 1 département
travaillePourDépartement
*
*
Personne
/travaillePourEntreprise
{ Personne.employeur = Personne.département.employeur }
2.8 DIAGRAMME DE CLASSES
OCL : OBJECT CONSTRAINT LANGUAGE
* employé
2.8 DIAGRAMME DE CLASSES
OCL : OBJECT CONSTRAINT LANGUAGE
Il est recommandé d’éviter d’introduire des informations redondantes dans un modèle d’objets
(quel qu’il soit). On peut cependant être amené à introduire une information redondante afin
d’indiquer les éléments dont elle dérive. Une entité dérivée est décrite en faisant précéder son
nom du symbole « / » et en lui associant une contrainte indiquant son domaine de définition.
/ emploie
* 1
Personne Entreprise
employé employeur
Nom Nom
patron Numéro Sécurité Sociale
Adresse
0..1 Adresse
Dirige 1
* *
employé
1
*
emploie
Service
{personne.employeur =personne.service.entreprise}
2. Modélisation UML
2.9 Retour à la messagerie : IHM
Nom :
Mot de passe :
OK ANNULER
2. Modélisation UML
2.9 Retour à la messagerie : IHM
nom
activation
mot de passe
OK demande de connexion
activation
:Client :Serveur
*
quidam
Fenêtr Abonné
e nom
{quidam privilégié}
mot_de_passe
administrateur
1 1
IhmMenu IhmConnexio Message
n titre
texte Contient
Boîte_à_lettre
1..* s
2. Modélisation UML
2.9 Retour à la messagerie : IHM
Vérification
transitoire
État initial
(création)
État initial
État final
peut avoir une
condition de
destruction État courant
Événement
(État final)
2.8 10. DIAGRAMME ÉTATS-TRANSITIONS
ÉTAT : NOTATIONS
État :
instant fini de la vie d’un objet pendant lequel il répond à des
conditions particulières, ou qu’il est en cours de réalisation
d’une action, ou qu’il attend l’arrivée d’un événement
Défini par
son nom (optionnel)
des transitions internes (activités) de la forme : label_action /
expression_action (optionnelles)
Notation :
État État
label / activité ou label / activité ou label / activité
2. 10. DIAGRAMME ÉTATS-TRANSITIONS
ÉTAT : ACTIVITÉ
Activité
transition interne d ’un état, interruptible, et à durée limitée
peut être continue ou finie (se termine toute seule)
des transitions internes de la forme : label_action /
expression_action
labels réservés :
entry : action exécutée lors de l’entrée dans l ’état courant
Événement [ condition ]
Premier état Deuxième état
2. 10. DIAGRAMME ÉTATS-TRANSITIONS
TRANSITION : EXEMPLE
Exemple :
La transition entre l ’état de célibataire et celui de
marié se fait par le biais du mariage (événement)
une condition pour se marier est d’être majeur
Transition complexe
peut avoir plusieurs sources et/ou
plusieurs destinations
représentée par une barre de
synchronisation
Processus
Setup Cleanup
2. 10. DIAGRAMME ÉTATS-TRANSITIONS
DÉFINITIONS DES ÉLÉMENTS DE DIAGRAMME : ÉVÉNEMENT
Événement
apparaît à un instant précis
une durée de vie très courte
c'est un message
peut véhiculer de l ’information
peut être paramétré
Notation
Nom_Événement (paramètre_1:type_1, ..., paramètre_n:type_n)
Notation
Évènement(textuelle) : 1 , parametre2:type2 , ... ) [ expression booléenne ]
( parametre1:type
/représenté par .un
^ catégorie d'objet ^ (chapeau)
Événement ( parametre1:type1 , … ) méthode
(arguments)
Notation graphique
2. 10. DIAGRAMME ÉTATS-TRANSITIONS
ACTION À ENVOI D ’ÉVÉNEMENT
Notation graphique
Allumer(valeur)
BoutonEtage:PanneauAffichage
Notation textuelle
Arrêt Marche
Appui Bouton Appel / Démarrer moteur
^BoutonEtage. Allumer(valeur)
2. 10. DIAGRAMME ÉTATS-TRANSITIONS
EXEMPLE
Exemple
« signal »
Événement
heure
« signal »
Entrée utilisateur
périphérique
« signal » « signal »
Souris Clavier
position caractère
Numéro_Composé(num)
Téléphone Combiné décroché Composition Communication
inutilisé numéro établie
2. 10. DIAGRAMME ÉTATS-TRANSITIONS
DÉCOMPOSITION D’ÉTATS
Composition du
numéro
numéro: chaîne = ““
Composition partielle
Composition du
numéro Chiffres(n) [numéro.Validé()]
entry / déclencher_ tonalité entry / numéro.concaténer(n)
exit / stop_tonalité / ^ Numéro_Composé(num)
Chiffres(n)
2. 10. DIAGRAMME ÉTATS-TRANSITIONS
APPORT DE LA STRUCTURATION
S1
S
1
S2 S4 S2S4 S2 S5
S3 S5
S3S4 S3S5
2. 10. DIAGRAMME ÉTATS-TRANSITIONS
SOUS-ÉTATS CONCURRENTS (RÉGIONS)
Sous-états concurrents : représentés sous la forme de
plusieurs diagrammes états/transitions séparés par une
ligne hachée
Exemple : validation d’une U.V.
Validation UV
Validation partielles
projet terminé
Projet
reçu
Examen
recalé Repasser
2. 10. DIAGRAMME ÉTATS-TRANSITIONS
ÉTATS CONCURRENTS
evt / bip AU
Process Arrêt
Attente
sp(activité1) do / activité1
[condition] / bip
Process
Attente
do / activité2
sp(activité2)
2. 10. DIAGRAMME ÉTATS-TRANSITIONS
ÉTATS COMPOSÉS ET TRANSITIONS
Transitions sur états composés
W
s
p s
A E C
u
F
B r
D
t
Simplification de la notation :
W s
p
A C
B r D
2. 10. Diagramme États-Transitions
exemple
Vide Pleine
empiler()[N!=Nmax-1] / N = N+1
dépiler()[ N= 1]/N=0
dépiler() / N = Nmax-1
En Charge
dépiler()[N!=1] / N = N-1
2. 10. DIAGRAMME ÉTATS-TRANSITIONS
HISTORIQUE D ’ÉTAT
Un indicateur d'historique peut être associé à un état
composite A
permet de marquer le dernier sous-état de A à
partir duquel une transition a été réalisée vers un
autre état H
noté par la lettre H dans un cercle
Exemple :
A A1 B
H
A2
2. 10. DIAGRAMME ÉTATS-TRANSITIONS
INDICATEUR D'HISTORIQUE
Un indicateur d'historique (lettre H dans un cercle) peut être associé à un état composite A
afin de marquer le dernier sous-état (Ax) à partir duquel une transition a été réalisée vers un
autre état composite (B). Une transition ultérieure vers l'indicateur d'historique indiquera une
restitution du sous-état marqué (Ax).
H enregistrement panne
Ventilateur actif
Créé
Création Log Attente Enregistrement
Actif
panne enregistrée
2. 10. DIAGRAMME ÉTATS-TRANSITIONS
ACTIONS INTERNES
event/ action 3
#
event / action 3
do / activité
L ’événement event est externe à l ’état (ayant pour
entry / action 1
effet de re-rentrer dans cet état);
exit / action 2
les actions relatives à exit puis entry sont déclenchées
quand l ’événement event apparaît.
2. 10. DIAGRAMME ÉTATS-TRANSITIONS
ÉTAT DE SOUS-MACHINE
Un état de sous-machine représente une invocation à un état
machine défini par ailleurs
La sous-machine doit être dans le même contexte que l ’état
machine appelant
Un état machine peut être accédé (ou quitté) à chacun de ses sous-
états
Exemple : Gestion des erreurs
• La transition due à l’événement include / ErreurSousMachine
Erreur1 se termine à l’état sub1 Erreur2 /
• La transition due à l’événement Erreur1 /
Erreur2 se termine au sous-état
sub12 de l ’état sub1 sub1 sub1::sub12
• La transition due à l’événement subEnd
Erreur3 utilise la transition par
défaut de la sous-machine Erreur3 /
• La transition Fixe1 est générée à
Fixe1 /
partir du sous-état subEnd
2. 10. DIAGRAMME ÉTATS-TRANSITIONS
ÉTAT DE SYNCHRONISATION
Construire Maison
Monter
Construire Poser le
les murs
charpente toit
Créer
fondation Inspection
* *
[café trouvé]
Allumer la
machine
Allumer la
on machine machine
/machine.on
Ecoulement
Ecoulement
lampe éteinte
lampe éteinte
Verser café Boire boisson
2. 11. DIAGRAMME D’ACTIVITÉS
DÉCISIONS
Prise de décision
une action propose plusieurs transitions
chaque transition est dotée d ’une condition
Demander
autorisation
2. 11. DIAGRAMME D’ACTIVITÉS
ATTRIBUTION DES RESPONSABILITÉS
Commander
destocker produit
Delivrer
Receptionner
MODÉLISATION UML
2.12 RELATION ENTRE LES DIAGRAMMES
Connexion
Connecté à
Système
Client
Feu tricolore Centre de contrôle
affichage écran de connexion
nom * *
3 1
1 1 * Coordonné par 1
mot de passe Lampe Ordinateur
Contrôleur
*
1
1 1
* *
affichage écran principal
2 1 *
Capteur
Capteur
magnétiqu Afficheur
* optique
e
Il s ’agit ici de vérifier la cohérence des données d ’un point de vue syntaxique
Service
CLIENT SERVEUR
(IHM)
COM
Interface C++
Implémentation
SOCKET
UNIX
HARD
MODÉLISATION UML
2.14 ÉLÉMENTS D’ARCHITECTURE
L’application messagerie est constituée de 2 entités distinctes qui fonctionnent en
parallèle et qui ont une implantation physique différente :
requêtes d'administration
requêtes utilisateur
CLIENT
SERVEUR
MODÉLISATION UML
2.14 ÉLÉMENTS D’ARCHITECTURE
Utilisation du système de fichiers Unix
SERVEUR
FICHIER DES
ABONNES
nom
mot de passe
BIN
ID process socket
client
Du côté serveur :
Multitâches Unix
Du côté Client :
Au niveau Client, il faut initialiser le nom de la machine serveur dans une variable UNIX, pour pouvoir effectuer la
connexion
Serveur.
En cas de redémarrage après un arrêt sur panne, il faut vérifier si les répertoires abonnés sont bien cohérents avec la liste
des abonnés. Si ce n’est pas le cas, il faut créer les répertoires manquant par rapport à la liste des abonnés.
• Espace disque
Au démarrage Serveur, il faut vérifier qu’il y est un espace disque suffisant pour créer l’arborescence et stocker des
messages (qcq Mega). En fonctionnement régulier, il faut contrôler en permanence l’espace disponible restant sur le
disque et avertir les clients qui veulent envoyer des messages, lorsque la place disque devient insuffisante.
On peut créer (au démarrage) un fichier tampon qui jouerait le rôle de réserve lorsque l’espace disque deviendrait limité.
MODÉLISATION UML
2.14 ÉLÉMENTS D’ARCHITECTURE
Diagramme de composants
Diagramme de déploiement
MODÉLISATION UML
2.14 ÉLÉMENTS D’ARCHITECTURE : DIAGRAMMES DE
COMPOSANTS
Modèle physique
Scheduler réservations
GUI
MODÉLISATION UML
2.14 ÉLÉMENTS D’ARCHITECTURE : DIAGRAMMES DE
COMPOSANTS
Orthographe
Dictionnaire
Synonymes
maboîte : Mailer
Mailbox RoutingList
MODÉLISATION UML
2.14 ÉLÉMENTS D’ARCHITECTURE : DIAGRAMMES DE
COMPOSANTS
send
Socket
receive
Socket.h
Boite_a_lettre
Message Abonné
Boite_a_lettre.h
class Boite_a_lettre
class Message
class Abonné
MODÉLISATION UML
2.14 ÉLÉMENTS D’ARCHITECTURE : DIAGRAMMES DE DÉPLOIEMENT
Modèle dynamique à l’exécution
Exécutables utilisés par le système
Montre la configuration des éléments d’exécution et des
composants logiciels
architecture générale des éléments d ’exécution
Permet de déterminer les ressources physiques
nécessaires au fonctionnement du système
donne les associations de communication entre les
nœuds du graphe
AdminServer :
HostMachine « database »
RDV BD
: Planificateur
réservatio
n
Machine 1 : PC
:
Agenda
MODÉLISATION UML
2.14 ÉLÉMENTS D’ARCHITECTURE : DIAGRAMME DE DÉPLOIEMENT : LA
MESSAGERIE
Autre approche pour la messagerie avec une base de données gérant les abonnés
Serveur
« database »
Abonné
: Boite_a_lettre
send
: Socket
receive
Client
send
: IHM : Socket
receive
3. CONCEPTION
OBJECTIFS
Approche en Y : Existant
{ • matériel
• logiciel
• compétence des équipes
Exigences prototypage
{
• langage
Analyse • distribution
• persistance des objets
• architecture logicielle
• normes de conception
• design patterns (modèles de conception)
• mécanismes réutilisables
Conception
Implémentation
Tests
3. CONCEPTION
EXEMPLES D ’ACTIVITÉS PROPRES À LA CONCEPTION
- Combiner les trois modèles pour obtenir les opérations sur les classes
- Optimiser les chemins d'accès aux données (objets, attributs, associations dérivés)
- Valider
3. CONCEPTION
LA MESSAGERIE
Conception des opérations
- Pour chaque opération, représenter les objets existants avant le déclenchement de la fonction,
superposer les objets créés à l'aide de pointillés, indiquer les flots de données.
→ 1 - activer(envoi)
→ 1.1 créer (Nom, Mot_de_passe)
:Client L
IHM-Connexion :Requète_connexion
L
→ 1.2 reponse = envoyer()
↓1.3 traiter()
↓1.2.1 trame_recept = envoyer(trame_em
L L
:Reponse_acquitement :Socket
3. CONCEPTION
LA MESSAGERIE
SOCKET
Serveur
destination
Service socket_administrateur
Identificateur
Socket (service)
Socket (machine,service)
Socket (numéro) 0 .. sockets_abonnés
activer_connexion () *
envoyer (buffer)
recevoir (buffer)
3. CONCEPTION
UTILISATION DES PATERNS
- Exemple d'un moniteur multitâches en environnement mono processu
1
Process Moniteur
Event
priorite 1..n
pos 0..1 1..1
reset() go()
set() main_loop quit()
isset()
3. CONCEPTION
PRÉCISION DES ASSOCIATIONS
Critères
- Un choix global ou spécifique à chaque association
Un losange placé à l’une des extrémités d’un lien d’agrégation (du côté du composant) permet
de définir le mode d’implémentation physique de l’agrégation:
- un losange vide indique une implémentation par référence (utilisation d’un pointeur ou
d’une table de hachage (Hash Coding) par exemple)
- un losange plein indique une implémentation par valeur (une classe est imbriquée dans une
autre).
1
3..*
Polygone Point
1 {ordered}
1
Bordure
Couleur
Texture
Densité
3. CONCEPTION
PRÉCISION DES ASSOCIATIONS
Préciser les associations
Travaille pour
*
Personne Société
employeur
Personne
employeur Société
Travaille pour
* Société
Personne
employés employeur
Personne
employeur Société
employés
Ensemble
3. CONCEPTION
PRÉCISION DES ASSOCIATIONS
Préciser les associations
3 - Implémenter l'association comme un objet
Personne A
Société X
Personne B
Personne C
Société Y
Personne D
Fichier Fichier
date_création : date_création
:
Entier Chaîne Fichier Date
date_création jour : Entier
mois : Entier
Ligne année : Entier
x1 : réel
y1 : réel p1
x2 : réel Ligne Point
y2 : réel x : réel
p2 y : réel
3. CONCEPTION
REPRÉSENTATION DES OBJETS
Quelques exemples
Fenêtre
Fenêtre Id : Entier
largeur largeur
hauteur hauteur
centre centre
* Ordered-collection
Equipe Joueur Equipe
{ordered} <joueur>
Ordered-collection<> *
joueur
Analyse Conception
3. CONCEPTION
REPRÉSENTATION DES OBJETS
Quelques exemples (suite)
process
Régulateur
régulateur
objet
Compte
compte
Analyse Conceptio
n
3. CONCEPTION
REPRÉSENTATION DES OBJETS
* Personne
Personne Société
Société ID Société
ID
Société
Personne
Société Key société nom * nom
{ société adresse * adresse
Analyse Conception
4. IMPLÉMENTATION
Validité
Robustesse
Extensibilité
Compatibilité
Fiabilité
Lisibilité
4. IMPLÉMENTATION
package class_Fenetre
type Fenetre is private
function create (xmin, ymin, largeur, longueur : Entier)
return Fenetre;
procedure deplacer (self : Fenêtre);
private :
type Fenetre is record
xmin : Entier;
ymin : Entier;
xmax : Entier;
ymax : Entier
end record;
end class_Fenetre
4. IMPLÉMENTATION
Avec un langage non objet (C)
Fichier fenetre.h
struct Fenêtre
{
int xmin;
int ymin;
int xmax;
int ymax;
};
Fenêtre create (int xo, int yo, int largeur, int longueur);
void deplacer ();
4. IMPLÉMENTATION
Avec une base de données relationnelle
Person
Object Person
ID
person name
Model address conception person name
address
Diagrammes de classes
Diagramme de séquences
Diagrammes de Collaboration
Diagrammes d’activités
Diagrammes d’états-transitions
Diagrammes de composants
Diagrammes de déploiement
Implémentation
5. RÉSUMÉ D’UML
NOTATION
Classes
Relation
5. RÉSUMÉ D’UML
NOTATION
Use cases
5. RÉSUMÉ D’UML
NOTATION
5. RÉSUMÉ D’UML
NOTATION
5. RÉSUMÉ D’UML
NOTATION
5. RÉSUMÉ D’UML
NOTATION
5. RÉSUMÉ D’UML
NOTATION
5. RÉSUMÉ D’UML
NOTATION
5. RÉSUMÉ D’UML
NOTATION