专栏名称: CSDN
CSDN精彩内容每日推荐。我们关注IT产品研发背后的那些人、技术和故事。
目录
相关文章推荐
新浪科技  ·  【#胡润中国500强TOP10公布# ... ·  5 小时前  
新浪科技  ·  【#DeepSeek推高低成本大模型需求#, ... ·  5 小时前  
新浪科技  ·  【#多方恶意申请DeepSeek商标被驳回# ... ·  昨天  
51好读  ›  专栏  ›  CSDN

史上最严重的计算机bug:火星气候探测器快速意外的解体

CSDN  · 公众号  · 科技媒体  · 2017-09-20 11:25

主要观点总结

本文讲述了史上最严重的计算机bug之一的火星气候探测器意外解体事件,从宇宙辐射、软件、人为失误等方面分析了bug产生的原因,并给出了减少或避免bug产生的建议。文章还提到了Bugsnag自动监测应用程序中的错误并提醒用户的作用。

关键观点总结

关键观点1: 火星气候探测器故事的背景

探测器计划成为火星的第一颗气象卫星,监测火星大气层并传送照片回地球。但任务失败,探测器在火星大气层中燃烧消失。

关键观点2: 探测器失败的原因

失败原因包括宇宙辐射、软件和机械bug以及人为错误。宇宙辐射和AMD机动导致飞船偏离预定轨道,软件bug和人为错误也对此有影响。

关键观点3: 软件bug的具体案例

地面控制软件中的bug显示了每一个AMD机动的力量,使用了英制单位而非预期的公制单位,导致位置偏差。

关键观点4: 人为错误的案例

质量保证人员在外部软件中没有发现英制单位的使用,同时导航人员同时控制三个任务可能分散了他们对轨道差异的注意力。

关键观点5: 避免类似错误的建议

包括更好地培训导航人员,将任务的不同方面授权给具体的工作人员,审计所有使用英制单位的软件等。

关键观点6: Bugsnag的作用

Bugsnag自动监测应用程序中的有害错误并提醒用户,提高软件的稳定性可见性。


正文

点击上方“ CSDN ”,选择“置顶公众号”

关键时刻,第一时间送达!


作者丨 Jamie Lynch

译者 无阻我飞扬


摘要: 文章讲述了史上最严重的计算机bug: 火星气候探测器快速意外的解体,从宇宙辐射、软件、人为失误等方面详细分析了bug产生的原因,文章最后给出了减少或避免bug产生的建议,以下是译文:


史上最严重的计算机bug是为了纪念七十年前第一个计算机bug的发现的一个迷你系列。尽管这些故事比工程师在他们职业生涯中将遇到的软件bug更为极端,但它们值得深入研究,以便为软件开发和部署提供一些借鉴。这些计算机bug给那些经历过它们的人们留下了重大的影响,我们希望它们能给我们自己的工作和项目提供宝贵的经验。在这个系列中会读到其它计算机bug: Ariane(阿里亚娜欧洲空间组织运载火箭) 5灾难。


火星气候探测器


1999年9月23日,星期四,太平洋时间上午1点41分,为了避免受火星上层大气层暂时下降的影响,火星气候探测器自行装载着太阳能电池组。9分钟后,飞船重新定位自身使用的反应控制系统,使主机逆行到火星。上午2点01分,发动机靠主燃料点火,开始了在火星大气层上一个40天的复杂的减速动作,节约宝贵的火箭材料。上午2点06分,探测器穿过火星,来自地球的无线电通讯受阻,那是一个扣人心弦的二十一分钟。这颗卫星一旦成功进入轨道,几年内就会把照片传送到地球。


但不幸的是,这并没有发生,因为飞船不在正确的轨道上。它提前了24小时在火星大气层中燃烧了,消失得无影无踪。这就是火星气候探测器快速意外解体的故事。


任务


这个花费2.35亿美元的飞船原本打算成为火星的第一颗气象卫星,它将用高分辨率的照相机监控火星的大气层。在687天的过程中,或者说一火星年的时间里,探测器应该监测火星的温度,并将沙尘暴的照片传送回地球上的地面控制系统。


这颗卫星还应该为命运多舛的火星极地着陆器任务起到通讯中继的作用。火星极地着陆器同样在最后阶段遇到了一次快速意外的解体。这可能是由于软件和机械bug,着陆支架过早的关闭了主机。但那是一个完全不同的故事。


到底出了什么问题


宇宙辐射


和许多软件bug一样,这个错误的根源是一系列的事件,这些事件会让任何工程师在午夜的冷汗中醒来。首先,在九个月的旅程中,飞船已计划安排执行推进机动,以防止飞行器的反应控制轮获得太多的角动量。


由于飞船上的太阳能电池板的非对称布置,这些AMD机动比预测的多产生了10倍还多。这是由于太阳反射器影响,太阳的光子在飞船上施加力并使它旋转。虽然这些力量比较小,但在超过1亿9600万公里的行程中,它们的叠加影响,使得飞船远离了预定轨道约170km 。


地面控制软件


第二个因素是由洛克希德马丁公司提供的地面控制软件中的一个bug,它显示了每一个AMD机动的力量。该软件以英制单位计算磅秒值,而美国宇航局开发的软件预期的值是牛顿秒这一公制单位。由于这些值没有正确转换,这导致航天器位置的微小差异,在几百万英里的航行中,就会叠加影响,差生较大的位置偏差。


人为错误


第三个也是最后一个因素是人为错误。质量保证人员在外部软件中没有发现英制单位的使用,尽管NASA当时的编码标准要求使用公制单位。


事实上,在航行的头四个月里,美国宇航局依据承包商的电子邮件通知,判定飞船在旋转。由于文件格式错误以及多方面的bug,计算也手动进行,而不是使用所提供的软件。


善后


在美国航空航天局的调查报告中,团队之间的沟通和操作人员的培训被引述为一个促进因素。错过了执行应急轨道修正的机会,尽管工作人员后来回忆起他们都同意执行机动。导航人员还同时控制了三个不同的任务,这可能会削弱他们对轨道差异的注意力。


美国宇航局的其他建议包括更好地培训导航人员,将任务的不同方面授权给具体的工作人员,例如将决定何时执行机动的责任交给具体负责此项工作的工作人员。另外一个非常重要的建议是审计所有使用英制单位的软件。







请到「今天看啥」查看全文