شبكة Les vues dynamiques d'UML

طباعة الموضوع

Hanzo

عضو مسجل
6 جوان 2024
1,926
5
0
COLLABORATION ET MESSAGES







q​
Diagramme de collaboration

  • Les diagrammes de collaboration montrent des interactions entre objets (instances de classes et acteurs).​
  • Ils permettent de représenter le contexte d'une interaction, car on peut y préciser les états des objets qui interagissent.​
Exemples :
diagramme de collaboration
diagramme de collaboration

q 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.​
  • La syntaxe d'un message est la suivante :

    [pré "/"] [["["cond"]"] [séq] ["*"["||"]["["iter"]"]] ":"] [r ":="] msg"("[par]")"
    • 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.​
DIAGRAMME DE SEQUENCE













q​
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.​
Exemple :
diagramme de séquence

q 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érobantN'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.​

q 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 :
bande d'activation
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.​
  • Préférez aussi l'utilisation de contraintes à celle de pseudo-code, comme dans l'exemple qui suit.​

q Exemple complet

Afin de mieux comprendre l'exemple ci-dessous, veuillez vous référer aux chapitres sur la synchronisation des messages. Notez aussi l'utilisation des contraintes pour documenter les conditions d'envoi de certains messages.​
diagramme de séquence
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).​
DIAGRAMME D'ETATS-TRANSITIONS



















q​
Diagramme d'états-transitions : sémantique

  • Ce diagramme sert à représenter des automates d'états finis, sous forme de graphes d'états, reliés par des arcs orientés qui décrivent les transitions.​
  • Les diagrammes d'états-transitions permettent de décrire les changements d'états d'un objet ou d'un composant, en réponse aux interactions avec d'autres objets/composants ou avec des acteurs.​
  • Un état se caractérise par sa durée et sa stabilité, il représente une conjonction instantanée des valeurs des attributs d'un objet.​
  • Une transition représente le passage instantané d'un état vers un autre.​
  • Une transition est déclenchée par un événement. En d'autres termes : c'est l'arrivée d'un événement qui conditionne la transition.​
  • Les transitions peuvent aussi être automatiques, lorsqu'on ne spécifie pas l'événement qui la déclenche.​
  • En plus de spécifier un événement précis, il est aussi possible de conditionner une transition, à l'aide de "gardes" : il s'agit d'expressions booléennes, exprimées en langage naturel (et encadrées de crochets).​
états, transition et événement, notation :
états et transition
transition conditionnelle :
transition conditionnelle

q Super-Etat, historique et souches

  • Un super-état est un élément de structuration des diagrammes d'états-transitions (il s'agit d'un état qui englobe d'autres états et transitions).​
  • Le symbole de modélisation "historique", mémorise le dernier sous-état actif d'un super-état, pour y revenir directement ultérieurement.​
Exemple :
Le diagramme d'états-transitions ci-dessous, montre les différents états par lesquels passe une machine à laver les voitures.​
En phase de lustrage ou de lavage, le client peut appuyer sur le bouton d'arrêt d'urgence. S'il appuie sur ce bouton, la machine se met en attente. Il a alors deux minutes pour reprendre le lavage ou le lustrage (la machine continue en phase de lavage ou de lustrage, suivant l'état dans lequel elle a été interrompue), sans quoi la machine s'arrête. En phase de séchage, le client peut aussi interrompre la machine. Mais dans ce cas, la machine s'arrêtera définitivement (avant de reprendre un autre cycle entier).​
super-état et historique
  • souches : afin d'introduire plus d'abstraction dans un diagramme d'états-transitions complexe, il est possible de réduire la charge d'information, tout en matérialisant la présence de sous-états, à l'aide de souches, comme dans l'exemple ci-dessous.

    souche

q Actions dans un état

  • On peut aussi associer une action à l'événement qui déclenche une transition.
    La syntaxe est alors la suivante : événement / action​
  • Ceci exprime que la transition (déclenchée par l'événement cité) entraîne l'exécution de l'action spécifiée sur l'objet, à l'entrée du nouvel état.
    Exemple : il pleut / ouvrir parapluie​
  • Une action correspond à une opération disponible dans l'objet dont on représente les états.​
  • Les actions propres à un état peuvent aussi être documentées directement à l'intérieur de l'état.
    UML définit un certain nombre de champs qui permettent de décrire les actions dans un état :
    • entry / action : action exécutée à l'entrée de l'état​
    • exit / action : action exécutée à la sortie de l'état​
    • on événement / action : action exécutée à chaque fois que l'événement cité survient​
    • do / action : action récurrente ou significative, exécutée dans l'état​
Exemple :​
actions dans un état
Remarque :​
Attention, les actions attachées aux clauses "entry" et "exit" ne sont pas exécutées si l'événement spécifié dans la clause "on" survient. Pour indiquer qu'elles peuvent être exécutées plusieurs fois à l'arrivée d'un événement, représentez l'arrivée d'un événement réflexif, comme suit :​
événement réflexif

q Etats concurrents et barre de synchronisation

Pour représenter des états concurrents sur un même diagramme d'états-transitions, on utilise la notation suivante :​
états concurrents
Dans l'exemple ci-dessus, l'automate K est composé des sous-automates L et M.​
L et M s'activent simultanément et évoluent en parallèle. Au départ, l'objet dont on modélise les états par l'automate K est dans l'état composite (E-L1, E-M1).​
Après l'événement Tr1, K passe dans l'état composite (E-L2, E-M2). Par la suite, si l'événement Tr2 survient, K passe dans l'état composite (E-L3, E-M2). Si c'est Tr4 qui survient, M ne passe pas dans l'état E-M1, car cette transition est contrainte par l'état de L ("[in E-L3]").​
Dans l'état composite (E-L3, E-M2), si Tr3 survient, K passe dans l'état composite (E-L2, E-M2). Si c'est Tr4 qui survient, K passe dans l'état composite (E-L3, E-M1). Et ainsi de suite...​
Attention : la numérotation des événements n'est pas significative. Pour synchroniser les sous-automates d'une agrégation d'états, il faut contraindre les transitions, comme dans l'exemple ci-dessus ("[in E-L3]").​
On peut aussi utiliser un symbole spécial : "la barre de synchronisation".​

  • La barre de synchronisation permet de représenter graphiquement des points de synchronisation.​
  • Les transitions automatiques qui partent d'une barre de synchronisation ont lieu en même temps.​
  • On ne franchit une barre de synchronisation qu'après réalisation de toutes les transitions qui s'y rattachent.​
barre de synchronisation

q Evénement paramétré

UML permet aussi de paramétrer les événements, comme dans l'exemple suivant :​
événement paramétré

q Echange de messages entre automates

Il est aussi possible de représenter l'échange de messages entre automates dans un diagramme d'états-transitions. Cette notation particulière n'est pas présentée ici. Veuillez vous référer à "l'UML notation guide".​
DIAGRAMME D'ACTIVITES










q​
Diagramme d'activités : sémantique

  • UML permet de représenter graphiquement le comportement d'une méthode ou le déroulement d'un cas d'utilisation, à l'aide de diagrammes d'activités (une variante des diagrammes d'états-transitions).​
  • Une activité représente une exécution d'un mécanisme, un déroulement d'étapes séquentielles.​
  • Le passage d'une activité vers une autre est matérialisé par une transition.​
  • Les transitions sont déclenchées par la fin d'une activité et provoquent le début immédiat d'une autre (elles sont automatiques).​
  • En théorie, tous les mécanismes dynamiques pourraient être décrits par un diagramme d'activités, mais seuls les mécanismes complexes ou intéressants méritent d'être représentés.​
activités et transition, notation :
activités et transitions
Pour représenter des transitions conditionnelles, utilisez des gardes (expressions booléennes exprimées en langage naturel), comme dans l'exemple suivant :​
transition conditionnelle

q Synchronisation

Il est possible de synchroniser les transitions à l'aide des "barres de synchronisation" (comme dans les diagrammes d'états-transitions).​
Une barre de synchronisation permet d'ouvrir et de fermer des branches parallèles au sein d'un flot d'exécution :​

  • Les transitions qui partent d'une barre de synchronisation ont lieu en même temps.​
  • On ne franchit une barre de synchronisation qu'après réalisation de toutes les transitions qui s'y rattachent.​
L'exemple suivant illustre l'utilisation des barres de synchronisation :​
barres de synchronisation

q Couloirs d'activités

Afin d'organiser un diagramme d'activités selon les différents responsables des actions représentées, il est possible de définir des "couloirs d'activités".​
Il est même possible d'identifier les objets principaux, qui sont manipulés d'activités en activités et de visualiser leur changement d'état.​
couloirs d'activités
 
  • Google Adsense
    إعلانات Google