联合电子:面向服务架构(SOA)的汽车软件三部曲
来源:联合电子
随着汽车智能化、网联化、共享化的趋势,终端用户对车辆功能的预期也悄然发生着改变,汽车在实现高等级自动驾驶/辅助驾驶功能的同时,也更趋向于提升用户体验,例如满足快速的功能更新和升级,可以提供个性化、人性化、差异化的功能与服务等。
面向服务的软件架构(Service-Oriented Architecture)正为未来的车辆软件服务提供良好的解决方案。不同于传统汽车电子电气架构中面向信号的架构,面向服务的软件架构(SOA)通过标准化的服务接口,松耦合的服务机制以及可组合扩展的服务特性,结合未来以高性能计算平台——域控制器——为核心的集中化电子电气架构,将成为未来汽车领域“软件驱动创新”的技术基础。
第一部:面向服务架构(SOA)的汽车软件及其开发方法
一. 为什么要引入SOA汽车软件?
二. 如何有效的开发SOA汽车软件?
1) 如何分析和设计面向服务的架构?
2) 如何建模和记录面向服务的架构?
3) 如何部署和实现面向服务的软件
三. SOA汽车软件创新平台
四. SOA架构的核心要素与优势
1
SOA作为一种面向服务的架构,是一种设计思想和方法论。在SOA架构中,服务是最核心的抽象手段和系统最基础的描述单元。
车辆功能软件实现软硬分离
车辆功能可被大范围复用
车辆功能在SOP后可新增(扩展)
1
面向服务架构的开发过程从整体上可以概括为6个步骤,分别是:面向服务分析、面向服务设计、服务开发、服务测试、服务部署和服务权限管理,如图11所示。其中,分析和设计面向服务的架构是开发SOA软件的开端,也是判断系统是否基于SOA架构的最重要且核心的环节。
1. 系统需求分析
如图12所示,整个SOA架构模型分为业务过程层,服务接口层和应用程序层三部分。SOA业务过程层专注于业务逻辑的分析;服务接口层聚焦于候选服务的设计和分析;应用程序层则体现面向服务的系统架构和软件架构设计。
系统需求分析聚焦SOA架构的最上层——业务层。概括来说,需求分析指的是设计和充分理解在用户具体使用场景下的真实业务过程,为后续抽象和封装服务提供充足的语境信息。
图12 需求分析聚焦SOA架构业务过程层
2. 系统功能分析
如图13所示,系统功能分析搭建起了SOA架构的业务层和服务层之间的桥梁,其过程就是从第一步系统需求分析的产物——业务过程和系统用例,向服务过渡的过程,目的是得出构成候选服务的服务操作(operation)。系统功能分析具体可描述为:设计用例的实现场景步骤,对系统用例逐个进行分析细化,描述系统如何与参与者(actor)一起实现每个用例,从而得到系统与参与者、与外部系统的界限及信息交互,最终得出对系统的功能要求,这些功能要求直接作为候选服务操作(business service operation candidates)。
图13 系统功能分析:从业务过程到服务
3. 候选服务分析
候选服务分析聚焦SOA架构的中间层——服务接口层。候选服务分析的目的是对业务逻辑进行抽象和封装,从业务角度寻找候选服务(Service Candidate)。值得强调的是,分析候选服务需要跳出特定功能开发,从架构角度强调业务的重用性(reusable)、自主性(autonomous)以及组合扩展性(composable)等特点,特别考虑候选服务在企业业务范围内潜在的重用可能,充分发挥SOA设计理念的优势,而不是仅仅作为技术实现方式(图14)。
图14 候选服务分析聚焦SOA架构的服务接口层
4. 系统架构设计
系统架构设计的目的是设计和得到服务到架构要素的映射,以及要素间服务调用关系。下图中蓝色小圆圈代表分析得到的服务,通过系统架构设计,被映射至不同的架构要素( Platform A~C)(图15)。在这里,架构要素对应汽车上搭载不同控制器平台(Platform)。
图15 系统架构设计:服务与系统要素的映射
5. 软件架构设计
软件架构设计的目的是设计和得到服务(service)到服务组件(Service Component)的映射关系,过程与系统架构的设计过程类似,但需要将关注点转移到控制器内部。
在图16,SOA架构中,软件架构设计的行为发生在蓝色阴影区。软件架构的设计受到诸多因素的限制(以太网通讯Port口资源,客户具体用例场景的迭代变更等等)。总体设计思想上,高内聚,低耦合仍是设计的通用原则和架构评价的关键指标。额外需要强调的,应对智能网联软件需求迭代多变的特性,在SOA服务架构的设计中,还需强调重用性和扩展性,充分的灵活度才能以最小的软件变更应对大量的需求输入。
图17为一示意图,表达了针对某一服务Service A,有一个服务提供组件(Service Component)提供A服务,有三个服务消费组件消费服务A。
图16软件架构设计
图17 服务与应用程序的映射
结语
根据SOA架构层级模型(图18),业务逻辑经过面向服务架构(SOA)的软件分析和设计过程后,被分解为单个服务并绑定相应的可执行软件单元。以服务软件架构为输入,汽车服务软件的实现和部署工作主要在服务组件层(Service Components)完成(图1红色箭头)。
图 18 SOA 层级架构模型
01
满足 SOA 架构的服务组件架构
(Service-Component-Architecture)
服务软件单元(Service):业务/功能逻辑,不关心操作系统和编程语言,可由熟悉业务逻辑的相关方开发
接口(Interface):决定对外提供哪些服务以及自身服务依赖哪些服务,不关心操作系统和编程语言,可由SOA架构设计方完成开发和部署
消息(Message):接口数据的通讯链路/环境绑定,不关心操作系统和编程语言,可由SOA架构设计方完成开发和部署
服务组件架构模型SCA的配置描述
服务组件内部业务逻辑和基础设施逻辑的集成
02
服务组件架构SCA的配置描述
WebService的SCA架构模型配置描述
汽车软件的SCA架构模型配置描述
03
汽车SOA软件的实现方案
封装了SOME-IP协议栈和底层通讯细节(Middleware Transport Layer)
提供了相应的服务虚接口(virtual function)
04
SOA服务组件实现和部署的具体步骤
组件接口设计阶段: 联合电子编写arxml完成对服务组件SCA中“基础设施逻辑”的配置开发,并经由AUTOSAR Adaptive中间件供应商提供的代码框架和生成器(Generator),最终得到相关的配置文件(.json)和源代码(.cc/.cpp);对“服务单元逻辑”,联合电子可同步基于建模工具进行开发;
组件集成实现阶段: 联合电子编写APP框架,完成“服务单元逻辑”与“基础设施逻辑”的软件集成工作;
组件安装部署阶段: 联合电子编写编译和安装脚本,完成源码的编译链接和可执行文件(App)的安装,同时,对APP安装部署权限和系统环境做适配调整。