NASAミッションクリティカルコーディング:リスク、人工知能、ソフトウェアの品質の向上

Mission Directrates全体で重要なNASAのソフトウェアの規律は、ソフトウェアエンジニアリングと自動化リスク管理の改善、AI/MLイノベーションの採用、ソフトウェアの品質のためのコード分析パイプラインを活用することを強調しています。クレジット:aikantie.com

ソフトウェアの規律は、それぞれに幅広い関与を持っていますNASAミッションディレクター。最近の分野の焦点と開発分野を以下に強調し、ソフトウェアの技術分野チーム(TDT)アプローチを将来に向けて進化させるためのベストプラクティスを進化させます。

自動化リスクの理解

ソフトウェアは自動化を作成します。その自動化への依存により、NASAプログラムのソフトウェアの量が増加しています。今年、ソフトウェアチームは、航空宇宙の歴史的なソフトウェアインシデントを調べて、ソフトウェアまたは自動化がほとんど失敗する可能性が高い方法、理由、場所を特徴付けました。目標は、エンジニアソフトウェアを改善して、エラーのリスクを最小限に抑え、ソフトウェアプロセスを改善し、エラーを回復するためのアーキテクトソフトウェアを改善することです(または、エラーが発生した場合にフォールトトレランスを改善します)。

これらのチャートに示されているいくつかの重要な調査結果は、ソフトウェアが単にクラッシュするのではなく、間違ったことをより頻繁に行うことを示しています。クレジット:NASA

上記のチャートに示されているいくつかの重要な調査結果は、ソフトウェアが単にクラッシュするのではなく、間違ったことをすることが多いことを示しています。ソフトウェアが誤って動作する場合、再起動は効果がないことがわかりました。予期しない動作は主にコードまたはロジック自体に起因しており、それらのインスタンスの約半分は、予期せぬ状況や要件がないために存在しないソフトウェアの欠落の結果でした。これは、完全にテストされたソフトウェアでさえ、この重要なクラスのエラーにさらされていることを示している可能性があります。データの誤解は、より近代的なデータ駆動型システムの出現とともに成長し続けるかなりの要因でした。評価された最終的な主観的なカテゴリは、「未知の未知のもの」であり、合理的に予想できなかったものでした。これらは、調査したソフトウェアインシデントの19%を占めました。

ソフトウェアチームは、ベストプラクティスを改善するためにこれらの調査結果を使用および共有しています。ループ内の実際のハードウェアを使用して、完全な要件、ノミナルテストキャンペーン、「飛行中のテスト」の重要性にさらに重点が置かれています。フォールトトレランスのためにシステムを設計するときは、クラッシュをチェックするだけでなく、誤った動作の検出と修正をより考慮する必要があります。効果的な回復戦略として、再起動に自信を置く必要がありません。自動化のためのバックアップ戦略は、重要なアプリケーションに採用する必要があります。これは、存在しないソフトウェアと不明な不明の歴史的な有病率を確認する必要があります。詳細については、NASA/TP-20230012154、航空宇宙のソフトウェアエラーインシデント分類をご覧ください。

AIおよび機械学習技術を採用しています

の台頭人工知能(ai)および機械学習(ML)手法により、NASAは以前は不可能だった新しい方法でデータを調べることができました。 NASAは設立以来自律性を採用していますが、AI/MLテクニックはチームに以前の境界以外で自律性の使用を拡大する能力を提供します。代理店は、AI Ethics Frameworksに取り組んでおり、基準、手順、慣行を調査し、セキュリティの影響を考慮しています。 AI/MLは一般に、安全性が批判的な飛行アプリケーションでの使用を現在制限する非決定的統計アルゴリズムを使用していますが、研究と科学を支援する400以上のAI/MLプロジェクトでNASAが使用しています。代理店はまた、センター全体で知識を共有するためにAI/MLの実践コミュニティを使用しています。 TDTはAI/MLの作業を代理店全体で調査し、トレンドとレッスンを要約しました。

NASAがAI/MLを使用する方法の例。雲の厚さ(左)と山火事検出(右)の推定を伴う雲の衛星画像。クレジット:NASA

AI/MLの一般的な使用法には、画像認識と識別が含まれます。 NASA Earth Science Missionsは、AI/MLを使用して海洋の破片を特定し、雲の厚さを測定し、山火事の煙を特定します(例を以下の衛星画像に示します)。これにより、人員のワークロードが削減されます。大気物理学を予測するために使用されているAI/MLの多くのアプリケーションがあります。 1つの例は、ハリケーントラックと強度予測です。別の例は、惑星の境界層の厚さを予測し、それを測定と比較することであり、これらの予測は、以前の境界層モデルでのパフォーマンスを改善するためにライブデータと融合しています。

コード分析パイプライン:IV&Vおよびソフトウェアの品質改善のための静的分析ツール

コード分析パイプライン(CAP)は、ソフトウェアの開発と保証アクティビティをサポートし、全体的なソフトウェア品質を向上させるオープンソースツールアーキテクチャです。独立した検証と検証(IV&V)プログラムは、CAPを使用して、人間の着陸システム、ゲートウェイ、探索地面システム、オリオン、およびローマのソフトウェア保証をサポートしています。 CAPは、複数の静的コード分析ツールの構成と自動実行をサポートして、潜在的なコード欠陥を特定し、品質の懸念の潜在的な領域を示すコードメトリック(サイクロマティックの複雑さなど)を生成し、ソースコードを分析または処理する他のツールを実行します。 TDTは、修正された条件/決定カバレッジ分析の統合されたカバレッジテストのサポートに焦点を当てています。ツールの結果は、中央データベースに統合され、コードが成熟するにつれて結果のレビュー、クエリ、レポート、および分析をサポートするユーザーインターフェイスを通じてコンテキストで提示されます。


NASA-HDBK-2203、NASAソフトウェアエンジニアリングおよび保証ハンドブック(https://swehb.nasa.gov)クレジット:NASA

このツールアーキテクチャは、ソースコードの継続的な構築とツールの実行のための業界標準DevOpsアプローチに基づいています。 CAPはGitHubとソースコード制御のために統合され、Jenkinsを使用して分析ビルドの自動化をサポートし、Dockerを活用して、独自のミッションニーズとユースケースをサポートする標準およびカスタムビルド環境を作成します。

ソフトウェアプロセスの改善とベストプラクティスの共有

TDTは、NPR 7150.2、NASAソフトウェアエンジニアリング要件、NASA-HDBK-2203、NASAソフトウェアエンジニアリングおよび保証ハンドブック(https://swehb.nasa.gov)のセンター全体からベストプラクティスの知識を獲得しました。 TDTは、ソフトウェアアーキテクチャ、プロジェクト管理、要件、サイバーセキュリティ、テストと検証、プログラム可能なロジックコントローラーに取り組む際に、プログラム/プロジェクトを支援するためにいくつかのサブチームを確立しました。これらのチームの多くは、NASA-HDBK-2203およびNASAエンジニアリングネットワークで文書化されているガイダンスとベストプラクティスを開発しました。

NPR 7150.2およびハンドブックは、すべてのNASAソフトウェアのライフサイクル全体でベストプラクティスを概説しています。これには、要件開発、アーキテクチャ、設計、実装、および検証が含まれます。また、ソフトウェア保証、安全構成管理、再利用、ソフトウェアの獲得など、品質を改善するサポートアクティビティ/機能もカバーされています。要件の理論的根拠とガイダンスは、内部的および外部的にアクセス可能で、新しい情報、ツール、およびテクニックが見つかり、使用されているため、定期的に更新されるハンドブックで対処されています。

ソフトウェアTDT代理人は、NPR要件に関するソフトウェアエンジニア、システムエンジニア、チーフエンジニア、およびプロジェクトマネージャーを訓練し、これらの要件を確保する際の役割がNASAセンター全体で実装されています。さらに、TDTの代理人は、計画、コストの見積もり、交渉、変更管理の処理など、ソフトウェアエンジニアリングの取り組みの多くの高度な管理的側面について、ソフトウェアの技術的リードを訓練しています。

ブレークスルーを見逃さないでください: