大規模なセーフティ・クリティカル・システムを構築するには、システムを小さな解決可能な問題に分解し、既知のことを解決し、未知のことを実験によって解決する必要がある、とRobin Yeman氏はQCon New Yorkで主張した。彼女は、システムの安全性、セキュリティ、信頼性、可用性を向上させるために、早期にテスト・ドリブンを可能にするために、ソフトウェアとハードウェアの両方のテスト環境に投資することを提案した。
Robin Yeman氏はQCon New Yorkで大規模サイバーフィジカルシステムの構築について語った。
ハードウェアに依存したサイバーフィジカルシステムの構築には、ハードウェアのリードタイム、組織構造、共通言語、システムの分解、チーム間のコミュニケーション、連携、文化など、いくつかの課題がある。大規模なセーフティ・クリティカル・システムの開発に携わる人々には、ビジネス目標への見通しが必要だとYeman氏は言う。各チームは、日々の仕事をその目標に結びつけることができなければならない。
Yeman氏は、具体的なタスクではなく、システムの意図や目標を通じて目的を伝えることを提案した。意図に基づいたシステム目標の例としては、システムがリンク16を介して通信しなければならないと明確に定義するのではなく、システムが軍事プラットフォームと安全に通信できることだと彼女は付け加えた。
Yeman氏は、システムの問題を解決可能な小さな問題に分解することを勧めた。それらの問題のそれぞれについて、まず既知のものを解決し、それから一連の実験を通して未知のものを解決する、と彼女は言う。このアプローチにより、反復的かつ漸進的に、継続的に検証されたソリューションを構築できる。
各要件は、解釈する必要のない客観的なテストケースとして構成され、記述されるべきだとYeman氏は言う。大規模なシステムは複数のチームで構築される。要件は、さまざまなメンタルモデルを持つ複数の人々によって解釈される。解釈の余地を残した要件は、Yeman氏が説明したように、異なる解釈をされ、結果として問題を引き起こすことになる。
1999年に単位の取り違えによるナビゲーションエラーで失われた火星探査機のことを考えてみてください。具体的には、宇宙船のスラスターはメートル法で制御されていましたが、NASAの地上のソフトウェアは計算にインペリアル法(英国法)を使用していたのです。
Yeman氏は、ソフトウェアとハードウェアの両方のテスト環境に早めに投資することを勧めた。多くの場合、私たちは十分に早い段階でテストを行っていない、と彼女は言う。ウォーターフォールのライフサイクルでは、テストは最後に行われ、その結果、ライフサイクルの後半で環境を購入することになる。アジャイルでは、早い段階で頻繁にテストを行いたい。
テスト・ドリブンであることは、システムの安全性、セキュリティ、信頼性、可用性を高めるとYeman氏は述べた。
ロッキード・マーティン社は、F-35やOrionのようなプログラムが、ライフサイクルの早い段階で検証と妥当性確認をするために、早い段階でモデルやデジタル・ツインを活用しています。デジタル・ツインとは、フィジカルシステムのサイバー・コピーです。これらは多大な投資となるが、システムの挙動を早期に検証できます。デジタル・ツインには、ライフサイクルの段階と投資額に応じて、低忠実度から高忠実度まであります。高忠実度のツインは、フィジカルシステムに接続され、完全なテレメトリーを処理します。
デジタル空間でフィジカルシステムをモデリングすることで、モデルやデジタル・ツインを活用した場合、ハードウェアのソフトウェアに比べ、はるかに早い段階で、よりタイムラインに近いフィードバックを得られる。
InfoQは、サイバーフィジカルシステムの構築についてRobin Yeman氏にインタビューした。
InfoQ: アジャイルを使ってコンプライアンスや安全規制にどのように対処しているのか?
Robin Yeman氏: セキュリティテスト駆動開発とコンプライアンス駆動開発を使って制約から始めます。そうすることで、システムを構築した後にボルトで固定するのではなく、コンプライアンスと安全性をシステムに組み込めます。
良い例が、機密環境用のソフトウェアを構築する場合です。非機密のオープンな環境で構築した場合、ライブラリのためにインターネットにどれだけ多くの問い合わせがあるかに気づきません。こうして開発されたソフトウェアは、機密環境では決して動きません。各ライブラリをダウンロードし、環境に配置する必要があります。クローズドな環境で開発を始めることで、実際にどういったアイテムを構築できるかがわかります。
InfoQ: このアプローチからどのような利点が得られるのか?
Yeman氏: フィードバックが早ければ早いほど、手戻りが減り、早期にリスクを軽減できます。エクセルのスプレッドシートを使って、実装前に要件をテストする方法を評価したことがありますが、場合によっては、要件の30%以上がテスト不可能であることがわかりました。
ソリューションが導入される前に早期にフィードバックを得ることで、私は数百万ドルと数え切れないほどの時間の無駄を省いてきました。大工のように、2度測って1度切ります。