1.2軟件危機
軟件危機的產生及概念
“軟件”這個名詞的正式提出是在1958年,而在1968年的NATO會議上,軟件危機這個名詞就被提出來了,難道僅僅過了十年功夫,軟件的發展就到了危急關頭了?
什么是軟件危機呢?
它是指在計算機軟件的開發和維護過程中,所遇到的一系列嚴重問題。
這些問題包括:項目超出預算、項目超過計划完成時間、軟件運行效率很低、軟件質量差、軟件通常不符合要求、項目難以管理並且代碼難以維護、軟件不能交付等。
最終導致的后果:軟件的效率和質量急劇下降。
案例
1、IBM虧死
•1961到1964年期間由IBM公司開發操作系統。該系統共約100萬條指令,花費了5000個人年,開發總投資5億美元,達到了當時美國研究原子彈的曼哈頓計划投資20億美元的1/4。結果卻令人沮喪,錯誤多達2000個以上,最終也沒能完全實現當初的設想。
•不過,該項目總工程師Frederick Brooks后來總結此次經驗教訓,寫了一本軟件工程領域的經典著作《人月神話》,他本人更在1999年獲得了計算機領域的最高獎——“圖靈獎”。
2、美國火箭爆炸
因為某個參數寫錯,導致最終不得不銷毀火箭。
3、美國銀行虧大錢
•美國銀行1982年進入信托商業領域,並規划發展信托軟件系統。
•項目原訂預算2千萬美元,開發時程9個月,預計於1984年12月31日以前完成,后來至1987年3月都未能完成該系統,期間已投入6千萬美元。
•美國銀行最終因為此系統不穩定而不得不放棄,虧了很多億。
時代趨勢
軟件成本日益增加
從最開始占成本的不到百分之20,到現在占百分之八十左右。
軟件技術進步 < 需求增長
隨着計算機技術的發展,人們對計算機的需求也在不斷的提高,人們希望軟件能辦到更多的事情。
然而,當時的計算機技術進步程度並不能夠完全滿足人們日益增長的需求,所以開發者只能通過不斷增加軟件復雜度來彌補技術進步與需求增長之間的差距。
客觀問題尚且可以通過技術的進步降低軟件復雜度得以解決,比如,機器學習的應用曾經陷入停滯,但由於GPU技術的登台解決了性能問題從而使得人工智能進入了新的時代;主觀問題則是通過技術進步也無法解決的,必須讓開發者具備對軟件開發的正確理解。
產生軟件危機的原因
兩個方面。
客觀:軟件本身特點
•邏輯部件太多
•規模龐大,復雜度過高
主觀:不正確的開發方法
•忽視需求分析
•錯誤認為:軟件開發=程序編寫
•輕視軟件維護
消除軟件危機的途徑:軟件工程!
首先,我們要對計算機軟件有一個正確的認識,即軟件≠程序,它還包括數據與文檔;
第二,必須充分認識到,軟件開發不是某種個體勞動的神秘技巧,而應該是一種組織良好、管理嚴密、各類人員協同配合、共同完成的工程項目;
第三,推廣使用在實踐中總結出來的開發軟件的成功技術和方法,從而開發和使用更好的軟件工具。
綜合完成以上三點,軟件危機的問題才能得以徹底解決。