| この記事は別の言語から
大ざっぱに
??
されたものであり
、場合によっては不慣れな??者や機械??によって??されたものかもしれません。
??を改善
してくださる方を募集しています。
|
クラスタ?
(Cluster)は、
?州宇宙機?
が
アリアン5
ロケットの?女飛行で打ち上げた4機の
人工衛星
の集合?であるが、ロケットは軌道に到達しなかった。打上げは
1996年
6月4日
に行われたが、
表明
が切れていたことによる整?のオ?バ?フロ?によるソフトウェアの設計ミスによる失敗に終わった。このため、ロケットは打上げから37秒後に軌道を外れ、高い空?力の下で分解し始め、自動自爆?置により破?された。この失敗は、?史上最も?名高く高くついた
バグ
の1つとして知られるようになった
[1]
。この失敗により、3億7000万ドル以上が無?になったと言われている
[2]
。
人工衛星
[
編集
]
クラスタ?は、224Wの
太陽電池
で給電される、1200kgの円筒形の
スピン安定
性人工衛星4機で構成されている。4機は四面?を構成するように飛行し、
地球の磁??
の調査を行うことを目的とする。軌道は、短?17200km、長?120600kmの高楕円軌道で、
軌道傾斜角
は
赤道
に?し90°である
[3]
。
打上げの失敗
[
編集
]
アリアン5は、
アリアン4
の
慣性航法?置
を再利用しているが、アリアン5の飛行?路は前のモデルとはかなり異なる。特に、アリアン5の水平方向に大きな加速は、バックアップも含めたコンピュ?タを破?して診?デ?タを消失させ、
オ?トパイロット
に?の位置と速度を誤認させた。アリアン5の飛行?件下の慣性飛行試?は行われなかったため、打上げ前には、このエラ?は?見されなかった。事故原因調査において、別の慣性航法?置を用いてアリアン5の模擬飛行が行われたが、?際と同じように失敗した。
水平方向に大きな加速は、64ビット
浮動小?点?
から16ビット符?付き整?値へのデ?タの?換を引き起こし、
算術オ?バ?フロ?
したことで
例外?理
された。?率化のため、このような個?の??の範?確認は省略されていたが、コ?ド中の他の??の?換については保護されていた。例外?理は?照プラットフォ?ムを停止し、飛行の破?につながった。
報告書は、ソフトウェアのバグを直接の原因と認定しているが、別の調査ではシステム設計や運用の問題を指摘しているものもある
[4]
[5]
。
算術オ?バ?フロ?
[
編集
]
事故原因の調査に加わったJean-Jacques Levyによると、問題を引き起こした
Ada
のソ?スコ?ドは以下のようなものであった
[6]
。
L_M_BV_32
:=
TBD
.
T_ENTIER_32S
((
1.0
/
C_M_LSB_BV
)
*
G_M_INFO_DERIVE
(
T_ALG
.
E_BV
));
if
L_M_BV_32
>
32767
then
P_M_DERIVE
(
T_ALG
.
E_BV
)
:=
16#7FFF#
;
elsif
L_M_BV_32
<
-
32768
then
P_M_DERIVE
(
T_ALG
.
E_BV
)
:=
16#8000#
;
else
P_M_DERIVE
(
T_ALG
.
E_BV
)
:=
UC_16S_EN_16NS
(
TDB
.
T_ENTIER_16S
(
L_M_BV_32
));
end
if
;
P_M_DERIVE
(
T_ALG
.
E_BH
)
:=
UC_16S_EN_16NS
(
TDB
.
T_ENTIER_16S
((
1.0
/
C_M_LSB_BH
)
*
G_M_INFO_DERIVE
(
T_ALG
.
E_BH
)));
最終行(ここでは2行となっている)がオ?バ?フロ?の原因となり、ここで64ビットから16ビットへの?換は保護されていなかった。正しいコ?ドは以下のようになる。
L_M_BV_32
:=
TBD
.
T_ENTIER_32S
((
1.0
/
C_M_LSB_BV
)
*
G_M_INFO_DERIVE
(
T_ALG
.
E_BV
));
if
L_M_BV_32
>
32767
then
P_M_DERIVE
(
T_ALG
.
E_BV
)
:=
16#7FFF#
;
elsif
L_M_BV_32
<
-
32768
then
P_M_DERIVE
(
T_ALG
.
E_BV
)
:=
16#8000#
;
else
P_M_DERIVE
(
T_ALG
.
E_BV
)
:=
UC_16S_EN_16NS
(
TDB
.
T_ENTIER_16S
(
L_M_BV_32
));
end
if
;
L_M_BH_32
:=
TBD
.
T_ENTIER_32S
((
1.0
/
C_M_LSB_BH
)
*
G_M_INFO_DERIVE
(
T_ALG
.
E_BH
));
if
L_M_BH_32
>
32767
then
P_M_DERIVE
(
T_ALG
.
E_BH
)
:=
16#7FFF#
;
elsif
L_M_BH_32
<
-
32768
then
P_M_DERIVE
(
T_ALG
.
E_BH
)
:=
16#8000#
;
else
P_M_DERIVE
(
T_ALG
.
E_BH
)
:=
UC_16S_EN_16NS
(
TDB
.
T_ENTIER_16S
(
L_M_BH_32
));
end
if
;
言い換えると、垂直方向の計算(E_BV)に?に??されていたものと同じオ?バ?フロ?チェック機構が水平方向の計算(E_BH)にも??されるべきであった。
その後
[
編集
]
失敗の後、4機の
クラスタ?II
が建造された。これらは、
2000年
に2機ずつ
ソユ?ズU
/
フレガ?ト
によって打ち上げられた。
打上げの失敗は、大衆、政治家、?社役員等に、複?なコンピュ?ティングシステムに?連した高いリスクへの認識をもたらし、生命に?わるシステムへの信?性を確保する?究への支援が?加した。その後行われたアリアン5の
ソ?スコ?ド
の自動解析は、
抽象解?
による大規模な
?的コ?ド解析
の初めての事例となった
[7]
。
この失敗は、アリアン4の高い成功率によって打ち立てられた?州宇宙機?のロケットの成功記?にも傷を付けた。アリアン5の打上げがアリアン4と同等の信?性を持つと認められたのは、
2007年
になってからであった
[8]
。
?連項目
[
編集
]
出典
[
編集
]
- ^
Gleick, James (1996年12月1日). “
A Bug and A Crash
”.
New York Times Magazine
.
2012年4月7日
??。
- ^
Dowson, M. (March 1997). “The Ariane 5 Software Failure”.
Software Engineering Notes
22
(2): 84.
doi
:
10.1145/251880.251992
.
- ^
Krebs, Gunter. “
Cluster 1, 2, 3, 4, 5, 6, 7, 8
”.
Gunter's Space Page
.
2011年11月29日
??。
- ^
Nuseibeh, Bashar (May 1997).
“Ariane 5: Who Dunnit?”
(PDF).
IEEE Software
14
(3): 15-16.
doi
:
10.1109/MS.1997.589224
.
http://www.doc.ic.ac.uk/~ban/pubs/ariane5.pdf
.
- ^
Le Lann, G. (1997). "An Analysis of the Ariane 5 Flight 501 Failure - A System Engineering Perspective".
10th IEEE Intl. ECBS Conference
. pp. 339?346.
- ^
http://moscova.inria.fr/~levy/talks/10enslongo/enslongo.pdf
- ^
Faure, Christele. “
PolySpace Technologies History
”.
2010年10月3日
??。
- ^
Todd, David (2007年3月).
ASCEND Space Intelligence News
Thomas, L.D. (2007) Selected Systems Engineering Process Deficiencies and their Consequences. Acta Astronautica, 61, 406-415.
外部リンク
[
編集
]