❶ 如何解決軟體危機
消除錯誤的觀點和做法,
推廣使用成功的開發技術和方法,
使用軟體工具和軟體工程支持環境,
加強軟體工程管理
❷ 軟體工程是如何克服軟體危機的
研製軟體系統需要投入大量的人力和物力,但系統的質量卻難以保證,也就是說,開發軟體所需的高成本同產品的低質量之間有著尖銳的矛盾,這種現象就是所謂的「軟體危機」。
· 產生軟體危機的原因:
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.軟體開發人員的弱點。
首先,軟體產品是人們思考的結果,所以軟體產品的水平最終在很大程度上取決於軟體人員的教育、培訓和經驗積累。
合作開發大型軟體通常需要很多人,即使對於一個軟體開發人員深入研究領域的應用程序,所以你需要用戶和軟體和軟體開發人員之間的溝通,不可避免地發生在這個過程中理解的差異,導致後續錯誤的設計或實現。
(7)怎樣消除軟體危機擴展閱讀:
解決途徑
人們開始開發過程中軟體開發和軟體工具的使用,協助軟體項目管理和生產技術,人們還將使用在軟體生命周期的所有階段的軟體工具有機地集合作為一個整體,形成可以支持軟體開發和維護的整個過程的集成軟體支持環境,以解決軟體危機從管理和技術兩個方面的問題。
此外,人工智慧和軟體工程的結合在20世紀80年代後期成為一個活躍的研究領域。基於程序轉換、自動生成和可復用軟體的新軟體技術的研究取得了一定的進展。
在軟體工程理論的指導下,發達國家建立了較為完整的軟體產業生產體系,形成了較強的軟體生產能力。軟體標准化和可重用性受到業界的高度重視,在避免勞動重復使用和緩解軟體危機方面發揮了重要作用。
❽ 為什麼會產生軟體危機怎樣克服軟體危機
(1) 開發人員方面,對軟體產品缺乏正確認識,沒有真正理解軟體產品是一個完整的配置組成。造成開發中制定計劃盲目、編程草率,不考慮維護工作的必要性。
(2) 軟體本身方面,對於計算機系統來說,軟體是邏輯部件,軟體開發過程沒有統一的、公認的方法論和規范指導,造成軟體維護困難。
(3) 尤其是隨著軟體規模越來越大,復雜程度越來越高,原有軟體開發方式效率不高、質量不能保證、成本過高、研製周期不易估計、維護困難等一系列問題更為突出,技術的發展已經遠遠不能適應社會需求。
(1) 充分吸收和借鑒人類長期以來從事各種工程項目中積累的行之有效的有效原理、概念、技術與方法,特別是吸取幾十年來人類從事計算機硬體研究和開發的經驗教訓。在開發軟體的過程中努力作到良好的組織,嚴格的管理,相互友好的協作。
(2) 推廣在實踐中總結出來的開發軟體的成功的技術和方法,並研究更好、更有效的技術和方法,盡快克服在計算機系統早期發展階段形成的一些錯誤概念和作法。
(3) 根據不同的應用領域,開發更好的軟體工具並使用這些工具。將軟體開發各個階段使用的軟體工具集合成一個整體,形成一個很好的軟體開發支環環境。總之為了解決軟體危機,既要有技術措施(方法和工具),又要有必要的組織管理措施
❾ 軟體危機的解決途徑
軟體工程誕生於60年代末期,它作為一個新興的工程學科,主要研究軟體生產的客觀規律性,建立與系統化軟體生產有關的概念、原則、方法、技術和工具,指導和支持軟體系統的生產活動,以期達到降低軟體生產成本 、改進軟體產品質量、提高軟體生產率水平的目標。軟體工程學從硬體工程和其他人類工程中吸收了許多成功的經驗,明確提出了軟體生命周期的模型,發展了許多軟體開發與維護階段適用的技術和方法,並應用於軟體工程實踐,取得良好的效果。
在軟體開發過程中人們開始研製和使用軟體工具,用以輔助進行軟體項目管理與技術生產,人們還將軟體生命周期各階段使用的軟體工具有機地集合成為一個整體,形成能夠連續支持軟體開發與維護全過程的集成化軟體支援環境,以期從管理和技術兩方面解決軟體危機問題。
此外,人工智慧與軟體工程的結合成為80年代末期活躍的研究領域。基於程序變換、自動生成和可重用軟體等軟體新技術研究也已取得一定的進展,把程序設計自動化的進程向前推進一步。在軟體工程理論的指導下,發達國家已經建立起較為完備的軟體工業化生產體系,形成了強大的軟體生產能力 。軟體標准化與可重用性得到了工業界的高度重視,在避免重用勞動,緩解軟體危機方面起到了重要作用。