第二章 需求分析与规格解读:如何读懂飞控需求文档、需求分解与追溯矩阵建立

说实话,我刚入行那会儿,拿到一份几十页的飞控需求文档,第一反应是——头疼。密密麻麻的术语、各种缩写、还有那些看起来像天书一样的性能指标。后来带我的老工程师跟我说了一句话,我记到现在:「需求文档不是用来读的,是用来挖的。」

什么意思呢?就是说,你得带着问题去看,带着怀疑去读。今天我就把这些年挖需求文档的经验,掰开了揉碎了讲给你听。

2.1 需求文档长什么样?

飞控系统的需求文档,通常分这么几类:

  • 系统级需求:比如「飞行器最大平飞速度 200km/h」
  • 子系统级需求:比如「飞控计算机 CPU 占用率不超过 70%」
  • 接口需求:比如「PWM 输出频率 50Hz,脉宽 1-2ms」
  • 安全需求:比如「单点故障后 100ms 内切换至备份通道」

我个人的习惯是,拿到文档先翻到「术语定义」那一页。别笑,这一步特别重要。同一个词,不同项目组可能定义完全不同。比如「悬停精度」,有的项目指水平位置偏差,有的指高度偏差,还有的连姿态角都算进去。

⚠️ 注意: 我曾经在一个项目中,因为没仔细看术语定义,把「GPS 定位精度」和「RTK 定位精度」搞混了,导致后面测试用例全部写错。白白浪费了两周时间。

2.2 读懂需求的三个层次

我一般把读懂需求分成三个层次,你想想看你现在在哪个层次:

  1. 字面层:知道文档写了什么,但不知道为什么这么写
  2. 逻辑层:能看出需求之间的关联和依赖关系
  3. 验证层:读完就能想到怎么测、测什么、测到什么程度算通过

举个例子。文档里写:「飞控系统应能在 -20°C 到 +60°C 环境下正常工作。」

字面层理解:哦,温度范围是 -20 到 60 度。

逻辑层理解:那低温启动呢?高温持续运行呢?温度变化速率有没有要求?

验证层理解:我得设计低温启动测试、高温老化测试、温度循环测试。还要考虑传感器在不同温度下的漂移补偿。

你看,差距就在这里。我建议你每次读需求时,都问自己三个问题:

  • 这个需求可验证吗?
  • 验证条件是什么?
  • 通过判据是什么?

2.3 需求分解:从粗到细的拆解艺术

需求分解,说白了就是把一个大需求拆成若干个小需求,直到每个小需求都能被直接验证。

比如系统级需求:「飞控系统应具备自主返航功能。」

这个需求太大了,没法直接测。你得拆:

层级需求描述
系统级飞控系统应具备自主返航功能
功能级当遥控信号丢失超过 5 秒,自动触发返航
功能级返航过程中高度不低于 50 米
功能级返航速度不超过 10m/s
接口级遥控信号丢失检测周期为 100ms
性能级返航着陆精度水平方向 ≤ 2 米

嗯,这里要注意,分解的时候不能漏掉边界条件。比如「遥控信号丢失」怎么定义?是连续 5 秒没收到任何数据包,还是 5 秒内丢包率超过 90%?这些细节不搞清楚,后面测试就是一笔糊涂账。

💡 我的经验: 需求分解时,最好拉上系统工程师、软件工程师和测试工程师一起过。三个人看同一个需求,往往能发现三个不同的问题。我经历过太多次「我以为你懂了,你以为我懂了,结果谁都没懂」的尴尬局面。

2.4 追溯矩阵:让每条需求都有「户口本」

需求追溯矩阵,英文叫 Requirements Traceability Matrix,简称 RTM。说白了,就是给每条需求建一个档案,记录它从哪来、到哪去、怎么验证。

一个标准的 RTM 长这样:

需求ID需求描述来源分解子需求验证方法测试用例ID状态
REQ-001自主返航功能客户需求REQ-001-01 至 05系统测试TC-001 至 TC-010已通过
REQ-002CPU 占用率 ≤ 70%系统设计性能测试TC-011 至 TC-015待验证
REQ-003PWM 输出频率 50Hz接口规范单元测试TC-016已通过

我建议你用 Excel 或者专门的工具来维护这个矩阵。别偷懒用手写或者记在脑子里,项目一复杂,你绝对会忘。

🔧 实用技巧: 每次需求变更时,第一时间更新 RTM。我曾经在一个项目中,因为需求变更后没及时更新矩阵,导致有 3 条需求被遗漏验证。还好在系统联调前发现了,不然飞上去出了问题,后果不堪设想。

2.5 本章知识体系

下面这张图,是我自己总结的需求分析与规格解读的核心逻辑。你看一眼,基本就能把握住本章的脉络:

需求分析与规格解读核心流程 需求文档 读懂需求的三个层次 字面层:知道写了什么 逻辑层:看出关联关系 验证层:想到怎么测 需求分解:从粗到细 系统级需求 功能级需求 接口级需求 性能级需求 追溯矩阵:每条需求有户口本

2.6 避坑指南

最后,分享几个我踩过的坑,你遇到了能绕就绕:

  • 别信「显而易见」:需求文档里最危险的就是「显然」、「默认」、「通常」这类词。我曾经看到一个需求写「飞控默认使用 GPS 定位」,结果测试时发现默认用的是视觉定位。谁改的?没人承认。
  • 别忽略「非功能需求」:大家往往盯着功能需求看,但可靠性、可维护性、可测试性这些非功能需求,才是后期出问题最多的。
  • 别等到测试才看需求:我建议你在需求评审阶段就介入。那时候发现问题,改起来成本最低。等代码写完了再发现需求理解有误,那代价就大了。

好了,关于需求分析与规格解读,我就讲这么多。记住一句话:需求文档不是圣经,它是你用来和系统工程师、软件工程师「吵架」的依据。把需求吃透了,后面的测试工作才能站得住脚。


公众号:蓝海资料掘金营,微信deep3321