Diagramma dei requisiti
Il diagramma dei requisiti offre una visualizzazione dei requisiti e delle loro connessioni reciproche, nonché delle relazioni con altri elementi documentali.
Copia
Incorpora
requirementDiagram
requirement test_req {
id: 1
text: the test text.
risk: high
verifymethod: test
}
element test_entity {
type: simulation
}
test_entity - satisfies -> test_req
Sintassi
Il diagramma dei requisiti contiene tre componenti: requisiti, elementi e relazioni.
Le parole indicate tra parentesi angolari sono parole chiave di enumerazione, come , le cui opzioni sono dettagliate nella tabella. user_defined... è usato ovunque sia richiesto un input dell'utente.
Nota importante sul testo dell'utente: tutti gli input possono essere racchiusi tra virgolette doppie oppure no. Tuttavia, l'utente deve prestare attenzione quando usa input senza virgolette. Se vengono rilevate altre parole chiave, l'editor non riuscirà a eseguire il rendering.
Requisito
La definizione di un requisito comprende tipo di requisito, nome, ID, testo, rischio e metodo di verifica. La sintassi è la seguente:
Copia
Incorpora
<type> user_defined_name {
id: user_defined_id
text: user_defined text
risk: <risk>
verifymethod: <method>
}
Tipo, rischio e metodo sono enumerazioni definite in SysML.
| Parola chiave | Opzioni |
|---|---|
| Tipo | requisito, requisito funzionale, requisito di interfaccia, requisito di prestazione, requisito fisico, vincolo di progettazione |
| Rischio | basso, medio, alto |
| Metodo di verifica | analisi, ispezione, test, dimostrazione |
Elemento
La definizione di un elemento comprende il nome dell'elemento, il tipo e il riferimento documentale, tutti e tre definiti dall'utente. La funzionalità degli elementi è pensata per rimanere leggera, consentendo al contempo di collegare i requisiti a parti di altri documenti.
Copia
Incorpora
element myElement {
type: string
docref: some/doc/path
}
Formato Markdown
Dove è consentito all'utente di personalizzare il testo (ad esempio nomi, testo dei requisiti, riferimenti documentali degli elementi), puoi:
- Racchiudere il testo tra virgolette doppie
- Usare il formato markdown all'interno delle virgolette doppie
Copia
Incorpora
requirementDiagram
requirement "__test_req__" {
id: 1
text: "*italicized text* **bold text**"
risk: high
verifymethod: test
}
Relazione
Una relazione è composta da nodo di origine, nodo di destinazione e tipo di relazione.
Seguendo il seguente formato di definizione:
Copia
Incorpora
{name of source} - <type> -> {name of destination}
oppure
Copia
Incorpora
{name of destination} <- <type> - {name of source}
"Nodo di origine" e "Nodo di destinazione" devono essere nomi di nodi requisito o elemento definiti altrove.
Il tipo di relazione può essere uno tra: contiene, copia, deriva, soddisfa, verifica, affina o traccia.
Caso dettagliato
Questo esempio utilizza tutte le funzionalità di questo diagramma.
Copia
Incorpora
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
Direzione
Puoi usare l'istruzione direction per renderizzare il diagramma in direzioni diverse; i valori validi sono:
- TB - dall'alto verso il basso (predefinito)
- BT - dal basso verso l'alto
- LR - da sinistra verso destra
- RL - da destra verso sinistra
Copia
Incorpora
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
Stile
Requisiti ed elementi possono essere stilizzati usando stili diretti o classi. In generale, quando si applica uno stile o una classe, si accetta un elenco di nomi di requisiti o elementi e un elenco di nomi di classi, permettendo così di assegnare più classi in una volta. L'unica eccezione è la sintassi abbreviata :::, in cui l'operatore può assegnare più classi ma solo a un requisito o elemento alla volta.
Stile diretto
Copia
Incorpora
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 definizione della classe è mostrata nell'esempio seguente:
Usare classDef per definire stili riutilizzabili:
Copia
Incorpora
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 predefinita
Se una classe è chiamata default, verrà applicata a tutti i nodi. Gli stili e le classi specifici dovrebbero essere definiti dopo, per sovrascrivere lo stile predefinito già applicato.
Copia
Incorpora
classDef default fill:pink,stroke:#333,stroke-width:4px;
Classe applicata
Le classi possono essere applicate in due modi:
1. Usare la sintassi class:
Copia
Incorpora
class test_req,test_entity important
2. Usare la sintassi abbreviata con l'operatore ::: durante o dopo la definizione:
Copia
Incorpora
requirement test_req:::important {
id: 1
text: class styling example
risk: low
verifymethod: test
}
Copia
Incorpora
element test_elem {}
test_elem:::myClass
Esempio combinato
Copia
Incorpora
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