首页 > 汽车技术 > 正文

软件定义汽车落地实践案例:中汽创智

2022-11-12 10:47:54·  来源:汽车测试网  
 
中汽创智:从座舱软件整体架构的角度来看,中汽创智认为在方案实施时,既要在系统上满足整车 SOA 架构的要求,又要充分利用座舱现有操作系统成熟稳定的技术方案和平台优势,目前座舱操作系统以QNX+Android 或 Linux+Android 为主,相对于 AP 平台,Android 平

中汽创智:

从座舱软件整体架构的角度来看,中汽创智认为在方案实施时,既要在系统上满足整车 SOA 架构的要求,又要充分利用座舱现有操作系统成熟稳定的技术方案和平台优势,目前座舱操作系统以QNX+Android 或 Linux+Android 为主,相对于 AP 平台,Android 平台的执行管理、log 系统、持续化存储、升级等功能模块在消费电子领域也经得到了充分的使用验证。同时值得注意的是,Android 系统本身也是符合

SOA 架构理念的,(android 采用了AIDL(Android Interface Definition Language Android 接口定义语言)和 HIDL(HAL interface definition language 硬件抽象层接口定义语言)来做接口约束定义,服务需要注册到 ServiceManager 中(SOA 中的服务注册入口),通过 ServiceManager 的客户端代理获取服务本地接口再进行远端调用)。因此我们更建议以 Android 现有架构框架为主,在系统上满足整车 SOA 的需求为架构设计目标,实践总结如下:

  • 座舱域能够在整车系统层面满足 SOA 架构的要求,能够将其他域需要的服务提供出来,同时能够通过消费或组合其自身的服务来构建不同的应用功能;

  • IDL 工具能够尽可能支持不同的开发语言,能够充分发挥 SOA 架构应对分布式系统的优势,各个系统在调用时仅需关注接口约束,服务的实现尽可能发挥特定平台的优势;

  • 考虑到中央计算单元会采用 AP 架构,整车也大概率会通过 ARXML 做整车机接口定义,我们在选择 IDL 的时候需要考虑和 ARXML 的兼容和转换;

  • 充分利用遗留代码,要充分考虑代码的复用性及可测试性。

在服务的实现上,中汽创智借鉴了Clean Architecture 的设计理念:


依赖规则

外部依赖(系统接口、数据库,框架)

单一的依赖方向,从软件的变化度思考,在特定领域场景,数据模型是基本不会发生变化的,所以我们将其放到整个依赖的核心,围绕数据模型,会产生一系列的功能用例(如空调的风量值这是一个数据,围绕这个值会产生上调风 量,下调风量等功能用例),功能用例的集合就是服务实现;

将所有外部依赖,诸如系统接口,数据以及数据访问,所有的支持性框架代码都放到外部,以依赖注入的方式注入的服务实现层,这样一来,数据模型层, 用例层,服务实现层就只和语言相关,可以比较容易的在不同的系统上移植;

具备良好的可测试性,每一层都有清晰的边界,由于依赖的单向性,使得可以比较容易的 mock 各层的依赖,这样比较容易构建单元测试的用例,也便于做打桩测试。

分享到:
 
反对 0 举报 0 收藏 0 评论 0
沪ICP备11026620号