289 votes

Comment afficher une condition "if" sur un diagramme de séquence ?

Je me demandais, comment peut-on représenter l'instruction "if" sur un diagramme de séquence?

if (somethingShouldBeDone) {
       // Fais-le
} else {
       // Fais autre chose
}

Est-ce que ça peut être représenté du tout? Le truc est... dans mon code, un nombre considérable de conditions sont vérifiées pour déterminer une variété d'actions. Si je vais montrer les actions, j'aimerais indiquer explicitement que les actions sont causées par des événements particuliers.

Si possible, créez une représentation visuelle d'une solution.

3 votes

Je sais que cette question est ancienne et je n'ai pas encore fait de recherche, mais cela m'a fait me demander si afficher des branches est une bonne idée pour les diagrammes de séquence. J'ai toujours pensé que les conditions de la séquence étaient explicitement décrites dans le scénario et qu'aucune branche n'avait lieu pendant la séquence. Les chemins alternatifs étaient gérés en décrivant une variante du scénario qui avait son propre diagramme de séquence. C'est un peu subjectif, alors peut-être devrais-je le publier sur Meta ou éventuellement sur Génie logiciel?

405voto

GETah Points 10887

Si condition if-else, également appelée alternatives dans les termes UML, peut en effet être représentée dans les diagrammes de séquence. Voici un lien où vous pouvez trouver de bonnes ressources sur le sujet http://www.ibm.com/developerworks/rational/library/3101.html

branching with alt

1 votes

Dans Visio, est-ce que Alt est appelé autrement? Je ne semble pas le trouver.

13 votes

Visio en soi n'est pas un outil de modélisation UML. Si vous voulez utiliser UML 2.0 alors vous avez besoin de trouver un bon pochoir Visio qui implémente pleinement les spécifications 2.0. Il y a plusieurs pochoirs gratuits disponibles sur le web, vous voudrez peut-être en essayer certains :) Voici un qui a bonne allure (n'ai pas essayé toutes les fonctionnalités cependant) softwarestencils.com/uml

0 votes

Y a-t-il d'autres outils UML en dehors de Visio. Enterprise Architect est-il suffisant?

49voto

XiaoPeng Points 444

Si vous collez

A.do() {
  if (condition1) {
   X.doSomething
  } else if (condition2) {
   Y.doSomethingElse
  } else {
   donotDoAnything
  }
}

sur https://app.zenuml.com. Il générera un diagramme pour vous.Diagramme de séquence If/else

0 votes

@Gholamali-Irani avez-vous essayé l'extension Chrome ?

0 votes

Si c'est A.do(int condition) - Si ... sinon ... sinon, tout ne peut pas se produire en une seule fois. Le flux dépend de l'argument condition. Ce serait formidable si ZenUML pouvait dessiner ça. Ce serait trois appels ordonnés dans le temps.

0 votes

@ChefGladiator Je ne suis pas sûr de comprendre ce que vous voulez dire. Pourriez-vous ajouter un peu de pseudo code ici? Ou pourriez-vous me donner un lien vers le site.

27voto

vishwampandya Points 565

Très simple, en utilisant Fragment Alt

Prenons un exemple de diagramme de séquence pour un distributeur automatique de billets. Disons que vous voulez ici

SI la carte insérée est valide, alors demandez "Entrez le code PIN"...SINON demandez "Code PIN incorrect"

Voici le diagramme de séquence pour le même

Diagramme de séquence du distributeur automatique

J'espère que cela vous aidera!

1 votes

Voir https://plantuml.com/sequence-diagram, section Grouping message.

2voto

David Burg Points 339

Dans Visual Studio UML sequence, ceci peut également être décrit comme des fragments qui sont bien documentés ici : https://msdn.microsoft.com/en-us/library/dd465153.aspx

1 votes

Tout comme un avertissement, le concepteur UML a été supprimé à partir de VS 2017. learn.microsoft.com/fr-fr/visualstudio/modeling/…

0 votes

Pour clarifier, UML est toujours dans Visio - simplement pas dans Visual Studio. support.microsoft.com/en-us/office/…

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X