Mermaid学习教程,Mermaid画流程图,Mermaid语法讲解,Mermaid使用方法介绍,Mermaid中文参考文档,Mermaid绘图步骤

需求图

需求图提供了需求及其相互之间和其他文档化元素之间的连接的可视化。建模规范遵循 SysML v1.6 定义的规范。

渲染要求很简单。

    requirementDiagram

    requirement test_req {
    id: 1
    text: the test text.
    risk: high
    verifymethod: test
    }

    element test_entity {
    type: simulation
    }

    test_entity - satisfies -> test_req
<<Requirement>>test_reqId: 1Text: the test text.Risk: HighVerification: Test<<Element>>test_entityType: simulationDoc Ref: None<<satisfies>>

句法

需求图包含三种类型的组件:需求、元素和关系。

定义每个的语法定义如下。尖括号中表示的单词,例如<word>,是枚举关键字,在表格中详细说明了选项。user_defined_...在需要用户输入的任何地方使用。

关于用户文本的重要说明:所有输入都可以用引号括起来或不括起来。例如,两者Id: "here is an example"Id: here is an example有效。但是,用户必须小心未引用的输入。如果检测到另一个关键字,解析器将失败。

要求

需求定义包含一个需求

type, name, id, text, risk, and verificationmethod

. 语法如下:

<type> user_defined_name {
    id: user_defined_id
    text: user_defined text
    risk: <risk>
    verifymethod: <method>
}

Type, risk, and method

是 SysML 中定义的枚举。

关键词 选项
Type 需求、功能需求、接口需求、性能需求、物理需求、设计约束
Risk 低中高
VerificationMethod 分析、检验、测试、演示

元素

元素定义包含元素名称、类型和文档引用。这三个都是用户定义的。元素功能旨在轻量级,但允许将需求连接到其他文档的部分。

element user_defined_name {
    type: user_defined_type
    docref: user_defined_ref
}

关系

关系由源节点、目标节点和关系类型组成。

每个都遵循的定义格式

{name of source} - <type> -> {name of destination}

或者

{name of destination} <- <type> - {name of source}

“源名称”和“目标名称”应该是在别处定义的需求或元素节点的名称。

关系类型可以是包含、复制、派生、满足、验证、细化或跟踪之一。

每个关系都在图中标出。

更大的例子

此示例使用图表的所有功能。

    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
<<Requirement>>test_reqId: 1Text: the test text.Risk: HighVerification: Test<<Functional Requirement>>test_req2Id: 1.1Text: the second test text.Risk: LowVerification: Inspection<<Performance Requirement>>test_req3Id: 1.2Text: the third test text.Risk: MediumVerification: Demonstration<<Interface Requirement>>test_req4Id: 1.2.1Text: the fourth test text.Risk: MediumVerification: Analysis<<Physical Requirement>>test_req5Id: 1.2.2Text: the fifth test text.Risk: MediumVerification: Analysis<<Design Constraint>>test_req6Id: 1.2.3Text: the sixth test text.Risk: MediumVerification: Analysis<<Element>>test_entityType: simulationDoc Ref: None<<Element>>test_entity2Type: word docDoc Ref: reqs/test_entity<<Element>>test_entity3Type: test suiteDoc Ref: github.com/all_the_tests<<satisfies>><<traces>><<contains>><<contains>><<derives>><<refines>><<verifies>><<copies>>