3. 系统需求的结构化分解与追溯

系统需求的结构化分解与追溯 学习卡片

需求分解的核心:从一条高层需求到可验证的需求树

需求图(Requirement Diagram)在 SysML 中承担三类关键关系:包含/分解(containment)、派生(derive)、满足(satisfy)与验证(verify)。本案例以“无人机避障系统”为例,把一条高层需求分解为可验证的子需求,并建立完整的追溯链。

高层需求 REQ-100 避障系统应在飞行中自动检测并规避障碍物 本身不可直接验证,因为它没有给出可测量的判据。分解的目标是把它拆成若干条单一、可测量、可分配的子需求,并明确每条子需求由哪个设计元素满足、由哪个测试用例验证。

需求分解的三条硬约束:
① 子需求集合的并集必须覆盖父需求的全部语义(无遗漏);
② 每条子需求必须可独立验证(有判据、有验证方法);
③ 每条子需求必须能向上追溯到父需求,向下追溯到满足它的设计元素和验证它的测试用例。
«requirement» REQ-100 避障系统自动检测并规避障碍 id: REQ-100 | 验证方法: 分析+测试 «derive» «requirement» REQ-101 检测距离 ≥ 5 m 内识别障碍物 验证: 测试 «requirement» REQ-102 响应时间 ≤ 200 ms 完成规避决策 验证: 测试 «requirement» REQ-103 规避路径 生成无碰撞安全路径 验证: 分析+测试 «requirement» REQ-104 误报率 虚警率 ≤ 2% 验证: 测试 «satisfy» «satisfy» «satisfy» «satisfy» «block» 超声波传感器阵列 探测距离 0.2–6 m «block» 避障决策控制器 周期 50 ms «block» 路径规划模块 A* 局部重规划 «block» 传感器融合滤波 卡尔曼滤波 «verify» «verify» «verify» «verify» «testCase» TC-101 距离检测 标准障碍物 5 m «testCase» TC-102 响应延迟 注入障碍信号 «testCase» TC-103 路径无碰撞 仿真场景回放 «testCase» TC-104 误报统计 100 次空场景 追溯链完整性检查 ✓ REQ-100 → REQ-101/102/103/104 全覆盖 ✓ 每条子需求均有 satisfy 与 verify ✓ 无孤立需求节点 ⚠ 检查项:子需求是否可独立验证?设计元素是否覆盖所有子需求?测试用例是否覆盖所有验证方法?

在建模工具中建立需求追溯链

以下以支持 SysML 的建模工具(如 Cameo/MagicDraw、Enterprise Architect 或开源 Papyrus)的通用操作逻辑说明。不同工具菜单名称可能不同,但对象和关系语义一致。

  1. 创建需求包与需求元素:新建 RequirementPackage,在其中创建 5 个 «requirement» 元素,分别填写 Id、Text 和 VerificationMethod 属性。REQ-100 的 VerificationMethod 设为“分析+测试”,子需求按实际设为“测试”或“分析+测试”。
  2. 建立派生关系:从 REQ-101~REQ-104 分别向 REQ-100 拖出 «derive» 依赖。方向约定为“子需求 → 父需求”,表示子需求由父需求派生而来。
  3. 建立满足关系:从每个 «block» 设计元素向对应子需求拖出 «satisfy» 依赖。例如“超声波传感器阵列”满足 REQ-101,“避障决策控制器”满足 REQ-102。
  4. 建立验证关系:从每个 «testCase» 向对应子需求拖出 «verify» 依赖。注意 «verify» 的源端是测试用例,目标端是需求。
  5. 运行追溯检查:使用工具的“Traceability”或“Dependency Matrix”视图,检查是否存在未覆盖的需求、未满足的需求或未验证的需求。
在需求图中,«derive»、«satisfy»、«verify» 三种关系的方向容易混淆。统一记忆:派生从子到父,满足从设计到需求,验证从测试到需求。方向反了会导致追溯矩阵出现空行或空列。

追溯链完整性检查表

完成建模后,用下表逐项核对。每一行对应一条子需求,检查其向上、向下、向验证三个方向的链接是否齐全。

子需求 派生自 满足者(设计元素) 验证者(测试用例) 验证方法 状态
REQ-101 检测距离 ≥ 5 m REQ-100 超声波传感器阵列 TC-101 测试 ✓ 完整
REQ-102 响应时间 ≤ 200 ms REQ-100 避障决策控制器 TC-102 测试 ✓ 完整
REQ-103 生成无碰撞路径 REQ-100 路径规划模块 TC-103 分析+测试 ✓ 完整
REQ-104 误报率 ≤ 2% REQ-100 传感器融合滤波 TC-104 测试 ✓ 完整
常见追溯断链:① 子需求写了但忘记建 «derive»,导致父需求看起来没有子需求;② 设计元素建了但没连 «satisfy»,需求无法分配到架构;③ 测试用例建了但 «verify» 方向反了,工具矩阵中显示为空。每次修改需求后应重新运行追溯检查,而不是只在建模结束时检查一次。

需求文本的规范化写法

分解后的子需求必须可验证,因此文本应包含条件、主体、动作、判据四要素。对比下面两种写法:

写法 示例 问题
不可验证 系统应快速检测障碍物 “快速”无量化判据,无法设计测试用例
可验证 在标准大气条件下,系统应在障碍物距离 ≥ 5 m 时输出检测信号,检测延迟 ≤ 100 ms 条件、判据、阈值齐全,可直接映射到 TC-101

将 REQ-100 按上述规范改写后,得到四条子需求的完整文本:

REQ-101: 在标准大气条件下,系统应在障碍物距离 ≥ 5 m 时输出检测信号,检测延迟 ≤ 100 ms。
REQ-102: 从检测信号有效到规避决策输出,系统响应时间应 ≤ 200 ms。
REQ-103: 在检测到障碍物后,系统应生成一条与障碍物最小间距 ≥ 1 m 的无碰撞路径。
REQ-104: 在无真实障碍物的标准测试场景中连续运行 100 次,系统虚警次数应 ≤ 2 次。

这四条子需求共同覆盖了 REQ-100 的“检测”和“规避”两个语义维度,且每条都有独立判据。在需求图中,它们通过 «derive» 汇聚到 REQ-100,形成完整的分解树。