看起来老铁软件是坚如磐石的。这是为什么?是不是因为软件太成熟了,所有的bug都被解决了?或者是因为人们已经习惯了这些错误,以至于他们甚至不认识它们并解决它们?软件规格从第一天起就很完美吗?一旦软件编写完成,一切就都能正常工作了吗?我试图理解我们是如何从现在每个人都拥护的大型机计算时代转变为感觉 TDD 是现在的发展方向的。

有帮助吗?

解决方案

为什么地球上,你认为他们没有错误?

IBM拥有的广大的用于错误报告和决议支持基础设施(PMRS说明,APAR的PTF和),这是大量使用。

尚未触及多年大型机软件肯定会被很好地理解(至少在其特性而言),将可能有许多错误固定或周围的工作。所有的新东西,现在正在开发实际计划从GA(一般可用性)一定数量的错误和补丁到至少GA + 36个月。事实上,在IBM我的一位前任老板在使用却步到被迫与该行计划提供错误的数字:“我们不是的计划的有任何错误,”

在大型机拥护RAS原则(可靠性,可用性和可维护性)超出了大多数台式机的硬件和软件都不能渴望 - 这只是我当然意见,但我是正确的: - )

这是因为IBM非常清楚的是修复bug的成本增加了很多,你通过发展循环移动 - 这是便宜很多了修正Bug的单元测试比它是修复一个在生产中,术语的两个钱声誉。

有花费仅释放出无bug的软件,但精力和成本很大,即使他们没有得到它的权利所有的时间。

其他提示

有在主框架软件没有错误,只有特色:

我用于在主机应用程序工作。早期的应用程序没有许多错误,因为他们没有做太多。我们写了成百上千FORTRAN行做你在Excel几个公式做什么了。但是,当我们从通过把一个价值在卡1列12-26得到了他们的投入计划,并在卡片2等的1-5列另一个值去,到那些把从交互式ISPF屏幕或光输入笔和上Calcomp公司1012绘图仪或泰克4107终端输出,该错误计数上升。

有ASRE大型机软件缺陷的鱼米之乡,他们只是不publisized尽可能多由于受影响相对较小的组开发。只要问问谁做主机的发展,他们有多少异常终止看到每天的基础上!

我学会了使用调试器并分析大型机上的核心转储。相信我,它们的出现只是因为错误。你完全错了。

然而,大型机架构的设计是为了在高压力下保持稳定性(与非大型机系统相比),所以也许您可以说它们在这方面更好。但代码方面呢?不,错误仍然存​​在......

我的大型机应用软件(而不是操作系统)的经验是非常过时的,但我的记忆是,大多数的应用程序是,从逻辑上讲,很简单的批处理应用程序:

一个)读取的输入文件,点击 b)与加工的每个记录(如果你感觉大胆,更新数据库)点击 c)写一个输出文件

没有用户输入事件担心,一批合格的经营者以监视作业,因为它运行,与外部系统的相互作用小,等,等。

现在业务逻辑可能是复杂的(尤其是如果它写成COBOL 68和数据库没有关系),但如果这就是你必须集中精力,更容易做出可靠的软件。

我从来没有从事软件大型机我自己,但我的父亲是在1970年的一个COBOL程序员。

当你在那些日子里写的软件,查找错误并不像编译源代码并查看编译器吐回你或运行程序的错误消息,并在寻找什么做错了一样简单。打字员不得不冲程序到穿孔卡片,这将被读入计算机,这将打印出你的程序的结果。

我爸爸告诉我,有一天,有人想出了一个完整的纸箱车,把他们旁边,他在那里工作了房间的门。他问:“那是什么?”,和小伙子告诉他,“这是你的程序的输出”。我爸爸做造成的程序打印出一个巨大的乱码量的一叠纸,可能已经使用了一整棵树上是错误的。

您从错误中快速学习这样...

呵呵,他们绝对有错误 - 见thedailywtf.com一些更有趣的例子。也就是说,大多数的一个今天看到“主机”应用程序有30年让所有的扭结制定出来的,所以他们对在过去几年创造了大多数的应用一点的优势。

虽然我没有与大型机经验,我猜这是你做的第一点:软件已经存在了几十年。大多数剩余的错误将被解决。

此外,不要忘了像2000年的惨败。所有的人都在无意中发现的bug已经制定出来,并在20年内大多数情况下,可能会发生了。但每过一段时间,新的形势确实管理一起去,使得即使20岁的软件停止工作。

(这样做的另一个有趣的例子是在发现的bug,我相信,BSD Unix的,结果发现在一年多前,它的存在了20年,没有任何人运行到它)。

我觉得编程只是一个前沿领域,只有选择的工程师可以在它的工作。编程领域中现在是多大得多在每一个方面下进入障碍。

我认为这是一个几件事情。首先是修复-A-bug的重新编译的周期是在大型机通常比较昂贵。这意味着程序员不能只是溅出来的代码和“看看它是否工作。”通过这样做在你的头编译和运行时的模拟,你可以不是让编译器赶上他们发现更多的错误。

二,每个人都和他们的兄弟是不是“程序员”。他们平时训练有素的专家。现在的程序来自人坐在他们的地下室有高中文凭。没有错!!!但它往往有更多的bug是一个已经做专业了20年的工程师。

第三,大型机程序趋于具有与邻居较少的相互作用。在Windows中,例如,一个坏的应用程序可能会崩溃的一个旁边或整个系统。在大型机上,他们通常都分段存储器,因此所有可以崩溃本身。鉴于从各种轻微,可靠消息来源往往使任何程序片状在一定程度上典型的桌面系统上运行的一大堆事。

成熟绝对是一个因素。这是20年前写的,并已得到改进一遍又一遍,以消除缺陷的一种COBOL信用卡处理程序,是不太可能有比0.1版本的任何程序的问题。当然,还有就是这些老改写无限次计划通常最终意大利面条代码,几乎是不可能维持的问题。

任何事情一样,这主要取决于程序员(S)和他们的方法。难道他们做单元测试?难道他们记录和写干净的代码?难道他们只是溅和拖放代码到编译器,看看是否有任何错误(希望编译器可以赶上他们)?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top