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 painelCriaçã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:
| Fragmento | Descrição |
|---|---|
alt | Alternativa — equivalente a if / else |
opt | Opcional — executado somente se a condição for verdadeira |
loop | Repetição — equivalente a um for ou while |
par | Paralelo — executa fragmentos simultaneamente |
ref | Referê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
refpara reutilizar sub-fluxos comuns em vez de repeti-los. - Nomeie as mensagens com verbos claros:
criar,validar,retornar,publicar.
