今天的消费者已经习惯了快速的创新步伐。移动和网络应用程序可以快速开发和更新,因此总有一些新东西可以吸引消费者——这一现实提高了他们的期望。不幸的是,对于汽车制造商而言,开发车载信息娱乐 (IVI) 系统的传统方法通常具有开发时间长的特点。IVI 更新可能需要数月甚至数年。结果?汽车音响主机的开发成本高昂且耗时,在它们首次进入市场时已经有些过时了。
不为所动,消费者经常拒绝这些系统,使原始设备制造商处于不稳定的境地。那么汽车原始设备制造商如何才能获得市场认可呢?他们和他们的一级供应商如何在不依赖不符合汽车安全和安保要求的移动技术的情况下快速构建有吸引力、有竞争力和安全的信息娱乐系统?一个有效的解决方案是依赖分层的软件架构。
通过分层软件架构,开发人员可以创建独立的组件来解决整个系统功能的特定部分。这些组件通过定义明确且稳定的接口进行通信,从而实现高性能实现。这种方法不仅需要了解需求,还需要完全了解用户体验 (UX)。最成功的软件项目通过允许 UX 设计指导和规定实施过程的所有步骤来引领 UX。
用户体验优先
现代应用程序的一个重要要求是它们看起来直观漂亮,带有有意义的动画和简单、易于识别的图形和图标。这使得应用程序易于使用、易于识别并吸引消费者。这对于在全球销售的产品尤其重要,因为用户界面必须易于翻译成不同的语言并适应不同的文化。
他们通常需要在具有各种屏幕尺寸和方向的不同设备上运行。现代 UI 工具包有能力应对这些挑战。带有 CSS、iOS Swift 或 Qt 工具包的 HTML5 是非常流行的选择,用于干净地构建解决应用程序外观和感觉的软件层。
无论使用哪种工具包,使用 UX 设计领导一个汽车项目都可以使这一切成为可能——而且比使用更传统的方法更容易。现代 UX 设计支持直观、实用的工作流程,允许用户快速完成他们需要做的事情,而无需通过学习说明手册来实际“了解”应用程序的工作原理。这通常通过使用简单的层次结构组织应用程序、将专家级功能隐藏在访问级别之后以及从流行的移动电话应用程序的流动方式中吸取教训来实现。
此工作流的实施需要一个软件架构,该架构为最顶层的“外观”提供编程主干。为了使复杂的外观和感觉变得简单,必须选择一种系统化的方法,以允许用户在应用程序中的页面或项目组之间切换、导航、到达“设置”、被打断,然后轻松找到返回的路径重点。使用状态机架构可以提供所需的灵活性,同时保持所需的稳健性和可测试性。
遵循用户体验优先的分层方法
遵循 UX 优先的分层架构方法是简化汽车 IVI 开发的一种方法,该汽车 IVI 在美学上吸引消费者,同时提供广受欢迎的功能。这种类型的方法包括可视化、表示、业务逻辑和通信层,依赖于组件来简化流程。
例如,可视化和表示层为用户提供了一种与应用程序交互的方式。但仍有实际功能的实现,例如,当用户界面想要在地址簿中显示联系人列表时,应用程序必须从存储中检索此数据,无论是在数据库中还是在连接的手机上,来自一个简单的文件,一个网络连接或其他地方。
所有应用程序都必须实现某个逻辑块,即“业务逻辑”层。例如,这就是农业行业供应商的算法确定是否以及在何处可以优化喷洒在田间的产品水平的地方。组织此逻辑并将其与表示层和可视化层解耦对于应用程序开发过程的有效性至关重要。对于旨在提供出色用户体验的公司而言,这一层是他们最具差异化潜力的地方。
在开发过程中,必须“模拟”某些需要专门硬件或长时间运行过程的组件——用模拟功能代替。可以部署基于接口和插件的系统来实现这一目标,其中应用程序的表示层通过一组明确的接口访问业务逻辑,从而与这些层中的更改或正在进行的开发过程隔离开来。然后可以在模拟数据和模拟的帮助下测试应用程序的可用性。这一过程已被证明可以带来更具成本效益、更实用、更完整和更好的应用程序。
这就是通信层的用武之地。为了实现上述目标,几乎所有现代应用程序都以某种方式进行通信。汽车 IVI 通常使用 CANBus 层来确定各种车辆子系统的状态,而医疗设备已经验证和验证了通信库,例如,可以使机器人手臂在手术期间执行高度精确的运动。
此外,几乎所有应用程序都需要可更新,能够提供有关其用途的信息以用于聚合和营销目的,或者仅需要在线数据库访问才能充分发挥作用。因此,将应用程序逻辑的这一部分分组到通信层是一个合乎逻辑的选择,并带来了许多优势。
无需重写应用程序即可交换通信通道。安全和安保可以集中在少数几个地方实施,从而最大限度地减少攻击面。分层实现允许进行优化,使应用程序“活着”,而重要的进程在后台发生。当架构建立在通信层上时,非阻塞通信模式更容易实现。
4 层架构示例
以下是集成计算机解决方案版本的分层方法的概述,显示了明确的功能分离,特别适用于必须遵守安全法规的所有项目。以这种方式进行工程可以强制执行非常适合集成和单元测试的干净且可维护的软件。
该架构的四个独立层由可测试和可模拟的接口定义。对从下层到上层的所有通信强制执行松散耦合。这保证了后端与前端的独立性。使用许多通用框架可以轻松实现所谓的信号。按照惯例,所有顶层都可以通过 API 和接口调用下面的层。这会创建自上而下的紧密耦合,确保确定性通信模式和应用程序逻辑的执行很重要。
这些是各个层的角色:
可视化层负责用户在屏幕上看到并与之交互的所有内容。它负责显示所有文本、图像、图标、主题、样式、动画等。该层可以使用许多不同的技术来实现。(我们经常推荐使用 Qt 框架,在这种情况下,这一层将使用 Qt 的 QtQuick 模块来实现。)
表示层维护应用程序和用户界面状态。它负责存储屏幕上显示的值。例如,刻度盘上设置的值存储在表示层中,但显示在可视化层中。表示层实现应用程序的工作流以及工作流与后端的所有交互(例如,如果来自后端的错误消息到达,表示层逻辑在屏幕上显示包含错误消息的对话框)。
应用逻辑层实现应用的业务逻辑。它负责数据存储、数据库交互、来自后端的事件处理以及与前端的交互。该层处理实现用户界面所需的“领域知识”。例如,对于当前的应用程序,这一层将实现“测试运行”、“查看结果”、“用户管理”的业务逻辑以及软件需求规范中定义的几乎所有其他任务。
通信层实现与硬件设备、网络或其他系统的通信。硬件合作伙伴通常负责为实际硬件提供接口,并使用共同开发的 API 实现必要的通信例程。这一层特别允许使用可模拟接口,这些接口可以在实际硬件完成并可用之前进行独立测试。
这种定义良好的架构便于使用可重用代码,并且层的解耦可以实现 UX 设计人员、UI 实现、业务逻辑提供者和硬件合作伙伴之间的工作分工。它进一步允许将任务轻松分配给正确的技能集。总体而言,这些特点大大降低了项目开发风险。此外,这种分层架构方法允许公司更快地构建原型,并立即与 UX 设计师一起迭代工作流程。
为了跟上消费者的需求,汽车制造商必须加快构建有吸引力、安全的信息娱乐系统的速度。依靠包含可重用代码的分层软件架构,而不是依靠定义不太明确的移动技术,可以显着缩短上市时间,从而使汽车制造商能够以创纪录的速度冲过终点线。
审核编辑:郭婷
全部0条评论
快来发表一下你的评论吧 !