軟件缺陷導致嚴重后果的典型案例


用戶為了保證自己業務的順利完成,當然希望選用優質的軟件。質量不佳的軟件產品不僅會使開發商的維護費用和用戶的使用成本大幅度增加,還可能產生其他的責任風險,造成公司信譽下降。一些關鍵的應用領域(例如銀行、證券交易、軍事等)如果質量有問題,還可能造成災難性的后果。

  現在人們已經逐步認識到是軟件中存在的錯誤導致了軟件開發在成本、進度和質量上的失控。 由於軟件是由人來完成的,所以它不可能十全十美,雖然不可能完全杜絕軟件中的錯誤,但是可以通過軟件測試等手段使程序中的錯誤數量盡可能少,密度盡可能小。

  接下來看看成功的軟件測試帶來的好處和不完整的軟件測試帶來的教訓。

  ● IE和Netscape

  在IE 4.0的開發期間,微軟為了打敗Netscape而匯集了一流的開發人員和測試人員。測試人員搭建起測試環境,讓IE在數台計算機上持續運行一個星期,而且要保障IE在幾秒鍾以內可以訪問數千個網站,在無數次的試驗以后,測試人員證明了IE在多次運行以后依然可以保障它的運行速度。而且,為了快速完成IE 4.0的開發,測試人員每天都要對新版本進行測試,不僅要發現問題,而且要找到問題是哪一行代碼造成的,讓開發人員專心於代碼的編寫和修改,最終IE取得了很大的成功。

  ● 360存在嚴重后果缺陷導致系統崩潰

  電腦中了木馬,使用360安全衛士查出一個名為Backdoor/Win32.Agent.cgg的木馬,文件位置為C:\Windows\system32\shdocvw.dll。進行清理后看不到Windows任務欄和桌面圖標,根本進不去桌面,手工運行Explorer.exe也是一閃就關,后來查明是由於360在處理此木馬時存在嚴重缺陷。360安全衛士只是簡單的刪除了木馬文件,沒有進行相關的善后處理工作,致使系統關鍵進程Explorer.exe無法加載。

  ● 2009年2月份Google的Gmail故障

  2009年2月份Google的Gmail故障,Gmail用戶幾小時不能訪問郵箱,應該算是最近因軟件故障而受到廣泛關注的事件。據Google后稱,那次故障是因數據中心之間的負載均衡軟件的Bug引發的。

  360問題和Gmail故障還僅是導致用戶不能正常使用電腦或幾個小時內無法訪問郵箱,並沒有造成傷亡。當然了,對某些用戶來講,是非常不便。

  但看了下面的一個例子您會發現,360和Gmail的問題真是“小巫見大巫”了。

  ● 2011 年溫州7.23 動車事故

  2011年7月23日20時30分05秒,甬溫線浙江省溫州市境內,由北京南站開往福州站的D301次列車與杭州站開往福州南站的D3115次列車發生動車組列車追尾事故,造成40人死亡、172人受傷,中斷行車32小時35分,直接經濟損失19371.65萬元。

  上海鐵路局局長安路生28日說,根據初步掌握的情況分析,“7·23”動車事故是由於溫州南站信號設備在設計上存在嚴重缺陷,遭雷擊發生故障后,導致本應顯示為紅燈的區間信號機錯誤顯示為綠燈。

  ● 致命的輻射治療

  輻射劑量超標的事故發生在2000年的巴拿馬城(巴拿馬首都)。從美國Multidata公司引入的治療規划軟件,其(輻射劑量的)預設值有誤。有些患者接受了超標劑量的治療,至少有5人死亡。后續幾年中,又有21人死亡,但很難確定這21人中到底有多少人是死於本身的癌症,還是輻射治療劑量超標引發的不良后果。

  ● 消失在太空

  在制造其火星氣候軌道探測器時,一個NASA的工程小組使用的是英制單位,而不是預定的公制單位。這會造成探測器的推進器無法正常運作。正是因為這個 Bug,1999年探測器從距離火星表面130英尺的高度垂直墜毀。此項工程成本耗費3.27億美元,這還不包括損失的時間(該探測器從發射到抵達火星將近一年時間。)

  ● 阿麗亞娜5型火箭的杯具處女秀

  1996年6月4日,阿麗亞娜5型運載火箭的首航,原計划將運送4顆太陽風觀察衛星到預定軌道,但因軟件引發的問題導致火箭在發射39秒后偏軌,從而激活了火箭的自我摧毀裝置。阿麗亞娜5型火箭和其他衛星在瞬間灰飛煙滅。

  后來查明的事故原因是:代碼重用。阿5型的發射系統代碼直接重用了阿4型的相應代碼,而阿4型的飛行條件和阿5型的飛行條件截然不同。此次事故損失3.7億美元。

  ● 英特爾奔騰芯片缺陷

  如果在計算機的“計算器”中輸入以下算式:

  (419583/3145727)X3145727-4195835

  結果顯示為零。而在1994年,結果可能為其他答案,這就是英特爾(Intel)奔騰(Pentumn)CPU芯片所帶來的一個浮點觸發缺陷。英特爾為此付出了4億多美元的代價。

  ● 一觸即發的第三次世界大戰

  1980年,北美防空聯合司令部曾報告稱美國遭受導彈襲擊。后來證實,這是反饋系統的電路故障問題,但反饋系統軟件沒有考慮故障問題引發的誤報。

  1983年,蘇聯衛星報告有美國導彈入侵,但主管官員的直覺告訴他這是誤報。后來事實證明的確是誤報。

  幸虧這些誤報沒有激活“核按鈕”。在上述兩個案例中,如果對方真的發起反擊,核戰爭將全面爆發,后果不堪設想。

  通過以上的例子,可以看出軟件發生錯誤時對人類生活所造成的各種影響,有的甚至會帶來災難性的后果。軟件測試可以使這種風險降低,它在一定程度上解放了程序員,使他們能夠更專心於解決程序的算法效率。同時它也減輕了售后服務人員的壓力,交到他們手里的程序再也不是那些“一觸即死機”的定時炸彈,而是經過嚴格檢驗的完整產品。同時,軟件測試的發展對程序的外形、結構、輸入和輸出的規約和標准化提供了參考,並推動了軟件工程的發展。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM