畫出你的項目架構(gòu)圖

近期在工作之余閱讀了一本架構(gòu)方面的書籍,《軟件架構(gòu)》,由國際知名架構(gòu)師Simon Brown編寫,國內(nèi)鄧剛翻譯。全書200多頁,分為了68個章節(jié),8個部分,每個章節(jié)一到兩頁,全書閱讀下來并不會花太多時間。相比較一些軟件架構(gòu)方面的大厚本,此書比較適合作為一部架構(gòu)方面的入門書籍,閱讀完此書,可以對架構(gòu)師這個職業(yè)角色有個清晰的認識。

全書的第四部分,介紹了關(guān)于軟件可視化的一些方案,感覺非常實用。在日常的項目開發(fā)過程中,會面臨團隊合作,部門間合作等問題,不同個體之間的合作,自然避免不了要做技術(shù)上的溝通。在缺少文檔的時候,一副可以提現(xiàn)各個模塊之間聯(lián)系的架構(gòu)圖可以很好地提現(xiàn)項目整體邏輯,提高技術(shù)溝通的有效性。書中有介紹一種C4的模型,具有很強的表達性和制作簡潔等優(yōu)勢,本文將詳細介紹這個模型。

C4模型將軟件系統(tǒng)分成:系統(tǒng)、容器、組件和類。系統(tǒng)即軟件系統(tǒng),一般需給出其具體的使用環(huán)境和需要解決的需求,在其之下會有一系列的容器;容器是一個個單獨的可執(zhí)行文件,負責(zé)其固定的功能,在每個單獨的容器會有一系列的組件來構(gòu)成該容器;組件是應(yīng)用程序中的功能模塊,每個組件負責(zé)各自單獨的功能,最后為了實現(xiàn)該組件的特定功能,會有一系列的類來實現(xiàn)這個組件。總體的結(jié)構(gòu)示意圖如下:


結(jié)構(gòu)圖

根據(jù)場景的不同,可以將C4模型中的四個部分對應(yīng)為:語境圖(Context)、容器圖(Container)、組件圖(Component)和類圖(Code),這也是C4模型名字的由來。

語境圖

系統(tǒng)語境圖是繪制一個軟件系統(tǒng)的開始。在一個方框的中間畫出系統(tǒng),系統(tǒng)周圍畫出一些與之交互的使用者和其他功能系統(tǒng)。

在語境圖中,不必詳細的展示每個細節(jié),需要更加關(guān)注于人和軟件系統(tǒng)的關(guān)系,而不是技術(shù)細節(jié)和實現(xiàn)原理。語境圖應(yīng)該是一種可以展示給非技術(shù)人員看的圖。

范圍:一整個軟件系統(tǒng)

關(guān)鍵元素:范圍內(nèi)的軟件系統(tǒng)
輔助元素:范圍內(nèi)的人和軟件系統(tǒng)之間的聯(lián)系

受眾:每個人,包括技術(shù)和非技術(shù)人員,軟件開發(fā)團隊內(nèi)的人和團隊外的人


語境圖

容器圖

一旦你理解軟件系統(tǒng)適用的IT環(huán)境,真正有益的下一步是關(guān)注于系統(tǒng)周邊的容器圖。一個容器可以是一個:服務(wù)器端的web應(yīng)用、單頁面的應(yīng)用程序、桌面應(yīng)用程序、移動端APP、數(shù)據(jù)庫方案、文件系統(tǒng)等等?;咎卣魇?,容器是一個獨立的可運行程序或者可部署單元。

容器圖展示的軟件的高層次組織結(jié)構(gòu),同時也展示了主要技術(shù)的選擇和容器之間的交互。這是一種簡單的高層技術(shù)選型的圖,但對軟件開發(fā)人員很有用。

范圍:單獨的軟件系統(tǒng)

主要元素:軟件系統(tǒng)內(nèi)的各個容器
輔助元素:和容器相關(guān)的人和軟件系統(tǒng)之間的聯(lián)系

受眾:軟件系統(tǒng)開發(fā)團隊相關(guān)的技術(shù)人員,包括了:架構(gòu)師、開發(fā)者和技術(shù)支持人員

注意:該圖不需要介紹部署場景、集群、復(fù)制和故障轉(zhuǎn)移等等


容器圖

組件圖

組件圖展示的是一個容器內(nèi)部是如何組織各個組件的,一個組件即容器內(nèi)部的一個功能和技術(shù)實現(xiàn)細節(jié)。

范圍:單個容器

主要元素:容器范圍內(nèi)的各個組件
輔助元素:容器、和組件相關(guān)的人和軟件系統(tǒng)的聯(lián)系

受眾:架構(gòu)師和開發(fā)者


組件圖

類圖

類圖是單個組件的實現(xiàn)代碼組織,可以用類似UML圖、整體關(guān)系圖來表示。

這是一種可選的圖,通常情況下可以用IDE和UML模型工具自動生成,你應(yīng)該思考的是需要暴露類的那些屬性和接口來表示這個組件的功能。類圖不推薦制作,除非組件的功能邏輯相當復(fù)雜。

范圍:單個組件

主要元素:組件范圍內(nèi)的代碼元素,如:類、接口、對象、函數(shù)、基礎(chǔ)表格等等。

受眾:架構(gòu)師和開發(fā)者


類圖

總結(jié)

C4模型主要通過“抽象first”的方式來繪制架構(gòu)圖,通過基于上層的抽象反應(yīng)出軟件系統(tǒng)的結(jié)構(gòu),同時也體現(xiàn)了開發(fā)者對于軟件系統(tǒng)的思考,這種基于子集的抽象和分層的方式使C4模型非常容易學(xué)習(xí)和使用。

在軟件項目需要與擬出一份技術(shù)文稿的時候,可以先試試將軟件系統(tǒng)繪制成一個個架構(gòu)圖,來梳理其結(jié)構(gòu)。

參考資料

C4模型官網(wǎng)

程序員必讀之軟件架構(gòu)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,741評論 25 709
  • 窺探者 文/左藝 一 春天 是你撩撥出來的 正如你撩撥了一朵 端坐蓮蓬的仙女 風(fēng) 撩撥了健壯的山 雨在荊棘里掙扎 ...
    小骨木蘭花閱讀 784評論 1 8
  • 綜覽 安全散列算法secure hash algorithm ,是一個密碼散列函數(shù)家族 是fips認證的五種安全散...
    一曲廣陵散閱讀 1,544評論 0 1
  • 成長,對努力想要抓住青春尾巴的女性來說,是一個充滿矛盾的詞,一方面,我們渴望成長,另一方面,也惶恐時間飛逝。...
    小妞育兒閱讀 469評論 3 7

友情鏈接更多精彩內(nèi)容