寫給想用圖解表達複雜概念的人 — 如何將複雜的事情用圖解表達清楚 ?

更新於 發佈於 閱讀時間約 5 分鐘
知識圖解是一個非常實用的技能,但不是很好掌握。
在軟體業中,軟體架構師會用圖解表達系統之間的關聯,但傳統的軟體架構圖往往非常複雜,原本是要增進溝通效率,結果反而沒人看得懂。這篇文章分享由軟體架構師 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產品經理工作經驗,☕️ 歡迎講座邀約、諮詢或跟我喝杯咖啡聊聊天,我的信箱是 muhenry608@gmail.com
▶︎ 聯繫方式
• 📪 Email:muhenry608@gmail.com
• 💬 Facebook:請先加我 個人好友 並簡短說明想要諮詢的主題
▶︎ 建立人脈
歡迎使用 LinkedIn 與我交流,你可以「加我為好友」建立連結 | LinkedIn @ Chi Chu 歡迎交流
avatar-img
211會員
129內容數
分享學習相關的技巧、工具與方法
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
朱騏的沙龍 的其他內容
這兩年網路上出現許多整理筆記的方式,讓人眼花撩亂。這麼多的筆記方法,每種整理方式想達到的目的都不同。礙於網路上的資訊太多太雜,許多人往往看到一個方法就直接使用,結果容易把自己的筆記庫弄的一團亂,最後只好放棄(然後重複這個循環)。這篇文章將分享 5 種筆記整理結構,分享給有需要的朋友。
這篇文章回答了從「卡片索引編號」延伸出來的 3 個問題:(1) 卡片索引是一種分類嗎?(2) 卡片如何命名?(3)卡片索引如何表達卡片之間的連結關係?簡單摘要答案就是:(1)卡片索引不是一種分類 (2) 卡片命名可以靠索引編號解決,因為它有「唯一性」(3)卡片索引可以寫成「索引筆記」,功能是紀錄思考
許多人使用卡片盒筆記法 的問題就是不知道如何連結卡片。連結卡片在「卡片盒筆記法」中太重要了,我們寫下的卡片若只是一個點、卡片連結的品質將決定我們後續產出成果的品質。為了搞清楚這個問題,我讀了2篇美國研究卡片盒專家的論文、1篇長達 7000字 的德國卡片盒論壇的文章。這篇文章討論我們該如何建立卡片連
作者申克博士(Sönke Ahrens) 在繁體版書籍線上交流講座中,分享 10 點使用卡片盒筆記法的重點原則,這篇文章摘要講座中 10 點原則的精華。有些內容翻成中文會失去脈絡,因此我在後面加上英文原文單字,並且加入一些個人理解的闡述。
在我分享多篇關於Obsidian與個人知識管理文章後,有許多人來信問我:「朱騏,我按照你的方法建立了名詞筆記與觀念筆記,一開始看到一個主題逐漸累積資料這種感覺蠻好的。但隨著時間增多,筆記連接已經多到爆炸啦!我到底要如何整理這些筆記呢?」這篇文章和你分享個人知識管理中的重要概念 - 母題
在前面的文章中,我提到4步驟整理讀書筆記、3步驟將讀書筆記寫成長文的方法,範圍都只侷限於單一文章/書籍的內容拆解與連結。這篇文章繼續延伸,談談拆分出去的觀念筆記要如何重複利用。我們要學習一個做筆記的新概念 — 加入Metadata 連結其他筆記。
這兩年網路上出現許多整理筆記的方式,讓人眼花撩亂。這麼多的筆記方法,每種整理方式想達到的目的都不同。礙於網路上的資訊太多太雜,許多人往往看到一個方法就直接使用,結果容易把自己的筆記庫弄的一團亂,最後只好放棄(然後重複這個循環)。這篇文章將分享 5 種筆記整理結構,分享給有需要的朋友。
這篇文章回答了從「卡片索引編號」延伸出來的 3 個問題:(1) 卡片索引是一種分類嗎?(2) 卡片如何命名?(3)卡片索引如何表達卡片之間的連結關係?簡單摘要答案就是:(1)卡片索引不是一種分類 (2) 卡片命名可以靠索引編號解決,因為它有「唯一性」(3)卡片索引可以寫成「索引筆記」,功能是紀錄思考
許多人使用卡片盒筆記法 的問題就是不知道如何連結卡片。連結卡片在「卡片盒筆記法」中太重要了,我們寫下的卡片若只是一個點、卡片連結的品質將決定我們後續產出成果的品質。為了搞清楚這個問題,我讀了2篇美國研究卡片盒專家的論文、1篇長達 7000字 的德國卡片盒論壇的文章。這篇文章討論我們該如何建立卡片連
作者申克博士(Sönke Ahrens) 在繁體版書籍線上交流講座中,分享 10 點使用卡片盒筆記法的重點原則,這篇文章摘要講座中 10 點原則的精華。有些內容翻成中文會失去脈絡,因此我在後面加上英文原文單字,並且加入一些個人理解的闡述。
在我分享多篇關於Obsidian與個人知識管理文章後,有許多人來信問我:「朱騏,我按照你的方法建立了名詞筆記與觀念筆記,一開始看到一個主題逐漸累積資料這種感覺蠻好的。但隨著時間增多,筆記連接已經多到爆炸啦!我到底要如何整理這些筆記呢?」這篇文章和你分享個人知識管理中的重要概念 - 母題
在前面的文章中,我提到4步驟整理讀書筆記、3步驟將讀書筆記寫成長文的方法,範圍都只侷限於單一文章/書籍的內容拆解與連結。這篇文章繼續延伸,談談拆分出去的觀念筆記要如何重複利用。我們要學習一個做筆記的新概念 — 加入Metadata 連結其他筆記。
你可能也想看
Google News 追蹤
Thumbnail
現代社會跟以前不同了,人人都有一支手機,只要打開就可以獲得各種資訊。過去想要辦卡或是開戶就要跑一趟銀行,然而如今科技快速發展之下,金融App無聲無息地進到你生活中。但同樣的,每一家銀行都有自己的App時,我們又該如何選擇呢?(本文係由國泰世華銀行邀約) 今天我會用不同角度帶大家看這款國泰世華CUB
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
在課程設計上,我往往會以客層設計教學的系統。但我逐漸發現只同一個用系統,除了貼近我自己的成長進程,更方便學習者記得。沒有一個系統是不會隨著人的成長和狀態一起演化的。我在設計新的系統時將以往常用的「四層系統」以及「3+1系統」重新簡單在課程設計筆記中介紹。
Thumbnail
C#程式由一或多個檔案組成,包含命名空間、類別、結構、介面、列舉和委派等型別。Main方法是C#應用程式的進入點。在C#中,註解用於在程式碼中添加說明,有單行和多行兩種類型。變數的定義需要指定變數的類型和名稱,可以一次為多個變數賦值。
Thumbnail
實際就業後,會發現收集與分析需求,通常都不是工程師在做,會有另一群人,以非工程的角度收集及分析需求,然後在開發過程中蹦出不同的火花,於是很好奇另一群人的想法是什麼?我不敢說這本書能完全代表另一群人的想法,但確實能夠得到很多有用的思維。推薦給所有的軟體工程師。
Thumbnail
在物件導向程式設計的進階階段,學生將學習繼承、介面、抽象類別等核心概念。繼承允許類別共享屬性和方法,介面確保實現類別提供特定的方法實現,而抽象類別定義了基本結構供子類別擴展。這些知識點有助於提升程式碼的重用性、擴展性和維護性。
計算機組織不難,但東西很多 這個科目也是我比較不熟悉的,在此之前都是自學,所以會寫的更詳細一點 1.計算機組織在學什麼? 想像計算機的架構就像一個蛋糕有好多層,上半是軟體下半則是硬體,對我來說,軟硬體的兩端是電腦的核心(應用程式&半導體),而中間的每一層都是串接兩端的橋樑;那計算機組織就是要探
Thumbnail
系統的分析與規劃 在談到程式設計時,首要的是進行系統的分析與規劃。程式設計的起點通常是系統分析與規劃,這涉及到如何分析和設計系統的大原則和方向。為了達到預期效果,重要的是擁有對產業的清晰邏輯認識和深入了解。 進行深入了解 若要進行系統分析,必須對企業的設計和程式設計的對象進行深入了解,以充分理
Thumbnail
替產業做設計 有人要我談程式設計,那我就稍微談一下。我從事的大都是產業的工作,所以我們也從如何替產業做設計來談起。基本上,每個產業都會有自己的作業流程,大同小異。但是基礎來做都是一樣的,都會有客戶、物料、產品、供應商、員工等資料。不同的是,由於企業型態的不同,他們每個人有不同的作業流程。這個作業流
Thumbnail
本文探討了系統思維的重要性,強調理解元素、關係及其背後規律對洞察複雜系統至關重要。書中以商業模式變化為例,展示如何透過系統思維識別時代機遇,提升競爭力。此外,強調系統思維在學習中的應用,促進跨學科理解、批判性思維和解決問題能力,為適應未來變化奠定基礎。
Thumbnail
介紹C++ 語法 資料型態,架構說明 程式語言為人類與電腦溝通的工具 程式設計流程: 定義問題 -> 問題分析 -> 撰寫演算法 ->程式撰寫 -> 程式執行及維護
Thumbnail
現代社會跟以前不同了,人人都有一支手機,只要打開就可以獲得各種資訊。過去想要辦卡或是開戶就要跑一趟銀行,然而如今科技快速發展之下,金融App無聲無息地進到你生活中。但同樣的,每一家銀行都有自己的App時,我們又該如何選擇呢?(本文係由國泰世華銀行邀約) 今天我會用不同角度帶大家看這款國泰世華CUB
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
在課程設計上,我往往會以客層設計教學的系統。但我逐漸發現只同一個用系統,除了貼近我自己的成長進程,更方便學習者記得。沒有一個系統是不會隨著人的成長和狀態一起演化的。我在設計新的系統時將以往常用的「四層系統」以及「3+1系統」重新簡單在課程設計筆記中介紹。
Thumbnail
C#程式由一或多個檔案組成,包含命名空間、類別、結構、介面、列舉和委派等型別。Main方法是C#應用程式的進入點。在C#中,註解用於在程式碼中添加說明,有單行和多行兩種類型。變數的定義需要指定變數的類型和名稱,可以一次為多個變數賦值。
Thumbnail
實際就業後,會發現收集與分析需求,通常都不是工程師在做,會有另一群人,以非工程的角度收集及分析需求,然後在開發過程中蹦出不同的火花,於是很好奇另一群人的想法是什麼?我不敢說這本書能完全代表另一群人的想法,但確實能夠得到很多有用的思維。推薦給所有的軟體工程師。
Thumbnail
在物件導向程式設計的進階階段,學生將學習繼承、介面、抽象類別等核心概念。繼承允許類別共享屬性和方法,介面確保實現類別提供特定的方法實現,而抽象類別定義了基本結構供子類別擴展。這些知識點有助於提升程式碼的重用性、擴展性和維護性。
計算機組織不難,但東西很多 這個科目也是我比較不熟悉的,在此之前都是自學,所以會寫的更詳細一點 1.計算機組織在學什麼? 想像計算機的架構就像一個蛋糕有好多層,上半是軟體下半則是硬體,對我來說,軟硬體的兩端是電腦的核心(應用程式&半導體),而中間的每一層都是串接兩端的橋樑;那計算機組織就是要探
Thumbnail
系統的分析與規劃 在談到程式設計時,首要的是進行系統的分析與規劃。程式設計的起點通常是系統分析與規劃,這涉及到如何分析和設計系統的大原則和方向。為了達到預期效果,重要的是擁有對產業的清晰邏輯認識和深入了解。 進行深入了解 若要進行系統分析,必須對企業的設計和程式設計的對象進行深入了解,以充分理
Thumbnail
替產業做設計 有人要我談程式設計,那我就稍微談一下。我從事的大都是產業的工作,所以我們也從如何替產業做設計來談起。基本上,每個產業都會有自己的作業流程,大同小異。但是基礎來做都是一樣的,都會有客戶、物料、產品、供應商、員工等資料。不同的是,由於企業型態的不同,他們每個人有不同的作業流程。這個作業流
Thumbnail
本文探討了系統思維的重要性,強調理解元素、關係及其背後規律對洞察複雜系統至關重要。書中以商業模式變化為例,展示如何透過系統思維識別時代機遇,提升競爭力。此外,強調系統思維在學習中的應用,促進跨學科理解、批判性思維和解決問題能力,為適應未來變化奠定基礎。
Thumbnail
介紹C++ 語法 資料型態,架構說明 程式語言為人類與電腦溝通的工具 程式設計流程: 定義問題 -> 問題分析 -> 撰寫演算法 ->程式撰寫 -> 程式執行及維護