百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

SOA架构在域控制器软件开发过程中的具体开发方法

bigegpt 2025-03-06 12:19 6 浏览


概述

汽车领域不断丰富的需求鼓励着技术创新和进步, 在未来的智能汽车中,汽车电子及软件的功能特性将大幅度增长,当前的分布式电子电气架构不再满足未来智能网联汽车的需求,将出现域控制器用于集成特定领域的功能特性(如车辆运动域、车身域等),形成域集中或跨域集中式电子电气架构。最终可能向基于中央计算机的车辆集中式电子电气架构,甚至车-云协同控制发展。



图1 电子电气架构的发展之路


面向服务的软件架构(Service-Oriented Architecture)正为未来的车辆软件服务提供良好的解决方案。不同于传统汽车电子电气架构中面向信号的架构,面向服务的软件架构(SOA)通过标准化的服务接口,松耦合的服务机制以及可组合扩展的服务特性,结合未来以高性能计算平台——域控制器——为核心的集中化电子电气架构,将成为未来汽车领域“软件驱动创新”的技术基础。

以太网驱动着未来汽车的主要创新。之所以这么说,有两个主要原因,一是以太网拥有极高的可用带宽、极广的功能范围,二是该网络技术具有极强的灵活性。与此同时,以太网使得将面向服务的架构引入到汽车电子电气系统中这个工作变得容易很多。


面向服务的架构(SOA)

为了更好地理解SOA在域控制器中的应用,我们先来了解一下到底什么是SOA。

1. 服务(Service): 在IT相关的领域里,我们可以简单理解为“实现某种功能的函数或方法”。

2. 服务接口(Service Interface):一个能够被其他模块调用的函数名称,或者一个封装的API,这些就是接口。

3. SOME/IP:Scalable service-Oriented Middleware over IP,即运行于IP之上的可伸缩的面向服务的中间件。

Middleware中间件是一种独立的系统软件或服务程序,分布式应用软件可借助Middleware在不同的技术之间共享资源。(分布式应用软件,在这里指的就是“服务”;不同的技术之间,在这里指的就是“不同的平台或操作系统,比如Linux系统或AUTOSAR系统等。)

IP是Internet Protocol,指的是TCP/IP的通信方式。

Scalable可伸缩,指的是该中间件能够适配于不同的平台及操作系统,其支撑的平台可大可小。

综合来看,SOME/IP就是指能够在不同平台上应用的,位于TCP/IP协议之上的,用于支持分布式应用软件,帮助分布式应用软件来传递信息的这么一套机制。说白了,就是把服务接口里的内容通过这种标准化的方式打包,然后交给TCP/IP这个快递员。

4. SOA

SOA=Service-Oriented Architecture,即面向服务的架构,是一种软件架构设计的模型和方法论。在汽车行业可以理解为,SOA是面向各种应用层程序(即“服务”,包含各种控制算法、显示功能等应用程序)进行设计,且不依赖于通信方式的一种架构设计理念。在架构设计工作中,重点关注汽车上的某些功能(“服务”)应该如何实现,该功能实现时与外界的各种信息交互(“服务接口”),该功能与外界交互时的基本流程(“服务序列”)。

5. SOA与SOME/IP的关系

SOA设计内容中的接口部分,需要通过SOME/IP进行打包传输。SOA是软件架构的一种设计理念;SOME/IP是一种将软件接口进行打包的打包方式,是一种中间件。

6. SOA与以太网的关系

汽车行业通常所指的“以太网”是泛化之后的概念,涵盖了基于以太网技术所实现的各种相关技术手段,包括TCP/IP协议、DoIP协议、SOME/IP协议等。

SOA与以太网之间的关系,是指采用SOA理念所设计的软件架构,在与外界交互时,其接口可以通过“以太网”的通信方式进行传输,而基于SOME/IP中间件的方式则是一个最典型的应用方式。

7. SOA与AUTOSAR

当前车辆软件的开发,大多数基本上都是基于AUTOSAR架构开发。AUTOSAR架构将运行在Microcontroller之上的ECU软件分为:Application、RTE、BSW三层。AUTOSAR架构下开发的软件有一个特点是,是一种面向信号的架构。就是,一个模块会不停的在总线上,周期性的发送信号给另一个控制器。但是SOA是面向服务的架构。


图2 面向信号的架构



图3 面向服务的架构

面向信号的架构:静态,仅支持接收/发送模式,支持简单的数据类型,可扩展性差;

面向服务的架构:动态,支持请求/响应模式,支持复杂的数据类型,可扩展性强。


SOA软件开发方法

对于汽车行业而言,SOA是一套新引入的技术,需要一套有效的流程、方法和工具。用以解决如下三个问题:1) 如何分析和设计服务架构,2) 如何建模和记录服务架构,3)如何部署和实现面向服务的软件。

1. “分析和设计服务架构”的过程是从客户需求到SOA软件架构产出的分析过程,相对于传统汽车软件开发采用的基于功能分解的面向过程分析方法,“用例驱动的开发方法”和“面向服务架构的设计方法”是SOA软件架构开发的两个主要特点。


2. 标准化的建模语言和统一化的文档结构,对提升架构的开发质量、实现架构内容的有效传递具有重要作用。SysML语言和Arc42模板可以作为SOA软件架构的标准语言和文档结构模板。


3. “部署和实现面向服务架构的软件”的过程是以SOA软件架构为设计输入,最终开发实现出软件产品的工作过程。主要包括 1)对服务接口行为的开发和实现,完成服务接口与服务主体逻辑的绑定;2) 针对目标运行环境,完成对服务接口参数,服务主体运行参数的配置;3)服务接口与应用程序策略逻辑的集成编译。


AUTOSAR Adaptive 组件封装了SOA软件底层的通讯细节(包括SOME/IP协议,IPC等),同时提供代理(Proxy)-骨架(Skeleton)模型,该模型以C++面向对象语言描述,方便上层应用开发人员调用标准服务接口(API)进行开发。Application Design Model是该模型另一种可配置的呈现,开发人员通过使用相应的配置工具对Application Design Model进行描述和配置,即可实现基于SOA服务架构的软件落地和部署。联合电子使用AUTOSAR Adaptive组件完成SOA服务架构软件的开发。


SOA和域控制器


根据SOA软件开发方法,可从两个切入点开展SOA汽车软件平台的开发。


1)自下至上,从车辆基础功能/信号出发,将已有的应用功能逻辑/信号(eg:车辆车速信息)抽象或封装成服务组件,这类组件被称为基础服务层(Basic/Platform Service Layer)组件,具有最高的可复用性和可组合性,这些组件将为上层(业务服务层Business Service Layer)的服务组件提供最基础的支持。 2)自上而下,从整车业务逻辑和用例出发,结合各领域的核心业务知识,设计业务服务层(Business Service Layer)的服务组件;同时,遵循服务组件的复用性和自主性等原则,向下设计规划基础服务层(Basic/Platform Service Layer)的服务组件。


域控制器可采用面向服务的软件架构(SOA),提供基于IT技术的、标准化的、开放式的软件创新和集成平台。这里提供一种方法。软件架构的底层符合POSIX(Portable Operating System Interface of UNIX,可移植操作系统接口)标准的操作系统(如QNX、INTEGRITY、Linux);中间层符合AUTOSAR Adaptive标准的运行环境,中间层封装了操作系统,为应用软件提供了标准的运行环境;最上层是应用软件,这里的应用软件与传统车载嵌入式软件是不同的,他们是以APP的形式存在的。



图4 域控制器SOA服务架构

作者:谷子

相关推荐

程序员请收好:10个非常有用的 Visual Studio Code 插件

一个插件列表,可以让你的程序员生活变得轻松许多。作者|Daan译者|Elle出品|CSDN(ID:CSDNnews)以下为译文:无论你是经验丰富的开发人员还是刚刚开始第一份工作的初级开发人...

PADS在WIN10系统中菜单显示不全的解决方法

决定由AD转PADS,打开发现菜单显示不正常,如下图所示:这个是由于系统的默认字体不合适导致,修改一下系统默认字体即可,修改方法如下:打开开始菜单-->所有程序-->Windows系统--...

一文讲解Web前端开发基础环境配置

先从基本的HTML语言开始学习。一个网页的所有内容都是基于HTML,为了学好HTML,不使用任何集成工具,而用一个文本编辑器,直接从最简单的HTML开始编写HTML。先在网上下载notepad++文...

TCP/IP协议栈在Linux内核中的运行时序分析

本文主要是讲解TCP/IP协议栈在Linux内核中的运行时序,文章较长,里面有配套的视频讲解,建议收藏观看。1Linux概述  1.1Linux操作系统架构简介Linux操作系统总体上由Linux...

从 Angular Route 中提前获取数据

#头条创作挑战赛#介绍提前获取意味着在数据呈现在屏幕之前获取到数据。本文中,你将学到,在路由更改前怎么获取到数据。通过本文,你将学会使用resolver,在AngularApp中应用re...

边做游戏边划水: 基于浅水方程的水面交互、河道交互模拟方法

以下文章来源于腾讯游戏学堂,作者Byreave篇一:基于浅水方程的水面交互本文主要介绍一种基于浅水方程的水体交互算法,在基本保持水体交互效果的前提下,实现了一种极简的水面模拟和物体交互方法。真实感的...

Nacos介绍及使用

一、Nacos介绍Nacos是SpringCloudAlibaba架构中最重要的组件。Nacos是一个更易于帮助构建云原生应用的动态服务发现、配置和服务管理平台,提供注册中心、配置中心和动态DNS...

Spring 中@Autowired,@Resource,@Inject 注解实现原理

使用案例前置条件:现在有一个Vehicle接口,它有两个实现类Bus和Car,现在还有一个类VehicleService需要注入一个Vehicle类型的Bean:publicinte...

一文带你搞懂Vue3 底层源码

作者:妹红大大转发链接:https://mp.weixin.qq.com/s/D_PRIMAD6i225Pn-a_lzPA前言vue3出来有一段时间了。今天正式开始记录一下梗vue3.0.0-be...

一线开发大牛带你深度解析探讨模板解释器,解释器的生成

解释器生成解释器的机器代码片段都是在TemplateInterpreterGenerator::generate_all()中生成的,下面将分小节详细展示该函数的具体细节,以及解释器某个组件的机器代码...

Nacos源码—9.Nacos升级gRPC分析五

大纲10.gRPC客户端初始化分析11.gRPC客户端的心跳机制(健康检查)12.gRPC服务端如何处理客户端的建立连接请求13.gRPC服务端如何映射各种请求与对应的Handler处理类14.gRP...

聊聊Spring AI的Tool Calling

序本文主要研究一下SpringAI的ToolCallingToolCallbackorg/springframework/ai/tool/ToolCallback.javapublicinter...

「云原生」Containerd ctr,crictl 和 nerdctl 命令介绍与实战操作

一、概述作为接替Docker运行时的Containerd在早在Kubernetes1.7时就能直接与Kubelet集成使用,只是大部分时候我们因熟悉Docker,在部署集群时采用了默认的dockers...

在MySQL登录时出现Access denied for user ~~ (using password: YES)

Windows~~~在MySQL登录时出现Accessdeniedforuser‘root‘@‘localhost‘(usingpassword:YES),并修改MySQL密码目录适用...

mysql 8.0多实例批量部署script

背景最近一个项目上,客户需要把阿里云的rdsformysql数据库同步至线下,用作数据的灾备,需要在线下的服务器上部署mysql8.0多实例,为了加快部署的速度,写了一个脚本。解决方案#!/bi...