InfoQ ホームページ ニュース スペースシャトルとOrion MPCVのソフトウェアをNASAがどのようにテストしているか
スペースシャトルとOrion MPCVのソフトウェアをNASAがどのようにテストしているか
2025年10月24日 読了時間 5 分
作者:
翻訳者
NASAは安全性確保のために複数のテストレベル、独立した検証、基準、安全コミュニティ、ツールを活用している。Darrel Raines氏はNDC Tech TownでスペースシャトルとOrion MPCVのソフトウェア開発とテストについて講演した。彼はどのように失敗やニアミスから学び、プロセスを継続的に改善しているかを説明した。
ソフトウェア開発はスペースシャトル時代の初期と比べて、現在私たちが利用できるツールのおかげで大きく異なっている、Raines氏は「Learning from Embedded Software Development for the Space Shuttle and the Orion MPCV」で説明した。
Raines氏によるとさまざまなレベルのテストが安全なソフトウェア開発を確保するのに役立っている。プログラムはソフトウェアがフライトに安全とみなされるまでに4〜7段階のテストを必要とし、それぞれ異なる人物やグループが実施する。プログラムには独立した確認および検証グループがあり、ソフトウェアの安全性を確保するために必要とみなされるテストを実施する。このようにテストに関わる人々の多様性が新しい視点を提供し、オリジナルの開発者とは異なる観点をもたらすことができる、とRaines氏は述べている。
Raines氏はNASAとその契約業者には安全コミュニティが存在すると述べている。NASAのソフトウェア品質保証(SQA)チームと通常、契約業者のSQAチームも存在する:
これらのチームはソフトウェア開発プロセスを監視し、発生した欠陥や潜在的な欠陥を指摘する役割を担っています。さらに全体的なソフトウェア品質を確保する任務も果たしています。彼らはソフトウェアのセーフティ・クリティカルな機能に注意を払っています。
これらのチェックが整備されていることで、安全なソフトウェアを作るための十分なチェックとバランスを確保していると感じ始めることができるとRaines氏は述べた。しかし、それでもなお私たちは安全性の姿勢を継続的に再評価し、改善を模索し続ける必要がある、と彼は付け加えた。
NASAのソフトウェア開発チームはテストの正確性を損なうことなく、テストを容易にするツールを選択している、とRaines氏は説明した:
私たちはインサーキットエミュレータからスタンドアロンのテスト環境まで、さまざまなツールを使用しています。目標は各ツールの強みを活かして欠陥を見つけることで、可能な限り多くの潜在的なエラーを発見することです。
NASAにはソフトウェア開発の基準があり、契約には特定の機体に対する追加要件が含まれている、とRaines氏は述べた。NPR 7150.2はすべてのテストで複数条件/決定カバレッジ(MC/DC)を測定するための単体テストを要求している。単体テストがすべての機能を実証することにフォーカスしている限り、これはソフトウェアの品質を確保するのに役立つ、とRains氏は述べた。
Raines氏はコード内のすべての欠陥を見つけることはできないが、努力しなければならないと述べている。「探せば探すほど、もっと見つかる」と彼は述べた。そのため、十分なテストのために開発中に十分な時間を許可しなくてはならない。
エンジニアリングは必要とされているほど科学手的ではない、とRaines氏は述べた。ソフトウェア開発は比較的新しい分野であると彼は説明した:
私が大学にいた頃、ソフトウェア工学の学位すら存在していませんでした。そのため私たちは「知っている」と思っていることを常に問い直し、この分野の知識を向上させる努力を続けなければなりません。
InfoQはDarrel Raines氏にソフトウェアテストの測定と学びについてインタビューした。
InfoQ: ソフトウェアテストの効果をどのように測定しているのでしょうか?
Darrel Raines氏:30年間のスペースシャトルのソフトウェア開発に基づくある研究によると、各テストレベルは他のレベルと同じ割合で残りの欠陥を発見することが示されています。そのため私たちはテストを多く行えば行うほど、より多くの欠陥を発見できると推測できます。これは次第に効果が薄れていきますが、ソフトウェアのエラー数を減らすための効果的な方法です。
InfoQ: 災害やニアミスをどのように分析しているのでしょうか?
Raines氏:各ケースについて非常に詳細な分析を行っています。宇宙船を失った時、チャレンジャーやコロンビアに対してやったように、私たちはそれらの問題の根本原因が説明され修正されるまでプログラムを停止します。これは非常に時間がかかりますが、正確に行う必要があります。
チャレンジャーのような事故を振り返る時、チームメンバーの精神に大きな負担がかかります。私たちは私たち自身に「私が個人的に何をすればそれが起こるのを防げたのか?』と問い続けます。最終的に前進する能力を取り戻した時、私たちはソフトウェア開発で犯すミスが誰かの大切な人を失わせるかもしれないということを心に留めておきます。その可能性を抱えながら仕事を進めていくには、特別なタイプの人間が必要です。
InfoQ: 各ケースからどのように学んでいるでしょうか?
Raines氏:災害調査の結果を記録しています。私は過去の失敗とそれを回避して前に進む方法について毎年訓練しています。非常に困難であっても私たちがミッションを遂行しなければならないことを理解することは、私たちの安全遺産の一部です。この訓練とNASAの安全への取り組みが、私の仕事を遂行するための適切なツールを提供してくれます。あとは私が実行するだけです。
私は学び続けなければなりません。毎年、自分自身に挑戦し、何か新しいことを試し、異なることを行い、自分の仕事を改善し、この分野についてさらに学ぶ努力をしています。そして学んだことを周囲の人々と共有しています。それは同僚の話を聞くことも意味します。現在知っていること以上に学ぶべきことがあるのです。
-
関連記事
-
関連スポンサーコンテンツ
特集コンテンツ一覧
InfoQ ニュースレター
毎週火曜日に前週のまとめコンテンツをお送りいたします。(日本語版は不定期リリース)25万人のシニアな開発者コミュニティーにぜひご参加ください。 サンプルを見る