2018年5月26日土曜日

SysML初級講座 第3回 システム・モデリング誕生前夜の状況 ②

システム・モデリング誕生前夜の状況   ②

Mars Climate Orbiter
(MCO)
MCOが消息を絶った後、調査委員会が設けられました。
その報告書によれば、MCOは火星周回軌道に入った直後に急速に高度を落とし、火星に墜落したと推定されます。
そして、その墜落の原因は、もともとMCOは火星上空226Kmの軌道を周回する計画であり、機体は80Kmの高さまで耐えられる設計となっていたのに対し、実際にはMCOは高度わずか57Kmの軌道に投入されてしまい、火星の気圧と抵抗に機体が耐えきれず墜落したと結論付けられています。
そして、当初の周回軌道から大幅にずれてしまった原因は、MCOと地球局側の単位の混同によるものである、というあっけないものでした。

Xession氏の図から (CreativeCommons3.0)   リンク
つまり、前回のMGSの時に軌道制御を行なった地球局は単位をヤード・ポンド法で計算していたのにたいし、MCOは国際単位系であるSI系(メートル法等)によっており、地球局はポンド重・秒をニュートン・秒に変換して計算してMCOのスラスター(ロケット・エンジン)に指示すべきだったのに、それを誤り、実際には必要量の4.45倍の力・時間を指示し、ー 平たく言うと必要以上にブレーキをかけて速度を落としてしまい ー、火星に近付き過ぎた結果墜落した、と言うのが真相でした(1ポンド重 = 9.45ニュートン)。


ちなみに、この単位系の違いは、計画当初から認識されており、地球局側のソフトを書き換えることで対応する予定でしたが、単位系の変換は単に定数倍すれば良いだけの問題であるものの、膨大な数式の中でその作業を行なっており、結果として間違いが見過ごされてしまったようです。

システム工学的には、単純なソフトウェア・エラーが一箇所あっただけなのに計画全体が失敗しており、典型的な「Single point of falure」であり、通常はそのような設計、あるいは計画は避けるべきであると言うのがシステム工学上の通念であり、強い違和感を感じます。

前回MGSとの違い

MCOと前回のMGSのシステム設計上の違いを、今回のソフトウェアの修正エラー、障害点(Failure point)を中心に見て見ましょう。

ソフトウェア工学的には、この種のエラーは通常の地球局側の単体テストでは見つけにくく、逆に、接続テストもしくはそれ以上のシステムテストを行えば発見が極めて容易である種類の問題です。

現代の常識から言えば、コンピュータ・シミュレーションを使えば簡単にその種のテストが実現可能です。
ところが、90年代は、そういったシミュレーション技術が最も飛躍的に発展した時代ではあるものの極めて高価なソリューションであり、宇宙空間のコンピュータ・シミュレーションそのものの信頼性が発展途上でした(当時はVR(仮想現実)が時代の先端のアプリケーションでした)。

前回のMGSでは、この「正しく火星周回軌道へ移る」ことを検証するために次の2種類のアプローチが取られていました;

  1. 通し検証: データの流れを、end-to-endで、つまり最初から最後まで通しで、検証していた。
  2. 計算の二重化: 地球局側で軌道計算を行う際に、別のメカニズムで二重に数値の正確性を検証していた。
これらの2項目はMCOでは予算削減のために削除されており、結果としてMCOの火星周回軌道への投入は、なんの検証もなく、ぶっつけ本番になってしまいました。
また、投入前の記録から、ナビゲーターたちは、ぶっつけ本番であることを全く認識していなかった事も明らかになっています。

こう言うミスは、結果が出た後に見つけるのはいたって容易ですが、事前に発見する事は非常に困難です。
おそらく、システムの計画者たちは、この検証の空白に気がつかなかったのだと思います。
1の検証を削った人は、2の二重チェックがあるので大丈夫だと判断し、2の二重チェック・メカニズムを削除した人は、1のデータの通し検証があるので大丈夫だと判断したのでしょう。(実際、どちらか一つが行われていれば、事故は未然に防がれていました。)

問題は、全ての計画書がテキスト・ベース、ドキュメント・ベースで作られており、1つのメカニズムを削除すれば、本来、すべでのドキュメントからその項目は削除されなければなりませんが、全てを人手で行なっており、徹底できず、残ってしまいました。

SysMLの要求図で書くと左の図のようになりますが、いずれか一方の検証が行えなくなるような変更が発生すれば、全ての計画書からから削除されなければなりませんが、システムが複雑化して行けば行くほどツールを使わず人手で行うことが困難になってきます。












0 件のコメント:

コメントを投稿