de_DEen_USes_ESfa_IRfr_FRid_IDjapl_PLpt_PTru_RUvizh_CNzh_TW

Um guia prático para os 14 tipos de diagramas UML usando a Ferramenta VPasCode

Os diagramas UML são comumente agrupados em estruturais diagramas, que descrevem de que um sistema é feito, e comportamentais diagramas, que descrevem o que ele faz. Os exemplos abaixo usam um único cenário de loja online para que possam ser comparados e adaptados. O UML 2.5.1 é a especificação formal referenciada aqui.

O PlantUML renderiza muitas notações UML diretamente. Alguns tipos de diagramas especializados — especialmente perfil, estrutura composta, comunicação e visão geral de interação — podem ser expressos usando uma aproximação prática do PlantUML em vez de um renderizador de diagramas dedicado. Os comentários identificam esses casos.

Diagramas estruturais

1. Diagrama de classe

Mostra as classes do sistema, seus dados e operações, e relacionamentos como associação, herança e composição. Use-o para discutir modelos de domínio ou design orientado a objetos.

@startuml
class Cliente {
  +id: String
  +email: String
  +placeOrder(): Pedido
}

class Pedido {
  +number: String
  +status: StatusPedido
  +total(): Dinheiro
}

class LinhaPedido {
  +quantity: int
  +unitPrice: Dinheiro
}

class Produto {
  +sku: String
  +name: String
}

Cliente "1" -- "0..*" Pedido : faz
Pedido "1" *-- "1..*" LinhaPedido : contém
LinhaPedido "*" --> "1" Produto : refere-se a
@enduml

Leia-o: um cliente pode fazer muitos pedidos; um pedido contém uma ou mais linhas; cada linha refere-se a um produto. O losango preenchido indica composição: o pedido é dono de suas linhas.

2. Diagrama de objeto

Mostra instâncias concretas e links em um momento específico no tempo. É útil para ilustrar dados de exemplo ou explicar um modelo de classe com um cenário específico. No PlantUML, use a notação de objeto.

@startuml
object "alice:Cliente" as alice {
  id = C104
  email = [email protected]
}

object "pedido:Pedido" as order {
  number = O9001
  status = PAGO
}

object "linha:LinhaPedido" as line {
  quantity = 2
  unitPrice = 19.99
}

object "caneca:Produto" as mug {
  sku = MUG-01
  name = Caneca de viagem
}

alice -- order
order *-- line
line --> mug
@enduml

3. Diagrama de componente

Mostra partes de software implantáveis ou substituíveis e suas dependências. Use-o para comunicar a arquitetura da aplicação e os limites de integração.

@startuml
component "Loja Web" as web
component "Serviço de Pedidos" as orders
component "Adaptador de Pagamento" as payments
database "Banco de Dados de Pedidos" as db
cloud "Provedor de Pagamento" as provider

web --> orders : REST
orders --> db : SQL
orders --> payments : autorizar
payments --> provider : HTTPS
@enduml

4. Diagrama de estrutura composta

Mostra as partes internas de um classificador — como um componente ou classe — e como essas partes se conectam por meio de portas. É útil quando a colaboração interna é mais importante do que a arquitetura do sistema circundante.

O PlantUML não fornece uma sintaxe dedicada para estrutura composta que seja universalmente suportada. Este esboço no estilo de diagrama de classes transmite as partes e as conexões:

@startuml
allowmixing
skinparam componentStyle rectangle

class Car {
}

package "Car" {
  component "engine : Engine" as engine {
    portout p1
  }

  component "transmission : Transmission" as trans {
    portin p2
    portout p3
  }

  component "wheel : Wheel [4]" as wheels {
    portin p4
  }

  p1 -- p2 : drives
  p3 -- p4 : power
}

@enduml

Trate isto como um esboço estrutural; ele não mostra portas UML formais ou semântica de conectores.

5. Diagrama de implantação

Mapeia artefatos de software ou serviços para nós de hardware e ambientes de execução. Use-o para explicar onde o software é executado e como os nós de tempo de execução se comunicam.

@startuml
node "Dispositivo do cliente" as client {
  artifact "Navegador"
}

node "Nuvem" {
  node "Hospedagem da aplicação" as appHost {
    artifact "API da Loja"
  }
  database "Banco de dados de pedidos" as db
}

cloud "Provedor de pagamento externo" as pay

client --> appHost : HTTPS
appHost --> db : SQL
appHost --> pay : HTTPS
@enduml

6. Diagrama de pacotes

Agrupar elementos do modelo em namespaces ou camadas e mostrar dependências entre esses grupos. Use-o para explicar a organização do código e a direção arquitetural.

@startuml
package "store.web" {
  class CheckoutController
}

package "store.application" {
  class PlaceOrder
}

package "store.domain" {
  class Order
  class Product
}

package "store.persistence" {
  class OrderRepository
}

CheckoutController ..> PlaceOrder
PlaceOrder ..> Order
PlaceOrder ..> OrderRepository
@enduml

7. Diagrama de perfil

Define uma extensão específica de domínio para UML usando estereótipos, valores marcados e restrições. Use-o quando um projeto precisar de um vocabulário de modelagem consistente além do UML padrão.

O PlantUML pode mostrar os conceitos de perfil como um esboço no estilo UML, mas este não é um renderizador dedicado para diagramas de perfil.

@startuml
class "«profile» StoreProfile" as Profile
class "«estereótipo» «Serviço»" as Service
class "«estereótipo» «Repositório»" as Repository
class "«metaclass» Componente" as Component

Profile ..> Service : defines
Profile ..> Repository : defines
Service ..> Component : extends
Repository ..> Component : extends

note right of Service
  valor marcado:
  owner: String
end note
@enduml

Diagramas comportamentais

8. Diagrama de casos de uso

Mostra atores externos e os objetivos do sistema com os quais interagem. Use-o para estabelecer o escopo e capturar requisitos funcionais em alto nível.

@startuml
direção da esquerda para a direita
ator Cliente
ator "Provedor de Pagamento" como Provedor

retângulo "Loja Online" {
  caso de uso "Navegar produtos" como Navegar
  caso de uso "Fazer pedido" como Fazer
  caso de uso "Pagar pedido" como Pagar
  caso de uso "Rastrear pedido" como Rastrear
}

Cliente --> Navegar
Cliente --> Fazer
Cliente --> Rastrear
Provedor --> Pagar
Fazer ..> Pagar : <<incluir>>
@enduml

9. Diagrama de atividade

Modela um fluxo de trabalho: ações, decisões, caminhos paralelos e transferências. Use-o para processos de negócios, procedimentos operacionais ou o fluxo de controle de um algoritmo.

@startuml
início
:Selecionar itens;
:Inserir detalhes de entrega;
:Calcular total;

se (Itens disponíveis?) então (sim)
  :Autorizar pagamento;
  se (Pagamento aprovado?) então (sim)
    :Criar pedido;
    :Enviar confirmação;
  senão (não)
    :Mostrar erro de pagamento;
  fimse
senão (não)
  :Mostrar itens indisponíveis;
fimse

fim
@enduml

10. Diagrama de máquina de estados

Descreve os estados que uma entidade pode ocupar e os eventos ou condições que causam transições. Use-o quando o comportamento de um objeto depender de seu estado atual.

@startuml
[*] --> Rascunho
Rascunho --> PagamentoPendente : submeter
PagamentoPendente --> Pago : pagamento aprovado
PagamentoPendente --> Cancelado : pagamento recusado
PagamentoPendente --> Cancelado : cliente cancela
Pago --> Enviado : despachar
Enviado --> Entregue : entrega confirmada
Cancelado --> [*]
Entregue --> [*]
@enduml

11. Diagrama de sequência

Mostra as mensagens trocadas entre participantes em ordem temporal. Use-o para descrever um cenário, fluxo de chamadas de API ou interação entre serviços.

@startuml
ator Cliente
participante "Loja Web" como Web
participante "Serviço de Pedidos" como Pedidos
participante "Serviço de Pagamento" como Pagamentos

Cliente -> Web : submeter checkout
Web -> Pedidos : criar pedido
Pedidos -> Pagamentos : autorizar pagamento
Pagamentos --> Pedidos : aprovado
Pedidos --> Web : confirmação de pedido
Web --> Cliente : mostrar confirmação
@enduml

12. Diagrama de comunicação

Destaca quais objetos colaboram e os links entre eles; a numeração das mensagens mostra a ordem das interações. Use-o quando a rede de participantes colaborativos for mais importante do que uma linha do tempo.

O PlantUML não possui um renderizador dedicado para diagramas de comunicação em seu conjunto UML padrão. Este esboço de links de objetos rotula as mensagens com números de sequência:

@startuml
objeto Cliente
objeto LojaWeb
objeto ServiçoPedidos
objeto ServiçoPagamento

Cliente --> LojaWeb : 1: checkout()
LojaWeb --> ServiçoPedidos : 1.1: createOrder()
ServiçoPedidos --> ServiçoPagamento : 1.2: authorize()
ServiçoPagamento --> ServiçoPedidos : 1.3: approved
ServiçoPedidos --> LojaWeb : 1.4: confirmation
@enduml

13. Diagrama de visão geral de interação

Fornece uma visão de alto nível do fluxo de controle de interações, combinando fluxo estilo atividade com referências a cenários de interação. Use-o para mostrar como vários cenários de nível de sequência se encaixam em um processo maior.

Este exemplo de PlantUML usa um diagrama de atividade como visão geral, com nomes de cenários substituindo as interações referenciadas:

@startuml
skinparam conditionStyle InsideDiamond

title Diagrama de Visão Geral de Interação: Sistema de Processamento de Pedidos

start

:Cliente faz pedido;

if (Item em estoque?) then (sim)
  
  partition "sd Sequência de Checkout" {
    :Autorizar Pagamento;
    :Deduzir Estoque;
  }
  
else (não)
  
  partition "sd Processo de Pedido Pendente" {
    :Notificar Cliente;
    :Gerar Solicitação ao Fornecedor;
  }
  
endif

fork
  partition "sd Sequência de Envio" {
    :Empacotar Pedido;
    :Enviar para Endereço;
  }
fork again
  partition "sd Sequência de Faturamento" {
    :Gerar Fatura;
    :Enviar E-mail de Recibo;
  }
end fork

:Fechar Pedido;

stop
@enduml

Para trocas de mensagens detalhadas dentro de cada cenário, crie um diagrama de sequência separado.

14. Diagrama de tempo

Mostra mudanças de estado ou valor em relação a um eixo temporal. Use-o para comportamento sensível ao tempo, protocolos, interações de hardware ou requisitos que envolvem durações e prazos.

@startuml
robust "Pedido" as Order
concise "Pagamento" as Payment

@0
Pedido é Rascunho
Pagamento está Inativo

@5
Pedido está Pendente
Pagamento está Processando

@10
Pagamento está Aprovado

@12
Pedido está Confirmado
@enduml

Escolhendo um diagrama

Comece com a pergunta que o diagrama precisa responder:

  • O que está no sistema? Classe, objeto, componente, estrutura composta, pacote, perfil ou implantação.

  • O que o sistema faz? Caso de uso, atividade ou máquina de estados.

  • Como os participantes colaboram? Sequência, comunicação, visão geral de interação ou tempo.

Mantenha cada diagrama focado em um único propósito, use nomes consistentes entre os diagramas e inclua apenas o detalhe necessário para o público e a decisão em questão. Os trechos de PlantUML são pontos de partida: verifique a sintaxe suportada pelo seu renderizador, especialmente para os tipos de diagrama especializados.

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