到了 2019 年,新飞机还会从天上掉毁,是一件让人不可想象的事情。然而这样的事情,最近接连发生了两起。

去年 10 月,一架波音 737 Max 8 喷气式客机撞向印度尼西亚的爪哇海,造成 189 名乘客和机组人员死亡。调查人员称该飞机的飞行控制软件出现“故障”。

今年 3 月 10 日,也就是上周,埃塞俄比亚航空公司一架波音 737 MAX 8 客机在飞往肯尼亚首都内罗毕途中坠毁。飞机上载有 149 名乘客和 8 名机组人员。两次飞机出事的事故症状非常类似,所以有理由怀疑埃航这架飞机发生了同样的“软件故障”。

在经历了两次空难之后,波音公司承诺,最迟在下个月,针对全球所有波音 737 Max 型飞机进行软件更新。

迟迟修正不了的 BUG

在狮航事故记录和波音发布的分析里,失事前几分钟,由于高攻角传感器(AOA)错误数据传给了飞控系统,导致飞机在正常情况下开始不断下压机头。飞行员在 11 分钟内连续手动拉升 20 余次终告失败,坠海罹难。

这个自动控制下压机头的系统,名叫 MCAS,意为自动纠正失速系统,这是波音 737 MAX 的一种操纵辅助系统。它有几个特点:

  1. 发现失速后,程序只相信主传感器,不与备份传感器核实。(同样的情况空客的飞机则会交给飞行员处理。)
  2. 一旦相信,不通知飞行员,直接操纵机翼。
  3. 飞行员手动操作后,仍旧会每五秒自动执行,让飞行员不得不与飞机较劲。
  4. 程序开关非常隐蔽。

狮航事故后,波音表示正在进行软件修复,以降低风险。

Boeing is working on a software fix, according to industry and government officials, that would likely mitigate risks. On Saturday, the company went further than before in spelling out dangers pilots can face if they misinterpret or respond too slowly to counter automated commands.

从技术角度来说,这是个很容易修正的低级错误。全球几百架运行着的波音 737 MAX 8/9 等着打这个补丁。然而,这个修复被拖延了好几个月,直到埃航事故发生。

延误的原因,其中之一是联邦官员和波音公司安全专家对于需要进行多大改动,有意见分歧。波音公司认为更新这个 BUG 很简单,减少下压幅度就行。而联邦官员认为 189 条人命是大事情,必须大改,确保单个传感器错误信号不会触发 MCAS 系统。加上波音公司和美国政府的低效,这个性命攸关的 BUG,硬生生被拖到四个月后。

但显然因为这次全球停飞事件,波音才很快决定“Make Key Change in 737“,并宣布将在 4 月份交付。

波音 737 MAX 的交付

对于安全要求严格的航空软件,波音要求每个需求都能追溯到相应的代码行。反之亦然。也就是说每行代码发生变化,必须能追溯到软件的设计文档。但是狮航事故后,媒体披露航空公司的管理层和飞行员并不知道飞机上还有这么一套辅助系统。APA 航空发言人 Dennis Tajer 曾表示,MCAS 系统的细节“对我们而言是新信息”,“我们的手册中没有提到它”。而且该航空还没有相应模拟器,他说他从旧的 737 NG 驾驶舱到新的 737 MAX,只在 iPad 上进行一小时训练。

软件外包和成本压缩

波音公司在 2010 年曾发布了1000 份裁员通知,而这些被裁减的人大部分在 IT 部门。该公司当时拥有 158,500 名员工,其中包括 18,000 名工程和技术人员,但他们计划是削减 10,000 个工作岗位。一位前波音软件工程师在 2015 年表示,企业将裁掉 90% 经过了熟练培训的员工,用“外包”来代替他们,从而缩减开支。据《经济时代》报道,2015 这一年,波音公司给印度的外包业务翻了一番,达到了 5 亿美元。

软件外包是一个需要发包方和承包方高度协作的过程。服务周期长、可变因素多,这使得公司在软件外包过程中面临重大风险。787 型飞机计划 70% 使用外包,最终导致了延期三年还交付不了,波音表示:“我们同时在技术、工具和供应链上做了太多改变,超出了我们的管理能力“。

使用 Ada 语言达到 99%

在Ada 文档中的最佳案例上,有一个案例是讲波音 777 上的软件 99% 是用 Ada 完成,其中制动系统完全用 Ada 来完成。Ada 语言最早是针对嵌入式和实时系统设计的,属于 80 年代的编程语言,也是美国军方的专用计算机语言。但之后并没有被普及,甚至可以说 Ada 在“平民层”的推广很糟糕。一个普遍的关于欧洲空间局阿丽亚娜 5 型运载火箭失败的说法是,因为 Ada 语言在编译过程的检查失败导致的。那么有一个疑问是外包企业中,如何搜集到合适数量的精通 Ada 的程序员呢?

从求职网站前雇员对波音公司的评价中,除了抱怨 Ada 不好用,我们还得到了好几条令人惊讶的信息:

  1. 波音公司没有技术面试。
  2. 采购软件可能需要非常长时间。被多人抱怨技术过时,“使用古老的技术,该公司根本不重视升级或现代化工程,因为这些不能直接帮助他们销售飞机”。
  3. 管理层不懂 IT 技术,脱节明显,甚至有的视工程技术人员为累赘。

波音公司具有上百年的历史,具有 7000 多种自主开发软件,有非常多的经验可以供人参考,当然也有很多教训可让人汲取。作为传统企业数字化转型的先驱,它出现的每一个问题都值得我们去思考。

最后,给大家推荐一个前端学习进阶内推交流群685910553(前端资料分享),不管你在地球哪个方位,
不管你参加工作几年都欢迎你的入驻!(群内会定期免费提供一些群主收藏的免费学习书籍资料以及整理好的面试题和答案文档!)

你认为波音在软件开发中犯的致命错误是什么呢,不妨在文章后留言讨论。

如果您对这个文章有任何异议,那么请在文章评论处写上你的评论。

如果您觉得这个文章有意思,那么请分享并转发,或者也可以关注一下表示您对我们文章的认可与鼓励。

愿大家都能在编程这条路,越走越远。

血淋淋的 BUG:波音在软件开发上错在哪里?相关推荐

  1. 血淋淋的BUG:波音在软件开发上错在哪里?

    作者 | Tina 编辑 | Natalie 到了 2019 年,新飞机还会从天上掉毁,是一件让人不可想象的事情.然而这样的事情,最近接连发生了两起. 更多优质内容请关注微信公众号"AI 前 ...

  2. 浅评ChatGPT在软件开发上的辅助能力(附GPT-4对比)

    01 背景 ChatGPT于去年正式公测后,凭借其强大的自然语言处理能力迅速获得业内广泛关注,特别是辅助软件开发上,初步表现出了令人满意的能力,然而正当业内积极探索引入ChatGPT后的新工作模式之时 ...

  3. 国内外软件开发上的差距与分析

    提高自己,迎接好的未来. 在开始任何其他文字之前,首先有必要正视一个根本现实:国内外软件开发的水平是有差距的. 这一结论的最直接证据是每一轮新技术的发起者基本上都是国外的人或公司: 从方法论(CMMI ...

  4. 简谈socket在直播软件开发上的应用

    若大的互联网系统,本着去繁就简单的原则,可以把互联网系统拆分成物理层,数据链路层,网络层,传输层,会话层,表示层,应用层这七大模块.每层模块彼此之间就像积木一样,即不知晓互相的细节,却又层层依赖,组成 ...

  5. 测试第二节重点(什么是需求?测试用例,什么是Bug?软件开发的5个模型,软件测试)

    ******为重点考点 一丶什么是需求? 1.需求的来源 (1)盈利 ①商业app(淘宝.美团.拼多多..)----->用户需求 ②EPR办公软件之类----->甲方提需求 (2)提高工作 ...

  6. 软件开发质量的双保险 — 1.设计验证与软件测试

    提到对软件的质量检查,马上想到的是"软件测试",软件测试的目的主要是检查"开发程序"是否符合"软件设计"的要求,程序中是否有bug等,也就是 ...

  7. 软件开发的那些坑,你跳了没?这篇文章价值千万(一)

    接触过上万名创业者,开发上线过超过70款App,没有比我更适合回答这个问题的了.. 本文对想做好一款App项目的人来说这是一篇价值百万的回答!因为这是我们花了几百万试错成本试出来的经验! 在我们从事a ...

  8. SNF软件开发机器人产品白皮书

    软件开发机器人 产品白皮书 使用说明书 模块名称:软件开发机器人 模块编号:12 项目负责人:王金斗 所属部门:技术中心 文档编制: 编制日期:2018-02-02 文档审核:王金斗 审核日期: 文档 ...

  9. 敏捷软件开发和精益看板管理

    引自 blog.sina.com.cn/s/blog_493a84550100ax35.html 最近看了InfoQ上关于精益看板在软件开发上的一些实践和应用的文章,敏捷软件开发借鉴了很多TPS精益生 ...

最新文章

  1. minicom的使用,发送AT指令
  2. 百度广告点击软件_网络营销百问百答之64,如何提升企业百度广告点击率
  3. 《搜索算法——DFS、BFS、回溯》
  4. sql出现列名无效的原因_学会SQL并不难,小白学习记录之二(简单查询)
  5. 七.激光SLAM框架学习之A-LOAM框架---速腾Robosense-16线雷达室内建图
  6. 每日一门之for循环的执行顺序
  7. 【优化求解】基于matlab模拟退火算法求解函数极值问题【含Matlab源码 1203期】
  8. 印度电影,又一次让我们不得不服
  9. PYTHON利用REMOVEBG库实现抠图
  10. 播布客教学视频_C学习笔记_7_100内最大的素数(97)
  11. SOEM方案 STM32H743 EtherCAT主站 基于STM32H743芯片和SOEM的EtherCAT主站源码
  12. oauth2单点登录总结
  13. ireport怎么实现总计和小计?
  14. 【22.05.14】native thread exiting without having called DetachCurrentThread
  15. hdu 2576 Queen Collisions
  16. 直播平台搭建中使用Nginx推流多个直播平台解决方案
  17. 懒惰(Laziness)、急躁(Impatience)和傲慢(Hubris)
  18. 曹则贤:量子力学从来不是什么革命,而是经典物理学的自然延续
  19. python维度互换_python – 有效地改变scipy.spare.csr_matrix的维度[复制]
  20. 快@你的好兄弟好姐妹来内卷进程状态

热门文章

  1. Python 文件操作
  2. Cadence软件输出PDF原理图时页码重复或乱序问题
  3. 每日牛客网-2022/1/4 错题解析
  4. 语音验证码接口对接DEMO示例PHP语言
  5. 量化投资分析:定量分析项目和交易分析指标
  6. 微信小程序关键字搜索
  7. 测试欢迎使用CSDN-markdown编辑器
  8. MSM8916 海信M9模块学习记录一:编译及烧录android5.1源码
  9. paddle 基础函数 cosine_decay
  10. Ubuntu禁用触摸板