Bài 4. Data Flow Diagram Level 0 – Mô hình hóa luồng dữ liệu bên trong hệ thống

“Context Diagram cho biết hệ thống giao tiếp với ai. DFD Level 0 cho biết hệ thống xử lý dữ liệu như thế nào.”

1. Mở đầu

Ở bài trước, chúng ta đã xây dựng Context Diagram để xác định ranh giới của hệ thống và các luồng dữ liệu trao đổi với môi trường bên ngoài.

Tuy nhiên, Context Diagram chỉ xem toàn bộ hệ thống như một tiến trình duy nhất.

Điều đó đủ để xác định phạm vi, nhưng chưa đủ để hiểu cách hệ thống vận hành.

Ví dụ, trong Context Diagram của hệ thống quản lý đào tạo, chúng ta biết:

  • Sinh viên gửi Phiếu đăng ký học phần.
  • Hệ thống trả về Kết quả đăng ký.

Nhưng điều gì xảy ra bên trong?

  • Hệ thống kiểm tra điều kiện tiên quyết?
  • Kiểm tra số lượng chỗ trống?
  • Lưu thông tin đăng ký?
  • Cập nhật danh sách lớp?

Context Diagram không trả lời những câu hỏi đó.

Đó là nhiệm vụ của Data Flow Diagram Level 0 (DFD Level 0).

2. Từ một tiến trình thành nhiều tiến trình

Context Diagram mô hình hóa toàn bộ hệ thống bằng một tiến trình duy nhất.

Trong DFD Level 0, tiến trình đó được phân rã thành các tiến trình chính.

Ví dụ:

Context Diagram

+---------------------------+
| Hệ thống Quản lý Đào tạo |
+---------------------------+

được phân rã thành:

Hệ thống Quản lý Đào tạo

├── Quản lý sinh viên
├── Quản lý học phần
├── Đăng ký học phần
├── Quản lý điểm
└── Quản lý học phí

Mỗi tiến trình đại diện cho một nhóm xử lý nghiệp vụ, không phải một màn hình hay một chương trình.

3. Mục tiêu của DFD Level 0

DFD Level 0 trả lời câu hỏi:

Dữ liệu được xử lý như thế nào bên trong hệ thống?

Nó giúp người phân tích:

  • xác định các tiến trình chính;
  • xác định dữ liệu đi vào và đi ra của từng tiến trình;
  • xác định nơi dữ liệu được lưu trữ;
  • hiểu mối liên hệ giữa các tiến trình.

Nếu BFD mô tả cấu trúc chức năng, thì DFD mô tả sự vận động của dữ liệu.

4. Bốn thành phần của DFD Level 0

DFD Level 0 sử dụng bốn thành phần cơ bản.

4.1. Process (Tiến trình)

Process biểu diễn một hoạt động xử lý dữ liệu.

Tên Process nên bắt đầu bằng động từ.

Ví dụ:

  • Quản lý sinh viên
  • Đăng ký học phần
  • Cập nhật điểm
  • Quản lý học phí

Mỗi Process phải:

  • nhận dữ liệu đầu vào;
  • tạo dữ liệu đầu ra;
  • hoặc cập nhật dữ liệu.

Một Process không có đầu vào hoặc đầu ra thường là dấu hiệu của mô hình chưa hợp lý.

4.2. Data Flow (Luồng dữ liệu)

Data Flow biểu diễn thông tin được trao đổi giữa các thành phần.

Tên Data Flow phải là danh từ.

Ví dụ:

  • Hồ sơ sinh viên
  • Phiếu đăng ký
  • Danh sách học phần
  • Bảng điểm

Data Flow không mô tả hành động.

Ví dụ:

❌ Đăng ký học

✔ Phiếu đăng ký học phần

4.3. Data Store (Kho dữ liệu)

Data Store biểu diễn nơi dữ liệu được lưu giữ để sử dụng về sau.

Ví dụ:

  • Hồ sơ sinh viên
  • Danh mục học phần
  • Danh sách đăng ký
  • Kết quả học tập

Data Store không thực hiện xử lý.

Nó chỉ lưu trữ dữ liệu.

4.4. External Entity (Thực thể ngoài)

Đây là các đối tượng nằm ngoài hệ thống nhưng có trao đổi dữ liệu với hệ thống.

Ví dụ:

  • Sinh viên
  • Giảng viên
  • Phòng Đào tạo

Các thực thể này đã xuất hiện trong Context Diagram và tiếp tục được sử dụng ở DFD Level 0.

Ví dụ

DFD Level 0 của chức năng đăng ký học phần có thể được mô tả đơn giản như sau:

                  +--------------+
                  |  Sinh viên   |
                  +--------------+
                         |
                 Phiếu đăng ký
                         |
                         v
                +------------------+
                | Đăng ký học phần |
                +------------------+
                  |      |       |
                  |      |       |
                  |      |       v
                  |      |  Danh sách đăng ký
                  |      |
                  |      v
                  |  Danh mục học phần
                  |
                  v
             Kết quả đăng ký
                  |
                  v
            +--------------+
            |  Sinh viên   |
            +--------------+

Mặc dù đơn giản, sơ đồ này cho thấy:

  • dữ liệu nào được nhận;
  • dữ liệu nào được sử dụng;
  • dữ liệu nào được lưu;
  • dữ liệu nào được trả về.

5. Nguyên tắc cân bằng (Balancing)

Một trong những nguyên tắc quan trọng nhất của DFD là Balancing.

Nội dung rất đơn giản:

Những luồng dữ liệu xuất hiện ở Context Diagram phải tiếp tục xuất hiện ở DFD Level 0.

Ví dụ:

Nếu Context Diagram có:

  • Phiếu đăng ký
  • Kết quả đăng ký

thì DFD Level 0 cũng phải có hai luồng dữ liệu này.

Không được:

  • tự ý thêm luồng dữ liệu mới từ bên ngoài;
  • hoặc làm mất những luồng dữ liệu đã có.

Balancing giúp các mức DFD luôn nhất quán với nhau.

6. Những sai lầm thường gặp

6.1. Đồng nhất Process với màn hình

Ví dụ:

❌ Màn hình Đăng ký học

Process phải mô tả nghiệp vụ.

✔ Đăng ký học phần

6.2. Dùng Data Store như Process

Ví dụ:

Sinh viên

↓

CSDL

Sai.

Dữ liệu không tự chảy vào cơ sở dữ liệu.

Luôn phải có một Process xử lý.

6.3. Process không có đầu ra

Ví dụ:

Phiếu đăng ký

↓

Kiểm tra điều kiện

Nếu không có đầu ra thì người đọc không biết kết quả xử lý là gì.

6.4. Luồng dữ liệu không có tên

Một mũi tên không có tên gần như không mang thông tin.

Tên Data Flow cần phản ánh đúng dữ liệu đang được trao đổi.

7. Vai trò của DFD Level 0

DFD Level 0 là cầu nối giữa:

  • BFD (chức năng),
  • và DFD chi tiết ở các mức tiếp theo.

Có thể hình dung như sau:

Business Function Diagram

↓

Context Diagram

↓

DFD Level 0

↓

DFD Level 1

↓

Data Dictionary

↓

Process Specification

↓

ERD

Mỗi bước đều làm tăng mức độ chi tiết của mô hình.

8. Tóm tắt

DFD Level 0 là bước đầu tiên mô tả cách dữ liệu được xử lý bên trong hệ thống.

Khác với Context Diagram chỉ có một tiến trình duy nhất, DFD Level 0 phân rã hệ thống thành nhiều tiến trình chính và mô tả mối quan hệ giữa:

  • Process,
  • Data Flow,
  • Data Store,
  • External Entity.

Một DFD Level 0 tốt giúp nhóm phát triển hiểu rõ luồng xử lý nghiệp vụ trước khi tiếp tục phân rã ở các mức chi tiết hơn.

Checklist

Sau bài học này, bạn nên trả lời được:

  • DFD Level 0 khác Context Diagram ở điểm nào?
  • Bốn thành phần của DFD là gì?
  • Vai trò của Data Store là gì?
  • Thế nào là nguyên tắc Balancing?
  • Những sai lầm phổ biến khi xây dựng DFD Level 0?

Góc nhìn nghề nghiệp

Mặc dù nhiều dự án hiện đại sử dụng BPMN hoặc UML Activity Diagram để mô tả quy trình nghiệp vụ, tư duy của DFD vẫn rất hữu ích khi phân tích luồng thông tin giữa các bộ phận hoặc giữa các hệ thống. Trong các dự án tích hợp, di trú dữ liệu (data migration) hoặc hiện đại hóa hệ thống legacy, DFD giúp nhóm phân tích xác định chính xác dữ liệu được tạo ra ở đâu, được xử lý bởi tiến trình nào và được lưu trữ tại vị trí nào.

Bài tiếp theo

DFD Level 0 mới chỉ mô tả các tiến trình chính của hệ thống.

Trong thực tế, mỗi tiến trình vẫn còn khá tổng quát.

Ở bài tiếp theo, chúng ta sẽ học cách phân rã một Process thành DFD Level 1, đồng thời tìm hiểu nguyên tắc đánh số và kỹ thuật Balancing giữa các mức DFD để bảo đảm mô hình luôn nhất quán và đầy đủ.

Comments are closed.