軟件架構風格是描述某一特定應用領域中系統組織方式的慣用模式,它定義一個系統家族,即一個體系結構定義一個詞匯表和一組約束。詞匯表中包含一些構件和連接件類型,而這組約束支出系統是如何將這些構件和連接件組合起來的。架構個反映了額領域中眾多系統所共有的結構和語義特特性,並指導如何將各個模塊和子系統有效的組織成一個完成的系統。概要論述你參與與分析和設計的軟件系統開發項目,以及你所承擔的主要工作。軟件系統開發中常用的軟件架構風格有哪些,詳細闡述每種風格的具體含義。詳細說明你所參與分析和設計的軟件系統采用了什么軟件架構風格,並分析采用該架構風格設計的原因。
軟件架構風格典型分類
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個部分,知識源包括若干干獨立計算的不同單元,提供解決問題的知識。它響應黑板上的變化,也只修改黑板;黑板是一個全局數據庫,包含解域的全部狀態,是知識源互相作用的唯一媒介。知識源響應通過黑板狀態的變化來控制,黑板架構風格通常應用於對解決問題沒有確定性算法的系統中,如信號處理、問題規划以及編譯器優化等軟件系統的設計中。