Note này hướng dẫn cách vẽ UML Sequence Diagram. Nó là bước zoom sâu nhất vào kỹ thuật, trả lời câu hỏi: “Các thành phần (Components) hoặc API gọi nhau theo trình tự thời gian nào, dữ liệu truyền đi là gì?”
Note này dùng để làm gì
Khi bạn làm việc với Microservices, Tích hợp hệ thống bên thứ 3 (Payment, SMS, ERP), Activity Diagram là không đủ. Dev cần biết chính xác hệ thống A gọi hệ thống B đồng bộ hay bất đồng bộ, chuyện gì xảy ra nếu hệ thống B bị sập (timeout)? Đó là lúc BA vẽ Sequence Diagram.
1. Phân biệt Sync, Async và Return Message
Trước khi phân tích hệ thống lớn, hãy nắm chắc 3 nét vẽ cơ bản nhất của Sequence Diagram, đây là ngôn ngữ giao tiếp chính với Developer.
2. Sequence Diagram Tích hợp Hệ thống (ShopFlow Case Study)
Đây là sơ đồ phóng to vào bước Thanh toán VNPay trong dự án ShopFlow. Sơ đồ này sử dụng các khung logic (Fragments) như alt (if/else) và loop (vòng lặp) để xử lý các kịch bản lỗi.
Giải nghĩa các Frame (Khung logic):
- alt (Alternative): Tương đương với lệnh If/Else/Else-if trong code.
- loop: Vòng lặp. Rất quan trọng khi BA định nghĩa cơ chế Retry (thử lại) khi gọi API bên thứ 3 thất bại.
- opt (Optional): Chỉ xảy ra nếu thỏa một điều kiện nào đó (If không có Else).
3. Anti-patterns
| Anti-pattern | Vì sao nguy hiểm | Cách sửa |
|---|---|---|
| Vẽ Sequence cho UI | Lạc đề, thừa thãi, không giúp gì cho Backend | Dùng Wireframe cho UI. Sequence chỉ vẽ Tương tác ngầm / Data |
| Quên xử lý Timeout/Lỗi | Hệ thống sẽ treo nếu API thứ 3 chết (Chỉ vẽ Happy Path) | Dùng frame alt để bọc nhánh Exception / Timeout |
| Code hóa sơ đồ | Khó đọc, đi quá sâu vào SQL nội bộ thay vì Contract | Mô tả message ở mức Component/API Contract (Vd: Check Stock) thay vì SELECT * |
4. Checklist nhanh
Trước khi giao Sequence Diagram cho Dev, hãy kiểm tra:
- Các mũi tên có phân biệt rõ Sync (Đồng bộ) và Async (Bất đồng bộ) không?
- Lời gọi API (Mũi tên đặc) đã có lời hồi đáp (Return - Mũi tên đứt) chưa?
- Các trường hợp hệ thống ngoài bị lỗi (Timeout, 500 Error) đã có nhánh
altxử lý chưa? - Đã đánh số thứ tự (
autonumber) để tiện thảo luận trong meeting chưa?
Mini-glossary
- Sequence Diagram: biểu đồ tuần tự, tập trung vào trình tự gọi hàm/API theo thời gian.
- Lifeline (Đường đời): đường nét đứt dọc dưới mỗi actor/component, thể hiện thời gian sống.
- Sync message: gọi đồng bộ, phải chờ phản hồi mới chạy tiếp (mũi tên đặc).
- Async message: gọi bất đồng bộ, gọi xong đi làm việc khác (mũi tên hở).
- Fragment: khung logic (alt, loop, opt) dùng để bọc rẽ nhánh hoặc vòng lặp.
References
- OMG Unified Modeling Language (UML) Specification v2.5.1, Section 17 (Interactions).
- BABOK Guide v3, Section 10.41 (Sequence Diagrams).
Internal Sources
- UML Sequence sample
- Study Map & Source Mapping
Related
- Kịch bản tổng quan: Use Case Diagram
- Luồng rẽ nhánh: Activity Diagram
- Tài liệu tích hợp: Interface Analysis