Skip to main content

Command Palette

Search for a command to run...

System Context Diagram

Góc nhìn tổng quan đầu tiên — nơi phần mềm của bạn gặp thế giới bên ngoài

Updated
6 min readView as Markdown
System Context Diagram
T
Not PERFECT but ONLY

Hành trình khám phá C4 Model bắt đầu từ đây — với System Context Diagram, bức tranh toàn cảnh nhất, nơi bạn đặt hệ thống phần mềm vào giữa, xung quanh là con người và những hệ thống khác mà nó tương tác.


System Context Diagram là gì?

Đây là điểm khởi đầu hợp lý nhất khi bạn cần vẽ và tài liệu hóa kiến trúc phần mềm. Thay vì lao ngay vào chi tiết kỹ thuật, diagram này cho phép bạn nhìn từ xa — thấy được "bức tranh lớn" của hệ thống cùng những mối liên hệ trực tiếp xung quanh nó.

Ở cấp độ này, công nghệ, giao thức, hay định dạng dữ liệu chưa cần xuất hiện. Điều quan trọng hơn là: ai đang dùng hệ thốnghệ thống tương tác với gì.


Diagram này trả lời những câu hỏi gì?

  • Phần mềm chúng ta đang xây dựng (hoặc đã xây dựng) là gì?

  • Ai đang sử dụng hệ thống phần mềm đó?

  • Các loại người dùng khác nhau đang làm gì với hệ thống?

  • Hệ thống này phù hợp như thế nào với toàn bộ bức tranh công nghệ hiện tại?


Phạm vi và thành phần

Mỗi System Context Diagram chỉ tập trung vào một hệ thống phần mềm duy nhất. Không hơn, không kém. Bên trong diagram chỉ tồn tại hai loại phần tử chính:

People (Con người)

Những người dùng hệ thống — được mô hình hóa theo vai trò, actor, hoặc persona. Với mỗi người, chỉ cần ghi lại:

  • Tên: Tên của người, vai trò, actor, hoặc persona

  • Mô tả: Một mô tả ngắn gọn

Thông thường chỉ nên đưa vào những người dùng hệ thống từ góc độ "chức năng" — tức là dùng phần mềm để đạt được một mục tiêu nghiệp vụ cụ thể. System administrator hay operational staff chỉ nên xuất hiện nếu họ đang dùng một phần của hệ thống được xây dựng dành riêng cho họ.

Software Systems (Hệ thống phần mềm)

Hệ thống đang được mô tả cộng với các hệ thống bên ngoài có mối liên hệ với nó. Tương tự, mỗi hệ thống cần:

  • Tên: Tên của hệ thống

  • Mô tả: Một mô tả ngắn gọn

Relationships (Mối quan hệ)

Nên biểu diễn bằng mũi tên một chiều, có nhãn mô tả ngắn gọn ý nghĩa mối quan hệ. Tránh dùng đường thẳng vô hướng — chúng tạo ra sự mơ hồ không đáng có. Nhãn quan hệ ở cấp độ này có thể khá high-level, bỏ qua chi tiết kỹ thuật như giao thức hay định dạng dữ liệu.


Ví dụ thực tế: Internet Banking System

Hãy tưởng tượng bạn là một kỹ sư tại ngân hàng, được giao nhiệm vụ xây dựng hệ thống Internet Banking. Quá trình xây dựng System Context Diagram diễn ra theo từng bước:

Bước 1 — Đặt hệ thống vào trung tâm

Vẽ một ô duy nhất đại diện cho Internet Banking System — đây là phạm vi, là trọng tâm của toàn bộ diagram.

Bước 2 — Xác định người dùng

Thêm Personal Banking Customer — những khách hàng có một hoặc nhiều tài khoản ngân hàng, muốn xem số dư tài khoản và thực hiện thanh toán trực tuyến.

Bước 3 — Thêm hệ thống bên ngoài đầu tiên

Ngân hàng đã tồn tại vài thập kỷ, nghĩa là đã có sẵn Core Banking System — một sản phẩm off-the-shelf quản lý toàn bộ dữ liệu ngân hàng. Team xây dựng Internet Banking không xây dựng lại ngân hàng từ đầu; họ chỉ đang tạo ra cách để khách hàng thực hiện mọi thứ trực tuyến. Thêm hệ thống này vào diagram cùng với mối liên hệ tương ứng.

Bước 4 — Thêm hệ thống bên ngoài thứ hai

Cần gửi email cho xác thực đa yếu tố, cảnh báo gian lận, thông báo giao dịch... Thay vì tự xây dựng dịch vụ gửi email, hệ thống sử dụng Amazon Simple Email Service (SES) — dịch vụ email mà ngân hàng đã có sẵn trên AWS.

Kết quả cuối cùng cho thấy:

  • Personal banking customers sử dụng Internet Banking System để xem thông tin tài khoản và thực hiện thanh toán.

  • Internet Banking System sử dụng Core Banking System hiện có của ngân hàng để xử lý các nghiệp vụ ngân hàng.

  • Internet Banking System sử dụng Amazon SES để gửi email cho khách hàng trong các trường hợp như xác thực đa yếu tố và cảnh báo gian lận.


Tại sao diagram đơn giản này lại hữu ích?

Nhìn qua thì System Context Diagram có vẻ quá đơn giản — chỉ vài cái hộp và mũi tên. Nhưng đây là lý do nó có giá trị:

  • Làm rõ phạm vi và ngữ cảnh của hệ thống một cách tường minh, không còn giả định mơ hồ trong team.

  • Cho thấy những gì đang được thêm vào trong bức tranh hệ thống hiện tại.

  • Cả kỹ sư và người phi kỹ thuật đều có thể đọc và sử dụng diagram này làm điểm khởi đầu cho thảo luận, onboarding kỹ sư mới, và nhiều hơn nữa.

  • Xác định được các bên liên quan khi cần tìm hiểu về interface giữa các hệ thống.

  • Là nền tảng cho các diagram chi tiết hơn trong C4 Model (Container, Component, Code).

Ngoài ra, đây còn là công cụ phân tích hữu ích. Ví dụ, vẽ System Context Diagram ngay trong buổi thu thập yêu cầu giúp mọi người đồng thuận về phạm vi — tính năng nào nằm trong ranh giới hệ thống, tính năng nào nằm ngoài.


Đối tượng sử dụng

System Context Diagram dành cho tất cả mọi người liên quan đến việc xây dựng và duy trì hệ thống — kỹ sư và phi kỹ thuật, trong và ngoài engineering team. Đây là diagram hiếm hoi mà bạn có thể tự tin đưa cho bất kỳ ai xem mà không cần giải thích thêm.


Kết luận

Simon Brown khuyến nghị: tất cả các engineering team đều nên tạo System Context Diagram. Đây không phải tùy chọn — đây là nền móng.

Với diagram này, bạn không cần nhiều chi tiết. Bạn chỉ cần một bức tranh đủ rõ để mọi người hiểu: hệ thống này là gì, phục vụ ai, và sống trong môi trường nào.

Tài liệu tham khảo

  • Simon Brown — The C4 Model for Visualising Software Architecture

Software Design

Part 3 of 5

Software Design Series là chuỗi nội dung khám phá cách thiết kế và tổ chức hệ thống phần mềm hiện đại, từ kiến trúc tổng thể, mô hình hóa hệ thống, design patterns đến các nguyên tắc giúp xây dựng sản phẩm dễ mở rộng, dễ bảo trì và hiệu quả.

Up next

Tại sao developer vẽ diagram trông như... mớ hỗn độn?

Nếu bạn nhờ một kiến trúc sư xây dựng mô tả tòa nhà, họ sẽ đưa cho bạn bản vẽ mặt bằng, mặt đứng, mặt cắt — rõ ràng, có chuẩn, ai cũng hiểu. Còn nếu bạn nhờ một software developer vẽ kiến trúc hệ thốn

More from this blog

A

AISDLC Mastery | AI Development Life Cycle Mastery

8 posts

Blog công nghệ chuyên khám phá quy trình phát triển phần mềm tích hợp AI (AISDLC) dưới góc nhìn thực tiễn và hiện đại. Nội dung tập trung phân tích các phương pháp, tư duy hệ thống, kỹ nghệ yêu cầu, kiến trúc giải pháp và vòng đời phát triển sản phẩm AI.