当前位置: 首页 > news >正文

航展畅想:从F35机载软件研发来看汽车车载软件研发

两款经典战机的机载软件

在这里插入图片描述

F-22和F-35战斗机的研制分别始于1980年代和1990年代末,F-22项目在1981年启动,主要由洛克希德·马丁(Lockheed Martin)和波音公司(Boeing)合作开发,以满足美军“先进战术战斗机” (ATF) 项目的需求。F-35的研发则开始于1996年,由洛克希德·马丁领导,同样与诺斯罗普·格鲁曼和BAE系统公司合作,以满足美军的“联合攻击战斗机” (JSF) 项目的需求 。

F-35的代码量比F-22大得多,F-35的软件代码行数高达2500万,而F-22仅为约200万。这种差距的原因主要是由于两机型的任务和技术需求不同。F-22主要设计为制空战斗机,注重空对空作战,而F-35是多用途战斗机,不仅具备空战能力,还需要执行空对地攻击、电子战和情报侦察任务,这些任务需要更复杂的传感器融合和信息处理能力 。

关于编程语言的选择,虽然F-22的核心代码使用了Ada语言,但F-35项目团队选择了C++。这部分是因为C++在商业和军事软件开发中变得更为普及,具有更广泛的支持和开发资源。而且C++相比Ada有更好的灵活性,可以更好地支持现代计算平台和硬件接口,符合F-35复杂任务系统的需求。因此,为了满足多任务环境下的模块化和扩展性需求,F-35的软件开发转向了C++而非延续F-22的Ada代码 。

在这里插入图片描述

F35战斗机机载软件的几个重大问题

在F-35的研发过程中,出现了几个重大软件问题,影响了其整体性能和交付进度。以下是一些主要问题:

  1. 武器系统软件问题:在一些早期的软件更新中,增加新的武器功能时,导致之前已经正常运行的武器系统出现故障。例如,在为F-35增加其他武器系统的功能后,AIM-120先进中程空空导弹(AMRAAM)的相关功能出现问题  。
  2. 持续的软件更新失败:F-35采用了“持续能力开发与交付”(C2D2)模型,计划每六个月交付增量的软件更新。然而,这一做法证明是不可持续的,常常引入稳定性问题,甚至影响到其他系统的正常运行。因此,更新的周期被延长至每年一次 。
  3. 测试不足:由于资金和资源的限制,开发团队在软件部署前未能进行充分的测试、回归测试和数据分析,这导致一些软件缺陷和操作问题未能及时发现,通常是在实际使用中由作战单位发现 。
  4. 技术刷新延迟:另一个重大问题是F-35的技术刷新(TR-3)延迟,原计划的更新被推迟了超过一年,这直接影响了飞机的交付进度 。

这些软件问题反映了在将高度依赖软件的功能集成到战斗机中的复杂性。洛克希德·马丁努力解决了这些问题,致力于稳定软件和提高机队的可用性。

给汽车车载软件研发的启示

上面所讲述的F-35的开发过程中遇到的重大软件问题为国内汽车车载软件研发提供了一些重要的启示:

  1. 持续更新与回归测试的重要性

F-35采用的“持续能力开发与交付”(C2D2)模式,尽管初衷是希望通过定期小规模的软件更新不断优化系统,但这一方式未能有效避免新版本引入的稳定性问题。对于国内汽车车载软件而言,类似的情况同样适用。汽车软件,尤其是车载娱乐、自动驾驶和安全系统的更新(O TA),若过于频繁或未进行充分的回归测试,可能会导致新功能与已有功能的冲突,从而影响车辆的可靠性。因此,在进行软件更新时,必须加强回归测试,确保新功能不会破坏现有系统的稳定性 。

  1. 资金与资源的保障

F-35在软件开发过程中由于资金和资源不足,导致了许多测试未能按计划完成,进而影响了软件质量和交付进度。对于车载软件研发,尤其是涉及到智能驾驶、ADAS(高级驾驶辅助系统)等复杂功能时,充足的资金和资源投入至关重要。开发团队需要在前期阶段就确保有足够的时间和资源进行测试,尤其是对安全性和可靠性至关重要的系统 。

  1. 系统的模块化与可维护性

F-35软件中的一些问题是由新增的功能与已有功能的冲突引起的。这提醒我们,在汽车车载软件的设计时,模块化和高可维护性非常重要。如果一个新的软件模块的加入可能影响到其他系统的稳定性,那么必须设计合理的接口和清晰的模块划分,以减少不同模块间的相互干扰和兼容性问题 。

  1. 确保“原始设计”的高质量

F-35软件在设计阶段未能做到完全的完善,导致后期的更新不断修复问题。这表明,在初始版本发布时,软件的质量和稳定性必须尽可能接近最终需求。对于汽车车载系统,特别是在自动驾驶领域以及功能安全相关软件,过于依赖后续的修复和更新可能会带来严重安全隐患。因此,初期的开发阶段要确保软件系统设计的全面性和严谨性,减少后期修复的负担 。

  1. 跨部门协作与整体系统测试

F-35的开发也暴露了在不同部门和技术团队之间协调不力的问题,尤其是在测试阶段。类似的情况在汽车行业中也常会发生,特别是在涉及多个硬件厂商和软件开发团队的情况下。良好的跨部门协作、全面的系统集成测试对于车载软件的成功至关重要,确保各个模块之间的兼容性和整体系统的稳定运行 。

总结来说,F-35在软件开发中的经验和教训为国内汽车车载软件的研发提供了很多有价值的启示,尤其是在测试、资源分配、模块化设计以及初期高质量设计方面,国内厂商可以从中吸取宝贵经验,避免类似问题的发生。

相关文章:

航展畅想:从F35机载软件研发来看汽车车载软件研发

两款经典战机的机载软件 F-22和F-35战斗机的研制分别始于1980年代和1990年代末,F-22项目在1981年启动,主要由洛克希德马丁(Lockheed Martin)和波音公司(Boeing)合作开发,以满足美军“先进战术战…...

用Dify搭建AI知识库

Dify 可以上传各种格式文档和抓取网页数据训练自已的知识库 一 安装 1 Docker安装 我基于Docker来安装的,所以本机先装Docker Desktop, Docker 安装方法在这里 2 Dify 安装 git clone https://github.com/langgenius/dify.git cd dify/docker copy .env.exampl…...

架构师:如何提高web网站的请求并发响应量?

文章目录 一、提出问题二、相关概念三、如何提高网站请求响应能力?四、负载均衡有那些方式?五、常用微服务架构图及推荐书籍 一、提出问题 今天,突然想到一个问题,双十一,那些电商网站的并发量是多大? 简…...

图论基础--孤岛系列

孤岛系列有: 孤岛总面积求解(用了dfs、bfs两种方法)和沉没孤岛(这里只写了dfs一种) 简单解释一下: 题目中孤岛的定义是与边缘没有任何接触的(也就是不和二维数组的最外圈连接)&…...

Docker学习—Docker的安装与使用

Docker安装 1.卸载旧版 首先如果系统中已经存在旧的Docker,则先卸载: yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine2.配置Docker的yum库 首先…...

HC-SR04超声波传感器详解(STM32)

HC-SR04是一款广泛使用的超声波传感器,它通过发射和接收超声波来测量距离。本文将详细介绍HC-SR04的工作原理、引脚描述、STM32的接线方式以及如何通过STM32控制HC-SR04来测量距离。 一、HC-SR04传感器介绍 HC-SR04超声波传感器的主要参数如下: 工作电…...

如何在BSV区块链上实现可验证AI

​​发表时间:2024年10月2日 nChain的顶尖专家们已经找到并成功测试了一种方法:通过区块链技术来验证AI(人工智能)系统的输出结果。这种方法可以确保AI模型既按照规范运行,避免严重错误,遵守诸如公平、透明…...

Python快速安装软件包到环境的方案

问题描述 直接在终端输入,显示安装numpy包要20分钟, pip install numpyxxx.whl解决方案 直接搜索pip install 后在终端显示的.whl文件,在pypi.org官网下载, 之后在终端进入下载目录,从.whl文件安装软件包即可 pip …...

npm入门教程17:准备发布的npm包

一、环境准备 安装Node.js和npm: 确保你的计算机上已安装Node.js和npm。可以通过运行node -v和npm -v命令来检查它们的版本。如果没有安装,可以从Node.js官方网站下载并安装最新版本。 注册npm账号: 访问npm官网,点击“Sign Up”…...

协程1 --- 发展历史

文章目录 一个编译器问题背景解决 协程为什么一开始没发展成一等公民?自顶向下、逐步求精(Top-down, stepwise refinement)线程的出现 协程的雄起IO密集型同步语义实现异步发展史 线程和协程的关系并发性调度方式资源占用 一个编译器问题 协…...

VBA10-处理Excel的动态数据区域

end获取数据边界 1、基本语法 1-1、示例: 2、配合row和column使用 2-1、示例1 2-2、示例2 此时,不管这个有数值的区域,怎么增加边界,对应的统计数据也会跟着变的!...

【git】使用记录

一、安装 参考:Git2.45.2下载安装记录(windows 11)_win11安装git-CSDN博客...

代码随想录算法训练营第三十八天|Day38 动态规划

322. 零钱兑换 视频讲解:https://www.bilibili.com/video/BV14K411R7yv https://programmercarl.com/0322.%E9%9B%B6%E9%92%B1%E5%85%91%E6%8D%A2.html 思路 #define min(a, b) ((a) > (b) ? (b) : (a)) int coinChange(int* coins, int coinsSize, int amount…...

使用C++和libcurl库实现HTTP请求(GET、POST、文件上传)

在现代软件开发中,与外部API服务进行通信已成为常见需求。本文将展示如何使用C和libcurl库实现基本的HTTP请求,包括GET请求、POST请求(带JSON数据)以及包含文件上传的POST请求。 准备工作 首先,需要确保已安装libcur…...

makefile例子

$指代当前目标&#xff0c;就是Make命令当前构建的那个目标。比如&#xff0c;make foo的 $ 就指代foo。 $< 指代第一个前置条件。比如&#xff0c;规则为 t: p1 p2&#xff0c;那么$< 就指代p1。 $? 指代比目标更新的所有前置条件&#xff0c;之间以空格分隔。比如&a…...

用环形数组实现队列(多种高级方法,由浅入深)

同普通数组实现的队列相比&#xff0c;普通数组的头结点和尾节点都是固定的&#xff0c;在进行移除的时候如果移除了一个节点&#xff0c;后面所有节点都需要进行移除操作&#xff0c;需要的时间复杂度更高 在环形数组中&#xff0c;确定了头尾指针的环形数组很好地解决了这一…...

springboot框架使用RabbitMQ举例代码

以前分享过一个理论有兴趣的小伙伴可以看下 https://blog.csdn.net/Drug_/article/details/138164180 不多说 还是直接上代码 第一步&#xff1a;引入依赖 可以不指定版本 <!-- amqp --><dependency><groupId>org.springframework.boot</groupId…...

Java实现一个延时队列

文章目录 前言正文一、基本概念1.1 延时队列的特点1.2 常见的实现方式 二、Java原生的内存型延时队列2.1 定义延时元素DelayedElement2.2 定义延时队列管理器DelayedQueueManager2.3 消费元素2.4 调试2.5 调试结果2.6 精髓之 DelayQueue.poll() 三、基于Redisson的延时队列3.1 …...

为什么说vue是双向数据流

Vue.js 被称为 双向数据绑定&#xff08;two-way data binding&#xff09;&#xff0c;是因为它支持数据在 视图&#xff08;View&#xff09; 和 模型&#xff08;Model&#xff09; 之间双向流动。这意味着&#xff0c;当 数据变化 时&#xff0c;视图会自动更新&#xff1b…...

创造属于你的 Claude Prompt 和个性化 SVG 卡片|对李继刚老师提示词的浅浅解析与总结

❤️ 如果你也关注大模型与 AI 的发展现状&#xff0c;且对大模型应用开发非常感兴趣&#xff0c;我会快速跟你分享最新的感兴趣的 AI 应用和热点信息&#xff0c;也会不定期分享自己的想法和开源实例&#xff0c;欢迎关注我哦&#xff01; &#x1f966; 微信公众号&#xff…...

Appium+python自动化(十六)- ADB命令

简介 Android 调试桥(adb)是多种用途的工具&#xff0c;该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具&#xff0c;其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利&#xff0c;如安装和调试…...

Spring AI 入门:Java 开发者的生成式 AI 实践之路

一、Spring AI 简介 在人工智能技术快速迭代的今天&#xff0c;Spring AI 作为 Spring 生态系统的新生力量&#xff0c;正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务&#xff08;如 OpenAI、Anthropic&#xff09;的无缝对接&…...

《基于Apache Flink的流处理》笔记

思维导图 1-3 章 4-7章 8-11 章 参考资料 源码&#xff1a; https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...

k8s业务程序联调工具-KtConnect

概述 原理 工具作用是建立了一个从本地到集群的单向VPN&#xff0c;根据VPN原理&#xff0c;打通两个内网必然需要借助一个公共中继节点&#xff0c;ktconnect工具巧妙的利用k8s原生的portforward能力&#xff0c;简化了建立连接的过程&#xff0c;apiserver间接起到了中继节…...

Java面试专项一-准备篇

一、企业简历筛选规则 一般企业的简历筛选流程&#xff1a;首先由HR先筛选一部分简历后&#xff0c;在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如&#xff1a;Boss直聘&#xff08;招聘方平台&#xff09; 直接按照条件进行筛选 例如&#xff1a…...

AI书签管理工具开发全记录(十九):嵌入资源处理

1.前言 &#x1f4dd; 在上一篇文章中&#xff0c;我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源&#xff0c;方便后续将资源打包到一个可执行文件中。 2.embed介绍 &#x1f3af; Go 1.16 引入了革命性的 embed 包&#xff0c;彻底改变了静态资源管理的…...

10-Oracle 23 ai Vector Search 概述和参数

一、Oracle AI Vector Search 概述 企业和个人都在尝试各种AI&#xff0c;使用客户端或是内部自己搭建集成大模型的终端&#xff0c;加速与大型语言模型&#xff08;LLM&#xff09;的结合&#xff0c;同时使用检索增强生成&#xff08;Retrieval Augmented Generation &#…...

三分算法与DeepSeek辅助证明是单峰函数

前置 单峰函数有唯一的最大值&#xff0c;最大值左侧的数值严格单调递增&#xff0c;最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值&#xff0c;最小值左侧的数值严格单调递减&#xff0c;最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…...

日常一水C

多态 言简意赅&#xff1a;就是一个对象面对同一事件时做出的不同反应 而之前的继承中说过&#xff0c;当子类和父类的函数名相同时&#xff0c;会隐藏父类的同名函数转而调用子类的同名函数&#xff0c;如果要调用父类的同名函数&#xff0c;那么就需要对父类进行引用&#…...

Linux 下 DMA 内存映射浅析

序 系统 I/O 设备驱动程序通常调用其特定子系统的接口为 DMA 分配内存&#xff0c;但最终会调到 DMA 子系统的dma_alloc_coherent()/dma_alloc_attrs() 等接口。 关于 dma_alloc_coherent 接口详细的代码讲解、调用流程&#xff0c;可以参考这篇文章&#xff0c;我觉得写的非常…...