← Projetos

Tutorial

UML Studio: UML para principiantes

O que é a UML, para que serve cada um dos 14 diagramas e como desenhá-los, verificá-los, simulá-los e documentá-los no navegador.

O que é a UML

A UML (Unified Modeling Language, ou linguagem de modelagem unificada) é uma linguagem gráfica para descrever sistemas de software: que partes existem, como elas se relacionam e como se comportam ao longo do tempo. É uma norma mantida pela OMG (Object Management Group). A versão atual é a 2.5.1, publicada em dezembro de 2017. [2] [3]

Ela nasceu da união de três métodos de orientação a objetos. Grady Booch e James Rumbaugh juntaram as suas notações na Rational Software, e Ivar Jacobson entrou na equipe em 1995. A OMG adotou a UML como padrão em 1997, e a ISO a publicou como norma ISO/IEC 19501 em 2005. [3] [4]

Uma comparação ajuda: a UML é para o software o que a planta baixa é para uma casa. A planta não levanta paredes, mas deixa arquiteto, engenheiro e cliente conversarem sobre a mesma coisa antes de gastar tijolo.

Este tutorial explica a teoria com o UML Studio, um app em um único arquivo HTML que desenha os 14 diagramas da UML 2.5.1, verifica erros comuns, simula os diagramas de comportamento e gera a documentação em PDF. [1]

Abrir o UML Studio

Palavras que você vai ver o tempo todo

Modelo
A descrição do sistema. Um modelo pode ter muitos diagramas.
Diagrama
Uma vista do modelo, que mostra só uma parte dele, com um propósito.
Classe
Um tipo de coisa: Cliente, Pedido, Livro. Tem atributos (dados) e operações (comportamento).
Objeto
Uma instância concreta de uma classe: a cliente Ana, o pedido 1001.
Relacionamento
Uma ligação entre elementos: associação, generalização, dependência e outras.
Multiplicidade
Quantos objetos participam de uma ligação: 1, 0..1, 0..*, 1..*.
Estereótipo
Uma palavra entre « » que dá um significado extra a um elemento, como «interface» ou «entity».
↑ Voltar ao topo

Para que modelar

Modelar é pensar no papel antes de pensar no código. Um diagrama mostra em uma página o que levaria horas para descobrir lendo programas, e é barato de mudar: apagar uma caixa custa um segundo, refazer um módulo custa dias.

Martin Fowler descreve três jeitos de usar a UML: como esboço, para discutir uma ideia; como planta, um projeto detalhado para outra pessoa construir; e como linguagem de programação, quando o modelo vira código. [5] Para quem está começando, o esboço é o melhor ponto de partida: poucos elementos, só o que ajuda a conversa.

  • “Preciso usar os 14 diagramas”

    Não. Escolha o diagrama pela pergunta que você quer responder. Muitos projetos vivem bem com classes, casos de uso e sequência.

  • “Quanto mais detalhe, melhor”

    Detalhe demais esconde a ideia. Mostre o que importa para quem vai ler; o resto fica no código ou em outro diagrama.

  • “UML é só para sistemas enormes”

    Um esboço de cinco caixas também é UML, e muitas vezes é o que mais ajuda.

  • “O diagrama substitui a conversa”

    O diagrama apoia a conversa. Se ninguém o entende sem você explicar, simplifique.

Para fixar

  • UML é uma linguagem gráfica padronizada pela OMG; a versão atual é a 2.5.1.
  • Ela diz como desenhar, não o processo a seguir.
  • Comece com esboços pequenos, com um propósito claro.
↑ Voltar ao topo

Os 14 diagramas

A especificação organiza os diagramas em dois grandes grupos. [2] Os de estrutura mostram o que o sistema é: as peças e como elas se ligam, sem tempo. Os de comportamento mostram o que o sistema faz: ações, estados e mensagens. Dentro do comportamento há um subgrupo, os diagramas de interação, focados nas mensagens trocadas entre participantes.

Árvore com os 14 tipos de diagrama. Estrutura tem sete: classes, objetos, pacotes, componentes, estrutura composta, implantação e perfil. Comportamento tem sete: casos de uso, atividades, máquina de estados e o grupo interação, com sequência, comunicação, tempo e visão geral de interação.
Os 14 diagramas da UML 2.5.1, agrupados como na especificação.
DiagramaPergunta que responde
ClassesQuais tipos de coisa existem, o que cada um sabe e como se ligam?
ObjetosComo fica um exemplo concreto, num momento?
PacotesComo o modelo se divide em partes e quem depende de quem?
ComponentesQuais peças substituíveis formam o sistema e que interfaces oferecem e usam?
Estrutura compostaComo é o interior de uma peça: partes, portas e conexões?
ImplantaçãoEm que máquinas e ambientes cada artefato roda?
PerfilComo adaptar a UML a um domínio com estereótipos próprios?
Casos de usoQuem usa o sistema e para quê?
AtividadesQual é o passo a passo de um processo, com decisões e paralelismo?
Máquina de estadosEm que estados um objeto pode estar e o que o faz mudar?
SequênciaEm que ordem os participantes trocam mensagens?
ComunicaçãoQuem fala com quem, e em que ordem numerada?
TempoQuando cada participante muda de estado, num eixo de tempo?
Visão geral de interaçãoEm que ordem as interações acontecem, com decisões entre elas?
↑ Voltar ao topo

Conheça o UML Studio

Abra o UML Studio. Na primeira vez, ele traz um exemplo de cada um dos 14 diagramas, prontos para explorar.

Tela do UML Studio com o diagrama de classes de exemplo: barra superior com Salvar, Arquivo, Organizar, Simular, Verificar e Documentar; abas dos diagramas; paleta de elementos e relacionamentos à esquerda; quadro no centro; propriedades à direita
A tela do app: abas no alto do quadro, paleta à esquerda e propriedades à direita.
ÁreaPara que serve
Barra superiorSalvar, menu Arquivo (exportar e importar), Organizar, Simular, Verificar, Documentar, ajuda, tema claro ou escuro e idioma.
AbasUm diagrama por aba. O + cria outro; duplo clique renomeia; arrastar muda a ordem; o × exclui.
PaletaOs elementos e relacionamentos do tipo de diagrama aberto. Clique em um e depois no quadro, ou arraste-o para o quadro.
QuadroOnde você desenha. A rolagem move; Ctrl + rolagem amplia.
PropriedadesTudo sobre o item selecionado: nome, estereótipo, atributos, multiplicidades, guardas.

Criar um diagrama

Clique no + ao lado das abas. O diálogo mostra os 14 tipos nos três grupos, com uma frase sobre cada um. Marque Começar com um exemplo se quiser partir de um modelo pronto.

Diálogo Novo diagrama com os 14 tipos agrupados em Estrutura, Comportamento e Interação, o campo Nome e a opção Começar com um exemplo
O diálogo de novo diagrama segue a classificação da especificação.

Onde ficam os seus dados

  • Dentro do próprio arquivo. Como no TiddlyWiki, Salvar grava o arquivo HTML com os diagramas dentro. No Chrome e no Edge você escolhe o arquivo uma vez e as próximas gravações o substituem; nos outros navegadores é baixada uma cópia nova, que substitui a antiga.
  • Rascunho no navegador. Até você salvar, as mudanças ficam guardadas no navegador e são oferecidas de volta se a página fechar.
  • Nada sai do seu computador. O arquivo bloqueia conexões de rede.
↑ Voltar ao topo

Seu primeiro diagrama: uma biblioteca

Vamos modelar uma biblioteca pequena: livros, os exemplares físicos de cada livro, os leitores e os empréstimos. Siga os passos no app.

  1. Clique no + das abas, escolha Diagrama de classes, digite o nome Biblioteca e clique em Criar.
  2. Na paleta, clique em Classe e depois no quadro. A caixa de nome abre sozinha: digite Livro e tecle Enter.
  3. No painel de propriedades, em Atributos, escreva um por linha: - titulo: String e - isbn: String.
  4. Repita para mais três classes: Exemplar (abaixo de Livro, com - codigo: String), Leitor (à direita, com - nome: String) e Empréstimo (abaixo de Leitor, com - data: Date e - devolucao: Date).
  5. Na paleta, escolha Composição e arraste de Livro até Exemplar. Nas propriedades, ponha 1 na multiplicidade da origem e 1..* na do destino.
  6. Escolha Associação e arraste de Leitor até Empréstimo, com multiplicidades 1 e 0..*.
  7. Escolha Associação navegável e arraste de Empréstimo até Exemplar, com 1 no destino.
  8. Clique em Livro, segure Shift e clique em Leitor. Abra Organizar e escolha Alinhar ao topo.
  9. Clique em Verificar. O app deve dizer que não encontrou problemas.
  10. Tecle Ctrl+S para gravar o diagrama dentro do arquivo.
Livro e Leitor selecionados e o menu Organizar aberto, com os grupos Alinhar, Distribuir, Dimensionar e Sobreposição; o painel à direita mostra os mesmos comandos como botões
Passo 8: com dois itens selecionados, o menu Organizar alinha os dois pelo topo.
Diagrama Biblioteca pronto: Livro ligado a Exemplar por composição com multiplicidades 1 e 1..*; Leitor ligado a Empréstimo por associação 1 e 0..*; Empréstimo aponta para Exemplar com multiplicidade 1
O resultado do roteiro.

Como ler o que você desenhou

  • Livro ◆— Exemplar, 1 e 1..*: cada livro tem um ou mais exemplares, e cada exemplar pertence a exatamente um livro. O losango cheio é composição: se o livro sai do acervo, os seus exemplares saem junto. [2]
  • Leitor — Empréstimo, 1 e 0..*: um leitor pode ter nenhum ou muitos empréstimos; cada empréstimo é de um leitor.
  • Empréstimo → Exemplar, 1: cada empréstimo é de um exemplar, e a seta diz que, a partir do empréstimo, se chega ao exemplar.

Repare que o empréstimo liga o leitor ao exemplar, não ao livro: quem sai da estante é uma cópia física. Esse tipo de pergunta, “é o livro ou o exemplar?”, é exatamente o que a modelagem obriga a responder cedo.

↑ Voltar ao topo

Diagrama de classes

É o diagrama mais usado. Cada classe é um retângulo com até três compartimentos: o nome, os atributos e as operações.

Diagrama de classes de exemplo com Cliente, ClienteVip, Pedido, ItemPedido, Produto, a interface Pagavel e a enumeração StatusPedido; Pedido está selecionado e o painel mostra os seus atributos e operações
O exemplo de classes, com Pedido selecionado: os atributos e as operações ficam no painel.

Atributos e operações

Um atributo se escreve visibilidade nome: Tipo [multiplicidade] = valor inicial, e uma operação, visibilidade nome(parâmetros): TipoDeRetorno. Só o nome é obrigatório. A visibilidade usa quatro símbolos: [2]

SímboloVisibilidadeQuem enxerga
+públicaqualquer um
-privadasó a própria classe
#protegidaa classe e as suas subclasses
~de pacotequem está no mesmo pacote

No app, escreva um item por linha. Comece a linha com _ para sublinhar (membro estático) e termine uma operação com {abstract} para itálico. Uma classe abstrata tem o nome em itálico: marque Abstrata.

Além da classe comum, a paleta tem interface (um contrato de operações), enumeração (uma lista fechada de valores), tipo de dado, tipo primitivo e sinal.

Os relacionamentos

RelacionamentoDesenhoLeia como
Associaçãolinha contínua“está ligado a”. Com nome, papéis e multiplicidades nas pontas.
Associação navegávellinha com seta aberta“conhece”: a partir da origem se chega ao destino.
Agregaçãolosango vazio no lado do todo“tem”, num sentido fraco. A própria especificação diz que o significado exato varia conforme a área e quem modela. [2]
Composiçãolosango cheio no lado do todo“é feito de”: a parte pertence a um só todo e é apagada com ele. [2]
Generalizaçãotriângulo vazio apontando para a classe geral“é um”: ClienteVip é um Cliente e herda o que ele tem.
Realizaçãotracejado com triângulo vazio“cumpre o contrato”: Pedido implementa a interface Pagavel.
Dependênciatracejado com seta aberta“usa” ou “depende de”: uma mudança no destino pode afetar a origem.

Multiplicidades

EscritaSignifica
1exatamente um
0..1nenhum ou um
* ou 0..*nenhum ou muitos
1..*pelo menos um
2..4de dois a quatro

Leia sempre a multiplicidade do lado oposto: em Cliente 1 —— 0..* Pedido, o 0..* perto de Pedido diz quantos pedidos um cliente faz.

Para fixar

  • “É um” vira generalização; “tem” ou “conhece” vira associação.
  • Use composição só quando a parte não existe sem o todo.
  • Multiplicidade se lê do lado oposto da linha.
↑ Voltar ao topo

Diagrama de objetos

Se o diagrama de classes é a regra, o de objetos é um exemplo: uma fotografia do sistema em um instante. Cada caixa é uma instância, com o nome sublinhado no formato nome : Classe, e mostra valores (slots) em vez de tipos. As linhas são vínculos (links), instâncias das associações.

Diagrama de objetos: ana : Cliente ligada a p1001 : Pedido, que está ligado a i1 : ItemPedido e i2 : ItemPedido, cada um com os seus valores
A cliente Ana fez o pedido 1001, que tem dois itens.

Use-o para testar um diagrama de classes com um caso real. Se o exemplo não cabe nas regras (um pedido sem cliente, por exemplo), a multiplicidade ou a própria classe estão erradas.

↑ Voltar ao topo

Pacotes e perfis

Um pacote é uma pasta: agrupa elementos e dá um espaço de nomes a eles. O diagrama de pacotes mostra como o modelo se divide e quem depende de quem. As dependências mais comuns são «import» (o pacote passa a enxergar os nomes públicos do outro), «access» (o mesmo, só para uso interno) e «merge» (junta o conteúdo de dois pacotes). [2]

Diagrama de pacotes: Vendas contém Pedido e Cliente; Vendas depende de Estoque; Vendas e Estoque importam Comum
Vendas e Estoque importam o pacote Comum; Vendas depende de Estoque.

Um perfil adapta a UML a um domínio. Ele define estereótipos que estendem metaclasses da própria UML. A extensão é uma linha com triângulo cheio, do estereótipo para a metaclasse; a aplicação do perfil a um pacote é uma dependência «apply». [2]

Diagrama de perfil: o perfil PerfilWeb tem os estereótipos Controlador e Entidade, que estendem a metaclasse Class; o pacote Loja aplica o perfil
Os estereótipos «Controlador» e «Entidade» passam a valer em qualquer classe do pacote Loja.
↑ Voltar ao topo

Componentes, estrutura composta e implantação

Componentes

Um componente é uma peça substituível do sistema, que se conhece pelas interfaces: as que ele fornece (o pirulito, um círculo) e as que ele requer (o soquete, um meio círculo). Quando um soquete encaixa num pirulito, temos um conector de montagem. Uma porta é um ponto de interação na borda do componente, e um artefato (um arquivo) pode manifestar o componente.

Diagrama de componentes: Loja Web, com a porta http, usa a interface IPagamento fornecida por Pagamentos por um conector de montagem; Loja Web usa Catálogo, que fornece IConsulta; o artefato loja.war manifesta Loja Web
Loja Web requer IPagamento, que o componente Pagamentos fornece.

Estrutura composta

Mostra o interior de uma classe: as partes (papéis que outros objetos ocupam lá dentro), as portas e os conectores entre elas. Um conector de delegação leva o que chega pela porta até a parte que trata.

Estrutura composta da classe Carro: partes motor, transmissão e rodas com multiplicidade 4, ligadas por conectores; a porta ignição delega para o motor
O carro por dentro: a ignição chega ao motor, que move a transmissão e as rodas.

Implantação

Mostra onde o software roda. Nós são caixas em 3D: um «device» é hardware, um «executionEnvironment» é um ambiente de software, como um servidor de aplicação. Artefatos ficam dentro dos nós em que estão implantados, e os caminhos de comunicação ligam os nós.

Diagrama de implantação: o computador do cliente com o navegador fala por HTTPS com o servidor de aplicação, onde o Tomcat roda loja.war; o servidor de aplicação fala por JDBC com o servidor de banco, que roda PostgreSQL
Três nós, dois caminhos de comunicação e um artefato implantado no Tomcat.
↑ Voltar ao topo

Casos de uso

Um caso de uso é um objetivo que alguém atinge com o sistema: “Comprar produto”, “Emprestar livro”. Quem tem o objetivo é o ator, o boneco: uma pessoa, um papel ou outro sistema. O retângulo é o sujeito, o sistema em estudo.

Diagrama de casos de uso da Loja online: o ator Cliente participa de Comprar produto, que inclui Pagar e Calcular frete; Aplicar cupom estende Comprar produto; a Operadora de cartão participa de Pagar
Comprar produto sempre inclui Pagar e Calcular frete; Aplicar cupom é opcional e o estende.
LigaçãoSentido da setaQuando usar
Associaçãosem setao ator participa do caso de uso
«include»do caso base para o incluídoo base sempre executa o incluído
«extend»do caso que estende para o basecomportamento opcional, sob uma condição
Generalizaçãodo específico para o geralum ator ou caso de uso especializa outro
↑ Voltar ao topo

Atividades

O diagrama de atividades é o fluxograma da UML: mostra os passos de um processo, as decisões e o que acontece em paralelo. As partições (raias) mostram quem faz cada passo.

ElementoDesenhoSignifica
Nó inicialcírculo cheioonde o fluxo começa
Açãoretângulo de cantos redondosum passo
Decisão / junçãolosangoescolhe um caminho pelas guardas [condição], ou junta caminhos alternativos
Bifurcação / uniãobarra grossaabre caminhos paralelos, ou espera todos terminarem
Final de atividadecírculo com pontotermina a atividade inteira
Final de fluxocírculo com Xtermina só aquele caminho

A especificação define o comportamento das atividades com tokens, fichas que percorrem as setas: uma ação começa quando recebe fichas em todas as entradas e, ao terminar, oferece fichas nas saídas. [2] É isso que o botão Simular mostra.

Simulação do diagrama de atividades: a ação Fechar pedido destacada, um token na seta que vai para a decisão, as opções 1 em estoque e 2 sem estoque marcadas nas setas e no painel, e o registro com os passos
Na decisão, o app pergunta qual guarda vale. Clique no número sobre a seta ou no botão do painel.
  1. Abra o exemplo de atividades e clique em Simular.
  2. Clique em Passo (ou tecle N) e acompanhe a ficha laranja.
  3. Na decisão, escolha [em estoque]. Veja a bifurcação dividir a ficha e a união esperar as duas ações.
  4. Clique em Reiniciar e escolha [sem estoque]: o final de fluxo encerra só aquele caminho.

No modo Sortear com a semente, o app escolhe por você. A mesma semente repete a mesma simulação, o que permite mostrar um caso a outra pessoa. As guardas não são avaliadas: quem decide é você ou a semente.

↑ Voltar ao topo

Máquina de estados

Alguns objetos mudam de comportamento conforme a sua situação: um pedido aberto pode ser pago ou cancelado, mas um pedido enviado não. A máquina de estados mostra essas situações (estados) e o que faz o objeto passar de uma para outra (transições).

O rótulo de uma transição segue o formato evento [guarda] / efeito: quando o evento chega e a guarda é verdadeira, o efeito executa e o objeto muda de estado. Dentro do estado, entry / roda ao entrar, do / enquanto está nele e exit / ao sair. A especificação diz que cada evento é tratado até o fim antes do próximo (run-to-completion). [2]

Simulação da máquina de estados do pedido: o estado Pago destacado depois do evento pagar com guarda valor ok e efeito emitirRecibo; o registro mostra a entrada em Aberto, a saída e a entrada em Pago
Depois do evento pagar [valor ok] / emitirRecibo(), o pedido está em Pago.

Na simulação, o app lista os eventos possíveis a partir do estado atual. Escolha um e veja o registro: sai do estado, executa o efeito e entra no novo. Transições sem evento disparam sozinhas quando o estado termina. O app também trata estados compostos, escolha, histórico raso (H) e profundo (H*), bifurcação e união.

↑ Voltar ao topo

Sequência e comunicação

O diagrama de sequência conta uma história no tempo, de cima para baixo. Cada participante tem uma linha de vida tracejada; as setas entre elas são mensagens. Os retângulos estreitos sobre a linha mostram quando o participante está trabalhando (especificação de execução).

MensagemDesenhoSignifica
Síncronalinha contínua, ponta cheiaquem chama espera a resposta
Assíncronalinha contínua, ponta abertaquem chama segue em frente
Respostatracejada, ponta abertao retorno de uma chamada
Criaçãotracejada até a cabeça da linha de vidao participante nasce ali
Destruiçãotermina num Xo participante deixa de existir

Os fragmentos combinados são molduras com um operador no canto: alt (um entre vários caminhos), opt (opcional), loop (repetição), par (em paralelo), break (interrompe o restante) e neg (um caminho que não deve acontecer), entre outros. [2]

Simulação do diagrama de sequência: depois de fazerPedido, reservar, ok e calcularTotal, o fragmento alt está destacado e o app pergunta qual operando executar, aprovado ou else
Ao chegar no alt, a simulação pergunta qual operando executar.

O diagrama de comunicação mostra as mesmas mensagens, mas organizadas pelos vínculos entre os participantes. A ordem vem da numeração: 1, depois 1.1 e 1.2, que acontecem dentro da mensagem 1.

Diagrama de comunicação: o Cliente envia 1: fazerPedido à Loja, que envia 1.1: reservar ao Estoque e 1.2: cobrar ao Pagamento
A mesma conversa da sequência, vista como uma rede.
↑ Voltar ao topo

Tempo e visão geral de interação

O diagrama de tempo põe o tempo no eixo horizontal e os estados no vertical. É útil quando o momento importa: sistemas embarcados, protocolos, prazos. No app, escreva os estados de cima para baixo e as mudanças no formato tempo estado, uma por linha.

Diagrama de tempo em simulação: o cursor está em t = 30, quando o semáforo passa a Verde e envia sinal verde ao pedestre, que começa a atravessar em t = 33
Na simulação, um cursor percorre o eixo e mostra cada mudança de estado.

A visão geral de interação parece um diagrama de atividades, mas cada passo é uma interação inteira: uma referência (ref) a outro diagrama ou uma interação desenhada ali mesmo (sd).

Visão geral de interação: depois de ref Login, uma decisão leva, com ok, à interação Comprar, que tem Cliente e Loja trocando mensagens, ou, com falha, a ref Exibir erro
Login, depois Comprar ou Exibir erro, conforme a decisão.
↑ Voltar ao topo

Organizar, verificar, documentar e salvar

Organizar

GrupoComandos
Alinharesquerda, centro, direita, topo, meio e base (dois ou mais itens)
Distribuirespaços iguais na horizontal ou na vertical (três ou mais)
Dimensionarmesma largura, altura ou tamanho do primeiro item selecionado; ajustar ao conteúdo, que num contêiner envolve o que está dentro
Sobreposiçãotrazer para a frente, avançar, recuar e enviar para trás

Verificar

O botão Verificar procura erros comuns: «include» ou «extend» fora de casos de uso, comentário ligado sem comentário, nó inicial com entradas, final com saídas, decisão que não decide nada, bifurcação mal formada, generalização entre tipos diferentes ou em ciclo, elementos sem nome e ações soltas. Clique num aviso para selecionar o elemento.

Diálogo Verificação do diagrama dizendo que nenhum problema foi encontrado no diagrama Biblioteca
A biblioteca do roteiro passa na verificação.

Documentar

O botão Documentar gera um PDF com capa, sumário com links, cada diagrama em desenho vetorial e, se quiser, as tabelas de elementos, de relacionamentos e o resultado da verificação. Escolha os diagramas, a orientação e o papel (A4 ou Carta).

Diálogo Documentar em PDF com título, autor, lista de diagramas, opções de sumário, tabelas e verificação, orientação e tamanho do papel
As opções da documentação em PDF.

Salvar, exportar e importar

ComandoO que faz
Salvar (Ctrl+S)grava o próprio arquivo HTML com os diagramas dentro
Arquivo › Salvar como outro HTMLcria uma cópia em outro arquivo
Arquivo › Exportar SVG ou PNGuma imagem do diagrama aberto, para slides e documentos
Arquivo › Exportar JSONos dados do projeto, para guardar ou levar a outra cópia do app
Arquivo › Importaracrescenta os diagramas de um JSON ou de outro HTML do UML Studio

O app não exporta XMI, o formato de troca de modelos da OMG; para levar o modelo a outra ferramenta, use as imagens ou redesenhe.

↑ Voltar ao topo

Erros comuns de principiante

  • Generalização no lugar de associação

    Pedido não “é um” Cliente; pedido “pertence a” um cliente. Herança só quando a frase “X é um Y” faz sentido.

  • Composição em tudo

    O losango cheio diz que a parte morre com o todo. Um leitor não morre com a biblioteca: ali cabe uma associação.

  • Seta do «extend» invertida

    O «include» sai do caso base; o «extend» sai do caso opcional e aponta para o base.

  • Caso de uso como tela ou passo

    “Clicar em salvar” não é caso de uso. Um caso de uso é um objetivo completo do ator.

  • Sequência com tudo

    Uma sequência com dezenas de mensagens não se lê. Conte um cenário por diagrama e use ref para os detalhes.

  • Esquecer as multiplicidades

    Sem elas, ninguém sabe se o pedido pode ficar sem itens. Pergunte sempre “quantos, no mínimo e no máximo?”.

  • Diagrama sem pergunta

    Antes de desenhar, escreva a pergunta que o diagrama responde. Se não há pergunta, talvez não precise do diagrama.

  • Atividade e estado misturados

    Ação é algo que se faz (“Enviar pacote”); estado é uma situação (“Enviado”). Os nomes já mostram a diferença.

↑ Voltar ao topo

Atalhos de teclado

TeclaAção
Ctrl+Ssalvar no próprio arquivo
Ctrl+Z / Ctrl+Ydesfazer e refazer
Ctrl+C, Ctrl+V, Ctrl+Dcopiar, colar e duplicar
Ctrl+Aselecionar tudo
Delexcluir a seleção
F2 ou duplo cliquerenomear
setas (com Shift, passo maior)mover a seleção
Tabir de um elemento ao próximo
Ctrl+] / Ctrl+[avançar ou recuar na sobreposição; com Shift, até a frente ou o fundo
Esccancelar a ferramenta, limpar a seleção ou sair da simulação
N, P, R, 1–9na simulação: passo, executar ou pausar, reiniciar e escolher uma opção
↑ Voltar ao topo

Revisão rápida

Tente responder antes de abrir cada pergunta.

1. Quais são os dois grandes grupos de diagramas da UML?

Estrutura (o que o sistema é) e comportamento (o que ele faz). Os diagramas de interação são um subgrupo do comportamento.

2. Em Cliente 1 —— 0..* Pedido, quantos pedidos um cliente pode ter?

De nenhum a muitos. A multiplicidade se lê do lado oposto: o 0..* está perto de Pedido.

3. Qual a diferença entre agregação e composição?

Na composição, a parte pertence a um só todo e é apagada com ele. A agregação é uma relação de “tem” mais fraca, cujo significado exato varia.

4. O que significa - saldo: Decimal?

Um atributo privado chamado saldo, do tipo Decimal. O - diz que só a própria classe o enxerga.

5. Para onde aponta a seta do «extend»?

Do caso de uso que estende (o opcional) para o caso de uso base.

6. Em atividades, qual a diferença entre final de atividade e final de fluxo?

O final de atividade encerra tudo; o final de fluxo encerra só o caminho que chegou a ele.

7. Como se lê pagar [valor ok] / emitirRecibo()?

Quando chega o evento pagar e a guarda “valor ok” é verdadeira, o efeito emitirRecibo() executa e o objeto muda de estado.

8. Por que a simulação repete as mesmas escolhas?

Porque usa a mesma semente no modo Sortear com a semente. Troque a semente para ver outro caminho.

↑ Voltar ao topo

Referências

  1. Giovani Perotto Mesquita, “UML Studio”, aplicativo em um único arquivo HTML, giovanipm.github.io/uml-studio.html.
  2. Object Management Group, OMG Unified Modeling Language (OMG UML), Version 2.5.1, especificação formal/17-12-05, dezembro de 2017, omg.org/spec/UML/2.5.1.
  3. Object Management Group, “Unified Modeling Language”, página da especificação com o histórico de versões (1.1 em dezembro de 1997, 2.0 em julho de 2005, 2.5.1 em dezembro de 2017), acesso em 05/11/2026, omg.org/spec/UML.
  4. Wikipedia (em inglês), “Unified Modeling Language”, acesso em 05/11/2026, en.wikipedia.org/wiki/Unified_Modeling_Language. Divergência: a Wikipedia diz que a OMG adotou a UML 1.1 em novembro de 1997; a tabela da própria OMG [3] registra dezembro de 1997.
  5. Martin Fowler, UML Distilled: A Brief Guide to the Standard Object Modeling Language, 3ª edição, livro, Addison-Wesley, 2003, ISBN 978-0-321-19368-1.
  6. Grady Booch, James Rumbaugh, Ivar Jacobson, The Unified Modeling Language User Guide, 2ª edição, livro, Addison-Wesley, 2005, ISBN 978-0-321-26797-9.
↑ Voltar ao topo