智能座舱软件性能与可靠性的评估和改进

随着智能汽车的不断发展,智能座舱在性能与可靠性上暴露出体验不佳、投诉渐多的问题,本文从工程化的角度简述了如何构建智能座舱软件的评估框架,以及如何持续改进其性能和可靠性。

 

 

1. 智能座舱软件性能和可靠性表现不佳

据毕马威发布的《2023智能座舱白皮书-聚焦电动化下半场》中的数据,中国汽车智能座舱市场规模呈逐年扩大之势,2022 到 2026 的 5 年复合增长率将超过 17%,预示着这一领域的蓬勃发展。随之而来的是智能座舱软件功能日益丰富,整体智能化程度显著提升。

图片

_(来源:《2023智能座舱白皮书-聚焦电动化下半场》)_

 

在市场规模预测逐年扩大的同时,消费者对智能座舱软件的相关投诉占比也愈发显著。这主要聚焦在智能座舱软件的操作体验度、性能和可靠性方面,揭示出智能化功能不断增加所带来的挑战。

根据车质网 2023 年四个季度的汽车投诉分析报告汇总,智能座舱(车机)涉及的质量问题占比显著,其中 Q1~Q4 的投诉故障点 TOP20 中与车机相关的部分(影音系统故障,导航问题,车载互联故障,行车安全辅助系统故障等)分别占据总投诉的 15.89%,10.99%,10.56% 和 9.56%。

图片

_(来源:车质网)_

进一步查阅具体投诉单,会发现包括死机、黑屏、卡顿、响应慢等问题非常普遍,严重影响了用户的驾乘体验,也降低了用户对品牌的信心和认同。

结合智能座舱软件的发展趋势和用户投诉问题后,可以发现性能和可靠性是除了操作易用性以外,最为关键的使用体验影响因素。这两个关键因素不仅直接关系到用户的满意度,也在很大程度上决定了智能座舱软件在市场中的竞争力。

  • 性能的提升是确保智能座舱软件流畅运行的基石。随着功能的不断增加,软件需要更高效的处理器和优化的算法,以保证用户操作的即时响应和系统的高度流畅性。

  • 可靠性是确保用户在各种使用场景下都能够信赖智能座舱软件的关键。用户期望在驾驶过程中不会受到智能座舱软件故障产生的干扰,系统最好稳定运行,避免出现崩溃或死机等问题。

后文我们将结合软件研发的最佳实践和智能座舱领域软件的自身特点,探讨评估和改进其性能和可靠性的方法。

 

2. 性能和可靠性的评估框架

If you can't measure it, you can't improve it.

智能座舱软件系统本身是一种软件,其研发过程也遵循软件的架构设计、开发落地和质量验证的常见流程。因此在讨论如何改进之前,我们首先应当明确:如何正确评估软件系统的性能和可靠性?

 

2.1. 软件架构特性模型

Mark Richards 和 Neal Ford 在《软件架构:架构模式、特征及实践指南》中曾这样描述 “架构特性”:

架构师可能会与他人合作确定领域或业务需求,但架构师的一个关键职责是定义、发现和分析软件所必须的、与领域无关的事情:架构特性。

架构特性(Architecture Characteristics)是架构师在设计软件时需要考虑的与领域或业务需求无关的软件特性,如可审计性、性能、安全性、可伸缩性、可靠性等等。在很多时候我们也会称之为非功能性需求(Nonfunctional Requirements)或质量属性(Quality Attributes)。

显然,对于关键的软件架构特性,需要在架构设计之初就纳入整体考量,并且在软件研发的流程中持续进行关注。那么在研发软件系统的时候,都有哪些关键架构特性需要考虑呢?

ISO/IEC 25010:2011 是由国际标准化组织推行的一套标准(现已更新至 2023 版本),它隶属于 ISO 系统与软件质量需求和评估(SQuaRE)体系,定义了一组系统和软件质量模型。该质量模型被广泛应用于描述和评估软件质量,可以很好的指导我们对软件关键架构特征进行建模。

ISO 25010 描述的质量模型如下(图中着重标明了与性能和可靠性相关的部分):

图片

 

ISO 25010 对软件架构特性(标准原文中称为“质量属性”)进行了划分,涵盖了众多方面,如功能性、可靠性、性能效率、可维护性、可移植性等。每个架构特性都定义了与之相关的关键方面,特性下还包括多个子特性,更细致地描述了特性的具体维度。可见该质量模型提供了一个全面且通用的框架,以便更好地理解和评估软件的质量。

对于性能特性,该模型划分了三种子特性:时间特性,资源利用性,容量;而对于可靠性特性,模型划分了四种子特性:成熟性,可用性,容错性和易恢复性。

当然,任何一种软件都有其自身的特点和运行环境,能够满足上述模型中所有架构特性的软件固然优秀,但成本势必高昂,正如对于一套只有 3 个用户的内部系统,设计弹性伸缩来满足可用性是毫无必要的。显然在智能座舱软件的领域,以用户体验来评估性能和可靠性特性,比用吞吐量和弹性伸缩比来评估更符合智能座舱软件的设计目标。

 

2.2. 通过指标体系评估架构特性

分析前面的软件质量模型,我们会发现该模型主要定义了软件的架构特性“应当表现为什么样子”,但没有讲明“需要怎么评估”才能判断已经达成了架构特性的要求。质量模型中的特性和子特性是对架构特性的定性描述,而如何对架构特性进行定量评估未能提及。

事实上,SQuaRE 也提供了对质量模型的评估框架(详见 ISO/IEC 25020:2019):

图片

以上评估框架本质上就是采用一组权重不同的指标集来评估一项架构特性(子特性),指标可以由一些指标元素计算得出,而指标元素可通过一些实施在软件研发活动中的测量方法测量而得。

在软件行业,许多评估指标都能够跨业务领域达成共识,如响应时间、吞吐量、RTO、RPO、MTTR 等等,企业在建立自己业务领域的指标体系时可以直接采纳。

如下就是一些相对通用的软件性能和可靠性指标示例,这些指标对绝大多数的软件都适用:

图片

图片

 

当然,由于功能领域和运行环境的不同,用于评估架构特性的指标体系势必会存在一定的差异。

首先,不同的业务场景对评估指标的权重设置会存在区别。例如对智能座舱系统和软件的性能效率评估,由于关系到用户驾乘体验,时间特性至关重要,而对提供互联网服务的 Web 应用,为了向更多用户提供服务,容量特性就是其需要关注的重点。

其次,特定的领域会有其独特的性能指标。这些差异性指标需要从实际业务中提炼。例如 UI 界面流畅度无法简单的用响应时间来评估,而是需要通过帧率、丢帧数等指标来综合判断。

 

2.3 寻找指标元素的数据来源

在建立了指标体系之后,接下来面临的问题就是如何寻找合理的指标元素来计算指标值。

同样的,有非常多通用的指标元素可以直接采纳,例如圈复杂度,模块耦合度,CPU 使用率,内存使用率,事务执行时间,并发度等等。但指标元素相比指标本身而言,与业务领域相关度更高,更需要结合领域知识来寻找合适的指标元素。

GQM 方法是一种有效的寻找和建立指标元素的分析法:GQM 即“Goal - Question - Metrics”,可译为“目标 - 问题 - 指标” ,是一种历史悠久的分析方法,由 Victor Basili 和 David Weiss 在 1984 年提出。

本质上 GQM 是通过树形分析结构,层层递进。首先以如何实现目标为前提,对目标进行提问,之后将每个问题拆解为多个能支撑解决该问题的指标元素,最后评选出最合适的指标元素。

如下我们以“帮助寻找智能座舱软件的性能和可靠性特征的评估指标元素”为例,分别基于“评估智能座舱主屏操作流畅度”和“计算智能座舱系统与应用的故障率和可用性”为目标,建立 GQM 分析树:

图片

图片

在分析之初,为了扩展思路,可以先不考虑指标元素的价值和获取难度,尽可能多的识别可能的指标元素,之后再分析每一个指标元素的价值和获取的难易程度,并据此对其进行优先级排序,筛选最适合的指标元素。这一过程可遵循如下优先级原则:

  • 能支撑越多问题越靠前

  • 越容易收集和计算越靠前

基于 GQM 方法,我们能够对抽象的指标进行拆解,得到更为清晰的指标计算公式和采集数据点,至此一个完整的评估框架就搭建完成了。

 

3. 持续改进性能和可靠性的工程化方法

基于前文引入的评估框架,我们已经掌握了一定的分析方法,明确了改善智能座舱软件性能和可靠性的方向。评估的下一步就是改进,本节将要讨论如何以工程化的方法,对智能座舱软件的性能和可靠性架构特性进行持续改进,从而确保随着软件的迭代,其性能和可靠性不仅不会劣化,而是会长期、稳步地提升。

 

3.1 架构建模指导研发

建模是在设计阶段对业务领域和架构特征进行分析的有效实践。许多组织在进行软件架构设计时,往往注重业务领域建模,轻视架构特性建模,经常会导致诸如安全性、可靠性、性能等的设计考量严重后置,等软件发布之后再被生产问题倒逼改进。

事实上早期的架构特性建模不仅可以指导后续研发过程中的代码开发,也天然能转化为白盒测试来验证代码是否符合设计要求。

对于性能建模,可以通过识别软件架构的性能关注点,以及预定义性能指标来形成性能模型。关于性能建模,笔者曾在《什么是性能工程》中有过介绍。

对于可靠性建模,得益于汽车生产制造领域已有很多成熟的建模方法,软件领域也可直接参考和剪裁。故障树分析(FTA)、故障模式和影响分析(FMEA)等建模方法。

 

_(来源:描述 FMEA 程序的国家标准 G)_

图片

_(B/T 7826-2012)_

为了避免建立的模型只在架构评审会议上有效,而实际落地的时候完全没有遵循架构设计,很有必要基于模型构建对应的适应度函数,以确保架构不会慢慢腐化,下一小节将介绍架构适应度函数。

 

3.2 适应度函数持续看护

有了指标体系,我们可以定量的对智能座舱软件的性能和可靠性进行分析和评估。然而,如果评估的过程过于复杂、冗长且难以快速进行,那么随着时间的推移,对这些架构特性的评估就会成为团队沉重的负担,这意味着评估活动的次数会越来越少,反馈越来越慢,难以持续,最终停滞下来。

一切可以被自动化的事情,都应该被自动化。

在评估软件功能是否满足要求时,我们会构建大量的自动化测试,这样就能形成一张软件特性安全网,持续的保障软件符合要求。而对于架构特性的评估,传统的做法更像是 “运动式” 评估:

  • 在研发侧,定期拉起专门的性能或可靠性测试团队,手握指标体系,从黑盒角度测试并评估是否满足指标要求,产出测试报告;

  • 在设计侧,定期安排各类架构讨论会、评审会来评估设计本身以及软件是否正确的按设计落地,产出大量文档。

ASPICE 是一个典型的案例,由于流程和文档的复杂性,以及对每个研发阶段的严格要求,导致设计和测试很容易停留在上一个较早的快照版本状态,永远都跟不上软件变化的速度。

_(来源:An ASPICE Overview)_

在 Neal Ford、Patrick Kua 和 Rebecca Parsons 合著的《演进式架构》一书中,将适应度函数定义为“用于总结预期设计的解决方案与实现设定目标接近程度的目标函数”。引出适应度函数,就是要通过工程化的手段实现对架构的评估也能自动化、常态化。

图片

_(来源:《演进式架构》)_

 

当我们的指标和模型被转换为一个个适应度函数,它们就能够绑定在研发流水线上,从而实现对架构特性的自动化评估。有了自动化作为前提,接下来就可以采用架构看护来驱动持续改进。基于已经建立的各类适应度函数,在每日构建、迭代测试以及集成测试等流程中,适应度函数产生的执行结果能够形成一组完整的性能和可靠性评估报告。取上一版本的评估结果作为基线,与最新版本的评估结果进行对比,就能对软件在性能和可靠性上的表现实现细致的看护,从而判断新版本哪些部分进行了优化,哪些部分发生了劣化,一目了然。

 

3.3 可观测工具集帮助分析

至此我们已经拥有了一些手段来支持持续的性能和可靠性评估,但评估本质上是为了暴露问题,之后的分析和优化才是持续改进的难点。

暴露了问题之后,往往需要以最快的速度开展优化,而对于业务型组织而言,团队绝大多数时间都在业务领域工作,对性能和可靠性一类的问题分析和优化能力不足,通常此时组织就会寻找或聘请技术专家来帮助改进。但技术专家作为稀缺资源,面对多种多样的问题,往往捉襟见肘。

因此,期望实现持续改进的组织,建立工程化的分析和优化手段来提升效率必不可少,这里首当其中的就是构建可观测工具集。在前面提到的评估框架中,指标的作用主要是为了指示当前状态如何,指标可以评估优劣,但不能帮助分析问题根因。分析软件问题需要能复现系统运行时发生了什么,组件是如何交互的,产生了哪些数据,而这些信息都需要通过可观测工具来抓取和记录。

拥有了这样的工具集之后,当评估发现某些指标出现劣化,就能基于一些基本信息迅速关联出系统运行时的上下文和观测记录,从而快速分析和定位问题,快速实施优化。

 

总结

智能汽车市场前景广阔,发展迅速,随着竞争的深入,智能座舱的极致体验一定会成为各汽车厂商的一大目标。

本文主要从软件研发和交付的角度,结合软件领域的优秀实践和探索,讨论了智能座舱软件在性能和可靠性方面的持续评估方法和持续改进方法。

随着越来越多的外部投资和跨领域人才涌入智能汽车领域,相信未来在相关产业中定能不断地创造巨大的价值。

 

参考文献

  • 《2023智能座舱白皮书-聚焦电动化下半场》,毕马威

  • 《2023年一季度汽车投诉分析报告》,车质网

  • 《2023年二季度汽车投诉分析报告》,车质网

  • 《2023年三季度汽车投诉分析报告》,车质网

  • 《2023年四季度汽车投诉分析报告》,车质网

  • 《软件架构:架构模式、特征及实践指南》,Mark Richards / Neal Ford

  • SQuaRE 系统与软件质量模型:ISO/IEC 25010:2011,国际标准

  • SQuaRE 质量测量框架:ISO/IEC 25020:2019,国际标准

  • GQM 分析法,Victor Basili 和 David Weiss

  • 《什么是性能工程》

  • 故障树分析(FTA)

  • 故障模式和影响分析(FMEA)

  • ASPICE

  • 《演进式架构》,Neal Ford / Patrick Kua / Rebecca Parsons

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/705872.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ComfyUI 完全入门:Refiner精炼器

在 SDXL基础模型1.0版本发布时,Stability AI 公司同时发布了一个名为SDXL Refiner的模型。这个Refiner模型是专门设计用来对基础模型生成的图像进行进一步优化和细化的,所以大家也经常称之为精炼器或者精修器。 Refiner模型的主要目的是提升图像的质量&…

写了6年SQL,推荐快速上手MySQL 的SQL语句

写了6、7年SQL,有写复杂,有写简单,但总体而言,基础是统一的,。就像编程之需要会加减乘除,用MySQL懂这些SQL就足够了。 目录 1. SELECT 查询2. WHERE 子句3. ORDER BY 子句4. GROUP BY 子句5. HAVING 子句6…

免费代理为什么不适合您的业务需求?

在数字时代,网络已经成为人们日常生活和商业活动中不可或缺的一部分。为了实现更广阔的业务拓展和更畅通的网络体验,许多人开始考虑使用代理服务器。然而,虽然免费代理可能听起来像是个经济实惠的选择,但事实上,它可能…

微服务开发与实战Day06 - MQ基础篇

一、MQ 高性能的异步通讯组件 课程背景 同步通讯:并发能力弱 异步通讯:并发能力强 1. 初始MQ 1.1 同步调用 以黑马商城的余额支付为例: (1)同步调用的优势是什么? 时效性强,等待到结果后才…

基于SSD的安全帽检测

目录 1. 作者介绍2. SSD算法介绍2.1 SSD算法网络结构2.2 SSD算法训练过程2.3 SSD算法优缺点 3. 基于SSD的安全帽检测实验3.1 VOC 2007安全帽数据集3.2 SSD网络架构3.3 训练和验证所需的2007_train.txt和2007_val.txt文件生成3.4 模型训练3.5 GUI界面3.6 结果展示3.7 文件下载 4…

【Unity+AI01】在Unity中调用DeepSeek大模型!实现AI对话功能!

要在Unity中调用DeepSeek的API并实现用户输入文本后返回对话的功能,你需要遵循以下步骤: 获取API密钥: 首先,你需要从DeepSeek获取API密钥。这通常涉及到注册账户,并可能需要订阅相应的服务。 集成HTTP请求库&#xf…

基于python多光谱遥感数据处理、图像分类、定量评估及机器学习

原文链接:基于python多光谱遥感数据处理、图像分类、定量评估及机器学习 普通数码相机记录了红、绿、蓝三种波长的光,多光谱成像技术除了记录这三种波长光之外,还可以记录其他波长(例如:近红外、热红外等)光…

pytorch神经网络训练(AlexNet)

导包 import osimport torchimport torch.nn as nnimport torch.optim as optimfrom torch.utils.data import Dataset, DataLoaderfrom PIL import Imagefrom torchvision import models, transforms 定义自定义图像数据集 class CustomImageDataset(Dataset): 定义一个自…

Ubuntu22.04 下 pybind11 搭建,示例

Pybind11 是一个轻量级的库,用于在 C 中创建 Python 绑定。Ubuntu22下安装pybind11步骤如下: 1. 安装 pybind11 1.1 pip 命令安装 pip3 install pybind11 1.2 源代码安装 安装依赖库: sudo pip install -i https://pypi.tuna.tsinghua.e…

AVR晶体管测试仪开源项目编译

AVR晶体管测试仪开源项目编译 📍原项目地址:https://github.com/Mikrocontroller-net/transistortester/tree/master🌿 https://github.com/svn2github/transistortester🌿 https://github.com/wagiminator/ATmega-Transistor-Tes…

2. Revit API UI 之 IExternalCommand 和 IExternalApplication

2. Revit API UI 之 IExternalCommand 和 IExternalApplication 上一篇我们大致看了下 RevitAPI 的一级命名空间划分,再简单讲了一下Attributes命名空间下的3个类,并从一个代码样例,提到了Attributes和IExternalCommand ,前者是指…

vite配置unocss

在vue3vitetseslintprettierstylelinthuskylint-stagedcommitlintcommitizencz-git介绍了关于vitevue工程化搭建,现在在这个基础上,我们增加一下unocss unocss官方文档 具体开发中使用遇到的问题可以参考不喜欢原子化CSS得我,还是在新项目中使…

NumPy和数组

1.NumPy是什么 NumPy(Numerical Python的缩写)是一个开源的Python科学计算模块,其中包含了许多实用的数学函数,用来处理数值型数据。NumPy中,最重要和使用最频繁的对象就是N维数组。 为什么要学习NumPy? …

Java高级技术探索:深入理解JVM内存分区与GC机制

文章目录 引言JVM内存分区概览垃圾回收机制(GC)GC算法基础常见垃圾回收器ParNew /Serial old 收集器运行示意图 优化实践结语 引言 Java作为一门广泛应用于企业级开发的编程语言,其背后的Java虚拟机(JVM)扮演着至关重…

TikTok Ads广告综合指南:竞价策略及效果建议

作为全球最受欢迎的应用程序之一,TikTok不仅为用户提供了记录分享生活中美好时刻、交流全球创意的平台,也给全球的企业提供了一个直接触达用户的平台。随着Z时代用户人群的购买力不断上升,出海广告主们也逐渐将目光放在TikTok方面的营销。 上…

【Linux系统编程】线程

Linux线程 文章目录 Linux线程1.进程与线程区别2.线程优点3.API概要4.线程1.线程的创建2.线程等待内存共享验证3.线程退出关于对void** &的理解拓展 4.互斥锁1.创建及销毁互斥锁2.加锁及解锁 5.什么情况下会造成死锁6.条件**1. 创建及销毁条件变量****2. 等待****3. 触发**…

基于大数据的主流电商平台获取商品详情数据SKU数据价格数据

主流电商平台:淘宝 1688 闲鱼 京东 唯品会 蘑菇街 一号店 阿里妈妈 阿里巴巴 苏宁 亚马逊 易贝 速卖通 电子元件 网易考拉 洋码头 VVIC MIC Lazada 拼多多 ​ ​​​​​​​关于电商大数据的介绍: 主流电商大数据的采集:电商API接口的接入…

潮玩宇宙大逃杀APP系统开发成品案例分享指南

这是一款多人游戏,玩家需要选择一个房间躲避杀手。满足人数后,杀手会随机挑选一个房间杀掉里面所有的参与者,其他房间的幸存者将平均瓜分被杀房间的元宝。玩家在选中房间后,倒计时结束前可以自由切换不同房间。 软件项目开发成品…

【Linux】进程控制3——进程程序替换

一,前言 创建子进程的目的之一就是为了代劳父进程执行父进程的部分代码,也就是说本质上来说父子进程都是执行的同一个代码段的数据,在子进程修改数据的时候进行写时拷贝修改数据段的部分数据。 但是还有一个目的——将子进程在运行时指向一个…

自动控制原理【期末复习】(二)

无人机上桨之后可以在调试架上先调试: 1.根轨迹的绘制 /// 前面针对的是时域分析,下面针对频域分析: 2.波特图 3.奈维斯特图绘制 1.奈氏稳定判据 2.对数稳定判据 3.相位裕度和幅值裕度