7.3?軟件架構(gòu)風格
軟件體系結(jié)構(gòu)設(shè)計的一個核心目標是重復的體系結(jié)構(gòu)模式,即達到體系結(jié)構(gòu)級的軟件重用。也就是說,在不同的軟件系統(tǒng)中,使用同一個體系結(jié)構(gòu)?;谶@個目標,主要任務(wù)是研究和實踐軟件體系結(jié)構(gòu)的風格和類型問題
7.3.1軟件架構(gòu)風格概述
軟件體系結(jié)構(gòu)風格是描述某一特定應用領(lǐng)域中系統(tǒng)組織方式的慣用模式。
體系結(jié)構(gòu)風格定義一個系統(tǒng)家族,即一個體系結(jié)構(gòu)定義一個詞匯表和一組約束。
詞匯表中包含一些構(gòu)件和連接件類型,而這組約束支出系統(tǒng)是如何將這些構(gòu)件和連接件組合起來的。
體系結(jié)構(gòu)風格反映了領(lǐng)域中眾多系統(tǒng)所共有的結(jié)構(gòu)和語義特性,并指導如何將各個模塊和子系統(tǒng)有效地組織成一個完整的系統(tǒng)。
對軟件體系結(jié)構(gòu)風格的研究和實踐促進對設(shè)計的重用,一些經(jīng)過實踐證實的解決方案也可以可靠地用于解決新的問題。
7.3.2數(shù)據(jù)流體系結(jié)構(gòu)風格
1、批處理體系結(jié)構(gòu)風格

2、管道-過濾器體系結(jié)構(gòu)風格

7.3.3調(diào)用/返回體系結(jié)構(gòu)風格
在系統(tǒng)重采用了調(diào)用與返回機制。實際上一種分而治之的策略,其主要思想是將一個復雜的大系統(tǒng)分解成若干子系統(tǒng),以便降低復雜度,并且增加了可修改性。程序從其執(zhí)行起點開始執(zhí)行該構(gòu)件的代碼,程序執(zhí)行結(jié)束,將控制返回給程序調(diào)用構(gòu)件。調(diào)用/返回體系結(jié)構(gòu)風格主要包括主程序/子程序風格、面向?qū)ο箫L格、層次型風格以及客戶端/服務(wù)器風格。
1、主程序/子程序風格
一般采用單線程控制,把問題劃分成若干處理步驟,構(gòu)件即為主程序和子程序。子程序通常可合成為模塊。過程調(diào)用作為交互機制,即充當連接件。調(diào)用關(guān)系具有層次性,其語義邏輯表現(xiàn)為子程序的正確性取決于它調(diào)用的子程序的正確性。
2、面相對象體系結(jié)構(gòu)風格
抽象數(shù)據(jù)類型概念對軟件系統(tǒng)有著重要作用,目前軟件界已普遍轉(zhuǎn)向使用面向?qū)ο笙到y(tǒng)。這種風格建立在數(shù)據(jù)抽象和面向?qū)ο蟮幕A(chǔ)上,數(shù)據(jù)的表示方法和它們的相應操作封裝在一個抽象數(shù)據(jù)類型或?qū)ο笾小_@種風格的構(gòu)件是對象,或者說抽象數(shù)據(jù)類型的實例。

3、層次型體系結(jié)構(gòu)風格
層次系統(tǒng)組成一個層次結(jié)構(gòu),每一層為上層提供服務(wù),并作為下層的客戶端。

4、C/S體系結(jié)構(gòu)風格
C/S是基于資源不對等,且為實現(xiàn)共享而提出的,
2層的C/S體系結(jié)構(gòu)有3個主要組成部分:數(shù)據(jù)庫服務(wù)器、客戶應用程序和網(wǎng)絡(luò)。服務(wù)器(后臺)負責數(shù)據(jù)管理,客戶機(前臺)完成與用戶交互的任務(wù),稱為“胖客戶機,瘦服務(wù)器”

3層C/S結(jié)構(gòu),?增加了一個應用服務(wù)器。整個應用邏輯駐留在應用服務(wù)器上,只有表示層存在于客戶機上,故稱為“瘦客戶機”。應用功能分為表示層、功能層和數(shù)據(jù)層。
表示層是應用的用戶接口部分,通常使用圖形用戶界面;
功能層是應用的主體,實現(xiàn)具體的業(yè)務(wù)處理邏輯;
數(shù)據(jù)層是數(shù)據(jù)管理系統(tǒng)。
以上三層邏輯上獨立

7.3.4以數(shù)據(jù)為中心的體系結(jié)構(gòu)風格
1、倉庫體系結(jié)構(gòu)風格
倉庫(Repository)是存儲和維護數(shù)據(jù)的中心場所。在倉庫風格中,有兩種不同的構(gòu)件:中央數(shù)據(jù)結(jié)構(gòu)說經(jīng)當前數(shù)據(jù)的狀態(tài)以及一組對中央數(shù)據(jù)進行操作的獨立構(gòu)件,倉庫與獨立構(gòu)件間的相互作用在系統(tǒng)重會有很大變化。

2、黑板體系結(jié)構(gòu)風格
適用于解決復雜的非結(jié)構(gòu)化的問題,能在求解過程中綜合運動多種不同的知識源,使得問題的表達、組織和求解變得比較容易。
黑板系統(tǒng)是一種求解模型,是組織推理步驟、控制狀態(tài)數(shù)據(jù)和問題求解之領(lǐng)域的概念框架。
它將問題的解空間組織成一個或多個應用相關(guān)的分級結(jié)構(gòu)。
分級結(jié)構(gòu)的每一層信息有一個唯一的詞匯來描述,它代表了問題的部分解。
領(lǐng)域相關(guān)的知識被分成獨立的知識模塊,它將某一層中的信息轉(zhuǎn)換成同層或相鄰層的信息

7.3.5虛擬機體系結(jié)構(gòu)風格
基本思想是人為的構(gòu)建一個運行環(huán)境,在這個環(huán)境之上,可以解析與運行自定義的一些語言,這樣來增加架構(gòu)的靈活性。
1、解釋器體系結(jié)構(gòu)風格
一個解釋器通常包括完成解釋工作的解釋引擎,一個包含將被解釋的代碼的存儲區(qū),一個記錄解釋引擎當前工作狀態(tài)的數(shù)據(jù)結(jié)構(gòu),以及一個記錄記錄源代碼被解釋執(zhí)行進度的數(shù)據(jù)結(jié)構(gòu)。
具有解釋器風格的軟件含有一個虛擬機,可以仿真硬件的執(zhí)行過程和一些關(guān)鍵應用。解釋器通常被用來建立一種虛擬機以彌合程序語義和硬件語義之間的差異。其特點是執(zhí)行效率較低。典型的例子是專家系統(tǒng)。

2、?規(guī)則系統(tǒng)體系結(jié)構(gòu)風格
包括規(guī)則集、規(guī)則解釋器、規(guī)則/數(shù)據(jù)選擇器及工作內(nèi)存

7.3.6獨立構(gòu)件體系結(jié)構(gòu)風格
獨立構(gòu)件風格主要強調(diào)系統(tǒng)中的每個構(gòu)件都是相對獨立的個體,他們之間不直接通信,以降低耦合度,提升靈活性。獨立構(gòu)件風格主要包括進程通信和事件系統(tǒng)風格。
1、進程通信體系結(jié)構(gòu)風格
構(gòu)件是獨立的過程,連接件是消息傳遞。
2、事件系統(tǒng)體系結(jié)構(gòu)風格
基于事件的隱式調(diào)用風格的思想是構(gòu)件不直接調(diào)用一個過程,而是觸發(fā)或廣播一個或多個事件。
