Dead Code和Deactivated Code有什么区别?

时间:2016-11-25 12:46:29

标签: dead-code do178-b

根据Dead codeDeactivated codeDO178-b之间有什么区别?

请提供一些示例来突出差异。

2 个答案:

答案 0 :(得分:3)

  

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

这意味着死代码是:

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

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

示例:

if (true) {
    // always chosen
} else {
    // never chosen -> Dead code
}
  

去激活代码 - 可执行目标代码(或数据),其设计是(a)不打算执行(代码)或使用(数据),例如,先前开发的软件组件的一部分;或者(b)仅在目标计算机环境的某些配置中执行(代码)或使用(数据),例如,由硬件引脚选择或软件编程选项启用的代码。的 Source

这意味着停用的代码为:

  • 可执行代码
  • 在特定航空电子设备盒的某个软件版本的运行时操作期间不会执行的软件
  • 可能在更高版本或特殊操作期间执行或仅在某些情况下执行的软件

示例:

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
}

注意:停用的代码可以有各种形状,这不是它的样子。它基本上只是代码,并不总是执行,只有满足某些条件。

我建议您查看this article,其中包含死代码/停用代码(也恰好是引用文字的来源),以及this external Q&A

答案 1 :(得分:0)

第一个答案中引用的段落是DO-178B指南的逐字记录,因此这是一个很好的开始。

关于死码的说明并不完全准确。编译器取决于是否删除了这些类型的东西。有些人会自动完成。有些人可以选择是否这样做,而有些人甚至没有选择。

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

两者之间的最大区别在于是否存在将执行代码写入的预期配置。如果有,并且它不是您的特定项目的一部分,那么它将被停用。如果没有可以执行代码的配置,则认为它已经死了。

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