分层架构更快地提供更可靠的汽车应用

描述

今天的消费者已经习惯了快速的创新步伐。移动和网络应用程序可以快速开发和更新,因此总有一些新的东西可以吸引消费者 - 一个提高他们期望的现实。不幸的是,对于汽车制造商来说,开发车载信息娱乐(IVI)系统的传统方法通常具有开发时间长的特点。IVI更新可能需要数月甚至数年的时间。结果呢?汽车音响主机开发昂贵且耗时,在首次进入市场时已经过时了。

消费者不为所动,经常拒绝这些系统,使OEM处于不稳定的境地。那么,汽车主机厂如何才能获得市场认可呢?他们及其一级供应商如何在不依赖不符合汽车安全和安保要求的移动技术的情况下快速构建有吸引力、具有竞争力和安全的信息娱乐系统?一个有效的解决方案是依赖分层软件架构。

通过分层软件架构,开发人员可以创建独立的组件来处理整个系统功能的特定部分。这些组件通过定义明确且稳定的接口进行通信,从而实现高性能实现。这种方法不仅需要理解需求,还需要完全理解用户体验(UX)。最成功的软件项目以UX为主导,允许UX设计指导和规定实施过程的所有步骤。

用户体验优先

现代应用程序的一个重要要求是,它们看起来直观美观,具有有意义的动画和简单、易于识别的图形和图标。这使得应用程序易于使用、可识别并吸引消费者。这对于在全球范围内销售的产品尤其重要,因为用户界面必须易于翻译成不同的语言并适应不同的文化。

通常,它们需要在具有各种屏幕尺寸和方向的不同设备上运行。现代 UI 工具包具有应对这些挑战的能力。带有CSS,iOS Swift或Qt工具包的HTML5是非常流行的选择,用于干净地构建解决应用程序外观和感觉的软件层。

无论使用哪种工具包,通过UX设计领导汽车项目都可以使这一切成为可能 - 并且比使用更传统的方法更容易。现代 UX 设计支持直观、实用的工作流程,允许用户快速完成他们需要做的事情,而无需通过学习说明手册来实际“学习”应用程序的工作原理。这通常是通过组织具有简单层次结构的应用程序、将专家级功能隐藏在访问级别后面以及从流行的移动电话应用程序的流动方式中吸取教训来实现的。

此工作流的实现需要一个软件架构,该架构为最顶层的“门面”提供编程主干。为了使复杂的外观和感觉变得简单,必须选择一种系统的方法,以允许用户在应用程序中的页面或项目组之间切换,向后导航,到达“设置”,被打断,然后轻松找到返回焦点的方式。使用状态机架构可实现所需的灵活性,同时保持所需的稳健性和可测试性。

遵循 UX 优先的分层方法

遵循UX优先的分层架构方法是简化自动IVI开发的一种方式,该IVI在美学上吸引消费者,同时提供广受欢迎的功能。这种类型的方法包括可视化、表示、业务逻辑和通信层,依赖于组件来简化流程。

例如,可视化和表示层为用户提供了一种与应用程序交互的方式。但是仍然有实际功能的实现,例如,当用户界面想要在地址簿中显示联系人列表时,应用程序必须从存储中检索此数据,无论是在数据库中,在连接的电话上,从简单的文件,网络连接还是其他地方。

所有应用程序都必须实现某个逻辑块,即“业务逻辑”层。例如,农业行业供应商的算法可以确定是否可以优化喷洒在田地上的产品水平以及在哪里可以优化。组织此逻辑并将其与表示层和可视化层分离对于应用程序开发过程的有效性至关重要。对于旨在提供出色用户体验的公司来说,这一层是他们最具差异化潜力的地方。

在开发过程中,某些需要专用硬件或长时间运行进程的组件必须被“模拟”——取而代之的是模拟功能。可以部署基于接口和插件的系统来实现此目标,其中应用程序的表示层通过一组确定的接口访问业务逻辑,从而与这些层中的更改或正在进行的开发过程隔离。然后,可以在模拟数据和模拟的帮助下测试应用程序的可用性。这个过程已被证明可以带来更具成本效益、更有用、更完整和更好的应用程序。

这就是通信层的用武之地。为了实现上述目标,几乎所有现代应用程序都以某种方式进行通信。汽车IVI通常使用CANBus层来确定各种车辆子系统的状态,而医疗设备则经过验证和验证的通信库,例如,可以使机器人手臂在手术过程中执行高精度运动。

此外,几乎所有应用程序都需要可更新,能够提供有关其用于聚合和营销目的的信息,或者只是需要在线数据库访问才能完全有用。因此,将这部分应用程序的逻辑分组到通信层中是一个合乎逻辑的选择,并带来了许多优势。

无需重写应用程序即可交换通信通道。安全和安保可以在少数地方集中和实施,从而最大限度地减少攻击面。分层实现允许优化,使应用程序保持“活动”,而重要进程在后台发生。当体系结构构建在通信层上时,非阻塞通信模式更容易实现。

4 层架构示例

以下是集成计算机解决方案版本的分层方法的概述,显示了功能明确分离,特别适合所有必须遵守安全法规的项目。以这种方式进行工程设计,实施干净且可维护的软件,非常适合集成和单元测试。

计算机

此体系结构的四个独立层由可测试和可模拟的接口定义。从下层到上层的所有通信都强制实施松散耦合。这保证了后端独立于前端。所谓的信号可以使用许多通用框架轻松实现。按照惯例,所有顶层都可以通过 API 和接口调用下面的层。这从上到下创建了紧密耦合,其中确保确定性的通信模式和应用程序逻辑的执行非常重要。

以下是各个层的角色:

可视化层负责用户在屏幕上看到和交互的所有内容。它负责显示所有文本,图像,图标,主题,样式,动画等。该层可以使用许多不同的技术来实现。(我们经常建议使用Qt框架,在这种情况下,这一层将使用Qt的QtQuick模块实现。

表示层维护应用程序和用户界面状态。它负责存储屏幕上显示的值。例如,在表盘上设置的值存储在表示层中,但显示在可视化层中。表示层实现应用程序的工作流以及工作流与后端的所有交互(例如,如果来自后端的错误消息到达,表示层逻辑会在屏幕上显示包含错误消息的对话框)。

应用程序逻辑层实现应用程序的业务逻辑。它负责数据存储、数据库交互、处理来自后端的事件以及与前端的交互。该层处理实现用户界面所需的“领域知识”。例如,对于当前的应用程序,该层将实现“测试运行”,“查看结果”,“用户管理”的业务逻辑以及软件需求规范中定义的几乎所有其他任务。

通信层实现与硬件设备、网络或其他系统的通信。硬件合作伙伴通常负责为实际硬件提供接口,并使用共同开发的 API 实现必要的通信例程。该层特别允许使用可模拟接口,这些接口可以在实际硬件完成并可用之前进行独立测试。

这种定义明确的体系结构有助于使用可重用的代码,并且解耦这些层可以实现 UX 设计人员、UI 实现、业务逻辑提供程序和硬件合作伙伴之间的工作分工。它还允许将任务轻松分配给正确的技能组合。总体而言,这些特点大大降低了项目开发风险。此外,这种分层架构方法允许公司更快地构建原型,并立即与UX设计师一起迭代工作流程。

为了跟上消费者的需求,汽车制造商必须加快构建有吸引力的安全信息娱乐系统的速度。依靠包含可重用代码的分层软件架构,而不是依靠定义不太明确的移动技术,可以大大缩短上市时间,因此汽车制造商可以在创纪录的时间内快速冲过终点线。

审核编辑:郭婷

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分