1. O que é um Diagrama de Requisitos?
Umdiagrama de requisitos é um tipo de diagrama SysML cujo único propósito écapturar requisitos como elementos de modelo de primeira classe e tornar suas relações explícitas e rastreáveis. Diferentemente de um documento de requisitos (que é apenas uma lista), um diagrama de requisitos é umgrafo: os requisitos são nós, e as relações entre eles — contenção, derivação, satisfação, verificação e rastreabilidade — são arestas.

A ideia central érastreabilidade. Em um sistema de TI, um requisito não vive isolado. Uma necessidade de um interessado impulsiona um requisito do sistema; esse requisito é satisfeito por um bloco arquitetural; um caso de teste o verifica; e ele pode ser refinado em sub-requisitos. O diagrama de requisitos torna cada uma dessas ligações visível e auditável. É isso que transforma uma planilha plana em um modelo.
Por que usá-lo para sistemas de TI?
Projetos de TI são notórios porderiva de requisitos — expansão de escopo, mudanças não gerenciadas e o problema de “construímos, mas ninguém pediu”. Um diagrama de requisitos ajuda porque permite que você:

-
Rastrear para trás — “Por que este componente existe?” → siga
ligações de satisfaçãoaté o requisito, eligações de derivaçãoaté a necessidade de negócios. -
Rastrear para frente — “Este requisito foi verificado?” → siga
ligações de verificaçãoaté os casos de teste. -
Avaliar o impacto da mudança — “Se este requisito mudar, o que mais é afetado?” → siga todas as arestas de entrada e saída.
-
Provar a cobertura — todo requisito deve ser satisfeito poralgo e verificado por algoOs requisitos órfãos são imediatamente visíveis.
2. Conceitos Chave e Notação
2.1 O elemento de requisito
Um requisito é desenhado como um retângulo com um nome, um identificador único (tipicamente hierárquico, como 1.2.3), e texto do requisito. O estereótipo é «requisito».
Os requisitos podem conter propriedades — atributos formalmente modelados, como origem, risco, prioridade, status, ou método de verificaçãoIsso torna um requisito mensurável em vez de vago.
2.2 As relações (o coração do diagrama)

| Relação | Notação | Direção e Significado | Uso típico em TI |
|---|---|---|---|
| Contenção | «conter» |
Pai contém filho. Organiza a árvore de requisitos. | Requisito de Segurança contém Requisito de Login, Requisito de Criptografia |
| Derivação | «derivar» |
Filho é derivado de pai (geralmente uma reformulação mais concreta). | Requisito de Sistema deriva em Requisito de Subsistema |
| Satisfação | «satisfazer» |
Um elemento de design (bloco/componente) satisfaz um requisito. | AuthService satisfaz Requisito de Login |
| Verificação | «verificar» |
Um caso de teste verifica um requisito. | LoginTest verifica Requisito de Login |
| Refinamento | «refinar» |
Um elemento de modelo refina um requisito (adiciona detalhes). | Um caso de uso ou diagrama de atividades refina um requisito |
| Rastreio | «rastreio» |
Um vínculo de rastreabilidade geral e não específico. | Qualquer vínculo de “isso se relaciona com aquilo” que você não consiga nomear de outra forma |
| Cópia | «cópia» |
Um requisito é uma cópia de outro (reutilização entre projetos). | NFR compartilhado copiado em dois projetos |
A regra crítica: Um relacionamento nunca é desenhado para o ID da string — ele é desenhado para o apelido. E se o requisito A contém o requisito B, você deve não também desenhar um «derive» entre eles em qualquer direção; contenção e derivação são mutuamente exclusivas para o mesmo par.
2.3 Blocos, casos de teste e fontes de refinamento
-
Bloco (
«block»): o elemento de design que satisfaz requisitos. Em um contexto de TI, este é o seu componente arquitetural — um serviço, módulo ou API. -
Caso de teste (
«testCase»): a unidade de verificação. -
Fontes de refinamento: casos de uso, atividades ou qualquer elemento de modelo que elabora um requisito.
Nota de notação: as setas de relacionamento têm pontas específicas (a
«satisfy»seta, por exemplo, abre em direção ao requisito sendo satisfeito). Ao escrever sobre isso em prosa, sempre cite o estereótipo — escreva`«satisfy»`— para que não seja absorvido pelo analisador de markdown do leitor.
3. Exemplos de diagramas
Exemplo 1 — Uma hierarquia fundamental de requisitos
Este exemplo mostra contenção e derivação, a estrutura básica com a qual todo diagrama de requisitos começa. Um requisito de desempenho de nível superior é decomposto em sub-requisitos mensuráveis.

@startuml
!include https://static.visual-paradigm.com/plantuml-stdlib/sysml-requirement-diagram.puml
skinparam vpDiagramType RequirementDiagram
skinparam defaultFontSize 14
skinparam defaultFontColor #333333
skinparam linetype ortho
title Hierarquia de Requisitos de Desempenho do Veículo
$requirement("Desempenho do Veículo", ReqVehiclePerf, "1", "O veículo deve atender aos objetivos de desempenho especificados sob condições operacionais nominais.")
$requirement("Aceleração", ReqAccel, "1.1", "O veículo deve acelerar de 0 a 100 km/h em menos de 6 segundos.")
$requirement("Velocidade Máxima", ReqTopSpeed, "1.2", "O veículo deve atingir uma velocidade máxima de pelo menos 220 km/h.")
$requirement("Frenagem", ReqBraking, "1.3", "O veículo deve parar de 100 km/h em menos de 38 metros em pavimento seco.")
$requirement("Eficiência de Combustível", ReqFuel, "1.4", "O veículo deve alcançar pelo menos 15 km/l no ciclo combinado.")
$containment(ReqVehiclePerf, ReqAccel)
$containment(ReqVehiclePerf, ReqTopSpeed)
$containment(ReqVehiclePerf, ReqBraking)
$containment(ReqVehiclePerf, ReqFuel)
$deriveReqt(ReqBraking, ReqVehiclePerf)
@enduml
Lendo-o: Aceleração, Velocidade Máxima, Frenagem, e Eficiência de Combustível são todos partes de o requisito geral de Desempenho do Veículo requisito (contenção). Frenagem também é derivado de dele, o que significa que foi desdobrado em um objetivo concreto e mensurável.
Exemplo 2 — Satisfação e verificação (o projeto atende aos requisitos)
Isso adiciona o lado do projeto. Componentes arquitetônicos satisfazem os requisitos, e os casos de teste verificam eles. Este é o diagrama que você apresenta em uma revisão de projeto.

@startuml
!include https://static.visual-paradigm.com/plantuml-stdlib/sysml-requirement-diagram.puml
skinparam vpDiagramType RequirementDiagram
skinparam defaultFontSize 14
skinparam defaultFontColor #333333
skinparam linetype ortho
title Sistema de Pagamento — Satisfação e Verificação
$requirement("Conformidade PCI-DSS", ReqPci, "3", "O sistema não deve armazenar valores de verificação de cartão e deve criptografar os dados do titular do cartão em repouso.")
$requirement("Processar Pagamento", ReqPay, "3.1", "O sistema deve autorizar um pagamento do cliente em até 3 segundos.")
$requirement("Cobrança Idempotente", ReqIdem, "3.2", "O sistema não deve cobrar duas vezes um cliente em caso de nova tentativa.")
$block("PaymentService", PaymentService)
$block("VaultService", VaultService)
$testCase("Auditoria PCI", TAudit)
$testCase("Teste de Latência", TLatency)
$testCase("Teste de Idempotência", TIdem)
$containment(ReqPci, ReqPay)
$containment(ReqPci, ReqIdem)
$satisfy(PaymentService, ReqPay)
$satisfy(VaultService, ReqPci)
$verify(TAudit, ReqPci)
$verify(TLatency, ReqPay)
$verify(TIdem, ReqIdem)
@enduml
Lendo-o: PaymentService satisfaz o requisito de processamento de pagamento, enquanto VaultService satisfaz o requisito mais amplo de PCI-DSS. Cada requisito é verificado por um caso de teste. Observe as direções das setas: `«satisfy»` aponta do bloco em direção ao requisito que ele cumpre; `«verify»` aponta do caso de teste em direção ao requisito que ele comprova.
Exemplo 3 — Cadeia completa de rastreabilidade do sistema de TI
Este é o diagrama que você usaria para rastrear um necessidade de negócio até a verificação — a clássica pergunta “por que este código existe?”

@startuml
!include https://static.visual-paradigm.com/plantuml-stdlib/sysml-requirement-diagram.puml
skinparam vpDiagramType RequirementDiagram
skinparam defaultFontSize 14
skinparam defaultFontColor #333333
skinparam linetype ortho
title Sistema de E-Commerce — Rastreabilidade de Requisitos
$requirement("Negócio: Reduzir Abandono de Carrinho", ReqBiz, "B1", "O negócio deve reduzir o abandono de carrinho em 15% dentro de dois trimestres.")
$requirement("UX de Checkout", ReqUx, "S1", "O sistema deve permitir que um visitante conclua o checkout em menos de 5 etapas.")
$requirement("Recompra com um Clique", ReqReorder, "S2", "O sistema deve permitir que um cliente recorrente refaça uma compra anterior em uma única ação.")
$requirement("Residência de Dados", ReqResidency, "S3", "O sistema deve armazenar dados de clientes da UE dentro de regiões da UE.")
$block("CheckoutUI", CheckoutUI)
$block("ReorderService", ReorderService)
$block("RegionalDatastore", RegionalDatastore)
$testCase("Teste de Fluxo de Checkout", TCheckout)
$testCase("Teste de Recompra", TReorder)
$testCase("Auditoria de Residência", TResidency)
$containment(ReqBiz, ReqUx)
$containment(ReqBiz, ReqReorder)
$deriveReqt(ReqUx, ReqBiz)
$deriveReqt(ReqReorder, ReqBiz)
$satisfy(CheckoutUI, ReqUx)
$satisfy(ReorderService, ReqReorder)
$satisfy(RegionalDatastore, ReqResidency)
$verify(TCheckout, ReqUx)
$verify(TReorder, ReqReorder)
$verify(TResidency, ReqResidency)
$trace(ReqResidency, ReqBiz)
@enduml
Lendo-o: O requisito de negócio B1 ancora tudo. Os requisitos do sistema S1 e S2 são derivados de isso (o “porquê”), enquanto S3 (residência de dados) é um rastreável restrição vinculada apenas por `«rastreio»`. Cada requisito do sistema é atendido por um componente e verificado por um teste. Se B1 for alterado, este diagrama indica imediatamente quais componentes e testes estão no escopo.
4. Como Construir um (Fluxo de Trabalho Prático)
-
Comece com a necessidade de nível superior. Normalmente um requisito de negócio ou das partes interessadas. Atribua-lhe um espaço de ID claro (por exemplo,
B*para negócios,S*para sistema). -
Decomponha para baixo com contenção. Divida os grandes requisitos em menores, mensuráveis umes. Um bom texto de requisito contém um número (“menos de 3 segundos”, “15%”, “dentro das regiões da UE”).
-
Adicione links de derivação onde uma criança é uma reformulação concreta, não apenas uma parte. Lembre-se: um par pode ser unido por contenção ou derivação, nunca ambos.
-
Mapear o design em relação aos requisitos com
satisfazer. Cada bloco arquitetônico deve satisfazer pelo menos um requisito. Blocos que não satisfazem nada são candidatos à exclusão; requisitos não satisfeitos por nada são lacunas de cobertura. -
Mapear testes com
verificar. Cada requisito precisa de um caminho de verificação. Requisitos não verificados por nada são não testáveis — um sinal de alerta. -
Use
rastreioapenas quando nada mais se encaixa. É a saída de emergência para associações frouxas; o uso excessivo dilui o valor. -
Mantenha-o com menos de ~24 elementos. Diagramas grandes tornam-se ilegíveis. Divida por subsistema ou por categoria de requisito (segurança, desempenho, funcional).
As três perguntas de cobertura
Execute esta lista de verificação em cada diagrama de requisitos:
-
Todos os requisitos estão satisfeitos?(se for um requisito do sistema, algo deve realizá-lo)
-
Todos os requisitos estão verificados?(algo deve prová-lo)
-
Todos os requisitos rastreiam até uma necessidade?(sem requisitos órfãos flutuando sem justificativa de negócio)
Qualquer “não” é uma constatação.
5. Aplicando-o a Sistemas de TI — Padrões e Armadilhas
Boas práticas
-
Separe os requisitos tipos visualmente. Você pode estereotipar requisitos (
«funcional»,«desempenho»,«segurança»,«usabilidade») para que os requisitos não funcionais se destaquem dos funcionais. -
Mantenha a hierarquia de IDs significativa.
2.3.4deve indicar ao leitor que este requisito está sob o módulo 2, funcionalidade 3, subfuncionalidade 4. A consistência entre diagramas e sua ferramenta de ALM é importante. -
Modele a origem. Adicione um
origempropriedade (regulatória, nome da parte interessada, documento de requisitos de mercado). A rastreabilidade para origem é frequentemente mais importante do que a rastreabilidade ao design. -
Um diagrama, uma preocupação. Um diagrama de satisfação (revisão de design) e um diagrama de verificação (revisão de teste) têm públicos diferentes. Não agrupe ambos, além de toda a hierarquia, em uma única imagem.
Armadilhas comuns
-
Confusão entre derivação e contenção. Eles parecem semelhantes, mas significam coisas diferentes. A contenção é decomposição estrutural; a derivação é evolução lógica da intenção. Misturá-los (ou desenhar ambos entre um par) torna o modelo inválido.
-
Referenciar por ID em vez de alias. Na ferramenta, as relações vinculam-se ao elemento aliases, não às strings de ID legíveis por humanos. Defina o alias corretamente, caso contrário, a relação silenciosamente não apontará para nada.
-
Tratar
rastreiocomosatisfazer. Um link de rastreio não afirma que o alvo cumpre algo. Se você quer dizer “este componente implementa este requisito”, use`«satisfazer»`. -
Requisitos sem número. “O sistema deve ser rápido” não pode ser verificado. Um requisito sem um limite mensurável é um desejo, não um requisito.
-
Permitir que o diagrama se torne a especificação. O diagrama mostra relacionamentos; o requisito texto e propriedadescarregam os detalhes. Mantenha o texto preciso e anexe propriedades (status, prioridade, risco) para que o modelo seja consultável.
6. Ferramentas
Você pode renderizar esses diagramas diretamente a partir da fonte PlantUML mostrada acima usando VPasCode — cole o código e o diagrama é renderizado imediatamente. A partir daí, você também pode exportá-lo ou refiná-lo.
Referência rápida: macros de elementos e relacionamentos

$requirement("Nome", alias, "id", "Texto do requisito")
$block("NomeBloco", alias)
$testCase("NomeCasoDeTeste", alias)
$containment(aliasPai, aliasFilho)
$deriveReqt(aliasFilho, aliasPai)
$satisfy(aliasBloco, aliasRequisito)
$verify(aliasCasoDeTeste, aliasRequisito)
$refine(aliasModelo, aliasRequisito)
$trace(aliasOrigem, aliasDestino)
$copy(aliasOrigem, aliasDestino)
Resumo
Um diagrama de requisitos é o esqueleto de rastreabilidade de um modelo. Para sistemas de TI, ele responde às três perguntas que toda auditoria, revisão de design e solicitação de alteração faz: Por que isso existe? O que o implementa? O que o comprova? Usado corretamente — com texto de requisito mensurável, semântica de relacionamento correta e verificações de cobertura disciplinadas — ele transforma requisitos de um documento estático em um modelo vivo e consultável que mantém o design, o código e os testes alinhados com a intenção de negócio.
Referência
- VPasCode: Diagrama como Código Assistido por IA com PlantUML, Mermaid e Graphviz: Guia oficial que cobre geração de diagramas assistida por IA, fluxos de trabalho de modificação e suporte a múltiplos DSLs, incluindo PlantUML, Mermaid e Graphviz.
- Visual Paradigm VPasCode: Guia Completo: Visão geral detalhada das funcionalidades do VPasCode, dos usuários-alvo (desenvolvedores, arquitetos, analistas) e de seu papel nos fluxos de trabalho de documentação ágil.
- Bem-vindo ao Visual Paradigm VPasCode: A Transição para Diagramas como Código (DaC): Introdução à plataforma unificada, explicando as vantagens dos fluxos de trabalho de texto para diagrama e da engenharia de layout automatizada.
- Guia Rápido de Início em 60 Segundos | Guia de Texto para Diagrama do VPasCode: Passo a passo para criar, personalizar e exportar diagramas usando o editor baseado em navegador com visualização em tempo real.
- Novidades no VPasCode: Gerador de Diagramas de Perfil UML com IA: Atualização do produto que introduz a geração de Diagramas de Perfil UML com IA usando prompts em inglês simples, com exemplo para conformidade de privacidade de dados na área da saúde.
- Geração Nativa de Diagramas com IA no Visual Paradigm VPasCode: Anúncio de capacidades de IA embutidas para gerar, modificar e corrigir diagramas por meio de prompts em linguagem natural diretamente no editor.
- Gerador de Diagramas com IA e Ferramentas de Produtividade | VPasCode: Visão geral das integrações do VPasCode com chatbots de IA, Visual Paradigm Desktop e OpenDocs para fluxos de trabalho de documentação otimizados.
- Melhores Alternativas ao PlantUML e Editores Gratuitos de Diagramas como Código: Matriz de comparação de alternativas ao PlantUML, destacando o suporte do VPasCode a múltiplas DSLs, recursos de IA e sua abordagem baseada em navegador sem necessidade de configuração.
- Editor de Diagramas como Código: Converta Texto em Diagrama Instantaneamente: Visão geral das funcionalidades que inclui detecção automática de formato, renderização em tempo real e opções de exportação em múltiplos formatos (SVG, PNG, PDF).
- Guia do Ecossistema Visual Paradigm: Explica quando usar o VPasCode em vez do VP Desktop, com orientações sobre a manutenção de diagramas com controle de versão e integração com documentação viva.
This post is also available in Deutsch, English, فارسی, English, Bahasa Indonesia, Polski and 简体中文.







