Diagrammes des séquences Modéliser les vues dynamiques d'un système Les diagrammes d interactions permettent de modéliser comment les objets communiquent entre eux (point focal : échange de messages). Il existe 4 types de diagrammes sémantiquement équivalents : Généralement, on utilise un diagramme d interaction pour un use case. La norme 2.0 reclasse les diagrammes de la norme 1.X et met les diagrammes suivants dans la classe des diagrammes d'interaction : Diagrammes de séquence Diagrammes de collaboration Diagramme de communication Diagramme d'interaction globale (Interaction Overview Diagram) Diagrammes de timing Ces types de diagramme tendent à traduire un fonctionnement dans un contexte particulier et l'accent est mis spécifiquement sur la séquence des opérations plutôt que sur les données qui sont véhiculées, bien que certains ajouts (décorations) permettent de le faire. Le diagramme de communication dans la norme 1.4 a été renommé diagramme de communication. Si le diagramme de séquence et de communication met le focus sur la structure et la séquence des messages entre les objets, le diagramme de timing met plus d'accent sur les états et les changements d'états. Les diagrammes d Pour rassembler les séquences ensemble dans un diagramme de haut niveau, le diagramme d'interaction globale (Interaction Overview Diagram) est une séquence dans laquelle chaque activité élémentaire est un diagramme de séquence. Diagramme de séquence Le diagramme de séquence représente la chronologie des interactions entre les objets dans l accomplissement d une tâche. Le diagramme de communication (ancien diagramme de collaboration dans les normes 1.x) est un diagramme «dual» du diagramme de séquence puisque la transformation de l un à l autre est automatisée dans Rational par exemple. Le diagramme de communication met l accent sur l étalage spatial des objets impliqués plus que sur la chronologie des événements. Dans le passé, le diagramme de séquence est encore appelé «diagramme d interaction» ou «scénario» dans la méthode OMT. Il fait partie des diagrammes de la vue dynamique. Dans un diagramme de séquence, chaque objet impliqué dans une collaboration (en vue d'exécution d'une tâche identifiée) est représenté avec un axe des temps, orienté du haut vers le bas, appelé «ligne de vie». Les périodes durant lesquelles l'objet est actif sont représentées sur l'axe des temps par un rectangle, et portent le nom de périodes d'activation ou encore bandes d activation... En principe, le diagramme de séquence illustre seulement un chemin à travers l exécution d une tâche macroscopique. On pourrait essayer de documenter les structures de contrôle simples avec les commentaires mais ce n est pas le point fort de ce diagramme avec les versions 1.X. Dans la version 2.0, on peut représenter par exemple une structure de if-then-else avec des "fragments" (de séquence). Il n y a aucune échelle sur l axe des temps. On peut ajouter des contraintes ou des «notes» pour la production si le besoin se fait sentir. Il permet de modéliser l interaction entre les objets dans le temps. On y trouve les éléments suivants : Objet : instance d une classe Ligne de vie (objet) et bloc d activation (opération) Message : Méthode de la classe réceptrice #Niedercorn LT «la Briquerie» 57100 THIONVILLE UML : diagrammes des séquences & page 1/7
Pour les objets et les messages : Des lignes verticales pointillées représentent des objets (pas des classes!) Le nom de la classe (:ClassName) est optionnel et il : o représente un message o représente un retour explicite de message (return) La classe de l objet sender devrait avoir une association avec la classe de l objet receiver dans le diagramme de classe Structures de contrôle 1. La message1() est envoyé seulement si la condition specifiée dans la guard (entre brackets) est vraie. 2. Une branche. Le sender envoie soit le message2() soit le message3(). Les conditions de guard sont exclusives. 3. L Itération. Le sender envoie la message4() tant que la condition est vraie. 4. Pour chaque. Si le receiver est une collection d objets, envoyer le message à tous ces objets. 5. Grouping. Les activités dans la boîte ont lieu seulement si le test est vrai. L asterisque indique l itération. 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 diagramme ; 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. #Niedercorn LT «la Briquerie» 57100 THIONVILLE UML : diagrammes des séquences & page 2/7
Types de messages Comme vous pouvez le voir dans l'exemple ci-dessus, UML propose un certain nombre de stéréotypes graphiques pour décrire la nature du message (ces stéréotypes graphiques s'appliquent également aux messages des diagrammes de collaborations) : message simple : Message dont on ne spécifie aucune caractéristique d'envoi ou de réception particulière. message minuté (timeout) : Bloque l'expéditeur pendant un temps donné (qui peut être spécifié dans une contrainte), en attendant la prise en compte du message par le récepteur. L'expéditeur est libéré si la prise en compte n'a pas eu lieu pendant le délai spécifié. message synchrone : Bloque l'expéditeur jusqu'à prise en compte du message par le destinataire. Le flot de contrôle passe de l'émetteur au récepteur (l'émetteur devient passif et le récepteur actif) à la prise en compte du message. message asynchrone : N'interrompt pas l'exécution de l'expéditeur. Le message envoyé peut être pris en compte par le récepteur à tout moment ou ignoré (jamais traité). message dérobant : N'interrompt pas l'exécution de l'expéditeur et ne déclenche une opération chez le récepteur que s'il s'est préalablement mis en attente de ce message. Activation d'un objet Sur un diagramme de séquence, il est aussi possible de représenter de manière explicite les différentes périodes d'activité d'un objet au moyen d'une bande rectangulaire superposée à la ligne de vie de l'objet. On peut aussi représenter des messages récursifs, en dédoublant la bande d'activation de l'objet concerné. Pour représenter de manière graphique une exécution conditionnelle d'un message, on peut documenter un diagramme de séquence avec du pseudo-code et représenter des bandes d'activation conditionnelles. Exemple : Commentaires : Ne confondez la période d'activation d'un objet avec sa création ou sa destruction. Un objet peut être actif plusieurs fois au cours de son existence (voir exemple ci-dessus). Le pseudo-code peut aussi être utilisé pour indiquer des itérations (avec incrémentation d'un paramètre d'un message par exemple). Le retour des messages asynchrones devrait toujours être matérialisé, lorsqu'il existe. Notez qu'il est fortement recommandé de synchroniser vos messages, comme sur l'exemple qui suit... L'exemple qui suit présente aussi une alternative intéressante pour la représentation des branchements conditionnels. Cette notation est moins lourde que celle utilisée dans l'exemple ci-dessus. #Niedercorn LT «la Briquerie» 57100 THIONVILLE UML : diagrammes des séquences & page 3/7
Préférez aussi l'utilisation de contraintes à celle de pseudo-code, comme dans l'exemple qui suit. Exemple : Exemple : Retrait en espèce Rédigez un diagramme de séquence basé sur l énoncé suivant: Le guichetier ouvre une session Le guichetier saisit le numéro de compte du client. Le système guichet valide le compte auprès du système central. Le système guichet demande le type d opération au guichetier Le guichetier sélectionne le montant du retrait Le système guichet interroge le système central pour s assurer que le compte est suffisamment approvisionné Le système guichet demande au système central de débiter le compte Le système notifie au guichetier qu il peut délivrer le montant demandé Diagramme de Séquence #Niedercorn LT «la Briquerie» 57100 THIONVILLE UML : diagrammes des séquences & page 4/7
Autres exemples : Le contrôleur C1 envoie un appel de procédure demandant l état du bouton B1. B1 retourne une valeur indiquant que le bouton est ON. C1 instancie l objet T1 de MathLib qui calcule une formule et retourne le résultat au contrôleur C1 qui exécute après une fonction interne. Le schéma de classe montre les méthodes et les canaux de communication. Exemple : Commentaire : Un message réflexif ne représente pas l'envoi d'un message, il représente une activité interne à l'objet (qui peut être détaillée dans un diagramme d'activités) ou une abstraction d'une autre interaction (qu'on peut détailler dans un autre diagramme de séquence). #Niedercorn LT «la Briquerie» 57100 THIONVILLE UML : diagrammes des séquences & page 5/7
Ajouts de la norme 2.0 La norme 2.0 ajoute des structures de contrôle et un mécanisme de hiérarchisation des diagrammes de séquence. Ci-dessous sont les quelques exemples de Agile Modeling. Implantation de If-Then-Else #Niedercorn LT «la Briquerie» 57100 THIONVILLE UML : diagrammes des séquences & page 6/7
Référence à d'autres séquences dans d'autres diagrammes Décomposition d'une durée de vie dans un autre diagramme. L'objet symbolisant la durée de vie représente tous les autres objets agrégés (il peut ne pas avoir une existence réelle mais juste une entité symbolique. #Niedercorn LT «la Briquerie» 57100 THIONVILLE UML : diagrammes des séquences & page 7/7