Anforderungsdiagramm
Das Anforderungsdiagramm bietet eine Visualisierung von Anforderungen und ihren Verbindungen untereinander sowie ihrer Beziehungen zu anderen Dokumentelementen.
Kopieren
Einbetten
requirementDiagram
requirement test_req {
id: 1
text: the test text.
risk: high
verifymethod: test
}
element test_entity {
type: simulation
}
test_entity - satisfies -> test_req
Syntax
Das Anforderungsdiagramm enthält drei Arten von Komponenten: Anforderungen, Elemente und Beziehungen.
Wörter in spitzen Klammern sind Enumerationsschlüsselwörter, wie etwa , deren Optionen in der Tabelle ausführlich beschrieben werden. user_defined... wird überall dort verwendet, wo eine Benutzereingabe erforderlich ist.
Wichtiger Hinweis zu Benutzertext: Alle Eingaben können in doppelte Anführungszeichen gesetzt werden oder auch nicht. Benutzer müssen jedoch vorsichtig sein, wenn sie Eingaben ohne Anführungszeichen verwenden. Wenn andere Schlüsselwörter erkannt werden, schlägt das Rendering im Editor fehl.
Anforderung
Die Anforderungsdefinition enthält den Anforderungstyp, den Namen, die ID, den Text, das Risiko und die Verifizierungsmethode. Die Syntax lautet wie folgt:
Kopieren
Einbetten
<type> user_defined_name {
id: user_defined_id
text: user_defined text
risk: <risk>
verifymethod: <method>
}
Typ, Risiko und Methode sind in SysML definierte Enumerationen.
| Schlüsselwort | Optionen |
|---|---|
| Typ | Anforderung, funktionale Anforderung, Schnittstellenanforderung, Leistungsanforderung, physische Anforderung, Designeinschränkung |
| Risiko | Niedrig, Mittel, Hoch |
| Verifizierungsmethode | Analyse, Inspektion, Test, Vorführung |
Element
Die Elementdefinition enthält den Elementnamen, den Typ und die Dokumentreferenz, die alle drei benutzerdefiniert sind. Die Elementfunktion soll leichtgewichtig bleiben und gleichzeitig ermöglichen, Anforderungen mit Teilen anderer Dokumente zu verknüpfen.
Kopieren
Einbetten
element myElement {
type: string
docref: some/doc/path
}
Markdown-Format
Überall dort, wo benutzerdefinierter Text erlaubt ist (wie Name, Anforderungstext, Element-Dokumentreferenz usw.), kannst du:
- den Text in doppelte Anführungszeichen setzen
- innerhalb der doppelten Anführungszeichen das markdown-Format verwenden
Kopieren
Einbetten
requirementDiagram
requirement "__test_req__" {
id: 1
text: "*italicized text* **bold text**"
risk: high
verifymethod: test
}
Beziehung
Eine Beziehung besteht aus einem Quellknoten, einem Zielknoten und einem Beziehungstyp.
Es folgt dem folgenden Definitionsformat:
Kopieren
Einbetten
{name of source} - <type> -> {name of destination}
oder
Kopieren
Einbetten
{name of destination} <- <type> - {name of source}
"Quellknoten" und "Zielknoten" sollten die Namen von Anforderungs- oder Elementknoten sein, die an anderer Stelle definiert wurden.
Der Beziehungstyp kann einer von enthält, kopiert, abgeleitet, erfüllt, verifiziert, verfeinert oder verfolgt sein.
Ausführliches Beispiel
Dieses Beispiel verwendet alle Funktionen des Diagramms.
Kopieren
Einbetten
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
Richtung
Mit der direction-Anweisung kann das Diagramm in verschiedenen Richtungen gerendert werden; gültige Werte sind:
- TB - von oben nach unten (Standard)
- BT - von unten nach oben
- LR - von links nach rechts
- RL - von rechts nach links
Kopieren
Einbetten
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
Anforderungen und Elemente können mit direkten Stilen oder Klassen gestaltet werden. Im Allgemeinen akzeptiert es beim Anwenden eines Stils oder einer Klasse eine Liste von Anforderungs- oder Elementnamen sowie eine Liste von Klassennamen, wodurch mehrere Klassen auf einmal zugewiesen werden können. Die einzige Ausnahme ist die Kurzschreibweise :::, bei der der Operator mehrere Klassen zuweisen kann, aber jeweils nur einer Anforderung oder einem Element zugewiesen wird.
Direkter Stil
Kopieren
Einbetten
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
Die Klassendefinition ist im folgenden Beispiel dargestellt:
Verwende classDef, um wiederverwendbare Stile zu definieren:
Kopieren
Einbetten
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
Wenn eine Klasse default genannt wird, wird sie auf alle Knoten angewendet. Bestimmte Stile und Klassen sollten danach definiert werden, um den angewendeten Standardstil zu überschreiben.
Kopieren
Einbetten
classDef default fill:pink,stroke:#333,stroke-width:4px;
Anwendungsklasse
Klassen können auf zwei Arten angewendet werden:
1. Verwendung der class-Syntax:
Kopieren
Einbetten
class test_req,test_entity important
2. Verwendung der Kurzschreibweise mit dem Operator ::: während oder nach der Definition:
Kopieren
Einbetten
requirement test_req:::important {
id: 1
text: class styling example
risk: low
verifymethod: test
}
Kopieren
Einbetten
element test_elem {}
test_elem:::myClass
Kombinationsbeispiel
Kopieren
Einbetten
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