Diagrama de requisitos
El diagrama de requisitos ofrece una visualización de los requisitos y de sus relaciones de conexión entre sí, así como de sus relaciones con otros elementos de documentación.
Copiar
Insertar
requirementDiagram
requirement test_req {
id: 1
text: the test text.
risk: high
verifymethod: test
}
element test_entity {
type: simulation
}
test_entity - satisfies -> test_req
Sintaxis
El diagrama de requisitos contiene tres tipos de componentes: requisitos, elementos y relaciones.
Las palabras representadas con corchetes angulares son palabras clave de enumeración, como , cuyas opciones se detallan en la tabla. user_defined... se usa en cualquier lugar donde se requiera la entrada del usuario.
Nota importante sobre el texto del usuario: todas las entradas pueden ir entre comillas dobles o sin ellas. Sin embargo, el usuario debe tener cuidado al usar entradas sin comillas. Si se detectan otras palabras clave, el editor no podrá renderizar.
Requisito
La definición de un requisito contiene el tipo de requisito, el nombre, el ID, el texto, el riesgo y el método de verificación. La sintaxis es la siguiente:
Copiar
Insertar
<type> user_defined_name {
id: user_defined_id
text: user_defined text
risk: <risk>
verifymethod: <method>
}
Tipo, riesgo y método son enumeraciones definidas en SysML.
| Palabra clave | Opciones |
|---|---|
| Tipo | Requisito, requisito funcional, requisito de interfaz, requisito de rendimiento, requisito físico, restricción de diseño |
| Riesgo | Bajo, Medio, Alto |
| Método de verificación | Análisis, Inspección, Prueba, Demostración |
Elemento
La definición de un elemento contiene el nombre del elemento, el tipo y la referencia documental, y los tres son definidos por el usuario. La función de elementos pretende mantenerse ligera y, a la vez, permitir asociar los requisitos con partes de otros documentos.
Copiar
Insertar
element myElement {
type: string
docref: some/doc/path
}
Formato Markdown
Donde se permite al usuario personalizar el texto (como el nombre, el texto del requisito, la referencia documental del elemento, etc.), puedes:
- Encerrar el texto entre comillas dobles
- Usar formato markdown dentro de las comillas dobles
Copiar
Insertar
requirementDiagram
requirement "__test_req__" {
id: 1
text: "*italicized text* **bold text**"
risk: high
verifymethod: test
}
Relación
Una relación se compone del nodo de origen, el nodo de destino y el tipo de relación.
Sigue el siguiente formato de definición:
Copiar
Insertar
{name of source} - <type> -> {name of destination}
o
Copiar
Insertar
{name of destination} <- <type> - {name of source}
"Nodo de origen" y "nodo de destino" deben ser los nombres de nodos de requisito o elemento definidos en otro lugar.
El tipo de relación puede ser uno de: contiene, copia, deriva, satisface, verifica, refina o traza.
Caso detallado
Este ejemplo usa todas las funciones de este diagrama.
Copiar
Insertar
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
Dirección
Puedes usar la sentencia direction para renderizar el gráfico en distintas direcciones; los valores válidos son:
- TB - de arriba hacia abajo (predeterminado)
- BT - de abajo hacia arriba
- LR - de izquierda a derecha
- RL - de derecha a izquierda
Copiar
Insertar
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
Los requisitos y los elementos pueden estilizarse con estilos directos o con clases. En general, al aplicar un estilo o una clase, acepta una lista de nombres de requisito o elemento y una lista de nombres de clase, lo que permite asignar varias clases a la vez. La única excepción es la sintaxis abreviada :::, donde el operador puede asignar varias clases, pero solo a un requisito o elemento a la vez.
Estilo directo
Copiar
Insertar
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
La definición de clase es como en el siguiente ejemplo:
Definir estilos reutilizables con classDef:
Copiar
Insertar
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
Clase predeterminada
Si una clase se llama default, se aplicará a todos los nodos. Los estilos y clases específicos deben definirse después de esto, para sobrescribir el estilo predeterminado ya aplicado.
Copiar
Insertar
classDef default fill:pink,stroke:#333,stroke-width:4px;
Clase de aplicación
Las clases pueden aplicarse de dos formas:
1. Usando la sintaxis class:
Copiar
Insertar
class test_req,test_entity important
2. Con la sintaxis abreviada del operador ::: durante o después de la definición:
Copiar
Insertar
requirement test_req:::important {
id: 1
text: class styling example
risk: low
verifymethod: test
}
Copiar
Insertar
element test_elem {}
test_elem:::myClass
Ejemplo combinado
Copiar
Insertar
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