发布网友 发布时间:2024-10-23 17:13
共1个回答
热心网友 时间:2024-10-28 17:32
最近一年以来,我在系统设计和系统架构工作中,撰写了大量软件需求文档。从感知到规控,从应用到底层软件,从基础模块到中间件,各个方面都有所涉及。
回首自己第一次编写的软件需求文档,简直无法直视,不知道当时的算法同事看到这样的文档会作何感想。今日下班较早,便将这段时间撰写软件需求文档的经验进行总结。
0.前言
本文所提到的软件需求并非互联网行业中的软件需求,如抢票软件的需求,而是针对自动驾驶系统ADCU域内各子模块的软件需求。
在汽车电子电器架构下,控制器功能软件的需求文档已有明确定义,各厂家大同小异。例如,在GEEA2.0架构下,功能系统开发链包括:项目目标->功能列表->功能描述->功能实现->系统实现->软件规范->产品交付物。
每个过程对应的输出物分别为:功能特性清单->功能需求描述->功能实现规范->系统需求规范->软件需求规范->产品规格书。
然而,自动驾驶控制器与传统零部件开发难度不同,即使是这些文档也无法满足开发要求。软件需求往往需要针对自动驾驶系统中某一功能模块进行拆解,如系统对感知模块的需求、系统对定位模块的需求、系统对时间同步的要求等,即自动驾驶系统对ADCU域内各子模块的软件需求。
1.动笔前
一份优秀的文档,需要在动笔前梳理好架构及主要思想。因此,动笔前需要做的工作至关重要,以下列举几点:
2.动笔中
3.完工后
4.总结
总之,编写一份优秀的需求文档需要细心、耐心和专业知识的支持。一份优秀的文档,就像自己的孩子,需要用心去照顾。每一次bug的发现以及需求的更新,都是在完善这个软件模块。
有一次为了向算法同事解释需求,画了一张图就花费了半天时间。当量产时,再回顾这份经历了无数次修改的文档,回想起文档中每一个需求的斟酌,总会有一种蓦然回首的感觉。