飛行機

737MAX 何をもって改修後の対策の有効性と妥当性の検証を完了とするのか?-ミッションクリティカルな組込みソフトの確認の難しさ-

 相次いだ事故を起こしたボーイング737MAXジェット旅客機について、ボーイングは現在、プログラムの改修を完了し、確認を進めているという報道がある。
 今回の737MAXに発見された問題は「スジが悪い」ことについて別のnoteで書いたが、このような報道を聞くにつけ、さらなる疑問がある。それは、『ボーインが行っている「確認」は、何がどこまで確認されれば「完了」したことになるのだろうか。』という点である。
 問題があったシステム、MCAS ( Maneuvering Characteristics Augmentation System)というのは、機体の外側の気流の方向(ランダムなアナログ情報)から機体姿勢の制御(デジタル処理)を行い、それにより機体の操作を自動的に行うシステムである。「ボーイングの確認」は機体を実際に飛行させて行っているのだろうが、どの程度までクリティカルな条件を与えた試験を実施しているのだろうか。ここでボーイングとFAAは「要求条件を満たすために、すべての条件が、機体システムの確認試験環境で作り出せたのだろうか?」という問いに答える必要がある。ハードウェアだけで構成されたシステムでは確認すべき「すべての条件」は比較的簡単に想定可能だが、組込みソフトが介在した途端に「すべての条件」「考えられるすべての条件」に落ちてしまうことが多い。つまり試験結果がテスト条件を考える人の能力に大きく依存する傾向が強まる。

 今はサーバーで置き換えられてしまったが、かっての電話交換機というシステムはコンピュータ制御で何万台という電話の接続を制御していた巨大システムだった。その制御ソフトの検証には何千台もの電話機からランダムに生起される「呼」をシミュレートする「疑似呼」という負荷装置(これもコンピュータ制御の電話機シミュレータが用いられていた)を接続して設計の妥当性を検証する。疑似呼は加入者の特性を考慮してランダムに動作するから、疑似呼により作り出された負荷に耐えられれば、制御ソフトは十分確認されたもののはずなのである。ところが、何十台もの疑似呼から発生する電話機数千台相当の負荷にびくともしなかった盤石のはずのソフトが、数人の人間が手で操作する電話機を追加しただけでコロリとシステムダウンする経験を何度もしている。計算で作り出された疑似ランダムはどこまで行っても「疑似」であり、真にランダムな疑似入力は機械では作り出せないという奥の深い世界について痛感せざるを得ない経験だった。
 電話交換機の制御ソフトは「ランダム性を持つ外部インターフェースを制御するミッションクリティカルな組込みソフト」として、世界で最も早く実用化された「ミッションクリティカルな組込みソフト」だったのではないかと思う。その検証は外部の予測不能な動作をする電話端末を疑似することの難しさから多大な労力を要するもので、どこまでやっても「十分」がない性格を持っていた。

 これを思う時、機体外部のランダムな(ここが間違っていることを願うが)気流の変化やバードストライクを含めた予測しがたい飛行条件を相手にする「航空機の操縦特性制御システムの組込みソフト」の検証はどのように行うのだろうか。ボーイングはその完璧を期することの難しさを正しく理解しているのか、ボーイングにはそれを十分に行うだけの技術的蓄積が本当にあるのか、について心配している。

 センサーやAIの発達により、これからの時代は自動運転をはじめとして、「入力特性がランダム性を持つ外部インターフェースを制御するミッションクリティカルな組込みソフト」がますます増えて行くものと思われる。しかし、その実用化に向けては、このような属性を持つソフトの検証の難しさを身を持って体験している人材が多数必要となる。今は開発ばかりに目を奪われているが、開発の先には検証が必要なことをよく考えて「作っては見たが使えない」開発になってしまわないことに万全を期する必要がある。

6/27追記
 一般的に、「組込みソフトウェアはサーバー上のソフトよりも検証が難しい場合が多い」ことをボーイングがどの程度認識しているかを心配していたのだが、早くも「言わんこっちゃないというようなニュース」が報道されているようだ。やはり「実際に飛行させてみて初めてわかるソフトウェアのバグ」がまだ残っているようだ。
 さらに、組込みソフトウェアでは、Verification(バグがないことの確認・検証)とValidation(措置の有効性・妥当性の確認)の区別がともするとあいまいになることが多いが、現状はこの点に関しても懸念がある。

この記事が気に入ったらサポートをしてみませんか?