工程能力之C4模型


概述

剛在InfoQ上看到一篇介紹C4Model的文章,覺得這個模型設計的很贊,很有指導意義,做個簡單的記錄.

Why,為什么需要架構圖?

ThoughtWorks中國 文章中有幾句話我覺得很有道理,這里直接摘抄.

“紙上的不是架構,每個人腦子里的才是” ; “那些精妙的方案之所以落不了地,是因為沒有在設計上兼容人類的愚蠢”。

我覺得,軟件工程,或者軟件中的術語發明的原因就是為了減少溝通的障礙,讓大家在一個 平台 上對話.

而架構圖可以起到如下作用;

  1. 一方面: 讓軟件的開發人員自己,以及和軟件開發相關的用戶,PM等人員都能快速了解一個系統的業務模型;
  2. 另一方面: 利於開發人員相互之間協作,定下方案,因為自然語言是有模糊地帶的,難以無歧義的傳達;
  3. 利於軟件系統的維護,一圖勝千言.

What,C4 是什么呢?

詳細的講解,可以參考InfoQ的文章,這里做個總結.

C4 4個單詞的首字母為C的單詞的代表, 分別為: 上下文(Context),容器(Container),組件(Component)和代碼(Code);

依據不同的受眾,分別抽象出了這四個級別.其中容器(應用程序、數據存儲、微服務等,組件和代碼來描述一個軟件系統的靜態結構.

第 1 層:系統上下文

顯示了正在構建的軟件系統,以及構建的系統與用戶及其他軟件系統之間的關系。
這個層級的圖,關注的是用戶層面看到的關系,注重的是和准備開發的系統與外部系統和交互人之間的關系.

將用戶,你的代建系統,已有的其他系統用不同的顏色進行區分;

第 2 層:容器

將軟件系統放大,顯示組成該軟件系統的容器(應用程序、數據存儲、微服務等)。

在這個層級,已經關注系統本身了,開始關注這個系統有哪些部分組成,不過粒度非常粗.

第 3 層:組件

將單個容器放大,以顯示其中的組件。這些組件映射到代碼庫中的真實抽象(例如一組代碼)。

在這個層級,關注的已經是系統中的模塊具體的功能了,這部分可能對應了具體的功能模塊.

第 4 層:代碼

如若必要,可以放大個別組件,以顯示該組件的實現方式。 一般以UML圖的形式展示;

這個層級,是具體的開發人員關注的實現細節了,用於具體的功能邏輯的分析和展示.

How,怎能畫圖呢?

在C4官網,下有個Tooling節點,講述了目前已有的幾個畫圖工具.

參考

  1. 用於軟件架構的C4模型
  2. 可視化架構設計——C4介紹
  3. C4官網


免責聲明!

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



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