Một mô hình luồng dữ liệulà một cách trực quan để thể hiện cách mà một hệ thống xử lý dữ liệu. Ở cấp độ phân tích, chúng nên được sử dụng để mô hình hóa cách dữ liệu được xử lý trong các hệ thống hiện có.
Sau khi công bố cuốn sách Phân tích Hệ thống Cấu trúc của DeMarco,, mô hình luồng dữ liệu đã trở nên ngày càng được sử dụng rộng rãi trong phân tích. Chúng là một phần không thể thiếu của phương pháp cấu trúc phát triển từ công việc này. Các ký hiệu được sử dụng trong những mô hình này đại diện cho xử lý chức năng (hình chữ nhật bo góc), lưu trữ dữ liệu (hình chữ nhật), và di chuyển dữ liệu giữa các chức năng (mũi tên có nhãn).
Tại sao DFD vẫn hữu ích cho phát triển phần mềm?
Mặc dù mô hình hóa định hướng luồng dữ liệuđược coi là một công nghệ lỗi thời bởi một số kỹ sư phần mềm, nhưng nó vẫn là một trong những ký hiệu phân tích yêu cầu được sử dụng rộng rãi nhất. Mặc dù sơ đồ luồng dữ liệu (DFD) không phải là các phần chính thức của UML, nhưng chúng có thể được sử dụng để bổ sung cho các sơ đồ UML và cung cấp thêm cái nhìn sâu sắc về yêu cầu và quy trình của hệ thống.
Mô hình luồng dữ liệu có giá trị vì việc theo dõi và ghi lại cách dữ liệu liên quan đến một quy trình cụ thể di chuyển qua hệ thống giúp các nhà phân tích hiểu những gì đang xảy ra. Lợi thế của sơ đồ luồng dữ liệu là, khác với một số ký hiệu mô hình khác, chúng đơn giản và trực quan. Chúng thường có thể được giải thích cho những người dùng hệ thống tiềm năng có thể tham gia vào việc phân tích và xác thực các yêu cầu.
Tại sao DFD?
DFD biểu diễn đồ họa các chức năng, hoặc quy trình, mà thu thập, thao tác, lưu trữ và phân phối dữ liệu giữa một hệ thống và môi trường của nó cũng như giữa các thành phần của một hệ thống. Sự biểu diễn trực quan làm cho nó trở thành một công cụ giao tiếp tốt giữa Người dùng và Nhà thiết kế Hệ thống. Cấu trúc của DFD cho phép bắt đầu từ một cái nhìn tổng quát rộng và mở rộng nó thành một hệ thống phân cấp các sơ đồ chi tiết. DFD thường được sử dụng vì những lý do sau:
- Luồng thông tin logic của hệ thống
- Xác định các yêu cầu xây dựng hệ thống vật lý
- Sự đơn giản của ký hiệu
- Thiết lập các yêu cầu của hệ thống thủ công và tự động
DFD là một quy trình phân rã từ trên xuống
Mô hình hóa luồng dữ liệu là một quy trình “từ trên xuống”. Đầu tiên phân tích toàn bộ quy trình mua sắm. Các quy trình con sau đó được phân tích theo cách phân rã từ trên xuống.
DFD có thể được sử dụng để mô hình hóa các hệ thống hoặc phần mềm ở bất kỳ cấp độ trừu tượng nào. Như đã đề cập trước đó, DFD có thể được chia thành các cấp độ đại diện cho luồng thông tin và chi tiết chức năng ngày càng tăng. Các số cấp độ trong DFD là 0, 1, 2 hoặc cao hơn. Ở đây, chúng ta sẽ thấy rằng có ba cấp độ chính trong sơ đồ luồng dữ liệu, đó là, DFD cấp 0, DFD cấp 1 và DFD cấp 2.

Sơ đồ ngữ cảnh — Các cấp độ của DFD
Sơ đồ ngữ cảnh (còn được gọi là DFD cấp 0), nó đại diện cho toàn bộ yêu cầu phần mềm như một bong bóng, với dữ liệu đầu vào và đầu ra được biểu diễn bằng các mũi tên đầu vào và đầu ra.
Hệ thống sau đó được phân rã thành một DFD với nhiều bong bóng. Các phần của hệ thống được đại diện bởi mỗi bong bóng sau đó được phân tách và ghi lại vào các sơ đồ luồng dữ liệu ngày càng chi tiết. Quy trình này có thể được lặp lại ở các cấp độ cần thiết cho đến khi chương trình hiện tại được hiểu đầy đủ.
Số lượng đầu vào và đầu ra giữa các cấp độ phải được duy trì, một khái niệm được gọi là phân cấp DeMacro. Do đó, nếu bong bóng “A” có hai đầu vào X1 và X2 và một đầu ra Y, thì sơ đồ luồng dữ liệu cấp con đại diện cho DFD cấp trên “A” nên có chính xác hai đầu vào bên ngoài và một đầu ra bên ngoài.
Trong DFD cấp 1, sơ đồ ngữ cảnh được phân rã thành nhiều quy trình. Ở cấp độ này, chúng tôi làm nổi bật các chức năng chính của hệ thống và phân tách quy trình cấp cao của DFD cấp 0 thành các quy trình con để đại diện cho các chi tiết của các hoạt động xử lý.
Sơ đồ ngữ cảnh (DFD cấp 0) — một sơ đồ ngữ cảnh DFD là một sơ đồ đại diện cho cái nhìn tổng quan về hệ thống và sự tương tác của nó với phần còn lại của “thế giới”.
Sơ đồ luồng dữ liệu cấp 1 — DFD cấp 1 cung cấp cái nhìn chi tiết hơn về hệ thống so với sơ đồ ngữ cảnh bằng cách hiển thị các quy trình con chính và các kho dữ liệu tạo nên toàn bộ hệ thống.
Cấp 2 (hoặc thấp hơn) — một lợi thế lớn của công nghệ mô hình hóa luồng dữ liệu là sự phức tạp chi tiết của các hệ thống thực tế có thể được quản lý và mô hình hóa ở cấp độ trừu tượng thông qua một công nghệ gọi là “phân cấp”. Một số yếu tố của bất kỳ sơ đồ luồng dữ liệu nào có thể được phân rã (“phân rã”) thành một mô hình chi tiết hơn ở cấp độ thấp hơn trong hệ thống phân cấp.
Các cấp độ DFD — Ví dụ— Hệ thống Đặt món ăn
Cấp 0
Nó cũng được gọi là sơ đồ ngữ cảnh. Nó được thiết kế để là một cái nhìn trừu tượng, cho thấy hệ thống như một quy trình duy nhất với mối quan hệ của nó với các thực thể bên ngoài.
- Sơ đồ ngữ cảnh phải vừa trong một trang.
- Tên quy trình trong sơ đồ ngữ cảnh nên là tên của hệ thống thông tin.
- Ví dụ, Hệ thống Chấm điểm, Hệ thống Xử lý Đơn hàng, Hệ thống Đăng ký.

Trong DFD cấp 1, sơ đồ ngữ cảnh được phân rã thành nhiều quy trình. Ở cấp độ này, chúng tôi làm nổi bật các chức năng chính của hệ thống và phân tách quy trình cấp cao của DFD cấp 0 thành các quy trình con để đại diện cho các chi tiết của các hoạt động xử lý.
Cấp 1 — Hệ thống Đặt món ăn
Trong DFD cấp 1, sơ đồ ngữ cảnh được phân rã thành nhiều quy trình. Ở cấp độ này, chúng tôi làm nổi bật các chức năng chính của hệ thống và phân tách quy trình cấp cao của DFD cấp 0 thành các quy trình con để đại diện cho các chi tiết của các hoạt động xử lý.

Nếu một quy trình có nhiều luồng dữ liệu liên kết giữa một vài thực thể bên ngoài, chúng ta có thể đầu tiên trích xuất quy trình cụ thể đó và các thực thể bên ngoài liên quan vào một sơ đồ riêng biệt tương tự như sơ đồ ngữ cảnh, trước khi bạn tinh chỉnh quy trình thành một cấp độ DFD riêng biệt; và bằng cách này bạn có thể đảm bảo tính nhất quán giữa chúng dễ dàng hơn.
Ký hiệu DFD
Có bốn ký hiệu cơ bản được sử dụng để biểu diễn một sơ đồ luồng dữ liệu.
Quy trình
Một quy trình nhận dữ liệu đầu vào và tạo ra đầu ra với nội dung hoặc hình thức khác. Các quy trình có thể đơn giản như thu thập dữ liệu đầu vào và lưu trữ trong cơ sở dữ liệu, hoặc có thể phức tạp như tạo ra một báo cáo chứa doanh số bán hàng hàng tháng của tất cả các cửa hàng bán lẻ trong khu vực tây bắc.
Mỗi quy trình có một tên xác định chức năng mà nó thực hiện.
Tên gọi bao gồm một động từ, theo sau là một danh từ số ít.
Ví dụ:
- Áp dụng thanh toán
- Tính hoa hồng
- Xác minh đơn hàng
Ký hiệu DFD
- Một hình chữ nhật bo tròn đại diện cho một quy trình
- Các quy trình được gán ID để dễ dàng tham chiếu

Ví dụ về quy trình

Luồng dữ liệu
Một luồng dữ liệu là một con đường để dữ liệu di chuyển từ một phần của hệ thống thông tin sang một phần khác. Một luồng dữ liệu có thể đại diện cho một phần tử dữ liệu đơn lẻ như ID Khách hàng hoặc nó có thể đại diện cho một tập hợp các phần tử dữ liệu (hoặc một cấu trúc dữ liệu).
Ví dụ:
- Thông tin_khách_hàng (Họ, Tên, Số SS#, Số điện thoại, v.v.)
- Thông tin_đơn_hàng (MãĐơn, Mặt_hàng, NgàyĐặtHàng, IDKháchHàng, v.v.).
Ví dụ về luồng dữ liệu:

Ký hiệu
- Các đường thẳng với mũi tên vào là luồng dữ liệu đầu vào
- Các đường thẳng với mũi tên ra là luồng dữ liệu đầu ra
Lưu ý rằng:
Bởi vì mỗi quy trình thay đổi dữ liệu từ một hình thức này sang hình thức khác, ít nhất một luồng dữ liệu phải vào và một luồng dữ liệu phải ra khỏi mỗi ký hiệu quy trình.
Kho dữ liệu
Một kho dữ liệu hoặc kho lưu trữ dữ liệu được sử dụng trong sơ đồ luồng dữ liệu để biểu diễn một tình huống khi hệ thống phải giữ lại dữ liệu vì một hoặc nhiều quy trình cần sử dụng dữ liệu đã lưu trữ vào một thời điểm sau.
Ký hiệu
- Dữ liệu có thể được ghi vào kho dữ liệu, điều này được thể hiện bằng một mũi tên ra
- Dữ liệu có thể được đọc từ kho dữ liệu, điều này được thể hiện bằng một mũi tên vào.
- Các ví dụ là: hàng tồn kho, các khoản phải thu, đơn hàng và thanh toán hàng ngày.

Ví dụ về kho dữ liệu

Lưu ý rằng:
- Một kho dữ liệu phải được kết nối với một quy trình thông qua một luồng dữ liệu.
- Mỗi kho dữ liệu phải có ít nhất một luồng dữ liệu đầu vào và ít nhất một luồng dữ liệu đầu ra (ngay cả khi luồng dữ liệu đầu ra là một thông điệp điều khiển hoặc xác nhận).
Thực thể bên ngoài
Một thực thể bên ngoài là một người, phòng ban, tổ chức bên ngoài, hoặc hệ thống thông tin khác cung cấp dữ liệu cho hệ thống hoặc nhận đầu ra từ hệ thống. Các thực thể bên ngoài là các thành phần nằm ngoài ranh giới của các hệ thống thông tin. Chúng đại diện cho cách mà hệ thống thông tin tương tác với thế giới bên ngoài.
- Một hình chữ nhật đại diện cho một thực thể bên ngoài
- Chúng cung cấp dữ liệu hoặc nhận dữ liệu
- Chúng không xử lý dữ liệu
Ký hiệu
- Một khách hàng gửi đơn hàng và sau đó nhận hóa đơn từ hệ thống
- Một nhà cung cấp phát hành hóa đơn

Ví dụ về thực thể bên ngoài

Lưu ý rằng:
- Các thực thể bên ngoài cũng được gọi là điểm kết thúc vì chúng là nguồn dữ liệu hoặc điểm đến cuối.
- Một thực thể bên ngoài phải được kết nối với một quy trình thông qua một luồng dữ liệu.
Quy tắc của Luồng Dữ liệu
Một trong những quy tắc để phát triển DFD là tất cả các luồng phải bắt đầu và kết thúc tại một bước xử lý. Điều này khá hợp lý, vì dữ liệu không thể tự biến đổi mà không có quy trình. Bằng cách sử dụng quy tắc ngón tay cái, rất dễ dàng để xác định các luồng dữ liệu bất hợp pháp và sửa chữa chúng trong một DFD.
Mô tả Sai / Đúng


Một thực thể không thể cung cấp dữ liệu cho một thực thể khác mà không có một số xử lý xảy ra.


Dữ liệu không thể di chuyển trực tiếp từ một thực thể đến một kho dữ liệu mà không được xử lý.


Dữ liệu không thể di chuyển trực tiếp từ một kho dữ liệu mà không được xử lý.


Dữ liệu không thể di chuyển trực tiếp từ một kho dữ liệu này sang một kho dữ liệu khác mà không được xử lý.
Những sai lầm thường gặp khác trong DFD
Một loại sai lầm thứ hai trong DFD phát sinh khi các đầu ra từ một bước xử lý không khớp với các đầu vào của nó và chúng có thể được phân loại như sau:
- Lỗ đen — Một bước xử lý có thể có các luồng đầu vào nhưng không có luồng đầu ra.
- Phép màu — Một bước xử lý có thể có các luồng đầu ra nhưng không có luồng đầu vào.
- Lỗ xám — Một bước xử lý có thể có các đầu ra lớn hơn tổng các đầu vào của nó.

Công cụ UML miễn phí
- Công cụ tạo sơ đồ luồng dữ liệu trực tuyến
- Cách tạo sơ đồ luồng dữ liệu (DFD)?
- Phần mềm sơ đồ luồng dữ liệu (DFD)
Ký hiệu khác nhau trong DFD
This post is also available in Deutsch, English, Español, فارسی, Français, Bahasa Indonesia, 日本語, Polski, Portuguese, Ру́сский, 简体中文 and 繁體中文.