2011年7月19日星期二

可怕 可恨 可笑 的 计算机事故

 据软件专家罗纳德·恩菲尔德报告,在一个典型的大
软件系统中,出现的错误数目惊人:        
 代码行数: 1000000              
 原始软件中的错误: 20000           
 测试后仍然存在的错误:2000          
 每年的失败次数: 200             
 失败后纠正的错误: 200            
 继续保留的错误:1800             
在日常维护中每年增加或修改的代码行数:100000 
 系统中新添的错误:2000            
 在去除新代码中的隐患以后余留的新错误: 200  
 前一年中未能发现的错误:1800         
 错误合计:2000                
 每年预计失败率: 200             
 以下是一些知名的计算机事故:         

  
国防

  施瓦尔岑科普夫将军称,海湾战争中美军使用的“爱国者”导弹
拦截“飞毛腿”导弹的成功率为100%,而后来披露的数字则显示,成
功率只有10%。麻省理工学院的汤姆·波斯托尔教授指出,“爱国者”
最初是设计用来拦截飞机的,它对拦截导弹并不在行,甚至还会因此
造成更大的地面损害。“飞毛腿”比飞机行进得更快,它在重新进入
大气层时会裂开,从而在弹头周围有效地设置一组假目标,令“爱国
者”无所适从。

  另一个问题与“爱国者”的内置时钟有关,它用以预测下一枚
“飞毛腿”何时出现。“爱国者”控制程序中使用的寄存器只有24个
字节的长度,精确度因此受到影响,系统运行的时间越长,累积误差
也越大。海湾战争中,这些系统的运行时间达到100小时,产生了
678米的范围差。一枚未能被拦截的“飞毛腿”命中一个美军阵地,
28名美国士兵全部丧生。波斯托尔教授说:“‘爱国者’连‘飞毛腿’
这样的简单威胁都消除不了……可见我们的战略防御计划是多么困难。”

  1998年美舰导弹误中伊朗655航班客机,290位乘客全部罹难,这
其中有人为的错误,但也同计算机界面的设计缺陷有关。据报道,对
在军舰上使用的系统的测试是在一片麦田里完成的!在英阿马岛之战
中,英国驱逐舰“加以夫”号发射“海镖”导弹击落一架英军直升机,
4位机组成员死亡,原因是它被计算机系统当成了阿根廷飞机。

  
航天

  第一架航天飞机“哥伦比亚”号在发射时,出现了计算机不同步
问题,人称“响彻世界的臭虫之声”;哈勃望远镜升空不久就出现了
故障,原因是一个臭虫深深埋藏在以百万行计的软件代码中。

  
航空

  普利策奖获得者赫什争辩说,1983年韩国007航班客机因误入苏联
领空,最终被苏军导弹击落而机毁人亡的惨剧,完全是由于机组人员
过分依赖飞机上的自动导航系统所致。

  1988年,空中客车A320客机成为第一种使用电子飞行系统的飞机,
从飞行员的操纵杆到飞机的表面都由电线连接起来。这样,所有的操
作都必须通过一个电脑“过滤器”,甚至开灯和冲厕所都是如此!法
航的一架A320客机在一次飞行表演中失事,造成3人死亡。事故调查过
程中,人们对由计算机引起的发动机加速、着陆前的停电和滑行时的
驾驶不稳问题提出质疑,但调查的结论却是飞行员失误。此后,印度
航空公司的一架A320客机又在距跑道1000英尺的地方失事,97人死亡。

  
记账和收费

  自从企业用上了计算机,就一直存在“疯狂账单”的故事。
1990年,一位芝加哥妇女从电话公司那里收到一张8709800.33美元的
账单(实际应为87.98元),她说:“我只不过给我的姐姐打了个电
话。”

  有时候事情反着发生。1992年5月8日美联社报道,美国北达科他
州的一位农民打算从某政府部门手中领取一张价值31美元的支票,结
果拿到的却是4038277.04元!该部门的负责人说:“计算机程序偶尔
会挑出这一数字,把它打印在某个地方,只不过这回它第一次把此数
批在了支票上。”

  
身份认定

  美国密执安州的德里·迪恩·罗甘多次被错误地列入全国犯罪信
息系统,因为他“犯有抢劫和谋杀罪”。事实是一位监狱在逃犯盗用
了他的名字。从1982年到1987年,罗甘被捕5次,最后他不得不向法院
起诉以获得赔偿。

  宾夕法尼亚州的尤金·史密斯花了漫长的时间向当局证明他仍在
人世。1988年,他的钱包被窃,窃贼在多次交通违规后死于一起交通
事故,当时身上带着这个钱包。1990年,史密斯外出时被一位警官截
住,警官称根据记录他已经死亡,因而无权驾车!因为他无法获得有
效的驾驶执照,他丢了在一家仓库开车的工作。当他终于修改了自己
的死亡记录之后,史密斯仍然拿不到驾驶执照,因为那些交通违规还
记在他的名下。

  
医疗

  最广为人知的是加拿大原子能公司制造的Therac-25线性加速放
射器致人死亡事件。该机器由计算机控制,耗资百万元以上,由于5次
连续性的错误造成放射过量,5位病人死亡,2人重伤。死亡病人接受
了超过正常剂量100倍以上的放射。在英国,1000位病人因为一个程序
错误,在长达10年的时间内未能得到有效的癌症治疗,这次是因为放
射量比医嘱少了35%。千人当中只有447人尚在人世。

  
其他

  1992年百事可乐公司发动了一场有奖销售,“中奖号码”被写在
瓶盖里面。由于一次“计算机故障”,大奖号码最后被宣布为“349”,
这一号码大约出现在50万个瓶盖里,而大奖的数额为38000元。结果百
事可乐向每一位“获奖者”支付了19美元,大部分人接受了这一做法,
但4000人向法院控告百事可乐有欺诈行为。

  1993年9月,米兰股票交易所的一个计算机输入错误使得当时意大
利市场上最好的一只股票价格下跌了12%;市场立刻出现了短暂的动
乱。事情过后有人指出,为股票市场这样的巨大系统而写的软件必须
内置核查功能,一旦发现某些数字与从前有较大出入就立刻核查。除
此而外,在公布数字之前还应该有专人把关。

  1993年11月,合众社报道,巴西的一个政府委员会在调查腐败情
况时,动用了计算机反复核对银行账户、支票及预算报告,但就在这
时计算机“冻住”了,所有工作都停止下来。“在试图追查政府的腐
败行为时,网络耗尽了处理资源,包括内存。”也许这一故事指明了
超级计算机的一个新的应用方向。

没有评论:

发表评论