Vous êtes sur la page 1sur 24
Polytech Paris-Sud Formation initiale 3 e année Spécialité Informatique UML Diagrammes de séquence Delphine

Polytech Paris-Sud Formation initiale 3 e année Spécialité Informatique

UML

Diagrammes de séquence

Delphine Longuet

delphine.longuet@lri.fr

Processus de développement logiciel

Analyse

des besoins
des
besoins
Processus de développement logiciel Analyse des besoins Tests d'acceptation Spéci fi cation Tests système Tests
Processus de développement logiciel Analyse des besoins Tests d'acceptation Spéci fi cation Tests système Tests

Tests d'acceptation

logiciel Analyse des besoins Tests d'acceptation Spéci fi cation Tests système Tests d'intégration

Spéci cation

des besoins Tests d'acceptation Spéci fi cation Tests système Tests d'intégration Conception
des besoins Tests d'acceptation Spéci fi cation Tests système Tests d'intégration Conception

Tests système

Tests d'acceptation Spéci fi cation Tests système Tests d'intégration Conception architecturale
Tests d'acceptation Spéci fi cation Tests système Tests d'intégration Conception architecturale

Tests d'intégration

Spéci fi cation Tests système Tests d'intégration Conception architecturale Conception détaillée Tests
Conception architecturale Conception détaillée
Conception
architecturale
Conception
détaillée
d'intégration Conception architecturale Conception détaillée Tests unitaires Développement D. Longuet - UML 2

Tests unitaires

Développement

Diagrammes d'interaction

Objectif : Représenter les communications avec le logiciel et au sein du logiciel

Diagramme de communication

Représentation spatiale des objets et de leurs interactions

Diagramme d'objet dont les associations sont étiquetées par les messages envoyés

Diagramme de séquence

Représentation temporelle des interactions entre les objets

Chronologie des messages échangés entre les objets et avec les acteurs

Diagrammes d'interaction

Objectif : Représenter les communications avec le logiciel et au sein du logiciel

Diagramme de communication

Représentation spatiale des objets et de leurs interactions

Diagramme de séquence

Représentation temporelle des interactions entre les objets

Diagrammes équivalents en phase de conception : Description du lien entre cas d'utilisation et diagramme de classes

Diagrammes d'interaction

Exemple : À partir d'un diagramme de classes et d'un cas d'utilisation

PiloteAuto

de classes et d'un cas d'utilisation PiloteAuto Voiture démarrer() Diagramme de communication p :

Voiture

classes et d'un cas d'utilisation PiloteAuto Voiture démarrer() Diagramme de communication p : PiloteAuto 1 :

démarrer()

Diagramme de communication

p

: PiloteAuto

1 : démarrer()

Diagramme de communication p : PiloteAuto 1 : démarrer() v : Voiture 1.1 : allumer() Moteur

v : Voiture

1.1 : allumer()

p : PiloteAuto 1 : démarrer() v : Voiture 1.1 : allumer() Moteur allumer() m :

Moteur

1 : démarrer() v : Voiture 1.1 : allumer() Moteur allumer() m : Moteur Diagramme de

allumer()

m : Moteur

Diagramme de séquence

p

: PiloteAuto

v : Voiture

m : Moteur

démarrer()

m : Moteur Diagramme de séquence p : PiloteAuto v : Voiture m : Moteur démarrer()

allumer()

m : Moteur Diagramme de séquence p : PiloteAuto v : Voiture m : Moteur démarrer()

Diagrammes d'interaction

Objectif : Décrire la réalisation des cas d'utilisation sur le système décrit par le diagramme de classes

Point de vue interne sur le fonctionnement du système

Description au niveau de l'instance (état du système à un instant)

Description de scénarios particuliers

Représentation des échanges de messages

Entre les acteurs et le système, entre les objets du système

De façon chronologique

Diagrammes de séquence

Éléments du diagramme de séquence

Acteurs

Objets (instances)

Messages (cas d'utilisation, appels d’opération)

Principes de base : Représentation graphique de la chronologie des échanges de messages avec le système ou au sein du système

« Vie » de chaque entité représentée verticalement

Échanges de messages représentés horizontalement

Utilisation en phase de conception

Utiliser
Utiliser

Acteur

Système

Diagramme de cas d'utilisation

Classe1

Acteur Système Diagramme de cas d'utilisation Classe1 Classe2 Diagramme de classes du système Objectif :

Classe2

Système Diagramme de cas d'utilisation Classe1 Classe2 Diagramme de classes du système Objectif : Description de

Diagramme de classes du système

Objectif : Description de la réalisation d'un cas d'utilisation sur le système décrit par le diagramme de classes

Problème : Communication entre les acteurs et le système vu comme un ensemble d'objets

Utilisation en phase de conception

Utiliser
Utiliser

Acteur

Système

Diagramme de cas d'utilisation

Utiliser Acteur Système Diagramme de cas d'utilisation A c t e u r InterfaceSystème Classe1 Classe2

Acteur

InterfaceSystème

Classe1

d'utilisation A c t e u r InterfaceSystème Classe1 Classe2 Diagramme de classes du système Classe1

Classe2

A c t e u r InterfaceSystème Classe1 Classe2 Diagramme de classes du système Classe1 Classe2

Diagramme de classes du système

Classe1

Classe2

Communication entre acteurs et système via une interface (texte, web, physique ) Solution : Création d'une classe d'interface qui :

gère les interactions avec les acteurs

encapsule le résultat des opérations

Utilisation en phase de conception

Utiliser
Utiliser

Acteur

Système

Diagramme de cas d'utilisation

Classe1

Acteur Système Diagramme de cas d'utilisation Classe1 Classe2 Diagramme de classes : A c t e

Classe2

Système Diagramme de cas d'utilisation Classe1 Classe2 Diagramme de classes : A c t e u

Diagramme de classes

cas d'utilisation Classe1 Classe2 Diagramme de classes : A c t e u r : InterfaceSystème

: Acteur

: InterfaceSystème

objet1 : Classe1

utiliser()

t e u r : InterfaceSystème objet1 : Classe1 utiliser() a ff ichage opération(args) retour C

aichage

InterfaceSystème objet1 : Classe1 utiliser() a ff ichage opération(args) retour C l a s s e

opération(args)

objet1 : Classe1 utiliser() a ff ichage opération(args) retour C l a s s e 2

retour

: Classe1 utiliser() a ff ichage opération(args) retour C l a s s e 2 (

Classe2()

objet2

opération(args) retour C l a s s e 2 ( ) objet2 objet2 : Classe2 détruire()

objet2 : Classe2

retour C l a s s e 2 ( ) objet2 objet2 : Classe2 détruire() D.
retour C l a s s e 2 ( ) objet2 objet2 : Classe2 détruire() D.

détruire()

l a s s e 2 ( ) objet2 objet2 : Classe2 détruire() D. Longuet -

D. Longuet - UML

Diagramme de séquence du cas d'utilisation Utiliser

10

Éléments de base

acteur a c t e u r

Éléments de base a c t e u r J e a n : A c

Jean : Acteur

instance d'une classe du diagramme de classes

t e u r instance d'une classe du diagramme de classes objet1 : Classe1 objet2 :

objet1 : Classe1

objet2 : Classe2

du diagramme de classes objet1 : Classe1 objet2 : Classe2 opération1() appel d'une opération opération2(args)

opération1()

de classes objet1 : Classe1 objet2 : Classe2 opération1() appel d'une opération opération2(args) ligne de vie

appel d'une opération

opération2(args)

opération1() appel d'une opération opération2(args) ligne de vie retour2 retour1 valeur renvoyée exécution D.
opération1() appel d'une opération opération2(args) ligne de vie retour2 retour1 valeur renvoyée exécution D.

ligne de vie

retour2

d'une opération opération2(args) ligne de vie retour2 retour1 valeur renvoyée exécution D. Longuet - UML 11
retour1 valeur renvoyée
retour1
valeur renvoyée
d'une opération opération2(args) ligne de vie retour2 retour1 valeur renvoyée exécution D. Longuet - UML 11

exécution

Types de messages

Message synchrone : Émetteur bloqué en attente du retour

: GAB : Banque exécution véri fierSolde(compte) bloquée soldeOK
: GAB
: Banque
exécution
véri fierSolde(compte)
bloquée
soldeOK

èche pleine

Message asynchrone : Émetteur non bloqué, continue son exécution

: Ascenseur

: Voyant

allumer() processus évoluant en parallèle
allumer()
processus évoluant
en parallèle

èche ouverte

pas nécessairement de retour

Création et destruction d'objet

: PageWeb

appel du constructeur de la classeCréation et destruction d'objet : PageWeb nouvSession destroy() Session() nouvSession : Session retour obligatoire de

d'objet : PageWeb appel du constructeur de la classe nouvSession destroy() Session() nouvSession : Session retour

nouvSession

destroy()

Session()

nouvSession : Sessionconstructeur de la classe nouvSession destroy() Session() retour obligatoire de l'instance créée exécution du

retour obligatoire de l'instance créée

: Session retour obligatoire de l'instance créée exécution du constructeur destruction de l'objet (pas

exécution du

constructeur

de l'instance créée exécution du constructeur destruction de l'objet (pas nécessairement à la suite
de l'instance créée exécution du constructeur destruction de l'objet (pas nécessairement à la suite

destruction de l'objet (pas nécessairement à la suite d'un message)

Message ré exif

: Catalogue

livres : Ensemble

chercher(auteur)

ré fl exif : Catalogue livres : Ensemble chercher(auteur) listeLivresAuteurTriée trier() appel d'une opération

listeLivresAuteurTriée

livres : Ensemble chercher(auteur) listeLivresAuteurTriée trier() appel d'une opération interne D. Longuet - UML
livres : Ensemble chercher(auteur) listeLivresAuteurTriée trier() appel d'une opération interne D. Longuet - UML

trier()

appel d'une opération interne

Alternative

Principe : Condition à l'envoi d'un message Notation :

Deux diagrammes

a : Ascenseur

condition

Notation : ● Deux diagrammes a : Ascenseur condition p : Portes [portes ouvertes] fermer() si

p : Portes

[portes ouvertes] fermer()
[portes ouvertes] fermer()

si la condition est véri ée

c : Cabine

sinon [portes fermées] déplacer(étage)
sinon
[portes fermées] déplacer(étage)

Alternative

Principe : Condition à l'envoi d'un message Notation :

Deux diagrammes

Bloc d'alternative alt

a : Ascenseur

p : Portes

● Bloc d'alternative alt a : Ascenseur p : Portes alt [portes ouvertes] fermer() c :

alt [portes ouvertes]

fermer()

alt a : Ascenseur p : Portes alt [portes ouvertes] fermer() c : Cabine [portes fermées]

c : Cabine

[portes fermées]

déplacer(étage)

Ascenseur p : Portes alt [portes ouvertes] fermer() c : Cabine [portes fermées] déplacer(étage) D. Longuet

Boucle

Principe : Répéter un enchaînement de messages Notation :

Note

Pour chaque livre du catalogue
Pour chaque
livre du catalogue

cat : Catalogue

livre : Livre

premierAuteur() auteur
premierAuteur()
auteur

opération répétée pour tous les objets mentionnés

Boucle

Principe : Répéter un enchaînement de messages Notation :

Note

Bloc de boucle loop

cat : Catalogue

livre : Livre

● Bloc de boucle loop cat : Catalogue livre : Livre premierAuteur() auteur objets sur lesquels
● Bloc de boucle loop cat : Catalogue livre : Livre premierAuteur() auteur objets sur lesquels

premierAuteur()

auteur
auteur

objets sur lesquels répéter la boucle

Référence à un autre diagramme

b : Banque

c : Compte

cl : Client

ref véri fi cation du solde
ref
véri fi cation du solde
ref
ref

prélèvement agios noti é au client

du solde ref prélèvement agios noti fi é au client référence à un diagramme décrit ailleurs

référence à un diagramme décrit ailleurs

Exemple – Analyse

E ffectuer un virement personnel Employé
E ffectuer un
virement personnel
Employé

Système de gestion bancaire

virement personnel Employé Système de gestion bancaire Employé SGB e ff ectuerVirementP(id,noC1,noC2,mnt) OK D.

Employé

SGB

eectuerVirementP(id,noC1,noC2,mnt)

Employé Système de gestion bancaire Employé SGB e ff ectuerVirementP(id,noC1,noC2,mnt) OK D. Longuet - UML 20

OK

Employé Système de gestion bancaire Employé SGB e ff ectuerVirementP(id,noC1,noC2,mnt) OK D. Longuet - UML 20

Exemple - Conception

E ffectuer un virement personnel Employé
E ffectuer un
virement personnel
Employé

Système de gestion bancaire

virement personnel Employé Système de gestion bancaire : Employé Banque nom : string * 1 *

: Employé

Banque

nom : string

* 1

* 1 Client nom : string naissance : Date

nom : string * 1 * 1 Client nom : string naissance : Date : SGB

: SGB

1

 

1

*

Compte

numéro : int devise : Devise

solde : oat

 

1

*

1

 

Client

solde : fl oat   1 * 1   Client Virement 1 montant : fl oat

Virement 1 montant : oat

1 date : Date

0

0

*

*

Client Virement 1 montant : fl oat 1 date : Date 0 0 * * e
Client Virement 1 montant : fl oat 1 date : Date 0 0 * * e

eectuerVirementP(id,noC1,noC2,mnt)

date : Date 0 0 * * e ff ectuerVirementP(id,noC1,noC2,mnt) ref chercher client c : Client
ref chercher client c : Client ref chercher comptes
ref
chercher client
c : Client
ref
chercher comptes
ref créer virement
ref
créer virement

eff ectuer virement ectuer virement

OK

client c : Client ref chercher comptes ref créer virement e ff ectuer virement OK v

v : Virement

Exemple - Conception

Exemple - Conception : Employé : SGB Client e ff ectuerVirementP(id,noC1,noC2,mnt) chercher(id) client client : Client

: Employé

: SGB

Client

eectuerVirementP(id,noC1,noC2,mnt)

chercher(id) client
chercher(id)
client
client : Client compte(noC1) c1 compte(noC2) c2
client : Client
compte(noC1)
c1
compte(noC2)
c2

Virement(c1,c2,mnt)

compte(noC1) c1 compte(noC2) c2 Virement(c1,c2,mnt) virement virement : Virement eff ectuer() c1 : Compte

virement

c1 compte(noC2) c2 Virement(c1,c2,mnt) virement virement : Virement eff ectuer() c1 : Compte retirer(mnt)

virement : Virement

eff ectuer() c1 : Compte retirer(mnt) OK
eff ectuer()
c1 : Compte
retirer(mnt)
OK

OK

virement : Virement eff ectuer() c1 : Compte retirer(mnt) OK OK c2 : Compte déposer(mnt) OK

c2 : Compte

déposer(mnt)

OK

virement : Virement eff ectuer() c1 : Compte retirer(mnt) OK OK c2 : Compte déposer(mnt) OK
OK
OK

Exemple - Conception

Diagramme de classes complété avec les opérations nécessaires

Banque

nom : string

1

*

1

* 1 Client nom : string naissance : Date chercher(id : int) : Client compte(no : int) : Compte

1

* 1

Compte

numéro : int devise : Devise

solde : oat

déposer(mnt : oat) : bool retirer(mnt : oat) : bool

* 1

: fl oat) : bool retirer(mnt : fl oat) : bool * 1 Virement 1 montant

Virement 1 montant : oat date : Date

1

0

*

0

*

eff ectuer() : bool ectuer() : bool

Quelques règles

Messages entre acteurs et interface

« Fausses » opérations liées au cas d'utilisation (même nom)

Arguments (saisis) et valeurs de retour (a ichées) simples :

texte, nombre

Messages au sein du système

Opérations du diagramme de classes

Si message de objA : ClasseA vers objB : ClasseB, alors

ClasseA et ClasseB liées par une association

Opération du message dans ClasseB