3. 功能需求捕获与功能清单构建

利益相关者需求(Stakeholder Requirements)描述的是“谁希望系统为他做什么、达到什么效果”,而系统功能需求(System Function Requirements)描述的是“系统自身必须执行什么行为来满足这些期望”。两者之间不是简单的文字改写,而是一次视角转换:从外部使用视角切换到系统内部行为视角。本节围绕这一转换,讲清捕获方法、粒度控制、完整性检查,并以某机电系统为例生成一份可用的功能清单。

一、转化的本质:把“期望”翻译成“行为”

利益相关者需求通常带有主观性和结果导向,例如“操作员希望设备启动后 3 秒内进入工作状态”。这句话里,系统需要承担的行为是“接收启动指令—完成自检—驱动执行机构—反馈就绪状态”。转化的核心动作是:识别需求中的动作主体、触发条件、期望结果,再把这些结果拆解为系统必须完成的功能序列。

常用的转化路径是“需求→场景→功能”。先为每条利益相关者需求构造一个使用场景(谁、在什么条件下、做什么、期望什么),再从场景中提取系统必须提供的功能。场景是桥梁,它把抽象需求落到具体交互上,功能才不容易漏、也不容易凭空多出来。

转化口诀:一条需求 → 一个或多个场景 → 一组功能 → 每个功能可追溯到需求。反向检查时,每个功能都应能回答“它服务于哪条需求”。

二、功能捕获的四种手段

功能不会自动出现,需要主动捕获。工程上常用四类手段配合使用:

  • 场景走查:按正常、备用、异常三类场景逐步推演,问“此时系统必须做什么”。
  • 接口反推:从外部接口(供电、通信、机械连接、人机交互)反推系统必须提供的功能,如“接收 24V 供电”对应“电源管理功能”。
  • 状态驱动:先定义系统状态(停机、自检、运行、故障),再问“进入/退出每个状态需要什么功能”。
  • 失效反推:从可能的失效模式反推应具备的保护、监测、降级功能。

四种手段交叉使用,能显著降低遗漏率。场景走查保证主流程完整,接口反推补齐边界功能,状态驱动保证状态迁移不缺失,失效反推补齐安全相关功能。

三、粒度控制:功能清单不能太粗也不能太碎

粒度是功能清单最容易失控的地方。太粗,一条“控制电机”无法分配、无法验证;太碎,把“读取寄存器”也列为功能,清单会膨胀到无法管理。判断粒度是否合适,可用三条准则:

  1. 可分配:该功能能明确分配给一个架构单元(组件、子系统或人)。
  2. 可验证:该功能有明确的输入、输出和成功判据,能设计测试用例。
  3. 单一职责:一个功能只完成一件可命名的事,不把“采集+判断+执行”混在一条里。

推荐把功能分为两级:一级功能(系统级能力,如“运动控制”“安全保护”)和二级功能(可分配、可验证的具体行为,如“采集位置传感器信号”“超限时切断驱动输出”)。一级功能用于架构分层,二级功能用于详细设计与验证。粒度控制在二级即可,不再继续下钻到软件函数级。

四、完整性检查:四个维度查漏

功能清单初步形成后,必须做完整性检查,否则遗漏会在后期以返工形式暴露。建议从四个维度检查:

检查维度检查问题典型遗漏
需求覆盖每条利益相关者需求是否至少被一个功能覆盖?某条需求无人承接
场景覆盖正常、备用、异常场景是否都有功能支撑?缺少故障降级功能
状态覆盖每个状态的进入、保持、退出是否都有功能?缺少状态复位功能
接口覆盖每个外部接口是否都有对应的输入/输出功能?缺少通信超时处理

检查时用“双向追溯矩阵”最有效:行是需求,列是功能,交叉打勾。出现空行说明需求未覆盖,出现空列说明功能无来源(可能是多余功能,也可能是漏掉的需求)。

利益相关者需求 → 系统功能清单 转化与检查 利益相关者需求 SR1 启动后3秒内就绪 SR2 运行中位置精度±0.5mm SR3 异常时自动停机保护 SR4 状态可被上位机读取 SR5 维护时可手动点动 (外部使用视角) 使用场景 正常启动场景 连续运行场景 过载/超限场景 上位机监控场景 维护点动场景 (触发+条件+期望) 系统功能清单(二级) F1 接收并解析启动指令 F2 执行上电自检并输出就绪 F3 采集位置反馈并闭环调节 F4 监测超限并切断驱动输出 F5 上报状态与故障码 F6 响应手动点动指令 (可分配、可验证) 构造 提取 完整性检查:双向追溯矩阵 需求 \ 功能 F1 F2 F3 F4 F5 F6 覆盖 SR1 启动就绪 ✓ ✓ — — — — 已覆盖 SR2 位置精度 — — ✓ — — — 已覆盖 SR3 异常保护 — — — ✓ ✓ — 已覆盖 SR4 状态可读 — — — — ✓ — 已覆盖

五、实战:某机电系统功能清单生成

以一台“伺服驱动直线运动单元”为例,其利益相关者需求为:SR1 上电后 3 秒内进入就绪;SR2 运行中位置精度 ±0.5mm;SR3 超程或过载时自动停机;SR4 状态与故障码可被上位机读取;SR5 维护模式下可手动点动。

按“需求→场景→功能”转化,得到二级功能清单如下(含输入、输出与验证要点):

编号功能名称输入输出验证要点
F1接收并解析启动指令上位机启动命令启动确认信号命令格式错误时拒绝并报错
F2执行上电自检并输出就绪24V 供电、自检触发就绪信号(≤3s)计时验证自检耗时
F3采集位置反馈并闭环调节编码器脉冲、目标位置驱动 PWM、实际位置稳态误差 ≤±0.5mm
F4监测超限并切断驱动输出限位开关、电流采样驱动禁止、故障码触发后 50ms 内切断
F5上报状态与故障码内部状态字、故障寄存器通信报文报文周期与内容正确
F6响应手动点动指令点动按钮、方向信号低速驱动输出仅维护模式有效

用双向追溯矩阵检查:SR1→F1、F2;SR2→F3;SR3→F4、F5;SR4→F5;SR5→F6。五条需求全部覆盖,六个功能均有需求来源,无空行空列。再按场景检查:正常启动、连续运行、超程保护、上位机监控、维护点动均有功能支撑;按状态检查:停机、自检、就绪、运行、故障五种状态的进入与退出均有对应功能。检查通过,清单可作为后续功能架构设计的输入。

粒度自检小技巧:如果一条功能无法写出“输入—处理—输出”三要素,说明它太粗;如果一条功能需要两个不同架构单元才能完成,说明它太碎或职责不单一。
常见误区:把“性能指标”直接写成功能。例如“位置精度 ±0.5mm”是需求指标,对应的功能应是“采集位置反馈并闭环调节”。功能回答“做什么”,指标回答“做到什么程度”,两者在清单中应分开表达。

完成功能清单后,建议为每条功能补充“来源需求编号”和“验证方法”两个字段,形成可追溯、可验证的功能基线。这份基线将直接支撑下一阶段的功能分解与逻辑架构设计。