軟體危機是因為什麼
A. 什麼是軟體危機,為什麼產生軟體危機
最低0.27元/天開通網路文庫會員,可在文庫查看完整內容>
原發布者:邵小海1008
1.軟體危機出現的原因:軟體維護費用的急劇上升,直接威脅計算機應用的擴大;軟體生產技術進步緩慢,是加劇軟體危機的重要原因2軟體的特徵:軟體的開發不同於硬體設計、不同於硬體製造、不同於硬體維修3軟體危機:開發軟體需高成本和產品的低質量之間有著尖銳的矛盾4軟體維護有哪些種類?他們的目標分別是什麼?軟體維護的種類以及對應目標依次是:完善性維護:在軟體漫長的運行時期中,用戶往往會對軟體提出新的功能要求與性能要求。為了適應這些變化,應用軟體原來的功能和性能需要擴充和增強。這種增加軟體功能、增強軟體性能、提高軟體運行效率而進行的維護活動稱為完善性維護。適應性維護讓軟體適應運行環境的改變而進行的一種維護。糾錯性維護糾正在開發期間未能發現的遺留錯誤。預防性維護為了提高軟體的可維護性和可靠性而對軟體進行的修改稱為預防性維護。5軟體重用的效益是什麼?答:1軟體重用可以顯著地改善軟體的質量和可靠性。2軟體重用可以極大地提高軟體開發的效率。3節省軟體開發的成本,避免不必要的重復勞動和人力、財力的浪費。6自頂而下漸增測試與自底而上漸增測試各有何優、缺點?答:①自頂而下漸增測試優點:不需要測試驅動程序,能夠在測試階段的早期實現並驗證系統的主要功能,而且能夠盡早發現上層模塊的介面錯誤。缺點:需要存根程序,底層錯誤發現較晚。②自底而上漸增測試優點與缺點和自頂而下漸增測試相反。7提高可維護性的方法有哪些?答:在軟體工程的每一階段
B. 由於計算機軟體開發的成本高,質量低,難控制,生產率低而引發了什麼軟體危機軟體革命軟體技術軟
軟體危機
C. 歷史上著名的軟體危機事件
1.IBMOS/360
IBMOS/360操作系統被認為是一個典型的案例。到現在為止,它仍然被使用在360系列主機中。這個經歷了數十年,極度復雜的軟體項目甚至產生了一套不包括在原始設計方案之中的工作系統。OS/360是第一個超大型的軟體項目,它使用了1000人左右的程序員。
佛瑞德·布魯克斯在隨後他的大作《人月神話》中曾經承認,在他管理這個項目的時候,他犯了一個價值數百萬美元的錯誤。
2.美國銀行信託軟體系統開發案
美國銀行1982年進入信託商業領域,並規劃發展信託軟體系統。項目原訂預算2千萬美元,開發時程9個月,預計於1984年12月31日以前完成,後來至1987年3月都未能完成該系統,期間已投入6千萬美元。
美國銀行最終因為此系統不穩定而不得不放棄,並將340億美元的信託賬戶轉移出去,並失去了6億美元的信託生意商機。
(3)軟體危機是因為什麼擴展閱讀:
軟體危機表現在以下四個方面:
(1)經費預算經常突破,完成時間一再拖延。由於缺乏軟體開發的經驗和軟體開發數據的積累,使得開發工作的計劃很難制定。
主觀盲目制定計劃,執行起來與實際情況有很大差距,使得開發經費一再突破。由於對工作量估計不足,對開發難度估計不足,進度計劃無法按時完成,開發時間一再拖延。
(2)開發的軟體不能滿足用戶要求。開發初期對用戶的要求了解不夠明確,未能得到明確的表達。開發工作開始後,軟體人員和用戶又未能及時交換意見,使得一些問題不能及時解決,導致開發的軟體不能滿足用戶的要求,因而導致開發失敗。
(3)開發的軟體可維護性差。開發過程中沒有同意的、公認的規范,軟體開發人員按各自的風格工作,各行其是,開發過程無完整、規范的文檔,發現問題後進行雜亂無章的修改。程序結構不好,運行時發現錯誤也很難修改,導致維護性差。
(4)開發的軟體可靠性差。由於在開發過程中,沒有確保軟體質量的體系和措施,在軟體測試時,又沒有嚴格的、充分的、完全的測試,提交給用戶的軟體質量差,在運行中暴露出大量的問題。
參考資料來源:網路-軟體危機
D. 「軟體危機」的出現時因為計算機硬體發展的嚴重滯後嗎
不是。
錯
錯
錯
E. 什麼是軟體危機請詳細舉例闡述
軟體危機(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%。
軟體危機的出現,使得人們去尋找產生危機的內在原因,發現其原因可歸納為兩方面,一方面是由軟體生產本身存在著復雜性,另一方面卻是與軟體開發所使用的方法和技術有關。
軟體工程正是為克服軟體危機而提出的一種概念,並在實踐中不斷地探索它的原理,技術和方法。在此過程中,人們研究和借鑒了工程學的某些原理和方法,並形成了一門新的學科—軟體工程學,但可惜的是時至今日人們並沒有完全克服軟體危機。
F. 軟體危機產生的原因,以及應對方法
軟體危機是指落後的軟體生產方式無法滿足迅速增長的計算機軟體需求,從而導致軟體開發與維護過程中出現一系列嚴重問題的現象。
產生軟體危機的原因主要有兩個方面:
1.這與軟體本身的特性有關。
與硬體不同,軟體是計算機系統的邏輯部分,而不是物理部分。軟體樣品是產品,試制過程也是生產過程。
軟體不會因使用時間過長而「老化」或「磨損」;在編寫程序代碼並在計算機上運行之前,很難測量軟體開發過程的進度和評估軟體質量。因此,軟體開發過程的管理和控制是非常困難的。
2.軟體開發人員的弱點。
首先,軟體產品是人們思考的結果,所以軟體產品的水平最終在很大程度上取決於軟體人員的教育、培訓和經驗積累。
合作開發大型軟體通常需要很多人,即使對於一個軟體開發人員深入研究領域的應用程序,所以你需要用戶和軟體和軟體開發人員之間的溝通,不可避免地發生在這個過程中理解的差異,導致後續錯誤的設計或實現。
(6)軟體危機是因為什麼擴展閱讀:
解決途徑
人們開始開發過程中軟體開發和軟體工具的使用,協助軟體項目管理和生產技術,人們還將使用在軟體生命周期的所有階段的軟體工具有機地集合作為一個整體,形成可以支持軟體開發和維護的整個過程的集成軟體支持環境,以解決軟體危機從管理和技術兩個方面的問題。
此外,人工智慧和軟體工程的結合在20世紀80年代後期成為一個活躍的研究領域。基於程序轉換、自動生成和可復用軟體的新軟體技術的研究取得了一定的進展。
在軟體工程理論的指導下,發達國家建立了較為完整的軟體產業生產體系,形成了較強的軟體生產能力。軟體標准化和可重用性受到業界的高度重視,在避免勞動重復使用和緩解軟體危機方面發揮了重要作用。
G. 什麼是軟體危機,軟體危機有哪幾種表現
軟體危機,是因為千萬人合作一個大軟體,比如windows 操作系統,結果就會發現讓每個人按自己的編程風格完成規定的任務,就會要了命,最後花錢巨多搞出來的東西,可能非常失敗。
因為:
每個人只能編寫一部分,他為完成任務,需要搞好和別人軟體的介面數據,這樣介面沒有標准,憑每個人隨意布置,就會對不上。
即使所有的這類協調工作都搞的很好,最後軟體順利拼接,真正的大麻煩也就隨之而來:大軟體總是無法避免巨多錯誤,但很多錯誤和不能理解同事的思路有關系,這需要讀懂同事的軟體來檢查糾錯;即使錯的與別人無關,也是需要容易讀懂自己以往幹活時的思路。
這就造成一個問題,軟體往往編寫時思路清晰,技巧明白,一旦事過境遷,自己寫的是什麼,很快忘光,同事的更會雲里霧里。這就需要軟體編寫時有很強的可讀性,為此甚至不惜改變演算法,降低運行速度和效率。
以上種種,就需要為編程制定一系列標准和規則,制定可讀性,可修改性等要求,這就是軟體工程要講的內容。
H. 什麼是軟體危機
軟體危機指,隨著計算機工業的發展,在軟體開發過程中逐漸形成了一些矛盾。比如:軟體開發沒有計劃性;軟體前期需求分析不足;軟體開發過程沒有規范等等。這些矛盾表現在軟體開發中導致了一系列問題,如開發計劃無法順利執行,成本昂貴,開發的軟體錯誤百出等等。正是這種軟體危機才促使人們尋求解決方法,也就產生了軟體工程。