Mermaid 需求图 #
需求图(Requirement Diagram)用于展示需求之间的关系,以及需求与其他项目元素之间的关联。
基本语法 #
Mermaid的需求图语法基于UML需求图,支持以下元素:
- 需求(Requirement)
- 关系(Relationship)
- 满足(Satisfy)
- 验证(Verify)
1. 基本需求定义 #
mermaid
requirementDiagram
requirement req1 {
id: 需求1
text: "用户应该能够注册账号"
risk: 低
verifymethod: 测试
}
2. 带类型的需求 #
mermaid
requirementDiagram
requirement functional_req {
id: FR-001
text: "系统应提供用户登录功能"
type: functional
risk: 低
verifymethod: 测试
}
requirement non_functional_req {
id: NFR-001
text: "系统应在3秒内响应用户请求"
type: performance
risk: 中
verifymethod: 性能测试
}
需求类型 #
Mermaid支持多种需求类型:
functional:功能需求performance:性能需求reliability:可靠性需求security:安全需求usability:可用性需求maintainability:可维护性需求portability:可移植性需求
mermaid
requirementDiagram
requirement fr1 {
id: FR-001
text: "用户应能查看个人信息"
type: functional
}
requirement pr1 {
id: PR-001
text: "系统应支持1000并发用户"
type: performance
}
requirement sr1 {
id: SR-001
text: "用户密码应加密存储"
type: security
}
需求关系 #
1. 包含关系(Include) #
表示一个需求包含另一个需求:
mermaid
requirementDiagram
requirement main_req {
id: FR-001
text: "用户认证功能"
}
requirement sub_req1 {
id: FR-001-01
text: "用户登录"
}
requirement sub_req2 {
id: FR-001-02
text: "用户注册"
}
main_req - includes -> sub_req1
main_req - includes -> sub_req2
2. 依赖关系(Depend) #
表示一个需求依赖于另一个需求:
mermaid
requirementDiagram
requirement req1 {
id: FR-001
text: "用户管理功能"
}
requirement req2 {
id: FR-002
text: "权限管理功能"
}
req2 - dependsOn -> req1
3. 追踪关系(Trace) #
表示需求之间的追踪关系:
mermaid
requirementDiagram
requirement req1 {
id: FR-001
text: "需求分析"
}
requirement req2 {
id: FR-002
text: "系统设计"
}
req1 - tracesTo -> req2
需求与其他元素的关系 #
1. 需求满足关系(Satisfy) #
表示一个元素满足某个需求:
mermaid
requirementDiagram
requirement req1 {
id: FR-001
text: "用户登录功能"
}
element login_page {
type: 页面
text: "登录页面"
}
login_page - satisfies -> req1
2. 需求验证关系(Verify) #
表示一个测试用例验证某个需求:
mermaid
requirementDiagram
requirement req1 {
id: FR-001
text: "用户注册功能"
}
testcase tc1 {
id: TC-001
text: "测试用户注册流程"
}
tc1 - verifies -> req1
高级功能 #
1. 复杂需求层次 #
mermaid
requirementDiagram
requirement system_req {
id: SR-001
text: "电商系统"
type: functional
}
requirement user_auth {
id: FR-001
text: "用户认证模块"
type: functional
}
requirement login {
id: FR-001-01
text: "用户登录"
type: functional
}
requirement register {
id: FR-001-02
text: "用户注册"
type: functional
}
requirement password_reset {
id: FR-001-03
text: "密码重置"
type: functional
}
system_req - includes -> user_auth
user_auth - includes -> login
user_auth - includes -> register
user_auth - includes -> password_reset
2. 需求风险和验证方法 #
mermaid
requirementDiagram
requirement req1 {
id: FR-001
text: "支付功能"
risk: 高
verifymethod: 集成测试
}
requirement req2 {
id: FR-002
text: "订单管理"
risk: 中
verifymethod: 单元测试
}
requirement req3 {
id: FR-003
text: "产品搜索"
risk: 低
verifymethod: 手动测试
}
3. 需求与实现的关联 #
mermaid
requirementDiagram
requirement login_req {
id: FR-001
text: "用户登录功能"
}
requirement dashboard_req {
id: FR-002
text: "用户仪表盘"
}
element login_page {
type: 页面
text: "登录页面"
}
element dashboard_page {
type: 页面
text: "仪表盘页面"
}
testcase login_tc {
id: TC-001
text: "登录功能测试"
}
login_page - satisfies -> login_req
dashboard_page - satisfies -> dashboard_req
login_tc - verifies -> login_req
login_req - tracesTo -> dashboard_req
最佳实践 #
- 唯一的需求ID:为每个需求分配唯一的ID,便于追踪
- 清晰的需求描述:使用简洁、明确的语言描述需求
- 适当的需求类型:根据需求的性质选择合适的需求类型
- 明确的关系定义:正确定义需求之间的关系
- 合理的风险评估:为每个需求评估风险等级
- 明确的验证方法:定义如何验证需求是否满足
常见问题 #
问题:需求类型不生效 #
解决方案:确保使用Mermaid支持的需求类型,如functional、performance等
问题:关系箭头方向错误 #
解决方案:确保箭头指向正确,表示关系的方向
问题:需求图渲染不正确 #
解决方案:检查语法是否正确,确保所有括号和箭头都正确闭合
问题:不支持某些需求属性 #
解决方案:目前Mermaid的需求图支持有限的属性,如id、text、type、risk、verifymethod
完整示例 #
下面是一个完整的电商系统需求图示例:
mermaid
requirementDiagram
%% 系统级需求
requirement system {
id: SR-001
text: "电商系统"
type: functional
}
%% 用户认证模块需求
requirement user_auth {
id: FR-001
text: "用户认证模块"
type: functional
risk: 中
verifymethod: 集成测试
}
requirement login {
id: FR-001-01
text: "用户登录"
type: functional
risk: 低
verifymethod: 单元测试
}
requirement register {
id: FR-001-02
text: "用户注册"
type: functional
risk: 低
verifymethod: 单元测试
}
requirement password_reset {
id: FR-001-03
text: "密码重置"
type: functional
risk: 低
verifymethod: 单元测试
}
%% 产品模块需求
requirement product {
id: FR-002
text: "产品模块"
type: functional
risk: 中
verifymethod: 集成测试
}
requirement product_list {
id: FR-002-01
text: "产品列表"
type: functional
risk: 低
verifymethod: 单元测试
}
requirement product_detail {
id: FR-002-02
text: "产品详情"
type: functional
risk: 低
verifymethod: 单元测试
}
%% 订单模块需求
requirement order {
id: FR-003
text: "订单模块"
type: functional
risk: 高
verifymethod: 集成测试
}
requirement create_order {
id: FR-003-01
text: "创建订单"
type: functional
risk: 中
verifymethod: 集成测试
}
requirement order_history {
id: FR-003-02
text: "订单历史"
type: functional
risk: 低
verifymethod: 单元测试
}
%% 性能需求
requirement performance {
id: NFR-001
text: "系统响应时间"
type: performance
risk: 中
verifymethod: 性能测试
}
%% 实现元素
element login_page {
type: 页面
text: "登录页面"
}
element register_page {
type: 页面
text: "注册页面"
}
element product_page {
type: 页面
text: "产品页面"
}
element order_page {
type: 页面
text: "订单页面"
}
%% 测试用例
testcase tc_login {
id: TC-001
text: "登录功能测试"
}
testcase tc_register {
id: TC-002
text: "注册功能测试"
}
testcase tc_performance {
id: TC-003
text: "性能测试"
}
%% 关系定义
system - includes -> user_auth
system - includes -> product
system - includes -> order
system - includes -> performance
user_auth - includes -> login
user_auth - includes -> register
user_auth - includes -> password_reset
product - includes -> product_list
product - includes -> product_detail
order - includes -> create_order
order - includes -> order_history
login_page - satisfies -> login
register_page - satisfies -> register
product_page - satisfies -> product_list
product_page - satisfies -> product_detail
order_page - satisfies -> create_order
order_page - satisfies -> order_history
tc_login - verifies -> login
tc_register - verifies -> register
tc_performance - verifies -> performance
最后更新:2026-02-08