Diagrama de requisitos
O diagrama de requisitos fornece uma visualização dos requisitos e de suas conexões mútuas, bem como de suas relações com outros elementos de documento.
Copiar
Incorporar
requirementDiagram
requirement test_req {
id: 1
text: the test text.
risk: high
verifymethod: test
}
element test_entity {
type: simulation
}
test_entity - satisfies -> test_req
Sintaxe
O diagrama de requisitos contém três componentes: requisitos, elementos e relações.
As palavras representadas por colchetes angulares são palavras-chave de enumeração, como , cujas opções são detalhadas na tabela. user_defined... é usado em qualquer lugar que exija entrada do usuário.
Observação importante sobre o texto do usuário: todas as entradas podem ser colocadas entre aspas duplas ou não. No entanto, o usuário deve ter cuidado ao usar entradas sem aspas. Se outras palavras-chave forem detectadas, o editor falhará ao renderizar.
Requisito
A definição de requisito contém o tipo de requisito, nome, ID, texto, risco e método de verificação. A sintaxe é a seguinte:
Copiar
Incorporar
<type> user_defined_name {
id: user_defined_id
text: user_defined text
risk: <risk>
verifymethod: <method>
}
Tipo, risco e método são enumerações definidas no SysML.
| Palavra-chave | Opções |
|---|---|
| Tipo | Requisito, requisito funcional, requisito de interface, requisito de desempenho, requisito físico, restrição de projeto |
| Risco | Baixo, médio, alto |
| Método de verificação | Análise, inspeção, teste, demonstração |
Elemento
A definição de elemento contém o nome do elemento, o tipo e a referência de documento, e os três são definidos pelo usuário. O recurso de elemento tem como objetivo permanecer leve, ao mesmo tempo que permite associar requisitos a partes do conteúdo de outros documentos.
Copiar
Incorporar
element myElement {
type: string
docref: some/doc/path
}
Formato Markdown
Onde é permitido ao usuário personalizar texto (como nomes, texto de requisitos, referências de documento de elemento etc.), você pode:
- Colocar o texto entre aspas duplas
- Usar formatação markdown dentro das aspas duplas
Copiar
Incorporar
requirementDiagram
requirement "__test_req__" {
id: 1
text: "*italicized text* **bold text**"
risk: high
verifymethod: test
}
Relação
As relações são compostas por nó de origem, nó de destino e tipo de relação.
Seguindo o formato de definição abaixo:
Copiar
Incorporar
{name of source} - <type> -> {name of destination}
ou
Copiar
Incorporar
{name of destination} <- <type> - {name of source}
"Nó de origem" e "nó de destino" devem ser os nomes de nós de requisito ou elemento definidos em outro lugar.
O tipo de relação pode ser um dos seguintes: conter, copiar, derivar, satisfazer, verificar, refinar ou rastrear.
Exemplo detalhado
Este exemplo usa todos os recursos desse diagrama.
Copiar
Incorporar
requirementDiagram
requirement test_req {
id: 1
text: the test text.
risk: high
verifymethod: test
}
functionalRequirement test_req2 {
id: 1.1
text: the second test text.
risk: low
verifymethod: inspection
}
performanceRequirement test_req3 {
id: 1.2
text: the third test text.
risk: medium
verifymethod: demonstration
}
interfaceRequirement test_req4 {
id: 1.2.1
text: the fourth test text.
risk: medium
verifymethod: analysis
}
physicalRequirement test_req5 {
id: 1.2.2
text: the fifth test text.
risk: medium
verifymethod: analysis
}
designConstraint test_req6 {
id: 1.2.3
text: the sixth test text.
risk: medium
verifymethod: analysis
}
element test_entity {
type: simulation
}
element test_entity2 {
type: word doc
docRef: reqs/test_entity
}
element test_entity3 {
type: "test suite"
docRef: github.com/all_the_tests
}
test_entity - satisfies -> test_req2
test_req - traces -> test_req2
test_req - contains -> test_req3
test_req3 - contains -> test_req4
test_req4 - derives -> test_req5
test_req5 - refines -> test_req6
test_entity3 - verifies -> test_req5
test_req <- copies - test_entity2
Direção
É possível usar a instrução direction para renderizar o gráfico em direções diferentes; os valores válidos são:
- TB - de cima para baixo (padrão)
- BT - de baixo para cima
- LR - da esquerda para a direita
- RL - da direita para a esquerda
Copiar
Incorporar
requirementDiagram
direction LR
requirement test_req {
id: 1
text: the test text.
risk: high
verifymethod: test
}
element test_entity {
type: simulation
}
test_entity - satisfies -> test_req
Estilo
Requisitos e elementos podem ser estilizados usando estilo direto ou classes. Em geral, ao aplicar um estilo ou classe, aceita-se uma lista de nomes de requisitos ou elementos e uma lista de nomes de classes, permitindo atribuir várias classes de uma vez. A única exceção é a sintaxe abreviada :::, em que o operador pode atribuir várias classes, mas apenas a um requisito ou elemento por vez.
Estilo direto
Copiar
Incorporar
requirementDiagram
requirement test_req {
id: 1
text: styling example
risk: low
verifymethod: test
}
element test_entity {
type: simulation
}
style test_req fill:#ffa,stroke:#000, color: green
style test_entity fill:pink,stroke:#333, color: blue
A definição de classe é mostrada no exemplo a seguir:
Usar classDef para definir estilos reutilizáveis:
Copiar
Incorporar
requirementDiagram
requirement test_req {
id: 1
text: "class styling example"
risk: low
verifymethod: test
}
element test_entity {
type: simulation
}
classDef important fill:#f96,stroke:#333,stroke-width:4px
classDef test fill:#ffa,stroke:#000
Classe padrão
Se uma classe for chamada default, ela será aplicada a todos os nós. Estilos e classes específicos devem ser definidos depois disso, para sobrescrever o estilo padrão já aplicado.
Copiar
Incorporar
classDef default fill:pink,stroke:#333,stroke-width:4px;
Classe de aplicação
As classes podem ser aplicadas de duas maneiras:
1. Usar a sintaxe class:
Copiar
Incorporar
class test_req,test_entity important
2. Usar a sintaxe abreviada do operador ::: durante ou após a definição:
Copiar
Incorporar
requirement test_req:::important {
id: 1
text: class styling example
risk: low
verifymethod: test
}
Copiar
Incorporar
element test_elem {}
test_elem:::myClass
Exemplo de combinação
Copiar
Incorporar
requirementDiagram
requirement test_req:::important {
id: 1
text: "class styling example"
risk: low
verifymethod: test
}
element test_entity {
type: simulation
}
classDef important font-weight:bold
class test_entity important
style test_entity fill:pink,stroke:#333