根据DO178-b,Dead code和Deactivated code的区别是什么?
请提供一些例子来突出区别。
发布于 2016-11-25 22:16:52
死代码-由于设计错误而无法在目标计算机环境的操作配置中执行(代码)或使用(数据)的可执行目标代码(或数据),并且无法追溯到系统或软件要求。嵌入式标识符是一个例外。
这意味着死代码是:
期间永远不会执行
注意:未被调用的未引用变量/函数不是死代码,因为它们会通过编译器/链接器自动删除。
示例:
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
}注意:停用的代码可以有各种各样的形状,但这不是它必须看起来的样子。它基本上就是不总是执行的代码,只有在满足特定条件时才会执行。
我建议查看涵盖死代码/停用代码(恰好也是引用文本的源代码)的this article,以及this external Q&A。
发布于 2018-02-03 00:42:11
第一个答案中引用的段落是从DO-178B指南逐字引用的,所以这是一个很好的开始。
不过,关于死代码的注释并不完全准确。这取决于编译器是否删除了这些类型的东西。有些是自动完成的。有些人有做或不做的选择,而还有一些人甚至没有选择。
我们在我们的设计中使用了相当多的停用代码,因为我们有常用的算法,使用可配置参数来激活某个客户与另一个客户的某些方面。
两者之间的最大区别在于是否有一个预期的配置来执行所编写的代码。如果有,并且它不是您的特定项目的一部分,那么它将被停用。如果没有可以执行代码的配置,那么它就被认为是死的。
如果您试图开发可重用的软件,例如设备驱动程序,当设备的某些功能不打算在初始项目中使用时,这会变得有点棘手。如果您有需求并为未使用的代码开发测试,并且这些代码得到执行和测试,那么可以认为这些代码将被停用,直到创建将使用它的未来项目的配置。有了需求和测试,如果代码在原始配置中无意中执行,应该可以减轻对代码的担忧。
https://stackoverflow.com/questions/40805425
复制相似问题