【原創】軟件架構之軟件架構風格分類

軟件架構風格分類
名稱 解釋 細分  
數據流風格

1、批處理序列架構風格(Batch Sequential)

2、管理/過濾器架構風格(Pipes/Filters)

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

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

 
調用/返回風格

1、主程序/子程序架構風格(Main Program and Subroutine)

2、數據抽象和麪向對象架構風格(DataAbstraction and Object-Oriented)

3、層次結構架構風格(Hierarchical Layers)

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

2、這種風格的構件是對象。對象是抽象數據類型的實例。在抽象數據類型中,數據的表示和它們的相應操作被封裝起來。對象的行爲體現在其接受和請求的動作。連接件即對象間交互的方式,對象是通過函數和過程的調用來交互的。對象具有封裝性,一個對象的改變不會影響其他對象。對象擁有狀態和操作,也有責任維護狀態。這種結構風格中包含有封裝、交互、多態、集成和重用等特徵。
3、層次系統組織成一個層次結構。構件在一些層實現了虛擬機。連接件通過決定層間如何交互的協議來定義,拓撲約束包括對相鄰導間交互的約束。這個風格的特點是每層爲上一層提供服務,使用下一層的服務,只能見到與自己鄰接的層。大的問題分解爲若干個漸進的小問題,逐步解決,隱藏了很多複雜度。修改一層,最多影響兩層,而通常只能影響上層。上層必須知道下層的身份,不能調整層次之間的順序。

 
獨立構件風格

1、進程通信架構風格(Communicating Processes)

2、事件驅動架構風格(EventSystems)

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

2、構件不直接調用一個過程,而是觸發或廣播一個或多個事件。系統中其他構件中的過程在一個或多個事件中註冊,當一個事件被觸發,系統自動調用在這個事件中註冊的所有過程。一個事件的觸發就導致了另一個模塊中過程的調用。

 
虛擬機風格

1、解釋器架構風格(Interpreters)

2、基於規則的系統(Rule-based Systems)架構風格

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

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

 
倉庫風格

1、數據庫架構風格(Database)

2、黑板架構風格(BlackBoards)

1、數據庫架構是庫風格最常見的形式。構件主要有兩大類,一個是中央共享數據源,保存當前系統的數據狀態;另一個是多個獨立處理元素,處理元素對數據元素進行操作。

2、黑板架構包括知識源、黑板和控制3個部分。知識源包括若干獨立計算的不同單元,提供解決問題的知識,知識源響應黑板上的變化,也只修改黑板。黑板是一個全局數據庫,包含解域的全部狀態,是知識源互相作用的唯一媒介。知識源響應是通過黑板狀態的變化來控制。黑板通常應用在對於解決問題沒有確定性算法的系統中,例如信號處理、問題規劃及編譯器優化等軟件系統的設計中。

 

特定領域軟件體系結構

(Domain-specfic Software Architecture)

     

狀態轉移

(StateTransition System)

     

分佈式處理(Distributed Process)

架構風格

     

REST(Representational StateTransfer)

混合架構風格

  客戶機/服務器(C/S)架構風格、瀏覽器/服務器(B/S)架構風格、CORBA、DCOM和EJB架構風格  
       
       
       
       
       
       
       
       
       
       

 

參考:

1、https://blog.csdn.net/conquer0715/article/details/52781151

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章