de_DEen_USes_ESfa_IRfr_FRid_IDjapl_PLpt_PTru_RUvizh_CNzh_TW

Diagrama de Sequência UML: Visualização do Tempo e da Interação

O Diagrama de Sequência UML é uma ferramenta essencial para compreender o comportamento dinâmico de um sistema. Ele modela como os objetos interagem entre si e a ordem em que essas interações ocorrem, enfatizando ofluxo ordenado por tempo de mensagens. É fundamental para definir casos de uso, documentar chamadas de API e rastrear fluxos de transações complexos.

Este tutorial irá guiá-lo pelos elementos fundamentais e técnicas de modelagem do Diagrama de Sequência.

Estrutura e Propósito Fundamentais

Um Diagrama de Sequência é organizado ao longo de dois eixos:

  1. Eixo Horizontal: Mostra os participantes Objetos (ou atores, classes e componentes).
  2. Eixo Vertical (Eixo do Tempo): Representa o fluxo do tempo, movendo-se para baixo. As mensagens enviadas mais abaixo no diagrama ocorrem mais tarde na sequência.

Axis-of-sequence-diagram

O propósito é responder à pergunta: “Neste cenário específico (caso de uso), em que ordem esses objetos trocam informações para alcançar o resultado desejado?”

Elementos Fundamentais de um Diagrama de Sequência

Para modelar uma sequência, você precisa de três elementos principais: Linhas de Vida, Mensagens e Barras de Ativação.

A. Linhas de Vida (Participantes)

Uma Linha de Vida representa um único participante—um objeto, instância ou classe—na interação.

  • Notação: Uma caixa retangular no topo do diagrama contendo o nome do objeto, com uma linha tracejada vertical estendendo-se para baixo.
  • Sintaxe:
    • NomeParticipante (se o objeto for uma instância, por exemplo, usuário)
    • NomeInstância: NomeClasse (por exemplo, authService: AuthenticationService)
  • Propósito: A linha tracejada indica a existência do participante ao longo do tempo dentro do escopo da sequência.

lifeline

B. Mensagens (Interação)

As mensagens são as setas horizontais desenhadas entre as linhas de vida. Elas representam a comunicação entre objetos, como chamadas de métodos, sinais ou solicitações de API.

Messages-(Interaction)

Tipos de Mensagens:

Tipo de Mensagem Notação Descrição
Chamada Síncrona Linha contínua com ponta de seta preenchida O remetente aguarda uma resposta antes de continuar. Isso inicia um Barra de Ativação na linha de vida do destinatário.
Resposta/Retorno Linha tracejada com ponta de seta aberta A resposta a uma chamada síncrona, indicando a devolução do controle ao remetente. Isso geralmente fecha a Barra de Ativação.
Mensagem Assíncrona Linha contínua com ponta de seta aberta O remetente não espera por uma resposta e continua sua própria execução imediatamente. Comum em arquiteturas orientadas a eventos.
Chamada Auto Seta que retorna para a mesma linha de vida Um objeto chamando um dos seus próprios métodos.
Mensagem Recebida Seta que começa em um ponto final e atinge uma linha de vida O remetente da mensagem é desconhecido ou fora do escopo do diagrama (por exemplo, um gatilho externo).

C. Barras de Ativação (Especificação de Execução)

A Barra de Ativação (também chamada de foco de controle) é um retângulo vertical fino desenhado no topo de uma linha de vida.

  • Notação: Um retângulo vertical contínuo na linha de vida.
  • Propósito: Indica o período durante o qual um objeto está ativamente executando uma operação (ou seja, seu método está em execução) ou aguardando uma resposta síncrona. Inicia quando uma mensagem síncrona é recebida e termina quando a mensagem de resposta é enviada.

Modelagem de Lógica e Fluxo de Controle

Para modelar lógica de negócios complexa, você usa fragmentos (ou caixas) para delimitar seções do diagrama.

A. Fragmentos Combinados

Os fragmentos combinados permitem que você modele lógica condicional, repetição e etapas opcionais. Os fragmentos mais comuns incluem:

  1. Alternativa (alt): Usado para if-else lógica. O fragmento é dividido por uma linha tracejada, e cada seção inclui uma condição (um “guarda”) entre colchetes. Apenas um caminho pode ser percorrido.
    • Exemplo: [se as credenciais do usuário forem válidas] e [caso contrário / credenciais inválidas].
  2. Opção (opt): Usado para um if declaração. A interação dentro do fragmento é opcional e só é executada se a condição (guarda) for verdadeira.
    • Exemplo: [se o usuário tiver itens no carrinho].
  3. Laço (loop): Usado para repetição. O guarda especifica a condição para iteração (por exemplo, [para cada item] ou [enquanto (tentativas < 3)]).
  4. Referência (ref): Usado para modularizar o diagrama ao referenciar uma sequência de interação definida em outro diagrama de sequência separado. Isso evita que os diagramas fiquem muito lotados.
  5. Crítico (crit): Usado para indicar uma seção que não deve ser interrompida, frequentemente usado para modelar processos concorrentes.

Exemplo de Modelagem Passo a Passo

Vamos modelar um processo simplificadoProcesso de Finalização da Compra do Usuário usando os elementos principais:

Passo Ação Tipo de Mensagem
1. Usuário clica em “Finalizar Compra.” Chamada Síncrona
2. Frontend valida o carrinho. Chamada Auto (no Frontend)
3. Frontend solicita o processamento do pagamento. Chamada Síncrona
4. Gateway de Pagamento verifica os fundos. Chamada Síncrona
5. Gateway de Pagamento retorna “Sucesso.” Mensagem de Retorno
6. Frontend envia uma mensagem assíncrona ao serviço de Estoque para reduzir o estoque. Mensagem Assíncrona
7. Frontend envia uma mensagem síncrona ao serviço de Pedidos para finalizar o pedido. Chamada Síncrona
8. O serviço de pedidos retorna “ID do Pedido.” Mensagem de Retorno
9. O frontend exibe uma página de confirmação. Mensagem de Retorno (para o Usuário)

Modelagem de Lógica (Fragmento Alternativo)

Para lidar com falhas, usamos umAlternativa fragmento:

  1. Coloque oVerificação do Gateway de Pagamento (Etapa 4 e 5) dentro de umalt fragmento.
  2. A primeira seção é protegida por[Sucesso]. Esta seção contém as Etapas 6, 7, 8 e 9.
  3. A segunda seção, dividida pela linha tracejada, é protegida por[Falha]. Esta seção contém uma nova mensagem síncrona:paymentService -> frontend: retornar "Pagamento Falhou" e o frontend exibe uma página de erro.

Resumo das Melhores Práticas para Diagramas de Sequência

  • Mantenha-o Focado: Um único Diagrama de Sequência deve normalmente modelar um único caso de uso ou uma única operação atômica (por exemplo, “Login”, “Adicionar Item ao Carrinho”). UseFragmentos de Referência para sub-processos.
  • Rotule as Mensagens Claramente: Use frases verbais para mensagens, refletindo nomes de métodos ou pontos finais da API (por exemplo,processPayment(amount, token)).
  • Identifique os Participantes Corretamente: Distinga entre o Ator (entidade externa) e o Objeto (componente ou instância do sistema interno).
  • O Tempo Flui para Baixo: Certifique-se de que as mensagens sejam consistentemente ordenadas de cima para baixo.
  • Use Fragmentos para Controle: Evite desenhar nós de decisão complexos ou laços dentro do próprio fluxo de mensagens; use alt, opt, e loop fragmentos.

Para obter mais detalhes sobre UML e seus métodos de visualização impulsionados por IA, visite nosso centro de recursos do UML.

This post is also available in Deutsch, English, Español, فارسی, Français, Bahasa Indonesia, 日本語, Polski, Ру́сский, Việt Nam, 简体中文 and 繁體中文.