PIE模型
首先,我们需要明确程序的Bug有如下的定义:
1. Fault/Defect
静态的,存在于软件中的缺陷。例如:一段有缺失或者错误的代码。
2. Error
运行时一种不正确的中间状态。
3. Failure
不正确的中间状态传播至程序的输出,能被明显观测到的程序失效。
其次来理一理上述三者的关系:
Fault -> Error -> Failure
这个传播链是可以递归地迭代的,即Fault也可能是其他与本程序交互的程序(系统)的Failure导致的
最后,我们来阐明PIE模型:
PIE模型解释了观测到Failure的条件
1)执行到错误的代码 (Execution)
2)触发错误的中间状态 (Infection)
3)错误传播到最终的输出 (Propagation)
至于为什么是PIE而不叫EIP,我想是因为前者更能形象的反映我们发现bug的过程,先观测到错误的输出,然后逐步逆推错误的代码。

浙公网安备 33010602011771号