¿Cómo mostrar la condición "si" en un diagrama de secuencia?

194

Me preguntaba, ¿cómo se puede representar " if" la declaración en un diagrama de secuencia?

if (somethingShouldBeDone) {
       // Do it
} else {
       // Do something else
}

¿Se puede representar en absoluto? La cuestión es ... en mi código, se verifican una cantidad justa de condiciones para determinar una variedad de acciones. Si voy a mostrar las acciones, me gustaría declarar explícitamente que las acciones son causadas por eventos particulares.

Si es posible, cree una representación de imagen de una solución.

James Raitsev
fuente
1
Sé que esta pregunta es antigua y aún no he realizado una búsqueda, pero me hizo preguntarme si mostrar ramificación es incluso una buena idea para los diagramas de secuencia. Siempre pensé que las condiciones para la secuencia se describían explícitamente en el escenario y, por lo tanto, no hubo ramificación durante la secuencia. Las rutas alternativas se manejaron describiendo una variante del escenario que tenía su propio diagrama de secuencia. Es algo subjetivo, ¿tal vez debería publicarlo en Meta o posiblemente en Ingeniería de software?
Kelly S. French

Respuestas:

285

De lo contrario, también se pueden representar alternativas en términos de UML en diagramas de secuencia. Aquí hay un enlace donde puede encontrar algunos buenos recursos sobre el tema http://www.ibm.com/developerworks/rational/library/3101.html

ramificando con alt

GETah
fuente
En Visio, ¿se Altllama algo más? Parece que no puedo encontrarlo
James Raitsev
13
Visio en sí mismo no es una herramienta de modelado UML. Si desea usar UML 2.0, entonces necesita encontrar una buena plantilla de Visio que implemente completamente las especificaciones 2.0. Hay varias plantillas gratuitas disponibles en la web, es posible que desee probar algunas de ellas :) Aquí hay una que se ve bien (aunque no
probó
¿Hay alguna otra herramienta UML aparte de Visio? ¿El arquitecto empresarial es lo suficientemente bueno?
Venkat Madhav
1
@VenkatMadhav Realmente no puedo decir. Nunca lo he usado en toda su potencia, pero de la lectura que encontré en google, debería ser bastante bueno
GETah
@Venkat Personalmente soy un fanático del paradigma visual. ( visual-paradigm.com )
Encuesta Cody
35

Si pegas

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

en https://www.zenuml.com . Generará un diagrama para ti.Diagrama de secuencia if / else

Xiao Peng - ZenUML.com
fuente
@ Gholamali-Irani, ¿has probado la extensión de Chrome?
Xiao Peng - ZenUML.com
Si es así A.do(int condition), si ... más ... más, no todo puede suceder como resultado de una llamada. El flujo depende del argumento de la condición. Sería maravilloso si ZenUML pudiera dibujar eso. Serían tres llamadas ordenadas a tiempo.
Chef Gladiator
@ChefGladiator No estoy seguro si entiendo lo que quieres decir. ¿Podría agregar algún pseudocódigo aquí? O puedes señalarme en el sitio.
Xiao Peng - ZenUML.com
Claro, aquí está el código: wandbox.org/permlink/PURdGJc8YxJmpUh7 : se requieren tres llamadas para que se cumplan todas las condiciones. La secuencia UML debe mostrar tres llamadas, no una.
Chef Gladiator
Por supuesto, los diagramas de actividad son mejores para mostrar algoritmos internos /
Chef Gladiator
2

Muy simple, usando el fragmento Alt

Tomemos un ejemplo de diagrama de secuencia para un cajero automático. Digamos aquí que quiere

SI tarjeta insertada es válida, entonces mensaje "Enter Pin" .... ELSE mensaje "PIN incorrecto"

Entonces aquí está el diagrama de secuencia para el mismo

Diagrama de secuencia de cajero automático

¡Espero que esto ayude!

vishwampandya
fuente