第二章:需求来源与分类

大家好,欢迎来到第二章。

上一章我们聊了需求分析为什么是汽车软件的「命根子」。这一章,咱们来点实在的——需求到底从哪来?又该怎么分门别类?

我见过不少团队,一上来就闷头写代码。结果呢?做到一半发现「哎?这个功能客户没提啊」或者「完了,法规要求没满足」。说白了,需求来源没理清,后面全是坑。

2.1 客户需求:一切的原点

客户需求,就是用户或者主机厂直接提出来的要求。这是最原始的需求,也是我们所有工作的起点。

举个例子,客户说:「我要一个自动泊车功能,车能自己停进去。」

嗯,这句话听起来很明确,对吧?但仔细一想,问题来了:

  • 停什么样的车位?平行、垂直、还是斜向?
  • 车速多快?
  • 遇到障碍物怎么办?
  • 驾驶员要不要一直在车上?

你看,一句话背后藏着几十个问题。客户需求往往是模糊的、不完整的。我们的工作,就是把这些模糊的「愿望」翻译成工程师能懂的「语言」。

我的习惯:拿到客户需求,先别急着分析。我会先和客户聊,把场景问清楚。比如「您说的自动泊车,是在什么场景下用?地下车库?路边?有没有固定车位?」问得越细,后面越省事。

2.2 系统需求:从「要什么」到「做什么」

客户需求是「要什么」,系统需求就是「做什么」。

系统需求是把客户需求分解、细化,变成系统层面的功能描述。它不关心具体怎么实现,只关心系统应该具备什么能力。

比如客户需求是「自动泊车」,系统需求可能是:

  • 系统应能识别水平车位和垂直车位
  • 系统应能在车速低于10km/h时启动泊车搜索
  • 系统应能在检测到障碍物时自动减速或停止

我建议,写系统需求时,多用「应」字。比如「系统应……」「系统应能够……」。这能帮你保持客观,避免过早陷入实现细节。

关键点:系统需求是连接客户需求和软件需求的桥梁。写不好,后面全乱套。

2.3 功能需求与非功能需求:一个都不能少

到了软件层面,需求就要分得更细了。我习惯把它们分成两类:功能需求和非功能需求。

2.3.1 功能需求:系统「做什么」

功能需求就是系统具体要完成的任务。比如:

  • 当车速低于10km/h时,自动开启全景影像
  • 当驾驶员按下「泊车」按钮,系统开始搜索车位
  • 当检测到行人,系统发出声音报警

这些需求通常可以用「当……时,系统应……」的句式来描述。简单、直接、不绕弯子。

2.3.2 非功能需求:系统「做得怎么样」

非功能需求,说白了就是系统的「质量属性」。它不直接描述功能,但决定了功能好不好用。

常见的非功能需求包括:

类别 示例
性能 泊车路径规划时间不超过2秒
可靠性 系统连续运行1000小时无故障
安全性 系统在CAN总线故障时,应进入安全状态
可维护性 软件升级时间不超过10分钟
可用性 用户界面响应时间不超过200ms

我在项目中遇到过,团队把功能需求写得特别细,但非功能需求一笔带过。结果呢?功能都实现了,但车机卡得要命,用户投诉不断。你想想看,功能再多,用起来不爽,客户照样不买账。

避坑指南:我曾经在一个项目中,忽略了「系统启动时间」这个非功能需求。结果样车做出来,中控屏要30秒才能亮起来。客户当场就炸了。从那以后,我每次写需求都会专门列一个「非功能需求清单」。

2.4 法规与安全需求:红线不能碰

汽车软件和手机App最大的区别是什么?

手机App卡了,用户骂两句。汽车软件出问题,可能要命。

所以,法规和安全需求是汽车软件的「红线」。碰了,轻则召回,重则出事故。

2.4.1 法规需求:必须遵守的「法律」

法规需求来自各国政府和行业标准。比如:

  • UN R155:网络安全法规,要求车辆具备网络安全防护能力
  • UN R156:软件更新法规,要求OTA升级必须安全可靠
  • GB/T 32960:中国电动汽车远程服务与管理系统技术要求

这些法规不是「建议」,是「必须」。不满足,车就不能上市。

2.4.2 安全需求:ISO 26262 与功能安全

安全需求,主要来自功能安全标准 ISO 26262。它把系统风险分成 ASIL A、B、C、D 四个等级,D 是最严格的。

比如,自动泊车系统如果失控,可能撞到行人。这个风险等级可能是 ASIL B。那么,系统就需要满足相应的安全要求:

  • 传感器故障时,系统应在100ms内检测并报警
  • 控制指令必须经过校验,防止误触发
  • 系统应具备冗余设计,单一故障不影响安全
我的建议:法规和安全需求,最好让专门的「功能安全工程师」来负责。普通软件工程师容易忽略这些细节。我见过太多团队,等到测试阶段才发现「哦,这个安全需求没写」,然后加班改设计,成本翻倍。

2.5 需求分类的实践技巧

说了这么多,怎么在实际项目中落地呢?我分享几个小技巧:

  1. 建一个需求分类模板:每次写需求前,先列好分类。客户需求、系统需求、功能需求、非功能需求、法规需求、安全需求,各占一栏。这样不容易漏。
  2. 用工具管理:我习惯用 DOORS 或者 Jama 来管理需求。每个需求都打上标签,比如「功能」「安全」「ASIL B」。后期追溯起来特别方便。
  3. 定期评审:需求不是写一次就完事了。我建议每两周做一次需求评审,看看有没有遗漏、有没有变更。尤其是法规需求,经常更新,得盯紧。
一个小技巧:写需求时,可以试着用「反向思维」。比如,你写了一个功能需求「系统应能自动泊车」,那你就问自己:「如果这个功能失效了,会怎么样?」这样就能推导出安全需求了。

2.6 本章小结

好,我们来捋一捋这一章的核心内容:

  • 客户需求:一切的原点,但往往模糊,需要细化
  • 系统需求:从「要什么」到「做什么」,是桥梁
  • 功能需求:系统具体做什么,用「当……时,系统应……」描述
  • 非功能需求:系统做得怎么样,性能、可靠性、安全性等
  • 法规与安全需求:红线,必须遵守,不能讨价还价

下一章,我们会聊聊怎么把这些需求「写清楚」。嗯,写需求也是一门手艺活,咱们下回分解。


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