軟體架構風格是描述某一特定應用領域中系統組織方式的慣用模式,它定義一個系統家族,即一個體系結構定義一個詞彙表和一組限制。詞彙表中包含一些構件和連接配接件類型,而這組限制支出系統是如何将這些構件和連接配接件組合起來的。架構個反映了額領域中衆多系統所共有的結構和語義特特性,并指導如何将各個子產品和子系統有效的組織成一個完成的系統。概要論述你參與與分析和設計的軟體系統開發項目,以及你所承擔的主要工作。軟體系統開發中常用的軟體架構風格有哪些,詳細闡述每種風格的具體含義。詳細說明你所參與分析和設計的軟體系統采用了什麼軟體架構風格,并分析采用該架構風格設計的原因。
軟體架構風格典型分類
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,虛拟機風格
解釋器架構風格:一個解釋器通常包括完成解釋工作的解釋引擎、一個包含将被解釋的代碼的存儲區、一個記錄解釋引擎目前工作狀态的資料結構,以及一個記錄源代碼被解釋執行進度的資料結構。具有解釋器風格的軟體中含有一台虛拟機,可以仿真硬體的執行過程和一些關鍵應用,其缺點是執行效率較低。