海外优秀资讯抢先看10:世界著名软件缺陷导致的灾难性案例详解之阿丽安娜火箭之殇

Explosion of the Ariane 5

阿丽安娜5运载火箭爆炸之谜

On June 4, 1996 an unmanned Ariane 5 rocket launched by the European Space Agency exploded just forty seconds after lift-off (918K QuickTime movie). The rocket was on its first voyage, after a decade of development costing $7 billion. The destroyed rocket and its cargo were valued at $500 million. A board of inquiry investigated the causes of the explosion and in two weeks issued a report. It turned out that the cause of the failure was a software error in the inertial reference system. Specifically a 64 bit floating point number relating to the horizontal velocity of the rocket with respect to the platform was converted to a 16 bit signed integer. The number was larger than 32,768, the largest integer storeable in a 16 bit signed integer, and thus the conversion failed.

1996年6月4号,一枚尚未命名的阿丽安娜5火箭在欧洲航空总署发射后仅仅40秒的实践内发生了爆炸(请看918KQuickTime视频)。在花费了7亿美刀历经10年光景的开发之后,该次航行其实尚是其处女航(天地会珠海分舵注:根据火箭的形状,我其实更倾向于把它翻译成“处子航”,只是不知道大家是否可以接受而已了。^_^)。一个调查委员会立刻成立以对事故原因进行调研,并在两周后给出了一个报告。结果表明故障原因竟然是因为火箭内部的惯性参考系统里面的一个软件错误所导致的。明确地说就是平台相关的一个64位的代表火箭水平速度的浮点数被转换成一个16位的有符号整数。该数字比16位有符号数最大的存储能力32,768还要大,因此该转换是个失败的转换。

The report of the Inquiry Board is available. The following paragraphs are extracted from that report.

大家可以从这里获得该事故的报告。以下章节就是摘录自该报告的。

On 4 June 1996, the maiden flight of the Ariane 5 launcher ended in a failure. Only about 40 seconds after initiation of the flight sequence, at an altitude of about 3700 m, the launcher veered off its flight path, broke up and exploded.

1996年6月4日,阿丽安娜5的处子行宣布以失败告终。仅仅在启动飞行程序的40秒之后,该火箭发射器就在3700米的高度突然转向偏离航道,最终引发爆炸而分崩离析。

The failure of the Ariane 501 was caused by the complete loss of guidance and attitude information 37 seconds after start of the main engine ignition sequence (30 seconds after lift-off). This loss of information was due to specification and design errors in the software of the inertial reference system.

阿丽安娜501的故障是因为在主引擎启动37秒后(点燃后30秒)完全丧失导航和高度信息而导致的(天地会珠海分舵注:这里原文的attitude应该是报告人员手误,理应为altitude。跟我写博客不少错别字一样的不严谨,难怪该火箭会爆炸了。^_^)。这些信息的丧失是因为惯性参考系统软件的需求文档和设计错误而引发的。

The internal SRI* software exception was caused during execution of a data conversion from 64-bit floating point to 16-bit signed integer value. The floating point number which was converted had a value greater than what could be represented by a 16-bit signed integer.

火箭内部的SRI*软件异常是在系统尝试执行一个64位浮点数到16位有符号整数的转换过程中发生的。该浮点数在进行转换后得到的结果将会超出16位有符号整数所能表达的范围。

*SRI stands for Système de Référence Inertielle or Inertial Reference System.

*SRI代表的是Système de Référence Inertielle,也就是惯性参考系统。
This description is adapted from The Explosion of the Ariane 5 by Douglas N. Arnold.

以上描述是由阿丽安娜5大爆炸的作者Douglas N. Arnold所整理而成。