前言

搞SOA、搞 AP & CP AUTOSAR、搞异构SoC、搞车载以太网、搞车载OS等就找搞一下汽车电子。

全系内容可在《搞一下汽车电子》后台回复 “系列”,或进入菜单栏 “分享平台” --> “系列分享”

本系列请点击:《搞一下 SOA实战》

所有系列请点击:《汽车电子系列分享》

EEA发展趋势

当前汽车正处于一个智能化、网联化、电动化、共享化的发展,越来越多的汽车逐步应用到智能驾驶、智能座舱、车联网等相关的技术。

新四化的不断发展对算力和带宽的需求急剧增加,以太网逐渐取代传统的总线,成为车载通信的骨干。

EEA架构从原来上百个ECU分布式的架构逐渐向以太网为骨干的域控发展,成为中央电脑+区域化控制器的系统架构。

同时,日益增长的功能需求与软件的复杂度之间形成一个不可逾越的鸿沟,AUTOSAR的标准基于实现软硬件的解耦和复用的目的,提出并制定了一个标准化的软件开发架构的方法论。

传统的汽车电子电气架构及相应的解决方案很难解决现在遇到的一些挑战,需要新的方法论来打破僵局,于是车载以太网、车载SOA作为解决方案提出来了。

SOA概述

SOA,全称Service Oriented Architecture,是面向服务的架构。

SOA是什么?

SOA的概念比较抽象,是从IT行业引进过来的一种软件开发方法;是一种设计思想;是架构策略层面的指导思想。当我们从中去理解SOA是什么的时候可以从中提取几个关键词,功能定义服务、服务带有标准的接口、服务可以被调用。

SOA的一些关键属性

服务:函数或方法
服务角色:Provider、Consumer、Broker
服务接口:获取服务的方式
服务注册:实现服务的注册订阅发布等

Broker可以是集中式的也可以是分布式的,如果是集中式的可以在某些设备上统一管理服务的发现;如果是分布式的类似以太网、SOME/IP协议等可以在汽车的每个ECU上充当角色来实现服务发布和订阅。

SOA的特点

有意义的:它本来代表着一种业务和功能,比如我们会用它登录注册的一些功能。
无状态的:服务无状态是指服务提供方并不关心它被调用的次数以及服务调用前后的关系。
可复用的:服务可以被多次调用。
位置透明的:可以通过服务发现来获取服务。

为什么要用SOA?

降低复杂性
实现敏捷开发
软硬件分离
实现互联互通

SOA的使用场景

SOA在智能驾驶、娱乐影音、互联互通等场景使用,有些共同的特点是它们需要传输的数据量大,数据类型相对复杂,需要高强度的算力,服务之间存在调用的关系。

SOA实现的重点

包含两个方面,面向服务的软件和面向服务的通信。面向服务的通信通过以太网的协议去满足业务实现的需求。

SOA与以太网的关系

如果要实现SOA的架构,在项目启动时,首先要确保能落地的SOA电子电气架构梳理出整车以太网的拓扑需求,从方方面面出发和产品、功能架构、平台软件等相关的去共同确认电子电气架构为确保以太网的拓扑和相关以太网芯片的选型,也需要根据一些实际的条件选择合适的SOA服务协议。

下图是当前常用的四种服务协议。

ETH系统设计与SOA开发流程

在车载架构中以太网和SOA是一个最强的搭档,如果要实现SOA的落地,理论上以太网是要先行的。

就部分主机厂来说,它们下一代架构先实现的功能是DoIP,要让一部分的域控制器先实现基于以太网的通信,实现TCP的IP协议栈,让整车架构中的ECU先去有通信的能力以及整车安全方面的一些部署并且能够让一些工程师能实现整车上通过OBD接口去实现车辆的ECU登录,车辆报文的录制等等技术的实现。

ETH系统设计流程

在以太网项目落地或SOA设计开发前,大量的OEM厂家最先是从预研先开始的,首先以太网的相关设计流程要求相关的工程师建立一定的知识储备,先去实现一些规范体系的建设。

如上图所示,规范体系建设主要包含三部分内容:
协议需求类规范
全局规划类规范
项目交付类规范

协议需求规范
这部分包含一些比如以太网通信需求规范等,是对协议的功能原理去进行一些解析,对相关的属性和参数去进行约束。

全局规划类规范
这个规范是在整车的全局上,比如VLAN & IP划分的原则,IP定义的规则,IP地址定义的一些前缀的定义要求,不同的VLAN & IP划分的原则以及每个ECU后缀的一些划分规律等全局的一个规范。

项目交付类规范
比如ECU以太网参数配置规范,涉及到ECU在以太网从底层到上层相关属性的配置,包括整车架构全局的配置方案,还有拆分到各个ECU的一个约束的配置,由DRE交付到供应商或者交付到软件开发团队去约束他们的开发行为,也是作为后续SOA服务部署的一个输入文档。

协议的需求规范文档和项目交付类文档会交付到ECU的控制器供应商或者软件团队进行相关的协议要求的开发,但是软硬件解耦的概念提出后,很多主机厂更倾向于把核心的零部件开发掌握在自己的手中,比如域控网关、中央网关等。

网关实现基于以太网的一些规范,通过OBD口实现智能网关Telnet的登录,通过端口镜像的开和关实现报文从车端到OBD接口的复制,方便工程师实现报文的一些录制,制定OBD接口一些相关的安全访问机制、防火墙机制,车端进行802.1.x的认证,对接入的PC进行安全访问的约束。

相关的ECU实现TCP/IP协议栈、ARP、ICMP、DOIP等协议的开发和实现,去进行TC8的测试以及其他相关测试,去进行反复的迭代和印证。

车载以太网技术生态有了初步的落地之后,然后再开始SOA的落地,架构可以把更多的关注放到SOA本身的实现。

SOA设计开发流程

SOA的架构设计开发流程也是从规范体系建设开始,初期的时候就已经对SOA的协议需求规范进行梳理和落地,然后做全局规划类规范,包括SOA设计流程和指导准则以及相关以太网的属性(如SOME/IP属性的命名要求)以及相关ID定义的一些技术要求。

之后基于所选的SOA的服务去进行整个SOA设计过程中需要交付的规范模板的制定。

从技术角度、项目落地的角度,从整个架构交付产物的角度和可管控的角度需要去思考更多的一些内容。比如服务权限管控该如何去做,车型上一些服务的配置管理,车云通道部署问题等。

SOA开发流程分为三大部分
架构分析
架构设计
架构实现

下图中间部分是整个开发的过程,右边第一列对应的左边开发过程的交付文档,第二列是相关的负责人。这里我们可以看到相关责任人多出一个功能Owner这个概念,这个是SOA开发过程中衍生出的一个新角色。

架构分析

首先我们需要根据OEM整车配置或参考供应商规划或未来整车功能的趋势,整理出适合SOA的 Feature list,对UseCase进行梳理,提出更细化的需求,生成一个较为完整的功能方案,做功能到服务的转化设计。

架构设计

功能方案这里分为两个过程,一个是自上而下的开发过程,即从功能方案到功能SSTS(子系统技术规范)。

一个是对已有功能服务的转化自下而上的开发过程。整个功能方案中,一部分是服务的设计和实现,功能SSTS(子系统技术规范)还是像传统的架构一样也是需要作为交付文档集中到软件开发。

整个架构设计流程是,通过功能方案的一个大致落地,对服务进行一个抽取形成整车服务的集合,服务集合会包含服务、服务接口大致的梳理和定义,基于整车服务的集合,每个负责服务的Owner对自己负责的服务进行服务规范的梳理。

服务规范是对服务和服务接口的详细描述,定义服务类型、服务依赖关系、服务的错误处理、服务存在应用的场景等。

然后对服务进行一个详细的实现设计,里面包括Service ID,它是服务规范和服务实现技术规范一个过程文档。如果服务涉及到CAN信号的一个转换,需要一个服务对应信号的对照表。

后面整个开发流程是输出相关的SSTS文档,服务Owner会基于集合定义的服务规范,基于定义去填写服务接口需求表文档交付到网络开发,作为网络通信矩阵开发的一个输入,网络开发会交付相关的通信矩阵和相关的ARXML数据库,然后提供到软件开发作为文档的输入。

软件开发需要输入的文档包括服务技术规范,服务SSTS,通信矩阵以及ARXML数据库等。 需要说明的是,服务技术规范跟服务SSTS是要搭配使用的。

由于与网络开发相关的内容比较多,这是单独来看一下,部分截图如下图所示。

接下来,我们对每一个步骤进行稍微详细的分析。

架构分析

Feature

整理出Feature清单,并对Feature进行一轮梳理,确定需要进行SOA服务化的Feature;完成Feature的详细定义,如Sub-Feature以及其具体描述。

Feature list 中可以可以分为三种Feature类型,一种是可以用SOA实现的,比如说一些可以共享给其他APP的信息,来实现互联互通,如远程调用位置信息等。

还有一种是不可以用SOA实现的,比如说对功能安全要求比较高的底盘和动力系统的一些控制功能。或者对时间敏感要求比较高的,比如说制动和转向系统的一些控制功能。

还有一种是不确定是否可以用SOA方式来实现的,需要做一些预留。

Use Case(可选)

空调控制功能场景示例如下:
Use Case Item,前置条件,执行定义,触发事件及流程定义,描述定义。
Use Case Diagram(PREEvision)

Requirement设计

进一步细化Feature列表,对各个Feature进行细节描述,包括法规需求、系统需求、用户自定义需求(值域的要求)等。

如下图所示。

SOA设计之流程指导

根据Feature,Requirements及Use Case进行Services定义(功能服务化),基于SOA设计的指导准则,这个准则会在项目设计过程中不断进行更新迭代。

SOA设计之服务接口定义

下面是SOA设计过程中功能架构和服务Owner去输出的文档。

服务规范文档

前期是一些服务规范的文档,服务规范是服务和服务接口相关的一些定义,服务一些典型机制案例的使用,服务一些错误处理,传输实现的要求,如下图所示。

服务ICD

服务ICD是服务规范和服务实现技术规范中间的一个过程性文档,服务实现技术规范也是需要参考服务ICD去定义一些功能逻辑。

服务实现技术规范

服务实现技术规范是对服务更详细的描述,里面涉及到整个服务接口的逻辑,服务配置字的设计,服务启动停止的条件等。

以太网通信矩阵设计

以太网通信矩阵设计包含以下内容:

1)服务&服务接口定义
2)DataType数据类型定义
3)服务部署
4)序列化定义
5)SD通信参数定义
6)E2E定义

以太网通信参数配置

以太网通信参数配置主要包含以下内容:

1)PHY芯片选型
2)CNB主从时钟选择
3)MACA地址定义
4)VLAN设置
5)ARP配置
6)IP配置
7)TP层选择及端口定义

以太网ID统计表

1)ServiceIDPrefix
2)ServiceID
3)MulticastIP
4)E2E DataID
5)Port
6)…

相关工具链

SOA通信设计关注的重心:不同操作系统不同协议栈中代码实现的完整性和相互通信的兼容性,以适配上层服务接口及服务通信的设计。

不同协议栈当前的底层问题对上层设计方案的影响
不同商业AUTOSAR协议栈对于输入的ARXML数据库的配置兼容性
不同协议栈ECU之间的通信兼容性。

下图是相关的工具链情况。下属工具链中,相对来说AUBASS的工具链是落地风险最低的。

SOA架构的挑战

总的来说,SOA架构在汽车行业会面临以下挑战。

SOA概念抽象,需要建立一定的知识储备。
组织架构变革,全新团队全新角色的新增。
方法论、流程体系变革、工具。
短期内不会带来明显的收益。

本期分享就到这里,下期见。

跳转阅读

建议解锁2022 全45期内容,还可以语音Q & A,详情点击:
2022 年度 | AP、CP、Eth、SoC、SOA 实战系列 | 线上研讨会

跳转阅读:SOA 开发流程实战

联系我们

微信:shactiontech
邮箱:support@shactiontech.com

搞一下 SOA实战 | 01 SOA 开发流程实战相关推荐

  1. 2、【WebGIS实战】WebGIS开发流程介绍

    大家好,我是X北辰北.本文是「WebGIS实战」系列,关注这个标签,阅读所有文章,成为WebGIS开发高手. 在所有事情开始之前,我们还是花一篇文章的时间来给大家介绍下WebGIS开发相关的东西,主要 ...

  2. vue-pc端的项目实战的项目开发流程

    项目介绍 这是一款类似于驾考宝典的综合应用,是关于题库方面的后台管理系统部分 项目的开发流程 立项 boss,产品,讨论确定做什么项目,包含功能什么什么是挣钱的等等 流程图 产品根据功能绘制出实现功能 ...

  3. Revit二次开发(Revit2019+VS2017)-【NO.01】开发流程简述

    Revit二次开发流程简述 一.软件的安装及配置 软件的下载与安装 软件的配置 配置AddInManager 配置RevitLookUp 检验是否配置成功 二.创建项目新建Visusl Studio项 ...

  4. 【vue2.0后台项目之登陆】01登陆开发流程分析

    登陆开发流程 1.前言 2.vue-admin-template模板介绍 3. vue-admin-template模板结构分析 4.axios的二次封装 5.请求后端接口 6.表单验证 7.派发ac ...

  5. android高级开发强化实战,高级Android开发强化实战[PDF][215.59MB]

    内容简介 本书收集了约20个关于高级Android开发的进阶实例,这些实例都是对在日常开发中遇到的问题的抽象,涉及整个Android开发的各个技术栈.本书从常见的问题入手,引导读者逐步地掌握进阶的各个 ...

  6. android php实战,android编程开发入门实战例子–hello word

    android开发入门实战编程例子–hello word 1.打开Eclipse,选择菜单File->New->Other,打开新建对话框.选择Android Project后,点击Nex ...

  7. Android IoT开发实战 | 01 - Android 开发利器 Android Studio 3.5.3

    本系列IoT App开发笔记系b站视频教程学习笔记,视频地址: [7天Java0基础速成安卓开发]Day1 Android工程代码是怎么运行的 [7天Java0基础速成安卓开发]Day2 常用控件和界 ...

  8. 3000字梳理大数据开发流程及规范(建议收藏)

    在大数据时代,规范地进行数据资产管理已成为推动互联网.大数据.人工智能和实体经济深度融合的必要条件.贴近业务属性.兼顾研发各阶段要点的研发规范,可以切实提高研发效率,保障数据研发工作有条不紊地运作.而 ...

  9. 实战:移动APP项目产品开发流程详解

    问题补充:移动端APP产品的开发流程是如何的?开发移动端APP,从产品需求规划到最终上线发版,都有哪些必要流程,其中需要重点注意的事情有哪些,可以基于你当前的工作情况酌情回答. 黄沐秋Moon NBP ...

  10. Unity手机游戏开发:从搭建到发布上线全流程实战

    前言: 技术书籍是学习技术知识的重要资源之一.读技术书可以帮助我们学习新技能和知识,技术书籍提供了可靠的.全面的信息,帮助我们快速学习新技能和知识.同时技术书籍有助于保持你的竞争力,因为它们提供了最新 ...

最新文章

  1. linux命令作为子进程标记,Linux基础命令---显示进程ps
  2. 第 28 小时项目管理过程实践和案例分析
  3. 如何删除Safari浏览器的扩展程序 大神教你搞定
  4. JS:正则表达式详细语法基础
  5. 【编译工具系列】之GCC文件关联
  6. 2021上半年测试工作总结:再一次的跳出、新的转变
  7. 不写一行代码,搭建Jenkins+Jmeter+Ant接口自动化框架
  8. 2018-7-10-随笔-计算机系统和程序设计方法
  9. 关于embedding的理解,2020-7-30
  10. 鸟哥私房菜整理(二)
  11. PreferenceActivity详解
  12. android网络框架OkHttp之get请求(源码初识)
  13. 快递是如何被送到你手里的?一文读懂风口上的仓储自动化
  14. 服务器常见基本故障+排查方法,很实用!
  15. spyder指定python环境
  16. Linux脚本shell字符串处理,基本都有了,看着搜吧
  17. 测试:如何测试微信朋友圈的点赞功能
  18. C# DataGridView数据导出Excel文件
  19. 寻觅那款你心仪的国际象棋app
  20. Android之应用市场排行榜、上架、首发

热门文章

  1. 【自用】网页设计与制作教程 笔记
  2. 外部IC寄存器的位定义
  3. [QT] QT加载百度离线地图(二)
  4. 飞信2009_飞信真因为微信消亡吗?谣言!教你看透本质把握个人未来发展方向...
  5. 3、思科模拟器介绍 (认识思科模拟器界面、安装思科模拟器、思科模拟器汉化)
  6. 游戏外挂篇:如何Dump内存获得游戏的辅助
  7. 中国智慧VS西方智慧-看中国IT风云
  8. 木马病毒的传播方式这么多,在你的日常冲浪中,木马病毒就进行了传播!
  9. 概率论 方差公式_数学提高方差的计算公式是什么
  10. 非常好的Struts2教程