死亡代码和停用代码之间有什么区别



根据 DO178-bDead codeDeactivated code之间有什么区别?

请提供一些示例以突出显示区别。

死亡代码 - 可执行的对象代码(或数据),由于设计错误而无法执行目标计算机环境的操作配置(代码)或使用(数据),并且无法追溯到系统或软件要求。一个例外是嵌入式标识符。

这意味着死代码为:

  • 可执行代码
  • 在运行时将永远不会执行的软件

注意:未引用的变量/未称为的函数不是死亡代码,因为它们会通过编译器/链接器自动删除。

示例:

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准则,所以这是一个很好的开始。

不过,关于死代码的注释并不完全准确。它取决于是否要删除这些类型的编译器。有些自动进行。有些人有选择是否可以这样做,而另一些人甚至没有选择。

我们在设计中使用了很多停用的代码,因为我们具有使用可配置参数激活一个客户与另一个客户的某些方面的常见算法。

两者之间的很大区别是是否有一种预期的配置,可以按书面执行代码。如果有,并且只是您特定项目的一部分,那么它将被停用。如果没有可以执行代码的配置,则将其视为死亡。

如果您试图开发可重复使用的软件(例如设备驱动程序),那么当设备的某些功能不打算在初始项目上使用时,这会变得有些棘手。如果您有要求并为未使用的代码开发测试,并且这些代码被执行和测试,则可以说该代码已停用,直到创建将来使用它的未来项目的配置为止。如果要在原始配置中无意中执行,则有要求和测试应减轻对代码的担忧。

相关内容

  • 没有找到相关文章

最新更新