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

news2024/11/23 10:44:13

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

 

 

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

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

线程池前置知识

并发和并行 并发是指在单核CPU上,多个线程占用不同的CPU时间片。线程在物理上还是串行执行的,但是由于每个线程占用的CPU时间片非常短(比如10ms),看起来就像是多个线程都在共同执行一样,这样的场景称作并发…

认识线性调频信号(LFM)和脉冲压缩

目录 1. 线性调频(LFM)信号:2.Matlab仿真3.脉冲压缩 微信公众号获取更多FPGA相关源码: 1. 线性调频(LFM)信号: 在时域中,一个理想的线性调频信号或脉冲持续时间为T秒,…

CNAS认证是什么?怎么做?

在全球化日益深入的今天,产品质量和安全已经成为企业生存和发展的重要基石。而在这个过程中,CNAS认证作为一种权威性的认可机制,发挥着不可替代的作用。那么,CNAS认证究竟是什么?我们又该如何进行这一认证过程呢&#…

派能协议,逆变器测试问题记录

问题一:逆变器无法进行逆变 通过抓取逆变器与bms的通讯报文,如下: 根据派能协议,报文标黄的对应充放电状态,30 30对应的数据为0 0,说明充放电状态全部置0,导致逆变器无法逆变。 问题二&#xf…

安装好IDEA后,就能够直接开始跑代码了吗?

我实习的第一天,睿哥叫我安装了IDEA,然后我就照做了。 之后,我把gitlab的代码拉下来后,发现好像没有编译运行的按钮,所以我就跑去问睿哥。睿哥当时看了看后,发现原来我没有安装JDK,他就叫我安装…

下载elasticsearch-7.10.2教程

1、ES官网下载地址 Elasticsearch:官方分布式搜索和分析引擎 | Elastic 2、点击下载Elasticsearch 3、点击 View past releases,查看过去的版本 4、选择版本 Elasticsearch 7.10.2,点击 Download,进入下载详情 5、点击 LINUX X8…

LeetCode435无重叠区间

题目描述 给定一个区间的集合 intervals ,其中 intervals[i] [starti, endi] 。返回 需要移除区间的最小数量,使剩余区间互不重叠 。 解析 由于要删除尽可能少的区间 ,因此区间跨度大的一定是要先删除的,这样就有两种贪心思想了…

【ARM Cache 及 MMU 系列文章 6.2 -- ARMv8/v9 如何读取 Cache 内部数据并对其进行解析?】

请阅读【ARM Cache 及 MMU/MPU 系列文章专栏导读】 及【嵌入式开发学习必备专栏】 文章目录 Direct access to internal memoryL1 cache encodingsL1 Cache Data 寄存器Cache 数据读取代码实现测试结果Direct access to internal memory 在ARMv8架构中,缓存(Cache)是用来加…

D 25章 进程的终止

D 25章 进程的终止 440 25.1 进程的终止:_exit()和exit() 440 1. _exit(int status), status 定义了终止状态,父进程可调用 wait 获取。仅低8位可用, 调用 _exit() 总是成功的。 2.程序一般不会调用 _exit(), 而是…

海外盲盒APP系统开发:开拓国际盲盒市场

在互联网的传播下,盲盒在国内外都掀起了风潮,我国盲盒将具有文化元素的盲盒商品投向海外市场中,获得了海外消费者的喜爱,给我国盲盒企业提供了新的商业机遇。盲盒的未知性让玩家在拆盲盒的过程中享受到更多的惊喜感,为…

下载kibana-7.10.2教程

1、官网下载地址: Download Kibana Free | Get Started Now | Elastic 2、进入 Kibana下载界面,点击 View past releases 查看过去的版本 3、选择版本 Elasticsearch 7.10.2,点击 Download 4、点击 LINUX 64-BIT,进行下载 5、下…

高并发挑战?盘点这些架构优化篇技巧,让你的系统焕发新生!

高并发挑战?试试这些垂直优化技巧,让你的系统焕发新生! 背景介绍性能优化优化方向架构演进历程第一阶段:单体架构弊端瓶颈Tomcat与数据库独立部署瓶颈 第二阶段:缓存架构结合本地缓存和分布式缓存瓶颈 第三阶段&#x…

PHP简约轻型聊天室留言源码

无名轻聊是一款phptxt的轻型聊天室。 无名轻聊特点: 自适应电脑/手机 数据使用txt存放,默认显示近50条聊天记录 采用jqueryajax轮询方式,适合小型聊天环境。 访问地址加?zhi进入管理模式,发送 clear 清空聊天记录。 修改在…

C++ 23 之 构造函数和析构函数

c23构造函数和析构函数.cpp #include <iostream> #include <string> using namespace std;class Person2{ public:// 构造函数 没有返回值&#xff0c;不能写void;函数名和类名一致&#xff1b;可以设置参数&#xff0c;可以函数重载&#xff1b;系统自动调用&…

融资融券是什么?深入解析股市杠杆交易!

01 融资融券是什么&#xff1f; 融资融券&#xff0c;简称两融&#xff0c;又称证券信用交易或保证金交易&#xff0c;是股票市场中的一种交易方式。在这种交易中&#xff0c;投资者可以向证券公司借入资金&#xff08;融资&#xff09;来购买股票&#xff0c;或者借入股票&am…

ATFX汇市:美国5月通胀率回落,降息预期刺激黄金走高

ATFX汇市&#xff1a;据美国劳工部发布的最新数据&#xff0c;美国5月核心CPI年率最新值3.4%&#xff0c;低于前值3.6%&#xff1b;名义CPI年率最新值3.3%&#xff0c;低于前值3.4%。核心CPI年率和名义CPI年率双双下降&#xff0c;超出此前市场预期&#xff08;预期为整体保持不…

ASM字节码插桩实现点击防抖

思路&#xff1a;在点击事件onclick的时候&#xff0c;将view的onclick在给定的时间给拦截掉。以前我们可能都是用一个util来拦截&#xff0c;这样在每个点击事件都得去判断&#xff0c;那么这里就用字节码插桩的形式来实现一下。 ASM的引入 dependencies {implementation gr…

遥感图像地物覆盖分类,数据集制作-分类模型对比-分类保姆级教程

在遥感影像上人工制作分类数据集 1.新建shp文件 地理坐标系保持和影像一致&#xff0c;面类型 2.打开属性表 3.添加字段 这里分类6类&#xff0c;点击添加值添加 添加完毕 开始人工选地物类型&#xff0c;制作数据集 开始标注&#xff0c;标注的时候可以借助谷歌地图…

ISO17025认证是什么?怎么做?

ISO17025认证是一种国际通用的实验室质量管理体系认证&#xff0c;其目标是确保实验室的技术能力、管理水平以及测试结果的可靠性和准确性达到国际认可的标准。该认证由国际标准化组织&#xff08;ISO&#xff09;和国际电工委员会&#xff08;IEC&#xff09;联合发布&#xf…

代码随想录算法训练营第37天|● 56.合并区间● 738.单调递增的数字

合并区间 56. 合并区间 - 力扣&#xff08;LeetCode&#xff09; 按照左边界从小到大排序之后&#xff0c;如果 intervals[i][0] < intervals[i - 1][1] 即intervals[i]的左边界 < intervals[i - 1]的右边界&#xff0c;则一定有重叠。&#xff08;本题相邻区间也算重贴…