標籤:
軟體架構概述
軟體架構是具有一定形式的結構化元素,即構件的集合,包括處理構件、資料構件和串連構件。處理構件負責對資料進行加工,資料構件是被加工的資訊,串連構件把架構的不同部分串連起來。軟體架構是軟體設計過程的一個層次,這一層次超越計算過程中的演算法設計和資料庫設計。架構問題包括總體組織和全域控制、通訊協定、同步、資料存取,給設計項目分配特定功能,設計項目的組織,規模和效能,在各設計方案間進行選擇等。軟體架構處理演算法與資料結構之上關於整個系統結構設計和描述方面的一些問題,如全域群組織和全域控制結構、關於通訊、同步與資料存取的協議,設計構件功能定義,物理分佈於合成,設計方案的選擇、評估與實現等。
軟體架構包括一個或一組軟體構件、軟體構件的外部的可見特性及其相互關係。其中,“軟體外部的可見度”是指軟體構件提供的服務、效能、特性、錯誤處理、共用資源等。對於複雜系統和大型系統的開發而言,設計好軟體架構是保證軟體品質的根本措施。具體來說,軟體架構具有以下作用:
(1)軟體架構是項目干係人進行交流的手段。
(2)軟體架構是早期設計決策的體現。
(3)軟體架構是可以傳遞和可複用的模型。
軟體架構建模
設計軟體架構的首要問題是如何表示軟體架構,即如何對軟體架構建模。根據建模的側重點不同,可以將軟體架構的模型分為5種,分別是結構模型、架構模型、動態模型、過程模型和功能模型。
(1)結構模型:這是一個最直觀、最普遍的建模方法。這種方法以架構的構件、串連件(connector)和其他概念來刻畫結構,并力圖通過結構來反映系統的重要語義內容,包括系統的配置、約束、隱含的假設條件、風格、性質等。研究結構模型的核心是架構描述語言。
(2)架構模型:架構模型與結構模型類似,但它不太側重描述結構的細節而更側重於整體的結構。架構模型主要以一些特殊的問題為目標建立只針對和適應問題的結構。
(3)動態模型:動態模型是對結構模型和架構模型的補充,研究系統的“大顆粒”的行為性質。例如,描述系統的重新設定或演化。動態可以指系統總體結構額配置、建立或拆除通訊通道或計算的過程。這類系統是激勵型的。
(4)功能模型:該模型認為架構是由一組功能構件按層次組成,下層向上層提供服務。他可以看作是一種特殊的架構模型。
Kruchten在1995年提出了一個“4+1”的視圖模型。“4+1”視圖模型從5個不同的視角包括邏輯視圖、進程視圖、物理視圖、開發視圖和情境視圖來描述軟體架構。每個視圖只關心系統的一個側面,5個視圖結合在一起才能反映系統的軟體架構的全部內容。
(1)邏輯視圖(logic view):主要支援系統的功能需求,即系統提供給終端使用者的服務。
(2)開發視圖(development view):也稱為模組視圖(module view),主要側重於軟體模組的開發和管理。
(3)進程視圖(process view):側重於系統的運行特性,主要關注一些非功能性的需求,例如系統的效能和可用性。
(4)物理視圖(physical view):主要考慮如何把軟體映射到硬體上,它通常要考慮到解決系統拓撲結構、系統安裝、通訊等問題。
(5)情境(scenarios):可以看作是那些重要活動的抽象,它使四個視圖有機聯絡起來,從某種意義上說情境是最重要的需求抽象。
軟體架構風格
軟體架構設計的一個核心問題是能否使用重複的架構模式,即能否達到架構級的軟體重用。也就是說,能否在不同的軟體系統中,使用同一架構。軟體架構風格是描述某一特定應用領域中系統組織方式的慣用模式(idiomatic paradigm)。架構風格定義了一個系統家族,即一個架構定義一個詞彙表和一組約束。詞彙表中包含一些構件和串連件類型,而這組約束指出系統是如何將這些構件和串連件組合起來的。架構風格反映了領域中眾多系統所共有的結構和語義特性,並指導如何將各個模組和子系統有效地組織成一個完整的系統。按這種方式理解,軟體架構風格定義了用於描述系統的術語和一組指導構件系統的原則。
通用架構風格分類如下:
(1)資料流風格:批處理序列,管道/過濾器。
(2)調用/返迴風格:主程式/子程式,物件導向風格,階層。
(3)獨立構件風格:進程通訊,事件系統。
(4)虛擬機器風格:解譯器,基於規則的系統。
(5)倉庫風格:資料庫系統,超文本系統,黑板系統。
軟體架構設計