干货 | 汽车行业研发效能提升的挑战与实践案例

news2025/2/25 2:42:01

在 9 月 15 日的第七届 CSN 大会上,思码逸研发效能专家王艳萍受邀分享了《汽车行业研发效能提升的挑战与实践案例》。演讲包含了思码逸对多家汽车企业服务过程中总结出的行业痛点、解决方案,以及实践案例。

以下为演讲实录:

思码逸与很多知名汽车企业都有合作。我们这次的演讲会先简单介绍一下思码逸,然后重点分享我们与汽车企业在研发效能层面的实践,汽车软件研发效能与传统软件研发效能的差异,以及在汽车行业中,软件研发效能度量的痛点与解决方案等。

思码逸成立于 2018 年,专注于软件研发效能度量与分析。基于深度代码分析技术,思码逸产品从代码和 DevOps 工具链中提取数据,呈现研发效率、软件工程质量、组织与人才发展等多视角数据洞察,提高研发过程可见性,辅助团队决策,推动开发者自驱成长。

思码逸独有的研发效能指标“代码当量”已经作为核心指标,被信通院采纳。我们也受信通院邀请,与京东、腾讯、百度、网易等等 40 多家公司,一起起草了《软件研发效能度量规范》

我们目前服务了上百家企业,其中来自汽车行业的包括理想、蔚来、宝马、保时捷、沃尔沃等。

汽车行业的软件研发效能特征与挑战

相比传统的软件研发,汽车软件的研发会更加复杂,主要体现在两方面,一方面是项目复杂,另一方面是人员复杂。

首先,项目方面存在以下特点:

体量大:规模大、交付周期长,子项目类型多

版本众多:为了适配各种硬件,需要更多版本,所以每个版本中的模块复用度高。一旦模块底层需要修改,那么带来的技术维护难度大,所以有更高的质量要求。

嵌入式开发:软硬结合的开发方式,在软件测试时,需要适应物理环境及硬件接口,所以会导致测试效率比传统软件开发要慢。

安全性要求高:相比传统软件开发,汽车软件对安全的要求非常高, 包括功能安全、网络安全等,一旦出现问题,就可能危及用户生命。

由于项目的复杂度高,所以相应地会在人员上带来更高的复杂度,主要体现在两方面。一方面是人员构成比较复杂,不仅有公司内部的研发团队,还有外包团队。在人员岗位上,除了传统的前端、后端、算法,还会包含嵌入式开发等硬件相关的研发人员。

基于以上特点,汽车软件研发对效能度量的要求会比较高。我们总结了一下我们客户经常遇到的研发效能度量的诉求。

首先由于研发项目体量大,所以即使效率提升一个百分点,也可以节省巨大的成本。所以第一个诉求就是“提升整体效率,做更准确的需求预估”。另一个诉求,就是“及时判断卡点,找到影响交付速度的关键因素”,从而提升项目整体的效率。

因为整个软汽车行业对安全可靠性的要求非常高,这就要求我们能在整个研发过程中及时地发现问题,保证可以在最终测试和交付之前解决掉关键问题,而不是在最后发现问题,再回过头去修改。

在人员管理方面,主要诉求就是“建立考核标准,制定研发流程规范”,通过科学的方法来管理复杂的团队。

最后从项目和人员管理两个角度综合来看,还有一个诉求就是“合理调配资源,避免忙闲不均或者资源错配带来的浪费”。

由这些诉求出发,结合我们与多个汽车企业合作的经验来看,我们可以看到汽车行业做研发效能度量的四个难点:

  • 第一,数据分散。研发数据可能分散在多个不同的工具中,整合数据是一个难点。

  • 第二,缺少可靠的数据基础指标。例如要统计这个工时内完成了多少需求、功能点,这些数据的填写大多是依赖个人主观判断的,所以没有统一的标准,那么这就给后续的数据分析带来难题。同时,还有大量的代码复用、功能点大小不一等问题,都是由于缺少基础的指标。

  • 第三,分析维度、视角多。一个项目可能会涉及到多个子项目、版本,每个子项目背后可能还有不同的团队、不同的人。在团队中,高层、中层对项目的关注点都不同,所以会涉及到非常多的维度和视角。我们有很多客户都是说“我们有很多指标,但就是用不起来”,其背后的原因就是因为你给出分析结果,并不一定是这个管理者或角色他想看到的。高管不希望看到那么多细节信息,而基层管理者却希望从细节中发现改进点。

  • 第四,定位问题困难。由于项目周期长、项目复杂度高,甚至可能还会涉及到较多的外包资源,所以很难快速地定位问题。

解决方案与实践案例

我们为汽车行业提供了这样一套解决方案,如下图所示。我们从数据采集、建模、指标体系,到分析,提供了一套全流程的度量与分析平台。我们已经把常用的代码仓库、项目管理工具、质量扫描工具和 CI/CD工具的数据接口打通了,可以通过简单配置就将数据接入进来。如果你使用的是我们还未支持的工具,也可以通过 CSV 的形式将数据导入到平台中。我们的平台会清洗数据,并基于数据建模输出事务管理、代码效率、质量管理等模型。

在平台中,我们根据对上百家企业的服务经验,默认预置了 100+研发效能指标,根据你的模型会推荐一些指标,并支持用户自定义指标。

在分析层面,我们支持根据不同角色进行多维度的数据展示和分析。如果是需要了解更多细节信息的管理者,还可以针对数据进行下钻分析,直至找到问题的根源。

另外,我们还提供一些行业基线和组织基线,让你可以知道目前团队的研发效能、项目质量在行业中所处的水平是怎样的,以及与自身相比是否在持续进步,甚至于公司内其他团队相比处于什么样的位置。为了让管理者更容易去分析数据,我们还在平台中提供了智能专家系统,来辅助解读数据指标和现状。

我们已经把大部分的高频指标都放在平台中了。我们简单介绍一下核心指标“代码当量”。大家可以将它理解为与“代码行数”对标的一个指标。但是代码行数可能会遇到空行、注释、第三方引用等。这让代码行数无法真实体现产出效率。“代码当量”是基于深度代码分析专利算法产生的,它会将代码书写过程中这些“水分”挤掉,而且这套算法的计算机制较为复杂,所以很难造假,可以提供更客观的度量数据。

下面我们举几个例子。我们平台提供了 30 多种图表的展示,图中的一些异常点都可以直接点击进去看更深层的数据,进行下钻分析。用户可以根据不同管理者的需求定制自己的看板。比如高层关注整体的指标,可以看 ROI、整体交付速度、交付效率,以及资源配置是否均衡等。

对于项目经理或团队 Leader,可以关注团队的项目进展等更细的数据。例如下图左边的交付效率中,处于右下角的“后端团队”的交付效率就比较低,那么点击它,就可以进一步下钻寻找原因。那这个原因到底是什么?有可能是某一个地方遇到了卡点,或者是这个需求涉及的产品设计时间比较长,也有可能是需求颗粒度不稳定,所以他交付的需求少,还有可能是遇到了比较大的 Bug 需要较长的时间修复。这些问题都可以从下钻分析中发现。

从质量层面,我们可以看整体项目上线的 bug、事故数量,代码的内建质量,以及bug 的修复工作量。我们也会推荐一些重点关注的函数,比如某些代码的圈复杂度比较高或被引用次数比较多,那么会优先推荐进行一些测试。

以上就是对于思码逸解决方案的一个大致的介绍。接下来,我们来看一个汽车行业的实践案例。

这个案例源自某个车企,他们的研发规模有 200 多人,他们有很大比例的外包人员,所以他们希望可以准确预估整体的工作量,并建立对外包供应商的评估体系。他们原先使用“事故点”、“工时”去评估需求颗粒度,这对于资源需求以及如何调配来讲,缺少客观参考信息。针对这个问题,我们基于代码当量,量化了需求颗粒度,保证需求颗粒度的稳定性,并且估算研发交付的带宽。

另一个问题就是,他们有大量的外包团队,他们对这些团队的管理不是很到位,缺少体系化的度量,无法准确判断外包整体的效率。针对这个问题,我们基于代码当量,帮助他们设计了一个供应商评分体系。

如下图显示,我们可以理解为这就是通过代码当量来计算出的研发产能。图中显示的是代码产能与需求个数的拟合曲线。拟合优度大于 60%的时候,就代表这个团队的工作产能是可预测的。对于不可预测的团队,我们可能要去找原因,为什么这周产出多,下周产出少。如果大家都处于比较稳定的水平时,就可以知道每个团队交付的贷款是多少。

另外一点是从需求的角度进行分析。如下图右侧所示,你可以看到一些稳定性较高的需求,我们可以通过他们来预估各个需求的工作量。根据刚刚的交付贷款和工作量的预测,就可以计算出应该怎么做资源的配比。

下面这张图是我们基于客户的需求设计的评分体系。比如在产能方面,我们不只是看代码当量的产出,还会看代码活跃度;在质量方面会看发版的质量、底层的质量,这样可以一目了然每个供应商的表现如何。

现场Q&A

提问  对于需求工作量的预测,你们是基于什么逻辑来做的?如果要预测需求的工作量,对我们的要求是什么?

回答  这里讲的需求更多是开发的需求。由于每个产品经理拆需求的时候大小不一。所以我们的逻辑是,基于代码当量,来度量一遍历史的需求,能看出每个需求的代码当量是多少,比如这个需求是 1000 当量,另一个是 500 当量。如果需求的当量相对稳定,那就可以预估之后这个需求大概是怎样的量级,它的偏差幅度在 10%-20%以内,是可以评估这个需求大概需要多少工作量。然后结合我们对团队交付能力的评估,比如一个团队一周能交付 500 当量,或 1000 当量的代码,那么这个需求就需要这个团队一周的时间来完成。

如果发现需求拆分的颗粒度大小不一,那么就需要溯源,查找原因,调节拆分需求的逻辑和方法。

可访问 链接 获取 演讲PDF

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

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

相关文章

基于微信小程序的校园生活管理系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言运行环境学生微信端的主要功能有:管理员的主要功能有:具体实现截图视频演示为什么选择我自己的网站自己的小程序(小蔡coding)有保障的售后福利 代码参考源码获取 前言 💗博主介绍:✌全网粉丝1…

Aztec交易架构解析

1. 引言 前序博客有: Aztec的隐私抽象:在尊重EVM合约开发习惯的情况下实现智能合约隐私完全保密的以太坊交易:Aztec网络的隐私架构Aztec.nr:Aztec的隐私智能合约框架——用Noir扩展智能合约功能Account Abstraction账号抽象——…

【@胡锡进】大模型量化分析- 药明康德 603259.SH

我将使用不同的预测方法进行药明康德股票未来3天价格的预测。以下是每种方法的预测方法、详细代码和预测价格(根据提供的数据进行模拟)。 SARIMA模型预测: SARIMA(季节性自回归移动平均)模型适用于具有明显季节性的时…

PHP8中调换数组中的键值和元素值-PHP8知识详解

在php8中使用array_flip()函数可以调换数组中的键值和元素值。 在PHP8中使用array_flip()函数可以调换数组中的键值和元素值&#xff0c;示范代码如下&#xff1a; <?php$stu array("子涵"> 001,"欣怡"> 002,"梓涵">003,"晨曦…

华为OD机试 - 特异性双端队列(Java 2023 B卷 100分)

目录 专栏导读一、题目描述二、输入描述三、输出描述四、Java算法源码五、效果展示1、输入2、输出 华为OD机试 2023B卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08;JAVA&#xff09;真题&#xff08;A卷B卷&#xff09;》。 刷的越多…

TikTok的全球影响:跨文化、跨国界的短视频文化

随着TikTok的崛起&#xff0c;短视频文化正在以前所未有的方式迅速传播&#xff0c;跨足了不同国家和文化的边界。本文将探讨TikTok的全球影响&#xff0c;以及它如何促进了跨文化交流和文化融合。 短视频&#xff1a;跨越语言和文化的沟通工具 TikTok的短视频格式具有独特的跨…

Downie 4下载画质的设置方法,downie 4设置下载清晰度

downie4除了能够下载网页视频外&#xff0c;大家还能根据需要自定义下载文件的分辨率&#xff0c;是Mac电脑必备的下载工具&#xff0c;Downie4下载画质如何设置&#xff1f;下面就来告诉大家具体的设置方法吧。 下载&#xff1a;Downie 4中文直装版 没修改之前&#xff0c;Dow…

SpringBoot 之配置加密

Jasypt库的使用 Jasypt是一个Java简易加密库&#xff0c;用于加密配置文件中的敏感信息&#xff0c;如数据库密码。 Jasypt库与springboot集成&#xff0c;在实际开发中非常方便。 1、引入依赖 <dependency><groupId>com.github.ulisesbocchio</groupId>&…

人工智能AI 全栈体系(四)

第一章 神经网络是如何实现的 除了全连接神经网络外&#xff0c;还有其他形式的神经网络。 此节将讲述神经网络的另一种形式&#xff1a;卷积神经网络。 四、卷积神经网络 首先我们看看全连接神经网络有什么不足。正如其名字一样&#xff0c;全连接神经网络&#xff0c;两个…

STM32F4X UCOSIII 事件集

STM32F4X UCOSIII 事件集 事件的应用场景UCOSIII事件工作机制UCOSIII事件操作函数事件创建函数事件删除函数事件发送函数事件接收函数 UCOSIII事件例程 事件在RTOS中也是一种任务间同步的机制&#xff0c;事件不能传递数据。跟信号量不同的是&#xff0c;事件可以实现一对多&am…

C++11之基础篇

C11 C11简介统一的列表初始化&#xff5b;&#xff5d;初始化std::initializer_list 声明autodecltypenullptr范围for循环 STL中一些变化arrayforward_listunderored_map&#xff0c;underored_set C11简介 在2003年C标准委员会曾经提交了一份技术勘误表(简称TC1)&#xff0c;…

HEC-RAS 1D/2D水动力与水环境模拟教程

详情点击公众号技术科研吧链接&#xff1a;HEC-RAS 1D/2D水动力与水环境模拟教程 前言 水动力与水环境模型的数值模拟是实现水资源规划、环境影响分析、防洪规划以及未来气候变化下预测和分析的主要手段。然而&#xff0c;一方面水动力和水环境模型的使用非常复杂&#xff0c…

买卖股票的最佳时机 IV

买卖股票的最佳时机 IV 力扣链接&#xff1a;188. 买卖股票的最佳时机 IV 题目描述 给你一个整数数组 prices 和一个整数 k &#xff0c;其中 prices[i] 是某支给定的股票在第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你最多可以完成 k 笔交易。也就是说&a…

动态面板案例分析

动态面板模型分析 如果在面板模型中&#xff0c;解释变量包括被解释变量的滞后值&#xff0c;此时则称之为“动态面板模型”&#xff0c;其目的是处理内生性问题。动态面板模型发展分为3个阶段&#xff0c;第1阶段是由Arellano and Bond(1991)提出的差分GMM(difference GMM)&a…

MidJourney | 教你如何做出好看的插画

企业插画主要基于关键词Corporate Flat Illustration&#xff08;企业平面插画&#xff09;构成&#xff0c;再结合常用的设计风格&#xff0c;比如孟菲斯风格&#xff0c;线条艺术&#xff0c;梦幻色调等关键词辅助&#xff0c;然后根据你产品需求&#xff0c;融合插画色彩等组…

文章采集,根据标题全网采集文章

无论您是一名学生、研究人员、内容创作者还是企业家&#xff0c;都需要从互联网上搜集文章来获取有价值的信息。然而&#xff0c;如何高效地进行文章采集并找到符合您需求的内容呢&#xff1f; 在日常生活和工作中&#xff0c;我们经常需要查找和整理各种文章和信息。这可能包括…

基于PHP的短视频SEO矩阵系统源码开发

随着短视频市场的爆发式增长&#xff0c;越来越多的企业开始寻求在短视频领域建立自己的品牌形象&#xff0c;增加用户粘性和获取更多流量。为此&#xff0c;一套高效的短视频SEO矩阵系统源码显得尤为重要。本文将介绍基于PHP语言的短视频SEO矩阵系统源码开发&#xff0c;帮助读…

死锁详细解读

目录 死锁&#xff08;1&#xff09; 一、死锁的定义 二、产生死锁的原因 三、产生死锁的四个必要条件 四、解决死锁的方法 死锁&#xff08;2&#xff09; 第三节 死锁避免 一、死锁避免的概念 二、安全状态与安全序列 三、银行家算法 第四节、死锁的检测与解除 …

怎样找到NPM里面开源库下载地址

场景 最近帮忙找一个开源库地址。这里以vue/language-core为例子。 解决 https://registry.npmmirror.com/vue/language-core/1.8.13这里就是如下格式&#xff1a; https://registry.npmmirror.com/{包名}/{版本号}打开这个页面后&#xff0c;得到开源库下载地址&#xff0c…

【GIT问题解决】---- 在【.gitignore】中添加了忽略文件或文件夹后不生效

1. 出现问题 在已经提交过的 GIT 管理的项目中&#xff0c;在 .gitignore 文件中新增一些忽略的文件或者文件夹&#xff0c;或者直接新建 .gitignore 文件之后&#xff0c;新增的内容不生效。 2. 实例截图 3. 实例描述 lifecycle.js 文件已新增到 .gitignore 文件中&#xf…