2009年2月份Google的Gmail故障,应该算是最近因软件故障而受到广泛关注的事件。据Google后称,那次故障是因数据中心之间的负载均衡软件的Bug引发的。
Gmail故障还仅是导致用户几个小时内无法访问邮箱,并没有造成伤亡。当然了,对某些用户来讲,是非常不便。
但看了伯乐在线博客的这篇文章后,您会发现,Gmail的故障问题真是“小巫见大巫”了。
一触即发的第三次世界大战
1980年,北美防空联合司令部曾报告称美国遭受导弹袭击。后来证实,这是反馈系统的电路故障问题,但反馈系统软件没有考虑故障问题引发的误报。
1983年,苏联卫星报告有美国导弹入侵,但主管官员的直觉告诉他这是误报。后来事实证明的确是误报。
幸亏这些误报没有激活“核按钮”。在上述两个案例中,如果对方真的发起反击,核战争将全面爆发,后果不堪设想。
图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亿美元。
图3: 阿丽亚娜5型火箭爆炸瞬间
有兴趣的朋友可以详见《阿丽亚娜5型火箭发射失败的调查报告》。
飞行事故
1994年在苏格兰,一架吉努克型直升飞机坠毁,29名乘客全部罹难。然而最初指责声都指向飞行员,但后来有证据表明,直升飞机的系统错误才是罪魁祸首。
另外一次因软件而引发的飞行事故发生在1993年。瑞典的一架JAS 39鹰狮战斗机因飞行控制软件的Bug而坠毁。
消失在太空
在制造其火星气候轨道探测器时,一个NASA的工程小组使用的是英制单位,而不是预定的公制单位。这会造成探测器的推进器无法正常运作。正是因为这个Bug,1999年探测器从距离火星表面130英尺的高度垂直坠毁。此项工程成本耗费3.27亿美元,这还不包括损失的时间(该探测器从发射到抵达火星将近一年时间。)
图5:火星气候轨道探测器
太空中看到的爆炸
据传,在冷战时期,CIA曾成功向前苏联“输出”一个有设计缺陷的控制软件,该软件用来控制天然气主管道。(KGB从一家加拿大公司窃取该软件。)那个植入的Bug最终引发了1982年的西伯利亚天然气管道大爆炸。
CIA前高/官里德回忆道:“那次爆炸的结果是非常惊人的,它是除了核爆炸之外最壮观的爆炸之一,腾起的熊熊大火甚至从太空中都能看到,并已被卫星拍摄了下来。”
虽然这个例子是有意而为之的,但其足以证明软件缺陷可以引发的致命后果。
仔细测试:不仅能省钱,更能救人
虽然本文中提到了10个例子,但这只是冰山一角。全球每年因软件缺陷引发的问题数不胜数。
软件缺陷的代价极其昂贵。2002年,美国国家标准与技术研究所的一项研究表明,软件缺陷给美国每年造成的损失高达595亿美元。想想全球这个数额会是多大。那项研究还证实:超过1/3的损失——高达222亿美元,原本稍加测试,即可避免。
后记
有些缺陷或许只会引发小毛病,但飞行控制系统软件和医疗设备软件,还有其他和人命相关的软件,绝不应该出现因程序问题,而给民众生命财产带来无端灾难。