TÓM TẮT
- 1 Mở Đầu
- 2 1. Khái Niệm Cơ Bản Về DFD
- 3 2. Các Thành Phần Và Ký Hiệu Chuẩn
- 4 3. Quy Trình Vẽ DFD Từ Đầu Đến Cuối
- 5 4. Mẹo Và Thủ Thuật Nâng Cao Khi Vẽ DFD
- 5.1 4.1 Đặt Số Hiệu và Tên Định Danh
- 5.2 4.2 Sử Dụng Quy Tắc “Single Direction”
- 5.3 4.3 Tránh “Crossing Lines” (đường cắt nhau)
- 5.4 4.4 Kiểm Tra “Balanced” (Cân Bằng)
- 5.5 4.5 Đánh Dấu “External Entity” Khi Giao Tiếp Với Hệ Thống Khác
- 5.6 4.6 Phân Loại Data Store
- 5.7 4.7 Sử Dụng Màu Sắc (Khi Phần Mềm Cho Phép)
- 5.8 4.8 Ghi Chú (Annotations)
- 6 5. Công Cụ Hỗ Trợ Vẽ DFD
- 7 6. Ví Dụ Thực Tế: Vẽ DFD Cho Hệ Thống Quản Lý Đặt Phòng Khách Sạn
- 8 7. Thực Hành: Tạo DFD Cho Ứng Dụng Ngân Hàng
- 9 8. Những Sai Lầm Thường Gặp Khi Vẽ DFD Và Cách Tránh
- 10 9. Kiểm Tra Chất Lượng DFD
- 11 10. Tổng Kết
Mở Đầu
Sơ đồ DFD (Data Flow Diagram – Sơ Đồ Luồng Dữ Liệu) là một trong những công cụ quan trọng nhất trong phân tích và thiết kế hệ thống thông tin. Nó giúp mô tả cách dữ liệu di chuyển trong hệ thống, các quá trình xử lý dữ liệu, và các nguồn, lưu trữ dữ liệu. Việc vẽ một sơ đồ DFD chuẩn xác không chỉ giúp các nhà phân tích, lập trình viên, và nhà quản lý hiểu rõ hơn về yêu cầu hệ thống mà còn giảm thiểu rủi ro phát sinh trong giai đoạn phát triển và bảo trì.
Bài viết này sẽ cung cấp cho bạn một hướng dẫn chi tiết, từ những khái niệm cơ bản, các ký hiệu chuẩn, quy trình vẽ DFD, cho đến các lưu ý và mẹo nâng cao để tạo ra những sơ đồ DFD chuyên nghiệp, dễ hiểu và hiệu quả.
1. Khái Niệm Cơ Bản Về DFD
1.1 Định Nghĩa
DFD (Data Flow Diagram) là biểu đồ mô tả luồng dữ liệu trong một hệ thống, thể hiện cách dữ liệu được nhập vào, xử lý, lưu trữ và xuất ra. Khác với các sơ đồ khác như UML hay ERD, DFD tập trung vào luồng dữ liệu và các quá trình (process) thay vì cấu trúc dữ liệu hay hành vi đối tượng.
1.2 Lợi Ích Của DFD
- Hiểu rõ quy trình nghiệp vụ: Giúp các bên liên quan nắm bắt cách nghiệp vụ diễn ra.
- Phát hiện lỗi và lỗ hổng: Dễ dàng nhận ra các điểm yếu trong luồng dữ liệu.
- Giao tiếp hiệu quả: Là ngôn ngữ chung giữa nhà phân tích, nhà phát triển và khách hàng.
- Hỗ trợ thiết kế hệ thống: Dễ dàng chuyển từ DFD sang mô hình thiết kế chi tiết (ERD, UML, …).
1.3 Các Mức Độ Của DFD
- DFD Cấp 0 (Context Diagram) – Mô tả toàn bộ hệ thống như một “hộp đen” duy nhất, chỉ thể hiện các tác nhân bên ngoài (External Entities) và luồng dữ liệu chính.
- DFD Cấp 1 – Phân tách “hộp đen” thành các quá trình con (processes) chính, cho thấy cách dữ liệu di chuyển giữa các quá trình, lưu trữ và tác nhân.
- DFD Cấp 2 và Cao hơn – Tiếp tục chi tiết hoá các quá trình con thành các bước nhỏ hơn, cung cấp cái nhìn chi tiết hơn về logic nghiệp vụ.
2. Các Thành Phần Và Ký Hiệu Chuẩn

Có thể bạn quan tâm: Cách Vẽ Sóng Mũi Cao: Hướng Dẫn Chi Tiết Từ Cơ Bản Đến Nâng Cao
| Thành phần | Ý nghĩa | Ký hiệu chuẩn | Mô tả chi tiết |
|---|---|---|---|
| External Entity (Tác nhân bên ngoài) | Người dùng, hệ thống khác, thiết bị | Hình chữ nhật | Đại diện cho nguồn hoặc đích của dữ liệu bên ngoài hệ thống. |
| Process (Quá trình) | Hoạt động xử lý dữ liệu | Hình tròn hoặc hình oval | Mỗi quá trình nhận dữ liệu vào, thực hiện xử lý và xuất dữ liệu ra. |
| Data Store (Kho dữ liệu) | Nơi lưu trữ dữ liệu tĩnh | Hình chữ nhật mở (hai đường dọc) | Thể hiện các tệp, bảng, cơ sở dữ liệu. |
| Data Flow (Luồng dữ liệu) | Dòng dữ liệu di chuyển | Mũi tên | Chỉ hướng di chuyển và nội dung dữ liệu. |
Lưu ý: Mặc dù có một số biến thể (ví dụ: sử dụng hình vuông cho process), nhưng trong các chuẩn công nghiệp (Gane & Sarson, Yourdon), ký hiệu trên là phổ biến nhất. Khi làm việc trong một dự án, hãy thống nhất ký hiệu để tránh nhầm lẫn.
3. Quy Trình Vẽ DFD Từ Đầu Đến Cuối
Bước 1: Thu Thập Yêu Cầu và Xác Định Phạm Vi
- Phỏng vấn các bên liên quan (người dùng cuối, quản lý, chuyên gia nghiệp vụ) để hiểu các chức năng và luồng dữ liệu.
- Xác định các tác nhân bên ngoài (customers, suppliers, external systems).
- Liệt kê các chức năng nghiệp vụ chính (order processing, inventory management, …).
Bước 2: Vẽ DFD Cấp 0 (Context Diagram)
- Đặt hệ thống ở trung tâm, thường là một hình tròn lớn hoặc một hình chữ nhật.
- Vẽ các External Entity xung quanh và kết nối chúng với hệ thống bằng Data Flow.
- Mỗi luồng dữ liệu chỉ có một tên duy nhất, phản ánh nội dung (ví dụ: “Đơn đặt hàng”, “Xác nhận thanh toán”).
Ví dụ: Hệ thống bán hàng online có các tác nhân: Khách hàng, Ngân hàng, Nhà cung cấp. Luồng dữ liệu bao gồm “Yêu cầu mua”, “Thanh toán”, “Xác nhận đơn”.
Bước 3: Phân Tách Thành DFD Cấp 1
- Xác định các quá trình chính dựa trên các chức năng nghiệp vụ đã liệt kê. Mỗi quá trình thường mang số hiệu (P1, P2, …) và tên mô tả ngắn gọn.
- Xác định Data Store cần thiết cho mỗi quá trình (ví dụ: “Cơ sở dữ liệu khách hàng”, “Kho hàng”).
- Vẽ các luồng dữ liệu giữa: External Entity ↔ Process, Process ↔ Data Store, Process ↔ Process.
- Đảm bảo luồng dữ liệu không bị rối: Mỗi luồng chỉ đi một chiều, và không có luồng dữ liệu “đi qua” một quá trình nếu không thực sự được xử lý.
Bước 4: Chi Tiết Hóa (DFD Cấp 2 và Cao Hơn)
- Chọn một process trong DFD Cấp 1 cần chi tiết hơn (ví dụ: P2 – Xử lý Đơn hàng).
- Phân tách process này thành các sub-process (P2.1, P2.2, …) dựa trên các bước thực hiện (Kiểm tra tồn kho, Tính tiền, Gửi email xác nhận,…).
- Thêm Data Store phụ nếu cần (ví dụ: “Bảng tạm thời giỏ hàng”).
- Lặp lại cho đến khi mỗi process không thể chia nhỏ hơn (thường là một bước nghiệp vụ đơn lẻ).
Bước 5: Kiểm Tra và Xác Nhận

Có thể bạn quan tâm: Cách Vẽ Sân Bóng Chuyền Chuẩn Như Chuyên Gia: Hướng Dẫn Từng Bước Chi Tiết
- Kiểm tra tính toàn vẹn: Mỗi luồng dữ liệu phải có nguồn và đích, không có “đứt” hoặc “rẽ” không hợp lý.
- Đảm bảo không có vòng lặp vô nghĩa: Nếu có vòng lặp, hãy chắc chắn nó phản ánh thực tế (ví dụ: quá trình kiểm tra lại).
- Rà soát với các bên liên quan: Đọc lại DFD và xác nhận rằng nó phản ánh đúng yêu cầu.
Bước 6: Đánh Giá và Tối Ưu
- Rút gọn các process không cần thiết (nếu một process chỉ thực hiện một thao tác đơn giản, có thể gộp vào process khác).
- Chuẩn hoá tên luồng dữ liệu: Tránh trùng lặp và sử dụng từ ngữ nhất quán.
- Sử dụng công cụ hỗ trợ (Visio, Lucidchart, draw.io, Microsoft PowerPoint) để tạo sơ đồ sạch sẽ, dễ chỉnh sửa.
4. Mẹo Và Thủ Thuật Nâng Cao Khi Vẽ DFD
4.1 Đặt Số Hiệu và Tên Định Danh
- Số hiệu process: P1, P2, …; Sub-process: P1.1, P1.2, …
- Tên luồng dữ liệu: Nên ngắn gọn, mô tả rõ nội dung (không dùng “Data1”, “Data2”).
- Tên Data Store: Đặt theo chức năng (Customer_DB, Order_Archive).
4.2 Sử Dụng Quy Tắc “Single Direction”
Luồng dữ liệu luôn di chuyển theo một chiều; nếu dữ liệu cần quay lại, tạo một luồng mới (ví dụ: “Kết quả kiểm tra tồn kho” từ Process 2 tới Process 1).
4.3 Tránh “Crossing Lines” (đường cắt nhau)
Khi sơ đồ trở nên phức tạp, hãy sắp xếp lại vị trí các process và data store để giảm thiểu đường cắt nhau. Sử dụng điểm ghép (junction point) nếu cần.
4.4 Kiểm Tra “Balanced” (Cân Bằng)

Có thể bạn quan tâm: Cách Vẽ Sách Giáo Khoa: Hướng Dẫn Chi Tiết Từ A Đến Z
Mỗi process nên có ít nhất một luồng vào và một luồng ra. Nếu một process chỉ nhận dữ liệu mà không xuất ra, có thể đang thiếu một bước hoặc lưu trữ tạm thời.
4.5 Đánh Dấu “External Entity” Khi Giao Tiếp Với Hệ Thống Khác
Nếu hệ thống của bạn giao tiếp với API, web service, hoặc hệ thống ERP, hãy biểu thị chúng là External Entity và mô tả luồng dữ liệu (ví dụ: “XML Request”, “JSON Response”).
4.6 Phân Loại Data Store
- Permanent Store (lưu trữ lâu dài): Cơ sở dữ liệu, file logs.
- Temporary Store (lưu trữ tạm thời): Buffer, queue, session.
- Reference Store (tham chiếu): Bảng lookup, danh mục.
4.7 Sử Dụng Màu Sắc (Khi Phần Mềm Cho Phép)
Màu có thể giúp phân biệt:
– Xanh dương cho External Entity.
– Xanh lá cho Process.
– Vàng cho Data Store.
– Đỏ cho luồng dữ liệu quan trọng hoặc lỗi.
4.8 Ghi Chú (Annotations)
Thêm ghi chú ngắn gọn bên cạnh các process hoặc luồng dữ liệu để giải thích các quy tắc nghiệp vụ đặc biệt (ví dụ: “Nếu tồn kho < 10, gửi cảnh báo”).

Có thể bạn quan tâm: Cách Vẽ Sushi Đơn Giản: Hướng Dẫn Từng Bước Để Tạo Ra Những Tác Phẩm Đẹp Và Thú Vị
5. Công Cụ Hỗ Trợ Vẽ DFD
| Công Cụ | Ưu Điểm | Nhược Điểm | Giá |
|---|---|---|---|
| Microsoft Visio | Mẫu DFD có sẵn, tích hợp Office | Giá cao, cần license | $299/năm |
| Lucidchart | Online, cộng tác real-time | Giới hạn bản miễn phí | $7.95/tháng |
| draw.io (diagrams.net) | Miễn phí, đa nền tảng | Giao diện không chuyên sâu | Free |
| Enterprise Architect | Tích hợp UML + DFD, mạnh cho dự án lớn | Học curve cao | $495 |
| OmniGraffle (Mac) | Thiết kế đẹp, hỗ trợ Apple | Chỉ macOS | $199 |
Lời khuyên: Đối với dự án nhỏ hoặc học tập, draw.io là lựa chọn tốt nhất vì không tốn chi phí và dễ sử dụng. Đối với dự án doanh nghiệp, Visio hoặc Lucidchart sẽ cung cấp tính năng quản lý phiên bản và cộng tác tốt hơn.
6. Ví Dụ Thực Tế: Vẽ DFD Cho Hệ Thống Quản Lý Đặt Phòng Khách Sạn
6.1 Bước 1: Xác Định Các Tác Nhân
- Khách hàng (External Entity)
- Nhân viên lễ tân (External Entity)
- Hệ thống thanh toán (External Entity)
- Nhà cung cấp dịch vụ (External Entity)
6.2 Bước 2: DFD Cấp 0
Khách hàng --> (1) Hệ thống đặt phòng --> Nhân viên lễ tân <-- (2) Xác nhận đặt phòng <-- Hệ thống thanh toán <--> (3) Xử lý thanh toán
6.3 Bước 3: DFD Cấp 1
| Process | Mô tả | Data Store |
|---|---|---|
| P1: Nhận yêu cầu đặt phòng | Nhận thông tin phòng, ngày, khách | DS1: Đơn đặt phòng tạm |
| P2: Kiểm tra phòng trống | Tra cứu DS2: Bảng phòng | |
| P3: Xác nhận đặt phòng | Ghi kết quả vào DS3: Đơn đã xác nhận | |
| P4: Xử lý thanh toán | Gửi yêu cầu tới hệ thống thanh toán | DS4: Giao dịch thanh toán |
| P5: Gửi email xác nhận | Gửi email tới khách |
6.4 Bước 4: DFD Cấp 2 (Chi Tiết Process P1)
- P1.1: Nhận dữ liệu từ khách (Tên, ngày, loại phòng)
- P1.2: Kiểm tra định dạng và lưu vào DS1 (Temporary Order)
- P1.3: Gửi dữ liệu tới P2 để kiểm tra phòng
6.5 Kiểm Tra

- Mỗi luồng dữ liệu đều có nguồn và đích.
- Không có vòng lặp vô nghĩa; vòng lặp chỉ xảy ra khi phòng không còn (P2 → P1 trả về “phòng không có”).
6.6 Đánh Giá
- Rút gọn: P5 có thể gộp vào P3 nếu muốn giảm số process.
- Tối ưu: Thêm Data Store “Log lỗi” để lưu các trường hợp từ chối.
7. Thực Hành: Tạo DFD Cho Ứng Dụng Ngân Hàng
- Xác định tác nhân: Khách hàng, Hệ thống Core Banking, Cơ quan thanh toán.
- Vẽ Context Diagram:
- Khách hàng ↔ (1) Ứng dụng ngân hàng.
- Ứng dụng ↔ Core Banking (giao dịch).
- Ứng dụng ↔ Cơ quan thanh toán (chuyển tiền quốc tế).
- Phân tách:
- P1: Đăng nhập.
- P2: Kiểm tra số dư.
- P3: Thực hiện chuyển tiền.
- P4: Gửi thông báo.
- Data Store: DB_Tài khoản, DB_Giao dịch, DB_Lịch_sử.
- Chi tiết P3:
- P3.1: Xác nhận người nhận.
- P3.2: Kiểm tra hạn mức.
- P3.3: Gửi yêu cầu tới Core Banking.
- P3.4: Nhận kết quả, lưu vào DB_Giao dịch.
- Kiểm tra: Đảm bảo mọi luồng dữ liệu (đăng nhập, mật khẩu, số dư, số tiền, mã OTP) đều được mô tả.
8. Những Sai Lầm Thường Gặp Khi Vẽ DFD Và Cách Tránh
| Sai Lầm | Mô tả | Cách Khắc Phục |
|---|---|---|
| Nhầm lẫn Process và Data Store | Đặt Data Store ở vị trí Process hoặc ngược lại. | Kiểm tra lại ký hiệu chuẩn; nhớ Process là “hình tròn”, Data Store là “hình chữ nhật mở”. |
| Tên luồng dữ liệu không rõ ràng | Dùng “Data1”, “Info”. | Đặt tên mô tả nội dung (ví dụ: “Thông tin khách hàng”). |
| Quá tải chi tiết ở DFD Cấp 0 | Đặt quá nhiều process trong Context Diagram. | Giữ DFD Cấp 0 chỉ một Process duy nhất. |
| Vòng lặp vô nghĩa | Data Flow quay lại cùng một Process mà không có xử lý. | Kiểm tra logic nghiệp vụ; nếu không cần, xóa vòng lặp. |
| Không đồng nhất ký hiệu | Một số process dùng hình vuông, một số dùng oval. | Đặt quy tắc thống nhất và tuân thủ trong toàn dự án. |
| Bỏ qua External Entity | Không biểu thị các hệ thống bên ngoài. | Luôn liệt kê mọi hệ thống, thiết bị, người dùng tương tác với hệ thống. |
9. Kiểm Tra Chất Lượng DFD
- Độ đầy đủ (Completeness): Mọi chức năng nghiệp vụ có trong yêu cầu đều xuất hiện trong DFD.
- Độ chính xác (Correctness): Luồng dữ liệu phản ánh đúng cách dữ liệu di chuyển.
- Độ rõ ràng (Clarity): Không có ký hiệu lẫn lộn, tên rõ ràng, sơ đồ không rối mắt.
- Độ nhất quán (Consistency): Tên, số hiệu, và ký hiệu đồng nhất trong toàn bộ tài liệu.
- Độ khả thi (Feasibility): DFD có thể được chuyển thành thiết kế chi tiết và code thực tế.
10. Tổng Kết
Vẽ sơ đồ DFD không chỉ là một bước trong quá 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 người cùng nhìn nhận và hiểu rõ cách dữ liệu chảy trong hệ thống. Bằng việc nắm vững các ký hiệu chuẩn, tuân thủ quy trình từ Context Diagram (Cấp 0) tới các cấp chi tiết hơn, và áp dụng những mẹo nâng cao như đặt tên chuẩn, giảm crossing lines, bạn sẽ tạo ra những sơ đồ DFD sạch sẽ, logic và dễ bảo trì.
Hãy luôn kiểm tra lại sơ đồ với các bên liên quan, đánh giá chất lượng dựa trên các tiêu chí đã nêu và sử dụng công cụ phù hợp để tối ưu hoá quá trình vẽ. Khi đã thành thạo, DFD sẽ trở thành “bản đồ” dẫn đường cho toàn bộ dự án phần mềm, giúp giảm thiểu lỗi, rút ngắn thời gian phát triển và nâng cao chất lượng sản phẩm cuối cùng.
Chúc bạn thành công trong việc tạo ra những sơ đồ DFD chuẩn xác và chuyên nghiệp!
