第1章軟件工程學(xué)概述_第1頁
第1章軟件工程學(xué)概述_第2頁
第1章軟件工程學(xué)概述_第3頁
第1章軟件工程學(xué)概述_第4頁
第1章軟件工程學(xué)概述_第5頁
已閱讀5頁,還剩79頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

第一章

軟件工程導(dǎo)論

2本章目標(biāo)掌握軟件的定義,軟件工程的定義及三要素。掌握軟件生存周期的概念和內(nèi)容,8種軟件開發(fā)模型。了解軟件危機(jī)的表現(xiàn)及解決途徑,軟件開發(fā)方法。31.1軟件的概念

計算機(jī)軟件的發(fā)展與進(jìn)步,與計算機(jī)硬件的發(fā)展和計算機(jī)的普及是分不開的。同其他事物的發(fā)展規(guī)律一樣,它也經(jīng)歷了從產(chǎn)生、發(fā)展到成熟的過程。在這個過程中也經(jīng)歷了軟件的危機(jī),為吸取歷史經(jīng)驗教訓(xùn),應(yīng)該認(rèn)真研究產(chǎn)生軟件危機(jī)的原因,探討消除軟件危機(jī)的途徑。阿塔納索夫-貝瑞計算機(jī)(Atanasoff-BerryComputer,簡稱ABC)是法定的世界上第一臺電子計算機(jī)。是愛荷華州立大學(xué)的約翰·文森特·阿塔納索夫(JohnVincentAtanasoff)和他的研究生克利福特·貝瑞(CliffordBerry)在1937年設(shè)計,不可編程,僅僅設(shè)計用于求解線性方程組,并在1942年成功進(jìn)行了測試?!咎攸c】這臺計算機(jī)是電子與電器的結(jié)合,電路系統(tǒng)中裝有300個電子真空管執(zhí)行數(shù)字計算與邏輯運(yùn)算,機(jī)器使用電容器來進(jìn)行數(shù)值存儲,數(shù)據(jù)輸入采用打4世界第一臺計算機(jī)孔讀卡方法,還采用了二進(jìn)位制。因此,ABC的設(shè)計中已經(jīng)包含了現(xiàn)代計算機(jī)中四個最重要的基本概念,從這個角度來說它是一臺真正現(xiàn)代意義上的電子計算機(jī)。5艾奧瓦州立大學(xué)DurhamCenter一樓的ABC6世界第二臺計算機(jī)ENIAC是第二臺(中文名:埃尼阿克)(電子數(shù)字積分計算機(jī)的簡稱,英文全稱為ElectronicNumericalIntegratorAndComputer),事實上它是世界上第一臺電子多用途計算機(jī),它于1946年2月14日在美國宣告誕生。承擔(dān)開發(fā)任務(wù)的“莫爾小組”由四位科學(xué)家和工程師埃克特、莫克利、戈爾斯坦、博克斯組成,總工程師??颂卦诋?dāng)時年僅24歲。7ENIAC誕生于二戰(zhàn)時期,最初是作為輔助炮兵計算炮彈軌跡的工具,在盟軍登陸西歐前一年開始制造,但直到1945年停火時還沒完成。在冷戰(zhàn)初期軍方就發(fā)現(xiàn)了ENIAC的大量用途,它的17468根真空管被用來測試氫彈的早期設(shè)計的可行性。這臺計算機(jī)每秒能執(zhí)行5000條指令,在當(dāng)時的情況下它的運(yùn)算速度比電動式計算機(jī)快1000倍。當(dāng)然,現(xiàn)在iPhone6每秒能響應(yīng)250億條指令。89ENIAC重達(dá)27噸,占地1800平方英尺,101815年世界上首位程序員AugustaAdaKing誕生她是英國詩人拜倫的獨生女,師從計算機(jī)數(shù)學(xué)基礎(chǔ)布爾代數(shù)的創(chuàng)始人之一摩根,因第一個為分析機(jī)編出了程序即“第一套計算機(jī)軟件”,被譽(yù)為“世界上第一位軟件工程師”。

11補(bǔ)充

軟件發(fā)展歷程

軟件的發(fā)展主要經(jīng)歷了以下3個發(fā)展階段:第一階段(20世紀(jì)50年代初期至20世紀(jì)60年代中期)特點:(1)稱為程序設(shè)計階段(2)軟件生產(chǎn)以個體化為主(3)編寫程序的工具只有低級語言(4)軟件規(guī)模小,幾乎沒有系統(tǒng)化的標(biāo)準(zhǔn)可循12(5)軟件由軟件使用者自己開發(fā)和編寫,適合個人應(yīng)用(6)沒有“軟件”概念,對于程序有關(guān)的文檔的重要性認(rèn)識不足,開發(fā)主要圍繞硬件進(jìn)行(7)工程規(guī)模小,使用工具單一,開發(fā)者之間沒有明確分工第二階段(20世紀(jì)60年代中期至70年代末期)稱程序系統(tǒng)階段13特點:(1)大容量存儲器的出現(xiàn)(2)出現(xiàn)了高級程序設(shè)計語言(3)多道程序設(shè)計、用戶系統(tǒng)引入了人機(jī)交互的新概念(4)出現(xiàn)了實時系統(tǒng)和第一代數(shù)據(jù)庫管理系統(tǒng)(5)軟件產(chǎn)品的使用和軟件作坊的出現(xiàn)(6)軟件的應(yīng)用范圍更廣14缺乏有效的工程化方法指導(dǎo),很多軟件不能按計劃完成,糾正源代碼錯誤變更程序功能等軟件維護(hù)花費了人們更多的精力和資源,到了20世紀(jì)60年代中期,出現(xiàn)了所謂的軟件危機(jī)。15第三階段(20世紀(jì)70年代末至今)特點:(1)計算機(jī)硬件向巨型機(jī)和微型機(jī)兩個方向發(fā)展(2)計算機(jī)網(wǎng)絡(luò)的出現(xiàn),Internet的飛速發(fā)展(3)出現(xiàn)了軟件工程(4)分布式系統(tǒng)、高帶寬數(shù)字通信系統(tǒng)、實時數(shù)據(jù)訪問控制系統(tǒng)等應(yīng)用技術(shù)的迅速發(fā)展,對計算機(jī)軟件的需求要求更高16補(bǔ)充之二:

軟件的定義

軟件是計算機(jī)系統(tǒng)中與硬件(hardware)相互依存的另一部分,與硬件合為一體完成系統(tǒng)功能。軟件定義包括如下幾點:(1)功能和性能的指令集(即程序);(2)程序能正常操縱信息的數(shù)據(jù)結(jié)構(gòu)(即相關(guān)數(shù)據(jù));(3)與程序開發(fā)維護(hù)和使用有關(guān)的各種圖文數(shù)據(jù)(即說明文檔)。軟件=程序+數(shù)據(jù)+相關(guān)文檔(1)程序是能夠完成預(yù)定功能和性能的可執(zhí)行的指令序列(2)數(shù)據(jù)是使程序能夠適當(dāng)?shù)靥幚硇畔⒌臄?shù)據(jù)結(jié)構(gòu)(3)文檔是開發(fā)、使用和維護(hù)程序所需要的圖文資料17【注意】【1】軟件開發(fā)不是某種個體勞動的神秘技巧,而是一種組織良好、管理嚴(yán)密、各類人員協(xié)同配合、共同完成的工程項目?!?】應(yīng)推廣使用在實踐中總結(jié)出來的開發(fā)軟件的成功的技術(shù)和方法【3】應(yīng)該開發(fā)和使用更好的軟件工具1819

軟件的特點(1)軟件是一種抽象的邏輯實體。人們無法看到其具體形態(tài),而必須通過觀察、分析、思考、判斷等方式去了解它的特性功能。(2)軟件是通過人們的智力活動,把知識與技術(shù)轉(zhuǎn)化為信息的一種產(chǎn)品,是在研制、開發(fā)中被創(chuàng)造出來的。一旦某一軟件被研制成功,只需復(fù)制即可,但其維護(hù)的工作量大。(3)軟件具有“復(fù)雜性”,開發(fā)和運(yùn)行經(jīng)常受到計算機(jī)系統(tǒng)的限制。20(4)軟件成本昂貴,開發(fā)方式目前尚未擺脫手工生產(chǎn)方式。(5)在軟件的運(yùn)行和使用期間,不存在硬件那樣的機(jī)器磨損、老化問題。但是軟件也存在退化問題,也需要維護(hù)。21圖1-1是硬件的失效率曲線,它是一個“U型”曲線,說明隨使用時間的增加,失效率急劇上升。圖1-2是軟件失效率曲線,表明軟件隨使用時間的增加,失效率降低;因為軟件雖然不存在磨損和老化問題,但存在退化問題。22

軟件的分類1.基于軟件的功能劃分(1)系統(tǒng)軟件系統(tǒng)軟件是與計算機(jī)硬件緊密配合居于計算機(jī)系統(tǒng)中最靠近硬件的一層。例如,設(shè)備驅(qū)動程序、操作系統(tǒng)等。(2)支撐軟件支撐軟件是協(xié)助用戶開發(fā)軟件的工具性軟件。例如,網(wǎng)絡(luò)軟件、數(shù)據(jù)庫管理程序等。23(3)應(yīng)用軟件應(yīng)用軟件是特定領(lǐng)域內(nèi)開發(fā)、為特定目的服務(wù)的軟件。例如,工程與科學(xué)計算軟件、系統(tǒng)仿真和人工智能軟件等。2.基于軟件規(guī)模劃分(1)微型軟件是指一個人在幾天內(nèi)完成、程序不超過500行語句且供個人專用的軟件。沒有嚴(yán)格的分析和完整的設(shè)計與測試。24

軟件的分類(2)小型軟件是指由一個人在半年內(nèi)完成的2000行語句以內(nèi)的程序。具有一定的標(biāo)準(zhǔn)化技術(shù)、正規(guī)的數(shù)據(jù)書寫以及定期的系統(tǒng)審查,但沒有大型軟件那樣嚴(yán)格。(3)中型軟件是指由5個人以內(nèi)在一年多的時間里完成的5000-50000行語句的程序。開始出現(xiàn)軟件人員之間、軟件人員與用戶之間的協(xié)調(diào)、聯(lián)系的配合方面的問題。25(4)大型軟件是指由5-10個人在兩年多的時間里完成的50000-100000行語句的程序。在大型軟件中采用軟件工程方法進(jìn)行規(guī)劃可以有效解決和避免突發(fā)事件,減少危害性。(5)甚大型軟件是指由100-1000個人在4-5年里完成的100萬行語句規(guī)模的程序的軟件項目。26(6)極大型軟件是指由2000-5000人在10年里完成的1000萬行語句以內(nèi)規(guī)模的程序的軟件項目。這類軟件一般用于軍事指揮、彈道防御系統(tǒng)等項目。3.基于軟件工作方式劃分(1)實時處理軟件是指在事件或數(shù)據(jù)產(chǎn)生時,立即處理,并及時反饋信號,以控制需要檢測的部分和控制過程的軟件。27軟件的分類(2)分時軟件允許多個聯(lián)機(jī)用戶同事使用計算機(jī)的軟件,系統(tǒng)把處理事件輪流分配給聯(lián)機(jī)用戶,但用戶感覺是只有自己在使用計算機(jī)。(3)交互式軟件能實現(xiàn)人機(jī)通信的軟件,能接收用戶給出的信息,但在時間上沒有嚴(yán)格的限定。(4)批處理軟件把一組輸入作業(yè)或一批數(shù)據(jù)以批處理的方式一次運(yùn)行,按順序逐個處理的軟件。281.1軟件危機(jī)1.2.1軟件危機(jī)的定義軟件危機(jī)是計算機(jī)軟件在它的開發(fā)和維護(hù)過程中所遇到的一系列嚴(yán)重問題。主要包含兩方面的問題:一方面是如何開發(fā)軟件,怎樣滿足對軟件日益增長的需求;另一方面是如何維護(hù)數(shù)量不斷膨脹的已有軟件。291.1.2產(chǎn)生軟件危機(jī)的原因(1)軟件是計算機(jī)系統(tǒng)的邏輯部件,缺乏“可見性”,且軟件產(chǎn)品往往規(guī)模龐大,給軟件的開發(fā)和維護(hù)帶來客觀的困難。(2)軟件一般要使用5~10年,在這段時間里,可能會出現(xiàn)當(dāng)初沒有預(yù)料的問題。如系統(tǒng)運(yùn)行的環(huán)境發(fā)生變化,軟件需求發(fā)生等,都需要及時地對軟件進(jìn)行維護(hù)和更新,以延長軟件的使用壽命。(3)軟件的開發(fā)技術(shù)落后,生產(chǎn)方式和開發(fā)工具落后。(4)軟件開發(fā)人員忽視軟件需求分析的重要性,輕視軟件的維護(hù),也是造成軟件危機(jī)的原因。30311.1.3軟件危機(jī)的表現(xiàn)形式軟件發(fā)展速度跟不上硬件的發(fā)展和用戶的實際需求對軟件開發(fā)成本和進(jìn)度估計不準(zhǔn)確使用戶不滿意軟件產(chǎn)品的質(zhì)量差軟件產(chǎn)品的可維護(hù)性差軟件文檔資料不完整321.1.4解決軟件危機(jī)的途徑(1)加強(qiáng)軟件開發(fā)過程的管理,創(chuàng)造良好的組織、嚴(yán)密的管理和協(xié)調(diào)工作的機(jī)制。(2)推廣使用開發(fā)軟件的成功技術(shù)與方法,探索更好的更有效的技術(shù)和方法,盡快消除在計算機(jī)系統(tǒng)早期發(fā)展階段形成的錯誤概念。(3)開發(fā)和使用好的軟件工具。在適當(dāng)?shù)能浖ぞ咧С窒?,開發(fā)人員可以更好的完成工作。331.2軟件工程的產(chǎn)生和發(fā)展【軟件工程】是指導(dǎo)計算機(jī)軟件開發(fā)和維護(hù)的一門工程學(xué)科。采用工程的概念、原理、技術(shù)和方法來開發(fā)與維護(hù)軟件,把經(jīng)過時間考驗而證明正確的管理技術(shù)和當(dāng)前能夠得到的最好的技術(shù)方法結(jié)合起來,以經(jīng)濟(jì)地開發(fā)出高質(zhì)量的軟件并有效地維護(hù)它,這就是軟件工程。1.2.1軟件工程的定義及特征1.著名的軟件工程專家B.W.Boedhm對軟件工程的定義“軟件工程”是開發(fā)、運(yùn)行、維護(hù)和修復(fù)軟件的系統(tǒng)方法。這個定義概括了軟件工程是一種系統(tǒng)方法,而不是單獨的個人技巧的體現(xiàn)。34352.FrizeBauer在NATO(北大西洋公約組織North

Atlantic

Treaty

Organization簡稱北約組織或北約)會議上對軟件工程的定義盡力并使用完善的工程化原則,以較經(jīng)濟(jì)的手段獲得在實際機(jī)器上有效運(yùn)行的可靠軟件的一系列方法。3.IEEE(電氣和電子工程師協(xié)會)在軟件工程術(shù)語匯編中的定義軟件工程是把系統(tǒng)化的、規(guī)范化的、可度量36的途徑應(yīng)用于軟件開發(fā)、運(yùn)行和維護(hù)的過程,即把工程化的方法應(yīng)用于軟件中。【軟件工程的本質(zhì)特征】:(1)軟件工程關(guān)注于大型程序的構(gòu)造(2)軟件工程的中心課題是控制復(fù)雜性軟件所解決的問題十分復(fù)雜,不能把問題作為一個整體通盤考慮,常用的方法是把問題分解,使得分解后的問題是可理解的,需要各個部分之間保持簡單的通信關(guān)系。(3)軟件經(jīng)常變化(4)開發(fā)軟件的效率非常重要(5.)和諧地合作是開發(fā)軟件的關(guān)鍵(6.)軟件必須有效地支持它的用戶開發(fā)軟件的目的就是支持用戶的工作,滿足用戶對軟件的需求(7.)在軟件工程領(lǐng)域中通常由具有一種文化背景的人替具有另一種文化背景的人創(chuàng)造產(chǎn)品3738

軟件工程的研究內(nèi)容391.2.2軟件工程的基本原理巴利.玻姆(B.W.Boehm)提出的7條軟件工程原理:(1)用分階段的生存周期計劃嚴(yán)格管理把軟件生存周期劃分為若干階段,并相應(yīng)地制定出切實可行的計劃,然后嚴(yán)格按照計劃對軟件的開發(fā)和維護(hù)進(jìn)行管理。(2)堅持進(jìn)行階段評審,以確保軟件產(chǎn)品質(zhì)40量。(3)實行嚴(yán)格的產(chǎn)品控制,以適應(yīng)軟件規(guī)格的變更(4)采用現(xiàn)代程序設(shè)計技術(shù)(5)結(jié)果應(yīng)能清楚地審查(6)開發(fā)小組人員應(yīng)該小而精(7)承認(rèn)不斷改進(jìn)軟件工程實踐的必要性411.3軟件生存周期

軟件生存周期(SoftwareLifeCycle):一個軟件產(chǎn)品從定義、開發(fā)、維護(hù)到廢棄的時間總和稱為軟件的生存周期。軟件生存周期的劃分:(1)軟件定義階段:該階段必須要回答的問題是“需要軟件解決的問題是什么”,通過對客戶的訪問調(diào)查,系統(tǒng)分析員扼要地寫出關(guān)于問題性質(zhì)、工程目標(biāo)和工程規(guī)模的書面報告,經(jīng)過討論和必要的修改之后這份報告應(yīng)該得到客戶的確認(rèn)。(2)可行性研究提交“可行性研究報告”,要回答“對于上一個階段所確定的問題有行得通的解決方法嗎?”(3)軟件需求分析主要確定目標(biāo)系統(tǒng)必須具備哪些功能,提交“需求規(guī)格說明書”,描述軟件的功能和性能,確定軟件設(shè)計的限制和軟件與其他系統(tǒng)元素的接口,定義軟件的其他有效性需求。42432.軟件開發(fā)階段:該階段的任務(wù)是設(shè)計實現(xiàn)已定義的并經(jīng)過需求分析的軟件系統(tǒng)。(4)總體設(shè)計(概要設(shè)計)需要解決的問題是“應(yīng)該如何宏觀地解決問題”確定軟件德模塊功能,得出意義明確的功能模塊,確定每個模塊的輸入、輸出以及44相互聯(lián)系。(5)詳細(xì)設(shè)計(模塊設(shè)計)給出具體實現(xiàn)這個系統(tǒng)的步驟,但還不是編寫程序,而是設(shè)計出程序的詳細(xì)規(guī)格說明(類似于工程師的工程藍(lán)圖),它們包含必要的細(xì)節(jié),程序員可以根據(jù)它們寫出實際的程序代碼。(6)編碼和單元測試寫出正確的容易理解、容易維護(hù)的程序模塊。45程序員應(yīng)該根據(jù)目標(biāo)系統(tǒng)的性質(zhì)和實際環(huán)境選取一種適當(dāng)?shù)母呒壋绦蛟O(shè)計語言把詳細(xì)設(shè)計的結(jié)果翻譯成用選定的語言書寫的程序,并仔細(xì)測試編寫出的每一個模塊。(7)綜合測試關(guān)鍵任務(wù)是通過各種類型的測試及相應(yīng)的調(diào)試使軟件大道預(yù)定的要求。此階段最重要的測試是:集成測試、驗收測試。(1)集成測試:是根據(jù)設(shè)計的軟件結(jié)構(gòu),把經(jīng)過單元測試的模塊按照某種選定的策略裝配起來。(2)驗收測試:按照規(guī)格說明書的規(guī)定,由用戶(或在用戶積極參加下)對目標(biāo)系統(tǒng)進(jìn)行驗收。46(8)軟件維護(hù)運(yùn)行階段的任務(wù)是保障軟件的正常運(yùn)行以及對軟件進(jìn)行維護(hù)。為了排除軟件系統(tǒng)中可能隱含的錯誤,適應(yīng)用戶需求及系統(tǒng)操作環(huán)境的變化,需要繼續(xù)對系統(tǒng)進(jìn)行修改或擴(kuò)充。47481.4軟件過程1.4.1軟件過程軟件過程(SoftwareProcedure)是為了獲得高質(zhì)量軟件所需要完成的一系列任務(wù)的框架,規(guī)定了完成各項任務(wù)的工作順序,在完成開發(fā)任務(wù)時必須進(jìn)行一些必要的活動。其中活動的執(zhí)行可以是順序的、重復(fù)的、并行的、嵌套的或者是有條件引發(fā)的。49軟件過程的分類:(1)基本過程類:包括獲取過程、供應(yīng)過程、開發(fā)過程、運(yùn)作過程、維護(hù)過程和管理過程。(2)支持過程:包括文檔過程、配置管理過程、質(zhì)量保證過程、驗證過程、確認(rèn)過程、聯(lián)合評審過程以及問題解決過程。(3)組織過程類:包括基礎(chǔ)設(shè)施過程、改進(jìn)過程以及培訓(xùn)過程。50軟件過程是整個軟件生存周期中一系列的軟件生產(chǎn)活動的流程。把軟件生存周期中各項開發(fā)活動的流程用一個合理的框架-開發(fā)模型來規(guī)范描述,這就是軟件過程模型,或稱為軟件生存周期模型。1.4.1瀑布模型也稱為線性順序模型或軟件生存周期模型,是W.Royce于1970年提出的。511970年溫斯頓·羅伊斯(WinstonRoyce)提出了著名的“瀑布模型”,直到80年代早期,它一直是唯一被廣泛采用的軟件開發(fā)模型。瀑布模型將軟件生命周期劃分為制定計劃、需求分析、軟件設(shè)計、程序編寫、軟件測試和運(yùn)行維護(hù)等六個基本活動,并且規(guī)定了它們自上而下、相互銜接的固定次序,如同瀑布流水,逐級下落。從本質(zhì)來講,它是一個軟件開發(fā)架構(gòu),開發(fā)過程是通過一系列階段順序展開的,從系統(tǒng)需求分析開始直到產(chǎn)品發(fā)布和維護(hù),每個階段都會產(chǎn)生循環(huán)反饋,因此,如果有信息未被覆蓋或者發(fā)現(xiàn)了問題,那么最好“返回”上一個階段并進(jìn)行適當(dāng)?shù)男薷?,開發(fā)進(jìn)程從一個階段“流動”到下一個階段,這也是瀑布開發(fā)名稱的由來。521.4軟件過程模型1.4.1瀑布模型傳統(tǒng)的瀑布模型過于理想化,人們在工作中不可能不犯錯誤,在設(shè)計階段可能發(fā)現(xiàn)規(guī)格說明文檔中的錯誤,設(shè)計上的缺陷或錯誤可能在實現(xiàn)過程中顯現(xiàn)出來,在綜合測試階段將發(fā)現(xiàn)需求分析、設(shè)計或編碼階段的許多錯誤,因此,實際的瀑布模型是帶“反饋環(huán)”的,如圖所示,當(dāng)在后階段發(fā)現(xiàn)前面階段的錯誤時,需要沿圖中左側(cè)的反饋線返回前面的階段,修正前面階段的產(chǎn)品之后再回來繼續(xù)完成后面的任務(wù)。535455瀑布模型的優(yōu)缺點

1、瀑布模型有以下優(yōu)點:

1)為項目提供了按階段劃分的檢查點。

2)當(dāng)前一階段完成后,您只需要去關(guān)注后續(xù)階段。

3)可在迭代模型中應(yīng)用瀑布模型。2、瀑布模型有以下缺點:

1)在項目各個階段之間極少有反饋。

2)只有在項目生命周期的后期才能看到結(jié)果。

3)通過過多的強(qiáng)制完成日期和里程碑來跟蹤各個項目階段。561.4.2快速原型模型1.4.2快速原型模型是快速建立起來的可以在計算機(jī)上運(yùn)行的程序,它所能完成的功能往往是最終產(chǎn)品能完成的功能的一個子集??焖僭湍P陀址Q原型模型,它是增量模型的另一種形式;它是在開發(fā)真實系統(tǒng)之前,構(gòu)造一個原型,在該原型的基礎(chǔ)上,逐漸完成整個系統(tǒng)的開發(fā)工作。57例如,客戶需要一個ATM機(jī)軟件,可以先設(shè)計一個僅包含刷卡、密碼檢測、數(shù)據(jù)輸入和賬單打印的原型軟件提供給客戶,此時還不包括網(wǎng)絡(luò)處理與數(shù)據(jù)庫存取以及數(shù)據(jù)應(yīng)急、故障處理等服務(wù)。

快速原型模型的第一步是建造一個快速原型,實現(xiàn)客戶或未來的用戶與系統(tǒng)的交互,用戶或客戶對原型進(jìn)行評價,進(jìn)一步細(xì)化待開發(fā)軟件的需求。通過逐步調(diào)整原型使其滿足客戶的要求,開發(fā)人員可以確定客戶的真正需求是什么;第二步則在第一步的基礎(chǔ)上開發(fā)客戶滿意的軟件產(chǎn)品。58591.4.3增量模型增量模型是一種非整體開發(fā)模型。把軟件產(chǎn)品作為一系列的增量構(gòu)件來設(shè)計、實現(xiàn)、集成和測試。開發(fā)時分批向用戶提交產(chǎn)品,每次提交一個滿足用戶需求子集的增量構(gòu)件,直到最后一次得到滿足用戶全部需求的完整產(chǎn)品為止根據(jù)增量的方式和形式不同,分為基本瀑布模型的漸增模型和基于原型的快速原型模型。60增量模型融合了瀑布模型的基本成分(重復(fù)應(yīng)用)和原型實現(xiàn)的迭代特征,該模型采用隨著日程時間的進(jìn)展而交錯的線性序列,每一個線性序列產(chǎn)生軟件的一個可發(fā)布的“增量”。當(dāng)使用增量模型時,第1個增量往往是核心的產(chǎn)品,即第1個增量實現(xiàn)了基本的需求,但很多補(bǔ)充的特征還沒有發(fā)布??蛻魧γ恳粋€增量的使用和評估都作為下一個增量發(fā)布的新特征和功能,這個過程在每一個增量發(fā)布后不斷重復(fù),直到產(chǎn)生了最終的完善產(chǎn)品。增量模型強(qiáng)調(diào)每一個增量均發(fā)布一個可操作的產(chǎn)品。61采用增量模型的軟件過程如圖所示

62增量模型631、增量模型的優(yōu)點采用增量模型的優(yōu)點是人員分配靈活,剛開始不用投入大量人力資源。如果核心產(chǎn)品很受歡迎,則可增加人力實現(xiàn)下一個增量。當(dāng)配備的人員不能在設(shè)定的期限內(nèi)完成產(chǎn)品時,它提供了一種先推出核心產(chǎn)品的途徑。這樣即可先發(fā)布部分功能給客戶,對客戶起到鎮(zhèn)靜劑的作用。此外,增量能夠有計劃地管理技術(shù)風(fēng)險。2.增量模型存在以下缺陷:

1)由于各個構(gòu)件是逐漸并入已有的軟件體系結(jié)構(gòu)中的,所以加入構(gòu)件必須不破壞已構(gòu)造好的系統(tǒng)部分,這需要軟件具備開放式的體系結(jié)構(gòu)。64

2)在開發(fā)過程中,需求的變化是不可避免的。增量模型的靈活性可以使其適應(yīng)這種變化的能力大大優(yōu)于瀑布模型和快速原型模型,但也很容易退化為邊做邊改模型,從而是軟件過程的控制失去整體性。

3)如果增量包之間存在相交的情況且未很好處理,則必須做全盤系統(tǒng)分析,這種模型將功能細(xì)化后分別開發(fā)的方法較適應(yīng)于需求經(jīng)常改變的軟件開發(fā)過程。651.4.4螺旋模型1988年,巴利·玻姆BarryBoehm正式發(fā)表了軟件系統(tǒng)開發(fā)的“螺旋模型”,它將瀑布模型和快速原型模型結(jié)合起來,強(qiáng)調(diào)了其他模型所忽視的風(fēng)險分析,特別適合于大型復(fù)雜的系統(tǒng)。螺旋模型采用一種周期性的方法來進(jìn)行系統(tǒng)開發(fā)。這會導(dǎo)致開發(fā)出眾多的中間版本。使用它,項目經(jīng)理在早期就能夠為客戶實證某些概念。66該模型是快速原型法,以進(jìn)化的開發(fā)方式為中心,在每個項目階段使用瀑布模型法。這種模型的每一個周期都包括需求定義、風(fēng)險分析、工程實現(xiàn)和評審4個階段,由這4個階段進(jìn)行迭代。軟件開發(fā)過程每迭代一次,軟件開發(fā)又前進(jìn)一個層次。螺旋模型基本做法是在“瀑布模型”的每一個開發(fā)階段前引入一個非常嚴(yán)格的風(fēng)險識別、風(fēng)險分析和風(fēng)險控制,它把軟件項目分解成一個個小項目。每個小項目都標(biāo)識一個或多個主要風(fēng)險,直到所有的主要風(fēng)險因素都被確定。簡化的螺旋模型6768完整的螺旋模型69螺旋模型強(qiáng)調(diào)風(fēng)險分析,使得開發(fā)人員和用戶對每個演化層出現(xiàn)的風(fēng)險有所了解,繼而做出應(yīng)有的反應(yīng),因此特別適用于龐大、復(fù)雜并具有高風(fēng)險的系統(tǒng)。對于這些系統(tǒng),風(fēng)險是軟件開發(fā)不可忽視且潛在的不利因素,它可能在不同程度上損害軟件開發(fā)過程,影響軟件產(chǎn)品的質(zhì)量。減小軟件風(fēng)險的目標(biāo)是在造成危害之前,及時對風(fēng)險進(jìn)行識別及分析,決定采取何種對策,進(jìn)而消除或減少風(fēng)險的損害。70

1、螺旋模型的優(yōu)勢包括:

1)設(shè)計上的靈活性,可以在項目的各個階段進(jìn)行變更。

2)以小的分段來構(gòu)建大型系統(tǒng),使成本計算變得簡單容易。

3)客戶始終參與每個階段的開發(fā),保證了項目不偏離正確方向以及項目的可控性。

4)隨著項目推進(jìn),客戶始終掌握項目的最新信息,從而他或她能夠和管理層有效地交互。

5)客戶認(rèn)可這種公司內(nèi)部的開發(fā)方式帶來的良好的溝通和高質(zhì)量的產(chǎn)品。711.4.5噴泉模型噴泉模型是一種以用戶需求為動力,以對象為驅(qū)動的模型,主要用于描述面向?qū)ο蟮能浖_發(fā)過程。該模型認(rèn)為軟件開發(fā)過程自下而上周期的各階段是相互重疊和多次反復(fù)的,就像水噴上去又可以落下來,類似一個噴泉。各個開發(fā)階段沒有特定的次序要求,并且可以交互進(jìn)行,可以在某個開發(fā)階段中隨時補(bǔ)充其他任何開發(fā)階段中的遺漏。72噴泉模型的概述噴泉模型是由B.H.Sollers和J.M.Edwards于1990年提出的一種新的開發(fā)模型。噴泉模型主要用于采用面向?qū)ο蠹夹g(shù)的軟件開發(fā)項目,噴泉一詞本身就體現(xiàn)了迭代和無間隙的特征。無間隙指在各項活動之間無明顯邊界,如分析、設(shè)計和編碼之間沒有明顯的界限。在編碼之前再進(jìn)行需求分析和設(shè)計,期間添加有關(guān)功能,使系統(tǒng)得以演化。噴泉模型在系統(tǒng)某個部分常常被重復(fù)工作多次,相關(guān)對象在每次迭代中隨之加入漸進(jìn)的系統(tǒng)。由于對象概念的引入,需求分析、設(shè)計、實現(xiàn)等活動只用對象類和關(guān)系來表達(dá),從而可以較為容易地實現(xiàn)活動的迭代和無間隙,并且使得開發(fā)過程自然地包括復(fù)用。73741.4.5噴泉模型751、噴泉模型的優(yōu)點噴泉模型不像瀑布模型那樣,需要分析活動結(jié)束后才開始設(shè)計活動,設(shè)計活動結(jié)束后才開始編碼活動。該模型的各個階段沒有明顯的界限,開發(fā)人員可以同步進(jìn)行開發(fā)。其優(yōu)點是可以提高軟件項目開發(fā)效率,節(jié)省開發(fā)時間,適應(yīng)于面向?qū)ο蟮能浖_發(fā)過程。2、噴泉模型的缺點由于噴泉模型在各個開發(fā)階段是重疊的,因此在開發(fā)過程中需要大量的開發(fā)人員,因此不利于項目的管理。此外這種模型要求嚴(yán)格管理文檔,使得審核的難度加大,尤其是面對可能隨時加入各種信息、需求與資料的情況。761.4.6基于構(gòu)件的開發(fā)模型基于構(gòu)件的開發(fā)是指利用預(yù)先包裝的構(gòu)件來構(gòu)造應(yīng)用系統(tǒng)。構(gòu)件可以是組織內(nèi)部開發(fā)的或者是商品化、現(xiàn)存的軟件構(gòu)件。基于構(gòu)件的開發(fā)模型如圖所示:領(lǐng)域工程的目的是構(gòu)建領(lǐng)域模型、領(lǐng)域基準(zhǔn)體系結(jié)構(gòu)和可復(fù)用構(gòu)件庫。應(yīng)用系統(tǒng)工程的目的是使用可復(fù)用構(gòu)件組裝應(yīng)用系統(tǒng)。771.4.6基于構(gòu)件的開發(fā)模型1.4.6Rational統(tǒng)一過程

統(tǒng)一軟件開發(fā)過程(RUP)又稱為統(tǒng)一軟件過程,是一個面向?qū)ο笄一诰W(wǎng)絡(luò)的程序開發(fā)方法論。根據(jù)Rational(RationalRose和統(tǒng)一建模語言的開發(fā)者)的說法,好

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論