需求图
需求图提供了需求及其相互之间连接关系,以及与其他文档元素关系的可视化。
复制
嵌入
requirementDiagram
requirement test_req {
id: 1
text: the test text.
risk: high
verifymethod: test
}
element test_entity {
type: simulation
}
test_entity - satisfies -> test_req
语法
需求图包含三种组件:需求、元素和关系。
尖括号表示的单词是枚举关键字,如 <word>,其选项在表格中详细说明。user_defined_... 用于任何需要用户输入的地方。
关于用户文本的重要说明:所有输入都可以用双引号括起来,也可以不加双引号。然而,用户在使用未加引号的输入时必须小心。如果检测到其他关键字,编辑器将会渲染失败。
需求
需求定义包含需求类型、名称、ID、文本、风险和验证方法。语法如下:
复制
嵌入
<type> user_defined_name {
id: user_defined_id
text: user_defined text
risk: <risk>
verifymethod: <method>
}
类型、风险和方法是 SysML 中定义的枚举。
| 关键词 | 选项 |
|---|---|
| 类型 | 需求、功能需求、接口需求、性能需求、物理需求、设计约束 |
| 风险 | 低、中、高 |
| 验证方法 | 分析、检查、测试、演示 |
元素
元素定义包含元素名称、类型和文档引用,这三个都是用户定义的。元素功能旨在保持轻量级,同时允许将需求与其他文档的部分内容关联起来。
复制
嵌入
element myElement {
type: string
docref: some/doc/path
}
Markdown格式
在允许用户自定义文本的地方(如名称、需求文本、元素文档引用等),你可以:
- 将文本用双引号括起来
- 在双引号内使用 markdown 格式
复制
嵌入
requirementDiagram
requirement "__test_req__" {
id: 1
text: "*italicized text* **bold text**"
risk: high
verifymethod: test
}
关系
关系由来源节点、目标节点和关系类型组成。
遵循以下定义格式:
复制
嵌入
{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
方向
可以使用 direction 语句以设定不同方向渲染图表,有效值为:
- TB - 从上到下(默认)
- BT - 从下到上
- LR - 从左到右
- RL - 从右到左
复制
嵌入
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
样式
需求和元素可以使用直接样式或类来设置样式。一般来说,在应用样式或类时,它接受一个需求或元素名称的列表以及一个类名列表,从而允许一次分配多个类。唯一的例外是简写语法 :::,运算符可以分配多个类,但一次只能分配给一个需求或元素。
直接样式
复制
嵌入
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
类定义
使用 classDef 定义可重复使用的样式:
复制
嵌入
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
默认类
如果某个类命名为 default,它将应用于所有节点。特定的样式和类应该在此之后定义,以覆盖已应用的默认样式。
复制
嵌入
classDef default fill:pink,stroke:#333,stroke-width:4px;
应用类
类可以通过两种方式应用:
1. 使用 class 关键字:
复制
嵌入
class test_req,test_entity important
2. 在定义过程中或之后使用运算符 ::: 简写语法:
复制
嵌入
requirement test_req:::important {
id: 1
text: class styling example
risk: low
verifymethod: test
}
复制
嵌入
element test_elem {}
test_elem:::myClass
组合示例
复制
嵌入
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