点击上方“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,计算也手动进行,而不是使用所提供的软件。
善后
在美国航空航天局的调查报告中,团队之间的沟通和操作人员的培训被引述为一个促进因素。错过了执行应急轨道修正的机会,尽管工作人员后来回忆起他们都同意执行机动。导航人员还同时控制了三个不同的任务,这可能会削弱他们对轨道差异的注意力。
美国宇航局的其他建议包括更好地培训导航人员,将任务的不同方面授权给具体的工作人员,例如将决定何时执行机动的责任交给具体负责此项工作的工作人员。另外一个非常重要的建议是审计所有使用英制单位的软件。
史上最严重的计算机Bug系列故事是为了纪念2017年Bug日。七十年前,葛丽丝·霍普发现了第一个计算机bug—她正在研究的哈佛马克2号的继电器之间卡住了一只飞蛾。以前在其它领域描述过bug的概念,但是飞蛾发现是计算机领域中第一次使用“调试”一词的术语。
Bugsnag自动监测应用程序中的有害的错误并提醒你,使你在软件的稳定性上有了可见性。你可以认为我们是软件质量保证的保障者。
来源:
https://en.wikipedia.org/wiki/Mars_Climate_Orbiter#Cause_of_failure
http://www.cnn.com/TECH/space/9909/30/mars.metric.02/index.html
https://www2.jpl.nasa.gov/files/misc/mcoarrivehq.pdf
ftp://ftp.hq.nasa.gov/pub/pao/reports/1999/MCO_report.pdf