作者:BMS田间小路
随着新能源行业的不断发展,目前新能源汽车上的电气化越来越重要,实现的功能日趋复杂。汽车整体从以前的数十个ECU到目前域控制器开发,随之,从机械定义汽车也转换到目前软件定义汽车,汽车控制器中的软件发挥越来越重要的作用。汽车控制器开发过程包含开发的各个步骤,从用户需求分析到最终的电子系统的验收测试。控制器开发的核心流程包括一系列不同的开发步骤。目前比较受众认可的,叫做“V开发流程”。
V开发流程定义:
V开发流程,即V模型,是在快速应用开发 (RAD,Rap Application Development)模型基础上演变而来,由于将整个开发过程构造成一个V字形而得名。V模型强调软件开发的协作和速度,将软件实现和验证有机地结合起来,在保证较高的软件质量情况下缩短开发周期。
上图是整个V流程的示意图,我们从左到右进行看一下具体是什么。左边是设计和分析,软件设计实现的过程,同时有审核的过程,保证质量,可以理解为静态的测试过程;右边是对设计输出结果的验证,是动态测试的过程,即对设计和分析的结果进行测试,以确认是否满足用户的需求。整个过程中很多工作因联系密切,是可以提前准备的,这样会提高效率。
1、需求分析和功能设计对应验收测试,说明在做需求分析、产品功能设计的同时,测试人员就可以阅读、审查需求分析的结果,从而了解产品的设计特性、用户的真正需求,确定测试目标,可以准备用例并策划测试活动。
2、当系统设计人员在做系统设计时,测试人员可以了解系统是如何实现的,基于什么样的平台,这样可以设计系统的测试方案和测试计划,并事先准备系统的测试环境,包括硬件和第三方软件的采购。因为这些准备工作,实际上是要花去很多时间。
3、当设计人员在做在做详细设计时,测试人员可以参与设计,对设计进行评审,找出设计的缺陷,同时设计功能、新特性等各方面的测试用例,完善测试计划,并基于这些测试用例以开发测试脚本。
4、在编程的同时,进行单元测试,是一种很有效的办法,可以尽快找出程序中的错误,充分的单元测试可以大幅度提高程序质量、减少成本。
流程各流程步骤具体分析:
1.系统需求分析及系统架构设计
这部分工作主要需要系统工程师完成,同时需要项目工程师提供相关输入。基于项目输入对整个系统功能的需求,结合软硬件整体定义,对系统逻辑架构进行设计,工作内容主要包括:硬件功能及接口的定义,本控制器与其他控制单元的通信协议的制定,控制软件具体功能整体规划并制定技术协议,系统整体架构的设计等。
在这个阶段,主要是从系统级定义整个项目的相关事宜,并不会对具体的技术逻辑等做具体规划和定义。
2.软件需求分析
这部分工作主要需要系统工程师完成。系统工程师根据系统相关方需求说明书、软硬件接口文件、电气设计图纸等输入,梳理定义软件研发需求文档,包括分配给软件要素的软件需求及其接口、更新了软件需求等功能需求和非功能需求。
根据项目规划,制定软件开发计划,将软件需求映射到系统需求,确保软件要实现的系统需求全部覆盖。
3.软件架构设计
这部分工作主要需要架构工程师完成。统一分配软件需求,建立清晰、结构化的软件设计,完成软件架构设计。根据系统相关需求、软硬件接口和软件需求来具体确定软件开发的整体架构,内容主要包括:将每条软件需求合理分配到软件模块中,定义每个软件模块的输入输出接口、动态行为、资源消耗目标等,评估多种软件架构的优缺点等。
架构工程师需要最终输出控制器软件静态设计和动态设计的详细文档。
4.软件单元设计和软件实现
这部分工作主要需要软件开发工程师完成。在此阶段,需要确定每个组件内部详细的算法逻辑。组件功能的详细设计需要与软件需求建立有效的一一对应关系,确保无遗漏。软件实现工作,内容包括:软件单元的接口设计、软件通讯协议设计、软件DBC设计、软件单元的详细设计等。
软件实现形式具体看怎样定义使用什么开发工具:如果是模型搭建,那么就是使用simulink;如果是使用代码编写,一般就是使用C代码相关的编译器。
6.软件单元测试
这部分工作一般需要软件开发工程师完成,也可以让测试工程师完成。单元测试是根据软件单元设计,进行代码级别上进行的测试。单元测试一般可以通过Matlab等工具进行。
7.软件集成及集成测试
这部分工作主要需要集成工程师和测试工程师共同完成。集成测试与软件需求对应。集成测试将各个组成部分整合入一个软件系统中之后,最后进行软件的集成测试。根据定义的需求,测试相应的功能是否满足软件需求。
8.软件功能测试
这部分工作需要测试工程师完成。软件功能测试与系统需求对应。目前有专业的设备可以完成相关操作,比如Hil设备。将程序烧录到Hil设备当中,加上配套的上位机和传感器,组成一个完整的模拟系统,测试软件的基本功能。
9.系统集成和系统确认测试
这部分工作需要系统集成和测试工程师去完成。将单个控制器按照设计需求设计,装入整个成品系统,测试整个系统联调的准确性。
总结:
对于一个开发工程师来说,很多时候不会完全根据V流程进行全套开发,我们开发项目的过程中,经常会更具具体的成员配备,去整合相关工作步骤,只要是适合我们团队开发的整体节奏,才是最好的。不过V流程当中的内容最好不要缺失,这样才能更好的保证我们开发的效率和完整性。
软件定义汽车,欢迎进入BMS世界!
来源:BMS田间小路公众号
原文:https://mp.weixin.qq.com/s/fDbqHxIJdc76P0d9KJAMGw
|