形式化方法的一个重要目标是通过自动化或人工指导的方法来证明系统的正确性。但是,似乎即使您可以提供正确性证明,也可能无法保证系统不会失败。例如:
- 规范可能无法正确地对系统进行建模,或者生产系统可能过于复杂而无法建模,或者由于相互矛盾的要求,系统可能固有地存在缺陷。已知哪些技术可以测试规范是否完全有意义?
- 证明过程也可能有缺陷!谁知道这些推理规则是正确和合法的?此外,证明可能非常大,我们如何知道它们不包含错误?这是de Millo,Lipton和Perlis的“社会过程以及定理和程序证明”的批评的核心。现代形式方法研究人员如何回应这种批评?
- 在运行时,有许多不确定的事件和因素会严重影响系统。例如,宇宙射线会以不可预测的方式改变RAM,更一般地说,我们无法保证硬件不会遭受拜占庭式的故障,而Lamport证明了这种故障很难克服。因此,静态系统的正确性不能保证系统不会失败!是否有已知的技术可以解释真实硬件的易失性?
- 目前,测试是我们确定软件有效的最重要工具。似乎它应该是形式方法的补充工具。但是,我主要看到的是侧重于形式方法或测试的研究。关于两者结合的已知知识?