Bài 3 · Cơ bản · 18 phút
Level 1: System Context
Biên soạn bởi Nguyễn Anh Tuấn
Sơ đồ ngữ cảnh hệ thống (System Context): hệ thống ở trung tâm, người dùng (persona) & hệ thống ngoài bao quanh - bức tranh lớn cho khán giả non-technical.
Ở bài trước, ta đã có mô hình với các phần tử. Giờ vẽ sơ đồ đầu tiên từ mô hình ấy: System Context - mức zoom xa nhất, mức tổng quát nhất.
Điểm đặc biệt của Context: nó dành cho tất cả mọi người, kể cả người không rành kỹ thuật. Nó trả lời ba câu đơn giản: hệ thống này làm gì, ai dùng nó, và nó nối với những dịch vụ nào.
Đây là một sơ đồ Context thật - hệ thống Ngân Hàng Số nằm giữa, người dùng ở trên, các hệ thống ngoài ở dưới; mỗi mũi tên một nhãn rõ hướng:
[Người dùng]
Khách hàng
Xem số dư, chuyển khoản, tra cứu giao dịch.
[Hệ thống phần mềm]
Ngân Hàng Số
Cho khách hàng giao dịch trực tuyến.
[Hệ thống ngoài]
Hệ thống lõi (Core Banking)
Nguồn sự thật về tài khoản & giao dịch.
[Hệ thống ngoài]
Dịch vụ Email
Gửi email thông báo giao dịch.
- ▸Hệ thống của bạn nằm ở TRUNG TÂM, như một hộp duy nhất.
- ▸Người dùng (Person) và hệ thống ngoài bao quanh nó.
- ▸Mọi quan hệ đều có nhãn nêu rõ ai làm gì với ai.
Sức mạnh của Context đến từ những gì nó CỐ TÌNH bỏ đi. Quy tắc đơn giản:
| Có trên Context | Hệ thống của bạn (1 hộp); các Person (vai trò); các Software System ngoài; quan hệ có nhãn. |
| KHÔNG có trên Context | Container (web/API/CSDL); component; class; tên công nghệ; chi tiết bên trong hệ thống. |
Trung thực
- ▸Bước 1 - Chọn phạm vi: đúng MỘT hệ thống làm tâm điểm, nói rõ cái gì trong/ngoài phạm vi.
- ▸Bước 2 - Liệt kê Person: các vai trò dùng hệ thống (học viên, tài xế, quản trị viên...).
- ▸Bước 3 - Liệt kê hệ thống ngoài: các dịch vụ hệ thống nối tới (thanh toán, email, bản đồ...).
- ▸Bước 4 - Nối quan hệ: mỗi mũi tên một nhãn rõ hướng và mục đích ("Đặt món", "Thu tiền").
Bốn bước này áp dụng cho mọi hệ thống, dù là app học tập, app giao đồ ăn hay ngân hàng số - tư duy giống hệt nhau.
Hãy xem Context của một app đặt đồ ăn. Trong widget dưới đây, chọn Mèo Đói và giữ nguyên ở mức Context (mức 1). Đọc nó như đang giới thiệu sản phẩm cho người mới:
Nền tảng học online: học viên xem bài, làm quiz, theo dõi tiến độ.
Mức 1 - System Context
System Context - Lớp Học Trực Tuyến
Quan hệ (có nhãn & hướng)
- Học viên → Lớp Học Trực Tuyến : Học & làm bài [HTTPS]
- Giảng viên → Lớp Học Trực Tuyến : Soạn bài & chấm [HTTPS]
- Lớp Học Trực Tuyến → Cổng thanh toán : Thu học phí [API]
- Lớp Học Trực Tuyến → Dịch vụ Email : Gửi email [SMTP]
- ▸Ba vai trò bao quanh: Thực khách đặt món, Nhà hàng nhận đơn, Tài xế giao - ai cũng hiểu ngay.
- ▸Hai hệ thống ngoài: cổng thanh toán (thu tiền) và dịch vụ bản đồ (định tuyến) - không lộ công nghệ.
- ▸Không một chữ nào về database hay ngôn ngữ lập trình - đó mới đúng tinh thần Context.
- ▸Thử đổi sang Lớp Học Trực Tuyến: cùng một kiểu đọc, dù lĩnh vực khác hẳn.
Đây chính là lý do Context quý giá: nó là ngôn ngữ chung giữa đội kỹ thuật và các phòng ban khác. Cùng một bức, mỗi bên lấy được thứ mình cần:
- ▸Kinh doanh / sales: thấy ngay hệ thống phục vụ ai và mang lại giá trị gì.
- ▸Quản lý dự án (PM): nắm các bên liên quan (người dùng, đối tác ngoài) để lên kế hoạch.
- ▸Nhân sự mới / khách hàng: hiểu hệ thống trong một phút mà không cần nền kỹ thuật.
- ▸Đội kỹ thuật: thống nhất ranh giới hệ thống trước khi đi sâu vào chi tiết.
Mẹo trình bày
- ▸Nhồi công nghệ/container vào Context - làm mất tính "ai cũng đọc được".
- ▸Mũi tên không nhãn - người đọc lại phải đoán, đúng căn bệnh ta muốn chữa.
- ▸Quên hệ thống ngoài quan trọng - bức tranh thiếu, dễ bỏ sót phụ thuộc.
- ▸Vẽ nhiều hệ thống trung tâm - đó là System Landscape, không phải Context.
Bước tiếp theo
Câu hỏi thường gặp
Đúng MỘT - hệ thống bạn đang xét. Nếu muốn vẽ nhiều hệ thống ngang hàng để thấy bức tranh toàn cảnh của cả một tổ chức, đó là một sơ đồ bổ trợ tên System Landscape, không phải Context. Context luôn có một tâm điểm rõ ràng.
Không nên. Context cố tình bỏ chi tiết kỹ thuật để người ngoài kỹ thuật vẫn đọc được. Công nghệ bắt đầu xuất hiện từ mức Container.
Đón đọc: Level 2 - Container →Thường khoảng 5 đến 15 hộp. Nếu có quá nhiều hệ thống ngoài, hãy nhóm những cái cùng vai trò lại (vd gộp ba dịch vụ thông báo thành "Dịch vụ thông báo"). Sơ đồ Context phải liếc một cái là hiểu.
Tick những điều em tự tin làm được. Càng lên cao, em càng hiểu sâu.
Trả lời vài câu để chắc rằng em đã nắm bài.
Một sơ đồ System Context nên có bao nhiêu hệ thống ở vị trí trung tâm?
- 1
Đọc một Context
Tìm (hoặc dùng widget Bước 4) một sơ đồ System Context. Chỉ ra: hệ thống trung tâm, các Person, và các hệ thống ngoài.
Hoàn thành khi: Gọi tên đúng hệ thống trung tâm; liệt kê ≥2 Person và ≥1 hệ thống ngoài.
- 2
Vẽ Context cho app đặt đồ ăn
Chọn một app giao đồ ăn mèo con biết. Tự vẽ sơ đồ Context theo bốn bước ở Bước 3 (phạm vi → Person → hệ thống ngoài → quan hệ có nhãn).
Hoàn thành khi: Sơ đồ có tiêu đề; một hệ thống ở giữa; ≥2 Person; ≥1 hệ thống ngoài; mọi mũi tên có nhãn rõ hướng.
- 3
Trong hay ngoài - hay không xuất hiện?
Cho danh sách: cổng thanh toán, cơ sở dữ liệu nội bộ, đội chăm sóc khách hàng, app của đối tác giao hàng. Phân loại trên sơ đồ Context: cái nào là hệ thống ngoài, cái nào là Person, cái nào KHÔNG xuất hiện ở mức Context.
Hoàn thành khi: Phân loại đủ 4 mục; nhận ra cơ sở dữ liệu nội bộ KHÔNG xuất hiện ở Context (nó là container).
- 4
Thuyết minh cho "sếp"
Dùng một sơ đồ Context, viết 3-4 câu giải thích nó như đang nói với một người không rành kỹ thuật (vd sếp kinh doanh).
Hoàn thành khi: Đoạn nói rõ: hệ thống làm gì, ai dùng, nối với dịch vụ ngoài nào - không dùng từ kỹ thuật khó.
- 5
Săn lỗi Context
Cho một sơ đồ Context có lỗi cố ý: một hộp ghi "PostgreSQL", một mũi tên không nhãn. Chỉ ra hai lỗi và nói cách sửa.
Hoàn thành khi: Chỉ đúng cả hai lỗi; nêu cách sửa (bỏ container khỏi Context; thêm nhãn cho mũi tên).
- 6
Đặt ranh giới
Chọn một hệ thống. Viết một câu định nghĩa rõ: cái gì nằm TRONG phạm vi hệ thống của mèo con, cái gì là hệ thống NGOÀI.
Hoàn thành khi: Một câu rạch ròi; có ít nhất một thứ "trong" và một thứ "ngoài".