天天看點

軟體架構的模型與視圖

作者:系統架構設計師

軟體架構作為一個有機的整體,可以分解成多個側面來描述,每個側面強調它的不同方面的特征。可以将軟體架構歸納成 5 種模型:結構模型、架構模型、動态模型、過程模型和功能模型。我們常用的模型是結構模型和動态模型。

(1)結構模型。此方法以架構的構件、連接配接件和其他概念來刻畫結構,并力圖通過結構來反映系統的重要語義内容,包括系統的配置、限制、隐含的假設條件、風格、性質。研究結構模型的核心是架構描述語言。

(2)架構模型。架構模型與結構模型類似,但它不太側重描述結構的細節而更側重于整體的結構。架構模型主要以一些特殊的問題為目标建立隻針對和适應該問題的結構。

(3)動态模型。動态模型是對結構或架構模型的補充,研究系統“大顆粒”的行為性質。動态可能指系統總體結構的配置、建立或拆除通信通道或計算的過程。

(4)過程模型。過程模型研究構造系統的步驟和過程。因而結構是遵循某些過程腳本的結果。

(5)功能模型。該模型認為架構由一組功能構件按層次組成,且下層向上層提供服務。它可以看作是一種特殊的架構模型。

這 5 種模型各有所長,也許将 5 種模型有機地統一在一起,形成一個完整的模型來刻畫軟體架構更合适。即将軟體架構視為這些模型的統一體,通過這些模型的表述(文檔)來完整反映軟體架構。Kruchten 在 1995 年提出了一個“4+1”的視圖模型。“4+1” 視圖模型從 5 個不同的視角包括邏輯視圖、程序視圖、實體視圖、開發視圖和場景視圖來描述軟體架構。每一個視圖隻關心系統的一個側面,5 個視圖結合在一起才能反映系統的軟體架構的全部内容。“4+1”視圖模型如下圖所示。

軟體架構的模型與視圖

(1)邏輯視圖:主要支援系統的功能需求,即系統提供給最終使用者的服務。在邏輯視圖中,系統分解成一系列的功能抽象,這些抽象主要來自問題領域。這種分解不但可以用來進行功能分析,而且可用作辨別在整個系統的各個不同部分的通用機制和設計元素。在面向對象技術中,通過抽象、封裝和繼承,可以用對象模型來代表邏輯視圖,用類圖來描述邏輯視圖。邏輯視圖中使用的風格為面向對象的風格,邏輯視圖設計中要注意的主要問題是要保持一個單一的、内聚的對象模型貫穿整個系統。

軟體架構的模型與視圖

(2)開發視圖:也稱為子產品視圖,主要側重于軟體子產品的組織和管理。軟體可通過程式庫或子系統進行組織,這樣,對于一個軟體系統,就可以由不同的人進行開發。開發視圖要考慮軟體内部的需求,如軟體開發的容易性、軟體的重用和軟體的通用性,要充分考慮由于具體開發工具的不同而帶來的局限性。開發視圖通過系統輸入輸出關系的模型圖和子系統圖來描述。可以在确定了軟體包含的所有元素之後描述完整的開發角度,也可以在确定每個元素之前,列出開發視圖原則。

(3)程序視圖:側重于系統的運作特性,主要關注一些非功能性的需求,例如系統的性能和可用性。程序視圖強調并發性、分布性、系統內建性和容錯能力,以及邏輯視圖中的主要抽象的程序結構。它也定義邏輯視圖中的各個類的操作具體是在哪一個線程中被執行的。程序視圖可以描述成多層抽象,每個級别分别關注不同的方面。

(4)實體視圖:主要考慮如何把軟體映射到硬體上,它通常要考慮到解決系統拓撲結構、系統安裝、通信等問題。當軟體運作于不同的節點上時,各視圖中的構件都直接或間接地對應于系統的不同節點上。是以,從軟體到節點的映射要有較高的靈活性,當環境改變時,對系統其他視圖的影響最小。

軟體架構的模型與視圖

(5)場景:可以看作是那些重要系統活動的抽象,它使四個視圖有機地聯系起來,從某種意義上說,場景是最重要的需求抽象。在開發架構時,它可以幫助設計者找到架構的構件和它們之間的作用關系。同時,也可以用場景來分析一個特定的視圖,或描述不同視圖構件間是如何互相作用的。場景可以用文本表示,也可以用圖形表示。

繼續閱讀