TÓM TẮT
- 1 Mở Đầu
- 2 1. Kiến Thức Nền Tảng Về Activity Diagram
- 3 2. Các Ký Hiệu và Thành Phần Cơ Bản
- 3.1 2.1. Action (Hành động)
- 3.2 2.2. Initial Node (Nút bắt đầu)
- 3.3 2.3. Final Node (Nút kết thúc)
- 3.4 2.4. Control Flow (Luồng điều khiển)
- 3.5 2.5. Decision Node (Điểm quyết định)
- 3.6 2.6. Merge Node (Hợp nhất)
- 3.7 2.7. Fork Node (Nhánh song song)
- 3.8 2.8. Join Node (Hội tụ song song)
- 3.9 2.9. Swimlane (Đường bơi)
- 3.10 2.10. Object Flow (Luồng dữ liệu)
- 3.11 2.11. Signal / Event (Sự kiện)
- 4 3. Quy Trình Chuẩn Để Vẽ Activity Diagram
- 4.1 Bước 1: Xác Định Mục Tiêu và Phạm Vi
- 4.2 Bước 2: Thu Thập Yêu Cầu và Thông Tin
- 4.3 Bước 3: Lập Danh Sách Các Action và Actor
- 4.4 Bước 4: Xác Định Các Điểm Quyết Định và Nhánh
- 4.5 Bước 5: Xác Định Các Luồng Song Song (Nếu Có)
- 4.6 Bước 6: Vẽ Swimlane (Nếu Cần)
- 4.7 Bước 7: Bắt Đầu Vẽ
- 4.8 Bước 8: Kiểm Tra và Rà Soát
- 4.9 Bước 9: Tài Liệu Hóa và Lưu Trữ
- 5 4. Các Lưu Ý và Best Practices
- 6 5. Ví Dụ Thực Tế
- 7 6. Công Cụ Hỗ Trợ Vẽ Activity Diagram
- 8 7. Các Bước Nâng Cao: Mở Rộng và Tích Hợp
- 9 8. Tổng Kết
Mở Đầu
Trong lĩnh vực phát triển phần mềm và phân tích hệ thống, biểu đồ Activity Diagram (hoạt động) là một trong những công cụ quan trọng giúp mô tả quy trình, luồng công việc và hành vi của một hệ thống. Được chuẩn hoá trong UML (Unified Modeling Language), Activity Diagram cho phép các nhà phân tích, kiến trúc sư và lập trình viên hình dung một cách trực quan các bước thực hiện, quyết định, đồng thời và tương tác giữa các thành phần.
Bài viết này sẽ cung cấp hướng dẫn chi tiết, từng bước một, về cách vẽ biểu đồ Activity Diagram, bao gồm:
- Kiến thức nền tảng về Activity Diagram.
- Các ký hiệu và thành phần cơ bản.
- Quy trình chuẩn để xây dựng một biểu đồ hoàn chỉnh.
- Các lưu ý, best practices và lỗi thường gặp.
- Ví dụ thực tế trong các lĩnh vực khác nhau.
- Công cụ hỗ trợ vẽ và cách lựa chọn công cụ phù hợp.
- Các bước nâng cao: mở rộng, tùy chỉnh và tích hợp với các mô hình UML khác.
Mục tiêu cuối cùng là giúp bạn không chỉ hiểu lý thuyết mà còn có thể áp dụng ngay vào dự án thực tế, từ việc mô tả một quy trình đơn giản như “đăng ký tài khoản” cho tới các quy trình phức tạp như “quản lý chuỗi cung ứng”.
1. Kiến Thức Nền Tảng Về Activity Diagram
1.1. Activity Diagram là gì?
Activity Diagram (AD) là một loại sơ đồ trong UML dùng để mô tả luồng công việc (workflow) hoặc quy trình nghiệp vụ. Nó tập trung vào:
- Các hành động (actions): những công việc cụ thể mà hệ thống hoặc người dùng thực hiện.
- Luồng điều khiển (control flow): thứ tự thực hiện các hành động.
- Điều kiện (decision, merge): các điểm quyết định nhánh hoặc hợp nhất luồng.
- Song song (fork, join): các luồng thực thi đồng thời.
1.2. Khi nào nên sử dụng Activity Diagram?
- Mô tả quy trình nghiệp vụ: ví dụ quy trình mua hàng, xử lý đơn hàng, bảo trì hệ thống.
- Phân tích luồng công việc nội bộ: các bước trong một hàm, thuật toán hoặc quy trình xử lý dữ liệu.
- Xác định các điểm quyết định và điều kiện: giúp phát hiện lỗi logic, deadlock, race condition.
- Giao tiếp với các bên liên quan: biểu đồ trực quan giúp stakeholder không chuyên kỹ thuật dễ hiểu.
1.3. So sánh với các loại sơ đồ UML khác
| Loại sơ đồ | Mục đích chính | Điểm mạnh | Khi không nên dùng |
|---|---|---|---|
| Use Case Diagram | Mô tả các chức năng hệ thống và tương tác với người dùng | Đơn giản, tập trung vào yêu cầu | Không mô tả chi tiết luồng công việc |
| Sequence Diagram | Mô tả tương tác thời gian giữa các đối tượng | Thể hiện thứ tự thông điệp | Không hiển thị luồng công việc nội bộ |
| State Machine Diagram | Mô tả trạng thái và chuyển đổi của một đối tượng | Thích hợp cho các hệ thống phản ứng | Không mô tả luồng công việc đa luồng |
| Activity Diagram | Mô tả luồng công việc, quy trình, đồng thời | Trực quan, hỗ trợ đồng thời, quyết định | Không chi tiết về thông điệp giữa đối tượng |
2. Các Ký Hiệu và Thành Phần Cơ Bản

Có thể bạn quan tâm: Cách Vẽ Biểu Tượng Cảm Xúc: Hướng Dẫn Từ Cơ Bản Đến Nâng Cao Cho Người Mới Bắt Đầu
2.1. Action (Hành động)
- Hình chữ nhật với góc bo tròn.
- Nội dung: mô tả công việc ngắn gọn, thường là một động từ (ví dụ: “Kiểm tra tồn kho”, “Gửi email xác nhận”).
2.2. Initial Node (Nút bắt đầu)
- Hình tròn đen.
- Đánh dấu điểm khởi đầu của quy trình.
2.3. Final Node (Nút kết thúc)
- Hình tròn trắng với vòng tròn đen ở bên trong.
- Kết thúc một luồng.
2.4. Control Flow (Luồng điều khiển)
- Mũi tên chỉ chiều đi của luồng.
- Kết nối các action, decision, fork, join, v.v.
2.5. Decision Node (Điểm quyết định)
- Hình thoi.
- Dùng để biểu thị một câu hỏi hoặc điều kiện (ví dụ: “Có đủ tiền không?”). Các nhánh ra ra có gắn nhãn (true/false, Yes/No).
2.6. Merge Node (Hợp nhất)
- Hình thoi (cùng ký hiệu với decision nhưng không có nhãn điều kiện). Khi nhiều nhánh quy trình hội tụ lại, sử dụng merge.
2.7. Fork Node (Nhánh song song)
- Đường ngang (hoặc dọc) với một hoặc nhiều mũi tên xuất ra.
- Tách một luồng thành nhiều luồng đồng thời.
2.8. Join Node (Hội tụ song song)
- Đường ngang (hoặc dọc) với nhiều mũi tên vào và một mũi tên ra.
- Đợi cho tất cả các luồng đồng thời hoàn thành trước khi tiếp tục.
2.9. Swimlane (Đường bơi)

Có thể bạn quan tâm: Cách Vẽ Biểu Cảm Gương Mặt: Hướng Dẫn Chi Tiết Từ Cơ Bản Đến Nâng Cao
- Các dải ngang hoặc dọc đại diện cho actors, systems, subsystems, hoặc phòng ban.
- Giúp phân biệt trách nhiệm của từng thực thể trong quy trình.
2.10. Object Flow (Luồng dữ liệu)
- Mũi tên có dấu “dotted” (điểm chấm) hoặc mũi tên có biểu tượng (ví dụ: một tài liệu).
- Thể hiện dữ liệu được truyền từ một action sang action khác.
2.11. Signal / Event (Sự kiện)
- Hình tròn nhọn hoặc hình bầu dục (event) để mô tả một tín hiệu hoặc sự kiện kích hoạt.
3. Quy Trình Chuẩn Để Vẽ Activity Diagram
Bước 1: Xác Định Mục Tiêu và Phạm Vi
- Xác định quy trình nào cần mô tả (ví dụ: “Đặt hàng online”).
- Định giới hạn: chỉ mô tả phần nào của quy trình (từ khi khách hàng chọn sản phẩm tới khi nhận hàng).
Bước 2: Thu Thập Yêu Cầu và Thông Tin
- Phỏng vấn stakeholder, người dùng cuối, nhà quản lý.
- Thu thập các tài liệu hiện có: SOP, flowchart, tài liệu kỹ thuật.
- Ghi chú các bước, quyết định, ngoại lệ, thời gian thực hiện.
Bước 3: Lập Danh Sách Các Action và Actor
| Action | Actor/Swimlane | Mô tả ngắn |
|---|---|---|
| Nhập thông tin khách hàng | Khách hàng | Người dùng điền form |
| Kiểm tra tồn kho | Hệ thống | Kiểm tra số lượng sản phẩm |
| Tính toán phí vận chuyển | Hệ thống | Dựa trên địa chỉ và trọng lượng |
| Xác nhận đơn hàng | Khách hàng | Nhấn nút “Xác nhận” |
| Gửi email xác nhận | Hệ thống | Gửi email tới khách hàng |
| … | … | … |
Bước 4: Xác Định Các Điểm Quyết Định và Nhánh
- Điều kiện: “Sản phẩm còn hàng?” → Yes → “Tiếp tục”, No → “Thông báo hết hàng”.
- Ngoại lệ: “Thanh toán thất bại?” → Retry, Cancel.
Bước 5: Xác Định Các Luồng Song Song (Nếu Có)
- Parallel tasks: Khi đồng thời gửi email và cập nhật kho.
- Fork: Tách luồng để thực hiện các tác vụ độc lập.
- Join: Đảm bảo cả hai tác vụ hoàn thành trước khi tiếp tục.
Bước 6: Vẽ Swimlane (Nếu Cần)

Có thể bạn quan tâm: Cách Vẽ Biển Đảo Trường Sa: Hướng Dẫn Chi Tiết Từ Cơ Bản Đến Nâng Cao
- Horizontal swimlane: Thường dùng cho các actor (Khách hàng, Hệ thống, Nhà cung cấp).
- Vertical swimlane: Khi có nhiều subsystem trong một hệ thống.
Bước 7: Bắt Đầu Vẽ
- Đặt Initial Node ở đầu swimlane phù hợp.
- Thêm các Action theo thứ tự logic.
- Kết nối bằng Control Flow.
- Chèn Decision Node tại các điểm cần phân nhánh, gắn nhãn condition.
- Thêm Merge Node để hợp nhất các nhánh.
- Nếu có song song, chèn Fork → các Action song song → Join.
- Kết thúc bằng Final Node.
Bước 8: Kiểm Tra và Rà Soát
- Kiểm tra tính hợp lệ: Mỗi Fork phải có Join tương ứng.
- Kiểm tra logic: Không có vòng lặp vô hạn (trừ khi mô tả vòng lặp có điều kiện).
- Kiểm tra nhãn: Các nhánh quyết định phải có nhãn rõ ràng.
- Nhận phản hồi từ stakeholder và điều chỉnh.
Bước 9: Tài Liệu Hóa và Lưu Trữ
- Ghi chú chi tiết bên dưới biểu đồ (các giả, ngày tạo, phiên bản).
- Lưu ở định dạng: .uml, .png, .pdf để chia sẻ.
- Kiểm soát phiên bản: Sử dụng Git hoặc hệ thống quản lý tài liệu.
4. Các Lưu Ý và Best Practices
4.1. Giữ Đơn Giản
- Mỗi biểu đồ nên mô tả một quy trình hoặc một phần quy trình, không nên quá 20-30 action.
- Nếu quá phức tạp, chia thành sub‑activity diagram (sử dụng Call Activity).
4.2. Sử Dụng Ngôn Ngữ Đồng Nhất
- Động từ ở dạng nguyên mẫu (Create, Validate, Send).
- Tránh dùng các cụm từ mơ hồ như “Xử lý”, “Thực hiện”.
4.3. Đặt Nhãn Điều Kiện Rõ Ràng
- Sử dụng Yes/No, True/False, hoặc mô tả ngắn gọn (“Có đủ tiền?”).
- Đặt nhãn trên mũi tên, không trên decision node.
4.4. Tránh Fork/Join Không Cần Thiết
- Chỉ dùng khi thực sự có công việc thực hiện đồng thời và cần đồng bộ lại.
- Nếu các tác vụ độc lập và không ảnh hưởng nhau, có thể gộp lại thành một action.
4.5. Kiểm Tra Deadlock và Race Condition

Có thể bạn quan tâm: Cách Vẽ Biển Bằng Màu Nước: Hướng Dẫn Chi Tiết Từ Cơ Bản Đến Nâng Cao
- Đảm bảo Join nhận đủ tất cả các luồng forked.
- Tránh các luồng không có kết nối tới Join (sẽ gây deadlock).
4.6. Sử Dụng Swimlane Đúng Cách
- Không lạm dụng swimlane; chỉ tạo khi có nhiều actor hoặc nhiều subsystem.
- Đặt actor ở đầu swimlane để dễ đọc.
4.7. Đánh Dấu Các Điểm Ngoại Lệ
- Sử dụng Exception Flow (mũi tên chấm) để mô tả các lỗi, rollback.
- Đừng bỏ qua các trường hợp thất bại; chúng quan trọng trong thiết kế.
4.8. Versioning và Traceability
- Khi biểu đồ thay đổi, đánh số phiên bản (v1.0, v1.1, …).
- Gắn ID yêu cầu (REQ-123) để trace lại nguồn gốc.
5. Ví Dụ Thực Tế
5.1. Ví dụ 1: Quy Trình Đăng Ký Tài Khoản Người Dùng
Mô tả ngắn: Người dùng đăng ký tài khoản trên một website.
Các bước chính
| Action | Actor | Ghi chú |
|---|---|---|
| Nhập thông tin cá nhân | Người dùng | Tên, email, mật khẩu |
| Kiểm tra định dạng email | Hệ thống | Validate regex |
| Kiểm tra mật khẩu mạnh | Hệ thống | Ít nhất 8 ký tự, ký tự đặc biệt |
| Decision: Dữ liệu hợp lệ? | Hệ thống | Yes → Tiếp tục, No → Hiển thị lỗi |
| Gửi email xác nhận | Hệ thống | Gửi link kích hoạt |
| Nhận phản hồi từ email | Người dùng | Click link |
| Xác thực tài khoản | Hệ thống | Đánh dấu tài khoản đã kích hoạt |
| Kết thúc | — | — |
Activity Diagram (tóm tắt)
Initial --> (Nhập thông tin) --> (Kiểm tra email) --> (Kiểm tra mật khẩu) --> Decision: Dữ liệu hợp lệ?
Yes --> (Gửi email xác nhận) --> (Chờ người dùng click) --> (Xác thực tài khoản) --> Final
No --> (Hiển thị lỗi) --> Final
5.2. Ví dụ 2: Quy Trình Xử Lý Đơn Hàng Trong E‑Commerce
Các Swimlane
- Khách hàng
- Hệ thống
- Kho
- Nhà vận chuyển
Các bước (rút gọn)
- Khách hàng: Chọn sản phẩm → Thêm vào giỏ → Đặt hàng.
- Hệ thống: Kiểm tra tồn kho → Tính phí vận chuyển → Tạo đơn hàng → Gửi email xác nhận.
- Kho: Đóng gói → Cập nhật trạng thái “Đã đóng gói”.
- Nhà vận chuyển: Nhận thông tin → Giao hàng → Cập nhật trạng thái “Đã giao”.
- Hệ thống: Gửi email hoàn thành → Kết thúc.
Điểm quyết định quan trọng
- Tồn kho đủ? → Yes → Tiếp tục, No → Thông báo hết hàng.
- Thanh toán thành công? → Yes → Đóng gói, No → Hủy đơn.
Song song
- Khi đơn hàng đã được tạo, Kho và Nhà vận chuyển có thể đồng thời thực hiện đóng gói và chuẩn bị vận chuyển, nhưng thực tế thường fork sau “Tạo đơn hàng” → Fork → (Kho đóng gói) và (Nhà vận chuyển chuẩn bị) → Join → “Giao hàng”.
5.3. Ví dụ 3: Quy Trình Xử Lý Yêu Cầu Hỗ Trợ (Help Desk)
- User → Gửi ticket.
- System → Tạo ticket, gửi email tự động.
- Support Agent → Nhận ticket → Kiểm tra mức độ ưu tiên → Decision: “Cấp 1” hay “Cấp 2”.
- Cấp 1 → Giải quyết nhanh → Đóng ticket.
- Cấp 2 → Giao cho nhóm chuyên môn → Thực hiện → Đóng ticket.
- Final → Gửi email phản hồi.
6. Công Cụ Hỗ Trợ Vẽ Activity Diagram
| Công cụ | Ưu điểm | Nhược điểm | Phí |
|---|---|---|---|
| Microsoft Visio | Đa dạng ký hiệu UML, tích hợp Office | Giá cao, không mở nguồn | Thuê/ mua |
| Lucidchart | Web‑based, cộng tác real‑time | Giới hạn bản miễn phí | Freemium |
| draw.io (diagrams.net) | Miễn phí, tích hợp Google Drive | Giao diện đơn giản | Miễn phí |
| StarUML | Hỗ trợ đầy đủ UML, plugin | Cần cài đặt, không web | $79/năm |
| PlantUML | Text‑based, dễ version control | Đòi hỏi viết mã DSL | Miễn phí |
| Enterprise Architect | Công cụ mạnh cho enterprise, traceability | Rất phức tạp, giá cao | $229+ |
| Visual Paradigm | Hỗ trợ nhiều loại sơ đồ, team collaboration | Giao diện hơi nặng | Freemium/Enterprise |
Lựa chọn công cụ phù hợp

- Dự án nhỏ / cá nhân: draw.io hoặc Lucidchart (phiên bản miễn phí).
- Team lớn, cần version control: PlantUML + Git, hoặc Visual Paradigm.
- Doanh nghiệp: Enterprise Architect hoặc StarUML với tính năng traceability.
7. Các Bước Nâng Cao: Mở Rộng và Tích Hợp
7.1. Call Activity (Gọi Sub‑Activity)
- Khi một action trong Activity Diagram là một quy trình con, sử dụng Call Activity (hình chữ nhật với dấu “+” ở góc).
- Giúp tái sử dụng mô hình và giảm độ phức tạp.
7.2. Interaction with Other UML Diagrams
| Interaction | Mô tả |
|---|---|
| Sequence Diagram ↔ Activity Diagram | Sequence mô tả chi tiết thông điệp, Activity mô tả luồng công việc. Có thể chuyển đổi để kiểm tra tính nhất quán. |
| State Machine ↔ Activity | State machine mô tả trạng thái, activity mô tả hành động trong mỗi trạng thái. |
| Component Diagram | Activity có thể tham chiếu tới component để chỉ ra nơi thực hiện. |
7.3. Sử Dụng Extension Points
- Extension Point cho phép bổ sung hành động mới mà không làm thay đổi cấu trúc chính (đặc biệt trong kiến trúc plugin).
7.4. Kiểm Thử và Mô Phỏng
- Các công cụ như Enterprise Architect cho phép simulate activity diagram, kiểm tra luồng thực thi và thời gian.
- Viết test cases dựa trên các đường đi (paths) trong biểu đồ: mỗi đường đi tương đương một kịch bản kiểm thử.
8. Tổng Kết
Activity Diagram là một công cụ mạnh mẽ, giúp trực quan hoá quy trình nghiệp vụ và luồng công việc trong hệ thống. Để vẽ một biểu đồ chất lượng, người thực hiện cần:
- Hiểu rõ mục tiêu và phạm vi của quy trình.
- Thu thập đầy đủ thông tin từ stakeholder.
- Xác định các action, actor, decision và luồng song song một cách logic.
- Sử dụng ký hiệu chuẩn và tuân thủ các nguyên tắc thiết kế (đơn giản, nhất quán, có nhãn).
- Kiểm tra, rà soát và lấy phản hồi trước khi chốt bản cuối.
- Lưu trữ, versioning để duy trì tính traceability và bảo trì lâu dài.
- Lựa chọn công cụ phù hợp với quy mô và yêu cầu dự án.
Bằng cách áp dụng quy trình và best practices trên, bạn sẽ có thể tạo ra các Activity Diagram không chỉ đẹp mắt mà còn chính xác, hỗ trợ tốt cho việc phân tích, thiết kế và phát triển phần mềm. Hãy bắt đầu thực hành ngay hôm nay: chọn một quy trình đơn giản trong công việc của bạn, vẽ nó bằng một công cụ miễn phí như draw.io, sau đó dần dần mở rộng tới các quy trình phức tạp hơn. Thành công của bạn trong việc mô hình hoá sẽ phản ánh trực tiếp vào chất lượng và hiệu quả của dự án phần mềm.
Chúc bạn thành công trong việc tạo ra những Activity Diagram chuẩn xác và hữu ích!
