飞行事故
1994年在苏格兰,一架吉努克型直升飞机坠毁,29名乘客全部罹难。然而最初指责声都指向飞行员,但后来有证据表明,直升飞机的系统错误才是罪魁祸首。
另外一次因软件而引发的飞行事故发生在1993年。瑞典的一架JAS 39鹰狮战斗机因飞行控制软件的Bug而坠毁。
消失在太空
在制造其火星气候轨道探测器时,一个NASA的工程小组使用的是英制单位,而不是预定的公制单位。这会造成探测器的推进器无法正常运作。正是因为这个Bug,1999年探测器从距离火星表面130英尺的高度垂直坠毁。此项工程成本耗费3.27亿美元,这还不包括损失的时间(该探测器从发射到抵达火星将近一年时间。)
图4:火星气候轨道探测器
太空中看到的爆炸
据传,在冷战时期,CIA曾成功向前苏联“输出”一个有设计缺陷的控制软件,该软件用来控制天然气主管道。(KGB从一家加拿大公司窃取该软件。)那个植入的Bug最终引发了1982年的西伯利亚天然气管道大爆炸。
CIA前高/官里德回忆道:“那次爆炸的结果是非常惊人的,它是除了核爆炸之外最壮观的爆炸之一,腾起的熊熊大火甚至从太空中都能看到,并已被卫星拍摄了下来。”
虽然这个例子是有意而为之的,但其足以证明软件缺陷可以引发的致命后果。
仔细测试:不仅能省钱,更能救人
虽然本文中提到了10个例子,但这只是冰山一角。全球每年因软件缺陷引发的问题数不胜数。
软件缺陷的代价极其昂贵。2002年,美国国家标准与技术研究所的一项研究表明,软件缺陷给美国每年造成的损失高达595亿美元。想想全球这个数额会是多大。那项研究还证实:超过1/3的损失——高达222亿美元,原本稍加测试,即可避免。
后记
有些缺陷或许只会引发小毛病,但飞行控制系统软件和医疗设备软件,还有其他和人命相关的软件,绝不应该出现因程序问题,而给民众生命财产带来无端灾难。