計算機軟件及應(yīng)用軟件工程的發(fā)展_第1頁
計算機軟件及應(yīng)用軟件工程的發(fā)展_第2頁
計算機軟件及應(yīng)用軟件工程的發(fā)展_第3頁
計算機軟件及應(yīng)用軟件工程的發(fā)展_第4頁
計算機軟件及應(yīng)用軟件工程的發(fā)展_第5頁
已閱讀5頁,還剩47頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

計算機軟件及應(yīng)用軟件工程的發(fā)展第1頁/共52頁第16章軟件工程的發(fā)展軟件工程的四個發(fā)展階段原型化方法面向?qū)ο蟮姆治雠c設(shè)計統(tǒng)一的建模語言(UML)軟件復(fù)用和構(gòu)件技術(shù)第2頁/共52頁第16章軟件工程的發(fā)展軟件作為IT技術(shù)應(yīng)用的核心,其重要性日漸突出新的經(jīng)濟環(huán)境使軟件開發(fā)面臨著新的挑戰(zhàn)如何快速且高質(zhì)量地開發(fā)出滿足不同需求的軟件?建立更好的軟件開發(fā)環(huán)境,開發(fā)和采用可復(fù)用的軟件組件成為解決這一問題的最佳方法

第3頁/共52頁16.1軟件工程的四個發(fā)展階段自1968年以來,為了解決軟件危機,人們希望通過其他工程的技術(shù)方法和管理手段,將軟件的開發(fā)納入工程化的軌道在70年代取得大量的研究成果的基礎(chǔ)上,基本形成了軟件工程的概念、框架、方法和手段,成為軟件工程的第一代,稱之為傳統(tǒng)軟件工程第4頁/共52頁16.1軟件工程的四個發(fā)展階段20世紀80年代以來,面向?qū)ο蟮姆椒ㄅc技術(shù)已受到廣泛的重視,80年代出現(xiàn)的Smalltalk-80標(biāo)志著面向?qū)ο蟪绦蛟O(shè)計進入了實用階段80年代中到90年代,研究重點轉(zhuǎn)移到面向?qū)ο蟮姆治雠c設(shè)計,從而演化成一種完整的軟件開發(fā)方法和系統(tǒng)的技術(shù)體系,成為軟件工程的第二代,稱之為對象工程第5頁/共52頁16.1軟件工程的四個發(fā)展階段80年代中期,人們在研究和實踐中發(fā)現(xiàn),為了提高軟件生產(chǎn)率,并使軟件質(zhì)量得到保證,其關(guān)鍵在于軟件開發(fā)和維護中的管理和支持能力,并認識到最關(guān)鍵的是“軟件過程”1984年開始“軟件過程運動”,從而逐步形成軟件過程工程,成為軟件工程的第三代第6頁/共52頁16.1軟件工程的四個發(fā)展階段進入90年代之后,軟件工程的一個重要進展就是基于構(gòu)件的開發(fā)方法,為了提高軟件生產(chǎn)力,要盡可能地利用可復(fù)用的構(gòu)件,隨著Internet技術(shù)的飛速發(fā)展,大量的分布式處理系統(tǒng)需要開發(fā),這種方法的重要性也日益顯露出來,從而成為軟件工程的第四代,也有不少人稱之為構(gòu)件工程第7頁/共52頁16.1軟件工程的四個發(fā)展階段軟件工程還在不斷發(fā)展構(gòu)件工程、過程工程以及對象工程都有不少新的進展傳統(tǒng)軟件工程中的一些基本概念、框架,隨著技術(shù)的進步也在發(fā)生不少演變軟件工程代與代之間并沒有鴻溝,它們不僅有交叉重疊,也有攜手并進軟件工程是一門處于前沿地位的重要學(xué)科,需要認真地研究和細心地學(xué)習(xí),也需要在技術(shù)實踐中不斷創(chuàng)新和發(fā)展第8頁/共52頁實踐表明,傳統(tǒng)方法不能完全消除軟件危機生產(chǎn)率提高的幅度遠不能滿足需要軟件重用程度很低按照SA-SD-SP技術(shù)開發(fā)軟件時,思維成果的可重用性很差軟件仍然很難維護軟件往往不能真正滿足用戶需要開發(fā)人員不能完全獲得或不能徹底理解用戶需求,與用戶預(yù)期不符系統(tǒng)不能適應(yīng)用戶需求經(jīng)常變化的情況傳統(tǒng)軟件工程方法存在的問題第9頁/共52頁問題所在瀑布模型的局限某些類型系統(tǒng)需求的模糊項目參與者之間存在通信障礙預(yù)先定義的需求可能是過時的結(jié)構(gòu)化技術(shù)的缺點基于過程的分解與基于功能的理解和功能的變化結(jié)構(gòu)化分析對邊界的清楚定義限制了系統(tǒng)的擴充系統(tǒng)結(jié)構(gòu)依不同開發(fā)人員而不同傳統(tǒng)軟件工程方法存在的問題第10頁/共52頁事實上,生命周期方法學(xué)至今仍然是應(yīng)用最廣泛和最有效的軟件開發(fā)方法之一系統(tǒng)的需求比較穩(wěn)定而且能夠預(yù)先指定(預(yù)先指定的系統(tǒng))另一類系統(tǒng)的需求是模糊的或隨時間變化的,通常在安裝運行之后,還會由用戶驅(qū)動對需求進行動態(tài)修改(用戶驅(qū)動系統(tǒng))傳統(tǒng)軟件工程方法存在的問題第11頁/共52頁16.2原型化方法快速原型法用交互的、快速建立起來的原型取代形式的,不容修改的規(guī)格說明,用戶通過在計算機上實際運行和試用原型系統(tǒng)而向開發(fā)者提供真實的反饋意見(簡稱原型法)試用——反饋——修改第12頁/共52頁16.2原型化方法原型法有三個層次第一層是聯(lián)機屏幕活動,確定屏幕及報表的版式和內(nèi)容、屏幕活動的順序及屏幕排版的方法第二層是第一層的擴展,引用了數(shù)據(jù)庫的交互作用及數(shù)據(jù)操作,主要論證系統(tǒng)關(guān)鍵區(qū)域的操作,用戶可以輸入成組的事務(wù)數(shù)據(jù),執(zhí)行這些數(shù)據(jù)的模擬過程,包括出錯處理第三層是系統(tǒng)工作模型,它是系統(tǒng)的一個子集,其中應(yīng)用的邏輯事務(wù)及數(shù)據(jù)庫的交互作用可以用實際數(shù)據(jù)來操作,這一層的目的是開發(fā)一個模型,使其發(fā)展成為最終的系統(tǒng)規(guī)模第13頁/共52頁16.2原型化方法原型法的主要優(yōu)點在于是一種支持用戶的方法,使得用戶在系統(tǒng)生存周期的設(shè)計階段起到積極的作用能減少系統(tǒng)開發(fā)的風(fēng)險原型法的概念適用于新系統(tǒng)開發(fā),也適用于對系統(tǒng)修改原型法要取得成功,要求有良好的開發(fā)環(huán)境/工具的支持原型法可以與傳統(tǒng)的生命周期方法相結(jié)合使用,這樣會擴大用戶參與需求分析、初步設(shè)計及詳細設(shè)計等階段的活動,加深對系統(tǒng)的理解第14頁/共52頁用原型法開發(fā)軟件的過程拋棄原型法演化原型法是高度迭代的動態(tài)方法,在每次迭代過程中,都要再次分析和確定需求,再次進行設(shè)計,再次實現(xiàn)系統(tǒng),以及再次進行測試和評價取決于開發(fā)者和用戶雙方是否都愿意在很長一段時間內(nèi)對信息交流和修改系統(tǒng)采取開放的態(tài)度16.2原型化方法第15頁/共52頁面向?qū)ο蠓椒ūM可能模擬人類習(xí)慣的思維方式,使開發(fā)軟件的方法與過程盡可能接近人類認識世界解決問題的方法與過程也就是使描述問題的問題空間(問題域)與實現(xiàn)解法的解空間(求解域)在結(jié)構(gòu)上盡可能一致16.3面向?qū)ο蟮姆治雠c設(shè)計第16頁/共52頁16.3面向?qū)ο蟮姆治雠c設(shè)計面向?qū)ο蠓椒?OO)是建立在對象概念(對象、類和繼承)基礎(chǔ)上的方法面向?qū)ο蠓椒ǔ霈F(xiàn)后很快發(fā)展,成為90年代的主流開發(fā)方法,其原因主要在于從認知學(xué)的角度來看,面向?qū)ο蠓椒ǚ先藗儗陀^世界的認識規(guī)律面向?qū)ο蠓椒ㄩ_發(fā)的軟件系統(tǒng)易于維護,其體系結(jié)構(gòu)易于理解、擴充和修改面向?qū)ο蠓椒ㄖ械睦^承機制有力支持軟件的復(fù)用第17頁/共52頁面向?qū)ο蠓椒ǖ囊c面向?qū)ο蟮能浖到y(tǒng)是由對象組成的,軟件中任何元素都是對象,復(fù)雜的軟件對象由比較簡單的對象組合而成把所有對象都劃分成各種對象類,每個對象類都定義一組數(shù)據(jù)和一組方法按照子類(派生類)和父類(基類)的關(guān)系,把若干個對象類組成一個層次結(jié)構(gòu)的系統(tǒng),并實現(xiàn)繼承與屏蔽對象彼此之間僅通過傳遞消息互相聯(lián)系

16.3.1面向?qū)ο蟮幕靖拍畹?8頁/共52頁

16.3.1面向?qū)ο蟮幕靖拍钣孟铝械仁絹碚J識面向?qū)ο蠓椒嫦驅(qū)ο?對象+分類+繼承+通過消息的通信用這四個概念開發(fā)的軟件系統(tǒng)是面向?qū)ο蟮牡?9頁/共52頁

16.3.1面向?qū)ο蟮幕靖拍顚ο笫且唤M屬性以及這組屬性上的專用操作的封裝體屬性通常是一些數(shù)據(jù),也可以是另一個對象操作也稱為方法或服務(wù),規(guī)定了對象的行為,表示對象所能提供的服務(wù)封裝是一種信息隱蔽技術(shù),用戶只能看見對象封裝界面上的信息,對象的內(nèi)部實現(xiàn)對用戶是隱蔽的一個對象通常可由對象名、屬性和操作三部分組成第20頁/共52頁

16.3.1面向?qū)ο蟮幕靖拍铑愂且唤M具有相同屬性和相同操作的對象的集合繼承是類間的基本關(guān)系,它是基于層次關(guān)系的不同類共享數(shù)據(jù)和操作的一種機制消息傳遞是對象間通信的手段,一個對象通過向另一個對象發(fā)送消息來請求其服務(wù)第21頁/共52頁16.3.2面向?qū)ο蠓治雒嫦驅(qū)ο蠓治?OOA)的目標(biāo)是完成對所解問題的分析,確定待建的系統(tǒng)要做什么,并建立系統(tǒng)的模型在客戶和軟件工程師之間溝通基本的用戶需求標(biāo)識類(包括定義其屬性和操作)刻畫類的層次結(jié)構(gòu)表示類(對象)之間的關(guān)系為對象行為建模遞進地重復(fù)前面的任務(wù),直至完成建模第22頁/共52頁16.3.2面向?qū)ο蠓治雒嫦驅(qū)ο蠓治龅囊话悴襟E如下獲取客戶對系統(tǒng)的需求:包括標(biāo)識場景和用例,以及建造需求模型用基本的需求為指南來選擇類和對象(包括屬性和操作)定義類的結(jié)構(gòu)和層次建造對象-關(guān)系模型建造對象-行為模型利用用例/場景來復(fù)審分析模型第23頁/共52頁16.3.3面向?qū)ο笤O(shè)計面向?qū)ο笤O(shè)計(OOD)是將OOA所創(chuàng)建的分析模型轉(zhuǎn)化為設(shè)計模型。與傳統(tǒng)的開發(fā)方法不同,OOD和OOA采用相同的符號表示,OOD和OOA沒有明顯的分界線,它們往往反復(fù)迭代地進行在OOA時,主要考慮系統(tǒng)做什么,而不關(guān)心系統(tǒng)如何實現(xiàn)。在OOD時,主要解決系統(tǒng)如何做OOD同樣應(yīng)遵循抽象、信息隱蔽、功能獨立、模塊化等設(shè)計準(zhǔn)則第24頁/共52頁16.3.3面向?qū)ο笤O(shè)計面向?qū)ο笤O(shè)計的一般步驟如下系統(tǒng)設(shè)計將子系統(tǒng)分配到處理器選擇實現(xiàn)數(shù)據(jù)管理、界面支持和任務(wù)管理的設(shè)計策略為系統(tǒng)設(shè)計合適的控制機制復(fù)審并考慮權(quán)衡對象設(shè)計在過程級別設(shè)計每個操作定義內(nèi)部類為類屬性設(shè)計內(nèi)部數(shù)據(jù)結(jié)構(gòu)消息設(shè)計:用對象間協(xié)作和對象-關(guān)系模型設(shè)計消息模型復(fù)審:復(fù)審設(shè)計模型,并在需要時迭代第25頁/共52頁16.4統(tǒng)一的建模語言(UML)各種面向?qū)ο蠓椒ǘ加凶约旱谋硎痉?、過程和工具,甚至各種方法所使用的術(shù)語也不盡相同UML的一個初始目標(biāo)就是結(jié)束面向?qū)ο箢I(lǐng)域中的方法大戰(zhàn)第26頁/共52頁16.4.1UML概述人們在研究過程中認識到,由于在不同的公司和不同的文化之間,過程(或方法)的區(qū)別是很大的,要創(chuàng)建一個人人都能使用的標(biāo)準(zhǔn)過程(或方法)相當(dāng)困難,而建立一種標(biāo)準(zhǔn)的建模語言比建立標(biāo)準(zhǔn)的過程(或方法)要簡單得多。因此,他們的工作重點放在創(chuàng)建一種標(biāo)準(zhǔn)的建模語言,并重新命名為統(tǒng)一的建模語言(UML)第27頁/共52頁16.4.1UML概述1996年6月、10月、1997年1月、11月分別推出了UML0.9、0.91、1.0、1.11996年起,一些機構(gòu)把采用UML作為其商業(yè)策略,宣布支持并采用UML,并成立了UML成員協(xié)會,以完善加強和促進UML的定義1997年11月,國際對象管理組織OMG批準(zhǔn)把UML1.1作為基于面向?qū)ο蠹夹g(shù)的標(biāo)準(zhǔn)建模語言第28頁/共52頁為了更好地理解問題,常常采用建立問題模型的方法所謂模型,就是為了理解事物而對事物作出的一種抽象,是對事物的一種無歧義的書面描述通常,模型由一組圖示符號和組織這些符號的規(guī)則組成,利用它們來定義和描述問題域中的術(shù)語和概念面向?qū)ο蠼5?9頁/共52頁用面向?qū)ο蠓椒ㄩ_發(fā)軟件通常要建立3種形式的模型描述系統(tǒng)數(shù)據(jù)結(jié)構(gòu)的對象模型描述系統(tǒng)控制結(jié)構(gòu)的動態(tài)模型描述系統(tǒng)功能的功能模型三種模型都涉及到數(shù)據(jù)、控制和操作等共同概念一個典型的軟件系統(tǒng)組合了上述三方面內(nèi)容:使用數(shù)據(jù)結(jié)構(gòu)(對象模型)、執(zhí)行操作(動態(tài)模型),并且完成數(shù)據(jù)值的變化(功能模型)面向?qū)ο蠼5?0頁/共52頁16.4.2使用UML的過程UML給出了面向?qū)ο蠼5姆柋硎竞鸵?guī)則,但并沒有描述如何工作,即沒有描述使用語言的過程或方法使用UML過程的基本特征是:用例驅(qū)動,以體系結(jié)構(gòu)為中心,反復(fù),漸增式UML的設(shè)計者將他們原先各自的面向?qū)ο箝_發(fā)過程進行合并,命名為RationalObjectoryProcess,這是一個迭代的漸增式的開發(fā)過程第31頁/共52頁初始階段細化階段細化階段構(gòu)造階段……12圖16-1RationalObjectory開發(fā)過程

第32頁/共52頁初始階段主要確定項目的范圍和目標(biāo),并進行可行性分析在這一階段要考慮項目的成本,可能得到的效益初始階段的目的是明確待開發(fā)項目的意義和價值,并確定是否要開發(fā)此項目第33頁/共52頁細化階段對開發(fā)項目的問題領(lǐng)域和功能作詳細分析,畫出用例圖,建立系統(tǒng)的基礎(chǔ)結(jié)構(gòu)在這階段還要進行風(fēng)險分析,制定相應(yīng)的對策,制定開發(fā)計劃制定計劃實際上是為構(gòu)造階段制定迭代開發(fā)的序列用例分類確定每次迭代的開發(fā)周期將用例分配到各次這代中的活動第34頁/共52頁構(gòu)造階段是迭代漸增地建造系統(tǒng)的過程。每次迭代可看作開發(fā)一個小項目,它應(yīng)包含分析、設(shè)計、實現(xiàn)、測試全過程每次迭代都是在前次迭代的基礎(chǔ)上增加另一些用例的開發(fā),新的用例開發(fā)完成后要與前次迭代的結(jié)果集成,進行系統(tǒng)測試,并向用戶演示,以表明相關(guān)的用例已被正確實現(xiàn)第35頁/共52頁構(gòu)造階段所用測試案例都應(yīng)保存,以便在以后的迭代中進行回歸測試這種迭代漸增式的開發(fā)有助于及早發(fā)現(xiàn)錯誤,減少開發(fā)的風(fēng)險第36頁/共52頁移交階段一般不再開發(fā)新的功能該階段的工作主要有β測試、產(chǎn)品包裝、培訓(xùn)等第37頁/共52頁16.5軟件復(fù)用和構(gòu)件技術(shù)根據(jù)工業(yè)產(chǎn)品設(shè)計生產(chǎn)的經(jīng)驗,希望有一些軟件工廠專門生產(chǎn)軟組件,稱為構(gòu)件,軟件人員在開發(fā)軟件時可以大量復(fù)用這些軟構(gòu)件,從而降低軟件的開發(fā)和維護費用,提高軟件的生產(chǎn)率同時,由于這些軟構(gòu)件往往已經(jīng)過嚴格的測試,并經(jīng)過廣泛的使用,因此它們的可靠性通常比較高,從而也提高了新軟件的質(zhì)量第38頁/共52頁16.5.1軟件復(fù)用的概念軟件復(fù)用是指在兩次或多次不同的軟件開發(fā)過程中重復(fù)使用相同或相似軟件元素(如下)的過程領(lǐng)域知識開發(fā)經(jīng)驗設(shè)計經(jīng)驗體系結(jié)構(gòu)需求分析文檔設(shè)計文檔程序代碼測試用例等第39頁/共52頁16.5.1軟件復(fù)用的概念按照重要活動是否跨越相似性較小的多個應(yīng)用領(lǐng)域,軟件復(fù)用可區(qū)別為橫向和縱向復(fù)用橫向復(fù)用是指復(fù)用不同應(yīng)用領(lǐng)域中的軟件元素,例如數(shù)據(jù)結(jié)構(gòu)、分類算法、人機界面構(gòu)件等。標(biāo)準(zhǔn)函數(shù)庫是一種典型的、原始的橫向復(fù)用機制縱向復(fù)用是指在一類具有較多公共性的應(yīng)用領(lǐng)域之間進行軟構(gòu)件復(fù)用。縱向復(fù)用是軟件復(fù)用技術(shù)的真正所在第40頁/共52頁16.5.1軟件復(fù)用的概念早期主要是程序代碼的復(fù)用,以后逐步擴大到設(shè)計、需求規(guī)約或模型、體系結(jié)構(gòu)、代碼、測試用例、文檔等的復(fù)用第41頁/共52頁16.5.2軟件復(fù)用的過程軟件復(fù)用的一般過程是抽象選取例化:對已有制品(可復(fù)用件)的修改或形成它的一個實例(例化后的復(fù)用件)集成:將例化后的復(fù)用件集成為應(yīng)用系統(tǒng)第42頁/共52頁16.5.2軟件復(fù)用的過程根據(jù)軟件復(fù)用的粒度,可將其分為(按粒度從小到大):代碼和設(shè)計拷貝源代碼復(fù)用設(shè)計和軟件體系結(jié)構(gòu)應(yīng)用程序生成器領(lǐng)域特定的軟件體系結(jié)構(gòu)的復(fù)用第43頁/共52頁16.5.3構(gòu)件和體系結(jié)構(gòu)構(gòu)件是指可以被明確標(biāo)識的軟件制品,它可以是需求分析和設(shè)計階段的產(chǎn)品、代碼、測試用例、文檔或軟件開發(fā)過程中的其他產(chǎn)品可復(fù)用構(gòu)件是指可被其他系統(tǒng)的開發(fā)者復(fù)用以開發(fā)新軟件的構(gòu)件。通常所說的構(gòu)件主要是指可復(fù)用構(gòu)件第44頁/共52頁16.5.3構(gòu)件和體系結(jié)構(gòu)軟件體系結(jié)構(gòu)是指軟件總體結(jié)構(gòu)框架,它由結(jié)構(gòu)元集、結(jié)構(gòu)形以及結(jié)構(gòu)理三部分組成結(jié)構(gòu)元集為一組構(gòu)成該體系結(jié)構(gòu)之結(jié)構(gòu)元(即構(gòu)件)結(jié)構(gòu)形包括特性與聯(lián)系。特性用以約束結(jié)構(gòu)元的選取,聯(lián)系則約束不同結(jié)構(gòu)元之間的交互與組織結(jié)構(gòu)理刻畫體系結(jié)構(gòu)設(shè)計人員選取體系結(jié)構(gòu)風(fēng)格、選取結(jié)構(gòu)元以及選取結(jié)構(gòu)形的動因與根據(jù),闡明對系統(tǒng)約束之滿足所構(gòu)成的需求與體系結(jié)構(gòu)風(fēng)格、結(jié)構(gòu)元以及結(jié)構(gòu)形之間的聯(lián)系第45頁/共52頁16.5.4構(gòu)件和構(gòu)件系統(tǒng)構(gòu)件系統(tǒng)由若干個經(jīng)良好包裝和驗證的相關(guān)的構(gòu)件組成為使構(gòu)件能具有較高的可復(fù)用性,應(yīng)滿足條件構(gòu)件的設(shè)計應(yīng)具有較高的通用程度構(gòu)件應(yīng)易于調(diào)整構(gòu)件應(yīng)易于組裝構(gòu)件必須具有可檢索性構(gòu)件必須經(jīng)過充分的測試第46頁/共52頁16.6小結(jié)軟件工程技術(shù)從傳統(tǒng)軟件工程到對象工程、過程工程和構(gòu)件工程,一直是一門處于前沿地位的重要學(xué)科,在技術(shù)實踐中不斷創(chuàng)新和發(fā)展面向?qū)ο蠓椒ㄊ且环N把

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論