3、需求工程概述:需求的定义、分类(功能/非功能/约束)、需求工程生命周期(获取、分析、规格化、验证、管理)

在汽车软件系统开发中,需求工程是连接用户期望与最终软件实现的桥梁。与普通IT系统不同,汽车软件运行在一个安全至上的物理环境中,其需求不仅要描述“系统做什么”,还必须精确刻画“系统在何种边界条件下做到什么程度”。本章作为方法论课程的开篇,将系统性地建立需求工程的基础框架,明确需求的定义、分类维度以及贯穿项目始终的生命周期活动,为后续章节中具体的建模、分析与验证技术奠定概念基础。

需求工程核心框架:定义、分类与生命周期 需求定义 用户期望 + 系统约束 + 验收标准 需求分类 功能需求 非功能需求 约束条件 生命周期活动 获取 分析 规格化 验证 管理 核心原则:可追踪性 | 无歧义性 | 可验证性 | 完整性 相互影响

3.1 需求的定义与本质

核心原理:需求是“问题域”到“解系统”的契约

在汽车软件工程语境下,需求并非简单的“用户想要什么”的罗列,而是一份具有严格语义的技术契约。它必须同时回答三个问题:系统提供什么能力(功能)、能力达到何种水平(性能与质量)、在何种边界条件下有效(约束与假设)。例如,一条关于“自动紧急制动(AEB)”的需求,不能仅描述“车辆能自动刹车”,而必须明确:在车速 10-80 km/h 范围内、相对速度差不超过 50 km/h、路面附着系数大于 0.6 时,系统应在 300ms 内输出制动请求,且误触发率低于 0.01 次/万公里。这种精确性源于汽车软件失效可能带来的安全风险,因此需求本质上是可验证的工程规范,而非愿景描述。

关键认知:需求工程的核心挑战在于将模糊的客户声音(VOC)转化为无歧义的技术规格(TSR)。在汽车行业,这一过程通常遵循 ISO 26262 和 Automotive SPICE 的框架,要求需求具备唯一标识、优先级、来源和验证标准。

判断方法:如何识别“真需求”与“伪需求”

在实际项目中,需求工程师常面临来自市场、管理层、甚至开发人员的各种“诉求”。判断一条输入是否为有效需求,可采用以下三条准则:

  • 可验证性:是否存在客观的测试方法或度量指标来确认需求被满足?例如“操作流畅”不可验证,而“触摸响应时间 ≤ 100ms”可验证。
  • 原子性:该需求是否描述了一个单一、独立的行为或属性?若一条需求包含多个条件或动作,应拆分为多条。
  • 可追踪性:能否向上追溯到业务目标或用户场景,向下追溯到设计实现和测试用例?无源之水式的需求应被剔除。

此外,需区分需求与方案。例如“使用 CAN FD 总线传输数据”是方案,而“在 10ms 内将传感器数据可靠传输至域控制器”才是需求。过早绑定技术方案会限制设计空间。

案例拆解:从“提升驾驶体验”到可落地的需求条目

某主机厂在开发新一代智能座舱时,产品经理提出“提升驾驶体验”的模糊目标。需求工程师通过用户访谈和场景分析,将其拆解为以下需求条目:

原始诉求需求条目(示例)验证方法
导航更智能系统应能根据实时路况,在预计到达时间延迟超过 10 分钟时,自动提供备选路线建议仿真测试:输入预设路况数据,检查提示触发逻辑
语音更灵敏在车速 120km/h、空调风量最大时,语音唤醒成功率 ≥ 95%实车噪声环境测试
界面更简洁常用功能(如空调温度、音量)在首页的点击路径不超过 2 步UI 原型走查 + 可用性测试

这一过程体现了需求工程的核心价值:将主观期望转化为可设计、可测试、可追踪的工程条目。

常见误区与总结

误区一:将需求文档视为“一次性交付物”,完成后便束之高阁。实际上,需求是活文档,需随项目认知加深而演进。
误区二:混淆“客户需求”与“系统需求”。客户需求描述问题域,系统需求描述解空间,二者需明确映射关系。
误区三:忽视需求的优先级排序。在资源受限时,必须基于价值、风险和成本进行 MoSCoW 或 Kano 模型排序。

3.2 需求的分类体系:功能、非功能与约束

核心原理:三类需求的协同与冲突

汽车软件需求可划分为三大类:功能需求定义了系统“做什么”,是行为的直接描述;非功能需求定义了系统“做得怎么样”,是质量属性(如性能、安全、可靠性、可维护性);约束条件则限定了设计与实现的自由度,包括技术标准、法规、接口协议、成本与时间限制。三者并非孤立存在,而是相互制约。例如,一项功能需求“实现 360° 环视影像拼接”必须同时满足非功能需求“从启动到显示首帧图像时间 ≤ 2 秒”以及约束“使用现有 SoC 芯片,内存占用 ≤ 512MB”。

经验提醒:在需求评审时,应特别关注非功能需求与约束是否被显式记录。许多项目失败源于非功能需求(如响应时间、功耗)被隐性假设,导致后期架构无法满足。

分类操作框架:如何系统化梳理需求

建议采用以下步骤进行需求分类,确保无遗漏:

  1. 场景驱动识别功能需求:基于用例或用户故事,提取系统必须响应的动作序列。
  2. 质量属性推导非功能需求:参考 ISO 25010 质量模型,从性能效率、兼容性、安全性、可靠性等维度逐项审视。
  3. 环境与法规识别约束:梳理适用的行业标准(如 ISO 26262、UN ECE R155)、硬件平台限制、通信协议要求。
  4. 交叉验证:检查每个功能需求是否都有对应的非功能需求(如精度、时间)和约束(如接口协议)支撑。

案例拆解:AEB 系统的需求分类实践

以自动紧急制动(AEB)系统为例,展示三类需求的典型条目:

类别需求条目示例来源/依据
功能需求当检测到前方障碍物且驾驶员未采取制动时,系统应自动激活制动执行器,使车辆减速直至停止或碰撞风险消除。Euro NCAP 测试场景
非功能需求从目标识别到制动请求输出的系统延迟 ≤ 150ms;系统误触发率 ≤ 0.01 次/万公里;在 -20°C 至 +60°C 环境温度下功能正常。ISO 26262 ASIL B 分解
约束条件必须使用现有前视摄像头(分辨率 1280x960)和毫米波雷达(探测距离 150m);制动执行器接口遵循 AUTOSAR 4.4 规范;开发周期不超过 12 个月。项目立项书 / 平台规划

该案例表明,清晰分类有助于在需求评审时快速定位遗漏项,并为架构设计提供输入。

常见误区与总结

误区一:将约束条件混入功能需求,导致需求文档冗长且难以验证。例如“系统应使用 Linux 操作系统”是约束,而非功能。
误区二:非功能需求描述过于笼统,如“系统应具有高可靠性”。应量化:MTBF ≥ 5000 小时,或 ASIL 等级达到 B 级。
误区三:忽略需求之间的冲突。例如高性能与低功耗往往矛盾,需在分类后显式进行冲突分析。

3.3 需求工程生命周期:从获取到管理

核心原理:生命周期是迭代与递归的工程过程

需求工程并非线性瀑布,而是一个迭代演进、持续验证的过程。其生命周期包含五大活动:获取(Elicitation)、分析(Analysis)、规格化(Specification)、验证(Validation & Verification)、管理(Management)。在汽车行业中,由于功能安全标准要求可追踪性,这些活动通常与 V 模型开发流程紧密结合。例如,需求分析的结果直接输入到系统架构设计,而需求验证则与测试用例设计相对应。

操作流程:五大活动的输入、输出与关键方法

活动核心目标常用方法/工具关键输出
获取从干系人(用户、法规、市场)收集原始需求访谈、工作坊、原型演示、场景分析、法规研究干系人需求清单、用例模型
分析检查需求质量,解决冲突,建立优先级需求评审、冲突分析、可行性验证、优先级排序(MoSCoW)分析后的需求集、风险清单
规格化将需求编写为无歧义的正式文档自然语言模板、SysML/UML 建模、基于属性的需求编写系统需求规格说明书(SyRS)
验证确认需求正确、完整且可测试同行评审、原型验证、测试用例设计、可追踪性矩阵验证报告、需求基线
管理控制需求变更,维护可追踪性变更控制委员会(CCB)、需求配置管理、工具链(如 DOORS、Jama)变更请求记录、需求基线版本

案例拆解:ADAS 域控制器需求变更管理闭环

某项目在开发中期,客户提出新增“交通拥堵辅助(TJA)”功能。需求管理流程如下:

  1. 变更请求提交:产品经理提交变更申请,附上市场分析报告和初步场景描述。
  2. 影响分析:需求工程师评估对现有功能(ACC、LKA)的接口影响,估算新增 3 个功能需求、2 个非功能需求(如系统延迟增加 ≤ 50ms),并识别出与现有“驾驶员监控”需求的冲突。
  3. CCB 评审:由项目经理、架构师、测试经理和功能安全经理组成 CCB,基于风险、成本和进度权衡,批准变更但要求降低 LKA 的介入灵敏度以平衡性能。
  4. 基线更新与追踪:更新需求基线至 v2.3,并在 DOORS 中建立新需求与设计模块、测试用例的追踪关系。
  5. 验证与回归:新增 15 条测试用例,并对受影响的 LKA 功能执行回归测试。

该闭环展示了需求管理如何控制项目风险,确保变更受控且可追溯。

常见误区与总结

误区一:将需求获取视为一次性活动,忽视后续迭代。实际上,随着系统原型和仿真结果的出现,干系人会产生新的认知。
误区二:规格化时过度依赖自然语言,导致歧义。应结合图形化建模(如状态机、序列图)补充语义。
误区三:验证活动滞后,直到测试阶段才暴露需求缺陷。应在规格化后立即进行静态验证和原型走查。
误区四:需求管理仅关注变更记录,忽视版本间差异分析。每次基线更新应附带变更影响说明。
本章总结:需求工程是汽车软件开发的“地基”。清晰的定义、科学的分类和严谨的生命周期管理,能够显著降低后期返工成本。据行业统计,需求阶段引入的缺陷修复成本仅为测试阶段的 1/10 到 1/20。因此,掌握本章基础概念,是后续学习需求建模、分析与验证方法的必要前提。在下一章中,我们将深入探讨如何利用 SysML 进行需求的结构化建模。