高い信頼性/可用性/セキュリティのコーディング-どの標準を読みますか?
-
02-07-2019 - |
質問
自動車産業にはMISRA Cと呼ばれるものがあると聞きました。
次のような他の高信頼性/可用性/セキュリティ業界に関連する標準は何ですか
- スペース
- 航空機
- 銀行/金融
- 自動車
- 医療
- 防衛/軍事
- ???
-アダム
解決
Goddard Space Flight Centerとそのコーディング標準をご覧ください。私が自分のコードで採用したC標準の1つは、ヘッダーが自己完結型でなければならず、それを強制する簡単な方法を提供することです-モジュールのヘッダーはモジュールに含まれる最初のファイルでなければならないので、ファイルが自己完結型でない場合、コンパイルされません。
他のヒント
コーディングについて特に質問している場合、MISRAはCの一般的な間違いを避けるためのガイドラインを提示します。
ただし、優れたソフトウェアにはコーディングよりもはるかに多くのことがあります。 「聖書」 SW開発のための航空業界のDO-178Bです。さまざまな設計段階で対処する必要がある質問と、回答を文書化する方法を示します。これは膨大な量の事務処理ですが、飛行機を空中に保ちたい場合は、ソフトウェアではなく人間(パイロット)が最も弱いポイントになるようにします。
Ada で信頼性の高いシステムをプログラミングする場合、 ISO / IEC TR 15942:"情報技術—プログラミング言語—整合性の高いシステムでAdaプログラミング言語を使用するためのガイド」:
はじめに
社会として、私たちはますます 高整合性システムに依存: 安全システム用(など フライバイワイヤ航空機)、セキュリティ用 システム(デジタルを保護するため 情報)または金融システム用 (例:現金自動預け払い機)。として これらのシステムの複雑さが増すため、 改善された技術の要求を行う ソフトウェアの生産のため システムのコンポーネント。これらの高い 整合性システムは 動作が完全に予測可能であり、 に必要なすべてのプロパティを持っています それら。これは、 に加えて、ソフトウェアの分析 従来のダイナミックの使用 テスト。現在、ありません 主流の高級言語 その言語のすべてのプログラムは 予測可能であることが保証され、 分析可能。したがって、任意の選択のために 実装言語の 方法を制御するために不可欠 言語はアプリケーションによって使用されます。 Ada言語[ARM]は設計されています 特定のメカニズムで 特定の側面の使用を制御する 言語の。さらに、
Adaプログラムのセマンティクスは、エラーがあっても明確に定義されています 状況。具体的には、効果 プログラムの予測は 少ない言語定義 実装の依存関係または 言語間の相互作用 機能。
言語内の厳密な型指定を使用して、 検証する分析の範囲(およびコスト) キープロパティ。
Ada言語は多くの高等学校で成功裏に使用されています 整合性アプリケーション。この 検証済みのAdaを示しています コンパイラには必要な品質があります そのようなアプリケーション向け。
言語の使用を促進するためのガイダンスを提供できます。 ツールの開発を奨励する さらに検証します。
したがって、Adaは以下に最適です。 高整合性ソフトウェアの実装 このドキュメントは、 に必要なコントロール Adaを使用して、プログラムが 予測可能かつ分析可能。
キャリアグレードLinux の要件のいくつかを見ると有益な場合があります。彼らは(名前が示すように!)Linuxの要件を指定していますが、通信機器の高可用性セグメントで使用するために指定しています。
NISTは関連ドキュメントを大量に提供します。その中に飛び込んで作業を熟読できますが、多くのドキュメントがあり、すべてが非常に冗長なため、具体的なドキュメントはありません。
ニーズをより具体的にしたい場合は、少し絞り込むことができるかもしれません...
さらに、カーネギーメロンは、信頼性の開発プロセスに関しては非常に決定的であり、標準を見つけるのに十分簡単ですが、非常に冗長です。
また、特定の産業は多くの場合、国にもよるが独自の基準を持っています。たとえば、クレジットカード業界-PCI-DSS。 EUの銀行業界-バーゼルII;医療-HIPAA(かなり高いレベルですが);米国政府関連のさまざまなNISTドキュメント。など