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

迄今為止,計(jì)算機(jī)系統(tǒng)已經(jīng)經(jīng)歷了4個(gè)不同的發(fā)展階段,但是,人們?nèi)匀粵](méi)有徹底擺脫“軟件危機(jī)”的困擾,軟件已經(jīng)成為限制計(jì)算機(jī)系統(tǒng)發(fā)展的瓶頸。

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

一、軟件危機(jī)

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

軟件危機(jī):在軟件的開(kāi)發(fā)和維護(hù)過(guò)程中所遇到的一系列嚴(yán)重問(wèn)題。

軟件危機(jī)主要包含兩方面的問(wèn)題:

1、如何開(kāi)發(fā)軟件,以滿足對(duì)軟件日益增長(zhǎng)的需求

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

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

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

1 軟件危機(jī)的介紹

軟件危機(jī)是指在計(jì)算機(jī)軟件的開(kāi)發(fā)和維護(hù)過(guò)程中所遇到的一系列重問(wèn)題。這些問(wèn)題絕不僅僅是不能正常運(yùn)行的軟件才具有的,實(shí)際上,乎所有軟件都不同程度地存在這些問(wèn)題。

概括地說(shuō),軟件危機(jī)包含下述兩方面的問(wèn)題:

(1)如何開(kāi)發(fā)軟件,以滿足對(duì)軟件日益增長(zhǎng)的需求;

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

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

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

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

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

(3)軟件產(chǎn)品的質(zhì)量往往靠不住。軟件可靠性和質(zhì)量保證的確切的定量概念剛剛出現(xiàn)不久,軟件質(zhì)量保證技術(shù)(審查、復(fù)審、程序正確性證明和測(cè)試)還沒(méi)有堅(jiān)持不懈地應(yīng)用到軟件開(kāi)發(fā)的全過(guò)程中,這些都導(dǎo)致軟件產(chǎn)品發(fā)生質(zhì)量問(wèn)題。

(4)軟件常常是不可維護(hù)的。很多程序中的錯(cuò)誤是非常難改正的,實(shí)際上不可能使這些程序適應(yīng)新的硬件環(huán)境,也不能根據(jù)用戶的需要在原有程序中增加一些新的功能?!翱芍赜玫能浖边€是一個(gè)沒(méi)有完全做到的、正在努力追求的目標(biāo),人們?nèi)匀辉谥貜?fù)開(kāi)發(fā)類似的或基本類似的軟件。

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

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

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

以上列舉的僅僅是軟件危機(jī)的一些明顯的表現(xiàn),與軟件開(kāi)發(fā)和維護(hù)有關(guān)的問(wèn)題遠(yuǎn)遠(yuǎn)不止這些。

2產(chǎn)生軟件危機(jī)的原因

在軟件開(kāi)發(fā)和維護(hù)的過(guò)程中存在這么多嚴(yán)重問(wèn)題,一方面與軟件本身的特點(diǎn)有關(guān),另一方面也和軟件開(kāi)發(fā)與維護(hù)的方法不正確有關(guān)。

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

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

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

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

事實(shí)上,對(duì)用戶要求沒(méi)有完整準(zhǔn)確的認(rèn)識(shí)就匆忙著手編寫程序是許多軟件開(kāi)發(fā)工程失敗的主要原因之一。只有用戶才真正了解他們自己的需要,但是許多用戶在開(kāi)始時(shí)并不能準(zhǔn)確具體地?cái)⑹鏊麄兊男枰o軟件開(kāi)發(fā)人員需要做大量深入細(xì)致的調(diào)查研究工作,反復(fù)多次地和用戶交流信息,才能真正全面、準(zhǔn)確、具體地了解用戶的要求。對(duì)問(wèn)題和目標(biāo)的正確認(rèn)識(shí)是解決任何問(wèn)題的前提和出發(fā)點(diǎn)﹐軟件開(kāi)發(fā)同樣也不例外。急于求成,倉(cāng)促上陣,對(duì)用戶要求沒(méi)有正確認(rèn)識(shí)就匆忙著手編寫程序﹐這就如同不打好地基就蓋高樓一樣,最終必然垮臺(tái)。事實(shí)上,越早開(kāi)始寫程序,完成它所需要用的時(shí)間往往越長(zhǎng)。

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

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

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

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

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

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

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

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

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

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

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

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

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

關(guān)鍵字: 騰訊 編碼器 CPU

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

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

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

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

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

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

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

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

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

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉