软件定义汽车落地实践案例:中汽创智
中汽创智:
从座舱软件整体架构的角度来看,中汽创智认为在方案实施时,既要在系统上满足整车 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 各层的依赖,这样比较容易构建单元测试的用例,也便于做打桩测试。
- 下一篇:软件定义汽车落地实践案例:福瑞泰克
- 上一篇:软件定义汽车落地实践案例:华人运通
-
汽车测试网V课堂
-
微信公众号
-
汽车测试网手机站
编辑推荐
最新资讯
-
汽车智能座舱分级与综合评价白皮书
2024-11-23 14:25
-
厂商要多努力,才能让用户听起来毫不费力?
2024-11-22 17:10
-
TOP30!海克斯康入选2024福布斯中国数字科
2024-11-22 15:25
-
揭秘国产装备制造厂商的成功秘籍:好耐电子
2024-11-22 15:24
-
一文详解安全分析方法STPA:以自动紧急制动
2024-11-22 15:20