3. 系统需求的结构化分解与追溯
需求分解的核心:从一条高层需求到可验证的需求树
需求图(Requirement Diagram)在 SysML 中承担三类关键关系:包含/分解(containment)、派生(derive)、满足(satisfy)与验证(verify)。本案例以“无人机避障系统”为例,把一条高层需求分解为可验证的子需求,并建立完整的追溯链。
高层需求 REQ-100 避障系统应在飞行中自动检测并规避障碍物 本身不可直接验证,因为它没有给出可测量的判据。分解的目标是把它拆成若干条单一、可测量、可分配的子需求,并明确每条子需求由哪个设计元素满足、由哪个测试用例验证。
需求分解的三条硬约束:
① 子需求集合的并集必须覆盖父需求的全部语义(无遗漏);
② 每条子需求必须可独立验证(有判据、有验证方法);
③ 每条子需求必须能向上追溯到父需求,向下追溯到满足它的设计元素和验证它的测试用例。
① 子需求集合的并集必须覆盖父需求的全部语义(无遗漏);
② 每条子需求必须可独立验证(有判据、有验证方法);
③ 每条子需求必须能向上追溯到父需求,向下追溯到满足它的设计元素和验证它的测试用例。
在建模工具中建立需求追溯链
以下以支持 SysML 的建模工具(如 Cameo/MagicDraw、Enterprise Architect 或开源 Papyrus)的通用操作逻辑说明。不同工具菜单名称可能不同,但对象和关系语义一致。
- 创建需求包与需求元素:新建
RequirementPackage,在其中创建 5 个«requirement»元素,分别填写Id、Text和VerificationMethod属性。REQ-100 的VerificationMethod设为“分析+测试”,子需求按实际设为“测试”或“分析+测试”。 - 建立派生关系:从 REQ-101~REQ-104 分别向 REQ-100 拖出
«derive»依赖。方向约定为“子需求 → 父需求”,表示子需求由父需求派生而来。 - 建立满足关系:从每个
«block»设计元素向对应子需求拖出«satisfy»依赖。例如“超声波传感器阵列”满足 REQ-101,“避障决策控制器”满足 REQ-102。 - 建立验证关系:从每个
«testCase»向对应子需求拖出«verify»依赖。注意«verify»的源端是测试用例,目标端是需求。 - 运行追溯检查:使用工具的“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,形成完整的分解树。