Usage¶
RequirementDiagram allows the creation of requirement diagrams.
RequirementDiagram follows SysML V1.6
A requirement diagram consists of Requirements, Elements, and the Relationships between them.
Requirement¶
A requirement contains the requirement type, name, id, text, risk, and a verification method for showing that the requirement has been met.
Element¶
Elements typically provide references to other documents. They contain a name, type, and reference; all user defined.
Relationship¶
Relationships link Requirements and/or Elements. They contain the source node, destination node and link type.
Example¶
PHP¶
$testReq1 = new Requirement(
Type::requirement,
'test_req1',
'1',
'the test text.',
Risk::high,
VerificationMethod::test
);
$testReq2 = new Requirement(
Type::functionalRequirement,
'test_req2',
'1.1',
'the second test text.',
Risk::low,
VerificationMethod::inspection
);
$testReq3 = new Requirement(
Type::performanceRequirement,
'test_req3',
'1.2',
'the third test text.',
Risk::medium,
VerificationMethod::demonstration
);
$testReq4 = new Requirement(
Type::interfaceRequirement,
'test_req4',
'1.2.1',
'the fourth test text.',
Risk::medium,
VerificationMethod::analysis
);
$testReq5 = new Requirement(
Type::physicalRequirement,
'test_req5',
'1.2.2',
'the fifth test text.',
Risk::medium,
VerificationMethod::analysis
);
$testReq6 = new Requirement(
Type::designConstraint,
'test_req6',
'1.2.3',
'the sixth test text.',
Risk::medium,
VerificationMethod::analysis
);
$testEntity = new Element('test_entity', 'simulation');
$testEntity2 = new Element('test_entity2', 'word doc', 'reqs/test_entity');
$testEntity3 = new Element('test_entity3', 'test suite', 'github.com/all_the_tests');
echo Mermaid::create(RequirementDiagram::class)
->withRequirement($testReq1, $testReq2, $testReq3, $testReq4)
->withElement($testEntity, $testEntity2)
->withRelationship(
new Relationship($testEntity, $testReq2, RelationshipType::satisfies),
new Relationship($testReq1, $testReq2, RelationshipType::traces),
new Relationship($testReq1, $testReq3, RelationshipType::contains),
new Relationship($testReq3, $testReq4, RelationshipType::contains)
)
->addRequirement($testReq5, $testReq6)
->addElement($testEntity3)
->addRelationship(
new Relationship($testReq4, $testReq5, RelationshipType::derives),
new Relationship($testReq5, $testReq6, RelationshipType::refines),
new Relationship($testEntity3, $testReq5, RelationshipType::verifies),
new Relationship($testEntity2, $testReq1, RelationshipType::copies)
)
->render()
;
Generated Mermaid¶
<pre class="mermaid">
requirementDiagram
requirement "test_req1" {
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_req1 - traces -> test_req2
test_req1 - contains -> test_req3
test_req3 - contains -> test_req4
test_req4 - derives -> test_req5
test_req5 - refines -> test_req6
test_entity3 - verifies -> test_req5
test_entity2 - copies -> test_req1
</pre>
Mermaid Diagram¶
requirementDiagram
requirement "test_req1" {
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_req1 - traces -> test_req2
test_req1 - contains -> test_req3
test_req3 - contains -> test_req4
test_req4 - derives -> test_req5
test_req5 - refines -> test_req6
test_entity3 - verifies -> test_req5
test_entity2 - copies -> test_req1