Support de cours UML les diagrammes de séquence, tutoriel & guide de travaux pratiques UML en pdf.
Synchronisation des messages
UML permet de spécifier de manière très précise l’ordre et les conditions d’envoi des messages sur un diagramme dynamique.
Pour chaque message, il est possible d’indiquer :
• les clauses qui conditionnent son envoi,
• son rang (son numéro d’ordre par rapport aux autres messages),
• sa récurrence,
• ses arguments.
pré : prédécesseurs (liste de numéros de séquence de messages séparés par une virgule ; voir aussi « séq »). Indique que le message courant ne sera envoyé que lorsque tous ses prédécesseurs le seront aussi (permet de synchroniser l’envoi de messages).
cond : garde, expression booléenne. Permet de conditionner l’envoi du message, à l’aide d’une clause exprimée en langage naturel.
séq : numéro de séquence du message. Indique le rang du message, c’est-à-dire son numéro d’ordre par rapport aux autres messages. Les messages sont numérotés à la façon de chapitres dans un document, à l’aide de chiffres séparés par des points. Ainsi, il est possible de représenter le niveau d’emboîtement des messages et leur précédence.
Exemple : l’envoi du message 1.3.5 suit immédiatement celui du message 1.3.4 et ces deux messages font partie du flot (de la famille de messages) 1.3.
Pour représenter l’envoi simultané de deux messages, il suffit de les indexer par une lettre.
Exemple : l’envoi des messages 1.3.a et 1.3.b est simultané.
iter : récurrence du message. Permet de spécifier en langage naturel l’envoi séquentiel (ou en parallèle, avec « || ») de messages. Notez qu’il est aussi possible de spécifier qu’un message est récurrent en omettant la clause d’itération (en n’utilisant que « * » ou « *|| »).
r : valeur de retour du message. Permet d’affecter la valeur de retour d’un message, pour par exemple la retransmettre dans un autre message, en tant que paramètre.
msg : nom du message.
par : paramètres (optionnels) du message.
Exemples :
3 : bonjour() Ce message a pour numéro de séquence « 3” [heure = midi] 1 : manger()
Ce message n’est envoyé que s’il est midi.
1.3.6 * : ouvrir() Ce message est envoyé de manière séquentielle un certain nombre de fois.
Représente l’envoi en parallèle de 5 messages. Ces messages ne seront envoyés qu’après l’envoi du message 3. 1.3,2.1 / [t < 10s] 2.5 : age := demanderAge(nom,prenom)
Ce message (numéro 2.5) ne sera envoyé qu’après les messages 1.3 et 2.1, et que si « t < 10s ».
1.3 / [disk full] 1.7.a * : deleteTempFiles()
1.3 / [disk full] 1.7.b : reduceSwapFile(20%)
Ces messages ne seront envoyés qu’après l’envoi du message 1.3 et si la condition « disk full » est réalisée. Si cela est le cas, les messages 1.7.a et 1.7.b seront envoyés simultanément. Plusieurs messages 1.7.a peuvent être envoyés.
Objets actifs (threads)
UML permet de représenter des communications entre objets actifs de manière concurrente. Cette extension des diagrammes de collaboration permet notamment de représenter des communications entre processus ou l’exécution de threads.
Les diagrammes de séquence
Diagramme de séquence : sémantique
Les diagrammes de séquences permettent de représenter des collaborations entre objets selon un point de vue temporel, on y met l’accent sur la chronologie des envois de messages. Contrairement au diagramme de collaboration, on n’y décrit pas le contexte ou l’état des objets, la représentation se concentre sur l’expression des interactions.
Les diagrammes de séquences peuvent servir à illustrer un cas d’utilisation.
L’ordre d’envoi d’un message est déterminé par sa position sur l’axe vertical du dia-gramme ; le temps s’écoule « de haut en bas » de cet axe. La disposition des objets sur l’axe horizontal n’a pas de conséquence pour la sémantique du diagramme. Les diagrammes de séquences et les diagrammes d’état-transitions sont les vues dynamiques les plus importantes d’UML.
……..