---
# System prepended metadata

title: 為什麼要使用 C4 Model

---

# 為什麼要使用 C4 Model
## 1：解決傳統架構圖的模糊與混亂
1. 它可以改善不一致的標記法
    它解決了軟體開發人員在溝通架構時，容易出現的「由盒子和線條組成的混亂堆疊」，包含標記法不一致、命名模糊、關係未標記以及混合抽象層級等問題。
2. 它提供結構化的表示方式
    C4 Model 是一種「輕量級圖形表示技術」，基於對系統進行容器和組件的結構化分解，為團隊提供一種結構化且具自我描述性的方式來使用「盒子和線條」。
3. 降低學習門檻並取代複雜工具
    相較於過於複雜且難以傳承的 UML、ArchiMate 或 SysML，C4 Model 更加「簡單、清晰且易於理解」，不需要專門的知識或培訓即可上手。

## 2：促進技術與非技術人員間的有效溝通
1. 建立共同語言
    藉由提供描述系統架構的「共同語言」（就是 C4 Model），增強團隊成員之間的溝通，減少可能導致昂貴錯誤與專案延遲的誤解。
2. 跨越利害關係人的溝通鴻溝
    專門設計用來「跨越技術和非技術利害關係人之間的溝通鴻溝」，讓不懂程式的門外漢也能看懂高階架構。
3. 針對不同受眾講述不同的故事：透過層級化的圖表，向「不同類型的受眾講述不同的故事」，從高階的業務環境到詳細的技術實作均有所對應。

## 3：提供「地圖式」的多層次導航視野
1. 實現程式碼的地圖化 (Maps of your code)
    就像使用 Google Maps 一樣，C4 Model 讓團隊能夠在感興趣的區域「放大和縮小」，在不同的縮放級別描述軟體架構。
2. 靈活的抽象層級定義：
    - Level 1 (System Context)：展示系統如何與周圍的世界互動。
    - Level 2 (Container)：放大系統邊界，顯示系統內部的應用程式和資料存儲。
    - Level 3 (Component)：進一步分解容器，顯示內部的邏輯職責與邊界。
    - Level 4 (Code)：展示元件是如何在程式碼層級實作的。
3. 專注於必要的細節：允許團隊根據需求「選擇性地」應用不同層級，大多數團隊發現 Level 1 和 Level 2 就能提供最大的價值，避免陷入不必要的細節。
## 4：支援軟體全生命週期的維運與演進
1. 提升軟體設計品質
    透過將架構分解為四個層級，有助於在開發過程的「早期識別潛在的設計問題」，確保系統的穩健性。
2. 簡化文檔編寫任務
    為複雜系統的文檔提供一個「清晰且簡潔的框架」，確保覆蓋架構的所有方面，成為團隊的重要資源。
3. 支援高效的系統維護與演進
    分層表示法能清晰展現組件間的互動，當開發人員引入新功能時，能輕易「識別潛在的影響或依賴關係」。
4. 加速新成員入職：
    新團隊成員可以透過這些層級化的視覺化圖表，由淺入深地「快速理解系統架構」及其在其中的角色。
5. 輔助特定工程任務：在「QA 與測試」、「微服務架構審查」、「遷移或重構專案」以及「安全稽核」中，提供必要的架構透明度。

## 5：與敏捷開發流程高度相容
1. 支援演進式架構：在敏捷團隊不希望有制式化文件與前期設計的環境下，C4 Model 提供了一種「視覺化架構的方式」，因此在敏捷社群非常受歡迎。
2. 靈活且不具強制性：不規定特定的佈局、形狀或顏色，鼓勵「互動式的協作繪圖」，並可與各種繪圖工具或「圖表即程式碼 (Diagrams as code)」工具結合使用。


