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:
ContainsCopiesDerivesSatisfiesVerifiesRefinesTraces
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:
IDTextTypeRiskVerifyMethod
The ID and Text can contain any string value.
The Type can have the following values:
Default(default)FunctionalInterfacePerformancePhysicalDesign
The Risk can have the following values:
Undefined(default)LowMediumHigh
The VerifyMethod can have the following values:
Undefined(default)AnalysisInspectionTestDemonstration
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:
TypeDocRef
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"
}