Vous êtes sur la page 1sur 45

Approche Objet, UML et ses formalismes (III)

Djamal Benslimane

Rappel : Diagrammes & vues


Statique (ce que le systme EST)
diagramme de classes diagramme dobjets diagramme de composants diagramme de dploiement

Dynamique (comment le systme EVOLUE)


diagramme de squence

Fonctionnel (ce que le systme FAIT)


diagramme de cas dutilisation diagramme de collaboration
2

diagramme de collaboration
diagramme dtats-transitions diagramme dactivits

Pourquoi un modle dynamique ?


Pour dcrire les relations temporelles et vnementielles, Pour exprimer les tats en fonction de modifications internes et d'options choisies par les utilisateurs, Pour indiquer les actions possibles dans un contexte donn Pour dcrire les actions des systmes extrieurs sur les objets du systme tudi ainsi que les ractions de ces objets

Les diag. Dynamiques (1/2)


Des diagrammes d'interaction, qui montrent comment les objets interagissent au sein du systme.
Scnario Diagramme de squence Diagramme de collaboration

Un cas dutilisation est ralis par une collaboration.


Collaboration = ensemble dobjets qui travaillent ensemble et schangent des messages pour accomplir une tche. Interaction = change de messages entre objets du systme
4

Les diag. Dynamiques (2/2)


Des diagrammes d'tats, qui dtaillent le comportement de certaines classes : notion de cycle de vie de l'objet.
Diagramme dactivits Diagramme d'tats

Dmarche pour llaboration des modles dynamiques


1. Identifier les scnarios
IN : cas d'utilisation OUT : liste de scnarios intressants

2. Formaliser les scnarios


IN : liste de scnarios et classes regroupes en package OUT : diagrammes de squence

3. Construire les diagrammes d'tat


IN : classes regroupes en package OUT : diagrammes d'tat des classes complexes ou importantes

4. Valider le modle dynamique


IN : diagrammes de squence, de collaboration et d'tats OUT : diagrammes valids
6

Diagramme de squence
Scnarios Caractristiques Elments graphiques Concepts et notations utiliss

Scnario : Diagramme de squence


Un scnario est une srie d'vnements ordonns dans le temps, simulant une excution particulire du systme. Les scnarios permettent d'exprimenter les excutions du systme, ils sont donc trs utiles pour les phases de tests et de maintenance.
8

Diagramme de squence caractristiques


Diagramme de squence : exprime la squence des interactions entre objets du systme selon un point de vue temporel, pour raliser le cas dutilisation. Un diagramme de squence est deux dimensions :
dimension verticale : le temps;
L'ordre d'envoi d'un message est dtermin par sa position sur l'axe vertical du diagramme ; le temps s'coule "de haut en bas" de cet axe.

dimension horizontale : les objets (et les acteurs)

lments graphiques
Les objets interagissant dans un scnario. Reprsentation graphique de la ligne de vie de chaque objet et de ses activations. Les diffrents types de messages envoys (simple, synchrone, asynchrone) Le contrle (branchement conditionnel et itration, cration & destruction dobjets, dlais transmission et contraintes temporelles, etc.)
10

Digramme de squence Illustration


objets
: C1
1 : [condition A] message

: C2

2 : message synchrone 3 : message de cration

Objet 3

Evnement / Communication entre objets

5: message 6 : [condition B] message

4: message

Priode dactivit de lobjet

9 : message asynchrone

7 : message rflexif 8 : message de destruction

temps
11

Les messages
Un message synchrone: lmetteur est bloqu et attend que lappel ait fini de traiter le message (message 1) message asynchrone: lmetteur nest pas bloqu et peut continuer son excution (message 6) Un message rflexif indique souvent un point dentre dans une activit de plus bas niveau qui sexerce entre objets contenus par lobjet composite (message 7) Un message dont les dlais de transmission sont non ngligeables est matrialis par une flche oblique (message 4)
12

Les messages
Messages conditionns : flches prenant leur origine au mme instant avec des conditions mutuellement exclusives (messages 1 et 6) Possibilit de complments dinformations sous forme de texte libre ou de pseudo-code ct du diagramme Priode dactivit : temps pendant lequel un objet effectue une action, directement ou par lintermdiaire dun autre objet sous-traitant Des contraintes temporelles peuvent tre exprimes en graduant la ligne de vie (pour dire par exemple: 10 secondes plus tard )
13

Exemple 1 (simplifi)
: Appelant dcroche tonalit numrotation indication de sonnerie sonnerie dcroche all : Ligne tlphonique : Appel

14

Exemple 2
eMB:MembreBiblio unMembre :EmprunteurDeLivre
1: emprunter(exemplaire)

exp:Exemplaire

leLivre: Livre

Message rcursif
1.1: okPourEmprunter()

Ligne de vie

{B-A<8ms}

1.2: emprunter( mb) 1.2.1: estEmprunt( self)

activation

15

Modes dinteraction
Mode dinteraction procdural (i.e. synchrone) Au plus un objet dtient le contrle la fois. Un objet obtient le contrle quand il reoit un message(i.e. on invoque une de ses mthodes). Ce moment dtermine le dbut de son activation. Un objet rend le contrle son destinateur lorsquil lui renvoie sa rponse. Ce moment dtermine la fin de son activation. Lorsquun objet en activation a le contrle, il peut :
faire des calculs, ou envoyer des messages: dans ce cas, lobjet demeure en activation mais cde son tour le contrle son destinataire. Il ne peut rien faire jusqu ce quil reoive la rponse de son destinataire (message synchrone ou dit bloquant ).
16

Modes dinteraction
Mode dinteraction procdural Les objets sont dits passif , car on doit leur envoyer un message pour dclencher leur activation. Un seul fil dexcution. Dans ce mode, seul un acteur peut envoyer un message ou faire des calculs sans lintervention de qui que ce soit. Son activation est constante
17

Modes dinteraction
Mode dinteraction concurrent
Certains objets disposent dun propre fil dexcution. Il ont leur propre contrle et leur activation est constante. Ces objets sont dits actifs, car il peuvent faire des calculs et envoyer des messages sans lintervention de qui que ce soit. Les objets actifs peuvent envoyer deux types de messages :
synchrones: ils attendent la rponse de leur destinataire avant de poursuivre asynchrones: ils poursuivent leurs activits sans attendre la rponse leur messageCelle-ci leur sera signale.

N.b : En mode procdural, tous les messages sont synchrones


18

Notation utilise
Itration
On ajoute une clause ditration (introduite par un *) ct du message pour spcifier le nombre ditrations ou linvariant de litration: Exemples: *[ i:= 1.. 10] Le message est envoy 10 fois *[ x< 10] Le message est envoy de faon rpte jusqu ce que x soit plus grand ou gal 10. *[ item not found] Le message est envoye de faon rpte jusqu ce que litem soit trouv. Ne pas rpter la clause ditration chez le destinataire (elle est implicite) moins de vouloir une boucle imbrique.
19

Notation utilise
Interactions concurrentes

Il existe diffrente faon de crer de nouveaux fils de contrle (threads)


la rception dun message, un objet peut dcoupler le fil dexcution en envoyant plusieurs messages simultanment (fork).
o: Obj
1. a : foo() 1. b : bar()

Branchement: Lorsque les messages nont pas de garde mutuellement exclusive, on en dduit quils sont concurrents.

20

Strotype en UML
Ce sont des concepts fondamentaux d'UML (des MOTs-CLEFS), tels que :
acteur, package, contrainte, lien de dpendance <<include>>, package <<layer>> (couche logicielle), le package << design pattern>> du modle logique
(modles de conception : modle Archiveur, modle Traceur, modle Vrificateurs de cohrence, etc)

On peut crer ses propres strotypes, nots entre


<< guillemets >>

21

Strotypes prdfinis : messages


message << create>> indique que l'objet metteur cre une instance de la classe laquelle le message est adress ( la rception du message)
Normalement constructeur interprt comme appel de

message << destroy>> indique que l'objet metteur dtruit une instance de la classe laquelle le message est adress ( la rception du message)
22

Strotypes prdfinis messages (2)


message << terminate >> indique que l'objet metteur se dtruit l'issue de l'envoi de ce message (suicide de l'objet) message << become >> spcifie que la cible est la mme que l'objet metteur, mais un instant ultrieur, lorsqu'une valeur, un tat ou un rle a chang (mentionn par une contrainte {})
23

Syntaxe des messages


Syntaxe UML Retour := message(paramtre : typeParamtre) : typeRetour En analyse, types non indiqus Ex.: spec := getSpecProduit(code)

24

Ex. diag. Squence SIVEX


Pour le scnario du Cas d'utilisation "Planification des Missions"
cration d'une mission de traction valide

Description :
Le rpartiteur, pralablement authentifi, prcise la nature de la mission crer. Comme c'est une mission de traction, il doit prciser l'agence principale de destination.
25

Ex. diag. Squence SIVEX (2)


Le rpartiteur affecte les commandes la nouvelle mission. Le systme value au fur et mesure le tonnage estim de la mission. Le rpartiteur affecte un vhicule et un chauffeur. Le systme vrifie que la capacit Vhicule et le chauffeur sont adapts pour la mission. Le rpartiteur valide la mission :il doit alors prciser l'heure de dpart prvue. Production d'une feuille de route.
26

Ex. diag. Squence SIVEX (3)


Quelles instances participent ce scnario ? le rpartiteur une nouvelle mission cre :
"newMT : MissionTraction"

les commandes affectes : plusieurs instances de Commande traduit par un multi-objet


"cmdAffectes : Commande"

un vhicule
(celui affect : "vhiculeAffect : Vhicule")
27

Ex. diag. Squence SIVEX (4)


un chauffeur
(celui affect : "chauffeurAffect : Chauffeur")

une feuille de route


(cre en fin de scnario :FeuilleDeRoute)

28

Cration mission valide


: Rpartiteur nouvelleMT : missionTraction cmdAffectes : Commande vhiculeAffect chauffeurAffect : Vehicule : Chauffeur <<create>> (nouvelleMT) * affecter (nouvelleMT) poidsEstime tonnageEstime affecter (nouvelleMT) affecter (nouvelleMT) valider (heureDepart) <<create>> : feuilleDeRoute 29

estimerPoids()

Autre exemple SIVEX (1)


Scnario nominal :

Annulation d'une mission d'enlvement


en attente

Description :
le rpartiteur tablit la nature de la mission quil veut crer (ici enlvement) il affecte une premire commande la mission
30

Autre exemple SIVEX (2)


Le rpartiteur affecte une 1re commande la nouvelle mission. Le systme value au fur et mesure le tonnage estim de la mission. Il propose galement lordre des tapes suivre. Le rpartiteur dcide dannuler la mission. Le systme doit alors dfaire les actions prcdentes.
31

Annulation Mission de tourne


: Rpartiteur <<create>> nature = enlevement affecter(nouvelleME ) estimerPoids( ) poidsEstime <<create>> affecter( cmdAffectee) annuler( ) deaffecter( ) <<destroy>> <<terminate>> premiereE : Etape nouvelleME : MissionDeTournee cmdAffectee : Commande

32

Diagramme de collaboration
Dfinition Partie Statique Elments dinteraction Diagramme de collaboration : syntaxe

Diagramme de collaboration Dfinition


But: Diagramme illustrant les interactions entre les objets dun systme en mettant laccent sur lorganisation structurelle des objets participants (et non pas sur lordre temporel des messages envoys/reus). Diagramme gnralement utilis pour
Dcrire en dtail le droulement dun cas dutilisation i.e. dcrire la conception dun scnario dun cas dutilisation.
34

Diagramme de collaboration Partie statique


Partie statique : illustre les objets (instance de classes) et les liens (instances dassociations) impliqus dans la ralisation dune collaboration donne. portes ascenseur

user 1

contrleur ascenseur

ascenseur

bouton ascenseur

35

bouton tage

Interaction
Quest-ce qui compose une interaction ?
les arguments, les variables locales cres pendant l'excution, les liens qui existent entre les objets qui participent l'interaction.
2 : activer () : moteur 1 : envoyer (ordre lancement) : rgulateur signal
36

: ventilateur

Objets du diag. de collaboration


Figurent sur les diagrammes de collaboration :

Les objets actifs : ceux qui possdent le contrle de l'interaction dcrite. Ils activent les objets passifs le temps d'une opration, puis reprennent le contrle.
2 : Ecrire (doc1) : Imprimante : Scanner

: Traitement de texte 1 : Lire (doc1)

37

Diag. de collaboration
Figurent galement :

Les objets et liens crs ou dtruits droulement. Ils portent alors les contraintes

pendant

le

{new} cration et lobjet continue dexister aprs linteraction {destroy} ou {temporary}

Les objets s'changent des messages. Les messages sont numrots pour indiquer l'ordre des envois. Les messages :

dclenche une action chez l'objet destinataire peuvent tre synchrones ou asynchrones
38

Diag. de collaboration : syntaxe


1: message1 unA : ClasseA 4: message4 2: message2 5: message5 6: message6 unB : ClasseB Liens Messages numrots
39

Toto:acteur1

unC : ClasseC

3: message3

Diag. de collaboration Partie dynamique


: portes ascenseur
1App ui bo u
6A pp ui bou

user 1

ton t age >

5 ouvrir ^ 8 fermer ^ 11 ouvrir ^ 13 fermer ^

ton as cense u

r>

: contrleur ascenseur

er > 3 dplac er > 9 dplac


2 al lum 4 t er > eind re >

: ascenseur

er < dre < m allu tein 7 12 timer 10

: bouton ascenseur
40

: bouton tage

Diag. de collaboration : syntaxe


1a et 1b sont des chemins qui sexcluent
: ClasseA 1a[test1]:msg1() : ClasseB 1a.1:msg3() : ClasseC 2:msg5() : ClasseD

1b[non test1]:msg2()

1b.1:msg4()

: ClasseE

Ici message inconditionnel aprs msg3 ou msg4


41

Sivex : Cration Mission de Traction


7: affecter(nouvel leMT )
chauffeurAffect : Chauffeur

6: affecter(nouvelleMT )

vehiculeAffect : Vehicule

1: <<create>> 2: desti nat ion = AgenceXX 8: valider(heureDepart )


{new}

nouvelleMT : MissionTraction

9: <<create>>
{new} nouvelleFR : FeuilleDeRoute

: Rpartiteur

5: tonnageEstime

4: poidsEstime
3: * affecter(nouvelleMT )
cmdAffectes : Commande

42

Annulation Mission de tourne


11: <<destroy>>

6: <<create>> 7: affecter( cmdAffectee) 10: <<destroy>>


nouvelleME : Mis sionDeTournee premiere : Etape

9: deaffecter( )
4: estimerPoids( )

1: <<create>> 2: nature = enlevement 8: annuler( )

5: poidsEstime
cmdAffectee : Commande : Rpartiteur

3: affecter(nouvelleME )

43

Collaboration : objectifs et
limites
En phase exploratoire pour dcouvrir de nouveaux objets oublis, par la description de scnarios pousss Si trop chargs, deviennent vite illisibles Vite trop nombreux Conseil:
regrouper plusieurs scnarios sur un diagramme sils sont des variantes proches mme

Enchaner les scnarios comme pour les cas dutilisation (include, extend)
44

Comparatif
Diagrammes de squence :
Stend horizontalement ! => limite Lenchanement des messages est facile lire

Diagrammes de collaboration :
Stend horizontalement et verticalement
=> pas de limite

Bien adapt aux branchements complexes, aux itrations et aux comportements concurrents Lenchanement des messages est beaucoup plus difficile lire :
Squences de messages pas claires Notation plus complexe
45

Vous aimerez peut-être aussi