知識圖解是一個非常實用的技能,但不是很好掌握。
在軟體業中,軟體架構師會用圖解表達系統之間的關聯,但傳統的軟體架構圖往往非常複雜,原本是要增進溝通效率,結果反而沒人看得懂。這篇文章分享由軟體架構師 Simon Brown 提出的 C4 模型,可以很好地讓圖解變的「見樹又見林」,最後我還會分享在軟體業之外的應用。
如果你是需要在工作場合中思考與溝通複雜事物的人,例如講師、產品規劃人員、工程師、設計師…等,就一起來看看這篇文章吧!
1. 架構的圖解好複雜怎麼辦?試試看 C4 模型
工程師喜歡用箭頭、框框來討論流程,因為清楚、簡單又好用。
然而到了討論後期,這些圖往往開始 “”長大,、最後大到已經不知道從哪裡看起的地步。例如一張軟體架構圖上將系統、伺服器、軟體、API、容器、元件…等細節一次呈現,結果只有畫圖的人自己看得懂。
怎麼辦呢?Simon Brown 提出了好解法-C4 模型。
圖片來源:The C4 Model for Software Architecture (infoq.com)
2. C4 模型的 4 個層級,由資訊顆粒度的粗細來區分
C4 Model 是由 Simon Brown 這位軟體架構師提出的圖解方法,他將一套系統的圖解分成 4 個層級,兼顧軟體架構的可讀性與完整性。
這4個層級依序由資訊顆粒度的大小來做區分,由大小依序是:
- Level 1 : Context (上下文/脈絡)
- Level 2:Containers (容器)
- Level 3:Components (元件/組件)
- Level 4:Code (程式碼)
Level 1 — Context
Context 是描述自家公司的「軟體系統」與「現實世界」的互動方式。
例如
- 使用銀行軟體系統的使用者
- 內部網路銀行系統
- E-mail 系統
- 銀行內部核心系統
- …
圖片來源:The C4 Model for Software Architecture (infoq.com)
Level 2 — Containers
說明目標系統中的主要容器 (Containers) 組成。容器的例子有 :
- Applications
- client-side-single web page
- server-side API application
- data stores
- microservices
圖片來源:The C4 Model for Software Architecture (infoq.com)
Level 3 — Components
元件(Components) 會直接對應到 1 組實際的抽象化程式碼 (例如登入相關的程式碼 — Sign-in controller)。
圖片來源:The C4 Model for Software Architecture (infoq.com)
Level 4 — Code
Code 是程式碼的實作細節,在圖解上會使用如 UML 表示程式 Class (類別) 的互動關係。
3. C4 模型帶給我的啟發,不只用在軟體、還能用在生活
C4 模型很像是看一張 Google Map,從大地圖開始、不斷 Zoom in 到一個國家的馬路上。
4 Level 只是一個概念,背後可學習的關鍵是:從大到小依序圖解。
例如我若要解說「從0到1寫出一篇文章」,可以圖解成:
- Level 1 : 先畫出寫作的每個步驟,例如發想靈感 > 寫下草稿 > 編輯文章 > 發表文章 > 歸檔文章
- Level 2:針對想要解說的步驟進行拆解。例如想解說「編輯文章」,我會拆成「編輯內文」、「製作文章封面」這2個模組。
- Level 3:針對特定的模組再進行拆解,例如「製作文章封面」可以再拆解成「Unsplash (抓取免費圖片)」、「Keynote (製作封面)」
- Level 4:最底層的細部操作,例如對於「Keynote」的操作可以「加入形狀」、「加入文字」、「加入遮罩」
透過 Zoom in,除了讓讀者可以了解每一層級該關注的內容外,也可以讓講者思考自己的工作流程是否有問題、有哪些可以優化的地方。
喜歡我的文章嗎?以下是更多關於我的資訊。
▶ 關於文章
1/ 歡迎
訂閱電子報 加入 700+ 學習愛好者的行列,每週 1 個學習行動建議!
2/ 常滑 Facebook 嗎?可以幫我的
Facebook 粉絲團 按個讚,就可以看到文章啦~
3/ 想要掌握最新文章,可以點擊「
追蹤」我~
4/ 如果你覺得文章寫的不錯,可以對文章點愛心讓我知道 ❤️
▶ 關於我
Software Technical writer @ OwlTing 奧丁丁集團 我專注寫
1/ SaaS 軟體產品規劃
2/ 個人知識管理
3/ 線上寫作的文章
擁有 6+ 年的SaaS產品經理工作經驗,☕️ 歡迎講座邀約、諮詢或跟我喝杯咖啡聊聊天,我的信箱是
[email protected]
▶︎ 建立人脈
歡迎使用
LinkedIn 與我交流,你可以「加我為好友」建立連結 | LinkedIn @ Chi Chu 歡迎交流