近期在工作之余閱讀了一本架構(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í)行文件寡壮,負責其固定的功能贩疙,在每個單獨的容器會有一系列的組件來構(gòu)成該容器;組件是應用程序中的功能模塊况既,每個組件負責各自單獨的功能这溅,最后為了實現(xiàn)該組件的特定功能,會有一系列的類來實現(xiàn)這個組件棒仍”ィ總體的結(jié)構(gòu)示意圖如下:
根據(jù)場景的不同,可以將C4模型中的四個部分對應為:語境圖(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)原理养盗。語境圖應該是一種可以展示給非技術(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)周邊的容器圖朗兵。一個容器可以是一個:服務器端的web應用澈缺、單頁面的應用程序忱辅、桌面應用程序挣惰、移動端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ù)支持人員
注意:該圖不需要介紹部署場景、集群弧岳、復制和故障轉(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模型工具自動生成,你應該思考的是需要暴露類的那些屬性和接口來表示這個組件的功能桐臊。類圖不推薦制作胎撤,除非組件的功能邏輯相當復雜晓殊。
范圍:單個組件
主要元素:組件范圍內(nèi)的代碼元素断凶,如:類、接口巫俺、對象认烁、函數(shù)、基礎表格等等介汹。
受眾:架構(gòu)師和開發(fā)者
總結(jié)
C4模型主要通過“抽象first”的方式來繪制架構(gòu)圖却嗡,通過基于上層的抽象反應出軟件系統(tǒng)的結(jié)構(gòu),同時也體現(xiàn)了開發(fā)者對于軟件系統(tǒng)的思考嘹承,這種基于子集的抽象和分層的方式使C4模型非常容易學習和使用窗价。
在軟件項目需要與擬出一份技術(shù)文稿的時候,可以先試試將軟件系統(tǒng)繪制成一個個架構(gòu)圖叹卷,來梳理其結(jié)構(gòu)撼港。