Diagrammes de flux
Expression graphique
Cartes mentales
Expression structurée
Notes
Expression efficace

Diagramme d'exigencesSyntaxe

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.

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

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

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

Code
                            
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

Code
                            
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