基于SOA设计平台的技术难点解析

来源:公众号“汽车电子与软件”
2021-06-16
1435


可以说SOA完美的解决了汽车软件架构面临的各种挑战,并且为迎接汽车产业的变革打下必备的基础。

图片


SOA车端E/E架构设计要素


SOA的开发过程相对于传统开发模式而言,仍然是以需求为输入,将需求以全面服务的模式进行细化,最终将定义的服务映射到软硬件架构中。


图片


如上图所示,面向服务SOA架构的基本工作流程包括在底层设计过程中需要面向对象进行服务设计、服务分组以及服务映射。其中需要根据服务列表及服务接口设计服务,从而根据功能逻辑将服务映射值不同的模型,最后以服务组件到软件组件(SWC)的映射服务接口到软件接口。


SOA在自动驾驶架构设计中需要重点考虑基于服务设计的完整性和功能安全设计的完整性。以标准的ASPICE软件认证开发流程为基础蓝本,传统的开发流程以系统验证为SOP节点,后续运行维护及上市后不再进行软件更新,而基于SOA的软件开发模式需要在系统验收后持续不断的更新软件,迭代更多实用性功能,提升已有软件性能。SOP Release需要包括所有可能的Basic Service,不需要所有的Service都一次开发完成。


图片


利用 SOA的思维架构进行自动驾驶设计过程中,需要根据SOA设计原则定义服务接口,统一开发基础共用的软硬件平台及开发环境,从而提高软件复用度。开发过程考虑继承系统层级到零部件层级设计的实现原则,例如,功能子模块需要进行封装,功能之间需要进行自我包含等。


整个SOA在其硬件设计中主要实现了从模块化、单域控制器、冗余计算平台再到中央计算平台的整体演进。其中各自体现在如下一些方面:


1)模块化分割:梳理自动驾驶各子功能模块的各自功能,形成模块化的分子架构模型;

2)域控制单元:将如上分子架构模型中的ECU合并至中央域控制器,从而减少成本、重量和功耗,利用半导体及软件技术革新优化域控能力。

3)冗余计算平台:SOA可直接访问存储单元,并行计算载体提供冗余和安全算法,并在开放的可裁剪平台上进行搭载;

4)中央计算平台:SOA通过网络访问、动态配置及无缝冗余,注入刀片式服务设计策略,实现真正的自动驾驶演进。


对于SOA的开发应用模式,在其软件设计中实现了更加灵活的软件架构,集成第三方生态合作伙伴应用,服务拓展更新更加便捷,实现插拔式软件设计。最终目标是实现如下多个交互实体的关系解耦:

I/O接口与计算解耦、计算平台与区域架构解耦、软件与硬件解耦、整车级抽象能力、软件与软件解耦、基于微服务的软件架构、配置数据与代码解耦、数据驱动I/O设备。

 

图片


安全设计在SOA中的应用思考


SOA在重构软件生态时,其功能安全实现难度大幅增加。OEM开放3party开发平台,如何保证其不影响整车的功能安全,对于3party开发的服务,如何确保其不级联失效影响其它已有ASIL等级的服务,服务客户端 的ASIL等级的不确定性等问题都将是制约SOA能够有效实现的关键因素。


SOA 系统设计层面考虑应考虑进行服务分层(如下图),其中SOA的功能安全设计需要考虑到整个层面的设计过程。


图片


SOA 系统设计层面考虑应充分考虑服务分层。结合安全因素将服务合理分层,针对不同开发主体确定不同限制策略。同时,还应该基于服务进行有效分类,基于服务的安全相关性对开发的服务和OEM服务进行分区,过程中需要考虑严格的安全审核机制。为了实现物理隔离,需要考虑将供应商开发的底层服务和OEM自己开发的顶层服务进行高性能计算分区和安全计算分区。


图片


此外,SOA在安全机制上可以分为3层架构设计,因此其软件运行期间的动态监控是必不可少的。


整体来讲,构建面向服务的安全分析流程及框架包含如下几个关键部分:

首先是进行有效的服务过程建模(BPMN),随后是进行安全分析中的服务Hazard分析(SHA)和服务Failure分析(SFA),最后是进行SOA的错误分类。在后续开发层面主要通过安全案例和服务层一致性构建安全保障体系,实现高度自动化的模型集成环境。


图片


SOA的软件应用局限及应对策略


SOA在智能驾驶的不断渗透,意味着汽车软件的竞争力将会成为其核心竞争力,它关乎所有关键商业指标,如TTM、生产率、成本以及创新。而软件研发过程中就意味着其复杂性带来的巨大挑战。比如如何应用有效的软件管理以及系统集成核心工具,发挥多核性能最有效方法,使得满足功能安全、信息安全要求,降解软件复杂度,提高软件重用率,使软硬件解耦。通过降解复杂度,使得软软解耦,通过零代码修改使得系统集成更加有效。通过健康监控使得软件可见可管理。


SOA挑战

问题解析

有效对策

软件产品管理

软件产品必然面临如何核算成本,如何管理开发,如何管理供应商,如何定义业务等。

拥抱开源、融入生态,专注产生差异化价值的软件开发,业务相关软件开发。尽量减少企业私有的软件,降低软件产品管理的不确定性和复杂度,减少软件的生命周期成本。

全生命周拥有成本

软件开发的一个重要特点是长期维护,长期更新,这为开发者带来持续改进的可能性,同时,应意识到这也是长期成本。

复杂性

协作开发

汽车软件代码体量已经超过1亿行,考虑到车型变型就更加复杂,人工智能算法、第三方软件集成等新需求让协作开发是发展的必然。

通过虚拟技术和容器等技术实现软硬解耦、软软解耦,管理软件的复杂性,支持多供应商同步开发,不同项目复用软件模型组。

兼顾实时、安全性需求

尤其自动驾驶领域和网络安全。

将实时性、安全性要求高的软件运行在实时操作系统上。

软件可维(护)可测(试)

为了验证复杂软件的可靠性,对代码有效管理,甚至必须牺牲一定的性能!

1、基于开源软件开发的代码,尽量通过开源社区维护,企业自身维护的代码尽量少,底层通过代码维护可以交给专业软件供应商维护。

2、使用自动化测试工具。

动态性

新技术的发展、半导体资源的升级、汽车开发越来越贴近消费端,都带来软件开发需求的变动加速和动态性。

敏捷流程,小步快跑的方式持续集成、持续发布(CI/CD),一体化开发、运维(DevOps


 

图片



SOA设计中的关键环节-中间件

下一代自动驾驶着力于基于服务开发相应的软件架构(SOA),其对于其从传感器,控制器到执行器所呈现的井喷式增长,对于开发者而言最直观的感受就是,软件系统日益庞大,代码行数快速增长;硬件的类型、数量和规格明显提升,电子系统的复杂性成倍增加;软件、硬件组合在一起所需克服的挑战,也像做乘法一样地被急剧放大。这就大幅提升了汽车对软硬件架构的要求。实际是该类型的软件架构需要同时解决当下系统开发难题,又要具备足够的前瞻性、兼容性和扩展性,后续可以有效的实现软件升级,硬件换代,模块增减和更替等。


图片



自动驾驶的中间件,可以按需调整、满足各样自动驾驶过程中的开发需求。可以为上层的应用软件提供开发和运行所需的环境,方便开发者快速、高效、灵活地开发和集成自动驾驶软件。自动驾驶的中间件,也属于广义上的操作系统,但是它和QNX、Linux这些底层系统并不一样。本质上它是介于上层应用和底层系统之间的一套软件框架,是对软硬件资源进行管理、分配和调度的平台,充当着软件和硬件解耦的关键角色。

具体来说,中间件通常对传感器、计算平台等资源进行抽象,对算法、子系统、功能采取模块化的管理,通过提供的统一接口,让开发人员能够专注于各自业务层面的开发,而无需了解无关的细节。这样最直接的好处就是,整个系统的开发效率得到提高,软件部署得以简化,整体的扩展性也获得了提升。


图片



常规的计算机操作系统对计算机的硬件和软件进行管理,会涉及处理器管理、存储管理、设备管理、文件管理、进程管理,比如Android、iOS、Windows、Linux,就是其中的典型代表。那自动驾驶中间件,对于软硬件的管理又会有哪些内容呢?自动驾驶需要接收不同的传感器信号,然后进行感知、规划和控制,并由转向、油门和制动这些硬件系统来完成整个过程。所以自动驾驶的中间件会涉及到ECU管理、传感器管理、车辆模型管理、通信管理、任务管理、数据管理、安全管理、诊断管理、OTA管理、可视化管理。


对于SOA来讲一个典型的例子就是,不同车型配置存在巨大差异。我们可以借助于中间件平台,插拔式设计在系统开发过程中根据需求进行不同程度的拓展。主要包含如下三个方面:

  • 系统设计阶段,有效的适配不同的传感器、域控制器芯片、车端平台等硬实体;
  • 软件开发阶段,提升开发效率并及时优化各类软件算法模块,升级低级别的自动驾驶功能;
  • 系统验证阶段,进行快速高效地软件迭代,并能够提供不同的优化方案,而不依赖任何第三方的组件。




图片



总结

SOA在汽车自动驾驶产品设计中,力争做到通过打造爆款车型,开发迭代的软件实现有效的升级盈利。其中软件灵活的迭代模式可以有效的缩短开发周期,硬件实现算力大幅扩展,传感器/执行器即插即用,打造可靠性高的安全架构体系,确保整车额功能安全、信息安全能力,最后是实现低成本,高品质的架构设计和软件研发,使主机厂、供应商共同受益。

图片

END



汽车电子 自动驾驶
收藏
点赞
2000