Bài 7 · Vận dụng · 20 phút
Ký pháp & sơ đồ tự đứng vững
Biên soạn bởi Nguyễn Anh Tuấn
Ký pháp (notation) đề xuất của C4: mỗi hộp ghi tên/loại/công nghệ/mô tả; quan hệ có nhãn & hướng rõ; tiêu đề + chú giải (legend) để sơ đồ tự đứng vững.
Ta đã có đủ các loại sơ đồ. Nhưng một sơ đồ chỉ hữu ích khi người khác đọc được nó mà không cần bạn giải thích. Mục tiêu của bài này: làm sơ đồ tự đứng vững (self-standing).
Nhớ lại ba căn bệnh ở bài đầu (mũi tên mơ hồ, thiếu chú giải, trộn mức). Ký pháp tốt chính là liều thuốc chữa cả ba.
C4 không bắt bạn vẽ hình gì, nhưng gợi ý mỗi phần tử nên mang đủ thông tin:
| Mỗi hộp | Tên + loại (person/system/container/component) + công nghệ (nếu có) + một dòng mô tả. |
| Mỗi quan hệ | Nhãn rõ mục đích + hướng mũi tên + (ở mức Container) giao thức. |
- ▸Hộp "trần" chỉ có tên là chưa đủ - thêm loại, công nghệ, mô tả để tự nói.
- ▸Mũi tên hai chiều mơ hồ; ưu tiên một chiều, ghi rõ ai khởi xướng.
- ▸Nhất quán: cùng loại phần tử thì cùng kiểu hình/màu trong cả bộ sơ đồ.
Đây là một sơ đồ theo đúng ký pháp đó - mỗi hộp có tên, loại, công nghệ và mô tả; mỗi mũi tên có nhãn rõ hướng và giao thức:
[Người dùng]
Khách hàng
Giao dịch trực tuyến.
[Container: React]
Web App
Ngân hàng trên trình duyệt.
[Container: Swift / Kotlin]
Mobile App
App ngân hàng trên điện thoại.
[Container: Java / Spring]
API Application
Cung cấp API cho web & mobile.
[Container: Oracle]
Cơ sở dữ liệu
Lưu đăng nhập, nhật ký giao dịch.
[Container: RabbitMQ]
Hàng đợi tin
Xử lý giao dịch bất đồng bộ.
[Hệ thống ngoài]
Hệ thống lõi (Core Banking)
Tài khoản & giao dịch.
- ▸Tiêu đề: loại sơ đồ + tên hệ thống/phạm vi (vd "System Context - Mèo Đói").
- ▸Chú giải (legend): nói rõ mỗi hình dạng/màu nghĩa là gì.
- ▸Nhãn quan hệ: mọi mũi tên có nhãn rõ hướng và mục đích.
- ▸Công nghệ: ghi cho container/component (không ghi ở Context).
- ▸Một mức một sơ đồ: không trộn cả hệ thống với một class trên cùng bức.
Thước thử
Một câu đáng nhớ của C4: ký pháp (notation) không phải là mô hình (model). Mô hình là nội dung - các phần tử và quan hệ. Ký pháp chỉ là cách bạn vẽ chúng ra giấy.
- ▸Cùng một mô hình vẽ bằng UML, bằng hộp-mũi-tên, hay bằng biểu tượng riêng đều được.
- ▸Quan trọng là sự NHẤT QUÁN và có chú giải, không phải dùng đúng "chuẩn" nào.
- ▸Đừng nhầm "vẽ đẹp" với "mô hình tốt": một bức màu mè vẫn có thể nói sai về hệ thống.
Trung thực
Hãy luyện con mắt soi lỗi. Mỗi thẻ dưới đây mô tả một sơ đồ mắc đúng một lỗi tự-đứng-vững - chọn xem nó hỏng quy tắc nào:
📋 Sơ đồ này hỏng quy tắc tự-đứng-vững nào?
1/8Một sơ đồ đẹp với nhiều hộp và mũi tên, nhưng nhìn vào không biết nó vẽ ở mức nào, của hệ thống gì.
- ▸Soi lỗi nhanh: có tiêu đề chưa? có chú giải chưa? mũi tên có nhãn chưa? container có công nghệ chưa? có trộn mức không?
- ▸Một sơ đồ có thể mắc nhiều lỗi cùng lúc; ở đây ta tập trung lỗi nổi nhất.
- ▸Mỗi lỗi đều có cách sửa cụ thể - đọc phần "Cách sửa" sau mỗi câu.
Vẽ tay thì khó giữ cả bộ sơ đồ nhất quán và khỏi lạc hậu. Có một cách bền hơn: viết mô hình bằng code rồi để máy sinh sơ đồ - tự khắc nhất quán.
Bước tiếp theo
Câu hỏi thường gặp
Không. C4 KHÔNG quy định một ký pháp cứng. Bạn được tự do chọn hình dạng, màu sắc, kể cả dùng UML hay biểu tượng riêng - miễn là nhất quán trong cả bộ sơ đồ và có chú giải để người đọc hiểu. C4 quan tâm cách bạn TƯ DUY (các mức trừu tượng) hơn là bạn vẽ hình gì.
Mô hình là các phần tử và quan hệ (nội dung). Ký pháp (notation) là cách bạn vẽ chúng ra (hình thức). Cùng một mô hình có thể vẽ bằng nhiều ký pháp khác nhau. Đừng nhầm "vẽ đẹp theo chuẩn nào đó" với "có một mô hình tốt".
Rất nên, nhất là khi bạn dùng màu hay hình dạng để phân biệt loại phần tử. Không có chú giải, mỗi người đọc tự bịa ra luật - đúng căn bệnh mà C4 muốn chữa.
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.
Câu "ký pháp không phải là mô hình" (notation is not the model) nghĩa là gì?
- 1
Chấm điểm sơ đồ
Làm hết các sơ đồ trong widget "Sơ đồ này hỏng quy tắc nào?" ở Bước 5; ghi lại sơ đồ nào mèo con đoán sai.
Hoàn thành khi: Trả lời hết; giải thích được vì sao đáp án đúng cho 2 sơ đồ từng nhầm.
- 2
Sửa một sơ đồ
Lấy một sơ đồ (của mèo con hoặc trên mạng) còn thiếu sót. Bổ sung cho nó tự đứng vững: tiêu đề, chú giải, nhãn quan hệ.
Hoàn thành khi: Sơ đồ sau khi sửa có đủ tiêu đề, chú giải, mọi mũi tên có nhãn.
- 3
Viết chú giải
Cho một sơ đồ dùng ba màu hộp khác nhau. Viết phần chú giải (legend) nói mỗi màu là loại phần tử gì.
Hoàn thành khi: Chú giải gán đúng mỗi màu với một loại (person/system/container...).
- 4
Nhãn quan hệ tốt
Viết lại ba nhãn mơ hồ ("kết nối", "dùng", "liên quan") thành nhãn rõ hướng và mục đích, kèm giao thức nếu hợp.
Hoàn thành khi: Đủ 3 nhãn mới; mỗi nhãn nêu rõ ai làm gì với ai.
- 5
Ký pháp của mèo con
Tự chọn một bộ ký hiệu (hình dạng/màu) cho Person, Software System, Container. Vẽ một sơ đồ nhỏ kèm chú giải cho bộ ký hiệu đó.
Hoàn thành khi: Bộ ký hiệu nhất quán; có chú giải; sơ đồ đọc được nhờ chú giải.
- 6
Thử "tự đứng vững"
Đưa một sơ đồ của mèo con cho người không biết dự án. Quan sát họ hiểu tới đâu, ghi lại chỗ họ vướng.
Hoàn thành khi: Ghi được ≥2 điểm người đọc vướng; đề xuất cách sửa cho mỗi điểm.