




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
軟件工程導(dǎo)論
主講教師:顔富強(qiáng)
2010年下學(xué)期引入:軟件工程的背景和目的為什么要學(xué)習(xí)軟件工程?實(shí)例第1章軟件工程學(xué)概述1.1軟件危機(jī)1.2軟件工程1.3軟件生命周期1.4軟件過程1.5小結(jié)開發(fā)軟件所需的高成本同產(chǎn)品的低質(zhì)量之間有著尖銳的矛盾,這就稱之為“軟件危機(jī)”。1968年北大西洋公約組織的計(jì)算機(jī)科學(xué)家在聯(lián)邦德國召開國際會議,討論軟件危機(jī)問題,在這次會議上正式提出并使用了“軟件工程”這個(gè)名詞,一門新興的工程學(xué)科就此誕生了。1.1軟件危機(jī)軟件危機(jī)是指在計(jì)算機(jī)軟件的開發(fā)和維護(hù)過程中所遇到的一系列嚴(yán)重問題。這些問題絕不僅僅是不能正常運(yùn)行的軟件才具有的,實(shí)際上,幾乎所有軟件都不同程度地存在這些問題。概括地說,軟件危機(jī)包含下述兩方面的問題:如何開發(fā)軟件,以滿足對軟件日益增長的需求;如何維護(hù)數(shù)量不斷膨脹的已有軟件。具體地說,軟件危機(jī)主要有以下一些典型表現(xiàn)。1.1.1軟件危機(jī)的介紹(1)對軟件開發(fā)成本和進(jìn)度的估計(jì)常常很不準(zhǔn)確。 實(shí)際成本比估計(jì)成本有可能高出一個(gè)數(shù)量級,實(shí)際進(jìn)度比預(yù)期進(jìn)度拖延幾個(gè)月甚至幾年的現(xiàn)象并不罕見。這種現(xiàn)象降低了軟件開發(fā)組織的信譽(yù)。而為了趕進(jìn)度和節(jié)約成本所采取的一些權(quán)宜之計(jì)又往往損害了軟件產(chǎn)品的質(zhì)量,從而不可避免地會引起用戶的不滿。(2)用戶對“已完成的”軟件系統(tǒng)不滿意的現(xiàn)象經(jīng)常發(fā)生。軟件開發(fā)人員常常在對用戶要求只有模糊的了解,甚至對所要解決的問題還沒有確切認(rèn)識的情況下,就匆忙著手編寫程序。軟件開發(fā)人員和用戶之間的信息交流往往很不充分,“閉門造車”必然導(dǎo)致最終的產(chǎn)品不符合用戶的實(shí)際需要。(3)軟件產(chǎn)品的質(zhì)量往往靠不住。軟件可靠性和質(zhì)量保證的確切的定量概念剛剛出現(xiàn)不久,軟件質(zhì)量保證技術(shù)(審查、復(fù)審和測試)還沒有堅(jiān)持不懈地應(yīng)用到軟件開發(fā)的全過程中,這些都導(dǎo)致軟件產(chǎn)品發(fā)生質(zhì)量問題。(4)軟件常常是不可維護(hù)的。很多程序中的錯(cuò)誤是非常難改正的,實(shí)際上不可能使這些程序適應(yīng)新的硬件環(huán)境,也不能根據(jù)用戶的需要在原有程序中增加一些新的功能?!翱芍赜玫能浖边€是一個(gè)沒有完全做到的、正在努力追求的目標(biāo),人們?nèi)匀辉谥貜?fù)開發(fā)類似的或基本類似的軟件。(5)軟件通常沒有適當(dāng)?shù)奈臋n資料。計(jì)算機(jī)軟件不僅僅是程序,還應(yīng)該有一整套文檔資料。這些文檔資料應(yīng)該是在軟件開發(fā)過程中產(chǎn)生出來的,而且應(yīng)該是“最新式的”(即和程序代碼完全一致的)。軟件開發(fā)組織的管理人員可以使用這些文檔資料作為“里程碑”,來管理和評價(jià)軟件開發(fā)工程的進(jìn)展?fàn)顩r;軟件開發(fā)人員可以利用它們作為通信工具,在軟件開發(fā)過程中準(zhǔn)確地交流信息;對于軟件維護(hù)人員而言,這些文檔資料更是必不可少的。缺乏必要的文檔資料或者文檔資料不合格,必然給軟件開發(fā)和維護(hù)帶來許多嚴(yán)重的困難和問題。(6)軟件成本在計(jì)算機(jī)系統(tǒng)總成本中所占的比例逐年上升。由于微電子學(xué)技術(shù)的進(jìn)步和生產(chǎn)自動化程度不斷提高,硬件成本逐年下降,然而軟件開發(fā)需要大量人力,軟件成本隨著通貨膨脹以及軟件規(guī)模和數(shù)量的不斷擴(kuò)大而持續(xù)上升。美國在1985年軟件成本大約已占計(jì)算機(jī)系統(tǒng)總成本的90%。(7)軟件開發(fā)生產(chǎn)率提高的速度,遠(yuǎn)遠(yuǎn)跟不上計(jì)算機(jī)應(yīng)用迅速普及深入的趨勢。軟件產(chǎn)品“供不應(yīng)求”的現(xiàn)象使人類不能充分利用現(xiàn)代計(jì)算機(jī)硬件提供的巨大潛力。在軟件開發(fā)和和維護(hù)的過程程中存在這么么多嚴(yán)重問題題,一方面與與軟件本身的的特點(diǎn)有關(guān),,另一方面也也和軟件開發(fā)發(fā)與維護(hù)的方方法不正確有有關(guān)。產(chǎn)生軟件危機(jī)機(jī)的原因軟件不同于一一般程序,它它的一個(gè)顯著著特點(diǎn)是規(guī)模模龐大,而且且程序復(fù)雜性將將隨著程序規(guī)規(guī)模的增加而而呈指數(shù)上升升。為了在預(yù)定定時(shí)間內(nèi)開發(fā)發(fā)出規(guī)模龐大大的軟件,必必須由許多人人分工合作,,然而,如何保證每個(gè)個(gè)人完成的工工作合在一起起確實(shí)能構(gòu)成成一個(gè)高質(zhì)量量的大型軟件件系統(tǒng),更是是一個(gè)極端復(fù)復(fù)雜困難的問問題,不僅涉及許許多技術(shù)問題題,諸如分析析方法、設(shè)計(jì)計(jì)方法、形式式說明方法、、版本控制等等,更重要的的是必須有嚴(yán)嚴(yán)格而科學(xué)的的管理。目前相當(dāng)多的的軟件專業(yè)人人員對軟件開開發(fā)和維護(hù)還還有不少糊涂涂觀念,在實(shí)實(shí)踐過程中或或多或少地采采用了錯(cuò)誤的的方法和技術(shù)術(shù),這可能是使使軟件問題發(fā)發(fā)展成軟件危危機(jī)的主要原原因。一個(gè)軟件從定定義、開發(fā)、、使用和維護(hù)護(hù),直到最終終被廢棄,要要經(jīng)歷一個(gè)漫漫長的時(shí)期,,這就如同一一個(gè)人要經(jīng)過過胎兒、兒童童、青年、中中年和老年,,直到最終死死亡的漫長時(shí)時(shí)期一樣。通通常把軟件經(jīng)經(jīng)歷的這個(gè)漫漫長的時(shí)期稱稱為生命周期期。軟件開發(fā)發(fā)最初的工作作應(yīng)是問題定定義,也就是是確定要求解解決的問題是是什么;然后后要進(jìn)行可行行性研究,決決定該問題是是否存在一個(gè)個(gè)可行的解決決辦法;接下下來應(yīng)該進(jìn)行行需求分析,,也就是深入入具體地了解解用戶的要求求,在所要開開發(fā)的系統(tǒng)(不妨稱之為目目標(biāo)系統(tǒng))必須做什么這這個(gè)問題上和和用戶取得完完全一致的看看法。經(jīng)過上述軟件件定義時(shí)期的的準(zhǔn)備工作才才能進(jìn)入開發(fā)發(fā)時(shí)期,而在在開發(fā)時(shí)期首首先需要對軟軟件進(jìn)行設(shè)計(jì)計(jì)(通常又分為概概要設(shè)計(jì)和詳詳細(xì)設(shè)計(jì)兩個(gè)個(gè)階段),然后才能進(jìn)進(jìn)入編寫程序序的階段,程程序編寫完之之后還必須經(jīng)經(jīng)過大量的測測試工作(需要的工作量量通常占軟件件開發(fā)全部工工作量的40%~50%)才能最終交付付使用。所以以,編寫程序只是是軟件開發(fā)過過程中的一個(gè)個(gè)階段,而且在典型型的軟件開發(fā)發(fā)工程中,編寫程序所需需的工作量只只占軟件開發(fā)發(fā)全部工作量量的10%~20%。嚴(yán)重的問題是是,在軟件開開發(fā)的不同階階段進(jìn)行修改改需要付出的的代價(jià)是很不不相同的,在在早期引入變變動,涉及的的面較少,因因而代價(jià)也比比較低;而在在開發(fā)的中期期軟件配置的的許多成分已已經(jīng)完成,引引入一個(gè)變動動要對所有已已完成的配置置成分都做相相應(yīng)的修改,,不僅工作量量大,而且邏邏輯上也更復(fù)復(fù)雜,因此付付出的代價(jià)劇劇增;在軟件件“已經(jīng)完成成”時(shí)再引入入變動,當(dāng)然然需要付出更更高的代價(jià)。。根據(jù)美國一一些軟件公司司的統(tǒng)計(jì)資料料,在后期引引入一個(gè)變動動比在早期引引入相同變動動所需付出的的代價(jià)高2~3個(gè)數(shù)量級。圖圖1.1定性地描繪了了在不同時(shí)期期引入一個(gè)變變動需要付出出的代價(jià)的變變化趨勢。圖1.1引入同一變動動付出的代價(jià)價(jià)隨時(shí)間變化化的趨勢統(tǒng)計(jì)數(shù)據(jù)表明明,實(shí)際上用用于軟件維護(hù)護(hù)的費(fèi)用占軟軟件總費(fèi)用的的55%~70%。軟件工程學(xué)的的一個(gè)重要目目標(biāo)就是提高高軟件的可維維護(hù)性,減少少軟件維護(hù)的的代價(jià)。例題:根據(jù)歷歷史數(shù)據(jù)可以以做出如下的的假設(shè):對計(jì)算機(jī)存儲儲容量的需求求大致按下面面公式描述的的趨勢逐年增增加:M=4080e0.28(Y-1960)存儲器的價(jià)格格按下面公式式描述的趨勢勢逐年下降::P1=0.3×0.72Y-1974(美分/位)如果計(jì)算機(jī)字字長為16位位,則存儲器器價(jià)格下降的的趨勢為:P2=0.048×0.72Y-1974(美元/字)在上列公式中中Y代表年份份,M是存儲儲容量(字?jǐn)?shù)數(shù)),P1和和P2代表價(jià)價(jià)格?;谏鲜黾僭O(shè)設(shè)可以比較計(jì)計(jì)算機(jī)硬件和和軟件成本的的變化趨勢。。要求計(jì)算::(1)在1985年對計(jì)算機(jī)存存儲容量的需需求估計(jì)是多多少?如果字長為16位,這個(gè)存儲儲器的價(jià)格是是多少?(2)假設(shè)在1985年一名程序員員每天可開發(fā)發(fā)出10條指令,每月月工作20天,程序員的的平均工資是是每月4000美元。如果一一條指令為一一個(gè)字長,計(jì)計(jì)算使存儲器器裝滿程序所所需用的成本本。思考題:假設(shè)在1995年存儲器字長長為32位,一名程序序員每天可開開發(fā)出30條指令,程序序員的月平均均工資為6000美元,重復(fù)(1)、(2)題。為了消除軟件件危機(jī),首先應(yīng)該對計(jì)計(jì)算機(jī)軟件有有一個(gè)正確的的認(rèn)識。一個(gè)軟件必必須由一個(gè)完完整的配置組組成,事實(shí)上上,軟件是程程序、數(shù)據(jù)及及相關(guān)文檔的的完整集合。。其中,程序序是能夠完成成預(yù)定功能和和性能的可執(zhí)執(zhí)行的指令序序列;數(shù)據(jù)是是使程序能夠夠適當(dāng)?shù)靥幚砝硇畔⒌臄?shù)據(jù)據(jù)結(jié)構(gòu);文檔檔是開發(fā)、使使用和維護(hù)程程序所需要的的圖文資料。。消除軟件危機(jī)機(jī)的途徑更重要的是,,必須充分認(rèn)識識到軟件開發(fā)發(fā)不是某種個(gè)個(gè)體勞動的神神秘技巧,而而應(yīng)該是一種種組織良好、、管理嚴(yán)密、、各類人員協(xié)協(xié)同配合、共共同完成的工工程項(xiàng)目。必須充分吸吸取和借鑒人人類長期以來來從事各種工工程項(xiàng)目所積積累的行之有有效的原理、、概念、技術(shù)術(shù)和方法,特特別要吸取幾幾十年來人類類從事計(jì)算機(jī)機(jī)硬件研究和和開發(fā)的經(jīng)驗(yàn)驗(yàn)教訓(xùn)??傊瑸榱私鉀Q軟件件危機(jī),既要要有技術(shù)措施施(方法和工具),又要有必要要的組織管理理措施。概括地說,軟軟件工程是指指導(dǎo)計(jì)算機(jī)軟軟件開發(fā)和維維護(hù)的一門工工程學(xué)科。采采用工程的概概念、原理、、技術(shù)和方法法來開發(fā)與維維護(hù)軟件,把把經(jīng)過時(shí)間考考驗(yàn)而證明正正確的管理技技術(shù)和當(dāng)前能能夠得到的最最好的技術(shù)方方法結(jié)合起來來,以經(jīng)濟(jì)地地開發(fā)出高質(zhì)質(zhì)量的軟件并并有效地維護(hù)護(hù)它,這就是是軟件工程。。1.2軟件工程軟件工程的介介紹雖然軟件工程程的不同定義義使用了不同同詞句,強(qiáng)調(diào)調(diào)的重點(diǎn)也有有差異,但是是,人們普遍遍認(rèn)為軟件工工程具有下述述的本質(zhì)特性性。1.軟件工程關(guān)注注于大型程序序的構(gòu)造“大”與“小小”的分界線線并不十分清清晰。通常把把一個(gè)人在較較短時(shí)間內(nèi)寫寫出的程序稱稱為小型程序序,而把多人人合作用時(shí)半半年以上才寫寫出的程序稱稱為大型程序序。傳統(tǒng)的程程序設(shè)計(jì)技術(shù)術(shù)和工具是支支持小型程序序設(shè)計(jì)的,不不能簡單地把把這些技術(shù)和和工具用于開開發(fā)大型程序序。事實(shí)上,在此此處使用術(shù)語語“程序”并并不十分恰當(dāng)當(dāng),現(xiàn)在的軟軟件開發(fā)項(xiàng)目目通常構(gòu)造出出包含若干個(gè)個(gè)相關(guān)程序的的“系統(tǒng)”。。2.軟件工程的中中心課題是控控制復(fù)雜性通常,軟件所所解決的問題題十分復(fù)雜,,以致不能把把問題作為一一個(gè)整體通盤盤考慮。人們們不得不把問問題分解,使使得分解出的的每個(gè)部分是是可理解的,,而且各部分分之間保持簡簡單的通信關(guān)關(guān)系。用這種種方法并不能能降低問題的的整體復(fù)雜性性,但是卻可可使它變成可可以管理的。。注意,許多多軟件的復(fù)雜雜性主要不是是由問題的內(nèi)內(nèi)在復(fù)雜性造造成的,而是是由必須處理理的大量細(xì)節(jié)節(jié)造成的。3.軟件經(jīng)常變化化絕大多數(shù)軟件件都模擬了現(xiàn)現(xiàn)實(shí)世界的某某一部分?,F(xiàn)現(xiàn)實(shí)世界在不不斷變化,軟軟件為了不被被很快淘汰,,必須隨著所所模擬的現(xiàn)實(shí)實(shí)世界一起變變化。因此,,在軟件系統(tǒng)統(tǒng)交付使用后后仍然需要耗耗費(fèi)成本,而而且在開發(fā)過過程中必須考考慮軟件將來來可能的變化化。4.開發(fā)軟件的效效率非常重要要目前,社會對對新應(yīng)用系統(tǒng)統(tǒng)的需求超過過了人力資源源所能提供的的限度,軟件件供不應(yīng)求的的現(xiàn)象日益嚴(yán)嚴(yán)重。因此,,軟件工程的的一個(gè)重要課課題就是,尋尋求開發(fā)與維維護(hù)軟件的更更好更有效的的方法和工具具。5.和諧地合作是是開發(fā)軟件的的關(guān)鍵軟件處理的問問題十分龐大大,必須多人人協(xié)同工作才才能解決這類類問題。為了了有效地合作作,必須明確確地規(guī)定每個(gè)個(gè)人的責(zé)任和和相互通信的的方法。事實(shí)實(shí)上僅有上述述規(guī)定還不夠夠,每個(gè)人還還必須嚴(yán)格地地按規(guī)定行事事。為了迫使使大家遵守規(guī)規(guī)定,應(yīng)該運(yùn)運(yùn)用標(biāo)準(zhǔn)和規(guī)規(guī)程。通常,,可以用工具具來支持這些些標(biāo)準(zhǔn)和規(guī)程程??傊?,紀(jì)紀(jì)律是成功地地完成軟件開開發(fā)項(xiàng)目的一一個(gè)關(guān)鍵。6.軟件必須有效效地支持它的的用戶開發(fā)軟件的目目的是支持用用戶的工作。。軟件提供的的功能應(yīng)該能能有效地協(xié)助助用戶完成他他們的工作。。如果用戶對對軟件系統(tǒng)不不滿意,可以以棄用該系統(tǒng)統(tǒng),至少也會會立即提出新新的需求。因因此,僅僅用正確的的方法構(gòu)造系系統(tǒng)還不夠,,還必須構(gòu)造造出正確的系系統(tǒng)。有效地支持持用戶意味味著必須仔仔細(xì)地研究究用戶,以以確定適當(dāng)當(dāng)?shù)墓δ苄栊枨蟆⒖捎糜眯砸蠹凹捌渌|(zhì)量量要求(例如,可靠靠性、響應(yīng)應(yīng)時(shí)間等)。有效地支支持用戶還還意味著,,軟件開發(fā)不不僅應(yīng)該提提交軟件產(chǎn)產(chǎn)品,而且且應(yīng)該寫出出用戶手冊冊和培訓(xùn)材材料,此外外,還必須須注意建立立使用新系系統(tǒng)的環(huán)境境。7.在軟件工程程領(lǐng)域中是是由具有一一種文化背背景的人替替具有另一一種文化背背景的人創(chuàng)造產(chǎn)品這這個(gè)特性與與前兩個(gè)特特性緊密相相關(guān)。軟件件工程師是是諸如Java程序設(shè)計(jì)、、軟件體系系結(jié)構(gòu)、測測試或統(tǒng)一一建模語言言(UML)等方面的專專家,他們們通常并不不是圖書館館管理、航航空控制或或銀行事務(wù)務(wù)等領(lǐng)域的的專家,但但是他們卻卻不得不為為這些領(lǐng)域域開發(fā)應(yīng)用用系統(tǒng)。缺乏應(yīng)用領(lǐng)領(lǐng)域的相關(guān)關(guān)知識,是軟件開開發(fā)項(xiàng)目出出現(xiàn)問題的的常見原因因。自從1968年在聯(lián)邦德德國召開的的國際會議議上正式提提出并使用用了“軟件件工程”這這個(gè)術(shù)語以以來,研究究軟件工程程的專家學(xué)學(xué)者們陸續(xù)續(xù)提出了100多條關(guān)于軟軟件工程的的準(zhǔn)則或““信條”。。著名的軟軟件工程專專家綜合合這這些些學(xué)學(xué)者者們們的的意意見見并并總總結(jié)結(jié)了了TRW公司司多多年年開開發(fā)發(fā)軟軟件件的的經(jīng)經(jīng)驗(yàn)驗(yàn),,于于1983年在在一一篇篇論論文文中中提提出出了了軟軟件件工工程程的的7條基基本本原原理理。。他他認(rèn)認(rèn)為為這這7條原原理理是是確確保保軟軟件件產(chǎn)產(chǎn)品品質(zhì)質(zhì)量量和和開開發(fā)發(fā)效效率率的的原原理理的的最最小小集集合合。。軟件件工工程程的的基基本本原原理理這7條原原理理是是互互相相獨(dú)獨(dú)立立的的,,其其中中任任意意6條原原理理的的組組合合都都不不能能代代替替另另一一條條原原理理,,因因此此,,它它們們是是缺缺一一不不可可的的最最小小集集合合,,然然而而這這7條原原理理又又是是相相當(dāng)當(dāng)完完備備的的,,人人們們雖雖然然不不能能用用數(shù)數(shù)學(xué)學(xué)方方法法嚴(yán)嚴(yán)格格證證明明它它們們是是一一個(gè)個(gè)完完備備的的集集合合,,但但是是,,可可以以證證明明在在此此之之前前已已經(jīng)經(jīng)提提出出的的100多條條軟軟件件工工程程原原理理都都可可以以由由這這7條原理的任意意組合蘊(yùn)含或或派生。下面簡要介紹紹軟件工程的的7條基本原理。。1.用分階段的生生命周期計(jì)劃劃嚴(yán)格管理有人經(jīng)統(tǒng)計(jì)發(fā)發(fā)現(xiàn),在不成成功的軟件項(xiàng)項(xiàng)目中有一半半左右是由于于計(jì)劃不周造造成的,可見見把建立完善善的計(jì)劃作為為第一條基本本原理是吸取取了前人的教教訓(xùn)而提出來來的。2.堅(jiān)持進(jìn)行階段段評審當(dāng)時(shí)已經(jīng)認(rèn)識識到,軟件的的質(zhì)量保證工工作不能等到到編碼階段結(jié)結(jié)束之后再進(jìn)進(jìn)行。這樣說說至少有兩個(gè)個(gè)理由:第一一,大部分錯(cuò)錯(cuò)誤是在編碼碼之前造成的的,例如,根根據(jù)Boehm等人的統(tǒng)計(jì),,設(shè)計(jì)錯(cuò)誤占占軟件錯(cuò)誤的的63%,編碼錯(cuò)誤僅僅占37%;第二,錯(cuò)誤誤發(fā)現(xiàn)與改正正得越晚,所所需付出的代代價(jià)也越高(參見圖1.1)。因此,在每每個(gè)階段都進(jìn)進(jìn)行嚴(yán)格的評評審,以便盡盡早發(fā)現(xiàn)在軟軟件開發(fā)過程程中所犯的錯(cuò)錯(cuò)誤,是一條條必須遵循的的重要原則。。3.實(shí)行嚴(yán)嚴(yán)格的的產(chǎn)品品控制制在軟件件開發(fā)發(fā)過程程中改改變需需求是是難免免的,,只能能依靠靠科學(xué)學(xué)的產(chǎn)產(chǎn)品控控制技技術(shù)來來順應(yīng)應(yīng)這種種要求求。也也就是是說,,當(dāng)改改變需需求時(shí)時(shí),為為了保保持軟軟件各各個(gè)配配置成成分的的一致致性,,必須須實(shí)行行嚴(yán)格格的產(chǎn)產(chǎn)品控控制,,其中中主要要是實(shí)實(shí)行基基準(zhǔn)配配置管管理。。所謂謂基準(zhǔn)準(zhǔn)配置置又稱稱為基基線配配置,,它們們是經(jīng)經(jīng)過階階段評評審后后的軟軟件配配置成成分。?;鶞?zhǔn)準(zhǔn)配置置管理理也稱稱為變變動控控制::一切切有關(guān)關(guān)修改改軟件件的建建議,,特別別是涉涉及到到對基基準(zhǔn)配配置的的修改改建議議,都都必須須按照照嚴(yán)格格的規(guī)規(guī)程進(jìn)進(jìn)行評評審,,獲得得批準(zhǔn)準(zhǔn)以后后才能能實(shí)施施修改改。絕絕對不不能誰誰想修修改軟軟件,,就隨隨意進(jìn)進(jìn)行修修改。。4.采用現(xiàn)現(xiàn)代程程序設(shè)設(shè)計(jì)技技術(shù)從提出出軟件件工程程的概概念開開始,,人們們一直直把主主要精精力用用于研研究各各種新新的程程序設(shè)設(shè)計(jì)技技術(shù),,并進(jìn)進(jìn)一步步研究究各種種先進(jìn)進(jìn)的軟軟件開開發(fā)與與維護(hù)護(hù)技術(shù)術(shù)。實(shí)實(shí)踐表表明,,采用用先進(jìn)進(jìn)的技技術(shù)不不僅可可以提提高軟軟件開開發(fā)和和維護(hù)護(hù)的效效率,,而且且可以以提高高軟件件產(chǎn)品品的質(zhì)質(zhì)量。。5.結(jié)果應(yīng)應(yīng)能清清楚地地審查查軟件產(chǎn)產(chǎn)品不不同于于一般般的物物理產(chǎn)產(chǎn)品,,它是是看不不見摸摸不著著的邏邏輯產(chǎn)產(chǎn)品。。軟件件開發(fā)發(fā)人員員(或開發(fā)發(fā)小組組)的工作作進(jìn)展展情況況可見見性差差,難難以準(zhǔn)準(zhǔn)確度度量,,從而而使得得軟件件產(chǎn)品品的開開發(fā)過過程比比一般般產(chǎn)品品的開開發(fā)過過程更更難于于評價(jià)價(jià)和管管理。。為了了提高高軟件件開發(fā)發(fā)過程程的可可見性性,更更好地地進(jìn)行行管理理,應(yīng)應(yīng)該根根據(jù)軟軟件開開發(fā)項(xiàng)項(xiàng)目的的總目目標(biāo)及及完成成期限限,規(guī)規(guī)定開開發(fā)組組織的的責(zé)任任和產(chǎn)產(chǎn)品標(biāo)標(biāo)準(zhǔn),,從而而使得得所得得到的的結(jié)果果能夠夠清楚楚地審審查。。6.開發(fā)小小組的的人員員應(yīng)該該少而而精這條基基本原原理的的含義義是,,軟件件開發(fā)發(fā)小組組的組組成人人員的的素質(zhì)質(zhì)應(yīng)該該好,,而人人數(shù)則則不宜宜過多多。開開發(fā)小小組人人員的的素質(zhì)質(zhì)和數(shù)數(shù)量是是影響響軟件件產(chǎn)品品質(zhì)量量和開開發(fā)效效率的的重要要因素素。素素質(zhì)高高的人人員的的開發(fā)發(fā)效率率比素素質(zhì)低低的人人員的的開發(fā)發(fā)效率率可能能高幾幾倍至至幾十十倍,,而且且素質(zhì)質(zhì)高的的人員員所開開發(fā)的的軟件件中的的錯(cuò)誤誤明顯顯少于于素質(zhì)質(zhì)低的的人員員所開開發(fā)的的軟件件中的的錯(cuò)誤誤。此此外,,隨著著開發(fā)發(fā)小組組人員員數(shù)目目的增增加,,因?yàn)闉榻涣髁髑闆r況討論論問題題而造造成的的通信信開銷銷也急急劇增增加。。當(dāng)開開發(fā)小小組人人員數(shù)數(shù)為N時(shí),可可能的的通信信路徑徑有N(N-1)/2條,可可見隨隨著人人數(shù)N的增大大,通通信開開銷將將急劇劇增加加。因因此,,組成成少而而精的的開發(fā)發(fā)小組組是軟軟件工工程的的一條條基本本原理理。7.承認(rèn)不斷改改進(jìn)軟件工工程實(shí)踐的的必要性遵循上述6條基本原理理,就能夠夠按照當(dāng)代代軟件工程程基本原理理實(shí)現(xiàn)軟件件的工程化化生產(chǎn),但但是,僅有有上述6條原理并不不能保證軟軟件開發(fā)與與維護(hù)的過過程能趕上上時(shí)代前進(jìn)進(jìn)的步伐,,能跟上技技術(shù)的不斷斷進(jìn)步。因因此,Boehm提出應(yīng)把把承認(rèn)不不斷改進(jìn)進(jìn)軟件工工程實(shí)踐踐的必要要性作為為軟件工工程的第第7條基本原原理。按按照這條條原理,,不僅要要積極主主動地采采納新的的軟件技技術(shù),而而且要注注意不斷斷總結(jié)經(jīng)經(jīng)驗(yàn)。軟件工程程包括技技術(shù)和管管理兩方方面的內(nèi)內(nèi)容,是是技術(shù)與管管理緊密密結(jié)合所形成的的工程學(xué)學(xué)科。所謂管理理就是通通過計(jì)劃劃、組織織和控制制等一系系列活動動,合理理地配置置和使用用各種資資源,以以達(dá)到既既定目標(biāo)標(biāo)的過程程。通常把在在軟件生生命周期期全過程程中使用用的一整整套技術(shù)術(shù)方法的的集合稱稱為方法法學(xué)(methodology),也稱為為范型(paradigm)。在軟件件工程領(lǐng)領(lǐng)域中,,這兩個(gè)個(gè)術(shù)語的的含義基基本相同同。軟件工程程方法學(xué)學(xué)軟件工程程方法學(xué)學(xué)包含3個(gè)要素::方法、、工具和和過程。其中,,方法是是完成軟軟件開發(fā)發(fā)的各項(xiàng)項(xiàng)任務(wù)的的技術(shù)方方法,回回答“怎怎樣做””的問題題;工具具是為運(yùn)運(yùn)用方法法而提供供的自動動的或半半自動的的軟件工工程支撐撐環(huán)境;;過程是是為了獲獲得高質(zhì)質(zhì)量的軟軟件所需需要完成成的一系系列任務(wù)務(wù)的框架架,它規(guī)規(guī)定了完完成各項(xiàng)項(xiàng)任務(wù)的的工作步步驟。目前使用用得最廣廣泛的軟軟件工程程方法學(xué)學(xué),分別別是傳統(tǒng)統(tǒng)方法學(xué)學(xué)和面向向?qū)ο蠓椒椒▽W(xué)。1.傳統(tǒng)方法法學(xué)傳統(tǒng)方法法學(xué)也稱稱為生命命周期方方法學(xué)或或結(jié)構(gòu)化化范型。。它采用用結(jié)構(gòu)化化技術(shù)(結(jié)構(gòu)化分分析、結(jié)結(jié)構(gòu)化設(shè)設(shè)計(jì)和結(jié)結(jié)構(gòu)化實(shí)實(shí)現(xiàn))來完成軟軟件開發(fā)發(fā)的各項(xiàng)項(xiàng)任務(wù),,并使用用適當(dāng)?shù)牡能浖すぞ呋蜍涇浖こ坛汰h(huán)境來來支持結(jié)結(jié)構(gòu)化技技術(shù)的運(yùn)運(yùn)用。這這種方法法學(xué)把軟軟件生命命周期的的全過程程依次劃劃分為若若干個(gè)階階段,然然后順序序地完成成每個(gè)階階段的任任務(wù)。采采用這種種方法學(xué)學(xué)開發(fā)軟軟件的時(shí)時(shí)候,從從對問題題的抽象象邏輯分分析開始始,一個(gè)個(gè)階段一一個(gè)階段段地進(jìn)行行開發(fā)。。2.面向?qū)ο蠓椒ǚ▽W(xué)當(dāng)軟件規(guī)模龐龐大,或者對對軟件的需求求是模糊的或或會隨時(shí)間而而變化的時(shí)候候,使用傳統(tǒng)統(tǒng)方法學(xué)開發(fā)發(fā)軟件往往不不成功,此外外,使用傳統(tǒng)統(tǒng)方法學(xué)開發(fā)發(fā)出的軟件,,維護(hù)起來仍仍然很困難。。概括地說,軟軟件生命周期期由軟件定義義、軟件開發(fā)發(fā)和運(yùn)行維護(hù)護(hù)(也稱為軟件維維護(hù))3個(gè)時(shí)期組成,,每個(gè)時(shí)期又又進(jìn)一步劃分分成若干個(gè)階階段。軟件定義時(shí)期期的任務(wù)是::確定軟件件開發(fā)工程必必須完成的總總目標(biāo);確定定工程的可行行性;導(dǎo)出實(shí)實(shí)現(xiàn)工程目標(biāo)標(biāo)應(yīng)該采用的的策略及系統(tǒng)統(tǒng)必須完成的的功能;估計(jì)計(jì)完成該項(xiàng)工工程需要的資資源和成本,,并且制定工工程進(jìn)度表。。這個(gè)時(shí)期的的工作通常又又稱為系統(tǒng)分分析,由系統(tǒng)統(tǒng)分析員負(fù)責(zé)責(zé)完成。軟件件定義時(shí)期通通常進(jìn)一步劃劃分成3個(gè)階段,即問問題定義、可可行性研究和和需求分析。。1.3軟件生命周期期開發(fā)時(shí)期具體體設(shè)計(jì)和實(shí)現(xiàn)現(xiàn)在前一個(gè)時(shí)時(shí)期定義的軟軟件,它通常常由下述4個(gè)階段組成::總體設(shè)計(jì),,詳細(xì)設(shè)計(jì),,編碼和單元元測試,綜合合測試。其中中前兩個(gè)階段段又稱為系統(tǒng)統(tǒng)設(shè)計(jì),后兩兩個(gè)階段又稱稱為系統(tǒng)實(shí)現(xiàn)現(xiàn)。維護(hù)時(shí)期的主主要任務(wù)是使使軟件持久地地滿足用戶的的需要。具體體地說,當(dāng)軟軟件在使用過過程中發(fā)現(xiàn)錯(cuò)錯(cuò)誤時(shí)應(yīng)該加加以改正;當(dāng)當(dāng)環(huán)境改變時(shí)時(shí)應(yīng)該修改軟軟件以適應(yīng)新新的環(huán)境;當(dāng)當(dāng)用戶有新要要求時(shí)應(yīng)該及及時(shí)改進(jìn)軟件件以滿足用戶戶的新需要。。通常對維護(hù)護(hù)時(shí)期不再進(jìn)進(jìn)一步劃分階階段,但是每每一次維護(hù)活活動本質(zhì)上都都是一次壓縮縮和簡化了的的定義和開發(fā)發(fā)過程。下面扼要介紹紹軟件生命周周期每個(gè)階段段的基本任務(wù)務(wù)。1.問題定義問題定義階段段必須回答的的關(guān)鍵問題是是:“要解決決的問題是什什么?”如果不知道問問題是什么就就試圖解決這這個(gè)問題,顯顯然是盲目的的,只會白白白浪費(fèi)時(shí)間和和金錢,最終終得出的結(jié)果果很可能是毫毫無意義的。。盡管確切地地定義問題的的必要性是十十分明顯的,,但是在實(shí)踐踐中它卻可能能是最容易被被忽視的一個(gè)個(gè)步驟。通過對客戶的的訪問調(diào)查,,系統(tǒng)分析員員扼要地寫出出關(guān)于問題性性質(zhì)、工程目目標(biāo)和工程規(guī)規(guī)模的書面報(bào)報(bào)告,經(jīng)過討討論和必要的的修改之后這這份報(bào)告應(yīng)該該得到客戶的的確認(rèn)。2.可行性研究這個(gè)階段要回回答的關(guān)鍵問問題是:“對對于上一個(gè)階階段所確定的的問題有行得得通的解決辦辦法嗎?”為了回答這個(gè)個(gè)問題,系統(tǒng)統(tǒng)分析員需要要進(jìn)行一次大大大壓縮和簡簡化了的系統(tǒng)統(tǒng)分析和設(shè)計(jì)計(jì)過程,也就就是在較抽象象的高層次上上進(jìn)行的分析析和設(shè)計(jì)過程程。可行性研研究應(yīng)該比較較簡短,這個(gè)個(gè)階段的任務(wù)務(wù)不是具體解解決問題,而而是研究問題題的范圍,探探索這個(gè)問題題是否值得去去解,是否有有可行的解決決辦法??尚行孕匝芯烤康慕Y(jié)結(jié)果是是使用用部門門負(fù)責(zé)責(zé)人作作出是是否繼繼續(xù)進(jìn)進(jìn)行這這項(xiàng)工工程的的決定定的重重要依依據(jù),,一般般說來來,只只有投投資可可能取取得較較大效效益的的那些些工程程項(xiàng)目目才值值得繼繼續(xù)進(jìn)進(jìn)行下下去。??尚行行匝醒芯恳砸院蟮牡哪切┬╇A段段將需需要投投入更更多的的人力力物力力。及及時(shí)終終止不不值得得投資資的工工程項(xiàng)項(xiàng)目,,可以以避免免更大大的浪浪費(fèi)。。3.需求分分析這個(gè)階階段的的任務(wù)務(wù)仍然然不是是具體體地解解決問問題,,而是是準(zhǔn)確確地確確定““為了了解決決這個(gè)個(gè)問題題,目目標(biāo)系系統(tǒng)必必須做做什么么”,,主要要是確確定目目標(biāo)系系統(tǒng)必必須具具備哪哪些功功能。。4.總體體設(shè)設(shè)計(jì)計(jì)這個(gè)個(gè)階階段段必必須須回回答答的的關(guān)關(guān)鍵鍵問問題題是是::““概概括括地地說說,,應(yīng)應(yīng)該該怎怎樣樣實(shí)實(shí)現(xiàn)現(xiàn)目目標(biāo)標(biāo)系系統(tǒng)統(tǒng)?””總體體設(shè)設(shè)計(jì)計(jì)又又稱稱為為概概要要設(shè)設(shè)計(jì)計(jì)。。首先先,,應(yīng)應(yīng)該該設(shè)設(shè)計(jì)計(jì)出出實(shí)實(shí)現(xiàn)現(xiàn)目目標(biāo)標(biāo)系系統(tǒng)統(tǒng)的的幾幾種種可可能能的的方方案案。。通通常常至至少少應(yīng)應(yīng)該該設(shè)設(shè)計(jì)計(jì)出出低低成成本本、、中中等等成成本本和和高高成成本本等等3種方方案案。。軟軟件件工工程程師師應(yīng)應(yīng)該該用用適適當(dāng)當(dāng)?shù)牡谋肀磉_(dá)達(dá)工工具具描描述述每每種種方方案案,,分分析析每每種種方方案案的的優(yōu)優(yōu)缺缺點(diǎn)點(diǎn),,并并在在充充分分權(quán)權(quán)衡衡各各種種方方案案的的利利弊弊的的基基礎(chǔ)礎(chǔ)上上,,推推薦薦一一個(gè)個(gè)最最佳佳方方案案。。此此外外,,還還應(yīng)應(yīng)該該制制定定出出實(shí)實(shí)現(xiàn)現(xiàn)最最佳佳方方案案的的詳詳細(xì)細(xì)計(jì)計(jì)劃劃。。如如果果客客戶戶接接受受所所推推薦薦的的方方案案,,則則應(yīng)應(yīng)該該進(jìn)進(jìn)一一步步完完成成下下述述的的另另一一項(xiàng)項(xiàng)主主要要任任務(wù)務(wù)。。上述設(shè)計(jì)計(jì)工作確確定了解解決問題題的策略略及目標(biāo)標(biāo)系統(tǒng)中中應(yīng)包含含的程序序,但是是,怎樣樣設(shè)計(jì)這這些程序序呢?軟件設(shè)計(jì)計(jì)的一條條基本原原理就是是,程序序應(yīng)該模模塊化,,也就是是說,一一個(gè)程序序應(yīng)該由由若干個(gè)個(gè)規(guī)模適適中的模模塊按合合理的層層次結(jié)構(gòu)構(gòu)組織而而成。因因此,總總體設(shè)計(jì)計(jì)的另一一項(xiàng)主要要任務(wù)就就是設(shè)計(jì)計(jì)程序的的體系結(jié)結(jié)構(gòu),也也就是確確定程序序由哪些些模塊組組成以及及模塊間間的關(guān)系系。5.詳細(xì)設(shè)計(jì)計(jì)總體設(shè)計(jì)計(jì)階段以以比較抽抽象概括括的方式式提出了了解決問問題的辦辦法。詳詳細(xì)設(shè)計(jì)計(jì)階段的的任務(wù)就就是把解解法具體體化,也也就是回回答下面面這個(gè)關(guān)關(guān)鍵問題題:“應(yīng)應(yīng)該怎樣樣具體地地實(shí)現(xiàn)這這個(gè)系統(tǒng)統(tǒng)呢?”這個(gè)階段段的任務(wù)務(wù)還不是是編寫程程序,而而是設(shè)計(jì)計(jì)出程序序的詳細(xì)細(xì)規(guī)格說說明。這這種規(guī)格格說明的的作用很很類似于于其他工工程領(lǐng)域域中工程程師經(jīng)常常使用的的工程藍(lán)藍(lán)圖,它它們應(yīng)該該包含必必要的細(xì)細(xì)節(jié),程程序員可可以根據(jù)據(jù)它們寫寫出實(shí)際際的程序序代碼。。詳細(xì)設(shè)計(jì)計(jì)也稱為為模塊設(shè)設(shè)計(jì),在在這個(gè)階階段將詳詳細(xì)地設(shè)設(shè)計(jì)每個(gè)個(gè)模塊,,確定實(shí)實(shí)現(xiàn)模塊塊功能所所需要的的算法和和數(shù)據(jù)結(jié)結(jié)構(gòu)。6.編碼和單單元測試試這個(gè)階段段的關(guān)鍵鍵任務(wù)是是寫出正正確的容容易理解解、容易易維護(hù)的的程序模模塊。程序員應(yīng)應(yīng)該根據(jù)據(jù)目標(biāo)系系統(tǒng)的性性質(zhì)和實(shí)實(shí)際環(huán)境境,選取取一種適適當(dāng)?shù)母吒呒壋绦蛐蛟O(shè)計(jì)語語言(必要時(shí)用用匯編語語言),把詳細(xì)細(xì)設(shè)計(jì)的的結(jié)果翻翻譯成用用選定的的語言書書寫的程程序,并并且仔細(xì)細(xì)測試編編寫出的的每一個(gè)個(gè)模塊。。7.綜合測試試這個(gè)階段段的關(guān)鍵鍵任務(wù)是是通過各各種類型型的測試試(及相應(yīng)的的調(diào)試)使軟件達(dá)達(dá)到預(yù)定定的要求求。最基本的的測試是是集成測測試和驗(yàn)驗(yàn)收測試試。所謂謂集成測測試是根根據(jù)設(shè)計(jì)計(jì)的軟件件結(jié)構(gòu),,把經(jīng)過過單元測測試檢驗(yàn)驗(yàn)的模塊塊按某種種選定的的策略裝裝配起來來,在裝裝配過程程中對程程序進(jìn)行行必要的的測試。。所謂驗(yàn)驗(yàn)收測試試則是按按照規(guī)格格說明書書的規(guī)定定,由用用戶對目目標(biāo)系統(tǒng)統(tǒng)進(jìn)行驗(yàn)驗(yàn)收。必要時(shí)還還可以再再通過現(xiàn)現(xiàn)場測試試或平行行運(yùn)行等等方法對對目標(biāo)系系統(tǒng)進(jìn)一一步測試試檢驗(yàn)。。為了使用用戶能夠夠積極參參加驗(yàn)收收測試,,并且在在系統(tǒng)投投入生產(chǎn)產(chǎn)性運(yùn)行行以后能能夠正確確有效地地使用這這個(gè)系統(tǒng)統(tǒng),通常常需要以以正式的的或非正正式的方方式對用用戶進(jìn)行行培訓(xùn)。。通過對軟軟件測試試結(jié)果的的分析可可以預(yù)測測軟件的的可靠性性;反之之,根據(jù)據(jù)對軟件件可靠性性的要求求,也可可以決定定測試和和調(diào)試過過程什么么時(shí)候可可以結(jié)束束。應(yīng)該用正正式的文文檔資料料把測試試計(jì)劃、、詳細(xì)測測試方案案以及實(shí)實(shí)際測試試結(jié)果保保存下來來,作為為軟件配配置的一一個(gè)組成成部分。。8.軟件維維護(hù)維護(hù)階階段的的關(guān)鍵鍵任務(wù)務(wù)是,,通過過各種種必要要的維維護(hù)活活動使使系統(tǒng)統(tǒng)持久久地滿滿足用用戶的的需要要。通常有有4類維護(hù)護(hù)活動動:改改正性性維護(hù)護(hù),也也就是是診斷斷和改改正在在使用用過程程中發(fā)發(fā)現(xiàn)的的軟件件錯(cuò)誤誤;適適應(yīng)性性維護(hù)護(hù),即即修改改軟件件以適適應(yīng)環(huán)環(huán)境的的變化化;完完善性性維護(hù)護(hù),即即根據(jù)據(jù)用戶戶的要要求改改進(jìn)或或擴(kuò)充充軟件件使它它更完完善;;預(yù)防防性維維護(hù),,即修修改軟軟件為為將來來的維維護(hù)活活動預(yù)預(yù)先做做準(zhǔn)備備。雖然沒沒有把把維護(hù)護(hù)階段段進(jìn)一一步劃劃分成成更小小的階階段,,但是是實(shí)際際上每每一項(xiàng)項(xiàng)維護(hù)護(hù)活動動都應(yīng)應(yīng)該經(jīng)經(jīng)過提提出維維護(hù)要要求(或報(bào)告告問題題),分析析維護(hù)護(hù)要求求,提提出維維護(hù)方方案,,審批批維護(hù)護(hù)方案案,確確定維維護(hù)計(jì)計(jì)劃,,修改改軟件件設(shè)計(jì)計(jì),修修改程程序,,測試試程序序,復(fù)復(fù)查驗(yàn)驗(yàn)收等等一系系列步步驟,,因此此實(shí)質(zhì)質(zhì)上是是經(jīng)歷歷了一一次壓壓縮和和簡化化了的的軟件件定義義和開開發(fā)的的全過過程。。每一項(xiàng)項(xiàng)維護(hù)護(hù)活動動都應(yīng)應(yīng)該準(zhǔn)準(zhǔn)確地地記錄錄下來來,作作為正正式的的文檔檔資料料加以以保存存。在實(shí)際際從事事軟件件開發(fā)發(fā)工作作時(shí),,軟件件規(guī)模模、種種類、、開發(fā)發(fā)環(huán)境境及開開發(fā)時(shí)時(shí)使用用的技技術(shù)方方法等等因素素,都都影響響階段段的劃劃分。。軟件過程是是為了獲得得高質(zhì)量軟軟件所需要要完成的一一系列任務(wù)務(wù)的框架,,它規(guī)定了了完成各項(xiàng)項(xiàng)任務(wù)的工工作步驟。1.4軟件過程過程定義了了運(yùn)用方法法的順序、、應(yīng)該交付付的文檔資資料、為保保證軟件質(zhì)質(zhì)量和協(xié)調(diào)調(diào)變化所需需要采取的的管理措施施,以及標(biāo)標(biāo)志軟件開開發(fā)各個(gè)階階段任務(wù)完完成的里程程碑。為獲獲得高質(zhì)量量的軟件產(chǎn)產(chǎn)品,軟件件過程必須須科學(xué)、有有效。沒有一個(gè)適適用于所有有軟件項(xiàng)目目的任務(wù)集集合。因此此,科學(xué)、、有效的軟軟件過程應(yīng)應(yīng)該定義一一組適合于于所承擔(dān)的的項(xiàng)目特點(diǎn)點(diǎn)的任務(wù)集集合。通常常,一個(gè)任任務(wù)集合包包括一組軟軟件工程任任務(wù)、里程程碑和應(yīng)該該交付的產(chǎn)產(chǎn)品。通常使用生生命周期模模型簡潔地地描述軟件件過程。生生命周期模模型規(guī)定了了把生命周周期劃分成成哪些階段段及各個(gè)階階段的執(zhí)行行順序,因因此,也稱稱為過程模模型。在20世紀(jì)80年代之前,,瀑布模型型一直是惟惟一被廣泛泛采用的生生命周期模模型,現(xiàn)在在它仍然是是軟件工程程中應(yīng)用得得最廣泛的的過程模型型。傳統(tǒng)軟軟件工程方方法學(xué)的軟軟件過程,,基本上可可以用瀑布布模型來描描述。圖1.2所示為傳統(tǒng)統(tǒng)的瀑布模模型。按照照傳統(tǒng)的瀑瀑布模型開開發(fā)軟件,,有下述的的幾個(gè)特點(diǎn)點(diǎn)。瀑布模型圖1.2傳統(tǒng)的瀑布布模型1.階段間具有有順序性和和依賴性這個(gè)特點(diǎn)有有兩重含義義:①必須等前一一階段的工工作完成之之后,才能能開始后一一階段的工工作;②前一階段的的輸出文檔檔就是后一一階段的輸輸入文檔,,因此,只只有前一階階段的輸出出文檔正確確,后一階階段的工作作才能獲得得正確的結(jié)結(jié)果。2.推遲實(shí)現(xiàn)的的觀點(diǎn)對于規(guī)模較較大的軟件件項(xiàng)目來說說,往往編編碼開始得得越早最終終完成開發(fā)發(fā)工作所需需要的時(shí)間間反而越長長。這是因因?yàn)?,前面面階段的工工作沒做或或做得不扎扎實(shí),過早早地考慮進(jìn)進(jìn)行程序?qū)崒?shí)現(xiàn),往往往導(dǎo)致大量量返工,有有時(shí)甚至發(fā)發(fā)生無法彌彌補(bǔ)的問題題,帶來災(zāi)災(zāi)難性后果果。3.質(zhì)量保證的的觀點(diǎn)軟件工程的的基本目標(biāo)標(biāo)是優(yōu)質(zhì)、、高產(chǎn)。為為了保證所所開發(fā)的軟軟件的質(zhì)量量,在瀑布布模型的每每個(gè)階段都都應(yīng)堅(jiān)持兩兩個(gè)重要做做法:(1)每個(gè)階階段都必須須完成規(guī)定定的文檔,,沒有交出出合格的文文檔就是沒沒有完成該該階段的任任務(wù)。(2)每個(gè)階階段結(jié)束前前都要對所所完成的文文檔進(jìn)行評評審,以便便盡早發(fā)現(xiàn)現(xiàn)問題,改改正錯(cuò)誤。。但是傳統(tǒng)的的瀑布模型型過于理想想化了,事事實(shí)上,人人在工作過過程中不可可能不犯錯(cuò)錯(cuò)誤。在設(shè)設(shè)計(jì)階段可可能發(fā)現(xiàn)規(guī)規(guī)格說明文文檔中的錯(cuò)錯(cuò)誤,而設(shè)設(shè)計(jì)上的缺缺陷或錯(cuò)誤誤可能在實(shí)實(shí)現(xiàn)過程中中顯現(xiàn)出來來,在綜合合測試階段段將發(fā)現(xiàn)需需求分析、、設(shè)計(jì)或編編碼階段的的許多錯(cuò)誤誤。因此,,實(shí)際的瀑瀑布模型是是帶“反饋饋環(huán)”的,,如圖1.3所示(圖中中實(shí)線箭頭頭表示開發(fā)發(fā)過程,虛虛線箭頭表表示維護(hù)過過程)。當(dāng)當(dāng)在后面階階段發(fā)現(xiàn)前前面階段的的錯(cuò)誤時(shí),,需要沿圖圖中左側(cè)的的反饋線返返回前面的的階段,修修正前面階階段的產(chǎn)品品之后再回回來繼續(xù)完完成后面階階段的任務(wù)務(wù)。圖1.3實(shí)際際的的瀑瀑布布模模型型瀑布布模模型型有有許許多多優(yōu)優(yōu)點(diǎn)點(diǎn)::可可強(qiáng)強(qiáng)迫迫開開發(fā)發(fā)人人員員采采用用規(guī)規(guī)范范的的方方法法((例例如如,,結(jié)結(jié)構(gòu)構(gòu)化化技技術(shù)術(shù)));;嚴(yán)嚴(yán)格格地地規(guī)規(guī)定定了了每每個(gè)個(gè)階階段段必必須須提提交交的的文文檔檔;;要要求求每每個(gè)個(gè)階階段段交交出出的的所所有有產(chǎn)產(chǎn)品品都都必必須須經(jīng)經(jīng)過過質(zhì)質(zhì)量量保保證證小小組組的的仔仔細(xì)細(xì)驗(yàn)驗(yàn)證證。。由于于絕絕大大部部分分軟軟件件預(yù)預(yù)算算都都花花費(fèi)費(fèi)在在軟軟件件維維護(hù)護(hù)上上,,因因此此,,使使軟軟件件變變得得比比較較容容易易維維護(hù)護(hù)就就能能顯顯著著降降低低軟軟件件預(yù)預(yù)算算。??煽梢砸哉f說,,瀑瀑布布模模型型的的成成功功在在很很大大程程度度上上是是由由于于它它基基本本上上是是一一種種文文檔檔驅(qū)驅(qū)動動的的模模型型。。但是是,,““瀑瀑布布模模型型是是由由文文檔檔驅(qū)驅(qū)動動的的””這這個(gè)個(gè)事事實(shí)實(shí)也也是是它它的的一一個(gè)個(gè)主主要要缺缺點(diǎn)點(diǎn)。。在在可可運(yùn)運(yùn)行行的的軟軟件件產(chǎn)產(chǎn)品品交交付付給給用用戶戶之之前前,,用用戶戶只只能能通通過過文文檔檔來來了了解解產(chǎn)產(chǎn)品品是是什什么么樣樣的的。。但但是是,,僅僅僅僅通通過過寫寫在在紙紙上上的的靜靜態(tài)態(tài)的的規(guī)規(guī)格格說說明明,,很很難難全全面面正正確確地地認(rèn)認(rèn)識識動動態(tài)態(tài)的的軟軟件件產(chǎn)產(chǎn)品品。。而而且且事事實(shí)實(shí)證證明明,,一一旦旦一一個(gè)個(gè)用用戶戶開開始始使使用用一一個(gè)個(gè)軟軟件件,,在在他他的的頭頭腦腦中中關(guān)關(guān)于于該該軟軟件件應(yīng)應(yīng)該該做做什什么么的的想想法法就就會會或或多多或或少少地地發(fā)發(fā)生生變變化化,,這這就就使使得得最最初初提提出出的的需需求求變變得得不不完完全全適適用用了了。。事事實(shí)實(shí)上上,,要要求求用用戶戶不不經(jīng)經(jīng)過過實(shí)實(shí)踐踐就就提提出出完完整整準(zhǔn)準(zhǔn)確確的的需需求求,,在在許許多多情情況況下下都都是是不不切切實(shí)實(shí)際際的的。。總總之之,,由由于于瀑瀑布布模模型型幾幾乎乎完完全全依依賴賴于于書書面面的的規(guī)規(guī)格格說說明明,,很很可可能能導(dǎo)導(dǎo)致致最最終終開開發(fā)發(fā)出出的的軟軟件件產(chǎn)產(chǎn)品品不不能能真真正正滿滿足足用用戶戶的的需需要要。。所謂快速原型型是快速建立立起來的可以以在計(jì)算機(jī)上上運(yùn)行的程序序,它所能完完成的功能往往往是最終產(chǎn)產(chǎn)品能完成的的功能的一個(gè)個(gè)子集。如圖圖1.4所示(圖中實(shí)實(shí)線箭頭表示示開發(fā)過程,,虛線箭頭表表示維護(hù)過程程),快速原原型模型的第第一步是快速速建立一個(gè)能能反映用戶主主要需求的原原型系統(tǒng),讓讓用戶在計(jì)算算機(jī)上試用它它,通過實(shí)踐踐來了解目標(biāo)標(biāo)系統(tǒng)的概貌貌??焖僭湍P托屯ǔ?,用戶試試用原型系統(tǒng)統(tǒng)之后會提出出許多修改意意見,開發(fā)人人員按照用戶戶的意見快速速地修改原型型系統(tǒng),然后后再次請用戶戶試用……一旦用戶認(rèn)為為這個(gè)原型系系統(tǒng)確實(shí)能做做他們所需要要的工作,開開發(fā)人員便可可據(jù)此書寫規(guī)規(guī)格說明文檔檔,根據(jù)這份份文檔開發(fā)出出的軟件可以以滿足用戶的的真實(shí)需求。。從圖1.4可以看出,快快速原型模型型是不帶反饋饋環(huán)的,這正正是這種過程程模型的主要要優(yōu)點(diǎn):軟軟件產(chǎn)品的開開發(fā)基本上是是線性順序進(jìn)進(jìn)行的。能做做到基本上線線性順序開發(fā)發(fā)的主要原因因如下:圖1.4快速原型模型型(1)原型系統(tǒng)統(tǒng)已經(jīng)通過與與用戶交互而而得到驗(yàn)證,,據(jù)此產(chǎn)生的的規(guī)格說明文文檔正確地描描述了用戶需需求,因此,,在開發(fā)過程程的后續(xù)階段段不會因?yàn)榘l(fā)發(fā)現(xiàn)了規(guī)格說說明文檔的錯(cuò)錯(cuò)誤而進(jìn)行較較大的返工。。(2)開發(fā)人員員通過建立原原型系統(tǒng)已經(jīng)經(jīng)學(xué)到了許多多東西(至少少知道了“系系統(tǒng)不應(yīng)該做做什么,以及及怎樣不去做做不該做的事事情”),因因此,在設(shè)計(jì)計(jì)和編碼階段段發(fā)生錯(cuò)誤的的可能性也比比較小,這自自然減少了在在后續(xù)階段需需要改正前面面階段所犯錯(cuò)錯(cuò)誤的可能性性。軟件產(chǎn)品一旦旦交付給用戶戶使用之后,,維護(hù)便開始始了。根據(jù)所所需完成的維維護(hù)工作種類類的不同,可可能需要返回回到需求分析析、規(guī)格說明明、設(shè)計(jì)或編編碼等不同階階段,如圖1.4中虛線箭頭所所示??焖僭偷谋颈举|(zhì)是“快速速”。開發(fā)人人員應(yīng)該盡可可能快地建造造出原型系統(tǒng)統(tǒng),以加速軟軟件開發(fā)過程程,節(jié)約軟件件開發(fā)成本。。原型的用途途是獲知用戶戶的真正需求求,一旦需求求確定了,原原型將被拋棄棄。因此,原原型系統(tǒng)的內(nèi)內(nèi)部結(jié)構(gòu)并不不重要,重要要的是,必須須迅速地構(gòu)建建原型然后根根據(jù)用戶意見見迅速地修改改原型。UNIXShell和超文本都是是廣泛使用的的快速原型語語言,最近的的趨勢是,廣廣泛地使用第第四代語言((4GL)構(gòu)建快速原原型。當(dāng)快速原型的的某個(gè)部分是是利用軟件工工具由計(jì)算機(jī)機(jī)自動生成的的時(shí)候,可以以把這部分用用到最終的軟軟件產(chǎn)品中。。增量模型也稱稱為漸增模型型,如圖1.5所示。使用增增量模型開發(fā)發(fā)軟件時(shí),把把軟件產(chǎn)品作作為一系列的的增量構(gòu)件來來設(shè)計(jì)、編碼碼、集成和測測試。每個(gè)構(gòu)構(gòu)件由多個(gè)相相互作用的模模塊構(gòu)成,并并且能夠完成成特定的功能能。使用增量量模型時(shí),第第一個(gè)增量構(gòu)構(gòu)件往往實(shí)現(xiàn)現(xiàn)軟件的基本本需求,提供供最核心的功功能。第二個(gè)個(gè)增量構(gòu)件提提供更完善的的編輯和文檔檔生成功能;;第三個(gè)增量量構(gòu)件實(shí)現(xiàn)拼拼寫和語法檢檢查功能;第第四個(gè)增量構(gòu)構(gòu)件完成高級級的頁面排版版功能。增量模模型把軟件件產(chǎn)品品分解解成增增量構(gòu)構(gòu)件時(shí)時(shí),應(yīng)應(yīng)該使使構(gòu)件件的規(guī)規(guī)模適適中,,規(guī)模模過大大或過過小都都不好好。最最佳分分解方方法因因軟件件產(chǎn)品品特點(diǎn)點(diǎn)和開開發(fā)人人員的的習(xí)慣慣而異異。分分解時(shí)時(shí)惟一一必須須遵守守的約約束條條件是是,當(dāng)當(dāng)把新新構(gòu)件件集成成到現(xiàn)現(xiàn)有軟軟件中中時(shí),,所形形成的的產(chǎn)品品必須須是可可測試試的。。采用瀑布布模型或或快速原原型模型型開發(fā)軟軟件時(shí),,目標(biāo)都都是一次次就把一一個(gè)滿足足所有需需求的產(chǎn)產(chǎn)品提交交給用戶戶。增量量模型則則與之相相反,它它分批地地逐步向向用戶提提交產(chǎn)品品,整個(gè)個(gè)軟件產(chǎn)產(chǎn)品被分分解成許許多個(gè)增增量構(gòu)件件,開發(fā)發(fā)人員一一個(gè)構(gòu)件件接一個(gè)個(gè)構(gòu)件地地向用戶戶提交產(chǎn)產(chǎn)品。從從第一個(gè)個(gè)構(gòu)件交交付之日日起,用用戶就能能做一些些有用的的工作。。顯然,,能在較較短時(shí)間間內(nèi)向用用戶提交交可完成成部分工工作的產(chǎn)產(chǎn)品,是是增量模模型的一一個(gè)優(yōu)點(diǎn)點(diǎn)。圖1.5增量模型型增量模型型的另一一個(gè)優(yōu)點(diǎn)點(diǎn)是,逐逐步增加加產(chǎn)品功功能可以以使用戶戶有較充充裕的時(shí)時(shí)間學(xué)習(xí)習(xí)和適應(yīng)應(yīng)新產(chǎn)品品,從而而減少一一個(gè)全新新的軟件件可能給給客戶組組織帶來來的沖擊擊。使用增量量模型的的困難是是,在把把每個(gè)新新的增量量構(gòu)件集集成到現(xiàn)現(xiàn)有軟件件體系結(jié)結(jié)構(gòu)中時(shí)時(shí),必須須不破壞壞原來已已經(jīng)開發(fā)發(fā)出的產(chǎn)產(chǎn)品。此此外,必必須把軟軟件的體體系結(jié)構(gòu)構(gòu)設(shè)計(jì)得得便于按按這種方方式進(jìn)行行擴(kuò)充,,向現(xiàn)有有產(chǎn)品中中加入新新構(gòu)件的的過程必必須簡單單、方便便,也就就是說,,軟件體體系結(jié)構(gòu)構(gòu)必須是是開放的的。但是是,從長長遠(yuǎn)觀點(diǎn)點(diǎn)看,具具有開放放結(jié)構(gòu)的的軟件擁擁有真正正的優(yōu)勢勢,這樣樣的軟件件的可維維護(hù)性明明顯好于于封閉結(jié)結(jié)構(gòu)的軟軟件。因此,盡盡管采用用增量模模型比采采用瀑布布模型和和快速原原型模型型需要更更精心的的設(shè)計(jì),,但在設(shè)設(shè)計(jì)階段段多付出出的勞動動將在維維護(hù)階段段獲得回回報(bào)。如如果一個(gè)個(gè)設(shè)計(jì)非非常靈活活而且足足夠開放放,足以以支持增增量模型型,那么么,這樣樣的設(shè)計(jì)計(jì)將允許許在不破破壞產(chǎn)品品的情況況下進(jìn)行行維護(hù)。。事實(shí)上上,使用用增量模模型時(shí)開開發(fā)軟件件和擴(kuò)充充軟件功功能(完完善性維維護(hù))并并沒有本本質(zhì)區(qū)別別,都是是向現(xiàn)有有產(chǎn)品中中加入新新構(gòu)件的的過程。。從某種意意義上說說,增量量模型本本身是自自相矛盾盾的。它它一方面面要求開開發(fā)人員員把軟件件看作一一個(gè)整體體,另一一方面又又要求開開發(fā)人員員把軟件件看作構(gòu)構(gòu)件序列列,每個(gè)個(gè)構(gòu)件本本質(zhì)上都都獨(dú)立于于另一個(gè)個(gè)構(gòu)件。。除非開開發(fā)人員員有足夠夠的技術(shù)術(shù)能力協(xié)協(xié)調(diào)好這這一明顯顯的矛盾盾,否則則用增量量模型開開發(fā)出的的產(chǎn)品可可能并不不令人滿滿意。圖1.5所示的增增量模型型表明,,必須在在開始實(shí)實(shí)現(xiàn)各個(gè)個(gè)構(gòu)件之之前就全全部完成成需求分分析、規(guī)規(guī)格說明明和概要
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年上半年宜興市丁蜀鎮(zhèn)人民政府直屬國企業(yè)公開招聘聘用人員易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 2025年上半年安徽省馬鞍山市鄭蒲港新區(qū)姥橋鎮(zhèn)政府招聘8人易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 2025年上半年安徽池州貴池區(qū)生態(tài)環(huán)境分局招聘編外人員易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 2025年上半年安徽宣城事業(yè)單位聯(lián)考易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 2025年上半年安徽合肥肥西縣嚴(yán)店鄉(xiāng)招聘3人易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 2025年上半年安康西鄉(xiāng)縣事業(yè)單位招考工作人員工作(19名)易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 2025年上半年寧波市奉化市市文廣新局招考編外人員易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 2025四川綿陽市九洲集團(tuán)軟件與數(shù)據(jù)智能軍團(tuán)招聘項(xiàng)目經(jīng)理崗位1人筆試參考題庫附帶答案詳解
- 2025年上半年寧波市住房公積金管理中心象山分中心招考易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 2025年上半年寧波北侖區(qū)港航管理處招考易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 急癥手術(shù)預(yù)見性護(hù)理
- 鋼結(jié)構(gòu)安裝方案(彩鋼屋面)
- 混凝土模板支撐工程專項(xiàng)施工方案(140頁)
- 方管、矩形管規(guī)格與理論重量參考表82835
- 腫瘤標(biāo)志物檢驗(yàn)(課堂PPT)
- HY∕T 0289-2020 海水淡化濃鹽水排放要求
- 監(jiān)管方式征免性質(zhì)對應(yīng)關(guān)系表
- 預(yù)應(yīng)力錨索安全專項(xiàng)施工方案
- 在泰居留90天移民局報(bào)到表格(TM47)
- 銅陵職業(yè)技術(shù)學(xué)院“十三五”發(fā)展規(guī)劃編制工作方案
- 某屠宰場廢水處理工藝設(shè)計(jì)_畢業(yè)設(shè)計(jì)(論文)
評論
0/150
提交評論