TÓM TẮT
- 1 1. Giới thiệu chung về Data Flow Diagram
- 2 2. Chuẩn bị trước khi vẽ DFD
- 3 3. Các bước vẽ Data Flow Diagram chi tiết
- 4 4. Các quy tắc và nguyên tắc quan trọng khi vẽ DFD
- 5 5. Ví dụ thực tế: Vẽ DFD cho hệ thống bán hàng trực tuyến
- 6 6. Thực hành: Các lỗi thường gặp và cách khắc phục
- 7 7. Tips nâng cao để làm DFD chuyên nghiệp
- 8 8. Kết luận
1. Giới thiệu chung về Data Flow Diagram
Data Flow Diagram (DFD), hay còn gọi là Sơ Đồ Dòng Dữ Liệu, là một công cụ mô hình hoá quan trọng trong phân tích hệ thống và thiết kế phần mềm. DFD giúp chúng ta mô tả cách thức dữ liệu di chuyển qua các quy trình, lưu trữ và các thực thể bên ngoài trong một hệ thống. Nhờ tính trực quan và khả năng biểu diễn mức độ chi tiết linh hoạt, DFD trở thành “ngôn ngữ chung” giữa các nhà phân tích, nhà thiết kế, lập trình viên và cả khách hàng.
1.1. Lợi ích của DFD
- Giao tiếp rõ ràng: DFD dùng các ký hiệu đơn giản (hình tròn, mũi tên, hình chữ nhật) giúp mọi người dễ dàng hiểu được luồng dữ liệu mà không cần kiến thức lập trình sâu.
- Phát hiện lỗi sớm: Khi mô tả quy trình bằng DFD, các lỗi logic, thiếu sót dữ liệu hay vòng lặp vô nghĩa có thể được phát hiện ngay trong giai đoạn phân tích.
- Xác định phạm vi: DFD mức cao (cấp 0) giúp xác định ranh giới hệ thống, trong khi các cấp con (cấp 1, 2…) chi tiết hoá từng chức năng.
- Hỗ trợ thiết kế: DFD cung cấp nền tảng cho việc xây dựng các mô hình khác như ERD (Entity-Relationship Diagram) hoặc UML (Unified Modeling Language).
1.2. Các thành phần cơ bản của DFD
| Thành phần | Ký hiệu | Mô tả |
|---|---|---|
| External Entity (Thực thể bên ngoài) | Hình chữ nhật | Người dùng, hệ thống khác, hoặc bất kỳ nguồn/công cụ nào cung cấp hoặc nhận dữ liệu. |
| Process (Quy trình) | Hình tròn hoặc hình chữ nhật bo góc | Các hoạt động biến đổi dữ liệu (ví dụ: “Xử lý đơn hàng”). |
| Data Store (Kho dữ liệu) | Hình chữ nhật mở (có một cạnh mở) | Nơi lưu trữ dữ liệu tạm thời hoặc lâu dài (ví dụ: “CSDL Khách hàng”). |
| Data Flow (Luồng dữ liệu) | Mũi tên | Dòng dữ liệu di chuyển từ thực thể này sang thực thể khác, qua quy trình hoặc lưu trữ. |
2. Chuẩn bị trước khi vẽ DFD
2.1. Thu thập yêu cầu và tài liệu liên quan
- Yêu cầu chức năng: Danh sách các chức năng hệ thống cần thực hiện.
- Luồng công việc (workflow): Các bước thực hiện công việc trong thực tế.
- Biểu mẫu dữ liệu: Các loại dữ liệu, trường dữ liệu, định dạng.
- Môi trường tích hợp: Các hệ thống khác mà hệ thống của bạn sẽ tương tác.
2.2. Xác định phạm vi (Scope) của DFD

Có thể bạn quan tâm: Cách Vẽ Cửa Trong Autocad: Hướng Dẫn Chi Tiết Từ Cơ Bản Đến Nâng Cao
Xác định mức độ chi tiết bạn muốn mô tả. Thông thường, một dự án sẽ có:
- DFD cấp 0 (Context Diagram): Toàn bộ hệ thống được xem như một “black box”, chỉ có một quy trình duy nhất và các thực thể bên ngoài.
- DFD cấp 1: Phân tách quy trình cấp 0 thành các quy trình con (thường 4‑8 quy trình).
- DFD cấp 2 và các cấp tiếp theo: Chi tiết hoá sâu hơn các quy trình cấp 1 nếu cần.
2.3. Lựa chọn công cụ vẽ
Có nhiều công cụ hỗ trợ vẽ DFD, ví dụ:
- Microsoft Visio: Đầy đủ ký hiệu, tích hợp tốt với Office.
- Lucidchart hoặc Draw.io (diagrams.net): Miễn phí, web‑based, hỗ trợ cộng tác.
- StarUML, Enterprise Architect: Dành cho người muốn tích hợp DFD vào mô hình UML.
- Pen & Paper: Đôi khi, việc phác thảo nhanh trên giấy là cách tốt nhất để “brainstorm” ý tưởng.
3. Các bước vẽ Data Flow Diagram chi tiết
Bước 1: Vẽ DFD Cấp 0 (Context Diagram)
- Xác định hệ thống chính: Viết tên hệ thống ở trung tâm dưới dạng một vòng tròn (hoặc hình chữ nhật bo góc) lớn.
- Xác định các thực thể bên ngoài: Vẽ các hình chữ nhật xung quanh hệ thống, mỗi thực thể đại diện cho một nguồn hoặc đích của dữ liệu (ví dụ: “Khách hàng”, “Hệ thống thanh toán”, “Nhân viên”).
- Xác định luồng dữ liệu chính: Dùng mũi tên để nối thực thể bên ngoài với hệ thống, đặt tên cho mỗi luồng dữ liệu (ví dụ: “Yêu cầu đặt hàng”, “Xác nhận thanh toán”).
- Kiểm tra tính toàn vẹn: Đảm bảo không có luồng dữ liệu nào đi thẳng từ một thực thể vào một thực thể khác mà không qua hệ thống (tránh “đường tắt”).
Mẹo: DFD cấp 0 thường chỉ có 1‑2 quy trình, vì mục tiêu là mô tả toàn bộ hệ thống dưới góc nhìn tổng quát.
Bước 2: Xác định các quy trình chính cho DFD Cấp 1
- Phân tích các chức năng: Dựa vào yêu cầu chức năng, liệt kê các quy trình lớn (ví dụ: “Xử lý đơn hàng”, “Quản lý khách hàng”, “Xác thực người dùng”).
- Đặt tên quy trình: Mỗi quy trình nên có một hành động động từ (verb) + danh từ (noun) để mô tả rõ ràng (ví dụ: “Kiểm tra tồn kho”, “Gửi email xác nhận”).
- Đánh số quy trình: Đánh số từ 1, 2, 3… để dễ tham chiếu khi mô tả chi tiết (ví dụ: P1 – Kiểm tra tồn kho).
Bước 3: Vẽ DFD Cấp 1

Có thể bạn quan tâm: Cách Vẽ Củ Hành Tây Chi Tiết Từng Bước: Hướng Dẫn Từ Cơ Bản Đến Nâng Cao
- Vẽ các quy trình: Dùng hình tròn hoặc hình chữ nhật bo góc, đặt tên và số quy trình bên trong.
- Thêm các thực thể bên ngoài: Giữ nguyên các thực thể đã có trong cấp 0, có thể thêm mới nếu có thêm nguồn/dữ liệu.
- Thêm các kho dữ liệu (Data Store): Xác định các cơ sở dữ liệu, file, hoặc bảng lưu trữ (ví dụ: “DB Khách hàng”, “File Đơn hàng”). Đặt tên ngắn gọn, kèm số (D1, D2…).
- Kết nối luồng dữ liệu:
- Từ thực thể → quy trình: Dữ liệu đầu vào (input).
- Từ quy trình → thực thể: Dữ liệu đầu ra (output).
- Giữa quy trình và kho dữ liệu: Dòng dữ liệu “lưu” (write) và “đọc” (read) thường được ký hiệu bằng mũi tên đôi chiều hoặc hai mũi tên riêng.
- Kiểm tra các quy tắc:
- Không có luồng dữ liệu trực tiếp giữa hai thực thể (phải qua quy trình).
- Luồng dữ liệu không được đan xen (tránh “crossing lines” nếu có thể, dùng đường uốn hoặc nhánh phụ).
- Mỗi quy trình phải có ít nhất một luồng dữ liệu vào và một luồng dữ liệu ra.
Bước 4: Xác định các quy trình con (DFD Cấp 2)
Nếu một quy trình ở cấp 1 quá phức tạp (nhiều luồng vào/ra, nhiều quyết định), bạn cần “phân rã” nó thành các quy trình con.
- Chọn quy trình cần chi tiết (ví dụ: P1 – Kiểm tra tồn kho).
- Liệt kê các bước con: Các hành động nhỏ hơn như “Lấy thông tin sản phẩm”, “Kiểm tra số lượng”, “Cập nhật trạng thái”.
- Đánh số cấp 2: Ví dụ: P1.1, P1.2, P1.3.
- Vẽ DFD cấp 2: Tương tự như cấp 1, nhưng chỉ tập trung vào quy trình con và các dữ liệu liên quan.
Bước 5: Hoàn thiện và kiểm tra lại DFD
- Kiểm tra tính nhất quán: Đảm bảo tên luồng dữ liệu, quy trình và kho dữ liệu đồng nhất ở mọi cấp.
- Xác nhận với stakeholder: Trình bày DFD cho người dùng, nhà quản lý, hoặc khách hàng để xác nhận rằng mô hình phản ánh đúng nhu cầu.
- Đánh giá mức độ chi tiết: Nếu DFD quá chi tiết (nhiều cấp con không cần thiết) hoặc quá tổng quát (thiếu thông tin), điều chỉnh lại.
4. Các quy tắc và nguyên tắc quan trọng khi vẽ DFD
4.1. Quy tắc “Balanced Diagram”
Khi một quy trình được phân rã, các luồng dữ liệu vào và ra của quy trình cấp cao phải bằng các luồng dữ liệu vào và ra của các quy trình con. Ví dụ, nếu P1 (cấp 1) nhận “Yêu cầu đặt hàng” và xuất “Xác nhận đơn hàng”, thì các quy trình con (P1.1, P1.2…) phải tổng hợp lại các luồng này một cách chính xác.
4.2. Nguyên tắc “Single Direction Flow”

Có thể bạn quan tâm: Cách Vẽ Cột Trong Word: Hướng Dẫn Chi Tiết Từ Cơ Bản Đến Nâng Cao
Luồng dữ liệu luôn di chuyển đơn hướng; không nên có mũi tên quay ngược lại trên cùng một đường. Nếu cần biểu diễn luồng hai chiều, dùng hai mũi tên riêng biệt.
4.3. Định dạng tên
- Tên thực thể: Viết hoa đầu từ, không có ký tự đặc biệt (ví dụ: “Khách hàng”).
- Tên quy trình: Động từ + danh từ, ngắn gọn (ví dụ: “Xác thực người dùng”).
- Tên kho dữ liệu: Danh từ duy nhất, kèm số nếu cần (ví dụ: “DB Đơn hàng (D1)”).
- Tên luồng dữ liệu: Nên là danh từ, mô tả dữ liệu (ví dụ: “Thông tin sản phẩm”).
4.4. Không sử dụng ký hiệu không chuẩn
Tránh dùng các ký hiệu không thuộc chuẩn Gane‑Swan (hoặc Yourdon) trừ khi toàn bộ nhóm đã thống nhất. Ví dụ, không nên dùng hình tam giác để biểu thị quy trình; dùng hình tròn hoặc hình chữ nhật bo góc là chuẩn.
5. Ví dụ thực tế: Vẽ DFD cho hệ thống bán hàng trực tuyến
5.1. Bối cảnh

Có thể bạn quan tâm: Cách Vẽ Cổ Áo Vest Chuẩn Chuyên Nghiệp: Hướng Dẫn Từng Bước Cho Người Mới Bắt Đầu
Một cửa hàng trực tuyến cho phép khách hàng duyệt sản phẩm, đặt hàng, thanh toán và theo dõi trạng thái đơn hàng. Hệ thống tương tác với:
- Khách hàng (web hoặc app)
- Hệ thống thanh toán (cổng thanh toán bên thứ ba)
- Nhân viên kho (để cập nhật tồn kho)
- Hệ thống email (gửi thông báo)
5.2. DFD Cấp 0 (Context Diagram)
Khách hàng --> (Hệ thống Bán Hàng Trực Tuyến) --> Khách hàng
Khách hàng --> (Hệ thống Bán Hàng Trực Tuyến) --> Hệ thống Thanh toán
Nhân viên kho <-- (Hệ thống Bán Hàng Trực Tuyến) <-- Nhân viên kho
Hệ thống Email <-- (Hệ thống Bán Hàng Trực Tuyến) <-- Hệ thống Email
- Quy trình duy nhất: “Quản lý giao dịch bán hàng”.
- Luồng dữ liệu: “Yêu cầu mua”, “Yêu cầu thanh toán”, “Xác nhận giao hàng”, “Thông báo email”.
5.3. DFD Cấp 1
| Quy trình | Mô tả | Input | Output |
|---|---|---|---|
| P1 – Duyệt sản phẩm | Khách hàng xem danh mục, tìm kiếm | “Yêu cầu duyệt”, “Từ khóa tìm kiếm” | “Danh sách sản phẩm” |
| P2 – Đặt hàng | Khách hàng tạo giỏ hàng, xác nhận | “Giỏ hàng”, “Thông tin khách hàng” | “Yêu cầu thanh toán” |
| P3 – Thanh toán | Gửi dữ liệu tới cổng thanh toán, nhận phản hồi | “Yêu cầu thanh toán” | “Kết quả thanh toán” |
| P4 – Cập nhật kho | Nhân viên kho giảm tồn kho | “Chi tiết đơn hàng” | “Xác nhận cập nhật” |
| P5 – Gửi thông báo | Gửi email xác nhận, trạng thái | “Kết quả thanh toán”, “Chi tiết đơn hàng” | “Email xác nhận” |
Data Stores (Kho dữ liệu):
– D1 – CSDL Sản phẩm
– D2 – CSDL Đơn hàng
– D3 – CSDL Khách hàng
Luồng dữ liệu chính (mũi tên):
– Từ “Khách hàng” → P1: “Yêu cầu duyệt”
– P1 → D1: “Truy vấn sản phẩm”
– D1 → P1: “Kết quả sản phẩm”
– P1 → “Khách hàng”: “Danh sách sản phẩm”
– “Khách hàng” → P2: “Giỏ hàng”
– P2 → D2: “Lưu đơn hàng tạm thời”
– P2 → P3: “Yêu cầu thanh toán”
– P3 → D2: “Cập nhật trạng thái thanh toán”
– P3 → P4: “Chi tiết đơn hàng”
– P4 → D1: “Cập nhật tồn kho”
– P4 → D2: “Cập nhật trạng thái giao hàng”
– P5 → “Khách hàng”: “Email xác nhận”
5.4. DFD Cấp 2 (Chi tiết P2 – Đặt hàng)

| Quy trình con | Mô tả | Input | Output |
|---|---|---|---|
| P2.1 – Thêm sản phẩm vào giỏ | Nhận mã sản phẩm, số lượng | “Mã SP, Số lượng” | “Mục giỏ hàng” |
| P2.2 – Kiểm tra tồn kho | Kiểm tra D1 | “Mục giỏ hàng” | “Xác nhận khả dụng” |
| P2.3 – Xác nhận giỏ hàng | Nhận thông tin khách hàng | “Mục giỏ hàng đã xác nhận” | “Yêu cầu thanh toán” |
| P2.4 – Lưu đơn hàng tạm thời | Ghi vào D2 | “Yêu cầu thanh toán” | “Mã đơn hàng tạm” |
Data Store liên quan: D1 (Sản phẩm), D2 (Đơn hàng tạm).
5.5. Kiểm tra tính cân bằng (Balanced)
- Input cấp 1 cho P2: “Giỏ hàng” → P2.
- Output cấp 1 từ P2: “Yêu cầu thanh toán” → P3.
- Trong cấp 2, tổng hợp các luồng:
- P2.1, P2.2, P2.3, P2.4 tạo thành “Yêu cầu thanh toán” duy nhất.
- Các luồng nội bộ (kiểm tra tồn kho) không xuất hiện ở cấp 1, vì đó là chi tiết nội bộ.
6. Thực hành: Các lỗi thường gặp và cách khắc phục
| Lỗi | Mô tả | Cách khắc phục |
|---|---|---|
| Luồng dữ liệu không có tên | Mũi tên trống, gây nhầm lẫn | Đặt tên ngắn gọn, mô tả dữ liệu (ví dụ: “Thông tin khách hàng”). |
| Quy trình không có luồng vào/ra | Quy trình “độc lập” không liên quan | Thêm luồng dữ liệu hoặc gộp quy trình vào quy trình khác. |
| Ký hiệu không chuẩn | Dùng hình tam giác cho quy trình | Thay bằng hình tròn hoặc hình chữ nhật bo góc chuẩn. |
| Kết nối thực thể trực tiếp | Thực thể A → Thực thể B mà không qua quy trình | Thêm quy trình trung gian hoặc hợp nhất thực thể nếu hợp lý. |
| Đường mũi tên chồng lấn | Nhiều mũi tên cắt nhau, khó đọc | Dùng đường uốn, nhánh phụ, hoặc bố trí lại các thành phần để giảm chồng lấn. |
7. Tips nâng cao để làm DFD chuyên nghiệp
- Sử dụng màu sắc: Đánh dấu các mức độ (cấp 0 – xanh, cấp 1 – xanh nhạt, quy trình con – vàng) để người xem nhanh chóng nhận ra mức độ chi tiết.
- Thêm chú thích: Đối với các luồng dữ liệu phức tạp, có thể thêm “note” để giải thích định dạng hoặc quy tắc validation.
- Tạo Legend (bảng ký hiệu): Đặt ở góc diagram, liệt kê các ký hiệu và màu sắc đã dùng.
- Phiên bản hóa: Lưu lại các phiên bản DFD khi thay đổi yêu cầu, có thể dùng “v1.0, v1.1…” để theo dõi lịch sử.
- Kết hợp với các mô hình khác: Sau khi có DFD, bạn có thể chuyển sang ERD để thiết kế CSDL, hoặc sang Use Case Diagram để mô tả các trường hợp sử dụng.
8. Kết luận
Việc vẽ Data Flow Diagram không chỉ là một bước trong quy trình phân tích hệ thống mà còn là công cụ giao tiếp mạnh mẽ, giúp mọi bên liên quan cùng hiểu và đồng thuận về cách dữ liệu di chuyển, được xử lý và lưu trữ. Bằng cách tuân thủ các quy tắc chuẩn, chia thành các cấp độ hợp lý và luôn kiểm tra tính cân bằng, bạn sẽ tạo ra những DFD rõ ràng, chính xác và dễ bảo trì.
Hãy bắt đầu từ DFD cấp 0 để nắm bắt toàn cảnh, sau đó dần dần phân rã thành các quy trình chi tiết hơn cho tới cấp 2 hoặc 3 khi cần. Khi hoàn thành, đừng quên đánh giá lại với các stakeholder để chắc chắn mô hình phản ánh đúng nhu cầu thực tế. Với những kiến thức và hướng dẫn chi tiết trên, bạn đã sẵn sàng tạo ra các Data Flow Diagram chuyên nghiệp cho bất kỳ dự án phần mềm nào. Chúc bạn thành công!
