Kravdiagram
Et kravdiagram giver en visualisering af krav og deres indbyrdes forbindelser samt deres relationer til andre dokumentelementer.
Kopiér
Integrer
requirementDiagram
requirement test_req {
id: 1
text: the test text.
risk: high
verifymethod: test
}
element test_entity {
type: simulation
}
test_entity - satisfies -> test_req
Syntaks
Et kravdiagram indeholder tre komponenter: krav, elementer og relationer.
Ord i kantede parenteser er enum-nøgleord, f.eks. , og deres muligheder er beskrevet i detaljer i tabellen. user_defined... bruges overalt, hvor der kræves brugerinput.
Vigtig bemærkning om brugertekst: Alle input kan omsluttes med dobbelte anførselstegn eller stå uden. Brugeren skal dog være forsigtig, når input ikke er i anførselstegn. Hvis der registreres andre nøgleord, mislykkes editorens rendering.
Krav
En kravdefinition indeholder kravtype, navn, ID, tekst, risiko og verifikationsmetode. Syntaksen er som følger:
Kopiér
Integrer
<type> user_defined_name {
id: user_defined_id
text: user_defined text
risk: <risk>
verifymethod: <method>
}
Type, risiko og metode er enums, der er defineret i SysML.
| Nøgleord | Indstillinger |
|---|---|
| Type | requirement, functionalRequirement, interfaceRequirement, performanceRequirement, physicalRequirement, designConstraint |
| Risiko | Low, Medium, High |
| Verifikationsmetode | Analysis, Inspection, Test, Demonstration |
Element
En elementdefinition indeholder elementnavn, type og dokumentreference, hvor alle tre er brugerdefinerede. Elementfunktionen er designet til at være letvægts, samtidig med at den gør det muligt at knytte krav til dele af andre dokumenter.
Kopiér
Integrer
element myElement {
type: string
docref: some/doc/path
}
Markdown-format
Steder, hvor brugeren kan tilpasse tekst (f.eks. navne, kravtekst, elementdokumentreferencer osv.), giver dig mulighed for:
- at omslutte teksten med dobbelte anførselstegn
- at bruge markdown-format inden i de dobbelte anførselstegn
Kopiér
Integrer
requirementDiagram
requirement "__test_req__" {
id: 1
text: "*italicized text* **bold text**"
risk: high
verifymethod: test
}
Relation
En relation består af en kildenode, en målnode og en relationstype.
Følg følgende definitionsformat:
Kopiér
Integrer
{name of source} - <type> -> {name of destination}
eller
Kopiér
Integrer
{name of destination} <- <type> - {name of source}
"Kildenode" og "målnode" skal være navnene på krav- eller elementknuder, der er defineret andre steder.
Relationstypen kan være en af følgende: contains, copies, derives, satisfies, verifies, refines eller traces.
Detaljeret eksempel
Dette eksempel bruger alle diagrammets funktioner.
Kopiér
Integrer
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
Retning
Du kan bruge direction-udsagnet til at rendere diagrammet i forskellige retninger. Gyldige værdier er:
- TB - fra top til bund (standard)
- BT - fra bund til top
- LR - fra venstre til højre
- RL - fra højre til venstre
Kopiér
Integrer
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
Stil
Krav og elementer kan styles med direkte stil eller klasser. Generelt accepterer man, når man anvender stil eller klasser, en liste over krav- eller elementnavne samt en liste over klassenavne, så flere klasser kan tildeles på én gang. Den eneste undtagelse er den korte syntaks :::, hvor operatoren kan tildele flere klasser, men kun til ét krav eller element ad gangen.
Direkte stil
Kopiér
Integrer
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
En klassedefinition er som vist i følgende eksempel:
Brug classDef til at definere genanvendelige stile:
Kopiér
Integrer
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
Standardklasse
Hvis en klasse hedder default, anvendes den på alle knuder. Specifikke stile og klasser bør defineres efterfølgende for at tilsidesætte den anvendte standardstil.
Kopiér
Integrer
classDef default fill:pink,stroke:#333,stroke-width:4px;
Anvend klasse
Klasser kan anvendes på to måder:
1. Brug class-syntaksen:
Kopiér
Integrer
class test_req,test_entity important
2. Brug operatoren ::: (kort syntaks) under eller efter definitionen:
Kopiér
Integrer
requirement test_req:::important {
id: 1
text: class styling example
risk: low
verifymethod: test
}
Kopiér
Integrer
element test_elem {}
test_elem:::myClass
Kombineret eksempel
Kopiér
Integrer
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