我懂了,原來這就是4+1架構模型!
一個有效的架構描述需要做到以人為本,不同的利益相關方展示不同的視點及檢視。
那究竟需要從哪些視點入手,應該展示哪些檢視?這是個問題。
於是,1995年,Philippe Kruchten 在《IEEE Software》上發表了題為 The 4+1 View Model of Architecture 的論文,引起了業界的極大關注,在這個論文中,首次提出了使用 4+1檢視 來解決這個問題。
4+1 檢視
“4+1檢視” 從5個不同的側面來描述架構,其中包括4個主檢視和一個冗餘的場景檢視。4個主檢視分別如下:
邏輯檢視(Logical View):主要是整個系統的抽象結構表述,關注系統提供終端使用者的功能。 程式檢視(Process view):處理檢視關注系統動態執行時,主要是程式以及相關的併發、同步、通訊等問題。 物理檢視(Physical view ):定義軟體到硬體的對映,反映架構的分散式特性。 開發檢視(Development View):定義在開發環境中軟體的靜態組織結構。
在進行架構設計時,架構的各個關注點夠歸結於以上4個檢視,同時使用一個場景檢視對它們進行解釋和說明,就形成了第5個檢視,也就是4+1架構模型中的1。
在設計架構時,會基於每個檢視對系統進行獨立分解,每種分解都是基於這個檢視的關注點而進行的。基於每個檢視的分解都會使用相同的方法和步驟,把系統分解成元件並維持元件間互動的關係。但是每個檢視構成的元件型別各不相同,這些元件的型別源自檢視分解的需求。
01 邏輯檢視
用於描述系統的功能需求,即系統給使用者提供哪些服務;以及描述系統軟體功能拆解後的元件關係、元件約束和邊界,反映系統整體組成與系統如何構建的過程。
下面springcloud微服務的邏輯檢視示例(僅部分),就描述了springcloud中各個功能元件。從這個圖中,基本可以對springcloud有一個大顆粒度的瞭解。
02 物理檢視
開發出的軟體系統,最終是要執行在物理或軟體環境上。物理環境可能是伺服器、PC機、移動終端等物理裝置;軟體環境可以是虛擬機器、容器、程式或執行緒。部署檢視就是對這個部署資訊進行描述。在UML中通常由部署圖表示。
03 程式檢視
處理檢視,又稱過程檢視、執行檢視。用於描述系統軟體元件之間的通訊時序,資料的輸入輸出。在UML中通常由時序圖和流程圖表示,如下圖所示:
04 開發檢視
開發檢視關注的是架構如何指導開發流程,在這個檢視中,軟體系統會被分解成小的子程式或軟體包,併為每個子程式或軟體包定義介面。系統設計人員會根據這些分解的子程式和軟體包分配工作內容。
05 場景檢視
場景檢視是4+1架構模型中最重要的檢視,其他4個檢視都是以場景檢視為核心的。它用於描述系統的參與者與功能用例間的關係,反映系統的最終需求和互動設計。在UML中通常由用例圖表示:
小結
上面我們詳細介紹了4+1架構模型,但是在公司實際架構活動中往往都是會自定義一套符合公司架構標準的架構設計模板,然後根據特定專案進行裁剪或補充,那我們為什麼不直接使用上面提到的4+1架構模型進行架構設計呢?
個人覺得主要有三個方面的原因:
系統複雜度增加:1995年提出4+1架構模型時系統大部分還是單體系統,現在基本是分散式系統的天下。4+1模型中的核心檢視場景檢視無法描述清楚整體業務。 繫結UML圖:4+1檢視大部分繫結的是UML元素,顏值即正義,已經不符合今天的審美要求了。 理解困難:4+1檢視的邏輯檢視、開發檢視、處理檢視比較容易混淆。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70024420/viewspace-2926438/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 圖解 | 原來這就是 class圖解
- 哦?原來這就是 JVM 垃圾!JVM
- 圖解 | 原來這就是TCP圖解TCP
- 懂了!VMware/KVM/Docker原來是這麼回事兒Docker
- 圖解 | 原來這就是 IO 多路複用圖解
- 圖解 | 原來這就是執行緒池圖解執行緒
- 圖解 | 原來這就是動態規劃圖解動態規劃
- 這些併發模型你真的懂了嗎?未必模型
- 原來AI離我這麼這麼這麼這麼近!AI
- 《資訊簡史》書評:“原來,我註定就是個搞 IT 的”
- 我以為我學懂了資料結構,直到看了這個導圖才發現,我錯了資料結構
- 架構就是上下文 - Eltjo架構
- 黑客:這就是我的牢獄生活黑客
- 4+1檢視及軟體架構文件(System Architecture Document)SAD架構
- 終於搞懂了!原來 Vue 3 的 generate 是這樣生成 render 函式的Vue函式
- 物件導向:我就是來看看是不是丟了個物件在這裡~物件
- 看完這篇文章,我奶奶都懂了https的原理HTTP
- 這就是OpenAI神秘的Q*?史丹佛:語言模型就是Q函式OpenAI模型函式
- 我就是程式,程式就是我嗎? (轉)
- 面試就是你來我往,互相瞭解!面試
- 原來4年前的這個專案就是現在的Metaverse了Metaverse
- IT架構之IT架構模型——思維導圖架構模型
- 資深架構師Sum的故事:正則!入門就是這樣簡單架構
- Tomcat 架構模型Tomcat架構模型
- react-redux一點就透,我這麼笨都懂了!ReactRedux
- 終於搞懂了!原來vue3中template使用ref無需.value是因為這個Vue
- 原來結構體函式還能這樣用結構體函式
- 馬雲:我這輩子最大錯誤 就是建立阿里!阿里
- Hadoop的架構模型Hadoop架構模型
- 我入職阿里後,才知道原來簡歷這麼寫阿里
- 沒錯,這就是【石杉的架構筆記】立下的2019年FLAG!架構筆記
- 用 Java 訓練深度學習模型,原來可以這麼簡單!Java深度學習模型
- 記錄--終於搞懂了!原來vue3中template使用ref無需.value是因為這個Vue
- SmartHalo智慧配件:這就是我想要的腳踏車
- 長見識了!原來這就是精益工廠佈局的U形生產線
- RabbitMQ架構詳解(7大架構原理模型圖解)MQ架構模型圖解
- 企業架構 - 企業架構成熟度模型(EAMM)架構模型
- 我的架構經驗系列文章-前端架構架構前端