• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

科学“证明”的本质与软件开发

发布: 2008-9-24 09:59 | 作者: 不详 | 来源: 测试时代采编 | 查看: 29次 | 进入软件测试论坛讨论

领测软件测试网

对任何基本算术事实是可证明的形式理论来说,如果该理论是一致的,那么就可以构造一个算术陈述,它是正确的,但无法使用该理论证明或推翻。

这是一个非常“深刻”和重要的结果。它说的是有一些数学陈述,我们永远无法在包含它们的逻辑系统中证明它们的正误。有趣和偶然的是这一理论本身是可以证明的!

因此我们已经有理由相信,某些知识对我们是不可访问的。

但是GÖDel并不是唯一持有这种观点的人。我们至少知道其它两个领域,在其中我们永远无法得到某些问题的答案。


进入计算机科学家

第一个领域的代表是计算机科学中的“停机问题”。Wikipedia是这样描述该问题的:

给出一个程序的描述和它的初始输入,决定程序在该输入下运行时会不会停止(完成)。另一种可能是程序将一直运行下去无法停止。

Alan Turing在1936年证明了对所有可能输入解决停机问题的通用算法是不存在的。我们说停机问题在图灵机上是不可判定的。因此,又有一类问题我们认为是没有可能的解决方案或答案的。

第二类问题来自组合数学界。2最常见的例子是著名的“旅行商问题”,这个问题乍一看几乎是平淡乏味的:

已知一些城市以及从一座城市到另一座城市的旅行费用,最便宜的遍历所有城市并回到出发城市的路线是什么?

对较少的城市这个问题就是困难的,而且随着城市数量的增加问题的复杂性迅速增长。实际上,当城市数量超过一个非常小的值时,即使使用计算机也无法解决这个问题了,因为需要计算的可能组合的数量增长得太快。3这个问题就是很多“NP完全”问题中的一个。4现在,对这类问题我们的最好解决办法是找出近似解。按照目前的知识,NP完全问题没有精确解。

关键在于,我们有若干来自数学和计算机科学的指示,告诉我们有一些问题是无法解决的,有一些假设是无法被证明正确或是错误的。但是这是一个悲剧吗?从我个人来说,我接受人类永远无法知道一切的观点。也许我们可以近似比我们可以证明的更多的东西。最终事情的某些方面可能被发现是不可知的。那么就由它们去吧。


对现实软件世界的启示

软件开发界中有两个领域直接与“知识的局限性”和“什么组成了一个证明”的提法相对应。前者是测试在软件开发中的作用,后者是迭代开发的提法本身。

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备2023014753号-2
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网