1. 程式人生 > 其它 >系統架構設計師-軟體架構風格

系統架構設計師-軟體架構風格

  軟體架構風格是描述某一特定應用領域中系統組織方式的慣用模式,它定義一個系統家族,即一個體繫結構定義一個詞彙表和一組約束。詞彙表中包含一些構件和連線件型別,而這組約束支出系統是如何將這些構件和連線件組合起來的。架構個反映了額領域中眾多系統所共有的結構和語義特特性,並指導如何將各個模組和子系統有效的組織成一個完成的系統。概要論述你參與與分析和設計的軟體系統開發專案,以及你所承擔的主要工作。軟體系統開發中常用的軟體架構風格有哪些,詳細闡述每種風格的具體含義。詳細說明你所參與分析和設計的軟體系統採用了什麼軟體架構風格,並分析採用該架構風格設計的原因。

軟體架構風格典型分類

1,資料流分風格:包括批處理系列架構風格(Batch Sequential)和管道-過濾器架構風格(Pipes/Filters)。

2,呼叫/返回風格:包括主程式/子程式風格(Main Program and Subroutine)、資料抽象和麵向物件架構風格(Data Absraction and Object-Oriented)及層次架構風格(Hierarchical Layers)

3,獨立構件風格:包括程序通訊架構風格(Communicating Processes)和時間驅動架構風格(Event System)

4,虛擬機器風格:包括直譯器架構風格(Interpreters)和基於規則的系統(Rule-based System)架構風格。

5,倉庫風格:包括資料倉庫架構風格(Database)和黑板架構風格(Black Boards)。

  其他還有特定領域軟體體系架構(Domain-Specific Software Architecture)、狀態轉移(State Transition System)、分散式處理(Distributed Process)架構風格和REST(Representational State Transfer)混合架構風格等,其中分散式架構風格中包括客戶機/伺服器(C/S)架構風格、瀏覽器/伺服器(B/S)架構風格、CORBA、DCOM和EJB架構風格等。

軟體架構風格模型及含義

1,資料流風格

  批處理序列架構風格:元件為一系列固定順序的計算單元,元件間只通過資料傳遞互動。每個處理步驟是一個獨立的程式,每一步必須在前一步結束後才能開始。資料必須是完成,一整體的方式床底。

  管道-過濾器架構風格:每一個構件都有一組輸入和輸出,構件讀取輸入的資料流。經過內部處理,然後產生輸出資料流。在這個過程中通常通過對輸入流的變換及增量計算來完成,包括通過計算和增加資訊豐富資料、通過濃縮和刪除精煉資料,以及通過改變記錄方式轉化資料和遞增轉化資料等。在輸入被完全消費之前,輸出便產生了。這裡構建被稱為“過濾器”,連線件就是資料流傳輸的管道,將一個過濾器的輸出傳到另一個過濾器的輸入。

2,呼叫/返回風格

  主程式/子程式架構風格:單執行緒控制,把問題劃分為若干處理步驟。構件即主程式和子程式,子程式通常可合成為模組。過程呼叫作為互動機制,即充當連線件。呼叫關係具有層次性,其語義邏輯表現為子程式的正確性。

  資料抽象和麵向物件架構風格:這種風格的構件是物件,物件是抽象資料型別的例項。在抽象資料型別中,資料的表示和他們的相應操作被封裝起來,物件的行為體現在其接受和請求的動作。連線件即物件間互動的方式,物件是通過函式和過程函的呼叫來互動的。它具有封裝性,一個物件的改變不會影響其他物件。物件又有狀態和操作,也有責任維護狀態。這種解僱風格中包含封裝、互動、多型、整合和重用等特徵。

  層次結構架構風格:層次系統組織成一個層次結構,構件在一些層實現了虛擬機器。連線件通過決定層間如何互動的協議來定義,拓撲約束包括對相鄰層間互動的約束。這個風格的特點是每層為上一層提供服務,使用下一層服務,只能見到與自己鄰接的層。大的問題分解為若干個漸進的小問題,逐步解決,隱藏了很多複雜度。修改一層,最多影響兩層,而通常只能影響上層。上層必須知道下層的身份,不能調整層次之間的順序。

3,獨立構件風格

  程序通訊架構風格:構件是獨立的過程,連線件是訊息傳遞。這種風格的特點是構件通常是命名過程,訊息傳遞的方式可以是點到點、非同步和同步方式,以及遠過程呼叫等。

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

4,虛擬機器風格

  直譯器架構風格:一個直譯器通常包括完成解釋工作的解釋引擎、一個包含將被解釋的程式碼的儲存區、一個記錄解釋引擎當前工作狀態的資料結構,以及一個記錄原始碼被解釋執行進度的資料結構。具有直譯器風格的軟體中含有一臺虛擬機器,可以模擬硬體的執行過程和一些關鍵應用,其缺點是執行效率較低。

  基於規則的系統:包括規則集、規則直譯器、規則/資料選擇器及工作記憶體。

5,倉庫風格

  資料庫架構風格:資料庫架構是倉庫風格最常見的形式,構件主要有兩大類,一個是中央共享資料來源,儲存當前系統的資料狀態;另一個是多個對處理元素,處理圓度對資料元素進行操作。

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