Requirement diagram
Official Mermaid documentation: Requirement diagram.
Note
All Mermaid diagrams can be configured, by passing a MermaidConfig
object to any of the methods in the Mermaid
class. Read more on Mermaid configuration.
Simple diagram
The following code sample shows how to create a simple Mermaid requirement diagram.
Use the RequirementDiagram
method of the Mermaid
class to create a requirement diagram.
Add requirements with the AddRequirement
method.
Add elements with the AddElement
method.
Add relationships with the AddRelationship
method.
Generate the diagram mermaid code with the Build
method.
string diagram = Mermaid
.RequirementDiagram()
.AddRequirement("Requirement 1", out var requirement1)
.AddRequirement("Requirement 2", out var requirement2)
.AddElement("Element 1", out var element1)
.AddElement("Element 2", out var element2)
.AddRelationship(element1, requirement1, RelationshipType.Satisfies)
.AddRelationship(element2, requirement2, RelationshipType.Satisfies)
.Build();
The code above generates the following Mermaid code:
requirementDiagram
requirement "Requirement 1" {
}
requirement "Requirement 2" {
}
element "Element 1" {
}
element "Element 2" {
}
"Element 1" - satisfies -> "Requirement 1"
"Element 2" - satisfies -> "Requirement 2"
That renders as:
requirementDiagram
requirement "Requirement 1" {
}
requirement "Requirement 2" {
}
element "Element 1" {
}
element "Element 2" {
}
"Element 1" - satisfies -> "Requirement 1"
"Element 2" - satisfies -> "Requirement 2"
Relationship types
Relationship type can be set by setting the type
parameter of the AddRelationship
method.
The following relationship types are available:
Contains
Copies
Derives
Satisfies
Verifies
Refines
Traces
Example:
string diagram = Mermaid
.RequirementDiagram()
.AddRequirement("Requirement 1", out var requirement1)
.AddRequirement("Requirement 2", out var requirement2)
.AddElement("Element 1", out var element1)
.AddElement("Element 2", out var element2)
.AddRelationship(element1, requirement1, RelationshipType.Copies)
.AddRelationship(element2, requirement2, RelationshipType.Contains)
.Build();
The code above generates the following Mermaid code:
requirementDiagram
requirement "Requirement 1" {
}
requirement "Requirement 2" {
}
element "Element 1" {
}
element "Element 2" {
}
"Element 1" - copies -> "Requirement 1"
"Element 2" - contains -> "Requirement 2"
That renders as:
requirementDiagram
requirement "Requirement 1" {
}
requirement "Requirement 2" {
}
element "Element 1" {
}
element "Element 2" {
}
"Element 1" - copies -> "Requirement 1"
"Element 2" - contains -> "Requirement 2"
Requirement details
A requirement can have the following details:
ID
Text
Type
Risk
VerifyMethod
The ID
and Text
can contain any string value.
The Type
can have the following values:
Default
(default)Functional
Interface
Performance
Physical
Design
The Risk
can have the following values:
Undefined
(default)Low
Medium
High
The VerifyMethod
can have the following values:
Undefined
(default)Analysis
Inspection
Test
Demonstration
Example:
string diagram = Mermaid
.RequirementDiagram()
.AddRequirement("Requirement 1", out var requirement1, "REQ-001", "This is a requirement", RequirementType.Interface, RequirementRisk.High, RequirementVerificationMethod.Inspection)
.Build();
The code above generates the following Mermaid code:
requirementDiagram
interfaceRequirement "Requirement 1" {
id: "REQ-001"
text: "This is a requirement"
risk: High
verifyMethod: Inspection
}
That renders as:
requirementDiagram
interfaceRequirement "Requirement 1" {
id: "REQ-001"
text: "This is a requirement"
risk: High
verifyMethod: Inspection
}
Elements details
An element can have the following details:
Type
DocRef
Both can contain any string value.
Example:
string diagram = Mermaid
.RequirementDiagram()
.AddElement("Element 1", out var element1, "Type 1", "example.com/doc1")
.Build();
The code above generates the following Mermaid code:
requirementDiagram
element "Element 1" {
type: "Type 1"
docRef: "example.com/doc1"
}
That renders as:
requirementDiagram
element "Element 1" {
type: "Type 1"
docRef: "example.com/doc1"
}