當前位置:首頁 > 技術學院 > 技術前線
[導讀]在計算機系統(tǒng)發(fā)展的早期時代(20世紀60年代中期以前),通用硬件相當普遍﹐軟件卻是為每個具體應用而專門編寫的。這時的軟件通常是規(guī)模較小的程序,編寫者和使用者往往是同一個(或同一組)人。這種個體化的軟件環(huán)境,使得軟件設計通常是在人們頭腦中進行的一個隱含的過程,除了程序清單之外,沒有其他文檔資料保存下來。

迄今為止,計算機系統(tǒng)已經經歷了4個不同的發(fā)展階段,但是,人們仍然沒有徹底擺脫“軟件危機”的困擾,軟件已經成為限制計算機系統(tǒng)發(fā)展的瓶頸。

為了更有效地開發(fā)與維護軟件,軟件工作者在么0 世紀b0 平代口期1知隊真研究消除軟件危機的途徑,從而逐漸形成」一門新興的上.在子骨—開v軟件工程學(通常簡稱為“軟件工程”)。

一、軟件危機

在計算機系統(tǒng)發(fā)展的早期時代(20世紀60年代中期以前),通用硬件相當普遍﹐軟件卻是為每個具體應用而專門編寫的。這時的軟件通常是規(guī)模較小的程序,編寫者和使用者往往是同一個(或同一組)人。這種個體化的軟件環(huán)境,使得軟件設計通常是在人們頭腦中進行的一個隱含的過程,除了程序清單之外,沒有其他文檔資料保存下來。

軟件危機:在軟件的開發(fā)和維護過程中所遇到的一系列嚴重問題。

軟件危機主要包含兩方面的問題:

1、如何開發(fā)軟件,以滿足對軟件日益增長的需求

2、如何維護數(shù)量不斷膨脹的已有軟件。

從20世紀60年代中期到70年代中期是計算機系統(tǒng)發(fā)展的第二個時期,這個時期的一個重要特征是出現(xiàn)了“軟件作坊”,廣泛使用產品軟件。

但是,軟件作坊基本上仍然沿用早期形成的個體化軟件開發(fā)方法。隨著計算機應用的日益普及,軟件數(shù)量急劇膨脹。在程序運行時發(fā)現(xiàn)的錯誤必須設法改正;用戶有了新的需求時必須相應地修改程序;硬件或操作系統(tǒng)更新時,通常需要修改程序以適應新的環(huán)境。上述種種軟件維護工作,以令人吃驚的比例耗費資源。更嚴重的是,許多程序的個體化特性使得它們最終成為不可維護的。“軟件危機”就這樣開始出現(xiàn)了!1968年北大西洋公約組織的計算機科學家在西德召開國際會議,討論軟件危機問題,在這次會議上正式提出并使用了“軟件工程”這個名詞,一門新興的工程學科就此誕生了。

1 軟件危機的介紹

軟件危機是指在計算機軟件的開發(fā)和維護過程中所遇到的一系列重問題。這些問題絕不僅僅是不能正常運行的軟件才具有的,實際上,乎所有軟件都不同程度地存在這些問題。

概括地說,軟件危機包含下述兩方面的問題:

(1)如何開發(fā)軟件,以滿足對軟件日益增長的需求;

(2)如何維護數(shù)量不斷膨脹的已有軟件。

鑒于軟件危機的長期性和癥狀不明顯的特征,近年來有人建議把軟件危機更名為“軟件蕭條( depression)”或“軟件困擾(affliction)”。不過“軟件危機”這個詞強調了問題的嚴重性,而且也已為絕大多數(shù)軟件工作者所熟悉,所以本書仍將沿用它。

具體地說,軟件危機主要有以下一些典型表現(xiàn):

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

(2)用戶對“已完成的”軟件系統(tǒng)不滿意的現(xiàn)象經常發(fā)生。軟件開發(fā)人員常常在對用戶要求只有模糊的了解,甚至對所要解決的問題還沒有確切認識的情況下,就匆忙著手編寫程序。軟件開發(fā)人員和用戶之間的信息交流往往很不充分,“閉門造車”必然導致最終的產品不符合用戶的實際需要。

(3)軟件產品的質量往往靠不住。軟件可靠性和質量保證的確切的定量概念剛剛出現(xiàn)不久,軟件質量保證技術(審查、復審、程序正確性證明和測試)還沒有堅持不懈地應用到軟件開發(fā)的全過程中,這些都導致軟件產品發(fā)生質量問題。

(4)軟件常常是不可維護的。很多程序中的錯誤是非常難改正的,實際上不可能使這些程序適應新的硬件環(huán)境,也不能根據(jù)用戶的需要在原有程序中增加一些新的功能?!翱芍赜玫能浖边€是一個沒有完全做到的、正在努力追求的目標,人們仍然在重復開發(fā)類似的或基本類似的軟件。

(5)軟件通常沒有適當?shù)奈臋n資料。計算機軟件不僅僅是程序,還應該有一整套文檔資料。這些文檔資料應該是在軟件開發(fā)過程中產生出來的,而且應該是“最新式的”(即和程序代碼完全一致的)。軟件開發(fā)組織的管理人員可以使用這些文檔資料作為“里程碑”,來管理和評價軟件開發(fā)工程的進展狀況;軟件開發(fā)人員可以利用它們作為通信工具,在軟件開發(fā)過程中準確地交流信息;對于軟件維護人員而言,這些文檔資料更是必不可少的。缺乏必要的文檔資料或者文檔資料不合格,必然給軟件開發(fā)和維護帶來許多嚴重的困難和問題。

(6)軟件成本在計算機系統(tǒng)總成本中所占的比例逐年上升。由于微電子學技術的進步和生產自動化程度的不斷提高,硬件成本逐年下降,然而軟件開發(fā)需要大量人力,軟件成本隨著通貨膨脹以及軟件規(guī)模和數(shù)量的不斷擴大而持續(xù)上升。美國在1985年軟件成本大約已占計算機系統(tǒng)總成本的90%。

(7)軟件開發(fā)生產率提高的速度﹐遠遠跟不上計算機應用迅速普及深入的趨勢。軟件產品“供不應求”的現(xiàn)象使人類不能充分利用現(xiàn)代計算機硬件提供的巨大潛力。

以上列舉的僅僅是軟件危機的一些明顯的表現(xiàn),與軟件開發(fā)和維護有關的問題遠遠不止這些。

2產生軟件危機的原因

在軟件開發(fā)和維護的過程中存在這么多嚴重問題,一方面與軟件本身的特點有關,另一方面也和軟件開發(fā)與維護的方法不正確有關。

軟件不同于硬件,它是計算機系統(tǒng)中的邏輯部件而不是物理部件。由于軟件缺乏“可見性”,在寫出程序代碼并在計算機上試運行之前,軟件開發(fā)過程的進展情況較難衡量﹐軟件的質量也較難評價,因此,管理和控制軟件開發(fā)過程相當困難。此外,軟件在運行過程中不會因為使用時間過長而被“用壞”,如果運行中發(fā)現(xiàn)了錯誤﹐很可能是遇到了一個在開發(fā)時期引入的在測試階段沒能檢測出來的錯誤。因此,軟件維護通常意味著改正或修改原來的設計,這就在客觀上使得軟件較難維護。

軟件不同于一般程序,它的一個顯著特點是規(guī)模龐大,而且程序復雜性將隨著程序規(guī)模的增加而呈指數(shù)上升。為了在預定時間內開發(fā)出規(guī)模龐大的軟件,必須由許多人分工合作,然而,如何保證每個人完成的工作合在一起確實能構成一個高質量的大型軟件系統(tǒng),更是一個極端復雜困難的問題,這不僅涉及許多技術問題,諸如分析方法、設計方法、形式說明方法、版本控制等,更重要的是必須有嚴格而科學的管理。

軟件本身獨有的特點確實給開發(fā)和維護帶來一些客觀困難,但是人們在開發(fā)和使用計算機系統(tǒng)的長期實踐中,也確實積累和總結出了許多成功的經驗。如果堅持不懈地使用經過實踐考驗證明是正確的方法,許多困難是完全可以克服的,過去也確實有一些成功的范例。但是,目前相當多的軟件專業(yè)人員對軟件開發(fā)和維護還有不少糊涂觀念,在實踐過程中或多或少地采用了錯誤的方法和技術,這可能是使軟件問題發(fā)展成軟件危機的主要原因。

與軟件開發(fā)和維護有關的許多錯誤認識和做法的形成,可以歸因于在計算機系統(tǒng)發(fā)展的早期階段軟件開發(fā)的個體化特點。錯誤的認識和做法主要表現(xiàn)為忽視軟件需求分析的重要性,認為軟件開發(fā)就是寫程序并設法使之運行,輕視軟件維護等。

事實上,對用戶要求沒有完整準確的認識就匆忙著手編寫程序是許多軟件開發(fā)工程失敗的主要原因之一。只有用戶才真正了解他們自己的需要,但是許多用戶在開始時并不能準確具體地敘述他們的需要﹐軟件開發(fā)人員需要做大量深入細致的調查研究工作,反復多次地和用戶交流信息,才能真正全面、準確、具體地了解用戶的要求。對問題和目標的正確認識是解決任何問題的前提和出發(fā)點﹐軟件開發(fā)同樣也不例外。急于求成,倉促上陣,對用戶要求沒有正確認識就匆忙著手編寫程序﹐這就如同不打好地基就蓋高樓一樣,最終必然垮臺。事實上,越早開始寫程序,完成它所需要用的時間往往越長。

一個軟件從定義、開發(fā),使用和維護,直到最終被廢棄,要經歷一個漫長的時期,這就如同一個人要經過嬰兒、兒童、青年、中年和老年,直到最終死亡的漫長時期一樣。通常把軟件經歷的這個漫長的時期稱為生命周期。

軟件開發(fā)最初的工作應是問題定義,也就是確定要求解決的問題是什么;然后要進行可行性研究,決定該問題是否存在一個可行的解決辦法;接下來應該進行需求分析,也就是深入具體地了解用戶的要求,在所要開發(fā)的系統(tǒng)(不妨稱之為目標系統(tǒng))必須做什么這個問題上和用戶取得完全一致的看法。經過上述軟件定義時期的準備工作才能進入開發(fā)時期,而在開發(fā)時期,首先需要對軟件進行設計(通常又分為概要設計和詳細設計兩個階段),然后才能進入編寫程序的階段,程序編寫完之后還必須經過大量的測試工作(需要的工作量通常占軟件開發(fā)全部工作量的40%~50%)才能最終交付使用。所以,編寫程序只是軟件開發(fā)過程中的一個階段,而且在典型的軟件開發(fā)工程中,編寫程序所需的工作量只占軟件開發(fā)全部工作量的10%~20%。

另一方面還必須認識到程序只是完整的軟件產品的一個組成部分,在上述軟件生命周期的每個階段都要得出最終產品的一個或幾個組成部分(這些組成部分通常以文檔資料的形式存在)。也就是說,一個軟件產品必須由一個完整的配置組成,軟件配置主要包括程序、文檔和數(shù)據(jù)等成分。必須清除只重視程序而忽視軟件配置其余成分的糊涂觀念。

做好軟件定義時期的工作,是降低軟件成本提高軟件質量的關鍵。如果軟件開發(fā)人員在定義時期沒有正確全面地理解用戶需求,直到測試階段或軟件交付使用后才發(fā)現(xiàn)“已完成的”軟件不完全符合用戶的需要,這時再修改就為時已晚了。

嚴重的問題是,在軟件開發(fā)的不同階段進行修改需要付出的代價是很不相同的,在早期引入變動,涉及的面較少,因而代價也比較低;而在開發(fā)的中期,軟件配置的許多成分已經完成,引入一個變動要對所有已完成的配置成分都做相應的修改,不僅工作量大,而且邏輯上也更復雜,因此付出的代價劇增;在軟件“已經完成”時再引入變動,當然需要付出更高的代價。根據(jù)美國一些軟件公司的統(tǒng)計資料,在后期引入一個變動比在早期引入相同變動所需付出的代價高2~3個數(shù)量級。

通過上面的論述不難認識到,輕視維護是一個最大的錯誤。許多軟件產品的使用壽命長達10年甚至20年,在這樣漫長的時期中不僅必須改正使用過程中發(fā)現(xiàn)的每一個潛伏的錯誤,而且當環(huán)境變化時(例如硬件或系統(tǒng)軟件更新?lián)Q代)還必須相應地修改軟件以適應新的環(huán)境,特別是必須經常改進或擴充原來的軟件以滿足用戶不斷變化的需要。所有這些改動都屬于維護工作,而且是在軟件已經完成之后進行的,因此維護是極端艱巨復雜的工作,需要花費很大代價。統(tǒng)計數(shù)據(jù)表明,實際上用于軟件維護的費用占軟件總費用的55%~70%。軟件工程學的一個重要目標就是提高軟件的可維護性,減少軟件維護的代價。

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內容侵犯您的權益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或將催生出更大的獨角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉型技術解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術公司SODA.Auto推出其旗艦產品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關鍵字: 汽車 人工智能 智能驅動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務中斷的風險,如企業(yè)系統(tǒng)復雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務連續(xù)性,提升韌性,成...

關鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網易近期正在縮減他們對日本游戲市場的投資。

關鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產業(yè)博覽會開幕式在貴陽舉行,華為董事、質量流程IT總裁陶景文發(fā)表了演講。

關鍵字: 華為 12nm EDA 半導體

8月28日消息,在2024中國國際大數(shù)據(jù)產業(yè)博覽會上,華為常務董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權最終是由生態(tài)的繁榮決定的。

關鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應對環(huán)境變化,經營業(yè)績穩(wěn)中有升 落實提質增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務引領增長 以科技創(chuàng)新為引領,提升企業(yè)核心競爭力 堅持高質量發(fā)展策略,塑強核心競爭優(yōu)勢...

關鍵字: 通信 BSP 電信運營商 數(shù)字經濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術學會聯(lián)合牽頭組建的NVI技術創(chuàng)新聯(lián)盟在BIRTV2024超高清全產業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術創(chuàng)新聯(lián)...

關鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關鍵字: BSP 信息技術
關閉