Jak pokazać warunek „if” na schemacie sekwencji?

195

Zastanawiałem się, jak można reprezentować ifwyrażenie na schemacie sekwencji?

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

Czy może być w ogóle reprezentowany? Chodzi o to, że ... w moim kodzie sprawdzana jest odpowiednia ilość warunków, aby określić różne działania. Jeśli mam zamiar pokazać działania, chciałbym wyraźnie stwierdzić, że działania są spowodowane przez określone zdarzenia.

Jeśli to możliwe, utwórz obrazową reprezentację rozwiązania.

James Raitsev
źródło
1
Wiem, że to pytanie jest stare i jeszcze nie przeprowadziłem wyszukiwania, ale zastanawiałem się, czy pokazanie rozgałęzienia jest nawet dobrym pomysłem na schematy sekwencji. Zawsze myślałem, że warunki dla sekwencji zostały wyraźnie opisane w scenariuszu, a zatem podczas sekwencji nie nastąpiło rozgałęzienie. Obsługiwano alternatywne ścieżki, opisując wariant scenariusza, który miał własny schemat sekwencji. Jest to nieco subiektywne, więc może powinienem opublikować go na Meta lub inżynierii oprogramowania?
Kelly S. French

Odpowiedzi:

287

Jeśli inny warunek, zwany również alternatywami w terminologii UML, może być rzeczywiście przedstawiony na diagramach sekwencji. Oto link, w którym można znaleźć ładne zasoby na ten temat http://www.ibm.com/developerworks/rational/library/3101.html

rozgałęzienie z alt

GETah
źródło
W Visio Altnazywa się coś innego? Nie mogę tego znaleźć
James Raitsev,
13
Visio samo w sobie nie jest narzędziem do modelowania UML. Jeśli chcesz korzystać z UML 2.0, musisz znaleźć dobry szablon Visio, który w pełni implementuje specyfikacje 2.0. W Internecie dostępnych jest kilka bezpłatnych szablonów, możesz spróbować wypróbować niektóre z nich :) Oto taki, który wygląda dobrze (nie wypróbowałem wszystkich funkcji) softwarestencils.com/uml
GETah
Czy są jakieś inne narzędzia UML oprócz Visio. Czy architekt korporacyjny jest wystarczająco dobry?
Venkat Madhav,
1
@VenkatMadhav Naprawdę nie mogę powiedzieć. Nigdy nie wykorzystałem go w pełni, ale z lektury, którą znalazłem w google, powinno być całkiem nieźle
GETah 12.12.13
@Venkat Jestem osobiście fanem paradygmatu wizualnego. ( visual-paradigm.com )
Ankieta Cody
35

Jeśli wkleisz

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

na https://www.zenuml.com . Wygeneruje dla Ciebie schemat.Schemat sekwencji if / else

Xiao Peng - ZenUML.com
źródło
@ Gholamali-Irani próbowałeś rozszerzenia do Chrome?
Xiao Peng - ZenUML.com,
Jeśli tak jest A.do(int condition)- Jeśli ... inaczej ... inaczej, nie wszystko może się zdarzyć w wyniku jednego połączenia. Przepływ zależy od argumentu warunku. Byłoby wspaniale, gdyby ZenUML mógł to narysować. Będą to trzy połączenia zamówione na czas.
Szef kuchni Gladiator
@ChefGladiator Nie jestem pewien, czy rozumiem, co masz na myśli. Czy mógłbyś tutaj dodać pseudo kod? Lub możesz skierować mnie na stronę.
Xiao Peng - ZenUML.com
Jasne, oto kod: wandbox.org/permlink/PURdGJc8YxJmpUh7 - do spełnienia wszystkich warunków wymagane są trzy wywołania. Sekwencja UML powinna pokazywać trzy wywołania, a nie jedno.
Szef kuchni Gladiator
Oczywiście diagramy aktywności lepiej pokazują wewnętrzne elementy algorytmu /
Szef kuchni Gladiator
2

Bardzo proste, używając fragmentu Alt

Weźmy przykład schematu sekwencji dla bankomatu. Powiedzmy, że chcesz

JEŻELI włożona karta jest ważna, a następnie monit „Enter Pin” .... ELSE monit „Invalid Pin”

Oto schemat sekwencji dla tego samego

Schemat sekwencji maszyny bankomatowej

Mam nadzieję że to pomoże!

vishwampandya
źródło