随着汽车智能化、网联化、共享化的趋势,终端用户对车辆功能的预期也悄然发生着改变,汽车在实现高等级自动驾驶/辅助驾驶功能的同时,也更趋向于提升用户体验,例如满足快速的功能更新和升级,可以提供个性化、人性化、差异化的功能与服务等。
面向服务的软件架构(Service-Oriented Architecture)正为未来的车辆软件服务提供良好的解决方案。不同于传统汽车电子电气架构中面向信号的架构,面向服务的软件架构(SOA)通过标准化的服务接口,松耦合的服务机制以及可组合扩展的服务特性,结合未来以高性能计算平台--域控制器--为核心的集中化电子电气架构,将成为未来汽车领域“软件驱动创新”的技术基础。
一,为什么要引入SOA汽车软件?
SOA是一种软件架构,同时也是一种软件设计方法和理念,在IT领域已有数十年的应用经验。SOA具备”松耦合”、”接口标准可访问”和”易于扩展”等特点,使得开发人员能以最小的软件变更应对迭代多变的客户需求。
在智能网联汽车中,大量的功能需要控制器(ECU)间的协调工作来实现,当前ECU 间基于信号(Signal-Oriented)的点对点通讯将会变得异常复杂,且不具备灵活性和扩展性,微小的功能改动都会引起整车通讯矩阵的改动(图1)。
因此,联合电子将SOA引入到当前汽车软件设计中(图2),车辆功能被以面向服务的设计理念架构为不同的服务组件,有别于面向信号的传统架构,SOA中的每个服务都具有唯一且独立互不影响的身份标识(ID),并通过服务中间件(Service Middleware)完成自身的发布,对其他服务的订阅以及与其他服务的通讯工作。由此,SOA良好的解决了传统架构中因个别功能增减/变更而导致整个通讯矩阵与路由矩阵都要变更的问题。更进一步,由于其”接口标准可访问”的特性,服务组件的部署不再依赖于具体特定的操作系统和编程语言,在一定程度上实现了组件的”软硬分离”。
图1 面向信号的架构(Signal-Oriented Architecture)
图2 面向服务的架构(Service-Oriented Architecture)
二,如何有效的开发SOA汽车软件?
对于汽车行业而言,SOA是一套新引入的技术,需要一套有效的流程、方法和工具,用以解决如下三个问题:1)如何分析和设计服务架构,2)如何建模和记录服务架构,3)如何部署和实现面向服务的软件。
1)如何分析和设计面向服务的架构?
“分析和设计服务架构”的过程是从客户需求到SOA软件架构产出的分析过程,相对于传统汽车软件开发采用的基于功能分解的面向过程分析方法,“用例驱动的开发方法”和“面向服务架构的设计方法”是SOA软件架构开发的两个主要特点。
用例(Use Case)驱动的开发方法(图3)指从用户的角度而非开发人员的角度考虑功能需求和系统实现,重视从系统外部观察对系统的使用。由用例驱动的开发活动,可以建立需求和系统功能之间清晰的追溯关系,更好的应对智能网联产品需求的快速迭代更新。
面向服务的分析方法(图4)则是以业务为中心,在由用例分析得到系统功能需求的基础上,对业务逻辑进行抽象和封装,从业务角度寻找候选服务(Service Candidate),从架构角度强调服务的重用性(reusable)、自主性(autonomous)以及组合扩展性(composable)特点,充分发挥SOA设计理念的优势,而不是仅仅作为技术实现方式。
图3 用例驱动的开发方法
图4 面向服务的分析方法
2)如何建模和记录面向服务的架构?
标准化的建模语言和统一化的文档结构,对提升架构的开发质量、实现架构内容的有效传递具有重要作用。SysML语言和Arc42模板可以作为SOA软件架构的标准语言和文档结构模板。
系统建模语言SysML(System Modeling Language)是由统一建模语言UML(Unified Modeling Language)扩展而来的标准化系统建模语言,能够准确表达系统及其组件的需求、行为、结构和属性。Rhapsody软件支持SysML建模,并提供了自动化功能,提高建模效率,同时保证与用例的追溯关系。Arc42明确定义了架构文档的结构,通过统一化的文档,提升开发团队中的信息传递效率和质量。
如下图5显示,联合电子使用SysML语言,Rhapsody建模工具以及Arc42架构模板进行应用服务架构的开发。
图5 SysML语言,Rhapsody工具和ARC42开发模板
3)如何部署和实现面向服务的软件
“部署和实现面向服务架构的软件”的过程是以SOA软件架构为设计输入,最终开发实现出软件产品的工作过程(图6)。主要包括1)对服务接口行为的开发和实现,完成服务接口与服务主体逻辑的绑定;2)针对目标运行环境,完成对服务接口参数,服务主体运行参数的配置;3)服务接口与应用程序策略逻辑的集成编译。
AUTOSAR Adaptive组件封装了SOA软件底层的通讯细节(包括SOME/IP协议,IPC等),同时提供代理(Proxy)-骨架(Skeleton)模型,该模型以C++面向对象语言描述,方便上层应用开发人员调用标准服务接口(API)进行开发。Application Design Model是该模型另一种可配置的呈现,开发人员通过使用相应的配置工具对Application Design Model进行描述和配置,即可实现基于SOA服务架构的软件落地和部署。联合电子使用AUTOSAR Adaptive组件完成SOA服务架构软件的开发(图7):
图6 部署和实现面向服务的软件
图7 应用软件设计模型
三,SOA汽车软件创新平台
联合电子开发的域控制器XCU,提供了部署SOA汽车软件的平台。在硬件方面,XCU具备高算力处理器芯片和多路车规级以太网通道;在软件方面,XCU搭载POSIX操作系统和AUTOSAR Adaptive平台。
根据SOA软件开发方法,可从两个切入点开展SOA汽车软件平台的开发。
1)自下至上,从车辆基础功能/信号出发,将已有的应用功能逻辑/信号(eg:车辆车速信息)抽象或封装成服务组件,这类组件被称为基础服务层(Basic/Platform Service Layer)组件,具有最高的可复用性和可组合性,这些组件将为上层(业务服务层Business Service Layer)的服务组件提供最基础的支持。
2)自上而下,从整车业务逻辑和用例出发,结合各领域的核心业务知识,设计业务服务层(Business Service Layer)的服务组件;同时,遵循服务组件的复用性和自主性等原则,向下设计规划基础服务层(Basic/Platform Service Layer)的服务组件(图8)。
图8 基于域控制器(XCU)的SOA服务架构