Vous êtes sur la page 1sur 9

UML : Langage de modlisation objet unifi

Cours n5 : Diagramme de squences


1) Rle du diagramme de squences :
Le diagramme de squence fait parties des diagrammes comportementaux (dynamique) et plus prcisment des diagrammes dinteractions. - Il permet de reprsenter des changes entre les diffrents objets et acteurs du systme en fonction du temps. - A moins que le systme modliser soit extrmement simple, nous ne pouvons pas modliser la dynamique globale du systme dans un seul diagramme. Nous ferons donc appel un ensemble de diagrammes de squences chacun correspondant une sous fonction du systme, gnralement dailleurs pour illustrer un cas dutilisation.

2) Reprsentation du diagramme de squence :


2-1) Dlimitation du diagramme de squence :
sd nomDuDiagramme

- Le diagramme de squence est plac dans un rectangle qui dispose dune tiquette sd en haut gauche (qui signifie sequence diagramm) Le diagramme de squence est suivi du nom du diagramme.

2-2) Lobjet :

plac lintrieur du rectangle.

- Dans un diagramme de squence, lobjet la mme reprsentation que dans le diagramme des objets. C'est-dire un rectangle dans lequel figure le nom de lobjet. Reprsente un objet quelconque Le nom de lobjet est soulign et peut prendre lune des quatre formes suivantes : de la classe Nomclasse.
nomObjet : NomClasse roleObjet :Nom Classe nomObjet : : NomClasse

- Les diagrammes de squences reprsentant les changes entre les objets mais aussi les changes avec les acteurs, nous trouverons aussi la reprsentation du stickman (qui peut tre considr comme un objet).

Rle :

2-3) La ligne de vie :


Comme il reprsente la dynamique du systme, le diagramme de squence fait entrer en action les instances de classes intervenant dans la ralisation dun cas dutilisation particulier. - A chaque objet est associ une ligne de vie (en trait pointills la verticale de lobjet) qui peut tre considr comme un axe temporel (le temps scoule du haut vers le bas). Dans ce genre de diagramme, la quantification du temps na pas dimportance. - La ligne de vie indique les priodes dactivit de lobjet (gnralement, les moments ou lobjet excute une de ces mthodes). - Lorsque lobjet est dtruit, la ligne de vie sachve par un croix. Objet
nomObjet : rle :

Ligne de vie Priode dactivit de lobjet Destruction de lobjet 1

2-4) Les messages :


2-4-1) Dfinition : Un message dfinit une communication particulire entre des lignes de vie. Ainsi, un message est une communication dun objet vers un autre objet. La rception dun message est considre par lobjet rcepteur comme un vnement quil faut traiter (ou pas). Plusieurs types de messages existent, les plus communs sont : o Linvocation dune opration : message synchrone (appel dune mthode de lobjet cible). o Lenvoi dun signal : message asynchrone (Typquement utilis dans la gestion vnementielle). o La cration ou la destruction dune instance de classe au cours du cycle principal. Les messages synchrones : La rception dun message synchrone doit provoquer chez le destinataire le lancement dune de ses mthodes (qui souvent porte le mme nom que le message). Lexpditeur du message reste bloqu pendant toute lexcution de la mthode et attend donc la fin de celle-ci avant de pouvoir lancer un nouveau message. Cest le message le plus frquemment utilis. Les messages asynchrones : Dans le cas dun message asynchrone, lexpditeur nattend pas la fin de lactivation de la mthode invoque chez le destinataire. Un message asynchrone peut tre : o Un appel de mthode : Frquent dans un systme multi-thread (multi-tche). Ainsi, lobjet expditeur ntant pas bloqu pendant lexcution de la mthode, il peut continuer ainsi envoyer dautres messages. o Un signal (cas le plus frquent) : Lobjet expditeur transmet juste une information lobjet destinataire. Souvent, ce sont les acteurs ou les priphriques qui envoient des signaux, typiquement utilis dans la gestion vnementielle dune IHM graphique, comme la librairie QT, par exemple.

2-4-2) Reprsentation graphique : Dans le diagramme de squence, les envois de messages sont reprsents par des flches horizontales qui vont de la ligne de vie de lobjet metteur vers la ligne de vie de lobjet rcepteur du message. Les message synchrone : (flche avec un triangle plein son extrmit).
objet1 : objet2 : objet3 :

Les message asynchrone : (simple flche)


objet1 : objet2 : objet3 :

message1 message2

message1 message2

Messages synchrones

Messages asynchrones

Les message de retour (rponse) : (simple flche en pointills). o Si une mthode qui a t active (par un message) doit retourner des valeurs la fin de son activation, cela se fait par un message retour. o Le message de retour nest donc pas un appel de mthode (il ne provoque donc pas lactivation dun objet) o Le message retour porte souvent le nom de llment retourn.

objet1 : message1 message2

objet2 :

Message de retour

Exemple :

sd diagramme 1
Message asynchrone (ex : le message 5 est lanc alors que lexcution du message 1 nest pas termine) (message6 est son retour implicite) Message synchrone (ex : on attend que lexcution du message 2 soit termine avant de lancer le message 4) (message6 est son retour implicite)

objet1 : Acteur1 message1 message5

objet2 :

objet3 :

objet3 :

message2 message3 message4

message6

Message retour de lexcution lance par le message 5

2-4-3) Cration et destruction dobjets : Une squence peut aussi contenir la cration ou la destruction dun objet : o La cration dun objet est matrialise par un message spcifique, appel dun constructeur, gnralement accompagn du strotype create qui pointe sur le dbut (le sommet) de la ligne de vie de lobjet cr (Le rectangle de linstance de la classe est alors surbaisse). o La destruction dun objet est reprsente par une croix la fin de sa ligne de vie. Souvent lobjet est dtruit suite la rception dun message mais ce nest pas obligatoire. Dans ce cas l, il porte le strotype destroy .

objet1 :
create Objet2(valeur)

objet2 :

destroy

2-4-4) Syntaxe des messages synchrones et asynchrones: Dans la plupart des cas, la rception dun message est suivie de lexcution de la mthode de la classe cible. Cette mthode peut recevoir des arguments et la syntaxe des messages permet de transmettre ces arguments. La plupart du temps, dans un diagramme de squence, nous pouvons nous contenter de dfinir un message par : - Son nom (qui est le nom de la mthode appele ou du signal envoy). Nous pouvons lui adjoindre facultativement : - Une numrotation devant le nom message (spar du nom du message par 2 point " : "). La numrotation seffectue squentiellement partir de 1. - Les paramtres passs la mthode ou au signal (entre parenthses aprs le nom du message).
Numrotation :

nomMessage

(Paramtres)

Exemple : Diagramme de squence de linstauration dune conversation tlphonique


sd : instauration communication tlphonique appelant :
Dans ce diagramme, seule la mthode composerNumro() accepte un paramtre.

:Telephone

appel :

1 : souleverCombin() 2 : tonalitLigne() 3 : composerNumro(numro) 4 : sonner() 5 : tonalitSonnerie() 6: dcrocher() 8 : finTonalit() 7 : arrtSonnerie()

2-4-5) Syntaxe des rponses (messages retour) : Comme pour les messages synchrones ou asynchrones, nous pouvons nous contenter de donner au message retour un simple nom, mais nous pouvons aussi les caractriser plus prcisment en utilisant la syntaxe suivante :
Numero : attribut=

nomMessage

(Paramtres)

:valeurDeRetour

Exemples :
sd diagramme 1 Acteur1 1 : calculerDistance(depart,arrivee) 2 : distance sd diagramme 1

mappy: Acteur1 1 : calculerDistance(depart,arrivee) 2 : distance = calculerDistance(depart,arrivee)

mappy:

sd diagramme 1

mappy: Acteur1 1 : calculerDistance("Paris","Aurillac") 2 : distance = calculerDistance("Paris","Aurillac") : 573

2-4-6) Remarque sur la syntaxe des messages dans les diagrammes de squence : La syntaxe que nous venons de voir est simple et trs souvent largement suffisante pour dcrire les messages des diagrammes de squence.

3) Quelques squences expliques :


3-1) Messages retours implicites et explicites :
Le retour dun message synchrone peut ne pas tre reprsent, le retour est alors implicite. Par contre, dans le cas dun message asynchrone, il est impratif de faire apparaitre le message de retour. Le retour est explicite (bien entendu, si lexcution de la mthode lance par le message asynchrone ne doit rien retourner, il est vident que nous ne devons pas reprsenter le message de retour). Exemples : Les 2 diagrammes suivants sont quivalents :
Le message age tant le retour dun message synchrone demanderAge(), on nest pas oblig de le reprsenter. Le retour du message 1 existe mais nest pas reprsent (il est implicite). Si on lestime ncessaire, on peut prciser la description du message 1 en lcrivant : 1 : age = demanderAge(nom)

objet1 : 1 : demanderAge(nom) 2 : age 3 : afficherAge(age)

objet2 :

objet3 :

objet1 : 1 : demanderAge(nom)

objet2 :

objet3 :

2 : afficherAge(age)

Nous pouvons aussi trouver cette criture : 2 : age = demanderAge(nom)

Le message afficherAge() nattend pas de message retour car si ctait le cas il faudrait obligatoirement le reprsenter (afficherAge() est un message synchrone et le retour, sil existe, doit tre explicite).

objet1 :

objet2 : message1 message2 message3 message4

3-2) Recouvrement des bandes dactivations :


Lorsquun objet est dj activ il peut quand mme recevoir dautres messages (appel dune autre de ses mthodes), cela se reprsente par un ddoublement de la bande dactivation.
Ddoublement de la bande dactivation

3-4) Messages rcursifs :


Un objet peut senvoyer un message lui-mme (utilisation dune autre mthode du mme objet). Cela se reprsente l aussi par un ddoublement de la bande dactivation.

objet1 :

3-5) Contraintes temporelles :


Des repres temporels avec des contraintes peuvent tre placs le long de la ligne de vie. Un message avec un temps de propagation non {y-x<3s} ngligeable peut tre reprsent par une flche {z-y<1s} oblique. {z-y<2s}

objet1 : message1 message2

objet2 :

objet3 :

x y z t t

message3

message4

3-6) Messages perdus et trouvs :


- Le message perdu est un message dont nous connaissons lmetteur mais pas le rcepteur. Il est reprsent par une flche partant de la ligne de vie dun lment vers un disque noir. Le message perdu pouvant tre, lorigine, synchrone ou asynchrone, nous avons donc les types de pointes de flches. Cette sorte de message permet de modliser, par exemple, les scnarii de pertes de message sur un rseau.
objet1 : message1 message2 message3 - message1 et message2 sont des messages perdus. - message3 est un message trouv

- Le message trouv est un message dont nous connaissons le destinataire mais pas lmetteur. Il est reprsent par une flche partant dun disque noir vers la ligne de vie dun lment. Ce message peut tre utilis pour modliser le comportement dun lment suite la rception dun message dexception.

4)

Fragments dinteractions combins :

Un fragment dinteractions est une partie du Etiquette message1 diagramme de squence (dlimite par un rectangle) associe une tiquette (dans le coin Oprateur suprieur gauche). message2 Ltiquette contient un oprateur dinteraction qui permet de dcrire des modalits dexcution des message3 messages lintrieur du cadre. Les oprandes dun oprateur dinteraction sont Fragment spars par une ligne pointille. Les conditions de dinteractions choix des oprandes (ventuels) sont donnes par des expressions boolennes entre crochets ([ ]). Les principales modalits sont les boucles, les branchements conditionnels, les alternatives, les envois simultans, etc. 5

objet1 :

objet2 :

objet3 :

4-1) Fragment dinteraction avec oprateur opt :


Loprateur option (opt) comporte un oprande et une condition de garde assosie. Le sous-fragment sexcute si la condition de garde est vrais et ne sexcute pas dans le cas contraire.
opt [condition] La squence dans le fragment ne sexcute que si la garde [condition] est vraie

objet1 : message1

objet2 :

message2

message3

4-2) Fragment dinteraction avec oprateur alt :


Loprateur alternatives (alt) est un oprateur conditionnel possdant plusieurs oprandes spars par des pointills. Cest lquivalent dune excution choix multiples. Chaque oprande dtient une condition de garde. Seul le sous-fragment dont la condition est vraie est excut. La condition else est vraie si aucune autre condition nest vraie.
alt

objet1 : message1

objet2 :

objet3 :

message2

[condition1]

[condition2]

message3

else

message4 Message5

4-3) Fragment dinteraction avec oprateur loop :

objet1 :

objet2 :

message1 Loprateur de boucle (loop) excute une itrative dont la squence quelle contient est excute tant que la garde qui lui est associe est vraie. loop [min,max,condition] message2 - La garde scrit de la faon suivante : loop [min,max,condition] message3 o Le contenu du cadre est excut min fois, puis continue sexcuter tant que la condition et que le nombre dexcution de la boucle ne dpasse pas max fois. Chaque paramtre (min, max et condition) est optionnel. - Exemple de gardes : loop[3]La squence sexcute 3 fois. loop[1,3,code=faux] La squence sexcute 1 fois puis un maximun de 2 autre fois si code=faux.

4-4) Fragment dinteraction avec oprateur par :


Un fragment dinteraction avec loprateur de traitements parallles (par) contient au moins deux sous fragments (oprandes) spars par des pointills qui sexcutent simultanment (traitements concurrents).
Premier sous-fragment messages2 et message3 sont envoys simultanment.

objet1 : message1

objet2 :

par

message2

message3
Deuxime sous-fragment

4-5) Autres fragments dinteractions: dinteractions


Nous venons de voir les 4 fragments dinteractions les plus utiliss utilis (opt, alt, loop op et par). Il en existe en ralit 13 au total, ci-dessous dessous la liste des 8 autres : o ignore et considere : pour les fragments facultatifs ou obligatoires. o critical : pour les fragments qui doivent se drouler sans tre interrompus. o break : pour les fragments ts reprsentants des scnarii scnari exceptionnels ou de ruptures rup (ex appui sur la touche Esc ). Le scnario de rupture est excut si une condition de garde est satisfaite. o assert : Pour les fragments dont on connait lavance lavance les paramtres du message (exemple (exem : aprs la saisie des 4 chiffre dun code, la saisie suivante sera obligatoirement la touche Entre ). o seq : indique que le fragment est compos de plusieurs sous fragments qui peuvent sexcuter s dans nimporte quel ordre (mais pas en mme temps). temps) o strict : pour les fragments dont les messages doivent se drouler dans un ordre bien prcis. o neg : pour indiquer que la squence lintrieur du fragment nest pas valide. o ref : permet de faire appel un autre diagramme de squence.

5)

Strotypes de Jacobson on :
A lintrieur dun systme, il existe trs souvent des classes qui possdent possdent un rle bien particulier qui serait intressant de visualiser dune faon non quivoque dans votre diagramme de squence. Cest le cas notamment : o o o Pour les classes qui reprsentent entent des composants de lIHM. Pour la classe qui contrle globalement le systme avec la prise en compte de la gestion vnementielle. Pour les classes qui implmentent la persistance des attributs (assosies une base de donnes).

t les trois strotypes suivants : Jackobson distinguent o boundary : classes qui servent modliser les interactions entre le systme et ses acteurs. acteurs o control : classes utilises pour reprsenter la coordination, lenchanement lenchanement et le contrle dautres objets. objets o entity : classes qui servent modliser des informations durables et souvent persistantes.

6) Exemple de diagramme de squence : Le DAB


Un cas dutilisation est trs souvent document par une description textuelle. Un diagramme de squence permet de complter et de visualiser simplement et intuitivement la description textuelle. Dans le cours sur les diagrammes des cas dutilisations, nous avons fait une description textuelle du cas dutilisation Retirer de largent du DAB. Le diagramme de squence du scnario nominale est le suivant :

: PorteurDeCarte

Le diagramme de squence ci-dessus ne correspond quau scnario nominal du cas dutilisation. Des notes (optionnelles) permettent dindiquer les scnarii alternatifs et dexceptions. Chaque scnario nominal ou dexception peut tre document par son propre diagramme de squence.

Grce aux fragments dinteractions, il est possible de documenter un scnario alternatif (ou dexception) dans le diagramme de squence du scnario nominale. Par exemple, le diagramme de squence ci-dessous correspond la description du scnario nominal et du scnario alternatif SA4 (porteur de carte client banque).

: PorteurDeCarte

Vous aimerez peut-être aussi