Register
Process Type
Graphical expression
Mind Type
Structured expression
Note Type
Efficient expression

KravdiagramSyntaks

Kravdiagram

Et kravdiagram giver en visualisering af krav og deres indbyrdes forbindelser samt deres relationer til andre dokumentelementer.

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

Kode
                            
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
Kode
                            
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

Kode
                            
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:

Kode
                            
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

Kode
                            
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