Bài 6 — DFD & luồng dữ liệu: sinh và kiểm tra tính nhất quán
Data Flow Diagram (DFD) trả lời câu hỏi khác với BPMN: không phải "ai làm gì theo thứ tự nào" mà là "dữ liệu chảy từ đâu tới đâu, lưu ở đâu". DFD cực hữu ích khi BA làm việc với hệ thống, tích hợp, hay đặc tả yêu cầu dữ liệu. AI giúp sinh DFD và — quan trọng hơn — kiểm tra tính nhất quán mà mắt người dễ bỏ sót.
Bối cảnh của BA
Bạn viết đặc tả cho tính năng mới, cần chỉ rõ dữ liệu nào đi vào, lưu ở kho nào, xuất ra đâu. Vẽ DFD tay dễ mắc lỗi kinh điển: một data store có dữ liệu vào nhưng không ai đọc ra, hoặc một process xuất dữ liệu từ hư không.
4 thành phần DFD cần nhớ
- External Entity (thực thể ngoài): nguồn/đích dữ liệu — khách hàng, hệ thống khác.
- Process (tiến trình): biến đổi dữ liệu — "Xác thực đơn".
- Data Store (kho dữ liệu): nơi lưu — "CSDL Đơn hàng".
- Data Flow (luồng dữ liệu): mũi tên có nhãn dữ liệu.
Quy tắc cân bằng (balancing) — nơi AI giúp nhiều nhất
- Mỗi process phải có ít nhất 1 input VÀ 1 output.
- Data store không tự tạo dữ liệu — phải có luồng ghi vào trước khi đọc ra.
- Không có luồng trực tiếp giữa 2 external entity (phải qua process).
- Không có luồng trực tiếp giữa 2 data store.
Các bước sinh & kiểm tra DFD
- Mô tả hệ thống theo góc nhìn dữ liệu.
- Yêu cầu AI sinh DFD mức 0 (context) rồi mức 1.
- Yêu cầu AI kiểm tra quy tắc cân bằng.
- Đối chiếu từng data store: ai ghi, ai đọc?
- Bổ sung luồng thiếu phát hiện được.
- Chốt với team kỹ thuật.
Prompt mẫu: sinh DFD + tự kiểm tra
Bạn là chuyên gia phân tích hệ thống. Từ mô tả dưới đây, hãy:
- Sinh DFD mức 1 bằng Mermaid (dùng flowchart với node phân biệt:
external entity = [/.../\], process = ((...)), data store = [(...)]).
- Sau đó KIỂM TRA các quy tắc cân bằng DFD và liệt kê mọi vi phạm:
- Process nào thiếu input hoặc output?
- Data store nào chỉ có ghi mà không có đọc (hoặc ngược lại)?
- Có luồng trực tiếp entity-entity hoặc store-store không?Mô tả: "Khách đặt hàng, hệ thống xác thực rồi lưu vào CSDL Đơn hàng.
Bộ phận kho đọc đơn để chuẩn bị giao. Hệ thống gửi email xác nhận cho khách."
Ví dụ output
flowchart LR
KH[/Khách hàng/] -->|Thông tin đơn| P1((Xác thực đơn))
P1 -->|Đơn hợp lệ| DS[(CSDL Đơn hàng)]
DS -->|Đơn cần giao| P2((Chuẩn bị giao))
P2 -->|Trạng thái| KH
P1 -->|Email xác nhận| KHBáo cáo kiểm tra kèm theo: "Cảnh báo: Bộ phận kho (external) chưa được mô hình hóa như entity nhận dữ liệu — cần bổ sung."
Template tái sử dụng: checklist cân bằng DFD
[ ] Mỗi process có ≥1 input và ≥1 output?
[ ] Mỗi data store có cả luồng ghi và luồng đọc?
[ ] Không có luồng entity ↔ entity trực tiếp?
[ ] Không có luồng store ↔ store trực tiếp?
[ ] Mọi luồng đều có nhãn dữ liệu cụ thể (không để trống)?
[ ] DFD mức con có cân bằng với mức cha (cùng input/output biên)?
Sai lầm thường gặp
- Lẫn lộn DFD với flowchart (ảo giác loại sơ đồ): AI hay vẽ DFD thành flowchart điều khiển (có gateway quyết định). DFD KHÔNG có logic điều kiện — nó chỉ mô tả luồng dữ liệu. Nhắc rõ trong prompt.
- Data store mồ côi: kho dữ liệu có ghi mà không đọc (hoặc ngược lại) là lỗi kinh điển — hãy để AI soi, nhưng bạn tự xác nhận vì AI cũng có thể bỏ sót.
- Nhãn luồng mơ hồ: "dữ liệu" chung chung vô nghĩa. Ép nhãn cụ thể ("thông tin thanh toán").
- Tin tuyệt đối kết quả kiểm tra của AI: AI kiểm tra cân bằng khá tốt nhưng không hoàn hảo — vẫn cần bạn rà lại checklist thủ công.
- Rò rỉ dữ liệu: mô tả hệ thống thật có thể lộ kiến trúc nội bộ, tên CSDL production. Trừu tượng hóa trước khi đưa AI.