Diagramme d'exigences
Le diagramme d'exigences fournit une visualisation des exigences et de leurs interconnexions, ainsi que de leurs relations avec d'autres éléments de document.
Copier
Intégrer
requirementDiagram
requirement test_req {
id: 1
text: the test text.
risk: high
verifymethod: test
}
element test_entity {
type: simulation
}
test_entity - satisfies -> test_req
Syntaxe
Le diagramme d'exigences comporte trois types de composants : les exigences, les éléments et les relations.
Les mots entre chevrons sont des mots-clés d'énumération, comme , dont les options sont détaillées dans le tableau. user_defined... s'utilise partout où une saisie de l'utilisateur est requise.
Remarque importante sur le texte saisi par l'utilisateur : toutes les saisies peuvent être entourées de guillemets doubles ou non. Toutefois, l'utilisateur doit faire preuve de prudence lorsqu'il utilise une saisie sans guillemets. Si d'autres mots-clés sont détectés, le rendu de l'éditeur échouera.
Exigence
La définition d'une exigence comprend le type d'exigence, le nom, l'ID, le texte, le risque et la méthode de vérification. La syntaxe est la suivante :
Copier
Intégrer
<type> user_defined_name {
id: user_defined_id
text: user_defined text
risk: <risk>
verifymethod: <method>
}
type, risk et method sont des énumérations définies dans SysML.
| Mot-clé | Options |
|---|---|
| Type | Exigence, exigence fonctionnelle, exigence d'interface, exigence de performance, exigence physique, contrainte de conception |
| Risque | Faible, Moyen, Élevé |
| Méthode de vérification | Analyse, Inspection, Test, Démonstration |
Élément
La définition d'un élément comprend le nom de l'élément, son type et la référence au document, ces trois éléments étant définis par l'utilisateur. La fonctionnalité d'élément vise à rester légère tout en permettant d'associer une exigence à une partie d'un autre document.
Copier
Intégrer
element myElement {
type: string
docref: some/doc/path
}
Format Markdown
Là où l'utilisateur est autorisé à personnaliser le texte (comme le nom, le texte de l'exigence, la référence au document de l'élément, etc.), vous pouvez :
- Mettre le texte entre guillemets doubles
- Utiliser la mise en forme markdown à l'intérieur des guillemets doubles
Copier
Intégrer
requirementDiagram
requirement "__test_req__" {
id: 1
text: "*italicized text* **bold text**"
risk: high
verifymethod: test
}
Relation
Une relation est composée du nœud source, du nœud cible et du type de relation.
Respecte le format de définition suivant :
Copier
Intégrer
{name of source} - <type> -> {name of destination}
ou
Copier
Intégrer
{name of destination} <- <type> - {name of source}
"nœud source" et "nœud cible" doivent être les noms de nœuds d'exigence ou d'élément définis ailleurs.
Le type de relation peut être l'un des suivants : contient, copie, dérive, satisfait, vérifie, affine ou trace.
Cas détaillé
Cet exemple utilise toutes les fonctionnalités de ce diagramme.
Copier
Intégrer
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
Direction
Vous pouvez utiliser l'instruction direction pour rendre le diagramme dans différentes directions ; les valeurs valides sont :
- TB - de haut en bas (par défaut)
- BT - de bas en haut
- LR - de gauche à droite
- RL - de droite à gauche
Copier
Intégrer
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
Style
Les exigences et les éléments peuvent être stylisés à l'aide de styles directs ou de classes. En général, lors de l'application d'un style ou d'une classe, cela accepte une liste de noms d'exigences ou d'éléments ainsi qu'une liste de noms de classes, ce qui permet d'attribuer plusieurs classes à la fois. La seule exception est la syntaxe abrégée ::: , où l'opérateur peut attribuer plusieurs classes, mais à une seule exigence ou un seul élément à la fois.
Style direct
Copier
Intégrer
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 définition de classe est illustrée par l'exemple suivant :
Utiliser classDef pour définir des styles réutilisables :
Copier
Intégrer
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 par défaut
Si une classe est nommée default, elle sera appliquée à tous les nœuds. Les styles et classes spécifiques doivent être définis après, afin de remplacer le style par défaut appliqué.
Copier
Intégrer
classDef default fill:pink,stroke:#333,stroke-width:4px;
Classe applicative
Une classe peut être appliquée de deux manières :
1. Utiliser la syntaxe class :
Copier
Intégrer
class test_req,test_entity important
2. Utiliser la syntaxe abrégée avec l'opérateur ::: pendant ou après la définition :
Copier
Intégrer
requirement test_req:::important {
id: 1
text: class styling example
risk: low
verifymethod: test
}
Copier
Intégrer
element test_elem {}
test_elem:::myClass
Exemple de combinaison
Copier
Intégrer
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