軟件設(shè)計與體系結(jié)構(gòu) 秦航 5_第1頁
軟件設(shè)計與體系結(jié)構(gòu) 秦航 5_第2頁
軟件設(shè)計與體系結(jié)構(gòu) 秦航 5_第3頁
軟件設(shè)計與體系結(jié)構(gòu) 秦航 5_第4頁
軟件設(shè)計與體系結(jié)構(gòu) 秦航 5_第5頁
已閱讀5頁,還剩58頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、清華大學出版社1清華大學出版社2內(nèi)容提要內(nèi)容提要p5.1 軟件體系結(jié)構(gòu)風格概述軟件體系結(jié)構(gòu)風格概述p5.2 軟件體系結(jié)構(gòu)基本風格解析軟件體系結(jié)構(gòu)基本風格解析l5.2.1管道-過濾器l5.2.2數(shù)據(jù)抽象與面向?qū)ο箫L格 l5.2.3基于事件的隱式調(diào)用風格l5.2.4 分層系統(tǒng)風格 l5.2.5 倉庫風格和黑板風格 l5.2.6 模型-視圖-控制器(MVC)風格l5.2.7 解釋器風格l5.2.8 C2風格 5.3 案例研究案例研究l5.3.1案例1:上下文關(guān)鍵字l5.3.2案例2:儀器軟件l5.3.3平臺層PaaS和應(yīng)用程序?qū)覵aaS清華大學出版社3 5.4 客戶客戶/服務(wù)器風格服務(wù)器風格 5.5

2、 三層三層C/S結(jié)構(gòu)風格結(jié)構(gòu)風格l5.5.1三層三層C/S結(jié)構(gòu)的優(yōu)點結(jié)構(gòu)的優(yōu)點l5.5.2實例:某石油管理局勞動管理信息系統(tǒng)實例:某石油管理局勞動管理信息系統(tǒng)5.6 B/S風格風格5.7 C/S與與B/S混合結(jié)構(gòu)風格混合結(jié)構(gòu)風格5.8 正交軟件體系結(jié)構(gòu)風格正交軟件體系結(jié)構(gòu)風格 5.8.1正交軟件體系結(jié)構(gòu)的概念正交軟件體系結(jié)構(gòu)的概念 5.8.2正交軟件體系結(jié)構(gòu)的優(yōu)點正交軟件體系結(jié)構(gòu)的優(yōu)點 5.8.3正交軟件體系結(jié)構(gòu)的實例正交軟件體系結(jié)構(gòu)的實例5.9 基于層次消息總線的體系結(jié)構(gòu)風格基于層次消息總線的體系結(jié)構(gòu)風格 5.9.1構(gòu)件模型構(gòu)件模型 5.9.2構(gòu)件接口構(gòu)件接口 5.9.3消息總線消息總線 5

3、.9.4構(gòu)件靜態(tài)結(jié)構(gòu)構(gòu)件靜態(tài)結(jié)構(gòu) 5.9.5構(gòu)件動態(tài)行為構(gòu)件動態(tài)行為 5.9.6運行時刻的系統(tǒng)演化運行時刻的系統(tǒng)演化清華大學出版社4p5.10異構(gòu)結(jié)構(gòu)風格異構(gòu)結(jié)構(gòu)風格l5.10.1 使用異構(gòu)結(jié)構(gòu)的原因l5.10.2 異構(gòu)體系結(jié)構(gòu)的實例l5.10.3 異構(gòu)組合匹配問題p5.11小結(jié)小結(jié)5.1 軟件體系結(jié)構(gòu)風格概述軟件體系結(jié)構(gòu)風格概述 軟件體系結(jié)構(gòu)風格,是描述某一特定應(yīng)用軟件體系結(jié)構(gòu)風格,是描述某一特定應(yīng)用領(lǐng)域中系統(tǒng)組織方式的慣用模式。體系結(jié)構(gòu)風領(lǐng)域中系統(tǒng)組織方式的慣用模式。體系結(jié)構(gòu)風格定義一個系統(tǒng)家族,即一個體系結(jié)構(gòu)定義一格定義一個系統(tǒng)家族,即一個體系結(jié)構(gòu)定義一個詞匯表和一組約束。詞匯表中包含了

4、一些構(gòu)個詞匯表和一組約束。詞匯表中包含了一些構(gòu)件和連接件類型,而這組約束指出系統(tǒng)是如何件和連接件類型,而這組約束指出系統(tǒng)是如何將這些構(gòu)件和連接件組合起來的。體系結(jié)構(gòu)風將這些構(gòu)件和連接件組合起來的。體系結(jié)構(gòu)風格,反映了領(lǐng)域中眾多系統(tǒng)所共有的結(jié)構(gòu)和語格,反映了領(lǐng)域中眾多系統(tǒng)所共有的結(jié)構(gòu)和語義特征,并指導如何將各個模塊和子系統(tǒng)有效義特征,并指導如何將各個模塊和子系統(tǒng)有效地組織成一個完整的系統(tǒng)。按這種方式理解,地組織成一個完整的系統(tǒng)。按這種方式理解,軟件體系結(jié)構(gòu)風格定義了用于描述系統(tǒng)的術(shù)語軟件體系結(jié)構(gòu)風格定義了用于描述系統(tǒng)的術(shù)語表和一組指導構(gòu)建系統(tǒng)的規(guī)則。表和一組指導構(gòu)建系統(tǒng)的規(guī)則。5.2 軟件體系結(jié)

5、構(gòu)基本風格解析軟件體系結(jié)構(gòu)基本風格解析5.2.1 管道管道-過濾器過濾器 適用于對有序數(shù)據(jù)進行一系列已經(jīng)定義的相互計算適用于對有序數(shù)據(jù)進行一系列已經(jīng)定義的相互計算的應(yīng)用程序。管道過濾器模式下,每個功能模塊都有一的應(yīng)用程序。管道過濾器模式下,每個功能模塊都有一組輸入和輸出。功能模塊從輸入集合讀入數(shù)據(jù)流,并在組輸入和輸出。功能模塊從輸入集合讀入數(shù)據(jù)流,并在輸出集合產(chǎn)生輸出數(shù)據(jù)流,即功能模塊對輸入數(shù)據(jù)流進輸出集合產(chǎn)生輸出數(shù)據(jù)流,即功能模塊對輸入數(shù)據(jù)流進行增量計算得到輸出數(shù)據(jù)流。管道過濾器模式下,功能行增量計算得到輸出數(shù)據(jù)流。管道過濾器模式下,功能模塊稱作過濾器(模塊稱作過濾器(filter);功能模

6、塊間的連接可以看作);功能模塊間的連接可以看作輸入、輸出數(shù)據(jù)流之間的通路,所以稱作管道(輸入、輸出數(shù)據(jù)流之間的通路,所以稱作管道(pipe)。)。圖圖5-1 管道管道過濾器風格的體系結(jié)構(gòu)過濾器風格的體系結(jié)構(gòu) 清華大學出版社8采用管道采用管道-過濾器模式建立的系統(tǒng)主要過濾器模式建立的系統(tǒng)主要有以下幾個優(yōu)點:有以下幾個優(yōu)點:p(1)由于每個構(gòu)件的行為不受其他構(gòu)件的影響,)由于每個構(gòu)件的行為不受其他構(gòu)件的影響,因此,整個系統(tǒng)的行為比較易于理解。因此,整個系統(tǒng)的行為比較易于理解。l設(shè)計者可以將系統(tǒng)抽象成一個“黑匣子”,其輸入是系統(tǒng)中第一個過濾器的輸入管道,輸出是系統(tǒng)中最后一個過濾器的輸出管道,而其內(nèi)部

7、各功能模塊的具體實現(xiàn)對用戶完全透明。p(2)支持功能模塊的復用。任意兩個過濾器只)支持功能模塊的復用。任意兩個過濾器只要在相互的輸入、輸出管道格式上達成一致,就要在相互的輸入、輸出管道格式上達成一致,就可以連接在一起??梢赃B接在一起。l過濾器A和過濾器B只要對管道C中傳輸?shù)臄?shù)據(jù)格式達成一致就可以實現(xiàn)互連,其中過濾器A并不關(guān)心過濾器B如何處理管道C的內(nèi)容,而過濾器B也不知道管道C的內(nèi)容究竟是如何產(chǎn)生的,即在管道過濾器模式中,過濾器之間僅需很少的信息交換就可以完成互連。清華大學出版社9p(3)具有較強的可維護性與可擴展性。)具有較強的可維護性與可擴展性??删S護性體現(xiàn)在系統(tǒng)過濾器部件的更新或可維護性

8、體現(xiàn)在系統(tǒng)過濾器部件的更新或升級。升級。l由于技術(shù)改進等原因,過濾器A的實現(xiàn)發(fā)生了改變,采用新技術(shù)開發(fā)的過濾器D具有和A完全相同的輸入、輸出管道接口,這時可以直接將A替換為D,而無須對系統(tǒng)中的其他過濾器或管道進行任何修改。圖圖5-2 管道管道-過濾器支持功能模塊復用過濾器支持功能模塊復用圖圖5-3 管道管道-過濾器的可擴展性過濾器的可擴展性清華大學出版社11p (4)支持特殊的分析:如吞吐量計算和死)支持特殊的分析:如吞吐量計算和死鎖檢測等。利用管道鎖檢測等。利用管道-過濾器模式圖,可以很容過濾器模式圖,可以很容易地得到系統(tǒng)的資源使用與請求狀態(tài)圖,然后,易地得到系統(tǒng)的資源使用與請求狀態(tài)圖,然后

9、,根據(jù)操作系統(tǒng)原理等相關(guān)理論中的死鎖檢測方法根據(jù)操作系統(tǒng)原理等相關(guān)理論中的死鎖檢測方法就可以分析出系統(tǒng)目前所處的狀態(tài),是否存在死就可以分析出系統(tǒng)目前所處的狀態(tài),是否存在死鎖可能及如何消除死鎖等問題。鎖可能及如何消除死鎖等問題。p (5)支持并發(fā)執(zhí)行?;诠艿溃┲С植l(fā)執(zhí)行?;诠艿?過濾器模式過濾器模式的系統(tǒng)存在很多并行的過濾器,這樣的系統(tǒng)在實的系統(tǒng)存在很多并行的過濾器,這樣的系統(tǒng)在實際運行時,可以將存在并發(fā)可能的多個過濾器看際運行時,可以將存在并發(fā)可能的多個過濾器看作多個并發(fā)的任務(wù)并行執(zhí)行,從而大大提高了系作多個并發(fā)的任務(wù)并行執(zhí)行,從而大大提高了系統(tǒng)的整體效率,加快了處理速度。當然,在調(diào)度統(tǒng)

10、的整體效率,加快了處理速度。當然,在調(diào)度并行任務(wù)的時候,必須有相應(yīng)的并行算法作基礎(chǔ),并行任務(wù)的時候,必須有相應(yīng)的并行算法作基礎(chǔ),否則,可能導致系統(tǒng)功能的混亂。否則,可能導致系統(tǒng)功能的混亂。清華大學出版社125.2.2 數(shù)據(jù)抽象與面向?qū)ο箫L格數(shù)據(jù)抽象與面向?qū)ο箫L格 圖圖5-4 數(shù)據(jù)抽象與面向?qū)ο箫L格的體系結(jié)構(gòu)數(shù)據(jù)抽象與面向?qū)ο箫L格的體系結(jié)構(gòu)面向?qū)ο蟮南到y(tǒng)有許多優(yōu)點,并早已為人所知:面向?qū)ο蟮南到y(tǒng)有許多優(yōu)點,并早已為人所知: (1)因為對象對其他對象隱藏它的表示,所以可以改變一)因為對象對其他對象隱藏它的表示,所以可以改變一個對象的表示,而不影響其他的對象。個對象的表示,而不影響其他的對象。 (2

11、)設(shè)計者可將一些數(shù)據(jù)存取操作的問題,分解成一些交)設(shè)計者可將一些數(shù)據(jù)存取操作的問題,分解成一些交互的代理程序的集合。互的代理程序的集合。但是,面向?qū)ο蟮南到y(tǒng)也存在著某些問題。但是,面向?qū)ο蟮南到y(tǒng)也存在著某些問題。 (1)為了使一個對象和另一個對象通過過程調(diào)用等進行交)為了使一個對象和另一個對象通過過程調(diào)用等進行交互,必須知道對象的標識,只要一個對象的標識改變了,就必須修互,必須知道對象的標識,只要一個對象的標識改變了,就必須修改所有其他明確調(diào)用它的對象。改所有其他明確調(diào)用它的對象。 (2)必須修改所有顯式調(diào)用它的其他對象,并消除由此帶)必須修改所有顯式調(diào)用它的其他對象,并消除由此帶來的一些副作

12、用。例如,如果來的一些副作用。例如,如果A使用了對象使用了對象B,C也使用了對象也使用了對象B,那么那么C對對B的使用所造成的對的使用所造成的對A的影響,可能是預想不到的。的影響,可能是預想不到的。清華大學出版社145.2.3 基于事件的隱式調(diào)用風格基于事件的隱式調(diào)用風格p 基于事件的隱式調(diào)用風格的思想是構(gòu)基于事件的隱式調(diào)用風格的思想是構(gòu)件不直接調(diào)用一個過程,而是觸發(fā)或廣播件不直接調(diào)用一個過程,而是觸發(fā)或廣播一個或多個事件。系統(tǒng)中的其他構(gòu)件中的一個或多個事件。系統(tǒng)中的其他構(gòu)件中的過程在一個或多個事件中注冊,當一個事過程在一個或多個事件中注冊,當一個事件被觸發(fā),系統(tǒng)自動調(diào)用在這個事件中注件被觸發(fā)

13、,系統(tǒng)自動調(diào)用在這個事件中注冊的所有過程,這樣,一個事件的觸發(fā)就冊的所有過程,這樣,一個事件的觸發(fā)就導致了另一模塊中的過程的調(diào)用。導致了另一模塊中的過程的調(diào)用。清華大學出版社15隱式調(diào)用系統(tǒng)的主要優(yōu)點有以下兩點:隱式調(diào)用系統(tǒng)的主要優(yōu)點有以下兩點:p為軟件重用提供了強大的支持。當需要將為軟件重用提供了強大的支持。當需要將一個構(gòu)件加入現(xiàn)存系統(tǒng)時,只需將它注冊一個構(gòu)件加入現(xiàn)存系統(tǒng)時,只需將它注冊到系統(tǒng)的事件中。到系統(tǒng)的事件中。p為改進系統(tǒng)帶來了方便。當用一個構(gòu)件代為改進系統(tǒng)帶來了方便。當用一個構(gòu)件代替另一個構(gòu)件時,不會影響到其他構(gòu)件的替另一個構(gòu)件時,不會影響到其他構(gòu)件的接口。接口。清華大學出版社16

14、隱式調(diào)用系統(tǒng)的主要缺點有以下幾方面隱式調(diào)用系統(tǒng)的主要缺點有以下幾方面:p 構(gòu)件放棄了對系統(tǒng)計算的控制。一個構(gòu)構(gòu)件放棄了對系統(tǒng)計算的控制。一個構(gòu)件觸發(fā)一個事件時不能確定其他構(gòu)件是否會響件觸發(fā)一個事件時不能確定其他構(gòu)件是否會響應(yīng)它。而且即使它知道事件注冊了哪些構(gòu)件的過應(yīng)它。而且即使它知道事件注冊了哪些構(gòu)件的過程,它也不能保證這些過程被調(diào)用的順序。程,它也不能保證這些過程被調(diào)用的順序。p 數(shù)據(jù)交換的問題。有時數(shù)據(jù)可被一個事數(shù)據(jù)交換的問題。有時數(shù)據(jù)可被一個事件傳遞,但在另一些情況下,基于事件的系統(tǒng)必件傳遞,但在另一些情況下,基于事件的系統(tǒng)必須依靠一個共享的倉庫進行交互。在這些情況下,須依靠一個共享的倉

15、庫進行交互。在這些情況下,全局性能和資源管理便成了問題。全局性能和資源管理便成了問題。p 既然過程的語義必須依賴于被觸發(fā)事既然過程的語義必須依賴于被觸發(fā)事件的上下文約束,關(guān)于正確性的推理就存在問題。件的上下文約束,關(guān)于正確性的推理就存在問題。清華大學出版社175.2.4分層系統(tǒng)風格分層系統(tǒng)風格p一個分層風格的系統(tǒng)按照層次結(jié)構(gòu)組織,每一層一個分層風格的系統(tǒng)按照層次結(jié)構(gòu)組織,每一層向它的上層提供服務(wù),同時又是它的下層客戶;向它的上層提供服務(wù),同時又是它的下層客戶;在某些系統(tǒng)中,除了鄰接的層,一個內(nèi)部層次對在某些系統(tǒng)中,除了鄰接的層,一個內(nèi)部層次對于其他外部層次是隱藏的,對體系結(jié)構(gòu)的約束包于其他外部

16、層次是隱藏的,對體系結(jié)構(gòu)的約束包括把系統(tǒng)內(nèi)的交互限制在鄰接層次之間。交互只括把系統(tǒng)內(nèi)的交互限制在鄰接層次之間。交互只在相鄰的層間發(fā)生;同時,這些交互按照一定協(xié)在相鄰的層間發(fā)生;同時,這些交互按照一定協(xié)議進行。議進行。l連接件可以用層次間的交互協(xié)議來定義。每個獨立層都要防止較高層直接訪問較低層。l每一層次是由不同的部件構(gòu)成的實體集合。層內(nèi)的部件可以交互。p相鄰層的部件可直接從上向下調(diào)用,還可以設(shè)計相鄰層的部件可直接從上向下調(diào)用,還可以設(shè)計統(tǒng)一的層調(diào)用接口對層進行保護。統(tǒng)一的層調(diào)用接口對層進行保護。圖圖5-5 分層模型分層模型清華大學出版社195.2.5倉庫風格和黑板風格倉庫風格和黑板風格p 倉庫

17、風格的體系結(jié)構(gòu)由兩個構(gòu)件組成:一倉庫風格的體系結(jié)構(gòu)由兩個構(gòu)件組成:一個中央數(shù)據(jù)結(jié)構(gòu),它表示當前狀態(tài);一個獨立構(gòu)個中央數(shù)據(jù)結(jié)構(gòu),它表示當前狀態(tài);一個獨立構(gòu)件的集合,它對中央數(shù)據(jù)結(jié)構(gòu)進行操作。對于系件的集合,它對中央數(shù)據(jù)結(jié)構(gòu)進行操作。對于系統(tǒng)中數(shù)據(jù)和狀態(tài)的控制方法有兩種:一個傳統(tǒng)的統(tǒng)中數(shù)據(jù)和狀態(tài)的控制方法有兩種:一個傳統(tǒng)的方法是,由輸入事務(wù)選擇進行何種處理,并把執(zhí)方法是,由輸入事務(wù)選擇進行何種處理,并把執(zhí)行結(jié)果作為當前狀態(tài)存儲到中央數(shù)據(jù)結(jié)構(gòu)中,這行結(jié)果作為當前狀態(tài)存儲到中央數(shù)據(jù)結(jié)構(gòu)中,這時,倉庫是一個傳統(tǒng)的數(shù)據(jù)庫體系結(jié)構(gòu);另一種時,倉庫是一個傳統(tǒng)的數(shù)據(jù)庫體系結(jié)構(gòu);另一種方法是,由中央數(shù)據(jù)結(jié)構(gòu)的當前

18、狀態(tài)決定進行何方法是,由中央數(shù)據(jù)結(jié)構(gòu)的當前狀態(tài)決定進行何種處理。這時,倉庫是一個黑板體系結(jié)構(gòu)。即黑種處理。這時,倉庫是一個黑板體系結(jié)構(gòu)。即黑板體系結(jié)構(gòu)是倉庫體系結(jié)構(gòu)的特殊化。板體系結(jié)構(gòu)是倉庫體系結(jié)構(gòu)的特殊化。清華大學出版社20p(1)適應(yīng)的設(shè)計問題)適應(yīng)的設(shè)計問題p(2)解決方案)解決方案p “黑板黑板”模式類似于這樣一個情形,即讓專家們坐模式類似于這樣一個情形,即讓專家們坐在真實黑板前并一起工作來解決一個問題。每個專家獨在真實黑板前并一起工作來解決一個問題。每個專家獨立評估解法的當前狀態(tài),并可在任何時間到黑板上添加、立評估解法的當前狀態(tài),并可在任何時間到黑板上添加、更改或刪除信息。人們往往要

19、決定接下來誰去訪問黑板。更改或刪除信息。人們往往要決定接下來誰去訪問黑板。在黑板模式中,如果可用的組件超過一個,仲裁者在黑板模式中,如果可用的組件超過一個,仲裁者(moderator)組件決定程序執(zhí)行的順序。)組件決定程序執(zhí)行的順序。圖圖5-6 黑板風格的體系結(jié)構(gòu)黑板風格的體系結(jié)構(gòu)清華大學出版社22 從圖從圖5-6中不難看出,一個標準的黑板中不難看出,一個標準的黑板型倉庫模式系統(tǒng)通常包括型倉庫模式系統(tǒng)通常包括3個組成部分:個組成部分: (1)知識源:)知識源: (2)中央數(shù)據(jù)單元:)中央數(shù)據(jù)單元: (3)控制單元:)控制單元:清華大學出版社23黑板風格的體系結(jié)構(gòu)的優(yōu)點有:黑板風格的體系結(jié)構(gòu)的優(yōu)

20、點有:p 便于多客戶共享大量數(shù)據(jù),它們不用關(guān)心便于多客戶共享大量數(shù)據(jù),它們不用關(guān)心數(shù)據(jù)是何時出現(xiàn)的、誰提供的、怎樣提供的。數(shù)據(jù)是何時出現(xiàn)的、誰提供的、怎樣提供的。 p 既便于添加新的作為知識源代理的應(yīng)用程既便于添加新的作為知識源代理的應(yīng)用程序,也便于擴展共享的黑板數(shù)據(jù)結(jié)構(gòu)。序,也便于擴展共享的黑板數(shù)據(jù)結(jié)構(gòu)。p 可重用的知識源??芍赜玫闹R源。l知識源是某類任務(wù)的獨立專家。l黑板體系結(jié)構(gòu)有助于使它們可重用。重用的先決條件是知識源和所基于的黑板系統(tǒng)理解相同的協(xié)議和數(shù)據(jù),或者在這方面相當接近而不排斥協(xié)議或數(shù)據(jù)的自適應(yīng)程序。p 支持容錯性和健壯性。支持容錯性和健壯性。l在黑板體系結(jié)構(gòu)中,所有的結(jié)果都只

21、是假設(shè)。l只有那些被數(shù)據(jù)和其他假設(shè)強烈支持的才能生存。這提供了對噪聲數(shù)據(jù)和不確定結(jié)論的容忍。清華大學出版社24黑板風格的體系結(jié)構(gòu)的缺點有:黑板風格的體系結(jié)構(gòu)的缺點有:p 不同的知識源代理對于共享數(shù)據(jù)結(jié)構(gòu)要達不同的知識源代理對于共享數(shù)據(jù)結(jié)構(gòu)要達成一致,而且,這也造成對黑板數(shù)據(jù)結(jié)構(gòu)的修成一致,而且,這也造成對黑板數(shù)據(jù)結(jié)構(gòu)的修改較為困難。改較為困難。p 需要一定的同步鎖機制保證數(shù)據(jù)結(jié)構(gòu)的完需要一定的同步鎖機制保證數(shù)據(jù)結(jié)構(gòu)的完整性和一致性,增大了系統(tǒng)復雜度。整性和一致性,增大了系統(tǒng)復雜度。p 測試困難。由于黑板系統(tǒng)的計算沒有依據(jù)測試困難。由于黑板系統(tǒng)的計算沒有依據(jù)一個確定的算法,所以其結(jié)果常常不可再現(xiàn)

22、。一個確定的算法,所以其結(jié)果常常不可再現(xiàn)。此外,錯誤假設(shè)也是求解過程的一部分。此外,錯誤假設(shè)也是求解過程的一部分。p 不能保證有好的求解方案。不能保證有好的求解方案。l一個黑板系統(tǒng)往往只能正確解決所給任務(wù)的某一百分比。l難以建立一個好的控制策略。l控制策略不能以一種直接方式設(shè)計,而需要一種試驗的方法。清華大學出版社25p低效。低效。l黑板系統(tǒng)在拒絕錯誤假設(shè)中要承受多余的計算開銷。l但是,如果沒有確定的算法存在,那么與根本不存在的系統(tǒng)相比,低效總比沒有強。p開發(fā)成本高。開發(fā)成本高。l絕大多數(shù)黑板系統(tǒng)要花幾年時間來進化。l我們把這歸因于病態(tài)結(jié)構(gòu)問題。5.2.6 模型模型-視圖視圖-控制器(控制器(

23、MVC)風格)風格1. MVC模式模式 MVC由由Trygve Reenskaug提出,首先被應(yīng)用在提出,首先被應(yīng)用在SmallTalk-80環(huán)境中,是許多交互和界面系統(tǒng)的構(gòu)成基礎(chǔ)。環(huán)境中,是許多交互和界面系統(tǒng)的構(gòu)成基礎(chǔ)。MVC結(jié)構(gòu)是為那些需要為同樣的數(shù)據(jù)提供多個視圖的應(yīng)結(jié)構(gòu)是為那些需要為同樣的數(shù)據(jù)提供多個視圖的應(yīng)用程序而設(shè)計的,它很好地實現(xiàn)了數(shù)據(jù)層與表示層的分離。用程序而設(shè)計的,它很好地實現(xiàn)了數(shù)據(jù)層與表示層的分離。作為一種開發(fā)模型,作為一種開發(fā)模型,MVC通常用于分布式應(yīng)用系統(tǒng)的設(shè)通常用于分布式應(yīng)用系統(tǒng)的設(shè)計和分析中,以及用于確定系統(tǒng)各部分間的組織關(guān)系。對計和分析中,以及用于確定系統(tǒng)各部分間

24、的組織關(guān)系。對于界面設(shè)計可變性的需求,于界面設(shè)計可變性的需求,MVC(ModelViewController)把交互系統(tǒng)的組成分解成模)把交互系統(tǒng)的組成分解成模型、視圖、控制器三種部件。型、視圖、控制器三種部件。清華大學出版社27p2. MVC中的模型、視圖和控制類中的模型、視圖和控制類p MVC中的模型、視圖和控制類如圖中的模型、視圖和控制類如圖5-7所示。所示。p (1)模型類)模型類p (2)視圖類)視圖類p (3)控制類)控制類清華大學出版社28模型類模型類數(shù)據(jù)結(jié)構(gòu)關(guān)系數(shù)據(jù)結(jié)構(gòu)關(guān)系變化變化-傳播注冊關(guān)系傳播注冊關(guān)系內(nèi)部數(shù)據(jù)和邏輯計算內(nèi)部數(shù)據(jù)和邏輯計算向視圖和控制器通知數(shù)據(jù)變化向視圖和控

25、制器通知數(shù)據(jù)變化(a)視圖類視圖類顯示形式顯示形式顯示模式控制顯示模式控制從模型獲得數(shù)據(jù)視圖從模型獲得數(shù)據(jù)視圖更新操作更新操作(b)控制類控制類狀態(tài)狀態(tài)事件控制事件控制控制視圖更新控制視圖更新(c)清華大學出版社29p3.MVC的實現(xiàn)的實現(xiàn)p 實現(xiàn)基于實現(xiàn)基于MVC的應(yīng)用需要完成以下工作,如圖的應(yīng)用需要完成以下工作,如圖5-8所示:所示:圖圖5-8 MVC的實現(xiàn)的實現(xiàn)清華大學出版社30p(1)分析應(yīng)用問題,對系統(tǒng)進行分離)分析應(yīng)用問題,對系統(tǒng)進行分離p(2)設(shè)計和實現(xiàn)每個視圖)設(shè)計和實現(xiàn)每個視圖p(3)設(shè)計和實現(xiàn)每個控制器)設(shè)計和實現(xiàn)每個控制器p(4)使用可安裝和卸載的控制器)使用可安裝和卸載

26、的控制器5.2.7解釋器風格解釋器風格p 解釋器風格通常被用于建立一種虛擬機以解釋器風格通常被用于建立一種虛擬機以彌合程序的語義與作為計算引擎的硬件的間隙。彌合程序的語義與作為計算引擎的硬件的間隙。由于解釋器實際上創(chuàng)建了一個軟件虛擬出來的由于解釋器實際上創(chuàng)建了一個軟件虛擬出來的機器,所以這種風格又常常被稱為虛擬機風格。機器,所以這種風格又常常被稱為虛擬機風格。l(例如:程序設(shè)計語言的編譯器,比如Java、Smalltalk等;基于規(guī)則的系統(tǒng),比如專家系統(tǒng)領(lǐng)域的Prolog等;腳本語言,比如Awk、Perl等。)清華大學出版社32圖圖5-9 解釋器風格的體系結(jié)構(gòu)解釋器風格的體系結(jié)構(gòu)清華大學出版社

27、33p解釋器風格的優(yōu)點如下:解釋器風格的優(yōu)點如下:p 有助于應(yīng)用程序的可移植性與程序有助于應(yīng)用程序的可移植性與程序設(shè)計語言的跨平臺能力;可以對未實現(xiàn)的設(shè)計語言的跨平臺能力;可以對未實現(xiàn)的硬件進行仿真。硬件進行仿真。p解釋器風格的缺點,解釋器風格的缺點,p 是額外的間接層次帶來的系統(tǒng)性能的是額外的間接層次帶來的系統(tǒng)性能的下降。下降。5.2.8C2風格風格 C2體系結(jié)構(gòu)風格可以概括為通過連接件綁定在體系結(jié)構(gòu)風格可以概括為通過連接件綁定在一起的、按照一組規(guī)則運作的并行構(gòu)件網(wǎng)絡(luò)。一起的、按照一組規(guī)則運作的并行構(gòu)件網(wǎng)絡(luò)。圖圖5-10 C2風格的體系結(jié)構(gòu)風格的體系結(jié)構(gòu)清華大學出版社35p C2風格,是最常

28、用的一種軟件體風格,是最常用的一種軟件體系結(jié)構(gòu)風格。從系結(jié)構(gòu)風格。從C2風格的組織規(guī)則和風格的組織規(guī)則和結(jié)構(gòu)圖中可以得出,結(jié)構(gòu)圖中可以得出,C2風格具有以下風格具有以下特點:特點: 系統(tǒng)中的構(gòu)件可實現(xiàn)應(yīng)用需求,并能將任意復系統(tǒng)中的構(gòu)件可實現(xiàn)應(yīng)用需求,并能將任意復雜度的功能封裝在一起。雜度的功能封裝在一起。p 所有構(gòu)件之間的通信是通過以連接件為中介的所有構(gòu)件之間的通信是通過以連接件為中介的異步消息交換機制來實現(xiàn)的。異步消息交換機制來實現(xiàn)的。p 構(gòu)件相對獨立,構(gòu)件之間依賴性較少。系統(tǒng)中構(gòu)件相對獨立,構(gòu)件之間依賴性較少。系統(tǒng)中不存在某些構(gòu)件將在同一地址空間內(nèi)執(zhí)行,或某些不存在某些構(gòu)件將在同一地址空間

29、內(nèi)執(zhí)行,或某些構(gòu)件共享特定控制線程之類的相關(guān)性假設(shè)。構(gòu)件共享特定控制線程之類的相關(guān)性假設(shè)。清華大學出版社365.3 案例研究案例研究p5.3.1案例案例1:上下文關(guān)鍵字:上下文關(guān)鍵字p (a)解決方案)解決方案1:使用共享數(shù)據(jù)的主程序:使用共享數(shù)據(jù)的主程序子程序子程序圖圖5-11 KWIC:共享數(shù)據(jù)解決方案:共享數(shù)據(jù)解決方案清華大學出版社37p(b)解決方案)解決方案2:抽象數(shù)據(jù)類型:抽象數(shù)據(jù)類型清華大學出版社38p(c)解決方案)解決方案3:隱式調(diào)用:隱式調(diào)用p(d)解決方案)解決方案4:管道過濾器:管道過濾器 圖圖5-14 KWIC:管道過濾器方案:管道過濾器方案清華大學出版社39(e)各

30、種方案的比較)各種方案的比較共享共享數(shù)據(jù)數(shù)據(jù)抽象數(shù)據(jù)抽象數(shù)據(jù)類型類型隱式隱式調(diào)用調(diào)用管道過管道過濾器濾器算法變更算法變更-+數(shù)據(jù)表示數(shù)據(jù)表示變更變更-+-功能變更功能變更+-+性能性能+-重用重用+-+清華大學出版社405.3.2案例案例2:儀器軟件:儀器軟件p1. 面向?qū)ο竽P兔嫦驅(qū)ο竽P蛨D圖5-16 示波器:面向?qū)ο竽P褪静ㄆ鳎好嫦驅(qū)ο竽P颓迦A大學出版社41p2. 分層模型分層模型圖圖5-17 示波器分層模型示波器分層模型3.管道過濾器模型管道過濾器模型圖圖5-18 一個管道過濾器模型一個管道過濾器模型清華大學出版社43p4. 改進后的管道過濾器模型改進后的管道過濾器模型圖圖5-19示波器

31、:改造后的管道過濾器模型示波器:改造后的管道過濾器模型清華大學出版社445.4 客戶客戶/服務(wù)器風格服務(wù)器風格p 客戶客戶/服務(wù)器(服務(wù)器(Client/Server,C/S)計算技術(shù)在信息產(chǎn)業(yè))計算技術(shù)在信息產(chǎn)業(yè)中占有重要的地位。網(wǎng)絡(luò)計算經(jīng)歷了從基于宿主機的計算模型到客戶中占有重要的地位。網(wǎng)絡(luò)計算經(jīng)歷了從基于宿主機的計算模型到客戶/服務(wù)器計算模型的演變服務(wù)器計算模型的演變。圖圖5-20 C/S體系結(jié)構(gòu)示意圖體系結(jié)構(gòu)示意圖清華大學出版社455.5 三層三層C/S結(jié)構(gòu)風格結(jié)構(gòu)風格p C/S體系結(jié)構(gòu)具有強大的數(shù)據(jù)操作與事務(wù)處理能力,體系結(jié)構(gòu)具有強大的數(shù)據(jù)操作與事務(wù)處理能力,模型思想簡單,易于人們理

32、解和接受,但隨著企業(yè)規(guī)模的模型思想簡單,易于人們理解和接受,但隨著企業(yè)規(guī)模的日益擴大,軟件的復雜程度不斷提高,傳統(tǒng)的二層日益擴大,軟件的復雜程度不斷提高,傳統(tǒng)的二層C/S結(jié)結(jié)構(gòu)存在諸多局限,三層構(gòu)存在諸多局限,三層C/S體系結(jié)構(gòu)應(yīng)運而生。其結(jié)構(gòu)如體系結(jié)構(gòu)應(yīng)運而生。其結(jié)構(gòu)如圖圖5-21所示。所示。圖圖5-21 三層三層C/S結(jié)構(gòu)示意圖結(jié)構(gòu)示意圖圖圖5-22 三層三層C/S結(jié)構(gòu)的一般處理流程結(jié)構(gòu)的一般處理流程清華大學出版社47p1. 表示層表示層 2. 功能層功能層 3. 數(shù)據(jù)層數(shù)據(jù)層圖圖5-23 三層三層C/S物理結(jié)構(gòu)比較物理結(jié)構(gòu)比較清華大學出版社485.6 B/S風格風格p B/S軟件體系結(jié)構(gòu)

33、,即軟件體系結(jié)構(gòu),即Browser/Server(瀏覽器(瀏覽器/服務(wù)器)結(jié)構(gòu),服務(wù)器)結(jié)構(gòu),是隨著是隨著Internet技術(shù)的興起,對技術(shù)的興起,對C/S體系結(jié)構(gòu)體系結(jié)構(gòu)進行改進后一種結(jié)構(gòu)。在進行改進后一種結(jié)構(gòu)。在B/S體系結(jié)構(gòu)下,用戶體系結(jié)構(gòu)下,用戶界面完全通過界面完全通過WWW瀏覽器實現(xiàn),部分事務(wù)邏瀏覽器實現(xiàn),部分事務(wù)邏輯在前端實現(xiàn),但是主要事務(wù)邏輯在服務(wù)器端實輯在前端實現(xiàn),但是主要事務(wù)邏輯在服務(wù)器端實現(xiàn)。它利用瀏覽器技術(shù),結(jié)合瀏覽器的多種腳本現(xiàn)。它利用瀏覽器技術(shù),結(jié)合瀏覽器的多種腳本語言并通過瀏覽器就實現(xiàn)了原來需要復雜的專用語言并通過瀏覽器就實現(xiàn)了原來需要復雜的專用軟件才能實現(xiàn)的強大功

34、能,是一種全新的軟件體軟件才能實現(xiàn)的強大功能,是一種全新的軟件體系結(jié)構(gòu)。系結(jié)構(gòu)。B/S軟件體系結(jié)構(gòu)圖如圖軟件體系結(jié)構(gòu)圖如圖5-27所示。所示。圖圖5-27 瀏覽器服務(wù)器體系結(jié)構(gòu)圖瀏覽器服務(wù)器體系結(jié)構(gòu)圖清華大學出版社50p B/S與與C/S混合軟件體系結(jié)構(gòu)是一混合軟件體系結(jié)構(gòu)是一種典型的異構(gòu)體系結(jié)構(gòu)。種典型的異構(gòu)體系結(jié)構(gòu)。B/S軟件體系結(jié)軟件體系結(jié)構(gòu),即構(gòu),即Browser/Server(瀏覽器(瀏覽器/服服務(wù)器)結(jié)構(gòu),是隨著務(wù)器)結(jié)構(gòu),是隨著Internet技術(shù)的興技術(shù)的興起,對起,對C/S體系結(jié)構(gòu)的一種變化或者改進體系結(jié)構(gòu)的一種變化或者改進的結(jié)構(gòu)。在的結(jié)構(gòu)。在B/S體系結(jié)構(gòu)下,用戶界面完體系

35、結(jié)構(gòu)下,用戶界面完全通過全通過WWW瀏覽器實現(xiàn),部分事務(wù)邏瀏覽器實現(xiàn),部分事務(wù)邏輯在前端實現(xiàn),但是主要事務(wù)邏輯在服務(wù)輯在前端實現(xiàn),但是主要事務(wù)邏輯在服務(wù)器端實現(xiàn)。器端實現(xiàn)。5.7 C/S與與B/S混合結(jié)構(gòu)風格混合結(jié)構(gòu)風格清華大學出版社515.8 正交軟件體系結(jié)構(gòu)風格正交軟件體系結(jié)構(gòu)風格p5.8.1 正交軟件體系結(jié)構(gòu)的概念正交軟件體系結(jié)構(gòu)的概念p 正交(正交(orthogonal)軟件體系結(jié)構(gòu),由組)軟件體系結(jié)構(gòu),由組織層和線索的構(gòu)件構(gòu)成。層是由一組具有相同抽織層和線索的構(gòu)件構(gòu)成。層是由一組具有相同抽象級別的構(gòu)件構(gòu)成的。線索是子系統(tǒng)的特例,它象級別的構(gòu)件構(gòu)成的。線索是子系統(tǒng)的特例,它由完成不同層

36、次功能的構(gòu)件組成(通過相互調(diào)用由完成不同層次功能的構(gòu)件組成(通過相互調(diào)用來關(guān)聯(lián)),每一條線索完成整個系統(tǒng)中相對獨立來關(guān)聯(lián)),每一條線索完成整個系統(tǒng)中相對獨立的一部分功能。每一條線索的實現(xiàn)與其他線索的的一部分功能。每一條線索的實現(xiàn)與其他線索的實現(xiàn)無關(guān)或關(guān)聯(lián)很少,在同一層中的構(gòu)件之間是實現(xiàn)無關(guān)或關(guān)聯(lián)很少,在同一層中的構(gòu)件之間是不存在相互調(diào)用的。不存在相互調(diào)用的。清華大學出版社52p正交軟件體系結(jié)構(gòu)的主要特征如下:正交軟件體系結(jié)構(gòu)的主要特征如下:p(1)正交軟件體系結(jié)構(gòu)由完成不同功能的)正交軟件體系結(jié)構(gòu)由完成不同功能的n(n1)個線索(子系統(tǒng))組成。)個線索(子系統(tǒng))組成。p(2)系統(tǒng)具有)系統(tǒng)具有

37、m(m1)個不同抽象級別的)個不同抽象級別的層。層。p(3)線索之間是相互獨立的(正交的)。)線索之間是相互獨立的(正交的)。p(4)系統(tǒng)有一個公共驅(qū)動層(一般為最高層,)系統(tǒng)有一個公共驅(qū)動層(一般為最高層,和公共數(shù)據(jù)結(jié)構(gòu)(一般為最低層)。和公共數(shù)據(jù)結(jié)構(gòu)(一般為最低層)。清華大學出版社53p圖圖5-28 正交軟件體系結(jié)構(gòu)框架正交軟件體系結(jié)構(gòu)框架清華大學出版社54p5.8.2正交軟件體系結(jié)構(gòu)的優(yōu)點正交軟件體系結(jié)構(gòu)的優(yōu)點p(1)結(jié)構(gòu)清晰,易于理解。)結(jié)構(gòu)清晰,易于理解。 p(2)易修改,可維護性強。)易修改,可維護性強。 p(3)可移植性強,重用粒度大。)可移植性強,重用粒度大。p p5.8.3正

38、交軟件體系結(jié)構(gòu)的實例正交軟件體系結(jié)構(gòu)的實例清華大學出版社555.9基于層次消息總線的體系結(jié)構(gòu)風格基于層次消息總線的體系結(jié)構(gòu)風格圖圖5-33 HMB風格的系統(tǒng)示意圖風格的系統(tǒng)示意圖清華大學出版社56p5.9.1構(gòu)件模型構(gòu)件模型圖圖5-34 HMB風格的構(gòu)件模型風格的構(gòu)件模型清華大學出版社57p5.9.2構(gòu)件接口構(gòu)件接口p5.9.3消息總線消息總線圖圖5-35 消息總線的結(jié)構(gòu)消息總線的結(jié)構(gòu)清華大學出版社58p5.9.4構(gòu)件靜態(tài)結(jié)構(gòu)構(gòu)件靜態(tài)結(jié)構(gòu)圖圖5-36 系統(tǒng)復合構(gòu)件的靜態(tài)結(jié)構(gòu)示意圍系統(tǒng)復合構(gòu)件的靜態(tài)結(jié)構(gòu)示意圍清華大學出版社59p5.9.5構(gòu)件動態(tài)行為構(gòu)件動態(tài)行為p5.9.6運行時刻的系統(tǒng)演化運行時刻的系統(tǒng)演化p(1)動態(tài)增加或刪除構(gòu)件)動態(tài)增加或刪除構(gòu)件p(2)動態(tài)改變構(gòu)件響應(yīng)的消息類型)動態(tài)改變構(gòu)件響應(yīng)的消息類型p(3)消息過濾)消息過濾清華大學出版社605.10異構(gòu)結(jié)構(gòu)風格異構(gòu)結(jié)構(gòu)風格p5.10.1 使用異構(gòu)結(jié)構(gòu)的原因使用異構(gòu)結(jié)構(gòu)的原因 p 前面介紹和討論了一些所謂的前面介紹和討論了一些所謂的“純純

溫馨提示

  • 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

提交評論