五種常見架構風格


Garlan和Shaw將軟件架構風格分為五大類,數據流風格、調用/返回風格、獨立構件風格、虛擬機風格和倉庫風格。其中:

(1)數據流風格包括批處理序列架構風格和管道/過濾器架構風格;

(2)調用/返回風格包括主程序/子程序架構風格、數據抽象和面向對象架構風格和層次結構架構風格;

(3)獨立構件風格包括進程通信架構風格和事件驅動的架構風格;

(4)虛擬機風格包括解釋器架構風格和基於規則的系統;

(5)倉庫風格包括數據庫架構風格和黑板架構風格。

其他的還有特定領域軟件架構、狀態轉移等以及分布式處理等。其中分布式架構風格中有客戶機/服務器風格、瀏覽器/服務器風格、CORBA、DCOM、EJB。每一種具體的軟件結構風格的模型如下:

1.數據流風格

數據流風格包括批處理序列和管道/過濾器架構風格。

(1)批處理序列架構風格。組件為一系列固定順序的計算單元,組件間只通過數據傳遞交互。每個處理步驟是一個獨立的程序,每一步必須在前一步結束后才能開始,數據必須是完整的,以整體的方式傳遞。 

(2)管道/過濾器架構風格。每個構件都有一組輸入和輸出,構件讀輸入的數據流,經過內部處理,然后產生輸出數據流,經過處理,產生輸出數據流。這個過程通常通過對輸入流的變換及增量計算來完成,包括通過計算和增加信息豐富數據,通過濃縮和刪除精煉數據,通過改變記錄方式轉化數據,遞增地轉化數據等。在輸入被完全消費之前,輸出便產生了。這里構件被稱為過濾器,連接件就是數據流傳輸的管道,將一個過濾器的輸出傳到另一過濾器的輸入。

2.調用/返回風格

調用/返回風格包括主程序/子程序架構風格、數據抽象和面向對象架構風格以及層次結構架構風格

(1)主程序/子程序架構風格。單線程控制,把問題划分為若干處理步驟,構件即為主程序和子程序。子程序通常可合成為模塊。過程調用作為交互機制,即充當連接件。調用關系具有層次性,其語義邏輯表現為子程序的正確性取決於它調用的子程序的正確性。

(2)數據抽象和面向對象架構風格。這種風格的構件是對象。對象是抽象數據類型的實例。在抽象數據類型中,數據的表示和它們的相應操作被封裝起來。對象的行為體現在其接受和請求的動作。連接件即是對象間交互的方式,對象是通過函數和過程的調用來交互的。對象具有封裝性,一個對象的改變不會影響其他對象。對象擁有狀態和操作,也有責任維護狀態。這種結構風格中包含有封裝、交互、多態、集成、重用等特征。

(3)層次結構架構風格。層次系統組織成一個層次結構。構件在一些層實現了虛擬機。連接件通過決定層間如何交互的協議來定義,拓撲約束包括對相鄰層間交互的約束。這個風格的特點是每層為上一層提供服務,使用下一層的服務,只能見到與自己鄰接的層。大的問題分解為若干個漸進的小問題,逐步解決,隱藏了很多復雜度。修改一層,最多影響兩層,而通常只能影響上層。上層必須知道下層的身份,不能調整層次之間的順序。它是一種常見的架構設計方法,能夠有效簡化設計,使設計的系統結構清晰,便於提高復用能力和產品維護能力。一般來說,企業應用系統的架構可以分為 表現層、中間層和持久層三個層次。
       表現層。表現層主要負責接收用戶的請求,對用戶的輸入、輸出進行檢查與控 制,處理客戶端的一些動作,包括控制頁面跳轉等,並向用戶呈現最終的結果信息。表現層主要采用MVC結構來實現。控制器負責接收用戶的請求,並決定應該調用哪個模型來處理;然后,模型根據用戶請求調用中間層進行相應的業務邏輯處理,並返回數據;最后,控制器調用相應的視圖來格式化模型返回的數據,並通過視圖呈現給用戶。
       中間層。中間層主要包括業務邏輯層組件、業務邏輯層工作流、業務邏輯層實體和業務邏輯層框架四個方面。業務邏輯層組件分為接口和實現類兩個部分,接口用於定義業務邏輯組件,定義業務邏輯組件必須實現的方法。通常按模塊來設計業務邏輯組件,每個模塊設計為一個業務邏輯組件,並且每個業務邏輯組件以多個DAO組件作為基礎,從而實現對外提供系統的業務邏輯服務。業務邏輯層工作流能夠實現在多個參與者之間按照某種預定義的規則傳遞文檔、信息或任務的過程自動進行,從而實現某個預期的業務目標,或者促進此目標的實現。業務邏輯層實體提供對業務數據及相關功能的狀態編程訪問,業務邏輯層實體數據可以使用具有復雜架構的數據來構建,這種數據通常來自數據庫中的多個相關表,業務邏輯層實體數據可以作為業務過程的部分I/O參數傳遞,業務邏輯層的實體是可序列化的,以保持它們的當前狀態。業務邏輯層是實現系統功能的核心組件,采用容器的形式,便於系統功能的開發、代碼重用和管理。
       持久層。持久層主要負責數據的持久化存儲,主要負責將業務數據存儲在文件、 數據庫等持久化存儲介質中。持久層的主要功能是為業務邏輯提供透明的數據訪問、持久化、加載等能力。

3.獨立構件風格

獨立構件風格包括進程通信架構風格和事件驅動的架構風格

(1)進程通信架構風格。構件是獨立的過程,連接件是消息傳遞。這種風格的特點是構件通常是命名過程,消息傳遞的方式可以是點對點、異步和同步方式、以及遠過程調用等

(2)事件驅動的架構風格。構件不直接調用一個過程,而是觸發或廣播一個或多個事件。系統中的其他構件中的過程在一個或多個事件中注冊,當一個事件被觸發,系統自動調用在這個事件中注冊的所有過程。一個事件的觸發就導致了另一個模塊中的過程的調用。這種風格中的構件是非命名的過程,它們之間交互的連接件往往是以過程之間的隱式調用(Implicit Invocation)來實現的。基於事件的隱式調用風格的主要優點是為軟件重用提供了強大的支持,為構件的維護和演化帶來了方便,其缺點是構件放棄了對系統計算的控制。

4.虛擬機風格

虛擬機風格包括解釋器架構風格和基於規則的系統

(1)解釋器架構風格。一個解釋器通常包括完成解釋工作的解釋引擎,一個包含將被解釋的代碼的存儲區,一個記錄解釋引擎當前工作狀態的數據結構,以及一個記錄源代碼被解釋執行的進度的數據結構。具有解釋器風格的軟件中含有一個虛擬機,可以仿真硬件的執行過程和一些關鍵應用。其缺點是執行效率較低。

(2)基於規則的系統。基於規則的系統包括規則集、規則解釋器、規則/數據選擇器以及工作內
存。

5.倉庫風格

倉庫風格包括數據庫架構風格和黑板架構風格

(1)數據庫架構風格。數據庫架構是庫風格最常見的形式。構件主要有兩大類,一個是中央共享數據源,保存當前系統的數據狀態,另一個是多個獨立處理元素,處理元素對數據元素進行操作。(2)黑板架構風格。黑板架構包括知識源、黑板、控制三部分。知識源包括若干獨立計算的不同單元,提供解決問題的知識,知識源響應黑板上的變化,也只修改黑板。黑板是一個全局數據庫,包含解域的全部狀態,是知識源互相作用的唯一媒介。知識源響應是通過黑板狀態的變化來控制。黑板通常應用在對於解決問題沒有確定性算法的系統中,例如信號處理、問題規划、編譯器優化等軟件系統的設計中。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM