當前位置:首頁 » 入門技巧 » 軟體危機

軟體危機

發布時間: 2021-04-19 05:47:25

A. 什麼是「軟體危機」

軟體危機:軟體發展第二階段的末期,由於計算機硬體技術的進步。一些復雜的、大型的軟體開發項目提出來了,但,軟體開發技術的進步一直未能滿足發展的要求。在軟體開發中遇到的問題找不到解決的辦法,使問題積累起來,形成了尖銳的矛盾,因而導致了軟體危機。主要表現在以下幾個方面:

a.經費預算經常突破,完成時間一再拖延。

b.開發的軟體不通滿足用戶要求。

c.開發的軟體可維護性差。

d. 開發的軟體可靠性差。

軟體危機產生的原因是由於軟體產品本身的特點以及開發軟體的方式、方法、技術和人員引起的:

a.軟體的規模越來越大,結構越來越復雜。

b.軟體開發管理困難而復雜。

c.軟體開發費用不斷增加。

d.軟體開發技術落後。

e.生產方式落後。

f.開發工具落後,生產率提高緩慢。

參考書是這么說的,但是我覺得最大的因素是因為,信息技術的突飛猛進,使得軟體開發跟不上,就拿個硬體來說,硬體越來越來快更新,當然這對軟體開發無疑是一個很好的環境,但是軟體開發也要去適應硬體的新規格等等問題,等到能了解到新硬體的新規格,更新的硬體又出來了。就這樣就搞了個死循環,還有技術的日益更新,今天這個技術好,所以開發時就用這個技術,然而,開發到一半,新的技術又來了,舊的技術還沒有掌握好,新的又來,跟不上啊,當然還有很多其他的例子,在這里就不一一舉例說明啦,大概的,也就參考書上所提的東西。

B. 什麼是軟體危機

軟體危機

軟體危機的形成
1.硬體生產率大幅提高
如今,計算機的發展已進入一個新的歷史階段;
硬體產品已系列化、標准化,"即插即用"。
硬體產品的生產可以採用最高精尖的現代化工具和手段、自動成批生產。生產效率幾百萬倍的提高。
生產能力過剩。
2. 軟體生產隨規模增大復雜度增大
以美國宇航局的軟體系統為例:
1963年 水星計劃系統 200萬條指令
1967年 雙子星座計劃系統 400萬條指令
1973年 阿波羅計劃系統 1000萬條指令
1979年 哥倫比亞太空梭系統 4000萬條指令
假設1個人一年生產一萬條有效指令,那麼是否4000人生產一年,或400人生產10年就能完成任務呢?答案是否定的。一萬條指令的復雜度決不僅僅是100條指令復雜度的100倍。
3. 軟體生產率很低
伴隨計算機的普及,整個社會對計算機應用的需求越來越大。
但軟體的生產卻還沿用"手工作坊"的生產方式,人工編程生產。生產效率僅提高了幾倍。
生產能力極其低下。
4. 硬、軟體供需失衡
社會大量需求,生產成本高,生產過程式控制制復雜,生產效率低等等因素構成軟體生產的惡性循環。
由此產生"軟體危機"。
5. 矛盾引發"軟體危機"
軟體危機是指在計算機軟體的開發和維護過程中所遇到的一系列嚴重問題。
為了研究、解決軟體危機,誕生了一門新興學科--軟體工程學。它把軟體作為工程對象,從技術措施和組織管理兩個方面來研究、解決軟體危機。

軟體危機的具體體現
1. 軟體開發進度難以預測
拖延工期幾個月甚至幾年的現象並不罕見,這種現象降低了軟體開發組織的信譽。以丹佛新國際機場為例:
該機場規模是曼哈頓機場的兩倍,寬為希思機場的10倍,可以全天侯同時起降三架噴氣式客機;投資1.93億美元建立了一個地下行李傳送系統,總長21英里,有4,000台遙控車,可按不同線路在20家不同的航空公司櫃台、登機門和行李領取處之間發送和傳遞行李;支持該系統的是5,000個電子眼、400 台無線電接受機、56台條形碼掃描儀和100台計算機。按原定計劃要在1993年萬聖節前啟用,但一直到1994年6月,機場的計劃者還無法預測行李系統何時能達到可使機場開放的穩定程度。
2. 軟體開發成本難以控制
投資一再追加,令人難於置信。往往是實際成本比預算成本高出一個數量級。
而為了趕進度和節約成本所採取的一些權宜之計又往往損害了軟體產品的質量,從而不可避免地會引起用戶的不滿。
3. 用戶對產品功能難以滿足
開發人員和用戶之間很難溝通、矛盾很難統一。往往是軟體開發人員不能真正了解用戶的需求,而用戶又不了解計算機求解問題的模式和能力,雙方無法用共同熟悉的語言進行交流和描述。
在雙方互不充分了解的情況下,就倉促上陣設計系統、匆忙著手編寫程序,這

C. 軟體危機的表現有哪些

1、軟體開發進度難以預測

拖延工期幾個月甚至幾年的現象並不罕見,這種現象降低了軟體開發組織的信譽。

2、軟體開發成本難以控制

投資一再追加,令人難於置信。往往是實際成本比預算成本高出一個數量級。而為了趕進度和節約成本所採取的一些權宜之計又往往損害了軟體產品的質量,從而不可避免地會引起用戶的不滿。

3、用戶對產品功能難以滿足

開發人員和用戶之間很難溝通、矛盾很難統一。在雙方互不充分了解的情況下,就倉促上陣設計系統、匆忙著手編寫程序,這種閉門造車的開發方式必然導致最終的產品不符合用戶的實際需要。

4、軟體產品質量無法保證

系統中的錯誤難以消除。軟體為邏輯產品,質量問題很難以統一的標準度量,因而造成質量控制困難。軟體產品並不是沒有錯誤,而是盲目檢測很難發現錯誤,而隱藏下來的錯誤往往是造成重大事故的隱患。

5、軟體產品難以維護

軟體產品本質上為開發人員的代碼化的邏輯思維活動,他人難以替代。除非是開發者本人,否則很難及時檢測、排除系統故障。為使系統適應新的硬體環境,或根據用戶的需要在原系統中增加一些新的功能,又有可能增加系統中的錯誤。

6、軟體缺少適當的文檔資料

缺乏必要的文檔資料或者文檔資料不合格,將給軟體開發和維護帶來許多嚴重的困難和問題。



(3)軟體危機擴展閱讀

隨著計算機應用領域的擴大,人們對軟體的需求量劇增,對軟體的正確性提出了更高的要求,並迫切地需要縮短軟體生產周期。但是,當時的軟體編制還是過多地依賴於程序員的能力和技巧,這就導致了軟體的生產周期長,可靠性及可維護性也很差。

軟體開發遠遠滿足不了社會的需求,從而爆發了一場「軟體危機」。所謂軟體危機是指在計算機軟體的開發和維護過程中所遇到的一系列嚴重問題。實際上幾乎所有的軟體都不同程度地存在問題。

D. 歷史上著名的軟體危機事件

1.IBMOS/360

IBMOS/360操作系統被認為是一個典型的案例。到現在為止,它仍然被使用在360系列主機中。這個經歷了數十年,極度復雜的軟體項目甚至產生了一套不包括在原始設計方案之中的工作系統。OS/360是第一個超大型的軟體項目,它使用了1000人左右的程序員。

佛瑞德·布魯克斯在隨後他的大作《人月神話》中曾經承認,在他管理這個項目的時候,他犯了一個價值數百萬美元的錯誤。

2.美國銀行信託軟體系統開發案

美國銀行1982年進入信託商業領域,並規劃發展信託軟體系統。項目原訂預算2千萬美元,開發時程9個月,預計於1984年12月31日以前完成,後來至1987年3月都未能完成該系統,期間已投入6千萬美元。

美國銀行最終因為此系統不穩定而不得不放棄,並將340億美元的信託賬戶轉移出去,並失去了6億美元的信託生意商機。

(4)軟體危機擴展閱讀:

軟體危機表現在以下四個方面:

(1)經費預算經常突破,完成時間一再拖延。由於缺乏軟體開發的經驗和軟體開發數據的積累,使得開發工作的計劃很難制定。

主觀盲目制定計劃,執行起來與實際情況有很大差距,使得開發經費一再突破。由於對工作量估計不足,對開發難度估計不足,進度計劃無法按時完成,開發時間一再拖延。

(2)開發的軟體不能滿足用戶要求。開發初期對用戶的要求了解不夠明確,未能得到明確的表達。開發工作開始後,軟體人員和用戶又未能及時交換意見,使得一些問題不能及時解決,導致開發的軟體不能滿足用戶的要求,因而導致開發失敗。

(3)開發的軟體可維護性差。開發過程中沒有同意的、公認的規范,軟體開發人員按各自的風格工作,各行其是,開發過程無完整、規范的文檔,發現問題後進行雜亂無章的修改。程序結構不好,運行時發現錯誤也很難修改,導致維護性差。

(4)開發的軟體可靠性差。由於在開發過程中,沒有確保軟體質量的體系和措施,在軟體測試時,又沒有嚴格的、充分的、完全的測試,提交給用戶的軟體質量差,在運行中暴露出大量的問題。

參考資料來源:網路-軟體危機

E. 軟體危機產生的原因,以及應對方法

軟體危機是指落後的軟體生產方式無法滿足迅速增長的計算機軟體需求,從而導致軟體開發與維護過程中出現一系列嚴重問題的現象。

產生軟體危機的原因主要有兩個方面:

1.這與軟體本身的特性有關。

與硬體不同,軟體是計算機系統的邏輯部分,而不是物理部分。軟體樣品是產品,試制過程也是生產過程。

軟體不會因使用時間過長而「老化」或「磨損」;在編寫程序代碼並在計算機上運行之前,很難測量軟體開發過程的進度和評估軟體質量。因此,軟體開發過程的管理和控制是非常困難的。

2.軟體開發人員的弱點。

首先,軟體產品是人們思考的結果,所以軟體產品的水平最終在很大程度上取決於軟體人員的教育、培訓和經驗積累。

合作開發大型軟體通常需要很多人,即使對於一個軟體開發人員深入研究領域的應用程序,所以你需要用戶和軟體和軟體開發人員之間的溝通,不可避免地發生在這個過程中理解的差異,導致後續錯誤的設計或實現。

(5)軟體危機擴展閱讀:

解決途徑

人們開始開發過程中軟體開發和軟體工具的使用,協助軟體項目管理和生產技術,人們還將使用在軟體生命周期的所有階段的軟體工具有機地集合作為一個整體,形成可以支持軟體開發和維護的整個過程的集成軟體支持環境,以解決軟體危機從管理和技術兩個方面的問題。

此外,人工智慧和軟體工程的結合在20世紀80年代後期成為一個活躍的研究領域。基於程序轉換、自動生成和可復用軟體的新軟體技術的研究取得了一定的進展。

在軟體工程理論的指導下,發達國家建立了較為完整的軟體產業生產體系,形成了較強的軟體生產能力。軟體標准化和可重用性受到業界的高度重視,在避免勞動重復使用和緩解軟體危機方面發揮了重要作用。

F. 軟體危機形成的原因!!!

軟體危機(Software Crisis) 是計算機軟體在它的開發和維護過程中所遇到的一系列嚴重問題。概括地說,主要包含兩方面的問題:如何開發軟體,怎樣滿足對軟體日益增長的需求;如何維護數量不斷膨脹的已有軟體。軟體發展第二階段的末期,由於計算機硬體技術的進步。一些復雜的、大型的軟體開發項目提出來了,但軟體開發技術的進步一直未能滿足發展的要求。在軟體開發中遇到的問題找不到解決的辦法,使問題積累起來,形成了尖銳的矛盾,因而導致了軟體危機。主要表現在以下幾個方面:

a.經費預算經常突破,完成時間一再拖延。

b.開發的軟體不通滿足用戶要求。

c.開發的軟體可維護性差。

d. 開發的軟體可靠性差。

軟體危機產生的原因是由於軟體產品本身的特點以及開發軟體的方式、方法、技術和人員引起的:

a.軟體的規模越來越大,結構越來越復雜。

b.軟體開發管理困難而復雜。

c.軟體開發費用不斷增加。

d.軟體開發技術落後。

e.生產方式落後。

f.開發工具落後,生產率提高緩慢。

G. 什麼是軟體危機,為什麼產生軟體危機

軟體危機是指落後的軟體生產方式無法滿足迅速增長的計算機軟體需求,從而導致軟體開發與維護過程中出現一系列嚴重問題的現象。

產生軟體危機的原因主要有兩個方面:

1、與軟體本身的特點有關。

軟體不同於硬體,它是計算機系統中的邏輯部件而不是物理部件;軟體樣品即是產品,試制過程也就是生產過程。

軟體不會因使用時間過長而「老化」或「用壞」;軟體具有可運行的行為特性,在寫出程序代碼並在計算機上試運行之前,軟體開發過程的進展情況較難衡量,軟體質量也較難評價,因此管理和控制軟體開發過程十分困難。

2、來自於軟體開發人員的弱點。

其一,軟體產品是人的思維結果,因此軟體生產水平最終在相當程度上取決於軟體人員的教育、訓練和經驗的積累。

其二,對於大型軟體往往需要許多人合作開發,甚至要求軟體開發人員深入應用領域的問題研究,這樣就需要在用戶與軟體人員之間以及軟體開發人員之間相互通訊,在此過程中難免發生理解的差異,從而導致後續錯誤的設計或實現。

(7)軟體危機擴展閱讀:

解決途徑

在軟體開發過程中人們開始研製和使用軟體工具,用以輔助進行軟體項目管理與技術生產,人們還將軟體生命周期各階段使用的軟體工具有機地集合成為一個整體,形成能夠連續支持軟體開發與維護全過程的集成化軟體支援環境,以期從管理和技術兩方面解決軟體危機問題。

此外,人工智慧與軟體工程的結合成為80年代末期活躍的研究領域。基於程序變換、自動生成和可重用軟體等軟體新技術研究也已取得一定的進展,把程序設計自動化的進程向前推進一步。

在軟體工程理論的指導下,發達國家已經建立起較為完備的軟體工業化生產體系,形成了強大的軟體生產能力 。軟體標准化與可重用性得到了工業界的高度重視,在避免重用勞動,緩解軟體危機方面起到了重要作用。

H. 軟體危機有什麼表現

軟體開發進度難以預測
拖延工期幾個月甚至幾年的現象並不罕見,這種現象降低了軟體開發組織的信譽。
軟體開發成本難以控制
投資一再追加,令人難於置信。往往是實際成本比預算成本高出一個數量級。
而為了趕進度和節約成本所採取的一些權宜之計又往往損害了軟體產品的質量,從而不可避免地會引起用戶的不滿。
用戶對產品功能難以滿足
開發人員和用戶之間很難溝通、矛盾很難統一。往往是軟體開發人員不能真正了解用戶的需求,而用戶又不了解計算機求解問題的模式和能力,雙方無法用共同熟悉的語言進行交流和描述。
在雙方互不充分了解的情況下,就倉促上陣設計系統、匆忙著手編寫程序,這種"閉門造車"的開發方式必然導致最終的產品不符合用戶的實際需要。
軟體產品質量無法保證
系統中的錯誤難以消除。軟體是邏輯產品,質量問題很難以統一的標準度量,因而造成質量控制困難。
軟體產品並不是沒有錯誤,而是盲目檢測很難發現錯誤,而隱藏下來的錯誤往往是造成重大事故的隱患。
軟體產品難以維護
軟體產品本質上是開發人員的代碼化的邏輯思維活動,他人難以替代。除非是開發者本人,否則很難及時檢測、排除系統故障。
為使系統適應新的硬體環境,或根據用戶的需要在原系統中增加一些新的功能,又有可能增加系統中的錯誤。
軟體缺少適當的文檔資料
文檔資料是軟體必不可少的重要組成部分。實際上,軟體的文檔資料是開發組織和用戶的之間權利和義務的合同書,是系統管理者、總體設計者向開發人員下達的任務書,是系統維護人員的技術指導手冊,是用戶的操作說明書。

I. 什麼是軟體危機

軟體危機指,隨著計算機工業的發展,在軟體開發過程中逐漸形成了一些矛盾。比如:軟體開發沒有計劃性;軟體前期需求分析不足;軟體開發過程沒有規范等等。這些矛盾表現在軟體開發中導致了一系列問題,如開發計劃無法順利執行,成本昂貴,開發的軟體錯誤百出等等。正是這種軟體危機才促使人們尋求解決方法,也就產生了軟體工程。

J. 什麼是軟體危機請詳細舉例闡述

軟體危機(Software Crisis) 是計算機軟體在它的開發和維護過程中所遇到的一系列嚴重問題。概括地說,主要包含兩方面的問題:如何開發軟體,怎樣滿足對軟體日益增長的需求;如何維護數量不斷膨脹的已有軟體。

「軟體危機」使得人們開始對軟體及其特性進行更深一步的研究,人們改變了早期對軟體的不正確看法。早期那些被認為是優秀的程序常常很難被別人看懂,通篇充滿了程序技巧。現在人們普遍認為優秀的程序除了功能正確,性能優良之外,還應該容易看懂、容易使用、容易修改和擴充。

程序設計語言雖然為計算機的應用開拓了無比廣闊的前景,但游盪在軟體世界的幽靈——「軟體危機」依然存在。因為軟體的開發不僅受到程序設計的方法、結構的制約,而且受到開發周期以及軟體開發成本的限制,更重要的是軟體質量的保障與其程序設計的正確性關系極大。如果所開發的軟體其可靠性得不到保障,在運行中將會產生不堪設想的嚴重後果。

60年代中期以後,計算機硬體技術日益進步,計算的存貯容量、運算速度和可靠性明顯提高,生產硬體的成本不斷降低。計算機價格的下跌為它的廣泛應用創造了極好的條件。在這種形勢下,迫切要求計算機軟體也能與之相適應。因而,一些開發大型軟體系統的要求提了出來。然而軟體技術的進步一直未能滿足形勢發展的需要,在大型軟體的開發過程中出現了復雜程度高、研製周期長、正確性難以保證的三大難題。遇到的問題找不到解決辦法,致使問題堆積起來,形成了人們難以控制的局面,出現了所謂的「軟體危機」。

最為突出的例子是美國IBM公司於1963年~1966年開發的IBM360系列機的操作系統。該軟體系統花了大約5 000人一年的工作量,最多時,有 1000人投入開發工作,寫出近100萬行的源程序。盡管投入了這么多的人力和物力,得到的結果卻極其糟糕。據統計,這個操作系統每次發行的新版本都是從前一版本中找出1000個程序錯誤而修正的結果。可想而知,這樣的軟體質量糟到了什麼地步。

難怪該項目的負責人F·D·希羅克斯在總結該項目時無比沉痛地說:「……正像一隻逃亡的野獸落到泥潭中作垂死掙扎,越是掙扎,陷得越深,最後無法逃脫滅頂的災難,……程序設計工作正像這樣一個泥潭……一批批程序員被迫在泥潭中拚命掙扎,……,誰也沒有料到問題竟會陷入這樣的困境……。」 IBM360操作系統的歷史教訓已成為軟體開發項目中的典型事例被記入歷史史冊。

如果開發的軟體隱含錯誤,可靠性得不到保證,那麼在運行過程中很可能對整個系統造成十分嚴重的後果,輕則影響到系統的正常工作,重則導致整個系統的癱瘓,乃至造成無可挽回的惡性事故。如,銀行的存款可能被化為烏有,甚至弄成赤字;工廠的產品全部報廢,導致工廠破產。

1963年,美國用於控制火星探測器的計算機軟體中的一個「,」號被誤寫為「·」,而致使飛往火星的探測器發生爆炸,造成高達數億美元的損失。

為了克服這一危機,一方面需要對程序設計方法、程序的正確性和軟體的可靠性等問題進行系列的研究;另一方面,也需要對軟體的編制、測試、維護和管理的方法進行研究,從而產生了程序設計方法學。

1968年,E·W·代克斯特拉首先提出「GOTO語句是有害的」論點,向傳統程序設計方法提出了挑戰,從而引起了人們對程序設計方法討論的普遍重視。眾多著名的計算機科學家都參加了這種討論。程序設計方法學也正是在這種廣泛而深入的討論中逐漸產生和形成的。

什麼是程序設計方法學呢?簡言之,程序設計方法學是討論程序的性質、程序設計的理論和方法的一門學科。它包含的內容比較豐富,例如,結構程序設計,程序正確性證明,程序變換,程序的形式說明與推導、程序綜合、自動程序設計等。在程序設計方法學中,結構程序設計佔有十分重要的地位,可以說,程序設計方法學是在結構程序設計的基礎上逐步發展和完善起來的。

什麼是結構程序設計呢?至今仍眾說紛紜,還沒有一個嚴格的,又能被大家普遍接受的定義。1974年,D·格里斯將已有的對結構程序設計的不同解釋歸結為13種,其中,比較有代表性的如下:

結構程序設計是避免使用GOTO語句的一種程序設計;
結構程序設計是自頂向下的程序設計;
結構程序設計是一種組織和編製程序的方法,利用它編制的程序易於理解、易於修改;
程序結構化的一個主要功能是使程序正確性的證明容易實現;
結構程序設計對設計過程中的每一步去驗證其正確性,這樣便自動導致自我說明和自我捍衛的程序設計風格;

總之,結構程序設計討論了如何將大規模的和復雜的流程圖轉換成一種標準的形式,使得它們能夠用幾種標準的控制結構(通常是順序、分支和重復)通過重復和嵌套來表示。

上述定義或解釋從不同角度反映了結構程序設計所討論的主要問題。實質上,結構程序設計是一種進行程序設計的原則和方法,按照這種原則和方法可設計出結構清晰、容易理解、容易修改、容易驗證的程序。

按照結構程序設計的要求設計出的程序設計語言稱為結構程序設計語言。利用結構程序設計語言,或者說按結構程序設計的思想和原則編制出的程序稱為結構化程序。

在60年代末和70年代初,關於GOTO語句的用法的爭論比較激烈。主張從高級程序語言中去掉GOTO語句的人認為,GOTO語句是對程序結構影響最大的一種有害的語句,他們的主要理由是:GOTO語句使程序的靜態結構和動態結構不一致,從而使程序難以理解,難以查錯。去掉GOTO語句後,可直接從程序結構上反映程序運行的過程。這樣,不僅使程序結構清晰,便於理解,便於查錯,而且也有利於程序的正確性證明。

持反對意見的人認為,GOTO語句使用起來比較靈活,而且有些情形能提高程序的效率。若完全刪去GOTO語句,有些情形反而會使程序過於復雜,增加一些不必要的計算量。

1974年,D·E·克努斯對於GOTO語句爭論作了全面公正的評述,其基本觀點是:不加限制地使用GOTO語句,特別是使用往回跳的GOTO語句,會使程序結構難於理解,在這種情形,應盡量避免使用GOTO語句。但在另外一些情況下,為了提高程序的效率,同時又不致於破壞程序的良好結構,有控制地使用一些GOTO語句也是必要的。用他的話來說就是:「在有些情形,我主張刪掉GOTO語句;在另外一些情形,則主張引進GOTO語句。」從此,使這場長達10年之久的爭論得以平息。

後來,G·加科皮尼和C·波姆從理論上證明了:任何程序都可以用順序、分支和重復結構表示出來。這個結論表明,從高級程序語言中去掉GOTO語句並不影響高級程序語言的編程能力,而且編寫的程序的結構更加清晰。

結構程序設計的思想體現在採用了一些比較行之有效的方法,在這些方法中較有代表性的是「逐步求精」方法。所謂「逐步求精」方法,就是在編制一個程序時,首先考慮程序的整體結構而暫時忽略一些細節問題,然後逐步地一層一層地細化直至用所選用的語言完全描述每一個細節,即得到所期望的程序為止。換言之,它是按照先全局後局部、先整體後細節、先抽象後具體的過程組織人們的思維活動,使得編寫出的程序結構清晰、容易理解、容易驗證、容易修改。「逐步求精」方法與模塊化設計方法既有聯系又有區別。粗略地講,逐步求精主要指一個程序的設計過程,而模塊化設計主要指比較大的系統的設計過程。

此外,面對「軟體危機」,人們調查研究了軟體生產的實際情況,逐步感到採用工程化的方法從事軟體系統的研究和維護的必要性,於是與程序設計方法學密切相關的軟體工程在1968年應運而生。軟體工程的主要對象是大型軟體。軟體工程研究的內容主要包括:軟體質量保證和質量評價;軟體研製和維護的方法、工具、文檔;用戶界面的設計以及軟體管理等。軟體工程的最終目的是擺脫手工生產軟體的狀況,逐步實現軟體研製和維護的自動化。

軟體危機的主要表現:

1. 對軟體開發成本和進度的估計常常很不準確。
實際成本比估計成本有可能高出一個數量級,實際進度比預期進度拖延幾個月甚至幾年的現象並不罕見。這種現象降低了開發組織的信譽。為趕進度和節約成本所採取的權宜之計往往又損害了軟體產品的質量,從而不可避免地引起用戶的不滿。

2. 用戶對「已完成的」軟體系統不滿意的現象經常發生。
軟體開發人員常常在對用戶需求只有模糊的了解,甚至對所要解決的問題還沒有確切認識的情況下,就倉促上陣匆忙著手編寫程序。軟體開發人員和用戶之間的交流往往很不充分,「閉門造車」必然導致最終產品不符合用戶實際需要。

3. 軟體產品的質量常常靠不住。
軟體可靠性和質量保證的確切定量概念剛剛出現,軟體質量保證技術(審查、復審和測試)還沒有堅持不懈地應用到軟體開發的全過程中,這些都會導致軟體產品發生質量問題。

4. 軟體常常是不可維護的。
程序中的錯誤很難改正,實際上不可能使這些程序適應新的硬體環境,也不能根據用戶的需求在原有程序中增加新的功能。

5. 軟體通常沒有適當的文檔資料。
軟體不僅是程序,還應該有一整套文檔資料。這些文檔資料是在軟體開發過程中產生出來的,而且應該是「最新的」(與代碼完全一致)。缺乏文檔必然給軟體的開發和維護帶來許多嚴重的困難和問題。

6. 軟體成本在計算機系統總成本中所佔比例逐年上升。
隨著微電子技術的進步和生產自動化程度的提高,硬體成本逐年下降,然而軟體開發需要大量的人力,軟體成本隨著通貨膨脹以及軟體規模和數量的不斷擴大而逐年上升。美國在1995年的調查表明,軟體成本大約已佔計算機系統總成本的90%。

軟體危機的出現,使得人們去尋找產生危機的內在原因,發現其原因可歸納為兩方面,一方面是由軟體生產本身存在著復雜性,另一方面卻是與軟體開發所使用的方法和技術有關。

軟體工程正是為克服軟體危機而提出的一種概念,並在實踐中不斷地探索它的原理,技術和方法。在此過程中,人們研究和借鑒了工程學的某些原理和方法,並形成了一門新的學科—軟體工程學,但可惜的是時至今日人們並沒有完全克服軟體危機。