C4 Model

ถ้าเราให้วิศวกรอธิบายโครงสร้างของตึก เขาจะกางพิมพ์เขียวของตึก แบบแปลนแต่ละชั้น ผังโครงสร้างระบบใฟฟ้า น้ำประปา แล้วอธิบายแต่ละส่วนอย่างชัดเจน ในขณะเดียวกัน ถ้าเราให้วิศวกรซอฟต์แวร์ หรือ โปรแกรมเมอร์ซักคนมาอธิบายโปรเจคหรือโค๊ดที่เขากำลังทำอยู่ มักจะจบลงด้วยกล่องต่าง ๆ โยงไปโยงมาพร้อมกับคำจาร์กอนต่าง ๆ ที่ไม่รู้ว่าหมายถึงอะไร สุดท้ายมักจะจบลงด้วยความงุนงงทั้งผู้ฟังและคนอธิบาย

C4 Model คือ รูปแบบหรือวิธีการในการออกแบบซอฟต์แวร์ให้สามารถอธิบายให้ผู้คนเข้าใจได้โดยง่าย โดยการแบ่ง Diagram ออกเป็นชั้น ๆ ตามลำดับเพื่อให้ง่ายต่อการทำความเข้าใจ นำเสนอครั้งแรกในปี 2006 โดย Simon Brown

My brother's hand before the Pandemic in a journey we made to LA.
Photo by José Martín Ramírez Carrasco / Unsplash

คอนเซ็ปของ C4 Model คือการมองซอฟต์แวร์เหมือนกับแผนที่ โดยที่เราสามารถมองภาพใหญ่ของทั้งระบบ และเมื่อซูมเข้าไปในแต่ละส่วนจะมีรายละเอียดของส่วนนั้นปรากฏขึ้นมา รายละเอียดที่ปรากฏขึ้นมานั้น ขึ้นอยู่กับลำดับชั้นในการซูมเข้าไป

C4 Model แบ่งลำดับชั้นออกเป็น 4 ชั้นดังนี้

ชั้นที่ 1 Context diagrams, ใช้สำหรับอธิบายสโคปของโปรเจคและความสัมพันธ์ระหว่างโปรเจคกับส่วนอื่น ๆ เช่น user เป็นต้น

ชั้นที่ 2 Container diagrams, แยกย่อย Context Diagrams ออกเป็นส่วน ๆ พร้อมกับแสดงความสัมพันธ์ของแต่ละส่วน  โดยเรียกแต่ละส่วนที่แยกย่อยออกมาว่า Container

ชั้นที่ 3 Component diagrams, แยกย่อยองค์ประกอบในแต่ละ Container ออกเป็น Components พร้อมกับแสดงความสัมพันธ์กันของแต่ละ Component ตลอดถึงความสัมพันธ์ระหว่าง Component กับ Container อื่น ๆ หรือระบบอื่น ๆ

ชั้นที่ 4 Code diagrams, แสดงรายละเอียดการทำงานของโค๊ดในแต่ละ Component โดยอาจจะอยู่ในรูปแบบ UML หรือ ER Diagram ก็ได้

https://c4model.com/img/c4-overview.png

C4 Model นั้นสามารถใช้ได้กับการอธิบายระบบที่มีอยู่แล้วหรือจะใช้สำหรับเป็นแนวทางในการออกแบบพัฒนาระบบใหม่ก็ดี จะช่วยให้วิศวกรซอฟต์แวร์ หรือโปรแกรมเมอร์สามารถอธิบายระบบงานให้กับผู้ฟังได้อย่างชัดเจน ทำให้การสื่อสารเป็นไปอย่างมีประสิทธิภาพ หากผู้อ่านท่านใดสนใจในรายละเอียดเชิงลึก สามารถเข้าไปศึกษาได้ที่ https://c4model.com/ โดยตรง