第九章 軟件復用之模式與框架_第1頁
第九章 軟件復用之模式與框架_第2頁
第九章 軟件復用之模式與框架_第3頁
第九章 軟件復用之模式與框架_第4頁
第九章 軟件復用之模式與框架_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第九章軟件復用之模式和框架2/3/20231提綱9.1軟件復用9.2模式復用9.3設計模式9.4框架9.5模式和框架的關系2/3/202329.1軟件復用復用(Reuse)—在一個新的語境(context)中(同一系統(tǒng)的其它地方或另一個系統(tǒng)中)使用已有的軟件構(gòu)件。可復用性(Reusability)—軟件構(gòu)件可以被復用的程度或范圍(extent)。遵循一個適當?shù)脑O計和編碼標準將增強構(gòu)件的可復用性。可復用軟件構(gòu)件(RSC)—可以被復用的軟件實體;它可以是設計、代碼或軟件開發(fā)過程的其它產(chǎn)品。RSCs有時稱為“軟件資產(chǎn)”(softwareassets)。2/3/202339.1軟件復用實踐證明:軟件復用可以有效地提高軟件的質(zhì)量和生產(chǎn)率,是解決“軟件危機”的一條比較現(xiàn)實可行的途徑。提高生產(chǎn)率。軟件復用最明顯的好處在于提高生產(chǎn)率,從而減少開發(fā)代價。生產(chǎn)率的提高不僅體現(xiàn)在代碼開發(fā)階段,在分析、設計及測試階段同樣可以利用復用來節(jié)省開銷。用可復用的構(gòu)件構(gòu)造系統(tǒng)還可以提高系統(tǒng)的性能和可靠性,因為可復用構(gòu)件經(jīng)過了高度優(yōu)化,并且在實踐中經(jīng)受過檢驗。2/3/202349.1軟件復用減少維護代價。這是軟件復用另一個重要的優(yōu)越性。由于使用經(jīng)過檢驗的構(gòu)件,減少了可能的錯誤,同時軟件中需要維護的部分也減少了。例如,要對多個具有公共圖形用戶界面的系統(tǒng)進行維護時,對界面的修改只需要一次,而不是在每個系統(tǒng)中分別進行修改。提高互操作性。軟件復用一個更為專業(yè)化的好處在于提高了系統(tǒng)間的互操作性。通過使用接口的同一個實現(xiàn),系統(tǒng)將更為有效地實現(xiàn)與其它系統(tǒng)之間的互操作。例如,若多個通訊系統(tǒng)都采用同一個軟件包來實現(xiàn)X.25協(xié)議,那么它們之間的交互將更為方便。2/3/202359.1軟件復用支持快速原型。復用的另一個好處在于對快速原型的支持,即可以快速構(gòu)造出系統(tǒng)可操作的模型,以獲得用戶對系統(tǒng)功能的反饋。利用可復用構(gòu)件庫可以快速有效地構(gòu)造出應用程序的原型。減少培訓開銷。復用的最后一個好處在于減少培訓開銷,即雇員在熟悉新任務時所需的非正式的開銷。如同硬件工程師使用相同的集成電路塊設計不同類型的系統(tǒng),軟件工程師也將使用一個可復用構(gòu)件庫,其中的構(gòu)件都是他們所熟悉和精通的。2/3/202369.1軟件復用軟件復用的類型劃分組裝式(Compositional)復用與生成式(Generative)復用

組裝式復用,也稱產(chǎn)品復用:利用庫中的底層構(gòu)件自底向上地開發(fā)系統(tǒng),關鍵是要解決構(gòu)件的分類和檢索技術(shù),以及開發(fā)出一個自動化系統(tǒng)以支持組裝過程。生成式復用,也稱過程復用:是特定于應用領域的,它采用標準的領域構(gòu)架(architecture)模型(即類屬的構(gòu)架)和一致的構(gòu)件接口,目的是根據(jù)一個適當?shù)膮?shù)規(guī)約生成新的系統(tǒng)。小規(guī)模復用與大規(guī)模復用

原樣(As-is)復用與帶修改的復用

2/3/202379.2模式復用ChristopherAlexander:每一個模式描述了在我們周圍不斷重復發(fā)生的問題,以及該問題的解決方案的核心。這樣,你就能一次又一次地使用該方案而不必做重復勞動。模式(pattern):是用來描述做某類事情所具有的一些共性特征的技術(shù)。模式是在某種特定的場景(context)下某個不斷重復出現(xiàn)的問題的解決方案。模式本身并沒有任何的創(chuàng)新性,它僅僅是對于一些已經(jīng)被證明為優(yōu)秀的解決方法的歸類、總結(jié),目的是為了重用該解決方案而又不用做重復的勞動。“特定場景”給出了什么時候以及為什么使用一個模式。"重復"說明了模式的可重復性從而可以被重用。2/3/202389.2模式復用一般而言,一個模式有四個基本要素:模式名稱(patternname)一個助記名,它用一兩個詞來描述模式的問題、解決方案和效果。問題(problem)描述了應該在何時使用模式。它解釋了設計問題和問題存在的前因后果。解決方案(solution)描述了設計的組成成分,它們之間的相互關系及各自的職責和協(xié)作方式。效果(consequences)描述了模式應用的效果及使用模式應權(quán)衡的問題。2/3/202399.3設計模式設汁模式包含一組規(guī)則,描述了如何在軟件開發(fā)領域中完成一定的任務。面向?qū)ο蟮脑O計模式解決如何在面向?qū)ο筌浖_發(fā)中完成一定任務。所謂設計模式,簡單地理解,是一些設計面向?qū)ο蟮能浖_發(fā)的經(jīng)驗總結(jié)。一個設計模式事實上是系統(tǒng)地命名、解釋和評價某一個重要的可重現(xiàn)的面向?qū)ο蟮脑O計方案。設計模式的組成:設計模式使用的場景和解決的問題;設計模式的基本元素及其相互關系;應用設計模式后的結(jié)果和權(quán)衡。2/3/2023109.3設計模式常見的設計模式:AbstractFactory:提供一個創(chuàng)建一系列相關或相互依賴對象的接口,而無需指定它們具體的類。Adapter:將一個類的接口轉(zhuǎn)換成客戶希望的另外一個接口。Bridge:將抽象部分與它的實現(xiàn)部分分離,使它們都可以獨立地變化。Builder:將一個復雜對象的構(gòu)建與它的表示分離,使得同樣的構(gòu)建過程可以創(chuàng)建不同的表示。ChainofResponsibility:為解除請求的發(fā)送者和接收者之間耦合,而使多個對象都有機會處理這個請求。將這些對象連成一條鏈,并沿著這條鏈傳遞該請求,直到有一個對象處理它。Command:將一個請求封裝為一個對象,從而使你可用不同的請求對客戶進行參數(shù)化;對請求排隊或記錄請求日志,以及支持可取消的操作。Composite:將對象組合成樹形結(jié)構(gòu)以表示“部分-整體”的層次結(jié)構(gòu)。它使得客戶對單個對象和復合對象的使用具有一致性。Decorator:動態(tài)地給一個對象添加一些額外的職責。就擴展功能而言,它比生成子類方式更為靈活。2/3/2023119.3設計模式Facade:為子系統(tǒng)中的一組接口提供一個一致的界面,F(xiàn)acade模式定義了一個高層接口,這個接口使得這一子系統(tǒng)更加容易使用。FactoryMethod:定義一個用于創(chuàng)建對象的接口,讓子類決定將哪一個類實例化。Flyweight:運用共享技術(shù)有效地支持大量細粒度的對象。Interpreter:給定一個語言,定義它的文法的一種表示,并定義一個解釋器,該解釋器使用該表示來解釋語言中的句子。Iterator:提供一種方法順序訪問一個聚合對象中各個元素,而又不需暴露該對象的內(nèi)部表示。Mediator:用一個中介對象來封裝一系列的對象交互。Memento:在不破壞封裝性的前提下,捕獲一個對象的內(nèi)部狀態(tài),并在該對象之外保存這個狀態(tài)。Prototype:用原型實例指定創(chuàng)建對象的種類,并且通過拷貝這個原型來創(chuàng)建新的對象。Proxy:為其他對象提供一個代理以控制對這個對象的訪問。Singleton:保證一個類僅有一個實例,并提供一個訪問它的全局訪問點。2/3/2023129.3設計模式State:允許一個對象在其內(nèi)部狀態(tài)改變時改變它的行為。對象看起來似乎修改了它所屬的類。Strategy:定義一系列的算法,把它們一個個封裝起來,并且使它們可相互替換。本模式使得算法的變化可獨立于使用它的客戶。TemplateMethod:定義一個操作中的算法的骨架,而將一些步驟延遲到子類中。TemplateMethod使得子類可以不改變一個算法的結(jié)構(gòu)即可重定義該算法的某些特定步驟。Visitor:表示一個作用于某對象結(jié)構(gòu)中的各元素的操作。它使你可以在不改變各元素的類的前提下定義作用于這些元素的新操作。2/3/2023132/3/2023149.4框架框架,即framework。其實就是某種應用的半成品,就是一組有結(jié)構(gòu)的組件,供你選用完成你自己的系統(tǒng)。框架:指在一個特定的領域中的一組相互協(xié)作的類,它規(guī)定了應用系統(tǒng)的總體結(jié)構(gòu),定義了類的劃分以及類的關鍵責任,定義了類間的協(xié)作,還定義了控制線程。框架更強調(diào)設計復用而不僅是代碼復用。為什么要使用框架:在某些方面使用別人成熟的框架,就相當于一些基礎工作已經(jīng)完成,開發(fā)者只需要集中精力完成系統(tǒng)的業(yè)務邏輯設計??蚣芤话闶浅墒?,穩(wěn)健的,它可以處理系統(tǒng)很多細節(jié)問題,比如,事物處理,安全性,數(shù)據(jù)流控制等問題??蚣芤话愣冀?jīng)過很多人使用,結(jié)構(gòu)很好,擴展性也很好,而且它是不斷升級的,可直接享受框架代碼升級帶來的好處。2/3/2023159.4框架常見的Java框架:WAF(WEBAPPLICATIONFRAMEWORK),用于EJB層;Struts:用于Web層;JSPTurbine:用于web層;ServletCOCOON:用于web層ECHO:用于web層JATO(SUNONEApplicationFramework):用于web層TCF(Thin-Clien

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論