架構師考證要點(架構風格總結)
軟體架構設計的一個核心問題是能否使用重複的軟體架構模式,即能否達到架構級別的軟體重用。也就是說,能否在不同的軟體系統中,使用同一架構。基於這個目的,業界開始研究和實踐軟體架構的風格和型別問題。
資料流風格
資料流風格的軟體架構是一種最常見,結構最為簡單的軟體架構。這樣的架構下,所有的資料按照流的形式在執行過程中前進,不存在結構的反覆和重構,就像工廠中的汽車流水線一樣,資料就像汽車零部件一樣在流水線的各個節點上被加工,最終輸出所需要的結果(一部完整的汽車)。在流動過程中,資料經過序列間的資料處理元件進行處理,然後將處理結果向後傳送,最後進行輸出。
批處理風格
批處理風格的每一步處理都是獨立的,並且每一步是順序執行的。只有當前一步處理完,後一步處理才能開始。資料傳送在步與步之間作為一個整體。(元件為一系列固定順序的計算單元,元件間只通過資料傳遞互動。每個處理步驟是一個獨立的程式,每一步必須在前一步結束後才能開始,資料必須是完整的,以整體的方式傳遞)批處理的典型應用:(1)經典資料處理;(2)程式開發等;
管道過濾器風格
在管道/過濾器風格的軟體架構中,每個構件都有一組輸入和輸出,構件讀輸入的資料流,經過內部處理,然後產生輸出資料流。這個過程通常通過對輸入流的變換及增量計算來完成,所以在輸入被完全消費之前,輸出便產生了。因此,這裡的構件被稱為過濾器,這種風格的連線件就像是資料流傳輸的管道,將一個過濾器的輸出傳到另一過濾器的輸入。此風格特別重要的過濾器必須是獨立的實體,它不能與其他的過濾器共享資料,而且一個過濾器不知道它上游和下游的標識。一個管道/過濾器網路輸出的正確性並不依賴於過濾器進行增量計算過程的順序。
呼叫/返回風格
主程式/子程式風格
主程式/子程式風格是結構化開發時期的經典架構風格。這種風格一般採用單執行緒控制,把問題劃分為若干處理步驟,構件即為主程式和子程式。子程式通常可合成為模組。過程呼叫作為互動機制,即充當連線件。
面向物件風格
這種風格的構件是物件,或者說是抽象資料型別的例項。物件是一種被稱作管理者的構件,它負責保持資源的完整性。物件是通過函式和過程的呼叫來互動的。
層次結構風格
層次系統組織成一個層次結構,每一層為上層服務,並作為下層客戶。在一些層次系統中,除了一些精心挑選的輸出函式外,內部的層只對相鄰的層可見。這樣的系統中構件在一些層實現了虛擬機器(在另一些層次系統中層是部分不透明的)。連線件通過決定層間如何互動的協議來定義,拓撲約束包括對相鄰層間互動的約束。
獨立構建風格
獨立構件風格包括程序通訊和事件驅動的系統。 (1)程序通訊。構件是獨立的過程,連線件是訊息傳遞。這種風格的特點是,構件通常是命名過程,訊息傳遞的方式可以是點對點、非同步或同步方式,以及遠端過程(方法)呼叫等。 (2)事件驅動的系統。構件不直接呼叫一個過程,而是觸發或廣播一個或多個事件。構件中的過程在一個或多個事件中註冊,當某個事件被觸發時,系統自動呼叫在這個事件中註冊的所有過程。一個事件的觸發就導致了另一個模組中的過程呼叫。這種風格中的構件是匿名的過程,它們之間互動的連線件往往是以過程之間的隱式呼叫(implicit invocation)來實現的。基於事件的隱式呼叫風格的主要優點是為軟體複用提供了強大的支援,為構件的維護和演化帶來了方便,其缺點是構件放棄了對系統計算的控制。
虛擬機器風格
虛擬機器風格包括直譯器和基於規則的系統。 (1)直譯器。直譯器通常包括一個完成解釋工作的解釋引擎、一個包含將被解釋的程式碼的儲存區、一個記錄解釋引擎當前工作狀態的資料結構,以及一個記錄原始碼被解釋執行的進度的資料結構。具有直譯器風格的軟體中含有一個虛擬機器,可以模擬硬體的執行過程和一些關鍵應用,其缺點是執行效率比較低。 (2)基於規則的系統。基於規則的系統包括規則集、規則直譯器、規則/資料選擇器和工作記憶體,一般用在人工智慧領域和DSS中。
倉庫風格
倉庫風格包括資料庫系統、黑板系統和超文本系統。 (1)資料庫系統。資料庫系統是倉庫風格最常見的形式。在資料庫系統中,構件主要有兩大類,一類是中央共享資料來源,儲存當前系統的資料狀態;另一類是多個獨立處理單元,處理單元對資料元素進行操作。 (2)黑板系統。黑板系統包括知識源、黑板和控制三個部分。知識源包括若干獨立計算的不同單元,提供解決問題的知識。知識源響應黑板的變化,也只修改黑板;黑板是一個全域性資料庫,包含問題域解空間的全部狀態,是知識源相互作用的唯一媒介;知識源響應是通過黑板狀態的變化來控制的。黑板系統通常應用在對於解決問題沒有確定性演算法的軟體中,例如,訊號處理、問題規劃和編譯器優化等。
(3)超文本系統。超文本系統中出現的構件以網狀連結方式相互連線,使用者可以在構件之間進行按照人類的聯想思維方式任意跳轉到相關構件。超文字是一種非線性的網狀資訊組織方法,它以結點為基本單位,鏈作為結點之間的聯想式關聯。超文本系統通常應用在網際網路領域。