最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

C4模型,架構(gòu)設(shè)計圖的腳手架,你值得擁有

2023-02-23 07:44 作者:程序員-王堅  | 我要投稿

對于軟件開發(fā)團隊來說,寫軟件設(shè)計文檔,花架構(gòu)圖,是日常工作中的關(guān)鍵一項。

而其中,如何畫好系統(tǒng)設(shè)計的架構(gòu)圖呢? Simon Brown 就 提出 C4 模型,來解決這個問題。

基于C4模型的腳手架,架構(gòu)師們就可以統(tǒng)一團隊內(nèi)的不同層級的視角,交付一個成體系的架構(gòu)設(shè)計。

下面具體看一下C4模型吧。

什么是C4模型?

C4 模型是一種輕量級的軟件架構(gòu)圖的表示法,旨在幫助團隊更好地理解和溝通軟件架構(gòu)設(shè)計。

C4代表了四個層次的抽象化,即:

  • 上下文(Context):上下文層次主要描述了軟件系統(tǒng)與外部系統(tǒng)或人員之間的交互關(guān)系,其目的是為了提供軟件系統(tǒng)的背景和整體結(jié)構(gòu)。

  • 容器(Container):容器層次描述了軟件系統(tǒng)中的容器(如服務(wù)器、數(shù)據(jù)庫等)以及它們之間的關(guān)系,其目的是為了提供軟件系統(tǒng)內(nèi)部的大體結(jié)構(gòu)。

  • 組件(Component):組件層次描述了容器內(nèi)的組件(如Web應(yīng)用程序、服務(wù)、數(shù)據(jù)庫架構(gòu)等)以及它們之間的關(guān)系,其目的是為了更細致地了解軟件系統(tǒng)的內(nèi)部組成。

  • 代碼(Code):代碼層次描述了組件內(nèi)的代碼實現(xiàn),其目的是為了幫助開發(fā)者更好地了解組件的實現(xiàn)和技術(shù)細節(jié)。

如上圖所示,這四個層次對應(yīng)著從高到低的不同的抽象程度。對應(yīng)到軟件系統(tǒng)中來說,就是能夠從不同的層級視圖上,展示軟件的架構(gòu),使得設(shè)計者和開發(fā)者們可以更好地理解、交流架構(gòu)設(shè)計,并推進架構(gòu)的演進升級。

第1級:系統(tǒng)上下文圖

系統(tǒng)上下文圖是軟件系統(tǒng)設(shè)計的起點,是讓你后退一步以看到大的視角。

畫一個圖表,將你的系統(tǒng)顯示為中心的一個盒子,周圍是展現(xiàn)的主要是兩類信息:

  • 本系統(tǒng)的用戶是誰;

  • 本系統(tǒng)如那些外部系統(tǒng)有交互。

細節(jié)在這里并不重要,因為這是你縮小的視圖,顯示了系統(tǒng)全景的大圖。重點應(yīng)該放在人(參與者、角色、角色等)和軟件系統(tǒng)上,而不是技術(shù)、協(xié)議和其他低級細節(jié)上。這是一種可以展示給非技術(shù)人員的圖表。

  • 呈現(xiàn)范圍:單個軟件系統(tǒng)。

  • 主要元素:范圍內(nèi)的軟件系統(tǒng)。

  • 支持元素:在范圍內(nèi)直接連接到軟件系統(tǒng)的人員(例如用戶、參與者、角色或角色)和軟件系統(tǒng)(外部依賴項)。通常,這些其他軟件系統(tǒng)位于您自己的軟件系統(tǒng)的范圍或邊界之外,您對它們沒有責任或所有權(quán)。

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

  • 注意:推薦推薦給大多數(shù)團隊。

第2級:容器圖

此處的容器,不是指Docker的一個容器。

而是類似于服務(wù)器端web應(yīng)用程序、單頁應(yīng)用程序、桌面應(yīng)用程序、移動應(yīng)用程序、數(shù)據(jù)庫模式、文件系統(tǒng)等。

本質(zhì)上,容器是一個單獨的可運行/可部署單元(例如,一個單獨的進程空間),用于執(zhí)行代碼或存儲數(shù)據(jù)。

系統(tǒng)上下文圖將本系統(tǒng)看作一個黑盒,那么容器圖則是把這個黑盒打開,深入到了軟件的內(nèi)部,展示了軟件內(nèi)體系結(jié)構(gòu)的高級形狀,以及職責如何在其中分布。

它還展示了主要的技術(shù)選擇以及容器之間如何通信。

這是一個簡單的、以技術(shù)為重點的高級圖表,對軟件開發(fā)人員和支持/操作人員都很有用。

  • 呈現(xiàn)范圍:單個軟件系統(tǒng)。

  • 主要元素:范圍內(nèi)軟件系統(tǒng)中的容器。

  • 支持元素:直接連接到容器的人員和軟件系統(tǒng)。

  • 目標受眾:軟件開發(fā)團隊內(nèi)外的技術(shù)人員;包括軟件架構(gòu)師、開發(fā)人員和操作/支持人員。

  • 注意:推薦推薦給大多數(shù)團隊,該圖沒有說明部署場景、集群、復(fù)制、故障轉(zhuǎn)移等。

第3級:組件圖

組件圖,則是進一步放大并分解了每一個容器,

接下來,您可以放大并進一步分解每個容器,以識別容器內(nèi)的主要結(jié)構(gòu)構(gòu)建塊,及其互相之間的交互關(guān)系。

組件圖展示了容器是如何由許多“組件”組成的,每個組件是什么,它們的職責和技術(shù)/實現(xiàn)細節(jié)等。

  • 呈現(xiàn)范圍:單個容器。

  • 主要元素:范圍內(nèi)容器中的組件。

  • 支持元素:容器(在軟件系統(tǒng)范圍內(nèi))加上直接連接到組件的人員和軟件系統(tǒng)。

  • 目標受眾:軟件架構(gòu)師和開發(fā)人員。

  • 注意:不推薦給大多數(shù)團隊,如果你覺得組件圖增加了價值,那么只創(chuàng)建組件圖,并考慮為長期存在的文檔自動化創(chuàng)建組件圖。

第4級:代碼結(jié)構(gòu)圖

如果需要深入到組件代碼層面,代碼結(jié)構(gòu)圖可以顯示組件是如何作為代碼來實現(xiàn)的。主要是使用使用UML類圖、實體關(guān)系圖或類似的方法。

理想情況下,這種底層細節(jié)的圖表,將使用工具(例如IDE或UML建模工具)自動生成,應(yīng)該考慮只顯示那些,你想要重點關(guān)注的屬性和方法。

所以,除了最重要或最復(fù)雜的組件之外,不建議使用這種詳細級別。

  • 呈現(xiàn)范圍:單個組件。

  • 主要元素:組件作用域中的代碼元素(例如類、接口、對象、函數(shù)、數(shù)據(jù)庫表等)。

  • 目標受眾:軟件架構(gòu)師和開發(fā)人員。

  • 注意:不推薦用于大多數(shù)團隊,對于長期存在的文檔,大多數(shù)IDE工具都可以按需生成這種級別的詳細信息。

使用C4模型的6個注意點

在團隊架構(gòu)中,使用C4模型來呈現(xiàn)架構(gòu)視圖時,需要注意以下幾點:

  • 目標清晰:在繪制C4模型之前,應(yīng)該明確需要建模的系統(tǒng)、軟件或架構(gòu)的目標。確保每個層次上的圖表都有明確的目的,能夠傳達給觀眾或其他利益相關(guān)者有關(guān)系統(tǒng)或軟件的信息。

  • 約定標識符:在繪制C4模型時,應(yīng)使用一致的標識符來命名和標識不同的元素,例如系統(tǒng)、容器、組件和代碼等。這有助于提高模型的可讀性和理解性。

  • 簡單明了:C4模型強調(diào)簡潔、清晰的表述。在繪制C4模型時,應(yīng)避免使用過多的細節(jié)或技術(shù)語言,以確保每個層次上的圖表都易于理解。

  • 易于更新:C4模型應(yīng)該能夠隨著時間的推移而更新,以反映系統(tǒng)或軟件架構(gòu)的演變。在繪制C4模型時,應(yīng)該考慮如何使其易于維護和更新。

  • 適度細節(jié):在繪制C4模型時,應(yīng)考慮到每個層次上需要展示多少細節(jié)。如果圖表過于復(fù)雜,可能會導(dǎo)致人們難以理解和使用。

  • 迭代性:C4模型是一個迭代的過程。在實踐中,您可能需要多次繪制和修改C4模型以滿足需求,并使其更好地反映系統(tǒng)或軟件架構(gòu)。

總之,C4模型是一種簡單但強大的建模方法,可以幫助您建立清晰、易于理解和易于維護的軟件架構(gòu)圖表。通過遵循上述建議,您可以更好地使用C4模型來設(shè)計和描述復(fù)雜的軟件系統(tǒng)。

實踐中常見的6個誤區(qū)

在使用C4模型時,可能會遇到一些常見的誤區(qū)。

以下是一些常見的誤區(qū),以及如何避免這些問題的方法:

  • 過度關(guān)注細節(jié):C4模型旨在提供一個高層次的概述,以幫助人們理解系統(tǒng)或軟件架構(gòu)。因此,過度關(guān)注細節(jié)可能會使模型過于復(fù)雜,難以理解。建議在模型的每個層次上保持適度的細節(jié),以便讀者可以輕松理解。

  • 忽略系統(tǒng)間的交互:C4模型強調(diào)系統(tǒng)的上下文視圖,但有時候人們可能會忽略系統(tǒng)之間的交互。在建模時,應(yīng)該考慮系統(tǒng)之間的交互以及它們?nèi)绾卧谲浖軜?gòu)中發(fā)揮作用。

  • 忽略時間和演變:C4模型應(yīng)該是可演化的,這意味著模型應(yīng)該能夠反映軟件架構(gòu)的演變。在建模時,應(yīng)該考慮如何使模型易于更新和維護,以便反映軟件架構(gòu)的演變。

  • 與UML混淆:雖然C4模型和UML有些相似之處,但它們是不同的建模方法。C4模型的重點是軟件架構(gòu),而UML的重點是面向?qū)ο蟮木幊?。因此,建議不要將C4模型與UML混淆。

  • 未充分考慮受眾:C4模型的目的是使軟件架構(gòu)易于理解。因此,在繪制模型時,應(yīng)該考慮模型的受眾群體,并為他們提供足夠的上下文信息和詳細說明。

  • 忽略安全和性能:在建模軟件架構(gòu)時,應(yīng)該考慮安全和性能方面的因素。這些因素對系統(tǒng)的設(shè)計和實現(xiàn)都有重要影響,因此應(yīng)該在C4模型中考慮它們。

總之,避免這些常見的誤區(qū),可以在你的軟件架構(gòu)建模工作中,讓C4模型更好的發(fā)揮作用。

寫在最后

C4模型的架構(gòu)設(shè)計的腳手架,值得推薦的關(guān)鍵:就是其為架構(gòu)設(shè)計圖,提供了一個分層的清晰的結(jié)構(gòu)規(guī)范。

一份可視化的 C4 模型 架構(gòu)視圖,可以讓團隊內(nèi)的人,從不同層面上入手,快速到找到自己關(guān)注的要點,這是非常有利于團隊內(nèi)對系統(tǒng)設(shè)計的溝通的。


C4模型,架構(gòu)設(shè)計圖的腳手架,你值得擁有的評論 (共 條)

分享到微博請遵守國家法律
新干县| 青海省| 长葛市| 保靖县| 丰镇市| 榕江县| 柘城县| 余干县| 雅江县| 大理市| 郁南县| 吴桥县| 讷河市| 收藏| 蒲江县| 峡江县| 土默特左旗| 江华| 高州市| 沭阳县| 子长县| 株洲市| 收藏| 永修县| 寻甸| 武宣县| 永济市| 凭祥市| 青神县| 左云县| 贵定县| 方山县| 汝州市| 纳雍县| 本溪市| 镇平县| 巫山县| 磴口县| 屯门区| 黄梅县| 和田县|