Pedro's dev blog

Diagrama de Sequência UML: Representando Interações no Tempo

Published on
Published on
/3 mins read/---

Diagrama de Sequência UML

Um diagrama de sequência é um tipo de diagrama de interação UML que mostra como os objetos colaboram em um cenário específico ao longo do tempo. Ele enfatiza a ordem cronológica das mensagens trocadas entre participantes.

Elementos Principais

Linhas de Vida (Lifelines)

Cada participante (objeto, ator ou componente) é representado por uma caixa com nome no topo e uma linha vertical pontilhada que se estende para baixo — essa é a linha de vida.

+----------+       +----------+       +----------+
|  Cliente |       |  Servidor |       | Banco DB |
+----------+       +----------+       +----------+
     |                   |                   |
     |                   |                   |

Mensagens

As mensagens entre objetos são representadas por setas horizontais entre as linhas de vida:

  • Mensagem síncrona (seta com ponta preenchida -->>): o remetente aguarda a resposta.
  • Mensagem assíncrona (seta com ponta aberta ->>): o remetente não aguarda.
  • Mensagem de retorno (seta tracejada -->>): resposta de um método.
  • Autochamada (seta que vai e volta na mesma linha de vida): o objeto chama a si mesmo.

A ordem cronológica é lida de cima para baixo.

Barras de Ativação (Activation Bars)

Um retângulo estreito sobre a linha de vida indica o período em que o objeto está ativo (executando alguma operação).

Exemplo: Login de Usuário

sequenceDiagram
    actor Usuario
    participant Frontend
    participant AuthService
    participant Database
 
    Usuario->>Frontend: Preenche formulário e clica em "Entrar"
    Frontend->>AuthService: POST /login (email, senha)
    AuthService->>Database: SELECT * FROM users WHERE email = ?
    Database-->>AuthService: Retorna dados do usuário
    AuthService-->>Frontend: JWT token (200 OK)
    Frontend-->>Usuario: Redireciona para o painel

Criação e Destruição de Objetos

Objetos podem ser criados durante a sequência. O novo objeto aparece com uma seta apontando diretamente para sua caixa (não para o topo do diagrama):

sequenceDiagram
    participant A as Controlador
    participant B as Pedido
 
    A->>B: <<create>>
    Note over B: Objeto criado dinamicamente
    A->>B: adicionarItem(produto)
    B-->>A: ok
    A->>B: <<destroy>>

Fragmentos Combinados

Diagramas de sequência suportam estruturas de controle via fragmentos:

FragmentoDescrição
altAlternativa — equivalente a if / else
optOpcional — executado somente se a condição for verdadeira
loopRepetição — equivalente a um for ou while
parParalelo — executa fragmentos simultaneamente
refReferência — chama outro diagrama de sequência

Exemplo com alt e opt

sequenceDiagram
    participant Cliente
    participant API
    participant Cache
 
    Cliente->>API: GET /produto/42
    API->>Cache: buscar(42)
 
    alt cache hit
        Cache-->>API: Produto encontrado
    else cache miss
        API->>API: buscar no banco
        API->>Cache: salvar(42, produto)
    end
 
    opt produto em promoção
        API->>API: aplicar desconto
    end
 
    API-->>Cliente: Retorna produto (200 OK)

Quando Usar

  • Documentar fluxos de autenticação, chamadas de API, ou transações.
  • Comunicar como microserviços interagem entre si.
  • Revisar ou planejar a lógica de um caso de uso específico.
  • Depurar problemas de integração entre componentes.

Boas Práticas

  • Mantenha cada diagrama focado em um único cenário ou caso de uso.
  • Evite incluir muitos participantes — diagramas com mais de 5-6 linhas de vida ficam difíceis de ler.
  • Use ref para reutilizar sub-fluxos comuns em vez de repeti-los.
  • Nomeie as mensagens com verbos claros: criar, validar, retornar, publicar.

Referências

ConnectionsFull graph →