如何确认算法的正确性
如何才能确认软件的正确性?我想做数据恢复找回以前的文件。A盘恢复出来的数据存到B,我有十几个硬盘都需要恢复数据。不删除多余的文件有可能存不下。
我怕删除重复文件,把单独文件给删了。实际上有现成的软件却不敢用。
不了解软件的算法,通过有限的抽样测试能检验软件功能是否完全正确吗?
不了解软件的算法,无法用有限的抽样测试检验软件功能是否完全正确。要保证完全正确可靠,必须要有原理的说明。但是到哪里找到原理的说明呢?总是为此担忧哦。放不下。汇编代码是公开,设计原理有的也是公开的。汇编也要人工从头到尾判断分析吗?阅读汇编就能掌握其技术原理吗?
据我所知对于比较复杂的算法,只看汇编,不掌握原理,或者不看解释说明,不是那么容易就弄懂功能,求解问题的。汇编代码的输入输出是清楚的,是否符合求解的问题也是清楚的。有专门的形式证明。保证覆盖全部的可能性,和执行路径。
部分算法的证明需要前沿数学,状态空间也是爆炸性的。
能论证算法吗?不说明问题,能弄清所解问题为何?
复制移动文件,如何才能保证转移数据的过程中不会出现数据丢失,篡改,覆盖等?难道用户都要看到操作系统的代码才能放心?
扫描一本几百页几千页的书,难道还要完成以后一页一页的查看吗?
输入大批数据处理或者输出大批的数据,难道每一个结果都一一核对吗?保存大批的数据,每一个文件都一一测试吗?自动化检验,数据规模太大,花费的时间空间太多。抽样不能覆盖全部情况。
如何防范程序员在程序里添加漏洞?有人能看到汇编。复杂的功能时间和存储容量消耗的大。汇编也要人工从头到尾判断分析吗?
就是有办法弄清软件的正确性,又有谁会为此付出劳动呢?
页:
[1]