如何降低电动汽车软件的开发成本和风险?
大多数的汽车制造商无法从销售电动汽车(EV)中获得利润,但计划快速进入市场的电动汽车初创公司是无法承担这样的损失的。
由于飙升的电池价格、高昂的组件成本和低迷的销量削弱了盈利能力,电动汽车初创公司必须将视线转到软件开发,从预算、进度和人力投入水平等方面提高效率。初创公司要想找到解决以上问题的途径,就必须要了解电动汽车软件开发面临的主要挑战。
正如本文所阐述的观点,降低成本并不一定意味着需要提高车辆售价或裁员,你可以在高度复杂且受监管的软件环境中找到更加智能的解决方案。
电动汽车软件开发的范围
每辆电动汽车都是一个车载软件平台。因此,设计、编写和验证代码是提高开发效率的第一步。汽车部件可以被分解为不同的软件领域,以帮助您了解其对人力投入、预算和进度的影响。
这些电动汽车的软件领域包括:
- 底盘(例如制动和悬架)——由于这个领域历史悠久且存在多个供应商,电动汽车初创公司必须考虑为新功能改装现有技术,如高级驾驶辅助系统,简称ADAS;
- 动力系统(例如电机、逆变器)——需要开发大量的新软件,来管理电气化组件和自动驾驶系统;
- 电池——电池管理和保护,以及安全运行,是对软件团队的关键要求;
- 自动驾驶系统——自动驾驶汽车需要与现有底盘和动力总成系统进行复杂的集成。
- 连接——车内互联网、无线(OTA)更新、车载信息娱乐系统(IVI)等将给软件开发带来关于可靠性和安全性的巨大挑战。
对于电动汽车初创公司来说,这些领域更多地倾向于新的、前沿的软件组件,且对功能安全和安全性有很高的要求。与传统的汽车制造商不同,初创公司必须从头开始构建这些组件,同时还要应对投资者信心、开发人员招募和监管合规等商业现实方面的挑战。
电动汽车初创公司应该关注的三大挑战
除了上市时间和供应链问题外,以下是影响电动汽车软件开发的三大挑战,以及开发团队应该如何解决这些问题。
- 通过标准合规来保护消费者和业务
有些开发人员可能觉得遵守汽车行业的安全和防范标准会阻碍创新和发布的速度。但现实的情况是,标准和指南提供了一个预定义的框架,能够保护业务不出现严重的故障或问题。
有三个常见的汽车标准:
ISO 26262
ISO 26262标准规定了功能安全流程,以减少对车辆乘员的危害,它基于一个风险分类系统,被称为汽车安全完整性级别(ASIL),并通过验证开发制品库来证明合规性。
MISRA
由制造商、部件供应商和工程咨询公司开发和维护,MISRA提供C和C++编码指南,帮助确保代码安全、可靠和可移植。
CERT
CERT是由软件开发和软件安全专业人员社区共同开发的C、C++和Java指南,帮助人们确定违反特定规则或建议可能造成的后果。
对于电动汽车初创企业而言,标准合规是一个棘手的工作:规划、测试和报告必须从一开始就纳入开发流程中。如果忽略了合规性或是流程后期才考它,发布时间就会越来越紧凑,并且在推出产品前要给监管机构提供证据,以证明产品合规。这将威胁到原型车的生产和交付给消费者的时间。
- 尽量减少通货膨胀的影响
通胀压力正在打乱汽车供应链中已有的定价模式,并限制消费者的购买力。电动汽车初创公司不能等待有利的市场条件,但在其软件团队中可以寻找机会,创建具有成本效益且可持续的实践。
初创公司的好处在于,开发人员想要测试和采用新工具来简化工作的时候不必花时间征求许可。他们积极地研究任何工具和技术,只要能够帮助他们交付稳定且合规的代码。开发团队的领导者可以通过梳理以下内容来提高这种敏捷性:
- 所有当前开发流程中的应用程序和工具
- 能减少手动操作并提高工作效率的新工具
- 每种工具的所有权和负责人
- 谁能访问它们以及访问频率
- 每个用户/团队的每个工具的成本
- 工具和流程中的冗余 许可条款和续订日期
- 采用有效的自动化技术
虽然大多数的科技创业公司都倾向于雇佣那些自发解决问题的人(通常还要身兼数职),但电动汽车软件团队不能把风险控制的责任交给运气,这个赌注太高了。所以,您需要通过静态分析工具(如Helix QAC和Klocwork)自动执行复杂而繁琐的任务,这样可以降低风险并帮助开发人员专注于交付价值。
考虑到标准和安全合规要求的严格性,以下是电动汽车初创公司可以利用静态分析工具等自动化技术的领域:
- 编码标准的合规性——识别是否违反了安全和防范标准中的规则和准则;
- 代码覆盖率的合规性——满足ISO 26262代码覆盖率要求,如语句、分支和MC/DC;
- 问题优先级排名——根据风险对问题进行排名,避免浪费时间或让开发人员产生“问题疲劳”。
使用静态分析工具降低电动汽车初创公司的创新成本
是时候减少浪费了。随着通货膨胀造成的供应链波动,以及市场监管的壁垒越来越高,电动汽车软件开发团队现在必须优化开支,并建立灵活和可适应的工具和流程,以便应对未来的不确定性和变化。
Perforce的静态代码分析和SAST工具让电动汽车软件开发团队能够轻松提升开发的效率。这些工具使用精准确切的静态代码分析功能来帮助您确保代码在质量、可靠性、安全性和防范性方面持续符合相关标准和要求。从概念验证到移植到新车型,Helix QAC和Klocwork帮助您高速开发,并降低市场风险。
文章来源:https://bit.ly/3M3ovKR
相关文章:
如何降低电动汽车软件的开发成本和风险?
大多数的汽车制造商无法从销售电动汽车(EV)中获得利润,但计划快速进入市场的电动汽车初创公司是无法承担这样的损失的。 由于飙升的电池价格、高昂的组件成本和低迷的销量削弱了盈利能力,电动汽车初创公司必须将视线转到软件开发…...
使用pytest和allure框架实现自动化测试报告优化
目录 -x出现一条测试用例失败就退出测试 生成测试报告json pytest: 需要安装pytest和pytest-html(生成html测试报告) pip install pytest 和 pip install pytest-html 命名规则 Pytest单元测试中的类名和方法名必须是以test开头,执行中只能找到test开头…...
chatGPT免费站点分享
下面的应该都能用,试试吧... ChatGPT是一种人工智能聊天机器人,能够生成虚拟语言和交互回复。使用ChatGPT,您可以与机器人进行真实的交互,让机器人根据您提出的问题或请求来生成回复。但是,在使用ChatGPT时࿰…...
【计算机网络】已知一个/27网络中有一个地址是 167.199.170.82,问这个网络的网络掩码,网络前缀长度和网络后缀长度是多少?网络前缀是多少?
目录 题: 1. 网络掩码 2.网络前缀长度 3.网络前缀 4.网络后缀长度 题: 已知一个/27网络中有一个地址是 167.199.170.82, 问这个网络的网络掩码,网络前缀长度和网络后缀长度是多少?网络前缀是多少? 1.…...
Java8 - Stream
介绍 Java8中有两大最为重要的改变。第一个是 Lambda 表达式; 另外一个则是 Stream API(java.util.stream.*)。Stream是 Java8中处理集合的关键抽象概念,它可以指定你希望对集合进行的操作,可以执行非常复杂的查找、过滤和映射数据等操作。使用 Stream …...
什么样的冷链保温箱,既环保又实用?
冷链物流运输已经应用在了很多行业中,作为冷链物流运输中的重要设备——冷链保温箱,起到了举足轻重的作用。如果选择不当,选到了劣质产品,尤其是化学行业或者食品行业,就有可能造成试剂失效或者是影响粮食食品安全问题…...
Eclipse的介绍与安装
Eclipse简介 Eclipse 是一个开放源代码的,基于 Java 的可扩展开发平台。Eclipse官方版是一个集成开发环境(IDE),可以通过安装不同的插件实现对其它计算机语言编辑开发,如C、Php、Python等等。 Eclipse的下载 下载时需要访问网址 http://…...
<IBM AIX> 《AIX中HA的网卡IP确认方法》
《HA网卡确认方法》 1 HA IP地址类型2HA IP地址设置原则3 HA网卡日常查看方法3.1 查看hosts文件3.2 查看网卡和IP 4 通过命令方式直接查看5 直接查看HA配置4 HA网卡SMIT查看方法(暂不完整)4.1 根据hosts文件确认IP对应的别名4.2 根据serviceIP确认Persis…...
AMB300系列母线槽红外测温解决方案某锂电厂房项目案例分享
安科瑞 耿敏花 一、 行业背景 近年来,在国家政策引导与技术革新驱动的双重作用下,锂电产业保持快速增长态势,产业规模持续扩大,同时新能源产业工厂锂电池生产线对于电的依赖性很高,因而对供电设备的可靠性提出…...
go语言学习——4
文章目录 Map Map map是一种特殊的数据结构:一种元素对pair的无序集合,pair的一个元素是key,对应一个value,这种结构也称为“关联数组或字典”引用类型 map声明 var map1 map[keytype] valuetype var map1 map[string] intmap可以…...
vulnhub-RAVEN:2(MYSQL-UDF提权,手工提权/工具自动提权)
镜像下载:Raven: 2 ~ VulnHub 实验环境:kali:192.168.78.128 vulnhub镜像:192.168.78.133 1、kali查看本地ip地址,以便使用nmap扫描ip段存活主机 2、nmap扫描IP段,发现靶机的IP地址为192.168.78.133 4、访问…...
如何完整地掌握一个机器学习模型
如何完整地掌握一个机器学习模型 要全面地学习、掌握一个机器学习模型,可以遵循以下步骤: 基础理论学习:了解该模型的背后数学原理和推导过程,包括假设、损失函数、优化方法等。 学习算法实现:通过查阅论文、教程或…...
Nevron Open Vision for .NET 2022.3 Crack
Nevron Open Vision for .NET 适用于 Blazor、WPF、WinForms 和 Xamarin.Mac 的领先用户界面组件 Nevron Open Vision for .NET 是一套高级 UI 组件,可帮助您从单个代码库开发功能丰富的 Web (Blazor WebAssembly) 和桌面 (WinFor…...
【Linux】冯诺依曼体系结构以及操作系统的初步认知
🏖️作者:malloc不出对象 ⛺专栏:Linux的学习之路 👦个人简介:一名双非本科院校大二在读的科班编程菜鸟,努力编程只为赶上各位大佬的步伐🙈🙈 目录 前言一、冯诺依曼体系结构二、操…...
盖雅工场重磅发布「劳动力账户」,助力企业实现全面工时成本管理
2023年5月10日,亚太地区领先的劳动力管理云服务商盖雅工场宣布,在原有的智能排班和实时考勤系统基础之上,正式推出全新模块「劳动力账户」,通过为企业里的每一位员工建立劳动力账户,实现工时与成本的全面管控ÿ…...
数据结构与算法基础(青岛大学-王卓)(2)
第二弹火爆来袭中 这波是单链表的内容整理,废话不多说,上小龙虾呀(又到了龙虾季节了,哎,口水直流了~~) beautiful的分割线 文章目录 第二弹火爆来袭中这波是单链表的内容整理,废话不多说,上小龙虾呀(又到了…...
水产亚硝酸盐偏高解决办法,饮用水亚硝酸盐超标
使用常规的离子交换树脂处理含硫酸盐水中的硝酸盐是困难的。因为树脂几乎交换了水中的所有的硫酸盐后,才与水中的硝酸盐交换。也就是说,硫酸盐的存在会降低树脂对硝酸盐的去除能力。采用Tulsimer A-62MP除硝酸盐树脂优先交换硝酸盐,对硝酸盐的…...
linux 设备树详解
设备树 描述设备树的文件叫做 DTS(Device Tree Source),这个 DTS 文件采用树形结构描述板级设备,也就是开发板上的设备信息,比如CPU 数量、 内存基地址、IIC 接口上接了哪些设备、SPI 接口上接了哪些设备等等。 树的主干就是系统总线&#x…...
STM32 学习笔记_7 定时器中断:输出比较
输出比较 电机相关比较重要。 OC Output Compare(IC 是输入捕获,CC代指这两个单元),用于输出一定频率和占空比的PWM波形。 右下角四个就是CCR。只有通用计时器和高级计时器有,共用一个cnt计数器,高级计数…...
HTML购物车示例(勾选、删除、添加和结算功能)
以下是一个简单的HTML购物车示例,包含勾选、删除、添加和结算功能。结算功能使用PHP实现,可以获取选中商品的ID。 以下是一个简单的HTML购物车示例,包含勾选、删除、添加和结算功能。结算功能使用PHP实现,可以获取选中商品的ID以下…...
从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)
设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile,新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...
【JavaWeb】Docker项目部署
引言 之前学习了Linux操作系统的常见命令,在Linux上安装软件,以及如何在Linux上部署一个单体项目,大多数同学都会有相同的感受,那就是麻烦。 核心体现在三点: 命令太多了,记不住 软件安装包名字复杂&…...
C#中的CLR属性、依赖属性与附加属性
CLR属性的主要特征 封装性: 隐藏字段的实现细节 提供对字段的受控访问 访问控制: 可单独设置get/set访问器的可见性 可创建只读或只写属性 计算属性: 可以在getter中执行计算逻辑 不需要直接对应一个字段 验证逻辑: 可以…...
【前端异常】JavaScript错误处理:分析 Uncaught (in promise) error
在前端开发中,JavaScript 异常是不可避免的。随着现代前端应用越来越多地使用异步操作(如 Promise、async/await 等),开发者常常会遇到 Uncaught (in promise) error 错误。这个错误是由于未正确处理 Promise 的拒绝(r…...
【C++】纯虚函数类外可以写实现吗?
1. 答案 先说答案,可以。 2.代码测试 .h头文件 #include <iostream> #include <string>// 抽象基类 class AbstractBase { public:AbstractBase() default;virtual ~AbstractBase() default; // 默认析构函数public:virtual int PureVirtualFunct…...
动态规划-1035.不相交的线-力扣(LeetCode)
一、题目解析 光看题目要求和例图,感觉这题好麻烦,直线不能相交啊,每个数字只属于一条连线啊等等,但我们结合题目所给的信息和例图的内容,这不就是最长公共子序列吗?,我们把最长公共子序列连线起…...
在Spring Boot中集成RabbitMQ的完整指南
前言 在现代微服务架构中,消息队列(Message Queue)是实现异步通信、解耦系统组件的重要工具。RabbitMQ 是一个流行的消息中间件,支持多种消息协议,具有高可靠性和可扩展性。 本博客将详细介绍如何在 Spring Boot 项目…...
day51 python CBAM注意力
目录 一、CBAM 模块简介 二、CBAM 模块的实现 (一)通道注意力模块 (二)空间注意力模块 (三)CBAM 模块的组合 三、CBAM 模块的特性 四、CBAM 模块在 CNN 中的应用 一、CBAM 模块简介 在之前的探索中…...
【JavaEE】万字详解HTTP协议
HTTP是什么?-----互联网的“快递小哥” 想象我们正在网上购物:打开淘宝APP,搜索“蓝牙耳机”,点击商品图片,然后下单付款。这一系列操作背后,其实有一个看不见的“快递小哥”在帮我们传递信息,…...
【Unity】R3 CSharp 响应式编程 - 使用篇(二)
一、通用的事件监听用法 using System;using R3;using UnityEngine;namespace Aladdin.Standard.Observable.Common{public class CommonObservable : MonoBehaviour{// 默认会调用1次public SerializableReactiveProperty<int> serializableReactiveProperty;…...
