Início

Software Design

UA13 — Diagrama de Sequência

O diagrama de sequência descreve as interações entre objetos em termos de troca de mensagens ao longo do tempo. Também chamado de diagrama de eventos — mostra quem chama quem, em que ordem, e permite prever como o sistema se comportará em um cenário específico.

Linhas de Vida (Lifelines)

A linha de vida (lifeline) é um elemento nomeado que representa um participante individual na interação. É exibida como uma caixa no topo (com o nome do objeto/ator) seguida de uma linha vertical tracejada. Representa apenas uma entidade por vez — se o elemento tiver multiplicidade, a lifeline representa um representante arbitrário.

Tipos de cabeça de lifeline: objeto (retângulo), ator (boneco), Boundary (fronteira — View), Control (controle — Controller), Entity (entidade — Model).

A Quarta Dimensão: Mapeando o Tempo
Eixo X = participantes simultâneos; eixo Y = progressão temporal

Tipos de Mensagem

TipoSetaCaracterística
SíncronaLinha sólida, ponta sólidaRequer resposta antes de continuar. Aguarda retorno.
AssíncronaLinha sólida, ponta abertaNão aguarda resposta. Continua processando. Usada em multithreading e middleware.
Retorno/RespostaLinha tracejada, ponta abertaValor retornado ao chamador após a execução.
Self (auto-delegação)Flecha em U voltada para siObjeto envia mensagem para si mesmo.
CriaçãoLinha tracejada, ponta aberta → retânguloCria um novo objeto. Estereótipo «create».
DestruiçãoSeta com X no finalDestrói o objeto. O X marca o fim da lifeline.
EncontradaSeta de ponto preenchido para lifelineEnviada de um remetente desconhecido.
PerdidaSeta de lifeline para ponto preenchidoEnviada para um destinatário desconhecido.
O Dicionário de Comunicação Dinâmica
Síncrona, assíncrona, retorno, create e destroy — a gramática das mensagens

Focos de Controle

O foco de controle (caixa de ativação) é um retângulo estreito desenhado sobre a lifeline, indicando o período em que o objeto está participando ativamente do processo. Chamadas aninhadas geram focos de controle sobrepostos.

Fragmentos Combinados

Permitem adicionar lógica processual ao diagrama: uma ou mais sequências incluídas em uma moldura com execução em circunstâncias específicas.

FragmentoSignificadoEquivalente no código
[alt]Alternativa — executa um entre vários ramos condicionaisif / else if / else
[opt]Opcional — executa apenas se condição verdadeiraif sem else
[loop]Repetiçãofor / while
[par]Paralelo — processamento simultâneoThread / async
[break]Sequência alternativa em vez de todo o resto do diagramabreak / return antecipado
[neg]Sequência inválida / proibida
[critical]Seção crítica — não pode ser interrompidasynchronized / mutex
[assert]Sequências não mostradas são inválidasassertion
Fragmentos Combinados: Programação Visual
loop, alt e opt — lógica processual expressa visualmente no diagrama

Arquitetura em Camadas no Diagrama de Sequência

Sistemas modernos são organizados em camadas. O diagrama de sequência expressa essas camadas por meio dos tipos de lifeline:

Tipo de LifelineCamada MVCResponsabilidade
Boundary (fronteira)ViewInterface com o usuário
Control (controle)ControllerRecebe requisições; coordena Model e View
Entity (entidade)ModelAcesso a dados, lógica de negócio

Importante: no MVC, as requisições chegam ao Controller (não à View). O Controller solicita dados ao Model, que retorna os dados, e então o Controller envia para a View formatar o output.

Na Prática: O Padrão MVC em Tempo Real
Diagrama de sequência completo — Usuário → View → Controller → Model

Passos para criar um diagrama de sequência

  1. Escolher um caso de uso.
  2. Identificar os objetos que fazem parte da interação.
  3. Identificar o objeto que começa a interação.
  4. Identificar as mensagens trocadas entre os objetos.
  5. Identificar a sequência dessas mensagens.

Pré-requisitos: casos de uso e diagrama de classes previamente elaborados — os métodos, atributos e classes já definidos facilitam muito a criação.

Como ler um diagrama de sequência

Leia de cima para baixo (ordem temporal). Setas sólidas = chamadas. Setas tracejadas = retornos. Retângulos sobre as lifelines = período de execução. A largura do tempo flui para baixo — mensagens mais abaixo ocorrem mais tarde.

Práticas Modernas — Diagrama de Sequência

  • Mermaid sequenceDiagram e PlantUML permitem criar diagramas de sequência a partir de texto — versionados em Git e renderizados em GitHub/GitLab. Substituem o uso de ferramentas gráficas.
  • OpenAPI (Swagger) documenta APIs REST com exemplos de request/response — é o “diagrama de sequência” da comunicação entre microsserviços. Ferramentas geram código e testes a partir do contrato.
  • AsyncAPI é o equivalente do OpenAPI para sistemas assíncronos (Kafka, RabbitMQ, WebSockets) — descreve os eventos e mensagens trocadas entre produtores e consumidores.
  • Distributed Tracing (Jaeger, Zipkin, Datadog APM) gera diagramas de sequência ao vivo a partir do tráfego real do sistema em produção — mais fiel que qualquer diagrama manual.

Dicas para a Prova

  • Linha de vida (lifeline) = participante individual na interação (não mensagem, não foco de controle, não fragmento).
  • Mensagem assíncrona = não precisa de resposta para a interação continuar.
  • Fragmento que permite processamento simultâneo = [par].
  • No modelo MVC, o objeto do tipo Boundary representa a camada View.
  • Passos para criar: 1-Escolher caso de uso; 2-Identificar objetos; 3-Identificar quem inicia; 4-Identificar mensagens; 5-Identificar sequência.

Referências bibliográficas desta UA

  • LEDUR, C.L. Análise e Projeto de Sistemas, 2017.
  • FOWLER, M. UML Distilled, 3ª ed., 2003.
  • OBJECT MANAGEMENT GROUP. UML Superstructure Specification 2.4.1, 2011.