體系風格
如武林門派各有異長之處,其所長即是風格體現。
對于軟件體系來說"每一套體系風格里裝載著獨特的結構、語義特性"
體系構成
組成體系的幾大要素
- 數據流風格: API接口規范、管道、過濾器
- 調用/返回風格: 主次程序關系、面向對象模式、層次結構
- 獨立性的構建風格: 進程間通信方式、事件處理系統
- 虛擬機風格: 解析器、約定的規則系統
- 廠庫數據風格: 數據庫系統、超文本系統、黑板系統
但凡軟件領域里的系統及架構都離不開這些由這些要素來構建。
而且,對應軟件層次結構畫分可以按以上要素進行分層。
經典風格
管道與過濾器
可以粗略的將管道與過濾器看成一個黑盒子,一端往里丟數據,然后再從另一端取出已處理的數據。
管道:
Unix 進程通信之管道詳解
過濾器: 比較官方的解釋"輸入被消費前,輸出已產生",實際上也是內部加上特定的處理后輸出數據。不同的是其需要為獨立的實體,每一個過濾器的數據為獨立,不與其他過濾器共享。
優點:
- 軟件結構有良好的隱蔽性和高內聚、低耦合
- 方便開發人員(設計師)處理輸入\輸出數據流
- 支持軟件重用
- 便于系統維護,易于擴展系統性能
- 支持并發處理 (過濾器為獨立任務,每一個任務可以并行處理)
缺點:
- 對交互式的應用,"黑盒子處理方式顯得不太友好"
- 過濾器處理數據的成本隨著其數量增加而增加
數據抽象和面對對象系統
構件作為對象,負責保證資源的完整性,通過函數和過程調用來實現交互。
優點:
- 根據對象的屬性,可以做到高內聚、低耦合(通過隱藏來實現)。(即改變某個對象的表示,不會影響到其他對象)
缺點
- 在過程調用及交互中,對象標志被改變了,那么調用該該標志的函數都需要進行改變(不太利于后續維護)
基于事件系統
其思想是系統構件不直接通過調用對象或者過程,而是通過觸發器或者廣播一個及多個事件來激活對應的進程調用。(為隱式調用)
優點:
- 易于重構
- 易于擴展系統(當用一個構件替代另外一個構件時,不會影響到其他構件接口)
缺點:
- 數據通信問題。(消息廣播后,不能確定有構件對其進行響應)
分層系統
所謂層次秉承上啟下,對上層提供調用接口,對下層封裝調用的接口。
倉庫系統及知識庫
主要由兩種構件組成,中央數據結構+獨立構件。
通常情況下,黑板系統作為倉庫
其黑板由以下構成:
a. 知識源 。 (知識源之間互為獨立,其通信通過黑板來完成(數據共享))
b. 黑板數據結構
c. 控制 (黑板的狀態驅動為控制主導者)
C2風格
通過連接件綁定在一起的按照一組規則運作的并行構件網絡。
其特點如下:
- 系統中的構件可以通過不同的網絡組成來構造復雜的應用需求
- 構件的通信可以通過異步消息交換機制來實現
- 構件之間互為獨立,關聯性比較小