ABJ Informática
Home ADS
00:00:00

Modelagem de Sistemas (UML)

Engenharia de Software e Modelagem

Representar visual e textualmente a estrutura e o comportamento do sistema — comunicando arquitetura, fluxos e responsabilidades entre equipe e stakeholders.

O que é

Diagramas mais usados

Exemplo visual — diagrama de casos de uso

Figura 1 — Casos de uso do Sistema de Atividades (notação UML simplificada).

Quando usar cada diagrama

Boas práticas

Modelo textual — especificação de caso de uso

────────────────────────────────────────────────────────────
CASO DE USO
────────────────────────────────────────────────────────────

ID:              [CU-000]
Nome:            [verbo + objeto, ex.: Registrar atividade]
Atores:          [primário: quem inicia] | [secundários: sistemas externos]
Prioridade:      [Alta | Média | Baixa]
RF relacionados: [RF-000, RF-001]

Resumo:
  [Uma frase: o que o sistema oferece ao ator]

Pré-condições:
  - [condição 1]

Gatilho:
  - [evento que inicia o caso de uso]

Fluxo principal:
  1. [ator] [ação]
  2. Sistema [resposta/validação]
  3. ...
  N. Sistema encerra com [resultado]

Fluxos alternativos:
  A1. No passo [N], se [condição]:
      A1.1. Sistema [comportamento alternativo]
      A1.2. Retorna ao passo [M] ou encerra.

Fluxos de exceção:
  E1. No passo [N], se [falha]:
      E1.1. Sistema informa [mensagem]
      E1.2. [registra log / rollback / encerra]

Pós-condições (sucesso):
  - [estado garantido]

Regras de negócio:
  - [RN-000]: [texto]

────────────────────────────────────────────────────────────
EXEMPLO PREENCHIDO
────────────────────────────────────────────────────────────

ID:              CU-004
Nome:            Exportar relatório de atividades em PDF
Atores:          Gestor (primário) | Serviço de auditoria (secundário)
Prioridade:      Média
RF relacionados: RF-012

Resumo:
  Permitir que o gestor baixe um PDF com atividades do período selecionado.

Pré-condições:
  - Gestor autenticado com permissão de exportação.
  - Consulta de atividades já exibida na tela.

Gatilho:
  - Gestor aciona o botão “Exportar PDF”.

Fluxo principal:
  1. Gestor confirma período e filtros.
  2. Sistema valida intervalo (máx. 90 dias — RN-004).
  3. Sistema gera PDF no servidor.
  4. Sistema registra log de auditoria (usuário, filtros, timestamp).
  5. Sistema disponibiliza download ao gestor.

Fluxos alternativos:
  A1. No passo 3, se não houver registros:
      A1.1. Sistema exibe “Nenhum dado no período”.
      A1.2. Encerra sem gerar arquivo.

Fluxos de exceção:
  E1. No passo 3, se falha na geração:
      E1.1. Sistema exibe mensagem genérica de erro.
      E1.2. Sistema registra incidente técnico e encerra.

Pós-condições (sucesso):
  - PDF entregue; evento de auditoria persistido.

Regras de negócio:
  - RN-004: Período máximo de 90 dias corridos.

Modelo textual — diagrama de classes (domínio)

────────────────────────────────────────────────────────────
DIAGRAMA DE CLASSES — NOTAÇÃO TEXTUAL
────────────────────────────────────────────────────────────

Pacote / contexto: [nome do módulo ou bounded context]

Classe: [NomeEntidade]
  <<stereótipo>>     [opcional: Entity, ValueObject, Service]
  Descrição:         [papel da classe no domínio]
  Atributos:
    - [nome]: [tipo]  [multiplicidade, ex.: 1..1, 0..*]
  Métodos (opcional):
    + [nome]([parâmetros]): [retorno]
  Invariantes / regras:
    - [regra que sempre deve valer]

Relacionamentos:
  [ClasseA] ──[associação|agregação|composição]──> [ClasseB]
    multiplicidade: [1] ── [0..*]
    papel/navegabilidade: [opcional]
    atributo de ligação: [quando aplicável]

Enumeração: [NomeStatus]
  Valores: [valor1, valor2, valor3]

────────────────────────────────────────────────────────────
EXEMPLO PREENCHIDO
────────────────────────────────────────────────────────────

Pacote / contexto: Gestão de atividades

Classe: Atividade
  <<Entity>>
  Descrição: Registro de uma ação operacional rastreável
  Atributos:
    - id: UUID (1..1)
    - dataHora: DateTime (1..1)
    - descricao: String (1..1)
    - status: StatusAtividade (1..1)
  Métodos:
    + cancelar(motivo: String): void
  Invariantes:
    - dataHora não pode ser futura em relação ao servidor

Classe: Usuario
  <<Entity>>
  Atributos:
    - id: UUID (1..1)
    - nome: String (1..1)
    - perfil: PerfilUsuario (1..1)

Enumeração: StatusAtividade
  Valores: REGISTRADA, CONFERIDA, CANCELADA

Relacionamentos:
  Usuario ──associação──> Atividade
    multiplicidade: 1 ── 0..*
    papel: responsável pelo registro
  Atividade ──> StatusAtividade (atributo status)

Modelo textual — diagrama de sequência

────────────────────────────────────────────────────────────
DIAGRAMA DE SEQUÊNCIA — NOTAÇÃO TEXTUAL
────────────────────────────────────────────────────────────

ID:              [SEQ-000]
Nome do fluxo:   [ex.: CU-004 — Exportar PDF]
Participantes:   [Ator/Tela], [Controller/API], [Serviço], [Repositório], [Sistema externo]

Legenda:
  ->  chamada síncrona
  -->> retorno
  alt [condição] / opt [opcional] / loop [condição de repetição]

Sequência:
  1. [ParticipanteA] -> [ParticipanteB]: [mensagem/método(dados)]
  2. [ParticipanteB] --> [ParticipanteA]: [retorno]

  alt [condição verdadeira]
    2a. ...
  else [outra condição]
    2b. ...
  end

  opt [condição opcional]
    3. ...
  end

Notas:
  - Tempo máximo / SLA: [se RNF aplicável]
  - RF/RNF: [referências]

────────────────────────────────────────────────────────────
EXEMPLO PREENCHIDO
────────────────────────────────────────────────────────────

ID:              SEQ-012
Nome do fluxo:   CU-004 — Exportar relatório PDF
Participantes:   TelaConsulta, ApiAtividades, PdfService, AuditLog, BancoDados
RF/RNF:          RF-012, RNF-005 (consulta), política de auditoria

Sequência:
  1. TelaConsulta -> ApiAtividades: GET /api/atividades?de=&ate=&filtros
  2. ApiAtividades -> BancoDados: buscarRegistros(filtros)
  3. BancoDados --> ApiAtividades: lista
  4. ApiAtividades --> TelaConsulta: 200 OK + JSON

  5. TelaConsulta -> ApiAtividades: POST /api/atividades/exportar-pdf
  6. ApiAtividades -> ApiAtividades: validarIntervalo (RN-004)

  alt intervalo inválido
    6a. ApiAtividades --> TelaConsulta: 400 + mensagem de validação
  else sem registros
    6b. ApiAtividades --> TelaConsulta: 404 + "Nenhum dado no período"
  else sucesso
    7. ApiAtividades -> PdfService: gerar(lista, metadados)
    8. PdfService --> ApiAtividades: bytes PDF
    9. ApiAtividades -> AuditLog: registrar(usuario, filtros, timestamp)
    10. AuditLog -> BancoDados: insert(log)
    11. ApiAtividades --> TelaConsulta: 200 + URL/download PDF
  end

Notas:
  - Passos 1–4 podem reutilizar consulta já carregada na tela (otimização).
  - Falha em PdfService: retorno 500 + log técnico (ver CU-004 E1).

Vídeo explicativo

Abrir no YouTube
← Voltar aos tópicos