Questions tagged «program-correctness»

6
实践中的正式程序验证
作为软件工程师,我为工业产品编写了大量代码。相对复杂的东西,包括类,线程,一些设计工作,但也有一些性能折衷的地方。我做了很多测试,对测试感到厌倦,所以我对正式证明工具(例如Coq,Isabelle)产生了兴趣……我可以使用其中之一来正式证明我的代码没有错误并且可以完成吗用它?-但是,每当我检查其中一种工具时,我都不敢相信它们可用于日常软件工程。现在,那只能是我,而我正在寻找有关的指针/观点/想法:-) 具体来说,我的印象是,要使这些工具之一对我有用,就需要大量投资才能向证明者正确定义所考虑程序的对象,方法...。然后我想知道,鉴于证明者必须处理的所有事情,证明者是否会不仅仅耗尽精力。或者,也许我将不得不摆脱副作用(那些证明工具似乎对声明性语言确实非常有用),我想知道这是否会导致无法使用“经过验证的代码”,因为它不会很快,或者足够小。另外,我不能奢侈地更改使用的语言,它必须是Java或C ++:我不能告诉老板我从现在开始要使用OXXXml进行编码,因为它是OXXXml中唯一的语言。我可以证明代码的正确性... 拥有更多形式验证工具经验的人可以发表评论吗?再说一遍-我很喜欢使用正式的证明工具,我认为它们很棒,但是我给人的印象是它们位于象牙塔中,而Java / C ++的低谷使我无法达到……(PS:I也喜欢 Haskell,OCaml ...不要误解:我是声明性语言和形式证明的粉丝,我只是想看看我如何切实地将其用于软件工程) 更新:由于涉及的范围很广,让我们尝试以下更具体的问题:1)是否有使用证明来证明工业Java / C ++程序正确性的示例?2)Coq是否适合该任务?3)如果适合使用Coq,我应该先用Coq编写程序,然后再从Coq生成C ++ / Java吗?4)这种方法可以处理线程和性能优化吗?

2
程序正确性,规格
来自Wikipedia:在理论计算机科学中,当说算法相对于规范是正确的时,就断言了算法的正确性。 但是问题在于,获得“适当的”规范并不是一件容易的事,并且(据我所知)没有100%正确的方法来获得正确的规范,这只是一种估计,因此,如果我们要仅仅因为谓词看起来像“一个”就以谓词为规范,为什么不仅仅因为它看起来“正确”就认为程序是正确的呢?

6
程序验证技术可以防止Heartbleed类型的错误发生吗?
关于Heartbleed错误,Bruce Schneier在4月15日的Crypto-Gram中写道:““灾难性”是正确的词。在1到10的范围内,这是11。几年前,我读到某个操作系统的内核已经通过现代程序验证系统进行了严格验证。因此,现在是否可以通过应用程序验证技术来防止出现Heartbleed风格的错误,还是这是不现实的,甚至基本上是不可能的?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.