アジャイルプログラミングもあります…安全性が重要なシステムにアドホックですか? [閉まっている]
-
04-07-2019 - |
質問
たとえば、アビオニクスソフトウェアに対して行うのは非常に危険ですか?
注、アジャイルを完全には理解していません。
解決
基本的にウォーターフォールプロセスを使用して航空交通管制システムに取り組んできましたが、これらのプロジェクトはアジャイルプラクティスから確実に恩恵を受けていたはずです。ユニットレベルの自動回帰テストを行わずに、「偶然に」そのコードがどれだけ機能したかを考えるのは好きではありません。そして、要件の前もってのことは、ニシンのようなものです。航空宇宙システムは、事前に定められた要件を満たすことができると思われますが、システムが存在する場合にのみ現れる曖昧な要件の意味については、まだ議論があります受け入れテストにあるはずです。または、ビッグバン統合のためにゲームの後半に現れるスループットの問題があります。テストファースト、スパイクソリューション、継続的インテグレーション、ペアプログラミング-これらのすべてが私が取り組んだプロジェクトを改善したと思います。
更新:「設計文書」の頻度は言うまでもありません設計は必然的に現実に直面して進化したため、プロジェクトの終わりまでに嘘のパックでした。アジャイルは、コードを書き始める直前にデザインを取得できるように見せかけるのではなく、Waterfallプロジェクトで他のプロジェクトと同じように現実的な緊急デザインの事実を認識しています。
他のヒント
私は航空宇宙(具体的には衛星)で仕事をしていますが、現実の要件とビジネスプロセスの要件という2つの異なる懸念に直面しているため、ハイブリッドアプローチを使用しています。
衛星への変更は遅く、まれであり、ねじ込みが悪いため、宇宙船の要件と重要なセクションには滝のようなアプローチを使用します。
しかし、絶えず変化するビジネスプロセスでは、アジャイル風のアプローチを使用します。これは、彼らが宇宙船を飛行する方法 が顧客の要求により常に変化しているためです。そこにねじ込むと、最悪の場合、ユーザーは適切でない結果を得ることになります。
(航空システムのユーザー以外の)その分野での経験が足りないので、独自の真に独立した意見を形成できません。しかし、最高の実績を持つ重要なシステムについて読み続けているすべてのことから、実際にはウォーターフォールが最良の方法であると信じています。人々が安全性を促進するために凍結要件の余分な無駄を許容することをいとわないので、それは可能です。その場合、トレードオフは少し異なります。
アジャイルプラクティスのミッションおよびライフクリティカルシステムへの適用可能性の判断
要するに、「アジャイル」はありません。プログラミング。一連のプラクティスがあります。一部の人は他の人よりも優れていますが、一般的に、どのプロジェクトも一部のプラクティスの恩恵を受けます。
人々が最も関心を寄せる最大の分野は、モデリングとアーキテクチャです。アジャイルプラクティスを使用するチームはたくさんあります。たとえば、 Fun3dチームのメンバーを知っています。 NASAとともに-アジャイルプラクティスを使用し、スペースシャトルのサポートなどを処理します。
この種の仕事に専念するグループがいくつかあります-可能です。他の方法論と同様に、リスクに注意する必要があります。
アジャイルは規律あるプロセスでなければなりません。どのようなプロセスでも、この場合の安全性の問題は前もって取り組む必要があります。反復での配信、継続的なビルドシステムの使用、プログラマーの燃焼率の計算、スタンドアップミーティング、顧客の積極的な関与などが、安全性に悪影響を与えるとは思いません。
多くの考慮事項があります。 1つ目は、安全上の重要性です。回答が「A」の場合または" B" (そして本当に" A")そして絶対にありません。とにかく形や形でアジャイルを行うことで逃げることはありません。レベルAソフトウェアに必要な非常に厳しいコーディング標準、ドキュメント標準、プロセス標準があります(約15年の経歴)。これには以下が含まれます:
- 完全なアップ/ダウントレーサビリティ。
- 全ブランチカバレッジ。
- 完全な多条件カバレッジ。
- DO-178Bで綴られた基本文書には、SRD、SDD、SCI、SCMP、SDP、TQP、SCIなどがあります。
したがって、コード、設計、要件を認証する必要があるだけでなく、ツールセット、コンパイラ、自動化されたテスト機器なども認証する必要があります。
要するに、それは本当に小さな偉業ではなく、小さなチームでは行われません。同様に、インターフェースは非常に堅固で非常に特殊であり、静的です。通常、インターフェースを変更するには、3社以上の企業との調整が必要です(機体メーカー、Vender 1とVender 2との対話)。
正直なところ、12行のコードを変更すると、170,000ドルの費用がかかります。もちろん、500行のコードの変更は190,000ドルになります。要するに、レベルAコードに関連するプロセスのオーバーヘッドが非常に大きいため(レベルBではさらに少なく、Cではさらに少なく、レベルDではごくわずかです)、小さな反復は非常にコストがかかります。すなわち。小さな変更をテストするために完全に燃料を供給されて飛行する777を取得するには多くの費用がかかります。大型商用航空機のシステムテストラボでさえ、1日あたり10,000ドルの燃焼率があります。
例: レベルA:HUD、スラストリバーサー、パワーシステム、FADEC(エンジン制御) レベルB:セカンダリスイッチングロジック、音声通信システム。 レベルC:飛行中のデータリンク。 レベルD:機内エンターテイメントシステム。
レベルDと、おそらくレベルCは、アジャイルの候補になる可能性があります。
これは、セキュリティデマンドがプロセスにどのように統合されるかによると思います。テストの追加セットである場合、アジャイルプログラミングと矛盾することはありません。アジャイルプロジェクトはウォーターフォールプロジェクトよりも高品質である傾向があるため、アジャイル手法はより安全なソフトウェアを作成するのに役立つと思います。重要なのは、インストールした追加の品質保証がアジャイルメソッドでも使用されていることです。
ただし、セキュリティ要求が構築プロセスに適用される場合、アジャイルメソッドと矛盾する可能性があります。
実際には、Vモデルと呼ばれるウォーターフォールモデルのバリエーションがあります。これは、たとえばIEC61508で好まれています。それは滝のようなものですが、基本的なプロジェクトサイクルの繰り返しを規定しています。この場合の繰り返しの主な目的は、プロセスのさまざまな段階で検出された問題に対処することです。基本的な考え方は、後で問題に遭遇するほど、プロセスのさらに後の方で、変更の世話をして影響を確認するために行かなければならないということです。
したがって、実際にはアジャイルではありませんが、...:-)
アジャイルアプローチを使用することもできますが、最初のパスには安全とセキュリティの側面を含めるか、少なくともそれらを提供する必要があります。しかし、私はブライアンに同意します。おそらく、そのようなプロジェクトにウォーターフォールアプローチを使用した方が良いでしょう。
EuroStar 2009カンファレンスで、Gittie Ottosenは彼らがどのように会社でアジャイルするかについて話しました。印象的なのは、この会社がシステマティックが航空機、軍隊などのソフトウェアを作成していることです。 CMMI 5、ISO 9001およびAQAP 150& 2110を使用。したがって、アジャイルは高い規制のあるシステムに適用できると思います。そのプレゼンテーションを検索して、彼から詳細情報を取得しようとするかもしれません。