Come mostrare la condizione "if" su un diagramma di sequenza?


196

Mi chiedevo, come si può rappresentare una iffrase " " su un diagramma di sequenza?

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

Può essere rappresentato affatto? Il fatto è ... nel mio codice, viene verificata una discreta quantità di condizioni per determinare una varietà di azioni. Se ho intenzione di mostrare le azioni, vorrei dichiarare esplicitamente che le azioni sono causate da eventi particolari.

Se possibile, creare una rappresentazione dell'immagine di una soluzione.


1
So che questa domanda è vecchia e non ho ancora fatto una ricerca, ma mi ha fatto chiedermi se mostrare le ramificazioni sia anche una buona idea per i diagrammi di sequenza. Ho sempre pensato che le condizioni per la sequenza fossero esplicitamente descritte nello scenario e quindi non si verificassero ramificazioni durante la sequenza. Percorsi alternativi sono stati gestiti descrivendo una variante dello scenario che aveva il suo diagramma di sequenza. È in qualche modo soggettivo, quindi forse dovrei pubblicarlo su Meta o eventualmente su Software Engineering?
Kelly S. francese,

Risposte:


288

In caso contrario, le cosiddette alternative in termini UML possono effettivamente essere rappresentate nei diagrammi di sequenza. Ecco un link dove puoi trovare alcune belle risorse sull'argomento http://www.ibm.com/developerworks/rational/library/3101.html

ramificazione con alt


In Visio, si Altchiama qualcos'altro? Non riesco a trovarlo
James Raitsev il

13
Visio in sé non è uno strumento di modellazione UML. Se si desidera utilizzare UML 2.0, è necessario trovare un buon Visio Stencil che implementa completamente le specifiche 2.0. Ci sono diversi stencil gratuiti disponibili sul web, potresti provare alcuni di loro :) Ecco uno che sembra buono (non ho provato tutte le funzionalità però) softwarestencils.com/uml
GETah

Esistono altri strumenti UML oltre a Visio. L'architetto aziendale è abbastanza bravo?
Venkat Madhav,

1
@VenkatMadhav Non posso davvero dirlo. Non l'ho mai usato al massimo della potenza, ma dalla lettura che ho trovato su Google, dovrebbe essere abbastanza buono
GETah

@Venkat Personalmente sono un fan del paradigma visivo. ( visual-paradigm.com )
Cody Poll

35

Se incolli

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

su https://www.zenuml.com . Genererà un diagramma per te.Diagramma di sequenza if / else


@ Gholamali-Irani hai provato l'estensione di Chrome?
Xiao Peng - ZenUML.com il

Se lo è A.do(int condition)- If .. else ... else, non può succedere tutto come risultato di una chiamata. Il flusso dipende dall'argomento della condizione. Sarebbe bello se ZenUML potesse disegnarlo. Sarebbero tre chiamate ordinate in tempo.
Chef Gladiator,

@ChefGladiator Non sono sicuro di capire cosa intendi. Potresti aggiungere un pseudo codice qui? Oppure puoi indicarmi nel sito.
Xiao Peng - ZenUML.com,

Certo, ecco il codice: wandbox.org/permlink/PURdGJc8YxJmpUh7 - ci sono tre chiamate necessarie per soddisfare tutte le condizioni. La sequenza UML dovrebbe mostrare tre chiamate, non una.
Chef Gladiator,

Naturalmente, i diagrammi di attività sono meglio per mostrare l'algoritmo interno /
Chef Gladiator,

2

Molto semplice, usando il frammento Alt

Facciamo un esempio del diagramma di sequenza per un bancomat. Diciamo qui che vuoi

Se la scheda inserita è valida, quindi richiedere "Enter Pin" .... ELSE prompt "Invalid Pin"

Quindi ecco il diagramma di sequenza per lo stesso

Diagramma di sequenza del bancomat

Spero che questo ti aiuti!


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.