❶ 什麼是軟體危機,為什麼產生軟體危機
軟體危機是指落後的軟體生產方式無法滿足迅速增長的計算機軟體需求,從而導致軟體開發與維護過程中出現一系列嚴重問題的現象。
產生軟體危機的原因主要有兩個方面:
1、與軟體本身的特點有關。
軟體不同於硬體,它是計算機系統中的邏輯部件而不是物理部件;軟體樣品即是產品,試制過程也就是生產過程。
軟體不會因使用時間過長而「老化」或「用壞」;軟體具有可運行的行為特性,在寫出程序代碼並在計算機上試運行之前,軟體開發過程的進展情況較難衡量,軟體質量也較難評價,因此管理和控制軟體開發過程十分困難。
2、來自於軟體開發人員的弱點。
其一,軟體產品是人的思維結果,因此軟體生產水平最終在相當程度上取決於軟體人員的教育、訓練和經驗的積累。
其二,對於大型軟體往往需要許多人合作開發,甚至要求軟體開發人員深入應用領域的問題研究,這樣就需要在用戶與軟體人員之間以及軟體開發人員之間相互通訊,在此過程中難免發生理解的差異,從而導致後續錯誤的設計或實現。
解決途徑
在軟體開發過程中人們開始研製和使用軟體工具,用以輔助進行軟體項目管理與技術生產,人們還將軟體生命周期各階段使用的軟體工具有機地集合成為一個整體,形成能夠連續支持軟體開發與維護全過程的集成化軟體支援環境,以期從管理和技術兩方面解決軟體危機問題。
此外,人工智慧與軟體工程的結合成為80年代末期活躍的研究領域。基於程序變換、自動生成和可重用軟體等軟體新技術研究也已取得一定的進展,把程序設計自動化的進程向前推進一步。
在軟體工程理論的指導下,發達國家已經建立起較為完備的軟體工業化生產體系,形成了強大的軟體生產能力 。軟體標准化與可重用性得到了工業界的高度重視,在避免重用勞動,緩解軟體危機方面起到了重要作用。
❷ 軟體工程的概念是為解決軟體危機而提出的這句話的意思是什麼
說明軟體工程這門學科的形成是軟體發展的需要。
❸ 軟體工程導論解答題,1、軟體危機是什麼,其產生的原因是什麼 2、詳細設計要做些什麼
1。軟體危機是指:在計算機軟體開發和維護過程中所遇到的一系列嚴重的問題。
2。原因是:一方面與軟體本身的特點有關,另一方面是和軟體的開發和維護的方法不正確有關。
3。詳細設計步驟:
1。結構程序設計
2。人機界面設計
3。數據設計
4。體系結構設計
5。過程設計(最重要)
❹ 軟體工程是如何克服軟體危機的
研製軟體系統需要投入大量的人力和物力,但系統的質量卻難以保證,也就是說,開發軟體所需的高成本同產品的低質量之間有著尖銳的矛盾,這種現象就是所謂的「軟體危機」。
· 產生軟體危機的原因:
j 用戶對軟體需求的描述不精確,可能有遺漏、有二義性、有錯誤,甚至在軟體開發過程中,用戶還提出修改軟體功能、界面、支撐環境等方面的要求。
k 軟體開發人員對用戶需求的理解與用戶的本來願望有差異,導致開發出來的軟體產品與用戶要求不一致。
l 大型軟體項目需要組織一定的人力共同完成,多數管理人員缺乏開發大型軟體系統的經驗。各類人員的信息交流不及時、不準確、有時還會產生誤解。
m 軟體項目開發人員不能有效地、獨立自主地處理大型軟體的全部關系和各個分支,因此容易產生疏漏和錯誤。
n 缺乏有利的方法學和工具方面的支持,過分的依靠程序設計人員在軟體開發過程中的技巧和創造性,加劇軟體產品的個性化。
o 軟體產品的特殊性和人類智力的局限性,導致人們無力處理「復雜問題」。
· 要克服軟體危機,就要認真分析軟體危機的原因,探索用工程的方法進行軟體生產的可能性,即用現代工程的概念、原理、技術和方法進行計算機軟體的開發、管理、維護和更新。
2. 什麼叫軟體工程?軟體工程的誕生是否從根本上消除了軟體危機? 為什麼?
解:· 軟體工程是用工程、科學和數學的原則與方法研製、維護計算機軟體的有關技術及管理方法。
· 軟體工程的誕生只能大大減少軟體開發成本並提高軟體質量,不能從根本上消除軟體危機。
3.軟體生存周期為什麼要劃分階段?各個階段的任務是什麼?
解:· 軟體也是一種產品,同樣存在生存周期。把軟體生存周期劃分為幾個階段後,軟體開發按照每個階段的基本任務進行並產生相應的工作結果,這樣有利於對軟體開發過程進行管理,有利於提高軟體產品質量。
· 可行性研究與計劃階段的基本任務:研究開發該項目的可行性。
需求分析階段的基本任務: 理解和表達用戶的要求。
設計階段的基本任務: 建立系統的結構。
編程階段的基本任務: 編寫程序。
測試階段的基本任務: 發現錯誤和排除錯誤。
4.什麼是軟體?如何評價軟體的質量?
解:· 軟體是程序以及開發、使用和維護程序所需的所有文檔。
· 軟體質量從可維護性、可靠性、可理解性和效率等方面對軟體作較全面的評價。
求採納為滿意回答。
❺ 什麼是軟體危機請詳細舉例闡述
軟體危機(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%。
軟體危機的出現,使得人們去尋找產生危機的內在原因,發現其原因可歸納為兩方面,一方面是由軟體生產本身存在著復雜性,另一方面卻是與軟體開發所使用的方法和技術有關。
軟體工程正是為克服軟體危機而提出的一種概念,並在實踐中不斷地探索它的原理,技術和方法。在此過程中,人們研究和借鑒了工程學的某些原理和方法,並形成了一門新的學科—軟體工程學,但可惜的是時至今日人們並沒有完全克服軟體危機。
❻ 什麼是軟體危機
軟體危機
軟體危機的形成
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. 用戶對產品功能難以滿足
開發人員和用戶之間很難溝通、矛盾很難統一。往往是軟體開發人員不能真正了解用戶的需求,而用戶又不了解計算機求解問題的模式和能力,雙方無法用共同熟悉的語言進行交流和描述。
在雙方互不充分了解的情況下,就倉促上陣設計系統、匆忙著手編寫程序,這
❼ 軟體危機的准確定義是什麼
軟體危機(Software Crisis) 是計算機軟體在它的開發和維護過程中所遇到的一系列嚴重問題。概括地說,主要包含兩方面的問題:如何開發軟體,怎樣滿足對軟體日益增長的需求;如何維護數量不斷膨脹的已有軟體。
「軟體危機」使得人們開始對軟體及其特性進行更深一步的研究,人們改變了早期對軟體的不正確看法。早期那些被認為是優秀的程序常常很難被別人看懂,通篇充滿了程序技巧。現在人們普遍認為優秀的程序除了功能正確,性能優良之外,還應該容易看懂、容易使用、容易修改和擴充。
程序設計語言雖然為計算機的應用開拓了無比廣闊的前景,但游盪在軟體世界的幽靈——「軟體危機」依然存在。因為軟體的開發不僅受到程序設計的方法、結構的制約,而且受到開發周期以及軟體開發成本的限制,更重要的是軟體質量的保障與其程序設計的正確性關系極大。如果所開發的軟體其可靠性得不到保障,在運行中將會產生不堪設想的嚴重後果。
其次就是,有軟體危機的存在,也對應著程序員不斷去更新和完善軟體
❽ 什麼是軟體工程它有哪些本質特徵怎樣用軟體工程消除軟體危機
○1 軟體危機是指在計算機軟體開發,使用與維護過程中遇到的一系列嚴重問題和難題.它 包括兩方面:如何開發軟體,已滿足對軟體日益增長的需求;如何維護數量不斷增長的已有 軟體.
○2.軟體危機表現在以下四個方面:
(1) 對軟體開發成本和進度的估計常常很不準確.常常出現實際成本比估算成本高出一個數量 級,實際進度比計劃進度拖延幾個月甚至幾年的現象.而為了趕進度和節約成本所採取的一 些權宜之計又往往損害了軟體產品的質量.這些都降低了開發商的信譽,引起用戶不滿. (2) 用戶對已完成的軟體不滿意的現象時有發生. (3) 軟體產品的質量往往是靠不住的. (4) 軟體常常是不可維護的. (5) 軟體通常沒有適當的文檔資料.文檔資料不全或不合格,必將給軟體開發和維護工作帶來 許多難以想像的困難和難以解決的問題. (6) 軟體成本,軟體維護費在計算機系統總成本中所佔比例逐年上升. (7) 開發生產率提高的速度遠跟不上計算機應用普及的需求.
○3 造成軟體危機的原因是: (1) 來自軟體自身的特點:是邏輯部件,缺乏可見性;規模龐大,復雜,修改,維護困難. (2) 軟體開發與維護的方法不當: 忽視需求分析; 認為軟體開發等於程序編寫; 輕視軟體維護. (3) 供求矛盾將是一個永恆的主題:面對日益增長的軟體需求,人們顯得力不從心.
❾ 什麼是軟體危機
軟體危機指,隨著計算機工業的發展,在軟體開發過程中逐漸形成了一些矛盾。比如:軟體開發沒有計劃性;軟體前期需求分析不足;軟體開發過程沒有規范等等。這些矛盾表現在軟體開發中導致了一系列問題,如開發計劃無法順利執行,成本昂貴,開發的軟體錯誤百出等等。正是這種軟體危機才促使人們尋求解決方法,也就產生了軟體工程。
❿ 什麼叫軟體工程軟體工程是如何克服軟體危機的
軟體工程是將系統的、規范的、可度量的工程化方法應用於軟體開發、運行和維護的全過程及上述方法的研究。為了克服軟體危機,人們從其他產業的工程化生產得到啟示,採用工程的概念、原理、技術和方法來開發和維護軟體