这篇草稿在我电脑里呆了快一个月了,趁着今天月底,死活也把它整理发出来,请大家指摘。
需求文档的编写是策略开发工程师的核心工作,本文计划描述功能开发文档在软件开发中的角色以及如何编写。
近期参加了几次面试,提了两次这个问题:
“VCU策略开发你主要负责哪些功能模块,文档如何编写的?这些技术文档如何指导开发和测试阶段工作。”不知道您是否可以说的明白。
理解需求开发从整车V字开发流程说起
V字型开发流程包括以下步骤:
a.通过市场调研,产品定位,在整车功能开发角度,制定整车功能列表;
b.分解到系统级功能,开展系统需求分析,系统架构开发,整车Network设计;
c.将功能分解到零部件,并落实到特定控制单元ECU的软件功能需求,
d.开展软件架构设计、软件算法实现;
e.完成软件的单元测试、集成和测试;
f.模块集成,完成系统功能测试;
g.整车功能集成、标定、测试以及发布
整车功能开发主线是总-分-总架构,如下图(1),功能定义→设计→分解实施→验证→集成验证→发布。
对于软件开发流程,也可以参考ISO中关于软件层级产品开发的要求描述(Part6),软件开发阶段推荐流程模型如下图:
a.定义系统需求(softwarefunctionrequirementspecification)
:明确软件开发功能需求,这一步的输出物就是功能需求文档。
b.软件架构设计(softwarearchitecturaldesign)
:对软件架构功能模块进行设计,以实现功能需求。
c.软件单元设计及算法实现(softwareunitdesignandimplementation)
:对功能单元模块进行详细设计以及算法建模
d.软件单元验证确认(softwareunitverification)
:完成模块MIL测试,确认符合软件子模块需求。
e.软件集成及验证确认(softwareintegrationandverification)
:对各子功能进行集成,确认符合软件需求。
f.软件运行测试(testingoftheembeddedsoftware)
:开展软件代码的HIL及实车测试,确认符合功能需求。
系统功能需求文档编写结构范式
通过V流程基本可以理解功能需求开发在软件开发中所处的地位。
对于VCU、BMS、HCU等控制器项目开发,首先要求策略开发人员编写系统/零部件的功能需求文档(或称《xx系统功能需求文档》、《xxFunctionDesignSpecification》、《xxSystemRequirementSpecification》),通过项目评审并最终确认控制器功能List项及个项功能的功能需求。
如果是系统级需求,还需进一步分解到各零部件。如整车上下电功能实现需要分解到FDC、VCU、BMS、MCU、OBC等控制器零部件。
宽泛含义上的软件开发行业,该功能需求文档通常又叫做《xx功能需求规格说明书Software/systemrequirementsspecification》
a)软件功能清单
以三电系统开发为例,系统功能的制定依据车型特点开发。除了常规基础配置功能(例:能量管理、热管理、驾驶模式切换、档位切换、高压上下电etc.),也会根据车型市场定位增删部分功能(电子驻车、ADAS相关功能、坡道辅助等)。
其中复杂度较高的功能模块,又可进一步分解到子功能需求。以某项目VCU功能清单为例,如下表:
2)功能需求文档主要内容
功能开发的文档的任务是把需求描述清楚,需要给软件开发人员提供必要的技术资料输入,包括功能的应用车型平台、功能描述、系统网络拓扑图、功能输入输出接口、应用场景描述等。
以下为参考的文档层级格式:
1.目录
2.变更记录Historytrack
说明:追溯记录文档版本管理
3.介绍
3.1文档范围Scopeofthisdocument
说明:描述该文档的应用范围,通常此文档仅用于xx功能的概要设计阶段
3.2应用范围Applytodevelopmentplatform
说明:说明应用的车型平台
3.3参考标准Referencedstandards
说明:列举需要遵守的国家行业标准
3.4相关内部文件Relatedinternaldocuments
说明:列举与本功能开发设计需要知道的技术文件,例如整车EE电子电气架构
3.5术语及缩略语的定义描述Termsanddefinition
说明:为阅读的准确性,需列举文中用到的简称,并做解释;
4.功能定义FunctionDefinition
4.1功能名称Functionname
说明:功能命名,如滑行能量回收RegenerationCoasting
4.2功能目的functionpurpose
说明:简述功能所要达到的目的,如:在驾驶员期望进行车辆进行滑行时,该功能自动激活。通过将电机设置为发电模式,将车辆动能回收转换为电池电能。
4.3网络架构拓扑图EENetworktopology绘制CAN/lin网络拓扑图
说明:将整车功能实现所依赖的整车电气网络架构状态进行说明
4.4总体功能图Functionoveralldiagram
说明:详细说明该功能实现相关控制器节点及通讯方式。
4.5功能接口functioninterfaces
说明:详细说明系统间交互的信号并绘制信号表(信号名FromTo)
4.6功能设计描述functiondesigndescription
说明:对功能设计进行描述,说明功能实现形式以及功能要求。还以滑行回收为例:站在系统的角度,VCU内部设置与实施根据车速相关联的车辆目标减速度。中控面板提供驾驶员设置回收力度的接口。
如果是分配到VCU零部件的功能需求文档,则可以详细描述设置的车速-目标减速度曲线。最大回收扭矩限制、不同回收等级下的车速-扭矩曲线、车速区间、档位要求等。(可以逐条罗列要求,条款化)
4.6.1功能进入退出条件Functionenter/exitcondition
4.6.2功能状态及状态转移functionworkstates/statetransition
说明:状态转移条件,绘制状态机
4.7工作场景functionscenario
说明:该部分内容类似于软件的用例规约,描述可能出现的应用场景下动作
4.7.1场景1绘制流程图及文字说明
说明:用流程图可以较为清晰的展示功能实现的过程,如整车上下电、PRND档位切换逻辑等。
4.7.2场景2绘制流程图及文字说明
说明:场景应尽可能全面,充分的覆盖用户的使用范围,可以极大的避免可能出现的系统漏洞和安全风险。
4.8功能失效分析functionfailureanalysis
说明:描述功能失效的类型故障等级以及整车该如何动作。例:VCU和MCU通讯失效故障等级5级紧急停车。
其他未尽事项,不一而足。记住,功能开发文档的目的是把功能描述清楚,清晰的指导软件开发人员进行软件设计,并作为整车测试人员的功能验收依据。所以文档应尽可能的严谨,语气词要强硬。使用应当、需要、当xx条件满足时执行xx动作。不要使用可以,最好等词汇。
关于软件需求文档,未完待续。。。