首页 理论教育美国航天飞机太空之旅失败原因揭晓:控制中心计算机软件出现毛病

美国航天飞机太空之旅失败原因揭晓:控制中心计算机软件出现毛病

【摘要】:不出20分钟,他们就将作为航天飞机的首批乘客飞向太空了。技术人员们很快查出:控制中心的计算机系统出了毛病,而且毛病不是在硬件系统上,而是在软件上。有一次美国发射了一枚火筒,火箭升至距离地面几十英里的高空就开始翻滚,地面控制中心不得不下令炸毁了这枚价值近2000万美元的火箭。美国空军的一个运行了8年之久的应用软件,而且还进行过多次修改,后来仍然检查出60条隐患,其中有27条可能酿成灾难性后果。

1981年4月12日,美国航天飞机“哥伦比亚”号载着两名宇航员,从佛罗里达州卡纳维拉尔角被固体燃料将火箭送上了空间轨道,经过54个半小时的飞行绕地球36周后于14日安全着陆。航天飞机首航成功。然而,在很长一个时期内为世人所不知的是,“哥伦比亚”号航天飞机的首航日期本来应该是在这之前的另一个日子。

那一天,也是在卡纳维拉尔角的肯尼迪航天中心,也是那两位宇航员,他们已经安然地坐在“哥伦比亚”号航天飞机的驾驶舱中。在湛蓝的天空中,依稀可见点点晨星在闪烁。不出20分钟,他们就将作为航天飞机的首批乘客飞向太空了。发射已经进入了倒数计时,计数器正闪着荧光向零接近。

突然,警灯发出了刺眼的红光,计数器也停止了记数。航天控制中心顿时紧张起来。技术人员们很快查出:控制中心的计算机系统出了毛病,而且毛病不是在硬件系统上,而是在软件上。

技术人员们立即意识到,他们面临的是一个严重的问题。控制航天飞机的计算机程序包括近万条指令,要从中查出错误,无异于在一本厚厚的百科全书中查找一个拼错了的单词,在短时间内是无法排除软件故障的。就这样一个经过长期精心准备的航天计划不得不延期执行。

其实在美国的航天记录里,类似的事故以前就发生过多次。1965—1970年,美国范登堡基地发射火箭多次失败,绝大部分出于控制系统故障,而控制系统的故障又主要是由应用程序有错所造成的。有时程序一点点小错误就可以造成灾难性的后果。有一次美国发射了一枚火筒,火箭升至距离地面几十英里的高空就开始翻滚,地面控制中心不得不下令炸毁了这枚价值近2000万美元的火箭。事后检查事故原因,竟是由于控制程序中漏掉了一个连字符!美国空军的一个运行了8年之久的应用软件,而且还进行过多次修改,后来仍然检查出60条隐患,其中有27条可能酿成灾难性后果。(www.chuimin.cn)

严格地说,计算机软件系统发生这些不可容忍的错误,也很难完全归罪于那些经过严格训练和审查的程序编写人员。IBM360系列计算机是一个成功的范例,被誉为第三代计算机的杰出代表,公司在这个系列的系统软件上投入了大量的财力和人力,研制费用花了2.5亿美元,在4年期间平均每年投入研制人员1000余人,编制出的指令达500万行。由于规模太大,可靠性很差,为此不得不成立专门小组,负责查找和修改系统软件中的错误,并要求计算机用户解释反映运行中发现的问题,尽管采取了这些严密的措施,也不断地发行了修改的软件新版本,却是屡改屡错,软件中的错误总保持在1000条左右,这反映了软件可靠性不高是一个相当普遍的严重错误。

计算机软件与硬件不匹配,始终是计算机发展进程中的一个突出的矛盾,这个矛盾也成为推动计算机科学技术进步的一个内在动力。

早期的“冯·诺依曼机”即“存储程序计算机”,设计和编写程序一般都由一个人进行,工作十分烦冗,加上型号的计算机指令代码也不一样,因此程序没有通用性,不能进行交流。在这种情况下,虽然电子计算机把人们从烦冗、复杂、重复的数值计算中解放出来,却又把人们的智力禁闭到烦冗、复杂、重复的程序编制之中。计算机软件的这种生产方式,可以称为是“个体手工业方式”,

个体手工业方式的程序编制是一件专业性很强的工作,一个重要的原因就是那时人们对计算机发指令使用的是一种很原始的语言,即机器语言。对于一般人(包括非专业从事程序编制工作的数学家),要读值一条由0和1两个数码组合成的机器指令,其难度不亚于凭借词典和语法书来译读自己看不懂的外语文献