0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

将传统汽车应用迁移到面向软件定义汽车的SOA

MATLAB 来源:MATLAB 2023-12-07 14:48 次阅读

| 作者Shwetha Bhadravathi Patil 和 Nukul Sehgal,MathWorks

软件定义汽车 (SDV) 的特点是 AI、自主、连接和电气化。最近,汽车行业已开始采用“基于服务”的方法来设计 SDV 的现代应用。这种称为面向服务的架构 (SOA) 的方法为开发软件应用提供了一种新范式,其特点是高重用性、易于更新以及与硬件的松散耦合。SOA 的构建原则是一个应用由一组服务组成,这些服务可以被动态地发现、发布、订阅和在运行时重新配置。SOA 的概念已被广泛纳入行业标准,包括 AUTomotive Open System ARchitecture (AUTOSAR)。

在 SOA 框架中,服务具有自包含、模块化、松散耦合等特征,这使得创建本质上非一体式的复杂分布式应用成为可能。基于 SOA 的应用可以使用自上而下或自下而上的方法来开发。在标准 SOA 软件堆栈中,应用软件由服务、平台服务和中间件组成。它们都运行在高性能硬件或虚拟机上。

将旧应用迁移到 SOA 面临的挑战

由于旧应用的若干特性,将其迁移到 SOA 可能颇具挑战性。这些特性包括:

一体式设计:旧应用通常采用一体式设计(图 1),组件的耦合和互连均很紧密。这使得很难将其分解成若干单独的服务,因为功能是相互交错的,而不是模块化的。

wKgaomVxataAcqBLAACdxz-60KA321.jpg

图 1. 组件紧密耦合的一体式设计。

执行顺序:旧应用的组件通常有预定义的执行顺序。这种顺序执行方式使得应用难以转换为可动态发现和在运行时重新配置的独立服务。

基于信号和基于时间的通信:旧应用通常依赖组件之间基于信号或基于时间的通信。在 SOA 中,通信通常基于服务接口和交换消息。将旧应用的通信机制调整到面向服务的方法需要仔细考虑各个事项,甚至可能需要重新设计通信协议。

克服这些挑战通常需要全面分析旧应用的架构,并仔细确定组件之间的服务边界和依存关系。这可能需要将应用重构为更加模块化和松散耦合的若干单元,进而将这些单元封装为 SOA 框架中的各个服务。

将旧应用组合转换为服务是一项复杂的任务。例如,以前设计的一体式应用组合(如高速公路车道跟踪应用)可以变换为单个服务,也可以分解为多个服务,如相机服务、视觉服务、雷达和车道导航服务。

系统专业知识和基于模型的设计有助于把一体式应用设计分解为若干服务函数,从而将各个逻辑组件进行封装和抽象分离。它可以助力信号到服务接口的迁移并确定正确的执行顺序。在本文中,我们将介绍一个基于模型的设计工作流。此工作流可对新服务进行建模,亦可将您的传统应用组合转换为基于软件定义汽车的 AUTOSAR Adaptive 概念的服务。

将传统应用软件组合分解成服务

将传统应用软件组合分解成 SOA 应用的服务涉及将一体式架构分解成更小、更模块化的组件(图 2)。这对 SDV 来说意味着更大的灵活性、可扩展性和自适应性。

wKgZomVxataAcc13AABuNqmCX0E717.jpg

图 2. 将传统应用软件组合分解成服务的步骤。

将传统应用软件组合分解为 SOA 应用的服务涉及四个步骤。

识别和分析服务:识别组成 SOA 的服务、组件、功能、执行顺序和依存关系。对于工程师来说,这是最困难的部分。完成之后,他们必须分析服务,以将传统的一体式应用分解成更小的组件(图 3)。

wKgaomVxataAPD3QAABm5a33eaM356.jpg

图 3. 将软件组件分解为服务。

定义服务和接口:在识别服务后,必须定义它们之间的接口。这涉及指定用于服务间通信的协议和数据格式,以及定义指定服务间交互的条款和条件的服务合约。

定义服务合约:此步骤指定服务之间交互的条款和条件。AUTOSAR 架构版本 22-11 中引入了这些概念。该架构指定服务的版本控制,支持在不破坏现有客户端兼容性的情况下发布新版本的服务。

实现和部署服务:实现服务并将其部署为独立应用,具有自己的工件,包括接口描述。

使用基于模型的设计迁移到服务

基于模型的设计已用于开发非 AUTOSAR 框架和 AUTOSAR Classic 框架的应用。它还可用于为 AUTOSAR Adaptive 和通用 SOA 框架开发基于 SOA 的应用。对于 SDV 应用,业界通常利用通用 SOA 或基于 AUTOSAR Adaptive 平台的 SOA。基于模型的设计的优势在于可以提供统一的开发平台,有效地处理所有类型平台(包括 SOA、AUTOSAR Classic 和 AUTOSAR Adaptive)的整个开发过程,能够确保全面的一致性和效率。

使用基于模型的设计将一体式应用组件分解为服务涉及以下步骤:

识别和分析服务:了解各种组件、其功能、执行顺序以及它们之间的依存关系。一个一体式应用的所有组件均部署为一个可执行文件进行部署(图 4)。然而,当分解成服务时,每个单独的服务均独立部署。

wKgZomVxataACfEhAACIqjkmALA573.jpg

图 4. 所有 Simulink 模型作为一个可执行文件进行部署。

例如,图 4 中有一个在 Simulink 中开发的高速公路车道跟随应用,它作为一个一体式应用组合进行部署。使用 Simulink 将这样的一体式组件分解成服务(图 5)需要依据单一职责原则和依赖倒置原则。根据这些原则,高速公路车道跟随模型可分解为多项服务,如雷达、视觉和车道。这些服务具有良好定义的职责和松散耦合的依存关系,支持隔离对服务的更改,并且最小化更改对其他服务的影响。

wKgaomVxataAbyECAADcMMNwZwg239.jpg

图 5. 使用基于模型的设计将一体式旧应用分解为服务。spacer.gif?t=B8DJ5M3

一体式应用分解成若干基于 SOA 的服务,并用客户端-服务器端口将它们连接起来。

定义服务和接口:使用接口定义的服务是服务边界的一部分。服务边界同样定义了服务与其他服务交互的通信通道。服务边界还封装功能,以实现重用、可维护性、版本控制、可见性、编排和其他好处。使用 System Composer,您可以配置相关服务组件的端口以实现数据一致性,并通过原型来表示这些服务之间的交互方式。这提供了服务之间依存关系和交互的可视化表示(图 6)。

wKgZomVxataASfNSAAEMWtRHGfs524.jpg

spacer.gif?t=B8DJ5M3

图 6. 在 Simulink 中配置服务组件的服务接口和端口。

定义服务合约:我们建议为服务建立清晰的边界,定义其输入、输出和行为。这让服务可以独立地开发、测试和部署,而不需要与架构的其他部分紧密耦合。通过定义服务合约,您可以了解服务的功能和限制,并且可以更轻松地与它们集成(图 7)。此外,服务合约可以在不破坏与现有客户端的兼容性的情况下发布新版本的服务。

图 7. 每个服务的模型都带有输入、输出及其应用逻辑。您可以仿真这些模型并观察服务之间的交互。

实现和部署:使用基于模型的设计中的客户端-服务器接口,您可以创建 SOA 软件架构模型。图 8 展示了在 Simulink 中作为服务实现的 LaneGuidanceApp、DetectionApp、雷达和视觉算法

wKgaomVxataAEhKBAABqgcAYUO4381.jpg

图 8. Simulink 中 SOA 服务的算法实现。

此外,您可以使用 Embedded Coder 为通用 SOA 应用生成 C++ 代码。

为 AUTOSAR Adaptive 应用配置服务

您可以使用 Simulink 建模结构为 AUTOSAR Adaptive 无缝配置这些服务。如图 9 所示,我们使用 System Composer 中直观的 AUTOSAR 编辑器,成功地将所有服务作为 AUTOSAR Adaptive 服务进行了集成。随后,我们为每个端口和接口建立了必要的映射,确保它们与对应的 AUTOSAR Adaptive 属性保持一致。

wKgZomVxataAIstXAADwYnIU2WM737.jpg

图 9. 设计、开发 AUTOSAR Adaptive 应用的服务并为其生成 C++ 代码。spacer.gif?t=B8DJ5M3

视频:如何在 Simulink 中为 AUTOSAR Adaptive 应用生成 C++ 代码。

以雷达服务为例,它链接到一个 Simulink 模型。该模型在根级使用 Simulink Function 模块来创建Adaptive methods (3:50)服务接口。此处,AUTOSAR 服务接口的方法定义了一个软件组件(建模为提供接口的服务器)和另一个软件组件(建模为需要接口的客户端)之间的交互。

在 Simulink 中,客户端-服务器通信可以用同步或异步调用行为进行建模。同步客户端模型导致客户端执行阻塞,也就是说客户端会向服务器发送请求并等待响应。异步客户端模型不会导致执行阻塞,也就是说客户端会发送请求、在发送请求后继续当前执行并在收到服务器响应后进行处理。

雷达服务是一个使用客户端-服务器通信的服务器。在图 9 中,代码映射 UI 显示了 Simulink Function 模块和函数元素端口的映射 - radarCtrl.Adjust 和 radarCtrl.Calibrate 及其各自的 Adaptive 端口。

此外,您还可以在 Methods 服务接口的 AUTOSAR 字典中查看和编辑 AUTOSAR 属性(图 10)。

wKgaomVxataAcv_XAAC4x1zBNpY783.jpg

图 10. 用于查看/编辑属性的 AUTOSAR 字典。

LaneGuidanceApp 服务作为客户端运行,并通过异步调用利用客户端-服务器通信(图 11)。此示例中的客户端使用异步通信,并受益于非阻塞执行,能够在向服务器发送请求后继续执行。在 Simulink 模型中,它使用带有 Message Triggered Subsystem 模块的 Function-Call Subsystem 模块来异步执行函数调用。代码映射 UI 显示 Simulink 函数调用方与对应 AUTOSAR Adaptive 端口。

wKgZomVxataANMDlAAE9eyJgwE8586.jpg

图 11. 映射到 LaneGuidanceApp 服务的 AUTOSAR 属性的 Simulink 模型。

同样,所有其他 SOA 服务都是根据 Simulink 中的 AUTOSAR Adaptive 概念进行配置的。

经过验证和仿真后,每个 AUTOSAR Adaptive 服务都可以作为独立应用程序进行部署,并具有自己的工件,包括 C++ 代码和 AUTOSAR 接口描述,其中包含机器、执行和 ServiceInstanceManifest 文件。最后,使用 Embedded Coder 生成 AUTOSAR Adaptive C++ 代码以及对应的软件描述和清单文件,以便进一步集成到工作流中(图 12)。

wKgZomVxataAUNifAAFiau8H-Kk572.jpg

图 12. AUTOSAR Adaptive 应用程序的 C++ 代码接口文件生成。

结论和将来的工作

基于模型的设计为系统开发提供了一种结构化方法,支持创建表示应用架构、组件和交互的模型。在本文中,我们通过高速公路车道跟随参考示例说明了如何使用基于模型的设计将传统一体式应用分解为服务,然后将它们配置为 AUTOSAR Adaptive 应用程序。这些模块化服务可作为一个开端,使工程师能够创建、仿真和生成 C++ 代码以及清单文件,以便进一步集成到工作流中。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • SOA
    SOA
    +关注

    关注

    1

    文章

    287

    浏览量

    27465
  • 开发软件
    +关注

    关注

    1

    文章

    25

    浏览量

    12927

原文标题:将传统汽车应用迁移到面向软件定义汽车的 SOA

文章出处:【微信号:MATLAB,微信公众号:MATLAB】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    通用车联网覆盖传统汽车和电动汽车

    与多数车企仅关注传统汽车互联业务不同,全球汽车巨头通用汽车两条腿走路。在传统汽车领域,通用
    发表于 12-20 16:13

    阐述软件定义汽车的五大挑战

    1、软件定义汽车面临的五大挑战  面向汽车行业转型发展,需要产业链中各利益相关方共同推动完成。当前,整车厂、Tier1、Tier2、ICT
    发表于 11-14 15:36

    如何使用SOA进行汽车软件本体的研究

    随着汽车软件的迅速发展,车内软件由分散、孤立的嵌入式软件逐步趋向具有相当规模、子系统之间需要频繁交互的集成软件。分析了
    发表于 03-04 08:00 6次下载
    如何使用<b class='flag-5'>SOA</b>进行<b class='flag-5'>汽车</b><b class='flag-5'>软件</b>本体的研究

    HMC传统PCN:MS##、MS##E和MS##G、MS##GE软件包-现有生产设备迁移到新建筑

    HMC传统PCN:MS##、MS##E和MS##G、MS##GE软件包-现有生产设备迁移到新建筑
    发表于 05-18 20:21 2次下载
    HMC<b class='flag-5'>传统</b>PCN:MS##、MS##E和MS##G、MS##GE<b class='flag-5'>软件</b>包-<b class='flag-5'>将</b>现有生产设备<b class='flag-5'>迁移到</b>新建筑

    HMC传统PCN:SOT26和SOT26E封装-原有生产设备迁移到新建筑

    HMC传统PCN:SOT26和SOT26E封装-原有生产设备迁移到新建筑
    发表于 05-25 14:55 4次下载
    HMC<b class='flag-5'>传统</b>PCN:SOT26和SOT26E封装-<b class='flag-5'>将</b>原有生产设备<b class='flag-5'>迁移到</b>新建筑

    软件定义汽车,E/E架构是关键

    从去年开始(可能更早),SOA的概念在汽车软件行业逐渐蔓延开来,很多公众号都发过讲汽车SOA的文章,很多车厂都要开始(或者已经在)搞
    的头像 发表于 05-25 15:23 3976次阅读
    <b class='flag-5'>软件</b><b class='flag-5'>定义</b><b class='flag-5'>汽车</b>,E/E架构是关键

    SOA软件架构重构汽车生态

    ”在SOA软件架构设计理念之下,汽车软件架构走向分层化、模块化,使得应用层功能够在不同车型、硬件平台、操作系统上复用,并且可以通过标准化接口对应用功能进行快速迭代升级。长期来看,在
    的头像 发表于 04-08 11:03 2767次阅读

    软件定义汽车如何建立在互联汽车概念之上

    汽车行业的许多方面。关键是联网汽车会带来广泛的无线软件更新,让软件定义威廉希尔官方网站 在其生命周期内发展为更好的功能。 点击查看完整大小的图片  
    的头像 发表于 07-20 15:16 1193次阅读
    <b class='flag-5'>软件</b><b class='flag-5'>定义</b><b class='flag-5'>汽车</b>如何建立在互联<b class='flag-5'>汽车</b>概念之上

    SOA软件定义汽车最关键的环节

    软件定义汽车”最关键的环节是SOA(Service-Oriented Architecture,面向服务的架构)。基于硬件算力提升、车载以
    发表于 09-13 18:16 1058次阅读

    经纬恒润SOA功能安全开发方案,助力车企软件定义汽车

    面向服务的架构(Service Oriented Architecture, SOA)是一种从IT领域引入到汽车行业的开发范式,其设计思想是车辆所具有的能力抽象成可调用的并具有标准接
    的头像 发表于 12-06 11:00 1163次阅读

    SOA是什么?为什么要在汽车上实施SOA架构?

    面向服务的软件架构SOA以其标准化的服务接口、松耦合的服务机制以及可组合扩展的服务特性,为实现“软件定义
    发表于 12-06 17:29 2977次阅读

    为什么软件定义汽车汽车从一种工具转变为一种体验

    为什么软件定义汽车汽车从一种工具转变为一种体验
    的头像 发表于 12-28 09:51 650次阅读

    OTA威廉希尔官方网站 在软件定义汽车中的重要性

    近年来,智能汽车已成为全球汽车产业发展的战略方向,汽车威廉希尔官方网站 与工程核心逐渐从传统硬件层面转移到软件
    的头像 发表于 04-11 09:21 1493次阅读

    经纬恒润SOA功能安全开发方案, 助力车企软件定义汽车

    面向服务的架构(ServiceOrientedArchitecture,SOA)是一种从IT领域引入到汽车行业的开发范式,其设计思想是车辆所具有的能力抽象成可调用的并具有标准接口的服
    的头像 发表于 12-08 09:40 867次阅读
    经纬恒润<b class='flag-5'>SOA</b>功能安全开发方案,  助力车企<b class='flag-5'>软件</b><b class='flag-5'>定义</b><b class='flag-5'>汽车</b>

    旧应用迁移到 SOA 面临的挑战

    基于信号和基于时间的通信:旧应用通常依赖组件之间基于信号或基于时间的通信。在 SOA 中,通信通常基于服务接口和交换消息。旧应用的通信机制调整到面向服务的方法需要仔细考虑各个事项,甚至可能需要重新设计通信协议。
    的头像 发表于 12-18 10:26 407次阅读
    <b class='flag-5'>将</b>旧应用<b class='flag-5'>迁移到</b> <b class='flag-5'>SOA</b> 面临的挑战