细数软件Bug引发的十大灾难后果

开发
软件的Bug可以说是无法完全避免的,但是容忍Bug长期存在会给我们带来不好的后果。本文将细数软件Bug引发的十大灾难后果,甚至包括可能引发核战争。

2009年2月份Google的Gmail故障,应该算是最近因软件故障而受到广泛关注的事件。据Google后称,那次故障是因数据中心之间的负载均衡软件的Bug引发的。

[[16646]]

Gmail故障还仅是导致用户几个小时内无法访问邮箱,并没有造成伤亡。当然了,对某些用户来讲,是非常不便。

但看了这篇文章后,您会发现,Gmail的故障问题真是“小巫见大巫”了。

一触即发的第三次世界大战

1980年,北美防空联合司令部曾报告称美国遭受导弹袭击。后来证实,这是反馈系统的电路故障问题,但反馈系统软件没有考虑故障问题引发的误报。

1983年,苏联卫星报告有美国导弹入侵,但主管官员的直觉告诉他这是误报。后来事实证明的确是误报。

幸亏这些误报没有激活“核按钮”。在上述两个案例中,如果对方真的发起反击,核战争将全面爆发,后果不堪设想。

[[16647]]

图1:游戏模拟图

“漏网”的臭氧层空洞

南极洲上方的臭氧层空洞一直存在但长期未被发现,这是为什么?

1978年,NASA启动臭氧层测绘的计划。在设计之时,用于该计划的数据分析软件忽略了和预测值有很大差距的数据。直到1985年,才发现南极洲上方的臭氧层空洞,但不是NASA发现的(是英国科学家先发现的)。直到NASA重新检测它们的数据,才发现这一错误。在修正错误后,NASA证实南极臭氧层的确有个很大的空洞。

图2:2010年7月19日 臭氧层“CT照片”

致命的辐射治疗

1985到1987年,Therac-25辐射治疗设备卷入多宗因辐射剂量严重超标引发的医疗事故,其罪魁祸首是医疗设备电力软件的Bug。据统计,大量患者接受高达100倍的预定剂量(治疗),其中至少3人直接死于辐射剂量超标。

另一宗辐射剂量超标的事故发生在2000年的巴拿马城(巴拿马首都)。从美国Multidata公司引入的治疗规划软件,其(辐射剂量的)预设值有误。有些患者接受了超标剂量的治疗,至少有5人死亡。后续几年中,又有21人死亡,但很难确定这21人中到底有多少人是死于本身的癌症,还是辐射治疗剂量超标引发的不良后果。

阿丽亚娜5型火箭的杯具处/女秀

1996年6月4日,阿丽亚娜5型运载火箭的首航,原计划将运送4颗太阳风观察卫星到预定轨道,但因软件引发的问题导致火箭在发射39秒后偏轨,从而激活了火箭的自我摧毁装置。阿丽亚娜5型火箭和其他卫星在瞬间灰飞烟灭。(见图3)

后来查明的事故原因是:代码重用。阿5型的发射系统代码直接重用了阿4型的相应代码,而阿4型的飞行条件和阿5型的飞行条件截然不同。此次事故损失3.7亿美元。

[[16648]]

图3: 阿丽亚娜5型火箭爆炸瞬间

飞行事故

1994年在苏格兰,一架吉努克型直升飞机坠毁,29名乘客全部罹难。然而最初指责声都指向飞行员,但后来有证据表明,直升飞机的系统错误才是罪魁祸首。

另外一次因软件而引发的飞行事故发生在1993年。瑞典的一架JAS 39鹰狮战斗机因飞行控制软件的Bug而坠毁。

消失在太空

在制造其火星气候轨道探测器时,一个NASA的工程小组使用的是英制单位,而不是预定的公制单位。这会造成探测器的推进器无法正常运作。正是因为这个Bug,1999年探测器从距离火星表面130英尺的高度垂直坠毁。此项工程成本耗费3.27亿美元,这还不包括损失的时间(该探测器从发射到抵达火星将近一年时间。)

[[16649]]

图4:火星气候轨道探测器

太空中看到的爆炸

据传,在冷战时期,CIA曾成功向前苏联“输出”一个有设计缺陷的控制软件,该软件用来控制天然气主管道。(KGB从一家加拿大公司窃取该软件。)那个植入的Bug最终引发了1982年的西伯利亚天然气管道大爆炸。

CIA前高/官里德回忆道:“那次爆炸的结果是非常惊人的,它是除了核爆炸之外最壮观的爆炸之一,腾起的熊熊大火甚至从太空中都能看到,并已被卫星拍摄了下来。”

虽然这个例子是有意而为之的,但其足以证明软件缺陷可以引发的致命后果。

仔细测试:不仅能省钱,更能救人

虽然本文中提到了10个例子,但这只是冰山一角。全球每年因软件缺陷引发的问题数不胜数。

软件缺陷的代价极其昂贵。2002年,美国国家标准与技术研究所的一项研究表明,软件缺陷给美国每年造成的损失高达595亿美元。想想全球这个数额会是多大。那项研究还证实:超过1/3的损失——高达222亿美元,原本稍加测试,即可避免。

后记

有些缺陷或许只会引发小毛病,但飞行控制系统软件和医疗设备软件,还有其他和人命相关的软件,绝不应该出现因程序问题,而给民众生命财产带来无端灾难

【编辑推荐】

  1. 由一个Bug引出的自动扩张WPF树型表格列宽问题
  2. FirePHP:像Firebug那样调试你的PHP代码
  3. WCF Bug解决方案详解
  4. 写给测试人员:不是所有的bug都需要修复
  5. 为Web程序员解毒:9个IE常见Bug的解决方案
责任编辑:彭凡 来源: 伯乐在线
相关推荐

2022-11-24 18:29:33

数据中心

2009-04-24 00:07:43

2015-03-25 19:00:22

2016-01-21 10:00:38

2010-01-01 20:32:31

2010-03-17 09:30:04

2010-09-13 12:03:08

2010-04-21 09:14:36

微软

2010-01-12 10:44:32

Silverlight

2015-07-29 11:34:51

DT云计算发展趋势

2015-11-10 09:50:22

2013-08-22 09:34:19

灾难恢复虚拟化

2014-03-13 11:22:00

JavaScriptJS框架

2015-06-09 09:25:34

2020-05-18 07:00:44

云提供商公共云托管

2011-11-15 08:46:26

项目管理

2016-11-09 21:33:29

2017-05-23 08:54:51

2011-11-28 15:59:54

云计算

2018-09-25 15:02:57

IAM身份验证身份识别与访问管理
点赞
收藏

51CTO技术栈公众号