Dead code
とDeactivated code
as perはどう違いDO178-b
ますか?
違いを強調するためにいくつかの例を挙げてください。
デッド コード - 設計エラーの結果として、ターゲット コンピュータ環境の動作構成で実行 (コード) または使用 (データ) できず、システムまたはソフトウェア要件を追跡できない実行可能なオブジェクト コード (またはデータ)。 . 例外は埋め込み識別子です。ソース
これは、デッド コードが次のことを意味します。
注: 呼び出されない未参照の変数 / 関数は、コンパイラ / リンカーによって自動的に削除されるため、デッド コードではありません。
例:
if (true) {
// always chosen
} else {
// never chosen -> Dead code
}
非アクティブ化されたコード - 設計上、(a) 実行 (コード) または使用 (データ) を意図していない実行可能オブジェクト コード (またはデータ)。たとえば、以前に開発されたソフトウェア コンポーネントの一部。または (b) ターゲット コンピューター環境の特定の構成でのみ実行 (コード) または使用 (データ) されます。たとえば、ハードウェア ピン選択またはソフトウェア プログラム オプションによって有効にされるコードです。ソース
これは、非アクティブ化されたコードが次のことを意味します。
例:
if (!option9) { // Anything but option 9 will lead to this path being chosen
// Code
} else {
// Code to be executed in the event that option 9 is selected
}
注: 非アクティブ化されたコードはあらゆる種類の形状を持つことができますが、これは本来あるべき姿ではありません。基本的には、特定の条件が満たされた場合にのみ、常に実行されるとは限らない単純なコードです。
デッドコード/非アクティブ化されたコード (引用されたテキストのソースでもあります) をカバーするこの記事と、この外部 Q&Aを確認することをお勧めします。
最初の回答で引用されている箇所は、DO-178B ガイドラインからそのまま引用されているため、これは素晴らしい出発点です。
ただし、デッド コードに関する注記は完全に正確ではありません。これらのタイプのものを削除するかどうかは、コンパイラに依存します。自動的に行うものもあります。それを行うかどうかのオプションがある人もいれば、オプションさえない人もいます。
構成可能なパラメーターを使用して特定の側面を顧客ごとにアクティブ化する共通のアルゴリズムがあるため、設計では非アクティブ化されたコードをかなり使用します。
この 2 つの大きな違いは、コードを記述どおりに実行する意図された構成があるかどうかです。存在し、特定のプロジェクトの一部ではない場合、非アクティブ化されます。コードを実行できる構成がない場合、そのコードは無効であると見なされます。
デバイスの特定の機能が最初のプロジェクトで使用されることを意図していない場合、デバイスドライバーのように再利用可能なソフトウェアを開発しようとしている場合、これは少し注意が必要です。要件があり、未使用のコードのテストを開発し、それらが実行されてテストされる場合、それを使用する将来のプロジェクトの構成が作成されるまで、コードは非アクティブ化されると主張できます。要件とテストがあれば、コードが元の構成で意図せず実行された場合のコードに関する懸念が軽減されます。