“4+1”視圖模型


“4+1”視圖模型從5個不同的視角包括邏輯視圖、進程視圖、物理視圖、開發視圖和場景視圖來描述軟件體系結構。

每一個視圖只關心系統的一個側面,5個視圖結合在一起才能反映系統的軟件體系結構的全部內容。

邏輯視圖:

標記符號:

邏輯視圖主要支持系統的功能需求,即系統提供給最終用戶的服務。在邏輯視圖中,系統分解成一系列的功能抽象,這些抽象主要來自問題領域。這種分解不但可以用來進行功能分析,而且可用作標識在整個系統的各個不同部分的通用機制和設計元素。(感覺就是類和類服務)

在面向對象技術中,通過抽象,封裝和繼承,可以用對象模型來代表邏輯視圖,用類圖來描述邏輯視圖。

邏輯視圖中使用的風格為面向對象的風格,邏輯視圖設計中要注意的主要問題是要保持一個單一的、內聚的對象模型貫穿整個系統。

筆者觀點:邏輯視圖就是把功能模塊分出來,功能模塊封裝成類,然后對象類與功能類之間所有的關系表示出來就可以了。

下面是一個通信系統體系結構(ASC,communication system Architecture)的邏輯視圖:

開發視圖(模塊視圖):

標記符號:

開發視圖也稱模塊視圖,主要側重於軟件模塊的組織和管理

開發視圖要考慮軟件內部的需求,如軟件開發的容易性、軟件的重用和軟件的通用性,要充分考慮由於具體開發工具的不同而帶來的局限性。

開發視圖通過系統輸入輸出關系的模型圖和子系統圖來描述。

在開發視圖中,最好采用4-6層子系統,而且每個子系統僅僅能與同層或更低層的子系統通訊,這樣可以使每個層次的接口既完備又精練,避免了各個模塊之間很復雜的依賴關系。

設計時要充分考慮,對於各個層次,層次越低,通用性越強,這樣,可以保證應用程序的需求發生改變時,所做的改動最小。開發視圖所用的風格通常是層次結構風格。

筆者觀點:開發視圖就是將系統分成4-6層,越底層的就越通用也越小,底層的可以組成上一層的,相鄰兩層的聯系比較大,感覺這里面的界限比較難確定。

一個例子:

進程視圖:

標識符號:

進程視圖側重於系統的運行特性,主要關注一些非功能性的需求。

進程視圖強調並發性、分布性、系統集成性和容錯能力,以及從邏輯視圖中的主要抽象如何適合進程結構。它也定義邏輯視圖中的各個類的操作具體是在哪一個線程中被執行的。

進程視圖可以描述成多層抽象,每個級別分別關注不同的方面。在最高層抽象中,進程結構可以看作是構成一個執行單元的一組任務。它可看成一系列獨立的,通過邏輯網絡相互通信的程序。它們是分布的,通過總線或局域網、廣域網等硬件資源連接起來。

筆者觀點:進程視圖就是邏輯視圖中一個具體功能是怎樣在線程中執行的。描述的是邏輯視圖中的工作細節。

一個例子:

物理視圖:

標識符號:

物理視圖主要考慮如何把軟件映射到硬件上,它通常要考慮到系統性能、規模、可靠性等。解決系統拓撲結構、系統安裝、通訊等問題。

當軟件運行於不同的節點上時,各視圖中的構件都直接或間接地對應於系統的不同節點上。因此,從軟件到節點的映射要有較高的靈活性,當環境改變時,對系統其他視圖的影響最小。

筆者觀點:物理視圖就是分配構件的物理資源,將構件或進程的物理資源分配情況展示出來。

一個例子:

大型系統的物理視圖可能會變得十分混亂,因此可以與進程視圖的映射一道,以多種形式出現,也可單獨出現。

例子(具有進程分配的大型ACS系統的物理視圖):

場景視圖:

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

筆者觀點:場景視圖就是描述現實中的一個系統運用場景的過程,把其中牽涉到的對象,服務和操作都展示出來。

例子:

邏輯視圖和開發視圖描述系統的靜態結構,而進程視圖和物理視圖描述系統的動態結構。

對於不同的軟件系統來說,側重的角度也有所不同。例如,對於管理信息系統來說,比較側重於從邏輯視圖和開發視圖來描述系統,而對於實時控制系統來說,則比較注重於從進程視圖和物理視圖來描述系統。

建模工具和符號的選擇:沒有統一規定。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM