Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >智能座舱软件性能与可靠性的评估和改进

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

作者头像
ThoughtWorks
发布于 2024-03-18 11:51:58
发布于 2024-03-18 11:51:58
3010
举报
文章被收录于专栏:ThoughtWorksThoughtWorks

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

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
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-03-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 ThoughtWorks洞见 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
当“软件定义汽车”遇到软件性能问题
当今的汽车与数年前的汽车相比,虽然作为载具的主要目的变化不大,但不论是驾乘体验、智能化水平还是交互方式,都发生了质的飞跃。
ThoughtWorks
2024/06/19
2010
当“软件定义汽车”遇到软件性能问题
软件架构师质量要求终极指南:满足利益相关者的期望
因此,让我们从现实世界中一个经验丰富(“有趣”)的故事开始,作为对一个看似无聊的高质量主题的介绍。👇
用户5166556
2024/03/18
2470
软件架构师质量要求终极指南:满足利益相关者的期望
软件设计:推荐ISO/IEC 25010:2023标准,软件质量框架与设计指南
在现代软件开发中,确保软件系统的高质量是每个开发者和团队的重要目标。国际标准化组织(ISO)发布的ISO/IEC 25010:2023标准,为定义和评估软件系统的质量提供了一个全面的框架。这一标准不仅有助于质量保证,还能指导软件设计和开发过程。本文将详细讲解ISO/IEC 25010:2023标准,并推荐在软件系统设计中参考这一标准。
运维开发王义杰
2024/06/11
1.6K0
软件设计:推荐ISO/IEC 25010:2023标准,软件质量框架与设计指南
什么是软件可靠性测试?
“可靠”一词意味着某种事物是可靠的,并且每次都会给出相同的结果。可靠性测试也是如此。
用户10443079
2023/03/22
1.5K0
什么是软件可靠性测试?
揭秘车载测试:小白也能轻松学习!
在现代汽车技术的发展中,车载测试起着至关重要的作用。但是,对于很多人来说,车载测试可能还是一个相对陌生的概念。不用担心!接下来将带你一起深入了解车载测试,并分享一些小白也能轻松学习的方法和技巧!
测试开发技术
2023/12/11
1.2K0
揭秘车载测试:小白也能轻松学习!
【软件测试】稳定性和可靠性测试在软件开发中的重要性
软件测试的某些方面经常会在那些刚接触流程的人中造成混淆——例如在稳定性和可靠性测试之间划清界限。两者通常可以互换使用,并且有一个共同的目标,即确保系统可以在选定的时间范围内稳定运行。
架构师研究会
2022/09/30
2.3K0
「软件架构」软件架构概述
软件架构(architecture)是指软件系统的基本结构以及创建这种结构和系统的规程。每个结构都包含软件元素、它们之间的关系以及元素和关系的属性。[1]软件系统的架构是一个隐喻,类似于建筑物的架构。[2]它作为系统和开发项目的蓝图,布置设计团队需要执行的任务。[3]
架构师研究会
2020/07/20
1.6K0
「软件架构」软件架构概述
【愚公系列】软考中级-软件设计师 040-软件工程基础(软件质量和度量)
软件质量是指软件在满足用户需求的同时,具备一定的可靠性、可维护性、可测试性等特性。而软件度量是指通过对软件产物进行度量,来评估和衡量软件质量的一种方法。下面将分别介绍软件质量和软件度量的一些重要概念和方法。
愚公搬代码
2024/04/20
1680
【愚公系列】《AIGC辅助软件开发》039-如何使用 AI技术提升工作效率:架构师的类型
在当今快速发展的科技环境中,软件架构师的角色愈发重要。他们不仅需要设计系统的整体框架,还要确保其可扩展性、性能和安全性。随着人工智能(AI)技术的飞速发展,架构师们有机会利用这些先进工具来提升工作效率,优化设计流程,甚至改善团队协作。
愚公搬代码
2025/01/04
1360
聊一下软件可靠性测试方法及意义
根据国家标准GB/T25000.23.2019可靠性主要包括成熟度,可用性,容错性,易恢复性,可靠性的依从性,用于验证系统,产品或组件在指定条件下,指定时间内执行指定功能的程度。
漫谈测试
2024/08/07
2730
聊一下软件可靠性测试方法及意义
软考高级:软件架构评估:质量属性 - 易用性 和可测试性概念和例题
软件架构评估是指通过一系列的分析和评价活动,确定软件架构是否能满足既定的需求和预期的质量标准。在软件架构评估中,质量属性是衡量软件系统特定方面性能的关键指标。
明明如月学长
2024/05/24
2980
软考高级:软件架构评估:质量属性 - 易用性 和可测试性概念和例题
【愚公系列】软考高级-架构设计师 104-软件可靠性建模与管理
软件可靠性建模与管理对于帮助团队提高软件系统的质量、稳定性和用户满意度具有重要作用。通过科学的建模方法和有效的管理策略,团队可以更好地发现和解决软件系统中的问题,持续改进软件系统的性能,提升竞争力和市场地位。因此,软件开发和运营团队应该重视可靠性建模与管理,将其纳入整个软件开发周期中,并不断优化和完善。
愚公搬代码
2024/08/12
1720
《架构师》反思:系统可靠性
最近系统学习了一个系统可靠性及其相关知识,今天在这总结一下。 首先,什么是系统的可靠性呢?系统的可靠性是指在规定的时间内及规定的环境下完成规定功能的能力,也就是系统的无故障运行概率。 我会从以下几个方面来归纳主要内容: 1. 故障模型 2. 可靠性模型 3. 可靠性指标 4. 可靠性设计 故障模型 系统故障是指硬件或者软件的错误状态,一般引进故障的原因是这些:部件的失效、环境的物理干扰、操作错误或不正确的设计。 按照时间的长短,故障可以分为:永久性、间歇性、瞬时性。 故
用户1172223
2018/01/26
4.6K0
系统架构设计师考试大纲
考试合格人员应能够根据系统需求规格说明书,结合应用领域和技术发展的实际情况,考虑有关约束条件,设计正确、合理的软件架构,确保系统架构具有良好的特性;能够对项目睥系统架构进行描述、分析、设计与评估;能够按照相关标准编写相应的设计文档;能够与系统分析师、项目管理师相互协作、配合工作;具有高级工程师的实际工作能力和业务水平。
雪人
2022/10/13
1.1K0
【软件过程改进 学习笔记】过程思维 ( 软件危机 | 软件过程 | 过程改进 | 过程思维 | 过程描述 | ISO 9000 | 6σ | PCM | CMMI )
软件过程 简介 : 软件过程 是 为了 开发高质量软件 所需要完成的 任务框架, 即形成软件产品的 一系列步骤, 包括 中间产品, 资源, 角色 及 在过程中采取的 方法, 工具 等 ;
韩曙亮
2023/03/28
7720
21大软件架构特点的全面解析
众所周知,架构特点多以"ility"结尾(例如 scalability、deployability),也被称为 NFR(非功能需求)、质量属性。架构的特点没有固定清单,但标准是有的,就是 ISO25010:
深度学习与Python
2020/08/18
5410
21大软件架构特点的全面解析
【可靠性测试】什么是可靠性测试:定义、方法和工具
执行可靠性测试是为了确保软件是可靠的,它满足其目的,在给定的环境中指定的时间量,并能够呈现无故障运行。
架构师研究会
2022/09/28
3.9K0
【可靠性测试】什么是可靠性测试:定义、方法和工具
GQM 概述:构建研发效能度量体系的根本方法
来源 | 经授权转载自 思码逸研发效能 公众号 降本增效,迫在眉睫 几年前,随着粗放式增长的红利见顶,降本增效成为企业内的高频词汇;近两年在疫情冲击和经济下行的背景下,更是成为不得不重视的议题。美团亦将系统性的降本增效作为 2022 年度的三个关键命题之一。 软件研发团队作为许多科技企业的成本中心,同样需要更精细化的管理来降本增效。过去高速成长期用不着关注、来不及关注的低效点,如今都已是不能承受之重。 研发团队如何在精打细算的同时,依然高效率、高质量、可靠且可持续地交付价值,支持业务侧去应对快速变化的市
深度学习与Python
2023/03/29
1.2K0
GQM 概述:构建研发效能度量体系的根本方法
【愚公系列】软考高级-架构设计师 110-软件架构演化评估方法
软件架构演化评估方法是用来评估软件系统架构演化过程中的质量、效率和可维护性等方面的方法和技术。通过对软件架构演化的评估,可以及时发现问题、指导改进,并确保系统在演化过程中保持健康和稳定。以下是一些常见的软件架构演化评估方法:
愚公搬代码
2024/08/15
1720
大语言模型系统评估新框架:微观指标构建方法论
Denys Linkov 在 QCon 旧金山技术大会上发表了题为《构建 LLM 系统评估微观指标的框架设计》的专题演讲。本文整理自该演讲内容,重点探讨大语言模型(LLM)准确性评估所面临的独特挑战,并系统地阐述了如何通过创建、跟踪及动态修正微观指标体系来持续优化 LLM 模型表现。
深度学习与Python
2025/02/18
1570
大语言模型系统评估新框架:微观指标构建方法论
推荐阅读
相关推荐
当“软件定义汽车”遇到软件性能问题
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档