3

通常、セーフティ クリティカルシステムはカプセル化を利用しますか? 人工衛星、ジェット戦闘機、潜水艦、または旅客機用にAdaまたはCで実装された組み込みシステムを考えてみましょう。

カプセル化の概念は、ソフトウェア自体ではなく、ソフトウェアの開発保守のプロセスを支援するためにあるので、質問を受けました。メモリ内に直接アクセスするのではなく、アクセサーを介してデータにアクセスするためのオーバーヘッドが少し増えるため、このような安全性が重要なアプリケーションがカプセル化のような抽象化レイヤーを実装することが許容されるかどうか疑問に思っています.

また、たとえば旅客機に電力を供給するコードが大量にあると想定しているため、それらの概念を搭載したくない場合、ソフトウェア開発はある時点で手に負えなくなる可能性があります.

PS質問がトピックから外れている場合は、コメントまたは編集して自由に記入してください。これは私にとって本当の質問であり、同様のアプリケーションに既に取り組んでいる人々から回答を得たいと思っています.

PPS 混乱を避けるために、最近のバージョンのAdaには OOP 機能があり、カプセル化はCでも簡単に実現できます。

4

1 に答える 1

5

セーフティ クリティカル システムで最も重要な側面の 1 つは、認証と保守性です。明らかに、2 番目の部分はカプセル化により簡単になります。実際、最初の部分も、カプセル化すると問題を追跡したり、何かを証明したりするのが簡単になるためです (たとえば、デバッグの数行で、に割り当てられた値を確認できます)。実行中の属性)。

inlineオーバーヘッドに関しては、 C 関数または Adaを使用してそのほとんどを回避できるため、カプセル化は引き続き行われますが (またはアクセサーpragma Inline();を使用して属性にアクセスすることはできません)、getter を使用するとインライン化されるため、オーバーヘッドはまったく (またはほとんど) 追加されません。.->

実際の業界で使用されているかどうかはわかりませんが、避けるべき理由がわかりません。実際、本当の問題は、あなたが言ったように、産業がOOPを備えた最新バージョンのAdaまたはinline機能を備えた最新のCバージョン(C99に付属)を使用していないことかもしれません。

于 2014-04-25T08:36:12.313 に答える