Vous êtes sur la page 1sur 80

Conception avec UML

Gerson Sunyé Irin - Université de Nantes

Partie II - Comportement

Diagrammes de comportement

Etat-transitionDiagrammes de comportement Interaction Activités Cas d’utilisation

InteractionDiagrammes de comportement Etat-transition Activités Cas d’utilisation

ActivitésDiagrammes de comportement Etat-transition Interaction Cas d’utilisation

Cas d’utilisationDiagrammes de comportement Etat-transition Interaction Activités

État-transition

Diagrammes d’état

Modélisation d’un comportement par un système fini d’états et de transitionsDiagrammes d’état Il existe deux sortes de digrammes d’état: De comportement De protocole

Il existe deux sortes de digrammes d’état:Modélisation d’un comportement par un système fini d’états et de transitions De comportement De protocole

De comportementcomportement par un système fini d’états et de transitions Il existe deux sortes de digrammes d’état:

De protocolepar un système fini d’états et de transitions Il existe deux sortes de digrammes d’état: De

Diagrammes d’état

Diagramme de d’état comportementaux

Machines d’états

Décrivent un comportement à l’aide d’un graphe d’États, interconnectés par des Transitions, qui sont déclenchées par des ÉvénementsMachines d’états En d’autres termes, décrivent les réactions d’un objet aux changements de son environnement

En d’autres termes, décrivent les réactions d’un objet aux changements de son environnementà l’aide d’un graphe d’États, interconnectés par des Transitions, qui sont déclenchées par des Événements

Machines de d’états

Essentiellement, un diagramme de HarelMachines de d’états Attachés à un classificateur (sauf interfaces) ou à une opération Sont hérités, et

Attachés à un classificateur (sauf interfaces) ou à une opérationMachines de d’états Essentiellement, un diagramme de Harel Sont hérités, et peuvent être spécialisés

Attachés à un classificateur (sauf interfaces) ou à une opération Sont hérités, et peuvent être spécialisés

Sont hérités, et peuvent être spécialisés

Transition

Relation unidirectionnelle entre deux états (ou entre deux machine d’état)Transition Interne à un état Externe: implique un changement d’état Locale: s’applique à tous les états

Interne à un étatentre deux états (ou entre deux machine d’état) Externe: implique un changement d’état Locale:

Externe: implique un changement d’étatétats (ou entre deux machine d’état) Interne à un état Locale: s’applique à tous les états

Locale: s’applique à tous les états d’un état compositeentre deux états (ou entre deux machine d’état) Interne à un état Externe: implique un changement

Notation - Transition

Open
Open
Close
Close

quit(user) [user has rights] / parent := user.parent(); parent.update()

Syntaxe : trigger [guard]/ trigger

Gâchette (Trigger)

Gâchette (Trigger) Evénement qui peut causer l’exécution d’un comportement qui lui est associé. Exemples: Message:

Evénement qui peut causer l’exécution d’un comportement qui lui est associé. Exemples:

Message: Signal ou OpérationEvénement qui peut causer l’exécution d’un comportement qui lui est associé. Exemples: Temporel Changement

Temporelpeut causer l’exécution d’un comportement qui lui est associé. Exemples: Message: Signal ou Opération Changement

Changementqui peut causer l’exécution d’un comportement qui lui est associé. Exemples: Message: Signal ou Opération Temporel

Evénement

Stimuli auquel réagit un objetEvénement Communication instantané, unidirectionnelle Un événement est une instance d’un Signal (Classificateur

Communication instantané, unidirectionnelleEvénement Stimuli auquel réagit un objet Un événement est une instance d’un Signal (Classificateur marqué

Un événement est une instance d’un Signal (Classificateur marqué «signal»)Evénement Stimuli auquel réagit un objet Communication instantané, unidirectionnelle

Garde

Garde Contrainte évaluée avant le déclenchement d’une transition

Contrainte évaluée avant le déclenchement d’une transition

Activité

Déclenchée par une transition ou interne à un étatActivité Définit un comportement, spécifié dans n’importe quel langage (!)

Définit un comportement, spécifié dans n’importe quel langage (!)Activité Déclenchée par une transition ou interne à un état

Etat

Situation stable d’un objet:Etat en attente d’un événement, ou en train de réaliser une tâche Trois sortes: simple, composite

en attente d’un événement, ouEtat Situation stable d’un objet: en train de réaliser une tâche Trois sortes: simple, composite et

en train de réaliser une tâcheEtat Situation stable d’un objet: en attente d’un événement, ou Trois sortes: simple, composite et sous-

Trois sortes: simple, composite et sous- machineEtat Situation stable d’un objet: en attente d’un événement, ou en train de réaliser une tâche

Notation Compartiments: Nom Activités internes Transitions internes ICQ-Connected entry/say_hello() exit/bye_bye()

Notation

Compartiments:

NomNotation Compartiments: Activités internes Transitions internes ICQ-Connected entry/say_hello() exit/bye_bye()

Activités internesNotation Compartiments: Nom Transitions internes ICQ-Connected entry/say_hello() exit/bye_bye() do/poll()

Transitions internesNotation Compartiments: Nom Activités internes ICQ-Connected entry/say_hello() exit/bye_bye() do/poll()

ICQ-Connected entry/say_hello() exit/bye_bye() do/poll() keyboard/read_msg()
ICQ-Connected
entry/say_hello()
exit/bye_bye()
do/poll()
keyboard/read_msg()

Etat composite

Etat englobant différents sous-étatsEtat composite Possède une entrée et une sortie Transition arrivant -> entrée Transition sortant -> sort

Possède une entrée et une sortieEtat composite Etat englobant différents sous-états Transition arrivant -> entrée Transition sortant -> sort de

Transition arrivant -> entréeenglobant différents sous-états Possède une entrée et une sortie Transition sortant -> sort de tous les

Transition sortant -> sort de tous les étatsEtat composite Etat englobant différents sous-états Possède une entrée et une sortie Transition arrivant -> entrée

Notation

not_available()

free_for_chat()

Online Available N/A Free set_available()
Online
Available
N/A
Free
set_available()
Notation not_available() free_for_chat() Online Available N/A Free set_available() Offline deconnect()
Offline
Offline

deconnect()

Notation not_available() free_for_chat() Online Available N/A Free set_available() Offline deconnect()
Notation Etat composite avec indicateur de décomposition Online do/poll()

Notation

Etat composite avec indicateur de décomposition

Online do/poll()
Online
do/poll()

Composite Orthogonal

Régions concurrentes, représentant 2 (ou n) aspects indépendants d’un objetComposite Orthogonal Evitent l’expression d’un produit cartésien Online Available Visible Invisible

Evitent l’expression d’un produit cartésienRégions concurrentes, représentant 2 (ou n) aspects indépendants d’un objet Online Available Visible Invisible

Online Available Visible Invisible
Online
Available
Visible
Invisible

Sous-machine

Sous-machine Référence à une machine d’états

Référence à une machine d’états

Notation

Référence à une machine d’étatsNotation Points de connexion: Entrée Sortie Connexion: ConnexionMachine timeout

Points de connexion:Notation Référence à une machine d’états Entrée Sortie Connexion: ConnexionMachine timeout

EntréeNotation Référence à une machine d’états Points de connexion: Sortie Connexion: ConnexionMachine timeout

SortieNotation Référence à une machine d’états Points de connexion: Entrée Connexion: ConnexionMachine timeout

Connexion: ConnexionMachine
Connexion:
ConnexionMachine
Notation Référence à une machine d’états Points de connexion: Entrée Sortie Connexion: ConnexionMachine timeout
timeout
timeout

Pseudo-états

Initial, FinalPseudo-états Entrée, sortie Fourchette, jonction ( régions orthogonales ) Choix [<=10] id [>10]

Entrée, sortiePseudo-états Initial, Final Fourchette, jonction ( régions orthogonales ) Choix [<=10] id [>10]

Fourchette, jonctionPseudo-états Initial, Final Entrée, sortie ( régions orthogonales ) Choix [<=10] id [>10]

(régions orthogonales)

ChoixPseudo-états Initial, Final Entrée, sortie Fourchette, jonction ( régions orthogonales ) [<=10] id [>10]

[<=10] id [>10]
[<=10]
id
[>10]

Transitions particulières

Envoi et réception d’événementsTransitions particulières Séquence d’actions Pour une vue “orientée transition” Connected Timeout reason =

Séquence d’actionsparticulières Envoi et réception d’événements Pour une vue “orientée transition” Connected Timeout

Pour une vue “orientée transition”particulières Envoi et réception d’événements Séquence d’actions Connected Timeout reason = timeout Abort Offline

Connected
Connected
Timeout
Timeout
reason = timeout
reason = timeout
Abort
Abort
Offline
Offline

Spécialisation

Ajout de nouvelles transitions ou de nouveaux étatsSpécialisation Spécialisation d’états (transformation d’un état simple en composite) Un état peut être {final}

Spécialisation d’états (transformation d’un état simple en composite)Ajout de nouvelles transitions ou de nouveaux états Un état peut être {final} Connection {extended} new

Un état peut être {final}d’états (transformation d’un état simple en composite) Connection {extended} new transition Online Offline

Connection {extended} new transition Online Offline
Connection {extended}
new transition
Online
Offline

Diagrammes d’état

Diagramme de d’état de protocole

Machines d’état de protocole

Spécialisation des machines d’étatsMachines d’état de protocole Toujours attachées à un classificateur Représentent un cycle de vie d’un objet

Toujours attachées à un classificateurde protocole Spécialisation des machines d’états Représentent un cycle de vie d’un objet et spécifient

Représentent un cycle de vie d’un objet et spécifient quels messages sont acceptés à chaque étatMachines d’état de protocole Spécialisation des machines d’états Toujours attachées à un classificateur

Notation

Similaire aux machines d’étatsNotation Notée {protocol} Porte {protocol} [couloir->libre] Fermer/ Ouverte Fermée

Notée {protocol}Notation Similaire aux machines d’états Porte {protocol} [couloir->libre] Fermer/ Ouverte Fermée

Porte {protocol} [couloir->libre] Fermer/ Ouverte Fermée
Porte {protocol}
[couloir->libre] Fermer/
Ouverte
Fermée

Transitions

Transitions Spécifient une pré et une post condition [pré-condition] événement / [post-condition]

Spécifient une pré et une post condition

[pré-condition] événement / [post-condition]

Transitions Spécifient une pré et une post condition [pré-condition] événement / [post-condition]
Etats Spécifient un invariant Etat [invariant]

Etats

Spécifient un invariant

Etat [invariant]
Etat
[invariant]

Exercice VII

Cette machine d’états est attachée à la classe “Connection”Exercice VII Donner le code qui correspond à l’implémentation de cette classe 5 min Connection connect()

Donner le code qui correspond à l’implémentation de cette classed’états est attachée à la classe “Connection” 5 min Connection connect() Online do/poll_sever()

5 mincode qui correspond à l’implémentation de cette classe Connection connect() Online do/poll_sever() Offline

Connection connect() Online do/poll_sever() Offline disconnect()
Connection
connect()
Online
do/poll_sever()
Offline
disconnect()
set_not_available() set_free_for_chat() Online Available N/A Free
set_not_available()
set_free_for_chat()
Online
Available
N/A
Free

set_available()

Solution

class Connection:

Utilisation du pattern StateS o l u t i o n class Connection: Utilisation d’un thread pour la méthode

Utilisation d’un thread pour la méthode poll()u t i o n class Connection: Utilisation du pattern State Utilisation éventuelle de Command def

Utilisation éventuelle de CommandState Utilisation d’un thread pour la méthode poll() def self init (self): state = Offline(self) def

def

self

init

(self):

state

= Offline(self)

def connect(self):

self

state.connect()

def disconnect(self):

self

state.disconnect()

def set_not_available(self):

self

state.set_not_available()

def set_free_for_chat(self):

self

state.set_free_for_chat()

def set_available(self):

self

state.set_available()

def set_state(self, aState):

self

state

= aState

Connection

La classe Connection possède un seul attribut (_state), initialisé à Offline()Connection Le comportement est délégué à l’état class Connection: def self init (self): state = Offline(self)

Le comportement est délégué à l’étatun seul attribut (_state), initialisé à Offline() class Connection: def self init (self): state =

class Connection:

def

self

init

(self):

state

= Offline(self)

def connect(self):

self

state.connect()

def disconnect(self):

self

state.disconnect()

def set_not_available(self):

self

state.set_not_available()

def set_free_for_chat(self):

self

state.set_free_for_chat()

def set_available(self):

self

state.set_available()

def set_state(self, aState):

self

state

= aState

ConnectionState

ConnectionState réalise le changement d’état en fonction des transitionsConnectionState Un nouvel objet est créé à chaque fois class ConnectionState: def self init (self, connection):

Un nouvel objet est créé à chaque foisréalise le changement d’état en fonction des transitions class ConnectionState: def self init (self, connection):

class ConnectionState:

def

self

init

(self,

connection):

connection

= connection

def disconnect(self):

self

connection.set_state(Offline(self

connection))

def connect(self):

self

connection.set_state(Available(self

connection))

def set_not_available(self):

self

connection.set_state(NotAvailable(self

connection))

def set_free_for_chat(self):

self

connection.set_state(Free(self

connection))

def set_available(self):

self

connection.set_state(Available(self

connection))

Offline Les transitions non acceptées sont ignorées class Offline(ConnectionState): def disconnect(self): pass def

Offline

Les transitions non acceptées sont ignorées

class Offline(ConnectionState):

def disconnect(self):

pass

def set_not_available(self):

pass

def set_free_for_chat(self):

pass

def set_available(self):

pass

Online

Les transitions non acceptées sont ignoréesOnline Création d’un thread pour l’activité interne de l’état Le thread est arrêté par la transition

Création d’un thread pour l’activité interne de l’étatOnline Les transitions non acceptées sont ignorées Le thread est arrêté par la transition “disconnect” class

Le thread est arrêté par la transition “disconnect”d’un thread pour l’activité interne de l’état class Online(ConnectionState): def init (self, = Poll()

class Online(ConnectionState):

def

init (self,

= Poll()

connection):

self

self t.start() ConnectionState

t

init

(self,

connection)

def disconnect(self):

self

ConnectionState.disconnect(self)

t.cancel()

def connect(self):

pass

Autres Etats

Autres Etats Les transitions non nécessaires sont ignorées class Free(Online): def set_free_for_chat(self): pass class

Les transitions non nécessaires sont ignorées

class Free(Online):

def set_free_for_chat(self):

pass

class Available(Online):

def set_available(self):

pass

class NotAvailable(Online):

def set_not_available(self):

pass

Poll Une interrogation de serveur sera réalisée à chaque seconde from threading import Thread import

Poll

Une interrogation de serveur sera réalisée à chaque seconde

from threading import Thread import time class Poll(Thread):

def

init

(self):

Thread

self

init

(self)

= 0

shouldStop

def run(self):

while self.resume():

print "I am polling the server, I sweare!"

time.sleep(1)

def resume(self):

return self

shouldStop

def cancel(self):

self

shouldStop

= 1

== 0

Exercice VII

Changer l’implémentation de manière à ne créer qu’une seule instance de chaque étatExercice VII 5 min

5 minExercice VII Changer l’implémentation de manière à ne créer qu’une seule instance de chaque état

Exercice VIII

Comment gérer des états concurrents?Exercice VIII E.g. si l’état composite “Online” avait une région orthogonal contenant les états Visible et

E.g. si l’état composite “Online” avait une région orthogonal contenant les états Visible et Invisible?Exercice VIII Comment gérer des états concurrents? 5 min

5 minE.g. si l’état composite “Online” avait une région orthogonal contenant les états Visible et Invisible?

Diagrammes de comportement

Etat-transitionDiagrammes de comportement Interaction Activités Cas d’utilisation

InteractionDiagrammes de comportement Etat-transition Activités Cas d’utilisation

ActivitésDiagrammes de comportement Etat-transition Interaction Cas d’utilisation

Cas d’utilisationDiagrammes de comportement Etat-transition Interaction Activités

Interactions

Définissent le comportement d’un ClassificateurInteractions Le comportement est défini par deux ensembles de traces: Valides Invalides

Le comportement est défini par deux ensembles de traces:Interactions Définissent le comportement d’un Classificateur Valides Invalides

ValidesDéfinissent le comportement d’un Classificateur Le comportement est défini par deux ensembles de traces: Invalides

InvalidesDéfinissent le comportement d’un Classificateur Le comportement est défini par deux ensembles de traces: Valides

Interactions

Interactions Décrivent l’échange de messages entre objets. Diagrammes: Séquence Communication Aperçu d’interaction

Décrivent l’échange de messages entre objets. Diagrammes:

SéquenceInteractions Décrivent l’échange de messages entre objets. Diagrammes: Communication Aperçu d’interaction

CommunicationInteractions Décrivent l’échange de messages entre objets. Diagrammes: Séquence Aperçu d’interaction

AperçuInteractions Décrivent l’échange de messages entre objets. Diagrammes: Séquence Communication d’interaction

d’interaction

Interactions Décrivent l’échange de messages entre objets. Diagrammes: Séquence Communication Aperçu d’interaction

Interaction

Diagramme de Séquences

Diagramme de séquences (scénario)

Exemples de coopération entre objetsDiagramme de séquences (scénario) Illustrent la dynamique d’enchaînement d’un traitement à travers les messages

Illustrent la dynamique d’enchaînement d’un traitement à travers les messages échangés entre objetsséquences (scénario) Exemples de coopération entre objets Représentation du temps comme une dimension explicite

Représentation du temps comme une dimension explicite (verticale)entre objets Illustrent la dynamique d’enchaînement d’un traitement à travers les messages échangés entre objets

Diagramme de séquences

Diagramme de séquences Constitution: Un message initiateur Un ensemble d’objets et de messages Des cadres (frames)

Constitution:

Un message initiateurDiagramme de séquences Constitution: Un ensemble d’objets et de messages Des cadres (frames) Des contraintes de

Un ensemble d’objets et de messagesDiagramme de séquences Constitution: Un message initiateur Des cadres (frames) Des contraintes de temps

Des cadres (frames)Diagramme de séquences Constitution: Un message initiateur Un ensemble d’objets et de messages Des contraintes de

Des contraintes de tempsDiagramme de séquences Constitution: Un message initiateur Un ensemble d’objets et de messages Des cadres (frames)

Notation

sd Exemple obj : C1 obj2 : C2 debut Message Asynchrone Message synchrone creation() obj3
sd Exemple
obj : C1
obj2 : C2
debut
Message Asynchrone
Message synchrone
creation()
obj3 : C1
new = obj3
message(obj, obj2)

Messages

Messages Communication (synchrone ou asynchrone) entre deux lignes de vie. Sortes de message: Complet (événements

Communication (synchrone ou asynchrone) entre deux lignes de vie. Sortes de message:

Complet (événements d’envoi et de réception connus)ou asynchrone) entre deux lignes de vie. Sortes de message: Trouvé (événement d’envoi inconnu) Perdu (événement

Trouvé (événement d’envoi inconnu)de message: Complet (événements d’envoi et de réception connus) Perdu (événement de réception inconnu) Inconnu

Perdu (événement de réception inconnu)de message: Complet (événements d’envoi et de réception connus) Trouvé (événement d’envoi inconnu) Inconnu

Inconnud’envoi et de réception connus) Trouvé (événement d’envoi inconnu) Perdu (événement de réception inconnu)

Messages - Notation

AsynchroneMessages - Notation Synchrone Création Perdu Trouvé Message Asynchrone Message synchrone retour obj3 : C1 creation()

SynchroneMessages - Notation Asynchrone Création Perdu Trouvé Message Asynchrone Message synchrone retour obj3 : C1 creation()

CréationMessages - Notation Asynchrone Synchrone Perdu Trouvé Message Asynchrone Message synchrone retour obj3 : C1 creation()

PerduMessages - Notation Asynchrone Synchrone Création Trouvé Message Asynchrone Message synchrone retour obj3 : C1 creation()

TrouvéMessages - Notation Asynchrone Synchrone Création Perdu Message Asynchrone Message synchrone retour obj3 : C1 creation()

Message Asynchrone

- Notation Asynchrone Synchrone Création Perdu Trouvé Message Asynchrone Message synchrone retour obj3 : C1 creation()

Message synchrone

- Notation Asynchrone Synchrone Création Perdu Trouvé Message Asynchrone Message synchrone retour obj3 : C1 creation()
- Notation Asynchrone Synchrone Création Perdu Trouvé Message Asynchrone Message synchrone retour obj3 : C1 creation()

retour

obj3 : C1
obj3 : C1

creation()

- Notation Asynchrone Synchrone Création Perdu Trouvé Message Asynchrone Message synchrone retour obj3 : C1 creation()
- Notation Asynchrone Synchrone Création Perdu Trouvé Message Asynchrone Message synchrone retour obj3 : C1 creation()
- Notation Asynchrone Synchrone Création Perdu Trouvé Message Asynchrone Message synchrone retour obj3 : C1 creation()
- Notation Asynchrone Synchrone Création Perdu Trouvé Message Asynchrone Message synchrone retour obj3 : C1 creation()

Messages - Syntaxe

message ::= [attribut =] signal-ou-operation [(arguments)][: valeur-retour] | ‘*’

arguments ::= argument [, arguments]

argument ::= [paramètre=]valeur-argument | attribut = paramètre-sortie [valeur- argument] |

Exemples:

message(14, -, 3.14, “hello”) v=message(16, variable):96

message(id=16)

Ligne de vie, Activation

Ligne de vie:Ligne de vie, Activation Représente l’existence d’un objet à un moment particulier Entre la création et

Représente l’existence d’un objet à un moment particulierLigne de vie, Activation Ligne de vie: Entre la création et la destruction Activation: Période d’exécution

Entre la création et la destructionl’existence d’un objet à un moment particulier Activation: Période d’exécution d’une activité

Activation:un moment particulier Entre la création et la destruction Période d’exécution d’une activité (lui-même,

Période d’exécution d’une activité (lui-même, délégation)Représente l’existence d’un objet à un moment particulier Entre la création et la destruction Activation: obj

obj : C1
obj : C1
la création et la destruction Activation: Période d’exécution d’une activité (lui-même, délégation) obj : C1

Contraintes temporelles

Observation de durée, contraintesContraintes temporelles Observation de temps (instants), contraintes :User :ACSystem Code d = duration {d 3*d} t

Observation de temps (instants), contraintesContraintes temporelles Observation de durée, contraintes :User :ACSystem Code d = duration {d 3*d} t =

:User :ACSystem Code d = duration {d 3*d} t = now CardOut {0 13} {t
:User
:ACSystem
Code d = duration
{d
3*d}
t = now
CardOut {0
13}
{t
t+3}

Fragments

Région définissant une sémantique précise à l’intérieur d’une interactionFragments Raccourcis pour l’écriture de traces Composé de [1 *] “Opérandes” sd Region Critique obj :

Raccourcis pour l’écriture de tracessémantique précise à l’intérieur d’une interaction Composé de [1 *] “Opérandes” sd Region Critique obj :

Composé de [1 *] “Opérandes”d’une interaction Raccourcis pour l’écriture de traces sd Region Critique obj : C1 obj2 : C2

sd Region Critique obj : C1 obj2 : C2 msg() critical msg()
sd Region Critique
obj : C1
obj2 : C2
msg()
critical
msg()

Fragments

Fragments Alternatives (alt): choix de comportement, entre deux opérandes sd Exemple obj : C1 obj2 :

Alternatives (alt):

choix de comportement, entre deux opérandes

sd Exemple obj : C1 obj2 : C2 alt [x == 42] msg() [else] msg()
sd Exemple
obj : C1
obj2 : C2
alt
[x == 42]
msg()
[else]
msg()

Fragments

Option (opt): l’opérande est optionnelle. Elle peut ne pas existerFragments Break (break): l’opérande est exécutée, à la place du reste de l’interaction (raccourci pour alternative)

Break (break): l’opérande est exécutée, à la place du reste de l’interaction (raccourci pour alternative)Fragments Option (opt): l’opérande est optionnelle. Elle peut ne pas exister

Fragments

Parallèle (par): le comportement spécifié par les deux opérandes peut s’exécuter en parallèle (fusion entre les messages)Fragments Négatif: le fragment représente des traces invalides

Négatif: le fragment représente des traces invalides(par): le comportement spécifié par les deux opérandes peut s’exécuter en parallèle (fusion entre les messages)

Fragments

Fragments Région critique (critical): les traces spécifiées ne peuvent pas être intercalées

Région critique (critical): les traces spécifiées ne peuvent pas être intercalées

Fragments

Assertion (assert):Fragments spécification de la seule continuation valable Ignorer et Considérer (ignore | consider): spécification des

spécification de la seule continuation valable

Ignorer et Considérer (ignore | consider):(assert): spécification de la seule continuation valable spécification des messages significatifs sd Exemple

spécification des messages significatifs

sd Exemple ignore {t,r} :X :Y consider {q,v,w} v() assert q()
sd Exemple ignore {t,r}
:X
:Y
consider {q,v,w}
v()
assert
q()

Fragments

Boucle (loop): l’opérande sera répétée autant de fois que défini par une gardeFragments Autres: strict, ordonnancement strict, ordonnancement faible

Autres: strict, ordonnancement strict, ordonnancement faibleFragments Boucle (loop): l’opérande sera répétée autant de fois que défini par une garde

Conseil de modélisation

Conseil de modélisation Un diagramme de séquences doit être lisible: limitez le nombre de messages et

Un diagramme de séquences doit être lisible: limitez le nombre de messages et d’objets par diagramme

Exercice IX

Listez les utilisations possibles d’un diagramme de séquencesExercice IX 5 min

5 minExercice IX Listez les utilisations possibles d’un diagramme de séquences

Interaction

Diagramme de Communication

Diagramme de Communication

Comme le diagramme de séquences, sert à représenter des exemples de coopération d’objetsDiagramme de Communication Cependant: la dimension temporelle est représentée par une séquence et les liens entre

Cependant: la dimension temporelle est représentée par une séquence et les liens entre objets sont visiblesDiagramme de Communication Comme le diagramme de séquences, sert à représenter des exemples de coopération d’objets

Notation

Equivalent à un diagramme de séquencesNotation Le chemin utilisé par les messages est visible Gildas:Caissier 1: demande argent() 2 : reçoit

Le chemin utilisé par les messages est visibleNotation Equivalent à un diagramme de séquences Gildas:Caissier 1: demande argent() 2 : reçoit argent() Aurélie:Client

Gildas:Caissier
Gildas:Caissier

1: demande argent()de séquences Le chemin utilisé par les messages est visible Gildas:Caissier 2 : reçoit argent() Aurélie:Client

2 : reçoit argent()de séquences Le chemin utilisé par les messages est visible Gildas:Caissier 1: demande argent() Aurélie:Client

Aurélie:Client
Aurélie:Client
Sylvain Notation afficher() 1 *(i=1 4):affiche() :Carre 4 :Segment 1.1 position() destination:Point 1.2 position()

Sylvain

Notation

afficher()

Sylvain Notation afficher() 1 *(i=1 4):affiche() :Carre 4 :Segment 1.1 position() destination:Point 1.2 position()

1 *(i=1

4):affiche()

:Carre
:Carre
4 :Segment
4
:Segment

1.1 position()

1 *(i=1 4):affiche() :Carre 4 :Segment 1.1 position() destination:Point 1.2 position() origine:Point Séquences
destination:Point
destination:Point
:Carre 4 :Segment 1.1 position() destination:Point 1.2 position() origine:Point Séquences consécutives et

1.2 position()

origine:Point
origine:Point

Séquences consécutives et imbriquées

Exercice X

Dessiner le diagramme de séquences équivalent au digramme de communication ci- contreExercice X Sylvain 5 min destination:Point 1.1 position() afficher() 1 *(i=1 4):affiche() :Carre 4 :Segment 1.2

équivalent au digramme de communication ci- contre Sylvain 5 min destination:Point 1.1 position() afficher() 1

Sylvain

5 minéquivalent au digramme de communication ci- contre Sylvain destination:Point 1.1 position() afficher() 1 *(i=1

destination:Point
destination:Point
de communication ci- contre Sylvain 5 min destination:Point 1.1 position() afficher() 1 *(i=1 4):affiche() :Carre 4

1.1 position()

afficher()

1 *(i=1

4):affiche()

:Carre
:Carre
5 min destination:Point 1.1 position() afficher() 1 *(i=1 4):affiche() :Carre 4 :Segment 1.2 position() origine:Point
4 :Segment
4
:Segment
5 min destination:Point 1.1 position() afficher() 1 *(i=1 4):affiche() :Carre 4 :Segment 1.2 position() origine:Point
5 min destination:Point 1.1 position() afficher() 1 *(i=1 4):affiche() :Carre 4 :Segment 1.2 position() origine:Point

1.2 position()

origine:Point
origine:Point

Diagrammes de comportement

Etat-transitionDiagrammes de comportement Interaction Activités Cas d’utilisation

InteractionDiagrammes de comportement Etat-transition Activités Cas d’utilisation

ActivitésDiagrammes de comportement Etat-transition Interaction Cas d’utilisation

Cas d’utilisationDiagrammes de comportement Etat-transition Interaction Activités

Diagramme Activités

Spécifie la séquence et les conditions pour coordonner différents comportementsDiagramme Activités Attachés à un Classificateur

Attachés à un ClassificateurDiagramme Activités Spécifie la séquence et les conditions pour coordonner différents comportements

Notation

Notation

Actions

Représentent un comportement d’exécution (une étape dans l’exécution d’un algorithme)Actions Peuvent avoir de pré et post conditions Action

Peuvent avoir de pré et post conditionsActions Représentent un comportement d’exécution (une étape dans l’exécution d’un algorithme) Action

Action
Action
Décision Branchement sur plusieurs transitions [cout>10] [cout<=10]

Décision

Branchement sur plusieurs transitions

[cout>10]
[cout>10]
Décision Branchement sur plusieurs transitions [cout>10] [cout<=10]

[cout<=10]

Stéréotypes optionnels

Émission de signalStéréotypes optionnels Réception de signal Syntaxe à la SDL (télécom) Emission Réception

Réception de signalStéréotypes optionnels Émission de signal Syntaxe à la SDL (télécom) Emission Réception

Syntaxe à la SDL (télécom)Stéréotypes optionnels Émission de signal Réception de signal Emission Réception

Emission Réception
Emission
Réception

Diagrammes de comportement

Etat-transitionDiagrammes de comportement Interaction Activités Cas d’utilisation

InteractionDiagrammes de comportement Etat-transition Activités Cas d’utilisation

ActivitésDiagrammes de comportement Etat-transition Interaction Cas d’utilisation

Cas d’utilisationDiagrammes de comportement Etat-transition Interaction Activités

Diagramme de Cas d’utilisation

Spécification fonctionnelle du systèmeDiagramme de Cas d’utilisation Représente les manière de l’utiliser Acteurs, Cas d’utilisations

Représente les manière de l’utiliserDiagramme de Cas d’utilisation Spécification fonctionnelle du système Acteurs, Cas d’utilisations

Acteurs, Cas d’utilisationsDiagramme de Cas d’utilisation Spécification fonctionnelle du système Représente les manière de l’utiliser

Acteurs

Entité externe au système et amenée à interagir avec lui. Un acteur «joue un rôle» vis-a-vis du système.Acteurs peut représenter un être humain, un autre système, un SGBD, etc. L'identification des acteurs nous

peut représenter un être humain, un autre système, un SGBD, etc.avec lui. Un acteur «joue un rôle» vis-a-vis du système. L'identification des acteurs nous permet de

L'identification des acteurs nous permet de délimiter le système.Un acteur «joue un rôle» vis-a-vis du système. peut représenter un être humain, un autre système,

Cas d’utilisation

Sont des Classificateurs: leur comportement est défini par une interactionCas d’utilisation peuvent avoir des associations avec d’autres classificateurs Use Case

peuvent avoir des associations avec d’autres classificateursCas d’utilisation Sont des Classificateurs: leur comportement est défini par une interaction Use Case

Use Case
Use Case

Relations entre cas d’utilisation

Extension («extends»): le comportement défini par un cas d’utilisation est étendu par un autreRelations entre cas d’utilisation Inclusion («includes»): le comportement d’un cas d’utilisation est inséré dans

Inclusion («includes»): le comportement d’un cas d’utilisation est inséré dans un autrecas d’utilisation Extension («extends»): le comportement défini par un cas d’utilisation est étendu par un autre

Notation

«subsystem» Commandes Consulter 0 1 Commander 0 1 1 Traiter 1 Commande 1 Client MàJ
«subsystem»
Commandes
Consulter
0
1
Commander
0
1
1
Traiter
1
Commande
1
Client
MàJ
catalogue
0
1
Etablir crédit

Notation

Transaction sur distributeur
Transaction
sur
distributeur
Notation Transaction sur distributeur Retrait Aide en ligne «extends» Lecture carte «includes»
Notation Transaction sur distributeur Retrait Aide en ligne «extends» Lecture carte «includes»
Retrait
Retrait
Aide en ligne
Aide en
ligne

«extends»

Notation Transaction sur distributeur Retrait Aide en ligne «extends» Lecture carte «includes»
Lecture carte
Lecture
carte

«includes»

Conseil de modélisation

Conseil de modélisation Un cas d’utilisation représente une fonctionnalité du système, et non les options du

Un cas d’utilisation représente une fonctionnalité du système, et non les options du menu principal