Diagramas de Sequência UML  são diagramas de interação que detalham como as operações são realizadas. Eles capturam a interação entre objetos no contexto de uma colaboração. Os Diagramas de Sequência são focados no tempo e mostram a ordem da interação visualmente, usando o eixo vertical do diagrama para representar o tempo, quais mensagens são enviadas e quando.

O que é um diagrama de sequência?

Um diagrama de sequência, também conhecido como diagrama de sequência, diagrama sequencial ou diagrama sequencial, é um diagrama de interação UML. Ele mostra a colaboração dinâmica entre vários objetos, descrevendo a ordem temporal na qual as mensagens são enviadas entre eles.

Na UML, um objeto em um diagrama de seqüência é desenhado como um retângulo contendo o nome do objeto sublinhado. Um objeto pode ser nomeado de três maneiras: o nome do objeto, o nome do objeto e sua classe ou apenas o nome da classe (objeto anônimo). As três maneiras de nomear um objeto são mostradas na Figura abaixo.

EDITAR ESTE DIAGRAMA DE SEQUÊNCIA

Os Objetos do Diagrama de Sequência

  1. Mostre a ordem das interações entre os objetos. Modele o comportamento de interação como passagem de mensagem e mostre a interação entre objetos dinamicamente, descrevendo como as mensagens são enviadas e recebidas entre eles.
  2. Comparado com outros diagramas UML, um diagrama de seqüência temporal coloca mais ênfase na ordem cronológica do comportamento de interação.
  3. Ele pode descrever visualmente o processo de simultaneidade.

Os Elementos do Diagrama de Sequência

1. Ator – Atores do sistema, que podem ser pessoas, máquinas, outros sistemas, subsistemas; usado para representar no diagrama de seqüência temporal.

2. Objeto – Existem três formas de nomear objetos:

  1. Inclui o nome do objeto e o nome da classe, por exemplo: live class: class, no diagrama de série temporal, com “object: class”.
  2. Mostra apenas o nome da classe, ou seja, é um objeto anônimo, por exemplo: :course; no diagrama de temporização, com “:class”.
  3. Mostra apenas o nome do objeto, mas não o nome da turma, por exemplo: professor; no diagrama de temporização, é representado por “objeto”.

Todos os três métodos de nomenclatura estão disponíveis, o que é mais fácil para as pessoas que lêem o gráfico cronológico entenderem, escolha qual deles.

3. A ordem dos objetos

  • A ordem esquerda e direita dos objetos não é importante, mas para fazer um diagrama claro e organizado, os dois princípios a seguir devem ser seguidos: coloque os objetos com interações frequentes o mais próximo possível;
  • Coloque o objeto que inicializa toda a atividade de interação na extremidade esquerda.

linha de vida

Uma linha tracejada que se estende para baixo a partir do ícone do objeto no diagrama de tempo, indicando há quanto tempo o objeto existe.

  • Foco de controle (também conhecido como período de ativação) é o símbolo do período de tempo durante o qual o objeto executará a operação correspondente. Ele pode ser interpretado como um par de colchetes { } na semântica C; representado por um pequeno retângulo. Representa o período durante o qual um elemento está realizando uma operação. A parte superior e inferior do retângulo estão alinhadas com o tempo de início e conclusão, respectivamente.
  • As mensagens são geralmente classificadas como Mensagem Síncrona, Mensagem Assíncrona e Mensagem de Retorno.

Observe que

  • O remetente de uma mensagem passa o controle para o destinatário da mensagem, então para a atividade e espera que o destinatário da mensagem desista ou retorne o controle que é usado para indicar a sincronização.
  • O remetente de uma mensagem passa o sinal para o destinatário da mensagem por meio da mensagem e continua sua atividade sem esperar que o destinatário retorne a mensagem ou controle. O receptor e o remetente de uma mensagem assíncrona estão trabalhando simultaneamente.
  • A mensagem de retorno indica um retorno de uma chamada de procedimento.

 

Mensagens de Criação e Destruição

Os participantes não vivem necessariamente durante toda a duração da interação de um diagrama de sequência. Os participantes podem ser criados e destruídos de acordo com as mensagens que estão sendo passadas.

Uma  mensagem do construtor  cria seu receptor. Os remetentes que já existem no início da interação são colocados na parte superior do diagrama. Os destinos que são criados durante a interação por uma chamada de construtor são colocados automaticamente mais abaixo no diagrama.

Uma  mensagem destruidora  destrói seu receptor. Existem outras maneiras de indicar que um alvo é destruído durante uma interação. Somente quando a destruição de um alvo é definida como ‘depois do destruidor’, você precisa usar um destruidor.

mensagem não instantânea

As mensagens são frequentemente consideradas instantâneas, portanto, o tempo que leva para chegar ao receptor é insignificante. As mensagens são desenhadas como uma seta horizontal. Para indicar que leva um certo tempo até que o receptor realmente receba uma mensagem, uma  seta inclinada é usada .

fragmentos de combinação

Um fragmento de sequência é representado como uma caixa chamada de fragmento combinado, que inclui uma parte da interação no grafo de sequência. O operador de fragmento (no canto superior esquerdo) indica o tipo do fragmento. Os fragmentos interativos permitem agrupar mensagens relacionadas em um diagrama de sequência. Vários tipos de fragmentos predefinidos estão disponíveis, permitindo que você especifique resultados alternativos, mensagens paralelas ou loops.

O fragmento no diagrama de sequência são quadros retangulares desenhados sobre uma parte do diagrama. Eles representam a estrutura condicional que afeta o fluxo de mensagens. Esses quadros são chamados de fragmentos combinados na especificação UML e os contêineres são chamados de operandos de interação. Os quadros são rotulados no canto superior esquerdo. Esse rótulo é chamado de operador de interação em UML.

 

Exemplo – colocando um cenário de pedido

Um membro do navio que deseja fazer um pedido online. Os artigos encomendados serão enviados ao sócio por correio expresso ou correio normal, consoante o seu estatuto de sócio (VIP, sócio regular). Se o membro selecionar a opção de notificação no pedido, a loja enviará uma notificação de confirmação ao membro.

EDITAR ESTE DIAGRAMA DE SEQUÊNCIA

Outro Exemplo: Fazer Pedido

Um diagrama de sequência é um diagrama bidimensional com o eixo horizontal representando objetos e o eixo vertical representando o tempo, onde as mensagens são passadas horizontalmente entre os objetos e dispostas verticalmente em ordem cronológica. O exemplo mostra um diagrama de Sequência com três objetos participantes: Cliente, Pedido e Estoque. Mesmo sem conhecer a notação formalmente, você provavelmente pode ter uma boa ideia do que está acontecendo.

  1. Etapa 1 e 2: o cliente cria um pedido.
  2. Etapa 3: o cliente adiciona itens ao pedido.
  3. Etapa 4, 5: Cada item é verificado quanto à disponibilidade no estoque.
  4. Etapa 6, 7, 8: Se o produto estiver disponível, ele será adicionado ao pedido.
  5. Passo 9 retorno
  6. Etapa 10, 11: salve e destrua a ordem

EDITAR ESTE DIAGRAMA DE SEQUÊNCIA

 

Fragmentos de combinação comumente usados

Os tipos de fragmentos incluem ref, assert, loop, break, alt, opt e neg, ref, sd.

Operador Significado
alternativo Múltiplos fragmentos alternativos: apenas aquele cuja condição for verdadeira será executado.
optar Opcional : o fragmento é executado apenas se a condição fornecida for verdadeira. Equivalente a um alt apenas com um traço.
par Paralelo : cada fragmento é executado em paralelo.
ciclo Loop : o fragmento pode ser executado várias vezes e o guard indica a base da iteração.
crítico Região crítica : o fragmento pode ter apenas uma thread executando-o por vez.
negativo Negativo : o fragmento mostra uma interação inválida.
ref Referência : refere-se a uma interação definida em outro diagrama. O quadro é desenhado para cobrir as linhas de vida envolvidas na interação. Você pode definir parâmetros e um valor de retorno.
SD Diagrama de sequência : usado para cercar um diagrama de sequência inteiro.

Observe que:

  • É possível combinar quadros para capturar, por exemplo, loops ou ramificações.
  • Palavras-chave de fragmentos combinados  : alt, opt, break, par, seq, strict, neg, critical, ignore, consider, assert e loop.
  • As restrições geralmente são usadas para mostrar as restrições de tempo nas mensagens. Eles podem se aplicar ao tempo de uma mensagem ou aos intervalos entre as mensagens.

Exemplos de Fragmentos Combinados

(1) Choice (Alt) – Um fragmento alternativo fornece vários fragmentos alternativos guardados (separados por operandos de interação), ou seja, usado para especificar escolhas mutuamente exclusivas entre duas ou mais sequências de mensagens, equivalente ao clássico if..else…:

EDITAR ESTE DIAGRAMA DE SEQUÊNCIA

(2) Opção (Opt) – Contém uma sequência de possíveis ocorrências ou não ocorrências o que significa que um fragmento opcional só é executado se alguma condição de guarda for verdadeira:

EDITAR ESTE DIAGRAMA DE SEQUÊNCIA

(3) Loop (Loop) – Um loop permite que um fragmento seja repetido até que alguma condição de guarda se torne falsa:

EDITAR ESTE DIAGRAMA DE SEQUÊNCIA

Parar

Uma quebra permite que um loop envolvente seja escapado quando algum guarda se torna verdadeiro:

EDITAR ESTE DIAGRAMA DE SEQUÊNCIA

As quebras são mais comumente usadas para modelar o tratamento de exceções. Este exemplo de diagrama de sequência usa um fragmento de combinação de quebra porque trata a condição de saldo < valor como uma exceção em vez de um fluxo alternativo. Para ler este exemplo, começamos no canto superior esquerdo da sequência e lemos para baixo. Quando a sequência chega ao valor de retorno “saldo”, ela verifica se o saldo é menor que o valor. Se o saldo não for menor que o valor, a próxima mensagem enviada é a mensagem addDebitTransaction e a sequência continua normalmente.

Paralelo

Um fragmento paralelo permite que várias interações sejam executadas em paralelo:

EDITAR ESTE DIAGRAMA DE SEQUÊNCIA

Molduras

Um quadro fornece uma maneira de encapsular um diagrama de seqüência.

EDITAR ESTE DIAGRAMA DE SEQUÊNCIA

Referência (Ref)

Um quadro pode ser referenciado em outro diagrama de sequência:

EDITAR ESTE DIAGRAMA DE SEQUÊNCIA

Protocolos

EDITAR ESTE DIAGRAMA DE SEQUÊNCIA

Colaborações

EDITAR ESTE DIAGRAMA DE SEQUÊNCIA

Cenários

EDITAR ESTE DIAGRAMA DE SEQUÊNCIA

Sinais e Recepções

Um leiloeiro transmite uma proposta de preço para um item para uma sala lotada de licitantes ansiosos. Quando um licitante ouve a proposta, ele decide aceitar o preço ou não.

Em um leilão automatizado, como o leiloeiro fará a transmissão da proposta? Um objeto pode ter operações designadas que devem ser chamadas automaticamente se certos tipos de sinais de transmissão forem recebidos. Esses métodos são chamados de recepções. Sinais são um tipo especial de classe. O nome da recepção geralmente corresponde ao nome do sinal. As recepções são mostradas em um compartimento separado:

EDITAR ESTE DIAGRAMA DE SEQUÊNCIA

Em um diagrama de sequência, podemos representar um sinal como um sinal assíncrono e a recepção como uma invocação de recepção:

EDITAR ESTE DIAGRAMA DE SEQUÊNCIA

Crítico

EDITAR ESTE DIAGRAMA DE SEQUÊNCIA

Outros tipos de fragmentos

  • Rigoroso
  • Afirmar
  • Considerar
  • Ignorar
  • Região
  • Neg

Resumo da Notação do Diagrama de Sequência

Descrição da notação Representação visual
Ator
  • um tipo de papel desempenhado por uma entidade que interage com o sujeito (por exemplo, trocando sinais e dados)
  • externa ao sujeito (ou seja, no sentido de que uma instância de um ator não é parte da instância de seu sujeito correspondente).
  • representam papéis desempenhados por usuários humanos, hardware externo ou outros assuntos.

Observe que:

  • Um ator não representa necessariamente uma entidade física específica, mas meramente um papel particular de alguma entidade
  • Uma pessoa pode desempenhar o papel de vários atores diferentes e, inversamente, um determinado ator pode ser interpretado por várias pessoas diferentes.
Diagrama de Sequência UML: exemplo de ator
linha de vida
  • Uma linha de vida representa um participante individual na interação.
Diagrama de Sequência UML: exemplo de ativação
Ativações
  • Um retângulo fino em uma linha de vida) representa o período durante o qual um elemento está realizando uma operação.
  • A parte superior e inferior do retângulo estão alinhadas com o tempo de início e conclusão, respectivamente
Diagrama de Sequência UML: exemplo de ativação
Mensagem de chamada
  • Uma mensagem define uma comunicação específica entre linhas de vida de uma interação.
  • A mensagem de chamada é um tipo de mensagem que representa uma chamada de operação da linha de vida alvo.
Diagrama de sequência UML: exemplo de mensagem de chamada
Mensagem de retorno
  • Uma mensagem define uma comunicação específica entre linhas de vida de uma interação.
  • A mensagem de retorno é um tipo de mensagem que representa a passagem de informações de volta ao chamador de uma mensagem anterior correspondente.
Diagrama de sequência UML: exemplo de mensagem de retorno
Automensagem
  • Uma mensagem define uma comunicação específica entre linhas de vida de uma interação.
  • Automensagem é um tipo de mensagem que representa a invocação de mensagem da mesma linha de vida.
Diagrama de sequência UML: exemplo de automensagem
Mensagem Recursiva
  • Uma mensagem define uma comunicação específica entre linhas de vida de uma interação.
  • Mensagem recursiva é um tipo de mensagem que representa a invocação de mensagem da mesma linha de vida. Seu alvo aponta para uma ativação acima da ativação de onde a mensagem foi invocada.
Diagrama de Sequência UML: exemplo de mensagem recursiva
Criar mensagem
  • Uma mensagem define uma comunicação específica entre linhas de vida de uma interação.
  • Criar mensagem é um tipo de mensagem que representa a instanciação da linha de vida (alvo).
Diagrama de Sequência UML: exemplo de criação de mensagem
Destruir mensagem
  • Uma mensagem define uma comunicação específica entre linhas de vida de uma interação.
  • A mensagem de destruição é um tipo de mensagem que representa a solicitação de destruição do ciclo de vida da linha de vida de destino.
Diagrama de sequência UML: exemplo de mensagem de destruição
Mensagem de duração
  • Uma mensagem define uma comunicação específica entre linhas de vida de uma interação.
  • A mensagem de duração mostra a distância entre dois instantes de tempo para uma invocação de mensagem.
Diagrama de sequência UML: exemplo de mensagem de duração
ObservaçãoUma nota (comentário) permite anexar vários comentários aos elementos. Um comentário não carrega força semântica, mas pode conter informações úteis para um modelador.