(完整版)構(gòu)建模式_第1頁
(完整版)構(gòu)建模式_第2頁
(完整版)構(gòu)建模式_第3頁
(完整版)構(gòu)建模式_第4頁
(完整版)構(gòu)建模式_第5頁
已閱讀5頁,還剩2頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、一個設(shè)計良好的通用模式往往是這個工程領(lǐng)域技術(shù)成熟的標志。1、管道過濾模式1)概述:每個功能模塊都有一組輸入和輸出;功能模塊對輸入數(shù)據(jù)流進行增量計算得到輸 出數(shù)據(jù)流。功能模塊稱作過濾器 filter ; 功能模塊間的連接可看作輸入、輸出數(shù)據(jù)流之間的通路,稱作管道。2)特征:過濾器的相對獨立性, 即過濾器獨立完成自身功能, 相互之間無需進行狀態(tài)交互。 整個管道過濾網(wǎng)絡(luò)的最終輸出和網(wǎng)絡(luò)中各過濾器執(zhí)行操作的順序無關(guān)。3)優(yōu)點:(1)設(shè)計者可以將整個系統(tǒng)的輸入、輸出特性簡單的理解為各個過濾器功能的合成;(2)管道過濾模式支持功能模塊的復(fù)用;(3)管道過濾模式的系統(tǒng)具有較強的可維護性和可擴展性;(4)支持

2、一些特定的分析,如吞吐量計算和死鎖檢測等;(5)管道過濾模式具有并發(fā)性。4)不足:(1)管道過濾模式往往導(dǎo)致系統(tǒng)處理過程的成批操作;(2)設(shè)計者也許不得不花費精力協(xié)調(diào)兩個相對獨立但又存在某種關(guān)系的數(shù)據(jù)流;(3)根據(jù)實際設(shè)計的要求,設(shè)計者也需要對數(shù)據(jù)傳輸進行特定的處理,導(dǎo)致過濾器必須 對輸入、輸出管道中的數(shù)據(jù)流進行解析或反解析,增加了過濾器具體實現(xiàn)的復(fù)雜性。5)管道過濾模式的實例:數(shù)字通信系統(tǒng)2、面向?qū)ο竽J?)概述:面向?qū)ο竽J郊瘮?shù)據(jù)抽象、類繼承為一體,使軟件工程公認的模塊化、信息隱藏、 抽象、重用性等原則在面向?qū)ο竽J较碌靡猿浞煮w現(xiàn)。追求問題空間和軟件系統(tǒng)空間的一致性?;诿嫦?qū)ο竽J綐?gòu)建系

3、統(tǒng), 首先要確定求解問題中有哪些對象, 構(gòu)造適當?shù)念愐苑从掣鞣N 不同的對象,通過對象間傳遞消息和類的繼承機制,協(xié)同完成對問題的求解。2)優(yōu)點:(1)高度模塊性;(2)封裝功能;( 3)代碼共享;(4)靈活性;(5)易維護性;(6)可擴充性。3)不足:在于如果一個對象需要調(diào)用另一個對象,它就必須知道那個對象的標識(對象名 或其它標識符) ,這樣就無形之中增強了對象之間的依賴關(guān)系。4)實例ODS 開放式分布系統(tǒng) Open Distributed System構(gòu)件: 是一個封裝了設(shè)計和實現(xiàn)的功能單元, 它向外界提供接口, 多個構(gòu)件接口互連可以形 成一個完整的系統(tǒng)。構(gòu)件的優(yōu)點在于針對接口設(shè)計、 提供標

4、準的技術(shù)服務(wù)框架、 實現(xiàn)語言和構(gòu)件位置透明以及基 于屬性和事件的良好復(fù)合性。CBA 方法( Component-Based Analysis )中 3 個基本的建模概念:( 1)協(xié)作( Collaboration ):根據(jù)構(gòu)件所承擔的不同角色,協(xié)作定義了一組構(gòu)件之間的動作: ction 集合。(2) 類型(Type):通過描述一個構(gòu)件的外部可視行為來定義構(gòu)件在系統(tǒng)中所承擔的功能。(3) 細化(Refinement):體現(xiàn)了對同一事務(wù)的不同描述之間的關(guān)系,抽象Abstraction描 述為基礎(chǔ),實現(xiàn) Realization 描述可以看作抽象描述的具體的形式。ODS 系統(tǒng)中構(gòu)件、連接器和配置的模型

5、:(1) 構(gòu)件(Compo nent):是描述開放分布式系統(tǒng)的基本元素:接口In terface、類型Type、 語義 Semantics、約束條件 Constraint、進化 Evolution、非功能性屬性 Nonfunctional Property。(2) 連接器(Connector):用來分析構(gòu)件之間的交互模型、定義交互規(guī)則。 連接器不一定是開放分布式系統(tǒng)中的一個可編輯單元,可以表現(xiàn)為共享變量、表入口指針、 緩沖區(qū)、動態(tài)數(shù)據(jù)結(jié)構(gòu)、一系列工程調(diào)用、初始化參數(shù)、通信協(xié)議、管道等多種形式。 對連接器的描述可從 5方面展開 接口、類型、語義、約束條件、進化。(3) 配置(Configurat

6、ion ):也稱為拓撲(Topology ),是構(gòu)件和連接器交互組成的體系結(jié) 構(gòu)圖。配置可用來判斷 4個問題:構(gòu)件連接是否合適;接口是否匹配;連接器是否正常; 構(gòu)件連接 的語義是否符合設(shè)計要求。配置有 8 點特征:易理解性、復(fù)合性、細化和可描繪性、異構(gòu)性、可擴充性、進化性、動態(tài) 性、約束條件。5) 構(gòu)件的描述方法UML ( Unified Modeling Language )統(tǒng)一建模語言ADLs ( Architecture Description Languages )體系結(jié)構(gòu)描述語言利用 UML 和 ADLs 可以對 ODS 系統(tǒng)中的構(gòu)件及其相互之間的通信關(guān)系進行描述,利用,GUI 體系

7、結(jié)構(gòu)框架自動生成工具,可完成下述幾點功能:(1)生成構(gòu)件模型,包括構(gòu)件的屬性、接口和實現(xiàn);( 2)建立連接器模型,包括協(xié)議、屬性和實現(xiàn);( 3)體系結(jié)構(gòu)的抽象和封裝;( 4)類型和類型檢查;( 5)主動規(guī)范,提供設(shè)計向?qū)В? 6)多視圖模式,對不同層次的用戶顯示不同的內(nèi)容;( 7)生成實現(xiàn),如將構(gòu)件對應(yīng)為面向?qū)ο蠹夹g(shù)中的類;( 8 )將系統(tǒng)的修改動態(tài)映射到實現(xiàn)。6) 具有自適應(yīng)穩(wěn)定性的連接器模型包括:(1)連接器中的通信協(xié)議棧; 連接器中的通信協(xié)議棧由一組功能各異的通信協(xié)議疊加而成,其中每個協(xié)議負責構(gòu)件之間交互信息的一部分功能,這些功能的有機合成就實現(xiàn)了構(gòu)件之間的可靠通信。EJB, DCOM

8、和 CORBA 的構(gòu)件級復(fù)用框架中主要采用了 Java/RMI 和 CORBA/IIOP 等通信 協(xié)議,Internet 采用了 TCP/IP 協(xié)議簇。ODS 系統(tǒng)中的通信協(xié)議棧包括以下幾個基本協(xié)議:構(gòu)件命名和尋址協(xié)議;構(gòu)件通信傳輸協(xié) 議;構(gòu)件通信傳輸控制協(xié)議;構(gòu)件通信管理協(xié)議。( 2)連接器的自適應(yīng)穩(wěn)定算法。二:章二 軟件體系結(jié)構(gòu)的構(gòu)建模式( 2)三、事件驅(qū)動模式1、事件驅(qū)動模式 事件驅(qū)動系統(tǒng)的基本觀點是一個系統(tǒng)對外部的表現(xiàn)可以從它對事件的處理表征 出來。特點:(1)系統(tǒng)由若干個子系統(tǒng)或元素所組成的一個整體;(2)系統(tǒng)有一定的目標,各子系統(tǒng)在某一種消息機制的控制下,為了這個目 標而協(xié)調(diào)行動;

9、( 3)在某一種消息機制的控制下,系統(tǒng)作為一個整體與環(huán)境相適應(yīng)和協(xié)調(diào);(4)在一個系統(tǒng)的若干子系統(tǒng)中,必定有一個子系統(tǒng)起著主導(dǎo)作用,而其它 子系統(tǒng)處于從屬地位;(5)任一系統(tǒng)和系統(tǒng)內(nèi)的任一元素, 都有一個事件收集機制和一個事件處理 機制,通過這種機制與周圍環(huán)境發(fā)生作用和聯(lián)系。 在基于事件驅(qū)動模式的系統(tǒng)設(shè)計中, 系統(tǒng)的每個子系統(tǒng)在設(shè)計過程中都要考慮其 完整性和相對獨立性, 不絕對依賴于某一子系統(tǒng), 系統(tǒng)之間的協(xié)調(diào)和管理都是通 過消息傳遞和收集來進行的。2、事件驅(qū)動模式系統(tǒng)的設(shè)計原則:(1)從系統(tǒng)論的角度看待描述的對象,合理分解子系統(tǒng),保證各個子系統(tǒng)的 獨立性和社會性;( 2)任何子系統(tǒng)都可按有無

10、子系統(tǒng)這一性質(zhì)分:管理系統(tǒng)和執(zhí)行系統(tǒng);(3)為達到系統(tǒng)的目標, 系統(tǒng)內(nèi)的各個子系統(tǒng)通過傳遞消息和執(zhí)行消息來協(xié) 同操作;(4)任何性質(zhì)的子系統(tǒng)都必須有一個事件處理器, 用以處理上級交給的事件;(5)在一個完整系統(tǒng)中,必須有這樣一個子系統(tǒng),它沒有上級,必須收集系 統(tǒng)外的事件及下級發(fā)出的事件;(6)管理類型的子系統(tǒng)一般不執(zhí)行具體操作, 它的主要功能是按照自己的只 能指揮下級完成任務(wù),功能性操作一般由執(zhí)行類型的子系統(tǒng)完成;(7)一般情況,除最高管理子系統(tǒng)外,子系統(tǒng)一般是“有問才答”,即使在 必要的情況下需要積極尋找事件時, 也必須征得上級系統(tǒng)的許可, 保證了系統(tǒng)的 控制流不會分散。3、事件驅(qū)動模式的優(yōu)

11、點:(1)事件驅(qū)動模式非常適合于描述系統(tǒng)族,在屬于同一族的任何系統(tǒng)中,系 統(tǒng)的高級管理子系統(tǒng)的描述是完全類似的,便于重用;(2)由于最高管理子系統(tǒng)牢牢的掌握著控制權(quán), 又因為各同級子系統(tǒng)一般不 直接發(fā)生關(guān)系,因此容易實現(xiàn)并發(fā)處理和多任務(wù)操作;(3)基于事件驅(qū)動模式的系統(tǒng)具有良好的可擴展性, 設(shè)計者只需為某個對象 注冊一個事件處理接口就可以將該對象引入整個系統(tǒng), 同事并不影響其它的系統(tǒng) 對象;(4)定義了包含執(zhí)行子系統(tǒng)和管理子系統(tǒng)的類層次結(jié)構(gòu);(5)簡化客戶代碼;(6)使整個系統(tǒng)的設(shè)計更具有一般化。4、事件驅(qū)動模式的不足:(1)構(gòu)件消弱了自身對系統(tǒng)計算的控制能力;(2)事件驅(qū)動模式中存在的另一個

12、問題是數(shù)據(jù)共享;(3)系統(tǒng)中各個對象的邏輯關(guān)系變得更加復(fù)雜。5、事件驅(qū)動模式和面向?qū)ο笾g的關(guān)系:基于事件驅(qū)動模式的系統(tǒng)往往都是面 向?qū)ο蟮摹J录涌?、事件驅(qū)動模式實例事件驅(qū)動是JavaBean體系結(jié)構(gòu)的核心之一,JavaBean系統(tǒng)通過事件驅(qū)動機制將 一些組件作為事件源,發(fā)出可以被描述環(huán)境或其它組件接收的事件。適配器類是JavaBean事件模型中極其重要的一部分,在一些應(yīng)用場合,事件從 源到監(jiān)聽者之間的傳遞要通過適配類來“轉(zhuǎn)發(fā)”。適配類成為了事件監(jiān)聽者, 事件源實際是把適配類作為監(jiān)聽者注冊到監(jiān)聽者隊列 中,而真正的事件響應(yīng)者并未在監(jiān)聽者隊列中, 事件響應(yīng)者應(yīng)做的動作由適配類 決定。四、分層

13、模式1、分層模式特征 一個分層系統(tǒng)采用層次化的組織方式構(gòu)建,系統(tǒng)中的每一層都要承擔兩個角色。 首先,它要為結(jié)構(gòu)中的上層提供服務(wù); 其次,它要作為結(jié)構(gòu)中下面層次的客戶,調(diào)用下層提供的功能函數(shù)。 最高層和最低層例外。核心層功能層應(yīng)用層2、分層模式的優(yōu)點:(1)分層模式支持系統(tǒng)設(shè)計過程中的逐級抽象;(2)分層模式的系統(tǒng)具有較好的可擴展性;(3)分層模式支持軟件復(fù)用。3、分層模式的不足:并非所有的系統(tǒng)都適合用分層模式來描述的; 對于抽象出來的功能具體應(yīng)該放在 哪個層次上也是設(shè)計者頭疼的問題。4、實例:在計算機網(wǎng)絡(luò)的設(shè)計中, 采用了分層模式的設(shè)計方法。 ISO/OSI 的七層參考模型章二 軟件體系結(jié)構(gòu)的

14、構(gòu)建模式( 3)一、知識庫模式1、知識庫模式特征 采用知識庫模式構(gòu)建的系統(tǒng)通常有兩個截然不同的功能構(gòu)件:(1)中央數(shù)據(jù)單元構(gòu)件:代表系統(tǒng)當前的各種狀態(tài);(2)一些相對獨立的組件的集合:對中央數(shù)據(jù)單元進行操作。 這樣,中央數(shù)據(jù)單元和外部組件集合之間的信息交互就成為基于知識庫模式的系 統(tǒng)中至關(guān)重要的問題。這種信息交互的方式也存在很大差異。 信息交互方式的差異導(dǎo)致了控制策略的不同。 主要的控制策略有兩種。 依據(jù)這兩 種不同的控制策略,基于知識庫模式的系統(tǒng)被分成兩個子類。(1)如系統(tǒng)由輸入數(shù)據(jù)流中的事務(wù)信息來驅(qū)動, 則該系統(tǒng)可以稱為基于傳統(tǒng)數(shù)據(jù)庫知識庫模式的應(yīng)用系統(tǒng);(2)如系統(tǒng)由知識庫的當前狀態(tài)來驅(qū)

15、動, 則該系統(tǒng)可稱為基于黑板型知識庫 模式的應(yīng)用系統(tǒng)。2、一個標準的黑板型知識庫模式系統(tǒng)通常包括 3 個組成部分:(1)知識源;(2)中央數(shù)據(jù)單元:是整個系統(tǒng)的核心部件,它對系統(tǒng)需要解決的問題預(yù)先 進行了分析和定義, 總結(jié)出了系統(tǒng)運行過程中將要出現(xiàn)的多種狀態(tài), 并制定了這 些狀態(tài)下系統(tǒng)的相應(yīng)對策;(3)控制單元:其驅(qū)動完全是由知識庫的狀態(tài)編號承擔的。3、知識庫模式實例:人工智能領(lǐng)域 專家系統(tǒng) ES( Expert System ) 知識庫正是專家系統(tǒng)的基礎(chǔ)。專家系統(tǒng) 知識工程:知識獲取、知識表示、知識推理。 專家系統(tǒng):把某一領(lǐng)域內(nèi)專家的知識和人們長期總結(jié)出來的經(jīng)驗方法輸入其中, 模仿人類專家的

16、思維規(guī)律和處理模式, 按照一定的推理機制和控制策略, 利用計 算機進行演繹和推理, 使專家的經(jīng)驗變成共享資源, 從而可克服專家嚴重短缺的 現(xiàn)象。專家系統(tǒng)的核心內(nèi)容是知識庫和推理機制,主要組成部分是:知識庫、推理機、 工作數(shù)據(jù)庫、用戶界面、解釋程序和知識獲取程序。專家系統(tǒng)的結(jié)構(gòu)有:人機接口、知識獲取機構(gòu)、知識庫及其管理系統(tǒng)、推理機、 數(shù)據(jù)庫及其管理系統(tǒng)、解釋機構(gòu)、ES的通訊方法。二、解釋器模式1、解釋器模式特征: 基于解釋器模式的系統(tǒng)核心在于虛擬機。 一個基于解釋器模式的系統(tǒng)通常包括正在被解釋執(zhí)行的偽碼和解釋引擎。 偽碼由需要被解釋執(zhí)行的源代碼和解釋引擎分析所得的中間代碼組成; 解釋引擎包括語法

17、解釋器和解釋器當前的運行狀態(tài)。一個解釋器模式中就有 4 個基本的構(gòu)成部分:(1)完成解釋工作的解釋引擎;(2)包含偽碼的數(shù)據(jù)存儲區(qū);(3)記錄引擎當前工作狀態(tài)的數(shù)據(jù)結(jié)構(gòu);(4)記錄源代碼被解釋執(zhí)行的進度的數(shù)據(jù)結(jié)構(gòu)。2、解釋器模式實例 解釋器模式在模式匹配系統(tǒng)和語言編譯器等方面的應(yīng)用已經(jīng)非常成熟了。(1)布爾表達式求值系統(tǒng) 以語法搜索匹配作為布爾表達式求值的理論基礎(chǔ), 從語法匹配的角度來分析和解 決布爾表達式求值問題。如果一個特定語法的匹配問題發(fā)生的頻率足夠高, 那么就有必要將該語法的各個 實例表述為一種語言的句子, 這樣就可以構(gòu)建一個解釋器, 該解釋器通過解釋這 些句子來解決該語法的匹配問題。

18、正則表達式是描述字符串模式的標準語言, 與其為每一個模式都構(gòu)造一個特定的 算法,不如用一種通用的搜索算法來解釋執(zhí)行一個正則表達式, 該正則表達式定 義了待匹配字符串的集合。正則表達式的解釋執(zhí)行結(jié)果就是布爾表達式的最終計算值。本實例的內(nèi)容可概括為如何為正則表達式定義一個布爾表達式, 如何表示一個特 定的布爾正則表達式,以及如何解釋這個正則表達式,得出布爾表達式的結(jié)果。 由如下文法定義布爾正則表達式:BooleanExpression:=VariableExpression | Constant | OrExpression |AndExpression | NotExpression | (Bo

19、oleanExpression )AndExpression:=BooleanExpression and BooleanExpressionOrExpression:=BooleanExpression or BooleanExpressionNotExpression:=not BooleanExpressionConstant:= true | falseVariableExpression:=A|B.Y|Z(2) 布爾表達式求值系統(tǒng)的優(yōu)缺點: 在文法規(guī)則比較簡單的情況下,解釋器模式工作得很好,但如果文法規(guī)則復(fù)雜, 則文法的層次變得龐大而無法管理,系統(tǒng)中需要包含許多表示文法規(guī)則的類。 最

20、高效的解釋器通常不是通過直接解釋語法分析樹實現(xiàn)的, 而是首先將它們轉(zhuǎn)換 成另一種形式。例如:正則表達式通常被轉(zhuǎn)換為狀態(tài)機。易于改變和擴展文法。 因為解釋器模式使用類來表示文法規(guī)則, 用戶可以使用繼 承來改變或擴展文法。易于實現(xiàn)文法。定義抽象語法樹中各個節(jié)點的類的實現(xiàn)大體類似, 易于直接編寫, 通常它們也可以用一個編譯器或語法分析程序生成器自動生成。(3) 布爾表達式求值系統(tǒng)中的角色BooleanExpression 抽象布爾表達式TerminalExpression 終結(jié)符表達式NonterminalExpression 非終結(jié)符表達式Context 上下文Client 客戶描 述: Clie

21、nt 構(gòu)建一個布爾表達式,它是 TerminalExpression 和NonterminalExpression 的實例的一個抽象語法樹, 然后初始化上下文并調(diào)用 解釋操作;每一個 NonterminalExpression 節(jié)點定義相應(yīng)字表達式的求值操作, 而各表達式的求值操作構(gòu)成了遞歸求 值的基礎(chǔ);每一個節(jié)點的求值操作用上下 文來存儲和訪問解釋器系統(tǒng)的狀態(tài)。( 4)布爾表達式求值系統(tǒng)的實現(xiàn) 創(chuàng)建抽象語法樹;定義求值操作;共享終結(jié)符。BooleanExpression 的實現(xiàn):public interface BooleanExpressionBooleanExpresion();bool

22、ean evaluate(Context aContext);BooleanExpression replace(String str, BooleanExpression de);BooleanExpression copy();Context 的實現(xiàn):class Contextpublic boolean lookup(String str);public void assign(VariableExpression ve, boolean bool);VariableExpression 的實現(xiàn): class VariableExpression implements BooleanEx

23、pression private String _name;VariableExpression(String str) _name=str;boolean evaluate(Context aContext) return aContext.lookup(_name);BooleanExpression replace(String str, BooleanExpression be) if(str.equals(_name)return be.copy();elsereturn new VariableExpression(str);BooleanExpression copy() return new VariableExpression(_name);AndExpression 的實現(xiàn): class AndExpression implements BooleanExpressionprivate BooleanExpression _operand1, _operand2;public AndExpression(BooleanExpression be1, BooleanExpression be2) _operand1=be1;_operan

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論