跳至內容

C4模型

維基百科,自由的百科全書

C4模型軟件系統建模的圖形表示技巧[1][2]。C4模型會用到一些現有的建模技巧,例如統一建模語言(UML)及ER模型(ERD),會將系統結構化分解,分解為容器(container)和組件(component)。  

歷史

[編輯]

C4模型是由軟件架構師英語software architectSimon Brown在2006年至2011年之間創建,以統一建模語言4+1視景模型的基礎上建立。在2018年在官網上以共享創意許可協議[3]發佈,並且也提出相關的文章[4][1]

簡介

[編輯]

C4模型用以下的幾個視角來敘述軟件系統的架構[5],會說明系統分解為容器和組件的方式、各元素之間的關係,若是適用的話,也可以說明和使用者之間的關係[3]

C4模型會依其階層關係來分類[2][3]

  • 系統上下文圖(Context diagrams),第一層的圖,說明系統、和其使用者以及其他系統的關係。
  • 容器圖(Container diagrams),第二層的圖,將系統分解為彼此相關的容器(container)。容器可以是應用程序或是資料存儲。
  • 組件圖(Component diagrams),第三層的圖,將容器分別為彼此相關的組件,也說明組件和其他組件(或是其他系統)的關係。
  • 程式碼圖(Code diagrams),第四層的圖,提供架構元素的設計細節,可以對應到程式碼。在此層級的C4模型會用到目前已有的標示方式,例如統一建模語言ER模型或是集成開發環境產生的示意圖。

C4模型的第一層到第三層,用到五種基礎的圖示元素:人、軟件系統、容器、組件和關係。此技術沒有規定元素的佈局、形狀、顏色或是風格。C4模型建議以嵌套框為基礎的簡單圖表,方便互動式的協作繪圖。C4模型也鼓勵良好的建模實務,例如在每一個圖都加上標題以及圖例,以及清楚的標示,以方便目標讀者的理解。

敏捷開發社群中,不太希望有制式化的文件方式,以及前期的架構設計,C4模型可以將架構可視化,因此在敏捷社群很受歡迎[6]

相關條目

[編輯]

參考資料

[編輯]
  1. ^ 1.0 1.1 Richards,Mark; Ford, Neal. Fundamentals of software architecture: an engineering approach. O'REILLY MEDIA. 2019: 293. ISBN 978-1-4920-4342-3. OCLC 1138515057. some standard are emerging for diagramming software architecture (such as software architect simon Brown's C4 model or The Open Group Archimate standard) 
  2. ^ 2.0 2.1 Enríquez, René. Software Architecture with Spring 5. 0 : Design and Architect Highly Scalable, Robust, and High-Performance Java Applications.. Salazar, Alberto. Packt Publishing Ltd. 2018: 41–44. ISBN 978-1-78899-673-0. OCLC 1053798657. 
  3. ^ 3.0 3.1 3.2 Brown, Simon. The C4 model for visualising software architecture. c4model.com (Official site of the modelling technique). [2020-08-22]. (原始內容存檔於2010-02-25). 
  4. ^ Brown, Simon. The C4 Model for Software Architecture. InfoQ. 2018-06-25 [2020-08-22]. (原始內容存檔於2018-12-12) (英語). 
  5. ^ Keeling, Michael. Design it! : from programmer to software architect. Raleigh, North Carolina. ISBN 978-1-68050-345-6. OCLC 1024312521. 
  6. ^ The Conflict Between Agile and Architecture: Myth or Reality?. resources.sei.cmu.edu. SATURN 2013 conference. Software Engineering Institute of Carnegie Mellon University. [2020-08-22]. (原始內容存檔於2021-04-19) (英語). 

外部連結

[編輯]