如果發現壹個軟件的bug宣傳出去會有什麽後果
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型火箭爆炸瞬間
飛行事故
1994年在蘇格蘭,壹架吉努克型直升飛機墜毀,29名乘客全部罹難。然而最初指責聲都指向飛行員,但後來有證據表明,直升飛機的系統錯誤才是罪魁禍首。
另外壹次因軟件而引發的飛行事故發生在1993年。瑞典的壹架JAS 39鷹獅戰鬥機因飛行控制軟件的Bug而墜毀。
消失在太空
在制造其火星氣候軌道探測器時,壹個NASA的工程小組使用的是英制單位,而不是預定的公制單位。這會造成探測器的推進器無法正常運作。正是因為這個Bug,1999年探測器從距離火星表面130英尺的高度垂直墜毀。此項工程成本耗費3.27億美元,這還不包括損失的時間(該探測器從發射到抵達火星將近壹年時間。)
圖5:火星氣候軌道探測器
太空中看到的爆炸
據傳,在冷戰時期,CIA曾成功向前蘇聯“輸出”壹個有設計缺陷的控制軟件,該軟件用來控制天然氣主管道。(KGB從壹家加拿大公司竊取該軟件。)那個植入的Bug最終引發了1982年的西伯利亞天然氣管道大爆炸。
CIA前高/官裏德回憶道:“那次爆炸的結果是非常驚人的,它是除了核爆炸之外最壯觀的爆炸之壹,騰起的熊熊大火甚至從太空中都能看到,並已被衛星拍攝了下來。”
雖然這個例子是有意而為之的,但其足以證明軟件缺陷可以引發的致命後果。
仔細測試:不僅能省錢,更能救人
雖然本文中提到了10個例子,但這只是冰山壹角。全球每年因軟件缺陷引發的問題數不勝數。
軟件缺陷的代價極其昂貴。2002年,美國國家標準與技術研究所的壹項研究表明,軟件缺陷給美國每年造成的損失高達595億美元。想想全球這個數額會是多大。那項研究還證實:超過1/3的損失——高達222億美元,原本稍加測試,即可避免。
後記
有些 Bug 或許只會引發小毛病,但飛行控制系統軟件和醫療設備軟件,還有其他和人命相關的軟件,絕不應該出現因程序問題,而給民眾生命財產帶來無端災難。