导读:近几年,汽车行业一直朝着软件定义汽车发展,更多的特性和功能主要通过软件实现,这些软件可以快速、轻松的进行远程更新。当前一辆车上的代码量达到数以千万计,但是在车辆网联、自动驾驶、用户体验方面还仅仅是初级阶段,这其中每项创新都需要复杂的软件来支撑。确保开发人员拥有更好的工具、流程和结构来高效地创建、测试和更新软件,这是整个行业的首要任务。答案在于持续集成和持续部署 (CI/CD),但平台必须具有足够强大的云原生开发和编译环境,以实现实时、全球协作并执行严格、广泛的测试 汽车应用。
软件定义汽车的趋势
一、一个更好的方法
随着软件将车辆的安全性、舒适性和便利性提升到新的水平,开发人员现在需要比传统系统更现代、更强大的软件开发环境。
过去,软件开发遵循僵化、缓慢的瀑布方法,并使用高度分散的工具链。开发将经历离散的阶段,每个阶段都在下一个阶段开始之前完成。许多开发过程是手动的,从工具链的一个部分到下一个部分的切换也是如此。以这种方法一版软件需要六到八个月的时间的开发时间。
如今,汽车领域的软件越来越从硬件中抽象出来,开发人员有机会利用这种架构转变,他们可以使用敏捷和DevOps 方法按自己的时间表来更新软件,并且不受硬件更改或其他物理更新的影响。这种方法提供了前所未有的速度、可扩展性、质量和安全水平。
在持续集成 (CI) 中,构建软件的工作是自动化的,软件生产的所有步骤都包含在 CI 链中,因为一个部分的输出成为下一个部分的输入。持续部署 (CD) 是在现场自动部署新版本软件。CI/CD 以及连续测试 (CT) 现在可以在汽车中进行,但测试新的高级应用程序在汽车行业提出了一个独特的问题,因为测试需要在物理车辆上或在试验台上进行复杂的模拟测试。
理想的方法是通过基于云的集中式平台消除开发和测试过程中的瓶颈,使开发人员能够在位于世界任何测试中心的相关测试台上执行任何测试。这些测试可以将软件在环 (SIL)、硬件在环 (HIL) 甚至车辆在环 (VIL) 置于更真实的测试中。这种方法允许使用全球资源来应对当今最严峻的挑战所需的规模。
二、传统方法的问题
当开发人员每天编写数百万行代码时,传统的开发、测试、集成和部署软件的方法是不可持续的。对HIL测试的需求意味着,由于在CI期间代码更改已经集成到软件中,CI系统必须在物理上位于HIL工作台的旁边。这种方法有许多缺点:
1、单个构建可能需要数小时,而它需要在几分钟或更短的时间内完成。这是影响上市速度和质量的一个重大瓶颈,因为更长的构建通常会导致执行自动化测试的时间更少。当构建时间过长时,它会消耗宝贵的时间,这些时间可以更好地用于额外的测试或功能开发。
2、如果没有普遍接受的软件方法,影子 IT 不可避免地会出现,这意味着开发人员有时会使用自己喜欢的工具。这不仅会造成效率低下,而且还可能成为安全风险,因为 IT 缺乏对开发过程的可见性。当开发人员使用不同的工具集时,他们更难与客户或彼此协作。
3、为同一软件项目贡献的CI链已经分布在世界各地的多个技术中心,每个中心都有自己的HIL测试台。如果没有标准的方法,企业就无法在云中进行开发,也无法实现全球标准化所带来的一致性和可重复性。
4、随着多个团队甚至供应商为当今的移动软件产品做出贡献,集成点的增加推动了质量、交付和时间问题的增加。最佳实践是尽早且经常地集成代码,但传统方法在开发过程中创建了不灵活的闸,导致在下一个合并门之前无法测试的问题。这会导致整个项目出现不必要的延误。
三、云端
由于车辆是生命安全系统,汽车公司长期以来一直采用以需求为中心的方法来设计和测试它们。他们根据一系列的要求来验证系统,以确保安全和法律方面的考虑得到了适当的解决,事实上,行业的ISO 26262功能安全标准导致了需要测试功能的每一个需求。简而言之,制造商必须证明他们的解决方案在第一天就符合规格,并且在发布后的每次更新中,他们必须确保所有昨天能用的东西今天仍然能用。
在过去的 10 年里,汽车行业应用中的软件需求数量已从数百增长到数万。其中许多要求必须使用运行在与车辆相同的电子控制单元 (ECU) 硬件上的嵌入式软件进行测试。测试还必须实时执行,以确保响应时间是可预测的,这意味着每个测试平均需要几分钟。最重要的是,软件通常分布在多个 ECU、传感器和其他设备上,并且由不同公司的同等分布的团队开发。
这些因素导致公司在多个地点使用多个CI链,都有自己的HIL测试平台,并且都为同一个项目做出贡献。
更好的方法是为每个程序创建一个单一的、统一的工具链。这个工具链应该是基于云的,并且可以在全球范围内使用。而且应该有一种机制来快速和轻松地部署新的工具链。
基于云的工具链具有可伸缩性,可以确保CI构建时间不会成为瓶颈,这一点很重要,因为瓶颈会压缩可用的测试时间,并可能导致软件延迟发布。
使用基于云的方法,开发是顺畅的,因为代码更新在开发团队之间共享,因此每个人都在同一页面上了解项目的状态。这可以提高自动化、远程故障排除、快速反馈、明确的团队分配和明确的产品所有权。
使用基于云的CI意味着开发团队创建的新代码可以自动集成到代码库中,而使用OTA更新的基于云的CD可以确保成功构建的代码自动部署到测试或生产环境中,无论它们在哪里。如果处理得当,云方法还可以在整个过程中构建安全性,包括灾难恢复。而且,托管在云中的集中式基础设施允许使用单一的管理视图来查看所有这些高度安全和弹性的CI链。
此外,灵活性允许开发人员在开发周期的后期改进产品。开发人员可以在前一年定义需求,对它们进行测试,从而构建更接近消费者期望的系统,而不是今天决定消费者在几年内想要什么。然后,他们可以在未来几年根据需要部署 OTA 软件更新,从而降低保修成本并确保软件继续满足消费者的期望。
四、测试
在汽车工业中,为了确保软件在各种驾驶条件下都能正常工作,试驾可能需要数十万英里。
仿真程序使软件供应商能够降低成本,同时提供灵活性和可重复性。此外,通过模拟可以在复杂解决方案的开发过程中测试代码片段或组件,而不是等待整个产品完成然后进行测试,然后返回并进行修复,重复测试和修复。
借助仿真技术,结合 SIL 或 HIL,可以测试和验证日常构建。并且多线程 SIL 或 HIL 可以同时进行多个测试而不是顺序进行,这也节省了时间并提高了效率。SIL 测试完全在软件生成的建模环境中进行。
SIL 测试的优点是不需要特殊硬件(几乎可以在任何笔记本电脑或其他计算平台上进行),并且最适合在早期阶段测试设计。
在HIL测试中,系统会模拟车辆和ECU的环境输入,使其误以为与真实车辆相连。HIL工作台包含所有相关的车辆组件。模拟器向实际的摄像机和雷达系统提供输入信号,然后向被测系统发送信号,以查看系统是否对输入信号作出正确响应。
例如,测试脚本可以创建一个场景,在这个场景中,一辆在雨中以60km/h的速度绕着弯道行驶的汽车在路上遇到一个未知的物体,或者一辆迎面驶来的汽车在中线上急转弯。连接在HIL试验台上的摄像机和雷达将图像发送到ECU,被测系统必须实时处理这些数据,并决定采取何种行动。
模拟还允许测试人员快速测试罕见或潜在危险的用例。通常为了尝试重现特定的驾驶条件或部件问题,不得不驾驶数百公里。模拟允许按需测试,通过重新模拟特别具有挑战性的场景来显示不同版本的软件如何对相同的输入做出反应。
五、基于云的CI/CD/CT的优势
持续测试(来源APTIV)
基于开放标准和敏捷软件开发原则的全球集成云原生架构消除了传统瓶颈,并为汽车行业开发先进软件的公司带来了关键优势。这些包括 :
性能: 基于云的、全球可用的体系结构可以在世界任何地方远程控制测试平台。这增加了可扩展性和灵活性。
速度:自动化可以将构建时间缩短多达 80%。公司可以通过基于容器的架构和代码合并的方法来消除瓶颈。他们可以仅重建和测试更改的部分,从而将部署速度提高 60%。
联合开发:当多个合作伙伴实时测试彼此的代码时,开发人员都可以在合作伙伴提交代码的同一天进行集成、测试和问题修复。其结果是为 OEM 提供快速、高质量、低风险的复杂软件功能,在成本效益、维护和后期迭代上也具有明显优势。
质量: 与远程SIL/ HIL测试平台的完全集成可以提高产品质量,因为开发人员可以在任何地方进行测试,并且并行进行无限的测试。
透明度:整个团队可以全面了解所有软件开发链的最新状态,无论程序大小、复杂性或修改的内容。CI最佳实践可以得到实施和支持,并且可以在提前识别出问题。这也极大地简化了安全策略的执行。
来源:汽车ECU开发