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

最佳实践 #

  1. 唯一的需求ID:为每个需求分配唯一的ID,便于追踪
  2. 清晰的需求描述:使用简洁、明确的语言描述需求
  3. 适当的需求类型:根据需求的性质选择合适的需求类型
  4. 明确的关系定义:正确定义需求之间的关系
  5. 合理的风险评估:为每个需求评估风险等级
  6. 明确的验证方法:定义如何验证需求是否满足

常见问题 #

问题:需求类型不生效 #

解决方案:确保使用Mermaid支持的需求类型,如functionalperformance

问题:关系箭头方向错误 #

解决方案:确保箭头指向正确,表示关系的方向

问题:需求图渲染不正确 #

解决方案:检查语法是否正确,确保所有括号和箭头都正确闭合

问题:不支持某些需求属性 #

解决方案:目前Mermaid的需求图支持有限的属性,如idtexttyperiskverifymethod

完整示例 #

下面是一个完整的电商系统需求图示例:

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