汽车软件工厂是如何建成的
伴随着智能驾驶、智能座舱技术的发展,整车功能复杂度正在逐渐上升。同时,市场对智能汽车也提出了越来越高的新要求。因此在当前软件定义汽车的大背景下,软件逐渐成为汽车智能化的核心。软件能力不仅体现为高质量的软件产品,还体现在软件产品的快速迭代上。软件和硬件开发过程正逐步解耦,软件需要快速迭代以满足用户对于功能升级的需求。确保开发人员拥有更好的工具、流程和方法来高效地创建、测试和更新软件,这是整个行业的首要任务。软件工程师需探索如何将持续集成、持续交付的敏捷开发理念与传统V开发模式相结合,以获得软件开发效率和质量的平衡。
在刚刚过去的上海MATLAB EXPO用户大会上,极氪汽车作了“基于模型开发车载OS环境下的SOA应用软件”报告,包括利用Simulink®支持SOA的新特性和 Embedded Coder®生成的C++代码,实现了对SOA软件行为的建模(如图1所示);基于System Composer™、MATLAB®和APP Designer定制开发了软件架构工具SOMOC, 实现了对SOA软件系统的维护(如图2所示)。
接下来,就汽车软件如何融合更多新功能、快速交付迭代、降低开发成本、减少开发周期和安全可靠等汽车软件工厂所关心并亟待解决的话题,有幸邀请到极氪软件和电子中心为大家分享他们的实践经验。
面向服务的架构:软硬解耦,软软解耦
智能汽车多样化的场景模式,无论是刺激的超跑模式,还是舒心的小憩模式等等,这些功能的背后,都离不开强大的底层构建—SOA原子服务的支持。SOA把软件模块应用化了,变成一个个APP嵌入到各控制器中。
电子电气架构从分布式到域集中式再到中央集中式,功能大幅增长带来整个系统复杂度的大幅上升,随之而来的是ECU也从传统的MCU演化到MCU+SoC的异构分布式系统上。
为了更快速地满足功能快速迭代的要求,一方面要从传统的面向信号的开发逐步转向面向服务的设计开发,另一方面要做到尽量解耦。这里的解耦,包括硬件和软件功能的解耦,也包括软件分层设计的解耦,例如操作系统内核和中间件、中间件和应用层的解耦。首先要做到充分解耦,才能保证硬件、软件的分别快速迭代,减少开发周期快速满足用户需求。
如何做到解耦来保证快速迭代?带来整车软件开发的一点重要变化便是通过面向服务的架构(SOA),不但可以使应用软件与硬件及应用软件与应用软件之间松耦合,有利于软件的开发和维护,还可以使车端软件、通信、信息安全能和云端环境产生很好的协同,实现一整套车云生态环境。
在汽车软件这样的极为复杂的跨学科、分布式、大规模的软件解决方案中,很难找到所谓的银弹,来解决所有问题。
极氪在开发整车操作系统的时候也注意到,对于有些业务来说直接用C/C++这样的高级语言来实现可能比较简单,比如涉及到多线程,涉及到发布订阅等等,针对这些模块,我们可能会直接用C/C++这样的语言重新实现。
但是极氪在分布式、域控架构上有着非常丰富的积累和技术沉淀。无论是动力、底盘还是车身上,极氪之前都做了大量的自研,而这些自研基本都是基于模型来做的开发,经过了大量车型的量产的考验,可以说是非常不容易的。
因此,对于一些比较成熟的功能,经过了大量量产检验的,或者说有比较复杂的状态机转换的,我们就希望继续沿用之前成熟的模型,希望能把这个模型快速地集成到SOA平台上面来。针对这个难题,极氪和MathWorks一起联合开发了一套MBD开发集成工具链。如图3所示
虚拟车辆仿真:缩短开发周期,降低成本
以前经常听到,在评价一款车的时候说这款车不错,就是小毛病有点多。这里说的小毛病,很多都是和软件没有经过充分验证相关的。
有数据显示,目前自动驾驶算法测试大约90%用仿真平台完成,9%在测试场完成,1%通过实际路测完成。在自动驾驶中,实际道路遇到的场景无所穷尽,实车测试很难囊括所有可能出现的场景,这时在虚拟仿真平台上的实验就显得尤为重要。
随着汽车行业的变革和技术进步,OEM开始引入敏捷开发的方式、自动化测试和持续集成、云计算和虚拟化,以加快软件开发周期,其中对集成和验证影响最大的就是车辆虚拟和仿真技术。
目前车企在仿真方面的应用主要是用于车辆控制系统的开发和测试,包括悬架系统、制动系统,发动机控制系统。利用Simulink平台,构建动力学模型、控制算法模型和仿真的场景,来评估和优化系统,进行标定或者算法优化 。随着数字化的发展,已运用数字孪生技术百分之百的虚拟车辆,实现真实车辆全面的模拟和预测。
虚拟车辆仿真系统须依赖强大的集成仿真平台开展原型设计、虚拟标定和虚拟验证,利用集成仿真实现最大程度的流程前置,可以大大缩短开发周期和降低成本。在打造的整车级仿真方案中,极氪汽车充分利用MATLAB和Simulink丰富的开箱即用功能(如图4所示)可实现快速创建虚拟车辆。
开发运营:缩短交付时间
最近几年里,很多车企宣称自己是面向软件定义的车企,开始了持续集成(CI)、持续交付(CD)的过程,走的更快的已经开始做开发运营(DevOps)。DevOps(Development和Operations的混成词),意为开发运营,一边开发一边运营,在运营过程中收集到数据,反馈给开发,开发不停迭代软件。
汽车软件的特点是开发成本很高,需要大量的代码开发、集成和交付,使用DevOps系统可缩短提交代码到产品更新的时间,加快开发速度并减少错误,并通过持续集成、自动化测试、静态代码扫描和定制化的监测告警系统,确保软件高质量、高安全交付。
DevOps强调使用敏捷的方法提供更快的产品交付的速率。因为软件复杂度提升、上市时间缩短、预算有限、软硬件生命周期分离,基于模型设计的汽车软件开发融合敏捷开发理念和
流程,从建模和仿真,到测试和验证,再到自动代码生成可将开发效率和实施速度大幅提升。
为了实现这些目标,主机厂及其供应商都会选择合适的代码检查工具,如使用静态代码分析工具Polyspace®,用来检查编码是否规范、是否有安全漏洞等软件缺陷。
极氪汽车自研了一套自动化单元测试和服务验证工具,生成的代码通过这些工具验证,来确保可执行程序可以稳定可靠地在系统中运行。同时,极氪汽车也将模型的开发集成验证,整合到了极氪的DevOps体系中。就像代码一样,功能开发的工程师,可以将模型上传到代码仓库。如图5所示
V模型+敏捷开发:保证功能安全
软件定义汽车的发展带来了很多创新,例如自动驾驶和车辆控制,但是同时给功能安全也带来了相当大的挑战,软件架构则由经典AutoSAR向异构分布式整车OS、SOA快速拓展。这给传统功能安全分析方法、软硬件安全设计理念、安全验证体系和工具链安全的建设带来了新的挑战和不确定性。如何快速实现上述新电子电气架构、软硬件架构和软件中间件的车端落地的同时,还要保证其安全性和可靠性?“没有测试的系统都是有问题的系统”。软件定义汽车的危机,本质上是测试的危机。
汽车行业最常见的汽车软件开发过程遵循V模型,从需求到源代码的每个开发阶段都有相应的测试,下一阶段依赖上一个阶段的输出。V模型的优点在于流程清晰、可追溯、质量可控和易于验证,但也存在一些缺点,如开发周期长、难以应对需求变化、测试难度大和过于严格。
随着汽车系统的复杂性指数级增长,传统的软件开发过程不能满足动态市场的需求,敏捷开发应运而生。它“应对变化而不是遵循计划”,它允许软件的增量开发,并在迭代中开发软件,在增量中交付软件,实现小步快跑,不断迭代,而不是在开发过程结束时一次性交付所有软件。
目前,极氪的软件开发采用的是V模型+敏捷模式相结合的方式,既在整车开发上保留了V开发模式,又在具体的需求实现上有了一定的灵活性,在保证快速交付的同时也能确保软产品的安全可靠。如图6所示
我们还发现,由于功能集中到几个控制器上,功能开发和验证的成本大大增高。在这点上来看Simulink的模型开发有着非常大的优势。由于Simulink有着丰富的针对模型进行验证的手段, 提供了完备、成熟的ISO® 26262软件开发流程、方法和工具,可以有效地保证模型的正确性和可靠性。
此外,基于模型设计将敏捷原则延伸到包括物理组件和软件在内的系统开发工作。从需求定义、系统架构和组件设计,到实现、验证、测试和部署,基于模型设计贯穿整个开发周期, 能够对不断变化的需求快速做出调整。因此,基于模型设计本身就能满足V模型和敏捷开发的需求。
2024 年发布