汽车电子行业开发者的内功心法:汽车软件开发V模型(瀑布模型)腾讯云开发者社区

金庸笔下有四大内功心法:《易筋经》、《九阴真经》、《九阳神功》和《神照经》,习武之人,必先修炼至高内功心法,再结合武功绝技,方可独步武林。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

特斯拉人工智能总监AndrejKarparthy在他的一篇技术博客中提出构建软件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的开发实践,下面从开发过程、软件需求、开发工具三个方面谈谈想法。

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

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

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

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

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

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

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

THE END
1.车联网运维工程师招聘网2024年车联网运维工程师招聘信息猎聘2024年车联网运维工程师招聘信息,海量高薪猎头职位等你来选,了解车联网运维工程师岗位要求、薪资待遇等真实招聘信息,找高薪职位,上猎聘!https://www.liepin.com/zpclwywgcs1z6v/
2.网络架构工程师岗位职责(工作内容,是做什么的)网络架构工程师是做什么的?有前途吗?工资待遇怎样?90.3%的岗位拿¥10-30K/月。网络架构工程师岗位职责怎么写?为你汇总怿星科技,四川佰嘉盈数据科技有限公司等公司的工作描述。https://m.jobui.com/gangwei/wangluojiagougongchengshi/
3.汽车电子电气架构工程师的工作电气结构工作师是干什么的为了便于论述,笔者将从事汽车电子电气架构设计的人员简称为“架构工程师”。从大概2009年开始,国内主流的整车厂开始逐渐了解和接受电子电气架构这个概念,并建立起独立的架构工程师团队。 在国内的整车厂中,负责汽车电气系统开发的部门一般会设有 负责车载总线开发的网络工程师 https://blog.csdn.net/ppdyhappy/article/details/80391925
4.从小白到自动驾驶系统工程师33电子电气架构EEA通过物理层面的布置,对车身信息进行转化和处理,为汽车电子电气设计提供了整体的解决方案。车上每一个功能都有一个最基础的电气架构作为支撑,包括物理布置、能量管理(供电)、信号网络、数据网络、控制逻辑、执行链路、反馈、容错、诊断等等,而整车的电子电气架构就是这些基础电气架构的有机组合,是集合汽车的电子电气https://www.dongchedi.com/article/7360188908065374770
5.《汽车软件架构》的读后感当一名普普通通又不会Linux的汽车嵌入式软件工程师遭遇到Automotive SPICE的降维打击,他发现自己身处V Model的最底端,即SWE.3 软件详细设计和写代码。未来的职业发展何在?除了转管理还有更好的出路吗? Automotive SPICE已经为我们指明了方向,SWE.2 软件架构设计和SWE.5 软件集成都是普通的嵌入式软件工程师可以发展http://esnl.hnu.edu.cn/info/1005/2566.htm
6.车载通信架构——传统车内通信网络LIN总线(低成本覆盖低速嘲)我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: “ 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明自己,无利益不试图说服别人,是精神上的节能减排。无人问津也好,技不如人也罢,你https://www.360doc.cn/article/78548535_1106251782.html
7.永青集团有限公司38、 电气班长/值班班长45岁以下,高中及以上学历,有1年以上相关工作经验,负责协助车间主任电气日常管理工作,有电工证、电气特种作业操作证、工程师证等优先。 39、 回干立机修工45岁以下,中专及以上学历,有1年以上相关工作经验,根据工作责任区域的划分,负责机修车间白班的检修维护工作,确保机械设备正常稳定生产。 https://www.etsingshan.com/Art/Art_27/Art_27_337.aspx
8.新一轮裁员潮?Q3至今已有超20家业内企业裁员!报告称,福尔瑟姆工厂有37个职位类别受到影响,受影响职位的主要头衔是“工程师”和“架构师”。具体来说,英特尔将裁撤10名GPU软件开发工程师、8名系统软件开发工程师、6名云软件工程师、6名产品营销工程师和6名片上系统(SoC)设计工程师。 英国最大晶圆厂NWF将裁员100人https://jiweipreview.laoyaoba.com/n/883622
9.齐了!Data+AI的技术大佬2,了解火山引擎湖仓一体产品LAS的架构、特色及应用场景。 3,了解Bolt在湖仓一体产品LAS的应用现状及主要收益。 王日宇 阿里云 高级软件开发工程师 个人介绍:计算机科学与技术硕士,专注于大数据系统和OLAP数据库的技术研发工作,现在主要负责开源StarRocks项目内核开发。 https://hub.baai.ac.cn/view/32597