Constructing a Data Flow Diagram (DFD) is a useful way to determine an organization’s scope with respect to how Federal Contract Information (FCI) and Controlled Unclassified Information (CUI) is processed, stored, or transmitted through a system. A DFD maps out the flow of information for any process or system, focusing on what the system does rather than how it does it.
A DFD for FCI and CUI, along with a system boundary diagram, is usually included in the organization’s System Security Plan.
Here is a step-by-step guide to constructing a clear and accurate Data Flow Diagram.
Using the drawing symbols typically found in constructing a DFD isn’t critical, but most software drawing applications will provide or default to these symbols.
There are four standard symbols used in DFDs. There are also two main notation styles (Gane & Sarson and Yourdon/DeMarco), but the concepts are identical.
Step 0: Choose the DFD Construction Method
The standard approaches for constructing a DFD are:
Most DFDs are constructed top-down, since people find thinking about the highest-level system and then breaking it down into details to be easiest. However, there is no “right” answer—proceed in the way that feels most natural.
The following steps present constructing a DFD using a top-down method.
Step 1: Determine the Scope (Level 0 / Context Diagram)
The Context Diagram represents the entire system as a single process. It shows the system’s boundaries and how it interacts with the outside world.
Step 2: Expand the Context Diagram into a Level 1 Diagram
Now, break that single “System” bubble into its major sub-processes. This provides a more detailed view of the major functions.
Step 3: Review and Refine (Level 2 and beyond)
If a specific process in Level 1 is still too complex (for example, “Invoicing and Reporting” involves “work completion validation”, “invoice generation”, and “contract deliverable tracking”), continue to break down each level until each bubble in the diagram represents a simple, atomic task or object.
For CMMC, the goal is to refine the data flow diagram until you can determine all of the objects, such as Virtual Desktop Infrastructure (VDI) nodes, physical servers or computers, network routers, firewalls, databases, etc., where FCI or CUI is processed, stored, or transmitted.
To ensure the diagram is logically sound, validate the diagram against these rules:
Use this quick reference to check if a connection line is valid:
| Start Node | End Node | Valid Connection? |
|---|---|---|
| Process | Process | ✅ Yes |
| Process | Data Store | ✅ Yes |
| Process | Entity | ✅ Yes |
| Entity | Process | ✅ Yes |
| Entity | Data Store | ❌ No (Must go through a process) |
| External Entity | External Entity | ❌ No (Out of scope) |
| Data Store | Data Store | ❌ No (Must go through a process) |