chap03軟件體系結(jié)構(gòu)的風(fēng)格_第1頁
chap03軟件體系結(jié)構(gòu)的風(fēng)格_第2頁
chap03軟件體系結(jié)構(gòu)的風(fēng)格_第3頁
chap03軟件體系結(jié)構(gòu)的風(fēng)格_第4頁
chap03軟件體系結(jié)構(gòu)的風(fēng)格_第5頁
已閱讀5頁,還剩136頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第第3 3章章 軟件體系結(jié)構(gòu)的風(fēng)格軟件體系結(jié)構(gòu)的風(fēng)格 風(fēng)格概述風(fēng)格概述 經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格 案例研究案例研究 C/SC/S風(fēng)格風(fēng)格 瀏覽器瀏覽器/ /服務(wù)器風(fēng)格服務(wù)器風(fēng)格 定義定義第第3 3章章 軟件體系結(jié)構(gòu)風(fēng)格軟件體系結(jié)構(gòu)風(fēng)格3.1 3.1 軟件體系結(jié)構(gòu)風(fēng)格概述軟件體系結(jié)構(gòu)風(fēng)格概述 軟件體系結(jié)構(gòu)風(fēng)格是描述某一特定應(yīng)用領(lǐng)域中系統(tǒng)軟件體系結(jié)構(gòu)風(fēng)格是描述某一特定應(yīng)用領(lǐng)域中系統(tǒng)組織方式的組織方式的慣用模式慣用模式。 體系結(jié)構(gòu)風(fēng)格反映了領(lǐng)域中眾多系統(tǒng)所體系結(jié)構(gòu)風(fēng)格反映了領(lǐng)域中眾多系統(tǒng)所共有的結(jié)構(gòu)共有的結(jié)構(gòu)和語義特性和語義特性,并指導(dǎo)如何將各個模塊和子系統(tǒng)有效地組,并指導(dǎo)如何將各個

2、模塊和子系統(tǒng)有效地組織成一個完整的系統(tǒng)??棾梢粋€完整的系統(tǒng)。 體系結(jié)構(gòu)風(fēng)格組成:體系結(jié)構(gòu)風(fēng)格定義了一個系統(tǒng)體系結(jié)構(gòu)風(fēng)格組成:體系結(jié)構(gòu)風(fēng)格定義了一個系統(tǒng)家族,即一個體系結(jié)構(gòu)風(fēng)格定義家族,即一個體系結(jié)構(gòu)風(fēng)格定義一個詞匯表一個詞匯表和和一組約束一組約束。詞匯表中包含一些構(gòu)件和連接件類型,而這組約束指出詞匯表中包含一些構(gòu)件和連接件類型,而這組約束指出系統(tǒng)是如何將這些構(gòu)件和連接件組合起來的。系統(tǒng)是如何將這些構(gòu)件和連接件組合起來的。 討論體系結(jié)構(gòu)風(fēng)格時要回答的問題討論體系結(jié)構(gòu)風(fēng)格時要回答的問題第第3 3章章 軟件體系結(jié)構(gòu)風(fēng)格軟件體系結(jié)構(gòu)風(fēng)格3.1 3.1 軟件體系結(jié)構(gòu)風(fēng)格概述軟件體系結(jié)構(gòu)風(fēng)格概述 構(gòu)件和連

3、接件的類型是什么?構(gòu)件和連接件的類型是什么? 可容許的結(jié)構(gòu)模式是什么?可容許的結(jié)構(gòu)模式是什么? 基本的計算模型是什么?基本的計算模型是什么? 其使用的常見例子是什么?其使用的常見例子是什么? 使用此風(fēng)格的優(yōu)缺點是什么?使用此風(fēng)格的優(yōu)缺點是什么? 經(jīng)典的體系結(jié)構(gòu)風(fēng)格經(jīng)典的體系結(jié)構(gòu)風(fēng)格 第第3 3章章 軟件體系結(jié)構(gòu)風(fēng)格軟件體系結(jié)構(gòu)風(fēng)格3.1 3.1 軟件體系結(jié)構(gòu)風(fēng)格概述軟件體系結(jié)構(gòu)風(fēng)格概述 數(shù)據(jù)流風(fēng)格:批處理序列;數(shù)據(jù)流風(fēng)格:批處理序列;管道管道/ /過濾器過濾器。 調(diào)用調(diào)用/ /返回風(fēng)格:主程序返回風(fēng)格:主程序/ /子程序;子程序;面向?qū)ο箫L(fēng)格面向?qū)ο箫L(fēng)格;層層次結(jié)構(gòu)次結(jié)構(gòu)。 獨立構(gòu)件風(fēng)格:進(jìn)程

4、通訊;獨立構(gòu)件風(fēng)格:進(jìn)程通訊;事件系統(tǒng)事件系統(tǒng)。 虛擬機(jī)風(fēng)格:虛擬機(jī)風(fēng)格:解釋器解釋器;基于規(guī)則的系統(tǒng)。;基于規(guī)則的系統(tǒng)。 倉庫風(fēng)格:數(shù)據(jù)庫系統(tǒng);超文本系統(tǒng);倉庫風(fēng)格:數(shù)據(jù)庫系統(tǒng);超文本系統(tǒng);黑板系統(tǒng)黑板系統(tǒng)。 管道和過濾器管道和過濾器 第第3 3章章 軟件體系結(jié)構(gòu)風(fēng)格軟件體系結(jié)構(gòu)風(fēng)格3.2 3.2 經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格 管道和過濾器管道和過濾器 第第3 3章章 軟件體系結(jié)構(gòu)風(fēng)格軟件體系結(jié)構(gòu)風(fēng)格3.2 3.2 經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格 管道和過濾器管道和過濾器 第第3 3章章 軟件體系結(jié)構(gòu)風(fēng)格軟件體系結(jié)構(gòu)風(fēng)格3.1 3.1 軟件體系結(jié)構(gòu)風(fēng)格概述軟件體系結(jié)構(gòu)風(fēng)

5、格概述 語境語境:數(shù)據(jù)源源不斷的產(chǎn)生,系統(tǒng)需要對數(shù)據(jù)進(jìn)行若干處理(如:數(shù)據(jù)源源不斷的產(chǎn)生,系統(tǒng)需要對數(shù)據(jù)進(jìn)行若干處理(如分析、計算、轉(zhuǎn)換等)。分析、計算、轉(zhuǎn)換等)。 解決方案:解決方案: 把系統(tǒng)分解成幾個連貫的處理步驟,這些處理步驟之間通過把系統(tǒng)分解成幾個連貫的處理步驟,這些處理步驟之間通過數(shù)據(jù)流連接,一個步驟的輸出是后續(xù)步驟的輸入;數(shù)據(jù)流連接,一個步驟的輸出是后續(xù)步驟的輸入; 每個處理步驟由一個過濾器構(gòu)件(每個處理步驟由一個過濾器構(gòu)件(FilterFilter)實現(xiàn);)實現(xiàn); 處理步驟之間的數(shù)據(jù)流連接由管道(處理步驟之間的數(shù)據(jù)流連接由管道(PipePipe)負(fù)責(zé)。)負(fù)責(zé)。 管道和過濾器管道和

6、過濾器 第第3 3章章 軟件體系結(jié)構(gòu)風(fēng)格軟件體系結(jié)構(gòu)風(fēng)格3.2 3.2 經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格 管道和過濾器風(fēng)格的基本組成管道和過濾器風(fēng)格的基本組成 構(gòu)件構(gòu)件- -過濾器:每個構(gòu)件都有一組輸入和輸出,構(gòu)件讀輸入的數(shù)過濾器:每個構(gòu)件都有一組輸入和輸出,構(gòu)件讀輸入的數(shù)據(jù)流,經(jīng)過內(nèi)部處理,然后產(chǎn)生輸出數(shù)據(jù)流(據(jù)流,經(jīng)過內(nèi)部處理,然后產(chǎn)生輸出數(shù)據(jù)流(計算模型計算模型)。這個過)。這個過程通常通過對程通常通過對輸入流的變換輸入流的變換及及增量計算增量計算來完成,所以在輸入被完全來完成,所以在輸入被完全消費之前,輸出便產(chǎn)生了。消費之前,輸出便產(chǎn)生了。 連接件連接件- -管道:將一個過濾器

7、的輸出傳到另一過濾器的輸入(管道:將一個過濾器的輸出傳到另一過濾器的輸入(計計算模型算模型),管道中轉(zhuǎn)發(fā)的數(shù)據(jù)流是特定類型的對象流。),管道中轉(zhuǎn)發(fā)的數(shù)據(jù)流是特定類型的對象流。 管道和過濾器管道和過濾器 第第3 3章章 軟件體系結(jié)構(gòu)風(fēng)格軟件體系結(jié)構(gòu)風(fēng)格3.2 3.2 經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格 過濾器對數(shù)據(jù)流的五種轉(zhuǎn)換類型過濾器對數(shù)據(jù)流的五種轉(zhuǎn)換類型 目標(biāo):將源數(shù)據(jù)變換成目標(biāo)數(shù)據(jù)。目標(biāo):將源數(shù)據(jù)變換成目標(biāo)數(shù)據(jù)。 從數(shù)據(jù)流到數(shù)據(jù)流的轉(zhuǎn)換:從數(shù)據(jù)流到數(shù)據(jù)流的轉(zhuǎn)換: 通過計算和增加信息來豐富數(shù)據(jù);通過計算和增加信息來豐富數(shù)據(jù); 通過濃縮和刪減信息來精煉數(shù)據(jù);通過濃縮和刪減信息來精煉數(shù)據(jù);

8、 通過改變數(shù)據(jù)表示方式來轉(zhuǎn)化數(shù)據(jù);通過改變數(shù)據(jù)表示方式來轉(zhuǎn)化數(shù)據(jù); 將一個數(shù)據(jù)流分解成多個數(shù)據(jù)流;將一個數(shù)據(jù)流分解成多個數(shù)據(jù)流; 將多個數(shù)據(jù)流合并成一個數(shù)據(jù)流。將多個數(shù)據(jù)流合并成一個數(shù)據(jù)流。 管道和過濾器管道和過濾器 第第3 3章章 軟件體系結(jié)構(gòu)風(fēng)格軟件體系結(jié)構(gòu)風(fēng)格3.2 3.2 經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格 過濾器讀取和處理數(shù)據(jù)流的方式過濾器讀取和處理數(shù)據(jù)流的方式 遞增的讀取和消費數(shù)據(jù)流:即在輸入被完全消費前,輸出便產(chǎn)遞增的讀取和消費數(shù)據(jù)流:即在輸入被完全消費前,輸出便產(chǎn)生了生了 管道和過濾器管道和過濾器 第第3 3章章 軟件體系結(jié)構(gòu)風(fēng)格軟件體系結(jié)構(gòu)風(fēng)格3.2 3.2 經(jīng)典軟件體

9、系結(jié)構(gòu)風(fēng)格經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格 過濾器的基本特征:過濾器的基本特征: 過濾器是獨立實體,過濾器之間不共享狀態(tài)過濾器是獨立實體,過濾器之間不共享狀態(tài) 無上下文信息無上下文信息 不保留狀態(tài)不保留狀態(tài) 對其他過濾器無任何了解對其他過濾器無任何了解 可使用數(shù)據(jù)緩沖區(qū)保存數(shù)據(jù)流可使用數(shù)據(jù)緩沖區(qū)保存數(shù)據(jù)流 管道和過濾器管道和過濾器 第第3 3章章 軟件體系結(jié)構(gòu)風(fēng)格軟件體系結(jié)構(gòu)風(fēng)格3.2 3.2 經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格 管道:管道: 作用作用- -在過濾器之間傳送數(shù)據(jù),具有以下特征:在過濾器之間傳送數(shù)據(jù),具有以下特征: 單向流單向流 可以具有緩沖區(qū)可以具有緩沖區(qū) 管道形成傳輸圖管道形成傳輸

10、圖 不同管道中流動的數(shù)據(jù)流具有不同格式不同管道中流動的數(shù)據(jù)流具有不同格式 原因:數(shù)據(jù)在流過每個過濾器時,由過濾器進(jìn)行豐富、提煉、原因:數(shù)據(jù)在流過每個過濾器時,由過濾器進(jìn)行豐富、提煉、轉(zhuǎn)化、融合、分解等操作,因而發(fā)生變化轉(zhuǎn)化、融合、分解等操作,因而發(fā)生變化 管道和過濾器管道和過濾器 第第3 3章章 軟件體系結(jié)構(gòu)風(fēng)格軟件體系結(jié)構(gòu)風(fēng)格3.2 3.2 經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格 數(shù)據(jù)流的分類:是什么力量驅(qū)動數(shù)據(jù)流在管道中傳輸?數(shù)據(jù)流的分類:是什么力量驅(qū)動數(shù)據(jù)流在管道中傳輸? 推式推式pushpush:前面的過濾器將新產(chǎn)生的數(shù)據(jù)推入管道:前面的過濾器將新產(chǎn)生的數(shù)據(jù)推入管道 拉式拉式pull

11、pull:隨后的過濾器從管道中拉出所需數(shù)據(jù):隨后的過濾器從管道中拉出所需數(shù)據(jù) 推拉式:過濾器以循環(huán)的方式,從管道中拉出其輸入數(shù)據(jù),并推拉式:過濾器以循環(huán)的方式,從管道中拉出其輸入數(shù)據(jù),并將其處理產(chǎn)生的數(shù)據(jù)壓入后續(xù)管道將其處理產(chǎn)生的數(shù)據(jù)壓入后續(xù)管道 管道和過濾器管道和過濾器 第第3 3章章 軟件體系結(jié)構(gòu)風(fēng)格軟件體系結(jié)構(gòu)風(fēng)格3.2 3.2 經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格 過濾器的分類:主動和被動過濾器的分類:主動和被動 主動過濾器:驅(qū)動數(shù)據(jù)流動,主動過濾器:驅(qū)動數(shù)據(jù)流動,pull + pushpull + push 被動過濾器:被管道中的輸入或輸出數(shù)據(jù)流所驅(qū)動被動過濾器:被管道中的輸入或

12、輸出數(shù)據(jù)流所驅(qū)動 注意:系統(tǒng)中至少有一個主動過濾器注意:系統(tǒng)中至少有一個主動過濾器(可以來自外部環(huán)境,如(可以來自外部環(huán)境,如用戶輸入)用戶輸入) 管道和過濾器管道和過濾器 第第3 3章章 軟件體系結(jié)構(gòu)風(fēng)格軟件體系結(jié)構(gòu)風(fēng)格3.2 3.2 經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格 被動過濾器所采用的兩被動過濾器所采用的兩種策略種策略 采用拉式策略的被動過濾采用拉式策略的被動過濾器:在后續(xù)過濾器的拉動作用器:在后續(xù)過濾器的拉動作用下執(zhí)行下執(zhí)行 采用推式策略的被動過濾采用推式策略的被動過濾器:在前續(xù)過濾器的推動作用器:在前續(xù)過濾器的推動作用下執(zhí)行下執(zhí)行 管道和過濾器管道和過濾器 第第3 3章章 軟件

13、體系結(jié)構(gòu)風(fēng)格軟件體系結(jié)構(gòu)風(fēng)格3.2 3.2 經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格 采用推式策略的被動過濾器:采用推式策略的被動過濾器: 管道和過濾器管道和過濾器 第第3 3章章 軟件體系結(jié)構(gòu)風(fēng)格軟件體系結(jié)構(gòu)風(fēng)格3.2 3.2 經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格 采用拉式策略的被動過濾器:采用拉式策略的被動過濾器: 管道和過濾器管道和過濾器 第第3 3章章 軟件體系結(jié)構(gòu)風(fēng)格軟件體系結(jié)構(gòu)風(fēng)格3.2 3.2 經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格 混合型的管道過濾器:混合型的管道過濾器: 管道和過濾器管道和過濾器 第第3 3章章 軟件體系結(jié)構(gòu)風(fēng)格軟件體系結(jié)構(gòu)風(fēng)格3.2 3.2 經(jīng)典軟件體

14、系結(jié)構(gòu)風(fēng)格經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格 帶有緩沖區(qū)的帶有緩沖區(qū)的混合型管道過濾器:混合型管道過濾器: 管道和過濾器管道和過濾器 第第3 3章章 軟件體系結(jié)構(gòu)風(fēng)格軟件體系結(jié)構(gòu)風(fēng)格3.2 3.2 經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格 過濾器的狀態(tài)過濾器的狀態(tài) 停止?fàn)顟B(tài)停止?fàn)顟B(tài):表示過濾器處于待啟動狀態(tài),當(dāng)外部啟動過濾:表示過濾器處于待啟動狀態(tài),當(dāng)外部啟動過濾器,過濾器處于處理狀態(tài);器,過濾器處于處理狀態(tài); 處理狀態(tài)處理狀態(tài):表示過濾器正在處理輸入隊列中的數(shù)據(jù);:表示過濾器正在處理輸入隊列中的數(shù)據(jù); 等待狀態(tài)等待狀態(tài):表示輸入數(shù)據(jù)隊列為空:表示輸入數(shù)據(jù)隊列為空 管道和過濾器風(fēng)格的優(yōu)點管道和過濾器風(fēng)格的優(yōu)

15、點 第第3 3章章 軟件體系結(jié)構(gòu)風(fēng)格軟件體系結(jié)構(gòu)風(fēng)格3.2 3.2 經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格 使得軟構(gòu)件具有良好的使得軟構(gòu)件具有良好的隱蔽性和高內(nèi)聚、低耦合隱蔽性和高內(nèi)聚、低耦合的特點;的特點; 允許設(shè)計者將整個系統(tǒng)的輸入允許設(shè)計者將整個系統(tǒng)的輸入/ /輸出行為看成是多個過濾器的輸出行為看成是多個過濾器的行為的行為的簡單合成簡單合成; 支持軟件重用支持軟件重用。只要提供適合在兩個過濾器之間傳送的數(shù)據(jù),。只要提供適合在兩個過濾器之間傳送的數(shù)據(jù),任何兩個過濾器都可被連接起來;任何兩個過濾器都可被連接起來; 系統(tǒng)維護(hù)和增強(qiáng)系統(tǒng)性能簡單系統(tǒng)維護(hù)和增強(qiáng)系統(tǒng)性能簡單。新的過濾器可以添加到現(xiàn)

16、有系。新的過濾器可以添加到現(xiàn)有系統(tǒng)中來;舊的可以被改進(jìn)的過濾器替換掉;統(tǒng)中來;舊的可以被改進(jìn)的過濾器替換掉; 允許對一些如吞吐量、死鎖等屬性的分析;允許對一些如吞吐量、死鎖等屬性的分析; 支持并行執(zhí)行支持并行執(zhí)行。每個過濾器是作為一個單獨的任務(wù)完成,因此。每個過濾器是作為一個單獨的任務(wù)完成,因此可與其它任務(wù)并行執(zhí)行??膳c其它任務(wù)并行執(zhí)行。 管道和過濾器的缺點管道和過濾器的缺點 第第3 3章章 軟件體系結(jié)構(gòu)風(fēng)格軟件體系結(jié)構(gòu)風(fēng)格3.2 3.2 經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格 通常導(dǎo)致進(jìn)程成為批處理的結(jié)構(gòu)。通常導(dǎo)致進(jìn)程成為批處理的結(jié)構(gòu)。這是因為雖然過濾器可增這是因為雖然過濾器可增量式地處理

17、數(shù)據(jù),但它們是獨立的,所以設(shè)計者必須將每個過量式地處理數(shù)據(jù),但它們是獨立的,所以設(shè)計者必須將每個過濾器看成一個完整的從輸入到輸出的轉(zhuǎn)換;濾器看成一個完整的從輸入到輸出的轉(zhuǎn)換; 不適合處理交互的應(yīng)用。不適合處理交互的應(yīng)用。當(dāng)需要增量地顯示改變時,這個問當(dāng)需要增量地顯示改變時,這個問題尤為嚴(yán)重;題尤為嚴(yán)重; 因為在數(shù)據(jù)傳輸上沒有通用的標(biāo)準(zhǔn),因為在數(shù)據(jù)傳輸上沒有通用的標(biāo)準(zhǔn),每個過濾器都增加了解每個過濾器都增加了解析和合成數(shù)據(jù)的工作,這樣就導(dǎo)致了系統(tǒng)性能下降析和合成數(shù)據(jù)的工作,這樣就導(dǎo)致了系統(tǒng)性能下降,并增加了,并增加了編寫過濾器的復(fù)雜性。絕大部分時間都消耗在格式轉(zhuǎn)換上。編寫過濾器的復(fù)雜性。絕大部分時

18、間都消耗在格式轉(zhuǎn)換上。 管道和過濾器例子管道和過濾器例子-媒體播放器媒體播放器第第3 3章章 軟件體系結(jié)構(gòu)風(fēng)格軟件體系結(jié)構(gòu)風(fēng)格3.2 3.2 經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格 管道和過濾器例子管道和過濾器例子通訊設(shè)備通訊設(shè)備第第3 3章章 軟件體系結(jié)構(gòu)風(fēng)格軟件體系結(jié)構(gòu)風(fēng)格3.2 3.2 經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格 管道和過濾器例子管道和過濾器例子編譯器編譯器第第3 3章章 軟件體系結(jié)構(gòu)風(fēng)格軟件體系結(jié)構(gòu)風(fēng)格3.2 3.2 經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格 輸入:預(yù)處理之后的源代碼。輸入:預(yù)處理之后的源代碼。 詞法分析:負(fù)責(zé)將源程序分解成一個一個的詞法分析:負(fù)責(zé)將源程

19、序分解成一個一個的tokentoken,這些,這些tokentoken是組是組成源程序的基本單元。成源程序的基本單元。 語法分析:把詞法分析得到的語法分析:把詞法分析得到的tokentoken解析成語法樹。解析成語法樹。 語義分析:對語法樹進(jìn)行類型檢查等語義分析。語義分析:對語法樹進(jìn)行類型檢查等語義分析。 代碼優(yōu)化:對語法樹進(jìn)行重組和修改,以優(yōu)化代碼的速度和大小。代碼優(yōu)化:對語法樹進(jìn)行重組和修改,以優(yōu)化代碼的速度和大小。 代碼產(chǎn)生:根據(jù)語法樹產(chǎn)生匯編代碼。代碼產(chǎn)生:根據(jù)語法樹產(chǎn)生匯編代碼。 輸出:匯編代碼。輸出:匯編代碼。 管道和過濾器例子管道和過濾器例子Unix ShellUnix Shel

20、l命令命令第第3 3章章 軟件體系結(jié)構(gòu)風(fēng)格軟件體系結(jié)構(gòu)風(fēng)格3.2 3.2 經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格 輸入:輸入:cat a.txt | wc-w | lprcat a.txt | wc-w | lpr CatCat命令,輸出文件命令,輸出文件 WcWc,統(tǒng)計輸入流中單詞的個數(shù),統(tǒng)計輸入流中單詞的個數(shù) LprLpr,打印命令,打印命令 功能:統(tǒng)計功能:統(tǒng)計a.txta.txt中單詞的個數(shù)并打印出來中單詞的個數(shù)并打印出來 數(shù)據(jù)抽象和面向?qū)ο箫L(fēng)格數(shù)據(jù)抽象和面向?qū)ο箫L(fēng)格 第第3 3章章 軟件體系結(jié)構(gòu)風(fēng)格軟件體系結(jié)構(gòu)風(fēng)格3.2 3.2 經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格 系統(tǒng)給看做

21、對象的集合;系統(tǒng)給看做對象的集合; 每個對象都有自己的功能集合,數(shù)據(jù)及作用在數(shù)據(jù)每個對象都有自己的功能集合,數(shù)據(jù)及作用在數(shù)據(jù)上的操作被封裝成抽象數(shù)據(jù)類型上的操作被封裝成抽象數(shù)據(jù)類型-對象對象 數(shù)據(jù)抽象和面向?qū)ο箫L(fēng)格數(shù)據(jù)抽象和面向?qū)ο箫L(fēng)格 第第3 3章章 軟件體系結(jié)構(gòu)風(fēng)格軟件體系結(jié)構(gòu)風(fēng)格3.2 3.2 經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格 面向過程和面向?qū)ο蟮膮^(qū)別面向過程和面向?qū)ο蟮膮^(qū)別 數(shù)據(jù)抽象和面向?qū)ο箫L(fēng)格數(shù)據(jù)抽象和面向?qū)ο箫L(fēng)格 第第3 3章章 軟件體系結(jié)構(gòu)風(fēng)格軟件體系結(jié)構(gòu)風(fēng)格3.2 3.2 經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格 面向?qū)ο蟮脑硎敲嫦驅(qū)ο蟮脑硎浅橄髷?shù)據(jù)類型(抽象數(shù)據(jù)

22、類型(ADT),ADT是一種數(shù)學(xué)是一種數(shù)學(xué)規(guī)約,包含一組數(shù)據(jù)和作用在數(shù)據(jù)上的一組操作,能實現(xiàn)對用規(guī)約,包含一組數(shù)據(jù)和作用在數(shù)據(jù)上的一組操作,能實現(xiàn)對用戶信息的隱藏,只對外提供必要的接口。戶信息的隱藏,只對外提供必要的接口。 這種風(fēng)格的這種風(fēng)格的構(gòu)件構(gòu)件是是對象對象,或者說是,或者說是抽象數(shù)據(jù)類型的實例抽象數(shù)據(jù)類型的實例。 連接件連接件:對象之間通過:對象之間通過功能與函數(shù)調(diào)用功能與函數(shù)調(diào)用實現(xiàn)交互。實現(xiàn)交互。 面向?qū)ο笙到y(tǒng)的優(yōu)點面向?qū)ο笙到y(tǒng)的優(yōu)點第第3 3章章 軟件體系結(jié)構(gòu)風(fēng)格軟件體系結(jié)構(gòu)風(fēng)格3.2 3.2 經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格 復(fù)用和維護(hù):利用封裝和聚合提高生產(chǎn)力;復(fù)用和

23、維護(hù):利用封裝和聚合提高生產(chǎn)力; 反映現(xiàn)實世界;反映現(xiàn)實世界; 更容易的分解系統(tǒng)更容易的分解系統(tǒng) 面向?qū)ο笙到y(tǒng)的缺點面向?qū)ο笙到y(tǒng)的缺點第第3 3章章 軟件體系結(jié)構(gòu)風(fēng)格軟件體系結(jié)構(gòu)風(fēng)格3.2 3.2 經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格 為了使一個對象和另一個對象通過過程調(diào)用等進(jìn)為了使一個對象和另一個對象通過過程調(diào)用等進(jìn)行交互,必須知道對象的標(biāo)識。只要一個對象的標(biāo)識行交互,必須知道對象的標(biāo)識。只要一個對象的標(biāo)識改變了,就必須修改所有其他明確調(diào)用它的對象;改變了,就必須修改所有其他明確調(diào)用它的對象; 繼承引起復(fù)雜性,關(guān)鍵系統(tǒng)中慎用。繼承引起復(fù)雜性,關(guān)鍵系統(tǒng)中慎用。 基于事件的隱式調(diào)用基于事件的

24、隱式調(diào)用 第第3 3章章 軟件體系結(jié)構(gòu)風(fēng)格軟件體系結(jié)構(gòu)風(fēng)格3.2 3.2 經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格 基本思想:構(gòu)件基本思想:構(gòu)件不直接調(diào)用不直接調(diào)用一個過程,而是一個過程,而是觸發(fā)或廣播一觸發(fā)或廣播一個或多個事件個或多個事件。系統(tǒng)中的其它構(gòu)件中的過程。系統(tǒng)中的其它構(gòu)件中的過程在一個或多個事件在一個或多個事件中注冊中注冊,當(dāng)一個事件被觸發(fā),系統(tǒng)自動調(diào)用在這個事件中注冊,當(dāng)一個事件被觸發(fā),系統(tǒng)自動調(diào)用在這個事件中注冊的所有過程,這樣,的所有過程,這樣,一個事件的觸發(fā)就導(dǎo)致了另一模塊中的過一個事件的觸發(fā)就導(dǎo)致了另一模塊中的過程的調(diào)用。程的調(diào)用。 這種風(fēng)格的這種風(fēng)格的主要特點是事件的觸

25、發(fā)者并不知道哪些構(gòu)件會主要特點是事件的觸發(fā)者并不知道哪些構(gòu)件會被這些事件影響被這些事件影響。 這樣不能假定構(gòu)件的處理順序,甚至不知道哪些過程會被這樣不能假定構(gòu)件的處理順序,甚至不知道哪些過程會被調(diào)用;調(diào)用; 各個構(gòu)件之間彼此無直接的連接關(guān)系,彼此獨立,通過對各個構(gòu)件之間彼此無直接的連接關(guān)系,彼此獨立,通過對事件的發(fā)布和注冊實現(xiàn)關(guān)聯(lián)。事件的發(fā)布和注冊實現(xiàn)關(guān)聯(lián)。 基于事件的隱式調(diào)用基于事件的隱式調(diào)用第第3 3章章 軟件體系結(jié)構(gòu)風(fēng)格軟件體系結(jié)構(gòu)風(fēng)格3.2 3.2 經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格 事件系統(tǒng)的基本構(gòu)成和工作原理事件系統(tǒng)的基本構(gòu)成和工作原理 基于事件的隱式調(diào)用基于事件的隱式調(diào)用第

26、第3 3章章 軟件體系結(jié)構(gòu)風(fēng)格軟件體系結(jié)構(gòu)風(fēng)格3.2 3.2 經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格 事件系統(tǒng)的基本構(gòu)成事件系統(tǒng)的基本構(gòu)成 構(gòu)件:對象或過程,并提供以下元素構(gòu)件:對象或過程,并提供以下元素 過程或函數(shù),充當(dāng)事件源或事件處理器的角色過程或函數(shù),充當(dāng)事件源或事件處理器的角色 事件事件 基于事件的隱式調(diào)用基于事件的隱式調(diào)用第第3 3章章 軟件體系結(jié)構(gòu)風(fēng)格軟件體系結(jié)構(gòu)風(fēng)格3.2 3.2 經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格 事件系統(tǒng)的連接機(jī)制事件系統(tǒng)的連接機(jī)制 過程(事件過程器)向特定事件注冊;過程(事件過程器)向特定事件注冊; 構(gòu)件發(fā)布事件;構(gòu)件發(fā)布事件; 當(dāng)某些事件發(fā)布時,向

27、其注冊的過程被隱式調(diào)用;當(dāng)某些事件發(fā)布時,向其注冊的過程被隱式調(diào)用; 調(diào)用的次序是不確定的。調(diào)用的次序是不確定的。 基于事件的隱式調(diào)用基于事件的隱式調(diào)用第第3 3章章 軟件體系結(jié)構(gòu)風(fēng)格軟件體系結(jié)構(gòu)風(fēng)格3.2 3.2 經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格 事件系統(tǒng)的分類事件系統(tǒng)的分類- -按調(diào)度策略進(jìn)行分類按調(diào)度策略進(jìn)行分類 基于事件的隱式調(diào)用基于事件的隱式調(diào)用第第3 3章章 軟件體系結(jié)構(gòu)風(fēng)格軟件體系結(jié)構(gòu)風(fēng)格3.2 3.2 經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格 事件派遣模塊事件派遣模塊- -廣播式廣播式 基于事件的隱式調(diào)用基于事件的隱式調(diào)用第第3 3章章 軟件體系結(jié)構(gòu)風(fēng)格軟件體系結(jié)構(gòu)風(fēng)格

28、3.2 3.2 經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格 事件派遣模塊事件派遣模塊- -選擇廣播式選擇廣播式 基于事件的隱式調(diào)用基于事件的隱式調(diào)用第第3 3章章 軟件體系結(jié)構(gòu)風(fēng)格軟件體系結(jié)構(gòu)風(fēng)格3.2 3.2 經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格 選擇廣播式選擇廣播式- -點對點點對點 基于事件的隱式調(diào)用基于事件的隱式調(diào)用第第3 3章章 軟件體系結(jié)構(gòu)風(fēng)格軟件體系結(jié)構(gòu)風(fēng)格3.2 3.2 經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格 選擇廣播式選擇廣播式- -點對點點對點 系統(tǒng)安裝并配置一個隊列管理器,并定義一個命名的消息隊系統(tǒng)安裝并配置一個隊列管理器,并定義一個命名的消息隊列;列; 某個應(yīng)用向消

29、息隊列注冊,以監(jiān)聽并處理消息隊列中的事件;某個應(yīng)用向消息隊列注冊,以監(jiān)聽并處理消息隊列中的事件; 其他應(yīng)用鏈接到該隊列并向其中發(fā)布事件;其他應(yīng)用鏈接到該隊列并向其中發(fā)布事件; 隊列管理器存儲這些消息,直到接收端的應(yīng)用連接到隊列,隊列管理器存儲這些消息,直到接收端的應(yīng)用連接到隊列,取回這些消息并加以處理;取回這些消息并加以處理; 消息只能夠被唯一的消費者所消費,消費后從隊列中刪除。消息只能夠被唯一的消費者所消費,消費后從隊列中刪除。 基于事件的隱式調(diào)用基于事件的隱式調(diào)用第第3 3章章 軟件體系結(jié)構(gòu)風(fēng)格軟件體系結(jié)構(gòu)風(fēng)格3.2 3.2 經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格 選擇廣播式選擇廣播式-

30、 -發(fā)布發(fā)布/ /訂閱訂閱 事件發(fā)布者向主題發(fā)布事件,事件訂閱者向主題訂閱事件,事件發(fā)布者向主題發(fā)布事件,事件訂閱者向主題訂閱事件,一個事件可以被多個訂閱者消費,事件發(fā)送給訂閱者后不會立一個事件可以被多個訂閱者消費,事件發(fā)送給訂閱者后不會立即刪除,即刪除,topictopic會在事件過期后再刪除。會在事件過期后再刪除。 基于事件的隱式調(diào)用基于事件的隱式調(diào)用第第3 3章章 軟件體系結(jié)構(gòu)風(fēng)格軟件體系結(jié)構(gòu)風(fēng)格3.2 3.2 經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格 無獨立調(diào)度模塊的事件系統(tǒng)無獨立調(diào)度模塊的事件系統(tǒng) 被稱為被觀察者被稱為被觀察者/ /觀察者(觀察者(Observer/Observabl

31、eObserver/Observable);); 每個模塊都允許其他模塊對自己所發(fā)布的事件感興趣;每個模塊都允許其他模塊對自己所發(fā)布的事件感興趣; 當(dāng)某一模塊發(fā)出事件時,自動將事件發(fā)布給注冊過此事件的當(dāng)某一模塊發(fā)出事件時,自動將事件發(fā)布給注冊過此事件的模塊。模塊。 基于事件的隱式調(diào)用基于事件的隱式調(diào)用第第3 3章章 軟件體系結(jié)構(gòu)風(fēng)格軟件體系結(jié)構(gòu)風(fēng)格3.2 3.2 經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格 無獨立調(diào)度模塊的事件系統(tǒng)無獨立調(diào)度模塊的事件系統(tǒng) 基于事件的隱式調(diào)用基于事件的隱式調(diào)用第第3 3章章 軟件體系結(jié)構(gòu)風(fēng)格軟件體系結(jié)構(gòu)風(fēng)格3.2 3.2 經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格

32、優(yōu)點:優(yōu)點: 支持支持隱式調(diào)用隱式調(diào)用,無需事先設(shè)定調(diào)用次序;,無需事先設(shè)定調(diào)用次序; 異步執(zhí)行異步執(zhí)行,不必同步等待執(zhí)行結(jié)果;,不必同步等待執(zhí)行結(jié)果; 為為軟件重用軟件重用提供了強(qiáng)大的支持。當(dāng)需要將一個構(gòu)件加入現(xiàn)存提供了強(qiáng)大的支持。當(dāng)需要將一個構(gòu)件加入現(xiàn)存系統(tǒng)中時,只需將它注冊到系統(tǒng)的事件中。系統(tǒng)中時,只需將它注冊到系統(tǒng)的事件中。 為為系統(tǒng)動態(tài)演化系統(tǒng)動態(tài)演化帶來了方便。構(gòu)件獨立存在,當(dāng)用一個構(gòu)件帶來了方便。構(gòu)件獨立存在,當(dāng)用一個構(gòu)件代替另一個構(gòu)件時,不會影響到其它構(gòu)件的接口。代替另一個構(gòu)件時,不會影響到其它構(gòu)件的接口。 健壯性健壯性:一個構(gòu)件出錯并不會影響其他構(gòu)件:一個構(gòu)件出錯并不會影響其

33、他構(gòu)件 基于事件的隱式調(diào)用基于事件的隱式調(diào)用第第3 3章章 軟件體系結(jié)構(gòu)風(fēng)格軟件體系結(jié)構(gòu)風(fēng)格3.2 3.2 經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格 缺點:缺點: 構(gòu)件放棄了對構(gòu)件放棄了對系統(tǒng)計算的控制系統(tǒng)計算的控制。一個構(gòu)件觸發(fā)一個事件時,。一個構(gòu)件觸發(fā)一個事件時,不能確定其它構(gòu)件是否會響應(yīng)它。而且即使它知道事件注冊了不能確定其它構(gòu)件是否會響應(yīng)它。而且即使它知道事件注冊了哪些構(gòu)件的構(gòu)成,它也不能保證這些過程被調(diào)用的順序。哪些構(gòu)件的構(gòu)成,它也不能保證這些過程被調(diào)用的順序。 數(shù)據(jù)交換的問題數(shù)據(jù)交換的問題。數(shù)據(jù)可通過事件在系統(tǒng)中直接傳遞(無調(diào)。數(shù)據(jù)可通過事件在系統(tǒng)中直接傳遞(無調(diào)度模塊時),而其他

34、時候數(shù)據(jù)則需要調(diào)度模塊傳遞。在這些情度模塊時),而其他時候數(shù)據(jù)則需要調(diào)度模塊傳遞。在這些情況下,全局性能和資源管理便成了問題。況下,全局性能和資源管理便成了問題。 系統(tǒng)的系統(tǒng)的驗證和調(diào)試驗證和調(diào)試變得困難。變得困難。 基于事件的隱式調(diào)用舉例基于事件的隱式調(diào)用舉例-debugger-debugger 第第3 3章章 軟件體系結(jié)構(gòu)風(fēng)格軟件體系結(jié)構(gòu)風(fēng)格3.2 3.2 經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格 基于事件的隱式調(diào)用舉例基于事件的隱式調(diào)用舉例-debugger-debugger 第第3 3章章 軟件體系結(jié)構(gòu)風(fēng)格軟件體系結(jié)構(gòu)風(fēng)格3.2 3.2 經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格 基于事

35、件的隱式調(diào)用舉例基于事件的隱式調(diào)用舉例-JAVA-JAVA第第3 3章章 軟件體系結(jié)構(gòu)風(fēng)格軟件體系結(jié)構(gòu)風(fēng)格3.2 3.2 經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格 基于事件的隱式調(diào)用舉例基于事件的隱式調(diào)用舉例-MVC-MVC第第3 3章章 軟件體系結(jié)構(gòu)風(fēng)格軟件體系結(jié)構(gòu)風(fēng)格3.2 3.2 經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格 分層系統(tǒng)分層系統(tǒng) 第第3 3章章 軟件體系結(jié)構(gòu)風(fēng)格軟件體系結(jié)構(gòu)風(fēng)格3.2 3.2 經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格 在層次系統(tǒng)中,系統(tǒng)被組織成若干個層次,每個層次由一系列在層次系統(tǒng)中,系統(tǒng)被組織成若干個層次,每個層次由一系列構(gòu)件組成。構(gòu)件組成。 下層構(gòu)件為上層構(gòu)

36、件服務(wù)下層構(gòu)件為上層構(gòu)件服務(wù) 上層構(gòu)件被看做下層構(gòu)件的客戶上層構(gòu)件被看做下層構(gòu)件的客戶 分層系統(tǒng)分層系統(tǒng) 第第3 3章章 軟件體系結(jié)構(gòu)風(fēng)格軟件體系結(jié)構(gòu)風(fēng)格3.2 3.2 經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格 越靠近底層(硬件和越靠近底層(硬件和OSOS),抽象級別越高,越通用;),抽象級別越高,越通用;越靠近頂層(用戶),抽象級別越低,越具體。越靠近頂層(用戶),抽象級別越低,越具體。 分層系統(tǒng)分層系統(tǒng) 第第3 3章章 軟件體系結(jié)構(gòu)風(fēng)格軟件體系結(jié)構(gòu)風(fēng)格3.2 3.2 經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格 分層系統(tǒng)的構(gòu)成:分層系統(tǒng)的構(gòu)成: 構(gòu)件:各層次內(nèi)部包含的構(gòu)件構(gòu)件:各層次內(nèi)部包含的

37、構(gòu)件 連接件:層間的交互協(xié)議連接件:層間的交互協(xié)議 拓?fù)浣Y(jié)構(gòu):分層拓?fù)浣Y(jié)構(gòu):分層 拓?fù)浼s束:對相鄰層交互的約束拓?fù)浼s束:對相鄰層交互的約束 分層系統(tǒng)的優(yōu)點分層系統(tǒng)的優(yōu)點 第第3 3章章 軟件體系結(jié)構(gòu)風(fēng)格軟件體系結(jié)構(gòu)風(fēng)格3.2 3.2 經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格 支持基于支持基于抽象程度遞增的系統(tǒng)設(shè)計抽象程度遞增的系統(tǒng)設(shè)計,使設(shè)計者可以把一個復(fù),使設(shè)計者可以把一個復(fù)雜系統(tǒng)按遞增的步驟進(jìn)行分解;雜系統(tǒng)按遞增的步驟進(jìn)行分解; 支持功能增強(qiáng)支持功能增強(qiáng),因為每一層至多和相鄰的上下層交互,因此,因為每一層至多和相鄰的上下層交互,因此功能的改變最多影響相鄰的上下層;功能的改變最多影響相鄰的上

38、下層; 支持重用支持重用。只要提供的服務(wù)接口定義不變,同一層的不同實。只要提供的服務(wù)接口定義不變,同一層的不同實現(xiàn)可以交換使用。這樣,就可以定義一組標(biāo)準(zhǔn)的接口,而允許現(xiàn)可以交換使用。這樣,就可以定義一組標(biāo)準(zhǔn)的接口,而允許各種不同的實現(xiàn)方法;各種不同的實現(xiàn)方法; 對標(biāo)準(zhǔn)化的支持對標(biāo)準(zhǔn)化的支持。清晰定義并廣泛接受的抽象層次能促進(jìn)實。清晰定義并廣泛接受的抽象層次能促進(jìn)實現(xiàn)標(biāo)準(zhǔn)化的任務(wù)和接口開發(fā),同樣接口的不同實現(xiàn)可以互換。現(xiàn)標(biāo)準(zhǔn)化的任務(wù)和接口開發(fā),同樣接口的不同實現(xiàn)可以互換。 分層系統(tǒng)的缺點分層系統(tǒng)的缺點 第第3 3章章 軟件體系結(jié)構(gòu)風(fēng)格軟件體系結(jié)構(gòu)風(fēng)格3.2 3.2 經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格經(jīng)典軟件體

39、系結(jié)構(gòu)風(fēng)格 并不是每個系統(tǒng)都可以很容易地劃分為分層的模并不是每個系統(tǒng)都可以很容易地劃分為分層的模式,甚至即使一個系統(tǒng)的邏輯結(jié)構(gòu)是層次化的,出于式,甚至即使一個系統(tǒng)的邏輯結(jié)構(gòu)是層次化的,出于對系統(tǒng)性能的考慮,系統(tǒng)設(shè)計師不得不把一些低級或?qū)ο到y(tǒng)性能的考慮,系統(tǒng)設(shè)計師不得不把一些低級或高級的功能綜合起來;高級的功能綜合起來; 效率的降低;效率的降低; 很難找到一個合適的、正確的層次抽象方法。很難找到一個合適的、正確的層次抽象方法。 分層系統(tǒng)舉例分層系統(tǒng)舉例UnixUnix操作系統(tǒng)操作系統(tǒng) 第第3 3章章 軟件體系結(jié)構(gòu)風(fēng)格軟件體系結(jié)構(gòu)風(fēng)格3.2 3.2 經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格 分層系

40、統(tǒng)舉例分層系統(tǒng)舉例-OSI-OSI第第3 3章章 軟件體系結(jié)構(gòu)風(fēng)格軟件體系結(jié)構(gòu)風(fēng)格3.2 3.2 經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格 國際標(biāo)準(zhǔn)國際標(biāo)準(zhǔn)(7層)層)因特網(wǎng)標(biāo)準(zhǔn)因特網(wǎng)標(biāo)準(zhǔn)(4層)層) 分層系統(tǒng)舉例分層系統(tǒng)舉例C/SC/S第第3 3章章 軟件體系結(jié)構(gòu)風(fēng)格軟件體系結(jié)構(gòu)風(fēng)格3.2 3.2 經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格 分層系統(tǒng)舉例分層系統(tǒng)舉例典型信息系統(tǒng)分層典型信息系統(tǒng)分層第第3 3章章 軟件體系結(jié)構(gòu)風(fēng)格軟件體系結(jié)構(gòu)風(fēng)格3.2 3.2 經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格 分層系統(tǒng)舉例分層系統(tǒng)舉例B/SB/S第第3 3章章 軟件體系結(jié)構(gòu)風(fēng)格軟件體系結(jié)構(gòu)風(fēng)格3.2 3

41、.2 經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格 倉庫系統(tǒng)和黑板風(fēng)格倉庫系統(tǒng)和黑板風(fēng)格第第3 3章章 軟件體系結(jié)構(gòu)風(fēng)格軟件體系結(jié)構(gòu)風(fēng)格3.2 3.2 經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格 倉庫風(fēng)格倉庫風(fēng)格 倉庫倉庫(Repositories)(Repositories)風(fēng)格的體系結(jié)構(gòu)由兩種構(gòu)件組成:一個風(fēng)格的體系結(jié)構(gòu)由兩種構(gòu)件組成:一個中中央數(shù)據(jù)結(jié)構(gòu)央數(shù)據(jù)結(jié)構(gòu),它表示當(dāng)前狀態(tài);一個,它表示當(dāng)前狀態(tài);一個獨立構(gòu)件的集合獨立構(gòu)件的集合,它對中央,它對中央數(shù)據(jù)結(jié)構(gòu)進(jìn)行操作。數(shù)據(jù)結(jié)構(gòu)進(jìn)行操作。 倉庫風(fēng)格中倉庫風(fēng)格中連接件連接件為:倉庫和獨立構(gòu)件間的交互。為:倉庫和獨立構(gòu)件間的交互。 對倉庫中所存儲的

42、數(shù)據(jù)進(jìn)行對倉庫中所存儲的數(shù)據(jù)進(jìn)行CRUDCRUD操作;操作; 各構(gòu)件的執(zhí)行次序預(yù)先確定,取決于各構(gòu)件向倉庫發(fā)出的請求各構(gòu)件的執(zhí)行次序預(yù)先確定,取決于各構(gòu)件向倉庫發(fā)出的請求 倉庫系統(tǒng)和黑板風(fēng)格倉庫系統(tǒng)和黑板風(fēng)格第第3 3章章 軟件體系結(jié)構(gòu)風(fēng)格軟件體系結(jié)構(gòu)風(fēng)格3.2 3.2 經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格 黑板風(fēng)格黑板風(fēng)格 對于系統(tǒng)中數(shù)據(jù)和狀態(tài)的對于系統(tǒng)中數(shù)據(jù)和狀態(tài)的控制方法控制方法有兩種。一個傳統(tǒng)的方法是,有兩種。一個傳統(tǒng)的方法是,由輸入事務(wù)選擇進(jìn)行何種處理,并把執(zhí)行結(jié)果作為當(dāng)前狀態(tài)存儲由輸入事務(wù)選擇進(jìn)行何種處理,并把執(zhí)行結(jié)果作為當(dāng)前狀態(tài)存儲到中央數(shù)據(jù)結(jié)構(gòu)中。這時,倉庫是一個傳統(tǒng)的到中

43、央數(shù)據(jù)結(jié)構(gòu)中。這時,倉庫是一個傳統(tǒng)的數(shù)據(jù)庫體系結(jié)構(gòu)數(shù)據(jù)庫體系結(jié)構(gòu)。另一種方法是,由中央數(shù)據(jù)結(jié)構(gòu)的當(dāng)前狀態(tài)決定進(jìn)行何種處理。另一種方法是,由中央數(shù)據(jù)結(jié)構(gòu)的當(dāng)前狀態(tài)決定進(jìn)行何種處理。這時,倉庫是一個這時,倉庫是一個黑板黑板(Blackbord)(Blackbord)體系結(jié)構(gòu)體系結(jié)構(gòu),即黑板體系結(jié)構(gòu)是,即黑板體系結(jié)構(gòu)是倉庫體系結(jié)構(gòu)的特殊化倉庫體系結(jié)構(gòu)的特殊化。 倉庫系統(tǒng)和黑板風(fēng)格倉庫系統(tǒng)和黑板風(fēng)格第第3 3章章 軟件體系結(jié)構(gòu)風(fēng)格軟件體系結(jié)構(gòu)風(fēng)格3.2 3.2 經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格 黑黑板板(共共享享數(shù)數(shù)據(jù)據(jù))知知識識源源知知識識源源知知識識源源知知識識源源計計算算內(nèi)內(nèi)存存直直接接

44、存存取取黑板風(fēng)格的基本結(jié)構(gòu)黑板風(fēng)格的基本結(jié)構(gòu) 倉庫系統(tǒng)和黑板風(fēng)格倉庫系統(tǒng)和黑板風(fēng)格第第3 3章章 軟件體系結(jié)構(gòu)風(fēng)格軟件體系結(jié)構(gòu)風(fēng)格3.2 3.2 經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格 黑板體系結(jié)構(gòu)模型通常由黑板體系結(jié)構(gòu)模型通常由3 3部分組成部分組成: 知識源:待解決的問題被分解成若干小問題,每個小問題由獨知識源:待解決的問題被分解成若干小問題,每個小問題由獨立知識源負(fù)責(zé)計算。每個知識源包含獨立的領(lǐng)域知識。多個知識立知識源負(fù)責(zé)計算。每個知識源包含獨立的領(lǐng)域知識。多個知識源之間只能通過黑板交換知識源之間只能通過黑板交換知識- -通過對黑板的的讀寫操作完成。通過對黑板的的讀寫操作完成。 黑板數(shù)

45、據(jù)結(jié)構(gòu):反映應(yīng)用程序求解狀態(tài)的數(shù)據(jù)。它是按照黑板數(shù)據(jù)結(jié)構(gòu):反映應(yīng)用程序求解狀態(tài)的數(shù)據(jù)。它是按照層次層次結(jié)構(gòu)結(jié)構(gòu)組織的,這種層次結(jié)構(gòu)依賴于應(yīng)用程序的類型。知識源不斷組織的,這種層次結(jié)構(gòu)依賴于應(yīng)用程序的類型。知識源不斷地對黑板數(shù)據(jù)進(jìn)行修改,直到得出問題的解。黑板數(shù)據(jù)結(jié)構(gòu)起到地對黑板數(shù)據(jù)進(jìn)行修改,直到得出問題的解。黑板數(shù)據(jù)結(jié)構(gòu)起到了知識源之間的通信機(jī)制的作用。了知識源之間的通信機(jī)制的作用。 控制器:控制控制器:控制( (即對知識源的調(diào)用即對知識源的調(diào)用) )是由黑板的狀態(tài)決定的。一是由黑板的狀態(tài)決定的。一旦黑板數(shù)據(jù)的改變使得某個知識源成為可用的,知識源就會被控旦黑板數(shù)據(jù)的改變使得某個知識源成為可用的

46、,知識源就會被控制模塊激活??刂破鬟€承擔(dān)著限制知識源代理對黑板訪問的工作,制模塊激活。控制器還承擔(dān)著限制知識源代理對黑板訪問的工作,以防止兩個代理同時寫入黑板的某一空間。以防止兩個代理同時寫入黑板的某一空間。 倉庫系統(tǒng)和黑板風(fēng)格倉庫系統(tǒng)和黑板風(fēng)格第第3 3章章 軟件體系結(jié)構(gòu)風(fēng)格軟件體系結(jié)構(gòu)風(fēng)格3.2 3.2 經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格 黑板結(jié)構(gòu)黑板結(jié)構(gòu) 倉庫系統(tǒng)和黑板風(fēng)格倉庫系統(tǒng)和黑板風(fēng)格第第3 3章章 軟件體系結(jié)構(gòu)風(fēng)格軟件體系結(jié)構(gòu)風(fēng)格3.2 3.2 經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格 黑板風(fēng)格舉例:拼圖游戲黑板風(fēng)格舉例:拼圖游戲 倉庫系統(tǒng)和黑板風(fēng)格倉庫系統(tǒng)和黑板風(fēng)格第第3

47、 3章章 軟件體系結(jié)構(gòu)風(fēng)格軟件體系結(jié)構(gòu)風(fēng)格3.2 3.2 經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格 優(yōu)點優(yōu)點:便于多客戶便于多客戶共享大量數(shù)據(jù)共享大量數(shù)據(jù),它們不用關(guān)心數(shù)據(jù)是何時有的、誰,它們不用關(guān)心數(shù)據(jù)是何時有的、誰提供的、怎樣提供的。提供的、怎樣提供的。既便于既便于添加添加新的作為知識源代理的應(yīng)用程序,也便于新的作為知識源代理的應(yīng)用程序,也便于擴(kuò)展擴(kuò)展共享共享的黑板數(shù)據(jù)結(jié)構(gòu)。的黑板數(shù)據(jù)結(jié)構(gòu)。 缺點:缺點:不同的知識源代理對于共享數(shù)據(jù)結(jié)構(gòu)要達(dá)成一致,而且,這也不同的知識源代理對于共享數(shù)據(jù)結(jié)構(gòu)要達(dá)成一致,而且,這也造成對黑板數(shù)據(jù)結(jié)構(gòu)的修改較為困難造成對黑板數(shù)據(jù)結(jié)構(gòu)的修改較為困難要考慮到各個代理

48、的調(diào)要考慮到各個代理的調(diào)用。用。需要一定的同步需要一定的同步/ /加鎖機(jī)制保證數(shù)據(jù)結(jié)構(gòu)的完整性和一致性,增加鎖機(jī)制保證數(shù)據(jù)結(jié)構(gòu)的完整性和一致性,增大了系統(tǒng)復(fù)雜度。大了系統(tǒng)復(fù)雜度。 倉庫系統(tǒng)舉例倉庫系統(tǒng)舉例數(shù)據(jù)庫系統(tǒng)數(shù)據(jù)庫系統(tǒng)第第3 3章章 軟件體系結(jié)構(gòu)風(fēng)格軟件體系結(jié)構(gòu)風(fēng)格3.2 3.2 經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格 倉庫系統(tǒng)舉例倉庫系統(tǒng)舉例注冊表注冊表第第3 3章章 軟件體系結(jié)構(gòu)風(fēng)格軟件體系結(jié)構(gòu)風(fēng)格3.2 3.2 經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格 倉庫系統(tǒng)舉例倉庫系統(tǒng)舉例剪貼板剪貼板第第3 3章章 軟件體系結(jié)構(gòu)風(fēng)格軟件體系結(jié)構(gòu)風(fēng)格3.2 3.2 經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格經(jīng)典軟件

49、體系結(jié)構(gòu)風(fēng)格 黑板風(fēng)格舉例黑板風(fēng)格舉例語音識別語音識別第第3 3章章 軟件體系結(jié)構(gòu)風(fēng)格軟件體系結(jié)構(gòu)風(fēng)格3.2 3.2 經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格 Hearsay Hearsay 語音識別項目。該系統(tǒng)以自然語言的語音信號為輸語音識別項目。該系統(tǒng)以自然語言的語音信號為輸入,經(jīng)過音節(jié)、詞匯、句法和語義等多個方面的分析,得到用戶入,經(jīng)過音節(jié)、詞匯、句法和語義等多個方面的分析,得到用戶對數(shù)據(jù)庫的查詢請求。對數(shù)據(jù)庫的查詢請求。 模型模型- -視圖視圖- -控制器控制器(MVC)(MVC)風(fēng)格風(fēng)格第第3 3章章 軟件體系結(jié)構(gòu)風(fēng)格軟件體系結(jié)構(gòu)風(fēng)格3.2 3.2 經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格經(jīng)典軟件體系結(jié)

50、構(gòu)風(fēng)格 模型模型- -視圖視圖- -控制器風(fēng)格常被簡稱為控制器風(fēng)格常被簡稱為MVCMVC風(fēng)格風(fēng)格(Model-View-(Model-View-Controller style)Controller style),主要處理軟件用戶界面開發(fā)中所面臨的問,主要處理軟件用戶界面開發(fā)中所面臨的問題。題。 模型模型- -視圖視圖- -控制器控制器(MVC)(MVC)風(fēng)格風(fēng)格第第3 3章章 軟件體系結(jié)構(gòu)風(fēng)格軟件體系結(jié)構(gòu)風(fēng)格3.2 3.2 經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格 MVCMVC將交互式應(yīng)用劃分為將交互式應(yīng)用劃分為3 3種構(gòu)件。種構(gòu)件。 視圖:視圖:為用戶顯示模型信息。視圖從模型獲取數(shù)據(jù),一個

51、模型為用戶顯示模型信息。視圖從模型獲取數(shù)據(jù),一個模型可以對應(yīng)有多個視圖??梢詫?yīng)有多個視圖。 模型:模型:模型是應(yīng)用程序的核心。它封裝內(nèi)核數(shù)據(jù)與狀態(tài),對模模型是應(yīng)用程序的核心。它封裝內(nèi)核數(shù)據(jù)與狀態(tài),對模型的修改將擴(kuò)散到所有視圖中。所有需要從模型獲取信息的對象型的修改將擴(kuò)散到所有視圖中。所有需要從模型獲取信息的對象都必須注冊為模型的視圖。都必須注冊為模型的視圖。 控制器:控制器:控制器接受用戶的輸入并調(diào)用模型和視圖去完成用戶控制器接受用戶的輸入并調(diào)用模型和視圖去完成用戶的需求??刂破鞅旧聿惠敵鋈魏螙|西和做任何處理,它只是接收的需求??刂破鞅旧聿惠敵鋈魏螙|西和做任何處理,它只是接收請求并決定調(diào)用哪

52、個模型構(gòu)件去處理請求,然后再確定用哪個視請求并決定調(diào)用哪個模型構(gòu)件去處理請求,然后再確定用哪個視圖來顯示返回的數(shù)據(jù)。圖來顯示返回的數(shù)據(jù)。 模型模型- -視圖視圖- -控制器控制器(MVC)(MVC)風(fēng)格風(fēng)格第第3 3章章 軟件體系結(jié)構(gòu)風(fēng)格軟件體系結(jié)構(gòu)風(fēng)格3.2 3.2 經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格 模型模型- -視圖視圖- -控制器風(fēng)格具有如下優(yōu)點:控制器風(fēng)格具有如下優(yōu)點:將各方面問題分解開來考慮,簡化了系統(tǒng)設(shè)計,保證了系統(tǒng)的將各方面問題分解開來考慮,簡化了系統(tǒng)設(shè)計,保證了系統(tǒng)的可擴(kuò)展性。可擴(kuò)展性。改變界面不影響應(yīng)用程序的功能內(nèi)核,使得系統(tǒng)易于演化開發(fā),改變界面不影響應(yīng)用程序的功能

53、內(nèi)核,使得系統(tǒng)易于演化開發(fā),可維護(hù)性好。可維護(hù)性好。易于改變,甚至可以在運行時改變,提供了良好的動態(tài)機(jī)制。易于改變,甚至可以在運行時改變,提供了良好的動態(tài)機(jī)制。 模型模型- -視圖視圖- -控制器控制器(MVC)(MVC)舉例舉例第第3 3章章 軟件體系結(jié)構(gòu)風(fēng)格軟件體系結(jié)構(gòu)風(fēng)格3.2 3.2 經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格 JAVA SwingJAVA Swing 模型:存儲內(nèi)容模型:存儲內(nèi)容 視圖:顯示內(nèi)容視圖:顯示內(nèi)容 控制器:控制輸入控制器:控制輸入 模型模型- -視圖視圖- -控制器控制器(MVC)(MVC)舉例舉例第第3 3章章 軟件體系結(jié)構(gòu)風(fēng)格軟件體系結(jié)構(gòu)風(fēng)格3.2 3.

54、2 經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格 Java WebJava Web 模型模型- -視圖視圖- -控制器控制器第第3 3章章 軟件體系結(jié)構(gòu)風(fēng)格軟件體系結(jié)構(gòu)風(fēng)格3.2 3.2 經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格 常用常用MVCMVC框架框架 StrutsStruts: ApacheApache的,曾經(jīng)最流行的的,曾經(jīng)最流行的MVCMVC組件組件 Struts2 Struts2 :ApacheApache用用Struts Struts 和和 WebWorkWebWork的組合出來的新產(chǎn)品,的組合出來的新產(chǎn)品,目前非常流行目前非常流行 Spring MVC Spring MVC:Sp

55、ringFrameworkSpringFramework自己整合自己自己整合自己SpringSpring的優(yōu)勢推的優(yōu)勢推出的出的MVCMVC組件,用戶也不少組件,用戶也不少 解釋器風(fēng)格解釋器風(fēng)格第第3 3章章 軟件體系結(jié)構(gòu)風(fēng)格軟件體系結(jié)構(gòu)風(fēng)格3.2 3.2 經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格 問題:你認(rèn)為問題:你認(rèn)為JAVAJAVA最吸引人的特性是什么?最吸引人的特性是什么?Write Once , Run Anyway. Write Once , Run Anyway. 一次書寫,多次運行一次書寫,多次運行 解釋器風(fēng)格解釋器風(fēng)格第第3 3章章 軟件體系結(jié)構(gòu)風(fēng)格軟件體系結(jié)構(gòu)風(fēng)格3.2 3

56、.2 經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格 問題:問題:JAVAJAVA為什么支持平臺無關(guān)?為什么支持平臺無關(guān)?JAVA JAVA 虛擬機(jī)虛擬機(jī) 解釋器風(fēng)格解釋器風(fēng)格第第3 3章章 軟件體系結(jié)構(gòu)風(fēng)格軟件體系結(jié)構(gòu)風(fēng)格3.2 3.2 經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格 什么是虛擬機(jī)?什么是虛擬機(jī)? 虛擬機(jī)一種軟件;虛擬機(jī)一種軟件; 它創(chuàng)建一種虛擬環(huán)境;它創(chuàng)建一種虛擬環(huán)境; 將用戶和底層平臺隔離開來。將用戶和底層平臺隔離開來。 解釋器風(fēng)格解釋器風(fēng)格第第3 3章章 軟件體系結(jié)構(gòu)風(fēng)格軟件體系結(jié)構(gòu)風(fēng)格3.2 3.2 經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格 虛擬機(jī)的分類虛擬機(jī)的分類 系統(tǒng)級的虛擬

57、機(jī):對系統(tǒng)級的虛擬機(jī):對OSOS的模擬,把一個物理上獨立的機(jī)器虛的模擬,把一個物理上獨立的機(jī)器虛擬成多種不同的虛擬機(jī),每個虛擬機(jī)可支持運行各自的操作系統(tǒng),擬成多種不同的虛擬機(jī),每個虛擬機(jī)可支持運行各自的操作系統(tǒng),本質(zhì):在本質(zhì):在OSOS和硬件之間建立隔離;和硬件之間建立隔離; 硬件虛擬機(jī)硬件虛擬機(jī) 虛擬環(huán)境虛擬環(huán)境 計算機(jī)聚合計算機(jī)聚合 進(jìn)程級的虛擬機(jī):對單一程序的虛擬,其本質(zhì)是在應(yīng)用程序與進(jìn)程級的虛擬機(jī):對單一程序的虛擬,其本質(zhì)是在應(yīng)用程序與OSOS之間建立隔離。之間建立隔離。 應(yīng)用程序虛擬機(jī)應(yīng)用程序虛擬機(jī) 解釋器風(fēng)格解釋器風(fēng)格第第3 3章章 軟件體系結(jié)構(gòu)風(fēng)格軟件體系結(jié)構(gòu)風(fēng)格3.2 3.2

58、經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格 硬件虛擬機(jī):硬件虛擬機(jī): 問題:你在問題:你在LinuxLinux平臺下開發(fā)了一個復(fù)雜程序,但是目前你的平臺下開發(fā)了一個復(fù)雜程序,但是目前你的的電腦更新到了的電腦更新到了Windows7Windows7操作系統(tǒng),而你又不愿意花費大量時間操作系統(tǒng),而你又不愿意花費大量時間重新開發(fā)這個程序。如何解決?重新開發(fā)這個程序。如何解決? 硬件虛擬機(jī)硬件虛擬機(jī) 虛擬機(jī)最初的含義虛擬機(jī)最初的含義 在一個服務(wù)器上虛擬的構(gòu)造若干個獨立的執(zhí)行環(huán)境,每個在一個服務(wù)器上虛擬的構(gòu)造若干個獨立的執(zhí)行環(huán)境,每個虛擬環(huán)境支持一個虛擬環(huán)境支持一個OSOS內(nèi)核的運行,這些內(nèi)核的運行,這些O

59、SOS可以與服務(wù)器本可以與服務(wù)器本地的地的OSOS不同,從而允許一個不同,從而允許一個OSOS上書寫的應(yīng)用程序可以在一上書寫的應(yīng)用程序可以在一臺運行其他臺運行其他OSOS的機(jī)器上運行的機(jī)器上運行 當(dāng)多個用戶在一臺計算機(jī)上工作時,每個用戶好像獨立的當(dāng)多個用戶在一臺計算機(jī)上工作時,每個用戶好像獨立的使用該計算機(jī)的所有物理資源使用該計算機(jī)的所有物理資源 解釋器風(fēng)格解釋器風(fēng)格第第3 3章章 軟件體系結(jié)構(gòu)風(fēng)格軟件體系結(jié)構(gòu)風(fēng)格3.2 3.2 經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格 硬件虛擬機(jī)硬件虛擬機(jī)-VMware-VMware: 解釋器風(fēng)格解釋器風(fēng)格第第3 3章章 軟件體系結(jié)構(gòu)風(fēng)格軟件體系結(jié)構(gòu)風(fēng)格3.

60、2 3.2 經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格 硬件虛擬機(jī)硬件虛擬機(jī)Microsoft Virtual ServerMicrosoft Virtual Server: 解釋器風(fēng)格解釋器風(fēng)格第第3 3章章 軟件體系結(jié)構(gòu)風(fēng)格軟件體系結(jié)構(gòu)風(fēng)格3.2 3.2 經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格 硬件虛擬機(jī)硬件虛擬機(jī)Cooperative LinuxCooperative Linux: 解釋器風(fēng)格解釋器風(fēng)格第第3 3章章 軟件體系結(jié)構(gòu)風(fēng)格軟件體系結(jié)構(gòu)風(fēng)格3.2 3.2 經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格經(jīng)典軟件體系結(jié)構(gòu)風(fēng)格 硬件虛擬機(jī)硬件虛擬機(jī)XGENXGEN: 解釋器風(fēng)格解釋器風(fēng)格第第3 3章章 軟件體

溫馨提示

  • 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

提交評論