de_DEen_USfa_IRhi_INid_IDpl_PLpt_PTzh_CN

VPasCode (Diagramas como Código) para Diagrama de Requisitos SysML — Um Guia Abrangente

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?” → sigaligações de satisfação até o requisito, eligações de derivação até a necessidade de negócios.

  • Rastrear para frente — “Este requisito foi verificado?” → sigaligações de verificação até 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)

  1. 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).

  2. 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”).

  3. 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.

  4. 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.

  5. 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.

  6. Use rastreio apenas quando nada mais se encaixa. É a saída de emergência para associações frouxas; o uso excessivo dilui o valor.

  7. 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.4 deve 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 origem propriedade (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 rastreio como satisfazer. 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

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. 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.
  7. 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.
  8. 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.
  9. 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).
  10. 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 简体中文.