Como mostrar a condição "se" em um diagrama de seqüência?

194

Fiquei me perguntando, como " if" podemos representar a declaração em um diagrama de seqüência?

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

Pode ser representado? A coisa é ... no meu código, uma quantidade razoável de condições é verificada para determinar uma variedade de ações. Se eu vou mostrar as ações, gostaria de declarar explicitamente que as ações são causadas por eventos específicos.

Se possível, crie uma representação de imagem de uma solução.

James Raitsev
fonte
1
Sei que essa pergunta é antiga e ainda não fiz uma pesquisa, mas me fez pensar se mostrar ramificação é uma boa ideia para diagramas de sequência. Eu sempre pensei que as condições para a sequência eram explicitamente descritas no cenário e, portanto, nenhuma ramificação ocorreu durante a sequência. Caminhos alternativos foram tratados descrevendo uma variante do cenário que tinha seu próprio diagrama de sequência. É um pouco subjetivo, então talvez eu deva publicá-lo no Meta ou possivelmente em Engenharia de Software?
55519 Kelly S. French

Respostas:

285

Caso contrário, também chamadas alternativas em termos de UML podem ser representadas em diagramas de sequência. Aqui está um link onde você pode encontrar alguns recursos interessantes sobre o assunto http://www.ibm.com/developerworks/rational/library/3101.html

ramificando com alt

GETah
fonte
No Visio, é Altchamado outra coisa? Eu não consigo encontrá-lo
James Raitsev
13
O Visio por si só não é uma ferramenta de modelagem UML. Se você deseja usar o UML 2.0, é necessário encontrar um bom Visencil Stencil que implemente totalmente as especificações 2.0. Existem vários stencils gratuitos disponíveis na web, você pode querer dar alguns deles uma tentativa :) Aqui está um que parece ser bom (não tentar todas as características embora) softwarestencils.com/uml
Getah
Existem outras ferramentas UML além do Visio. O arquiteto corporativo é bom o suficiente?
Venkat Madhav 12/12
1
@VenkatMadhav Eu realmente não posso dizer. Eu nunca usei-o para o seu pleno poder, mas a partir da leitura eu achei no google, ele deve ser muito bom
Getah
@ Venkat Eu sou pessoalmente um fã de paradigma visual. ( visual-paradigm.com )
Cody Poll
35

Se você colar

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

para https://www.zenuml.com . Isso irá gerar um diagrama para você.Diagrama de sequência If / else

Xiao Peng - ZenUML.com
fonte
@ Gholamali-Irani você já tentou a extensão do Chrome?
Xiao Peng - ZenUML.com
Se for A.do(int condition)- Se .. else ... else, tudo não pode acontecer como resultado de uma chamada. O fluxo depende do argumento da condição. Seria adorável se o ZenUML pudesse desenhar isso. Seriam três chamadas ordenadas a tempo.
Chef Gladiator
@ChefGladiator Não sei se entendi o que você quer dizer. Você poderia adicionar algum pseudo-código aqui? Ou você pode me apontar no site.
Xiao Peng - ZenUML.com
Claro, aqui está o código: wandbox.org/permlink/PURdGJc8YxJmpUh7 - são necessárias três chamadas para que todas as condições sejam atendidas. A sequência UML deve mostrar três chamadas, não uma.
Chef Gladiator
Claro, diagramas de atividades são melhores para mostrar algoritmo internos /
Chef Gladiador
2

Muito simples, usando o fragmento Alt

Vamos dar um exemplo de diagrama de sequência para uma máquina ATM. Digamos aqui que você deseja

Se o cartão inserido for válido, será solicitado o prompt "Enter Pin" .... O prompt ELSE "Pin inválido"

Então aqui está o diagrama de sequência para o mesmo

Diagrama de sequência da máquina ATM

Espero que isto ajude!

vishwampandya
fonte