汽车电子行业开发者的内功心法:汽车软件开发V模型

谈思实验室 2024-09-29 17:57

点击上方蓝字谈思实验室

获取更多汽车网络安全资讯

01

V模型概述

汽车软件开发过程中的V模型对行业内开发者早已是司空见惯的模型,是由瀑布模型演变而来的,也是目前汽车行业运用最广的软件开发模型。由于该模型的构图形似字母V,所以俗称V模型。V模型核心思想是通过A-SPICE流程(汽车产业的软件流程改进和能力测定标准)来支持和管理整个开发流程,从需求到源代码的每个过程都有相应的测试。

V模型大体可划分为几个不同的阶段步骤即:功能需求、功能开发、软件开发、软件集成测试、功能集成测试、整车集成测试(系统合格性测试),如下图所示,左边为需求分析和设计开发的过程,右边则为针对左边的测试验证,左边的每个过程是与右边的过程正好相对应。

从系统需求到软件需求,再到软件的释放,需要工具对其进行管理,以达到可追溯,可记录的目的,目前市场主流的工具含有 Door、ClearCase、GIT、SDOM 等,也有公司自己研发的一些流程工具,当然这些工具的运作方式都遵循V流程的需求、研发和测试要求。

02

V模型实施

2.1、系统需求分析

系统需求需要系统工程师完成。

基于项目的整体需求,以及软硬件整体定义,对系统逻辑架构进行整体定义,这部分工作包括:硬件功能定义,控制器与其他控制器通信定义,软件简要功能定义。这个过程并不会对具体的技术实现做出定义。

2.2、软件需求分析

软件需求需要系统工程师完成。

系统工程师根据系统相关方需求说明书、软硬件接口文件、变更通知书等输入,梳理定义软件研发需求说明书,包括操作系统需求、电源管理策略、传感器读取,执行器控制、信号特性需求、存储服务、通信服务,网络管理、故障诊断、标定、程序升级等功能需求和非功能需求。

根据项目规划,制定软件开发计划。

软件需求分析建立需求追踪矩阵,将软件需求映射到系统需求,确保软件要实现的系统需求全部覆盖。

成功实施这个过程的结果如下:

  • 定义系统中分配给软件要素的软件需求及其接口;

  • 将软件需求进行分类,并分析了其正确性和可验证性;

  • 分析软件需求对运行环境的影响;

  • 定义软件需求实现的优先级;

  • 根据需要更新了软件需求;

  • 在系统需求与软件需求之间、在系统架构设计与软件需求之间建立了一致性和双向可追溯性;

  • 从成本、进度和技术影响来评估软件需求;

  • 约定了软件需求,并与所有受影响方沟通。

2.3、软件架构设计

软件架构需要架构工程师完成。

为了建立清晰的、结构化的软件设计,应该统一分配软件需求,然后完成软件架构设计。根据系统相关需求、软硬件接口表、软件需求确定软件架构。将每条软件需求合理分配到软件模块中,定义每个软件模块的输入输出接口、动态行为、资源消耗目标等,评估多种软件架构的优缺点等。

架构工程师需要使用EA等架构软件画出整个控制器软件所有模块的输入输出接口、以及内部动态行为。

如果项目基于AUTOSAR开发,需要架构工程师配置应用层的所有组件,并输出每个组件的ARXML描述文件。

一般来说,还需要架构工程师输出架构文档。

成功实施这个过程的结果如下:

  • 定义了识别软件要素的软件架构设计;

  • 将软件需求分配给软件的要素;

  • 定义每个软件要素的接口;

  • 定义软件要素的动态行为和资源消耗目标;

  • 建立软件需求与软件架构设计之间的一致性和双向可追溯性;

  • 约定软件架构设计,并与所有受影响方沟通。

2.4、软件单元设计和软件实现

软件单元设计需要软件开发工程师完成。

在此阶段,需要对每个组件内部的算法逻辑进行详细的内部设计。组件功能的详细设计需要与软件需求建立有效的对应关系。

如果是算法逻辑编码,建议使用Matlab进行模型开发,如果是接近底层的复杂驱动,一般是使用手写代码。

如果项目使用AUTOSAR架构,使用模型开发时需要导入arxml生成模型框架进行开发,使用手写代码进行开发时需要使用AUTOSAR工具生成的组件代码框架进行开发。

需要将代码经过多次代码审查和优化之后,将最终版本上传至代码库,以实现最佳的可靠性和性能。

成功实施这个过程的结果如下:

  • 开发描述软件单元的详细设计;

  • 定义各软件单元的接口;

  • 定义软件单元的动态行为;

  • 建立软件需求与软件单元之间的一致性和双向可追溯性;建立软件架构设计与软件详细设计之间的一致性和双向可追溯性;建立软件详细设计与软件单元之间一致性和双向可追溯性;

  • 约定软件详细设计及该设计与软件架构设计的关系,并和所有受影响方沟通;

  • 生成软件详细设计所定义的软件单元。

2.5、软件单元测试

组件单元测试一般需要软件开发工程师完成,也可以让测试工程师完成。

当进行单元测试通过后,将会将软件编译成ECU可执行的文件,比如Hex格式的文件,将其刷写到ECU进行集成测试(或称HIL测试),如果只是测试底层软件,那么一般只需要额外的硬件负载箱支持就行,比如用负载箱来模拟一些传感器信号输入,或制造一些执行器的短路和开路故障;如果测试包括应用层软件,那么就还需要物理模型支持才行,比如电机控制就需要电机的物理模型,变速箱控制可能就需要整个动力传动系统的模型才行。

单元测试与软件单元设计对应。

单元测试是根据软件单元设计,进行代码级别上进行的测试。

单元测试一般可以通过Matlab和Tessy等工具进行。

成功实施这个过程的结果如下:

  • 制订包括回归策略在内的软件单元验证策略,以验证软件单元;

  • 根据软件单元验证策略,制订软件单元验证准则,以适于提供软件单元符合软件详细设计及非功能性软件需求的证据;

  • 根据软件单元验证策略及软件单元验证准则,验证软件单元并记录了结果;

  • 建立软件单元、验证准则及验证结果之间的双向可追溯性和一致性;

  • 总结单元验证结果,并与所有受影响方沟通。

2.6、软件集成测试

集成测试需要测试工程师完成。

集成测试与软件需求对应。

集成测试将各个组成部分整合入一个软件系统中之后,最后进行软件的集成测试。根据定义的需求,测试相应的功能是否满足软件需求。

成功实施本过程的结果如下:

  • 制订与项目计划、发布计划和软件架构设计相一致的软件集成策略,以集成软件项;

  • 制订包括软件回归测试策略在内的软件集成测试策略,以测试软件单元之间和软件项之间的交互;

  • 根据软件集成测试策略,开发了软件集成测试规范,以适于提供集成的软件项符合软件架构设计(包括软件单元之间和软件项之间的接口)的证据;

  • 根据集成策略集成了软件单元和软件项直至完整的集成软件;

  • 根据软件集成测试策略和发布计划,选择了软件集成测试规范中的测试用例;

  • 使用选定的测试用例测试了集成的软件项,并记录了测试结果;

  • 建立软件架构设计要素与软件集成测试规范中的测试用例之间的一致性和双向可追溯性,并建立了测试用例与测试结果之间的一致性和双向可追溯性;

  • 总结软件集成测试结果,并与所有受影响方沟通。

2.7、软件系统测试

系统测试需要测试工程师完成。

系统测试与系统需求对应。

因为软件给各个ECU提供了相应的功能,因此在集成测试中,需要将软件烧录至硬件中。然后ECU要与其他电子系统组件集成起来,比如传感器和执行器。在接下来的系统综合测试中,对所有系统设备的交互响应进行评估。

成功实施本过程的结果如下:

  • 制订与项目计划和发布计划相一致的包括回归测试策略在内的软件合格性测试策略,以测试集成软件;

  • 根据软件合格性测试策略,开发集成软件的软件合格性测试规范,以适于提供符合软件需求的证据;

  • 根据软件合格性测试策略和发布计划,选择了软件合格性测试规范中的测试用例;

  • 使用选定的测试用例测试了集成软件,并记录软件合格性测试结果;

  • 建立软件需求与软件合格性测试规范中的测试用例之间的一致性和双向可追溯性,建立测试用例与测试结果之间的一致性和双向的可追溯性;

  • 总结软件合格性测试结果,并与所有受影响方沟通。

03

V模型的追溯性和一致性要求

汽车软件开发的过程中有严格的追溯性和一致性要求,每个阶段的过程要求、使用的工具方法和人员要求,前一阶段的输出交付物作为下一阶段输入,在每个阶段完成后对交付物进行验证,在软件集成后在最后阶段进行确认与软件需求的一致性。概览如下图所示:

04

V模型面临的挑战

特斯拉人工智能总监Andrej Karparthy在他的一篇技术博客中提出构建软件2.0技术栈的观点,代码正在从软件 1.0(由人类编写的代码)过渡到软件 2.0(由优化编写的代码,以神经网络训练的形式编写)。

软件1.0 是我们熟悉的V模型,它是用 Python、C++、C等语言书写的。 它包括程序员对计算机的明确说明,通过编写每行代码,程序员会用一些可取的行为识别程序空间中的特定点。

软件1.0的工程方法遵循以下4个步骤:

  • 确定要解决的问题,即需求;

  • 把需求进行分解;

  • 为每个分解的需求设计软件;

  • 逐级测试,集成并部署软件。

软件2.0时代正在逐渐到来,目前AI算法大量应用于自然语言识别、行为分析、决策协助、身份识别等不涉及公众安全的领域,也在自动驾驶、医疗诊断等安全领域也在逐步应用。对于安全关键系统,系统工程方法学是否还适合软件2.0时代,功能安全标准如IEC61508、ISO26262、EN50128不同行业安全软件开发所遵循的标准,是否还能指导软件2.0的开发实践,下面从开发过程、软件需求、开发工具三个方面谈谈想法。

4.1、软件2.0开发过程

软件1.0的开发生命周期模型按照系统工程V模型的方式开发,从上到下是瀑布式的,规定每个阶段的过程要求、使用的工具方法和人员要求,前一阶段的输出交付物作为下一阶段输入,在每个阶段完成后对交付物进行验证,在软件集成后在最后阶段进行确认与软件需求的一致性。在实际应用中,设计实现阶段和测试阶段,会规划小版本之间的迭代,从整体过程来看还是V模型。

在软件2.0中,软件的行为需求很大程度上取决于所使用的数据集(datasets),数据集不同于传统意义上的数据,以往的数据如传感器数据、系统的参数(如配置参数、校准数据等)或系统使用的数据库(如导航数据库、障碍物数据库等),这些数据可以一定程度上确定系统的行为,但它们并不描述这种行为的逻辑。而机器学习使用的数据集不仅用来提取信息,而且用来建立模型,用来处理其他数据并确定一个系统的行为,确定安全关键系统的需求,等同于软件需求。当软件需求阶段无法获得完整的训练数据集,从V模型来说,后面的架构、设计实现阶段也无法开始。

软件2.0的开发模型始于数据,可以划分为数据管理、模型训练、模型验证、模型部署,这四个阶段不断往复迭代,不是一次性完成的。

  • 数据管理:先建立所需数据集的要求,通过对数据的分析确定数据收集、增强和预处理的需求,收集什么数据,如何收集数据,如何解决样本数不足,收集成本过高的问题,如何对收集的数据清洗预处理。

  • 模型训练:选择所使用的模型,构建损失函数作为训练误差的衡量标准,训练的目的是产生一个最小化该误差的模型。需要制定一个合适的数据拆分策略,用于训练模型、验证模型、测试模型的比例。

  • 模型验证:针对数据管理阶段产生的独立于训练数据集的验证数据集,通过测试评估训练模型的性能。

  • 模型部署:使用验证过的模型的系统将被集成,将经过验证的ML模型与使用传统软件工程方法开发和验证的系统组件进行整合,对其运行进行监控,并通过在线维护或在线学习进行更新。

4.2、软件2.0新的软件需求:数据集

既然软件2.0的系统行为主要由数据集决定,系统是否符合其预期功能,很大程度上取决于数据集的质量。要证明数据集对于软件的预期功能在系统的操作环境下是足够的,对于认证来说是非常大的挑战。与软件1.0的需求对比,有以下不同:

  • 确定软件需求不是在需求阶段,而是在软件开发阶段,对软件设计实现的输入将不是软件的功能需求,而是训练过程的输出。如一个神经网络架构、权重和偏差。

  • 需求和设计实现不具备可追溯性,神经网络结构和权重不能追溯到开发它们的软件需求,追溯不到描述预期属性的需求文件,也追溯不到训练数据集。

  • 安全软件的验证方法不再适合数据集及训练模型,人类已无法理解,无法实现人工审查和分析,传统软件基于需求的测试方法也无法进行。例如,功能安全软件的测试用例采用的等价类生成分析,由于常规规模的神经网络的高度复杂和非线性特征,不适用于模型的实施。要确定神经网络模型算法的等价类是不可能的。

ISO26262 软件单元测试用例生成推荐方法

  • 数据集的属性与软件需求保证属性存在差异,传统软件需求的完整性,清晰性,精确性,无歧义性,可验证性,可测试性,可维护性,可扩展性 这些属性的含义需要重新定义。

  • 网络权重作为参数数据项,在本质上与传统的数据配置文件不同,依据已有配置参数修改流程而套用网络权重,存在很大偏差。

4.3、软件2.0开发工具链

传统软件开发中已建立完善的工具链用于支持开发,集成开发环境,编辑器,编译器,调试器,git集成,单元测试,集成测试工具,在功能安全软件工具的鉴定中,根据工具对软件安全性影响的不同,划分为不同的级别,例如ISO26262-8对软件工具的TCL1、TCL2和TCL3分级。在软件2.0中,也可以按照类似的分类对工具进行分级,但目前还没有完善的开发工具链和如何对工具鉴定的标准。

从软件领域的发展来看,软件2.0所占的规模越来越大,已出现机器自动生成的代码,当这类软件应用于安全关键系统时,有可能彻底改变既有软件的开发模式,需要识别与现有标准的差异,安全关键领域如航空航天、铁路、汽车标准,采用协作的方式在不同领域之间获取经验;对应用软件2.0产品的鉴定也不再是一次性的,与软件2.0生命周期类似,是一个迭代的过程,评估系统运行性能表现是重要环节;软件的变更会更加频繁,如智能网联汽车的OTA功能,对软件变更的评估,应考虑其服务期限、运行设计域差异、产品异常行为记录报告等所有既有数据记录。

来源:CSDN@不脱发的程序猿

原文链接:

https://blog.csdn.net/m0_38106923/article/details/125816139

 end 

 精品活动推荐 

 专业社群 

部分入群专家来自:

新势力车企:

特斯拉、合众新能源-哪吒、理想、极氪、小米、宾理汽车、极越、零跑汽车、阿维塔汽车、智己汽车、小鹏、岚图汽车、蔚来汽车、吉祥汽车、赛力斯......

外资传统主流车企代表:

大众中国、大众酷翼、奥迪汽车、宝马、福特、戴姆勒-奔驰、通用、保时捷、沃尔沃、现代汽车、日产汽车、捷豹路虎、斯堪尼亚......

内资传统主流车企:

吉利汽车、上汽乘用车、长城汽车、上汽大众、长安汽车、北京汽车、东风汽车、广汽、比亚迪、一汽集团、一汽解放、东风商用、上汽商用......

全球领先一级供应商:

博世、大陆集团、联合汽车电子、安波福、采埃孚、科世达、舍弗勒、霍尼韦尔、大疆、日立、哈曼、华为、百度、联想、联发科、普瑞均胜、德赛西威、蜂巢转向、均联智行、武汉光庭、星纪魅族、中车集团、赢彻科技、潍柴集团、地平线、紫光同芯、字节跳动、......

二级供应商(500+以上):

Upstream、ETAS、Synopsys、NXP、TUV、上海软件中心、Deloitte、奇安信、为辰信安、云驰未来、信大捷安、信长城、泽鹿安全、纽创信安、复旦微电子、天融信、奇虎360、中汽中心、中国汽研、上海汽检、软安科技、浙江大学......

人员占比


公司类型占比


更多文章

不要错过哦,这可能是汽车网络安全产业最大的专属社区!

关于涉嫌仿冒AutoSec会议品牌的律师声明

一文带你了解智能汽车车载网络通信安全架构

网络安全:TARA方法、工具与案例

汽车数据安全合规重点分析

浅析汽车芯片信息安全之安全启动

域集中式架构的汽车车载通信安全方案探究

系统安全架构之车辆网络安全架构

车联网中的隐私保护问题

智能网联汽车网络安全技术研究

AUTOSAR 信息安全框架和关键技术分析

AUTOSAR 信息安全机制有哪些?

信息安全的底层机制

汽车网络安全

Autosar硬件安全模块HSM的使用

首发!小米雷军两会上就汽车数据安全问题建言:关于构建完善汽车数据安全管理体系的建议

谈思实验室 深入专注智能汽车网络安全与数据安全技术,专属汽车网络安全圈的头部学习交流平台和社区。平台定期会通过线上线下等形式进行一手干货内容输出,并依托丰富产业及专家资源,深化上下游供需对接,逐步壮大我国汽车安全文化及产业生态圈。
评论
  • 现在为止,我们已经完成了Purple Pi OH主板的串口调试和部分配件的连接,接下来,让我们趁热打铁,完成剩余配件的连接!注:配件连接前请断开主板所有供电,避免敏感电路损坏!1.1 耳机接口主板有一路OTMP 标准四节耳机座J6,具备进行音频输出及录音功能,接入耳机后声音将优先从耳机输出,如下图所示:1.21.2 相机接口MIPI CSI 接口如上图所示,支持OV5648 和OV8858 摄像头模组。接入摄像头模组后,使用系统相机软件打开相机拍照和录像,如下图所示:1.3 以太网接口主板有一路
    Industio_触觉智能 2025-01-20 11:04 147浏览
  • 本文介绍瑞芯微开发板/主板Android配置APK默认开启性能模式方法,开启性能模式后,APK的CPU使用优先级会有所提高。触觉智能RK3562开发板演示,搭载4核A53处理器,主频高达2.0GHz;内置独立1Tops算力NPU,可应用于物联网网关、平板电脑、智能家居、教育电子、工业显示与控制等行业。源码修改修改源码根目录下文件device/rockchip/rk3562/package_performance.xml并添加以下内容,注意"+"号为添加内容,"com.tencent.mm"为AP
    Industio_触觉智能 2025-01-17 14:09 161浏览
  • 高速先生成员--黄刚这不马上就要过年了嘛,高速先生就不打算给大家上难度了,整一篇简单但很实用的文章给大伙瞧瞧好了。相信这个标题一出来,尤其对于PCB设计工程师来说,心就立马凉了半截。他们辛辛苦苦进行PCB的过孔设计,高速先生居然说设计多大的过孔他们不关心!另外估计这时候就跳出很多“挑刺”的粉丝了哈,因为翻看很多以往的文章,高速先生都表达了过孔孔径对高速性能的影响是很大的哦!咋滴,今天居然说孔径不关心了?别,别急哈,听高速先生在这篇文章中娓娓道来。首先还是要对各位设计工程师的设计表示肯定,毕竟像我
    一博科技 2025-01-21 16:17 95浏览
  •     IPC-2581是基于ODB++标准、结合PCB行业特点而指定的PCB加工文件规范。    IPC-2581旨在替代CAM350格式,成为PCB加工行业的新的工业规范。    有一些免费软件,可以查看(不可修改)IPC-2581数据文件。这些软件典型用途是工艺校核。    1. Vu2581        出品:Downstream     
    电子知识打边炉 2025-01-22 11:12 46浏览
  • 临近春节,各方社交及应酬也变得多起来了,甚至一月份就排满了各式约见。有的是关系好的专业朋友的周末“恳谈会”,基本是关于2025年经济预判的话题,以及如何稳定工作等话题;但更多的预约是来自几个客户老板及副总裁们的见面,他们为今年的经济预判与企业发展焦虑而来。在聊天过程中,我发现今年的聊天有个很有意思的“点”,挺多人尤其关心我到底是怎么成长成现在的多领域风格的,还能掌握一些经济趋势的分析能力,到底学过哪些专业、在企业管过哪些具体事情?单单就这个一个月内,我就重复了数次“为什么”,再辅以我上次写的:《
    牛言喵语 2025-01-22 17:10 18浏览
  • 嘿,咱来聊聊RISC-V MCU技术哈。 这RISC-V MCU技术呢,简单来说就是基于一个叫RISC-V的指令集架构做出的微控制器技术。RISC-V这个啊,2010年的时候,是加州大学伯克利分校的研究团队弄出来的,目的就是想搞个新的、开放的指令集架构,能跟上现代计算的需要。到了2015年,专门成立了个RISC-V基金会,让这个架构更标准,也更好地推广开了。这几年啊,这个RISC-V的生态系统发展得可快了,好多公司和机构都加入了RISC-V International,还推出了不少RISC-V
    丙丁先生 2025-01-21 12:10 108浏览
  • Ubuntu20.04默认情况下为root账号自动登录,本文介绍如何取消root账号自动登录,改为通过输入账号密码登录,使用触觉智能EVB3568鸿蒙开发板演示,搭载瑞芯微RK3568,四核A55处理器,主频2.0Ghz,1T算力NPU;支持OpenHarmony5.0及Linux、Android等操作系统,接口丰富,开发评估快人一步!添加新账号1、使用adduser命令来添加新用户,用户名以industio为例,系统会提示设置密码以及其他信息,您可以根据需要填写或跳过,命令如下:root@id
    Industio_触觉智能 2025-01-17 14:14 121浏览
  • 数字隔离芯片是一种实现电气隔离功能的集成电路,在工业自动化、汽车电子、光伏储能与电力通信等领域的电气系统中发挥着至关重要的作用。其不仅可令高、低压系统之间相互独立,提高低压系统的抗干扰能力,同时还可确保高、低压系统之间的安全交互,使系统稳定工作,并避免操作者遭受来自高压系统的电击伤害。典型数字隔离芯片的简化原理图值得一提的是,数字隔离芯片历经多年发展,其应用范围已十分广泛,凡涉及到在高、低压系统之间进行信号传输的场景中基本都需要应用到此种芯片。那么,电气工程师在进行电路设计时到底该如何评估选择一
    华普微HOPERF 2025-01-20 16:50 73浏览
  •  万万没想到!科幻电影中的人形机器人,正在一步步走进我们人类的日常生活中来了。1月17日,乐聚将第100台全尺寸人形机器人交付北汽越野车,再次吹响了人形机器人疯狂进厂打工的号角。无独有尔,银河通用机器人作为一家成立不到两年时间的创业公司,在短短一年多时间内推出革命性的第一代产品Galbot G1,这是一款轮式、双臂、身体可折叠的人形机器人,得到了美团战投、经纬创投、IDG资本等众多投资方的认可。作为一家成立仅仅只有两年多时间的企业,智元机器人也把机器人从梦想带进了现实。2024年8月1
    刘旷 2025-01-21 11:15 333浏览
  • 2024年是很平淡的一年,能保住饭碗就是万幸了,公司业绩不好,跳槽又不敢跳,还有一个原因就是老板对我们这些员工还是很好的,碍于人情也不能在公司困难时去雪上加霜。在工作其间遇到的大问题没有,小问题还是有不少,这里就举一两个来说一下。第一个就是,先看下下面的这个封装,你能猜出它的引脚间距是多少吗?这种排线座比较常规的是0.6mm间距(即排线是0.3mm间距)的,而这个规格也是我们用得最多的,所以我们按惯性思维来看的话,就会认为这个座子就是0.6mm间距的,这样往往就不会去细看规格书了,所以这次的运气
    wuliangu 2025-01-21 00:15 164浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦