A data flow diagram
) is a graphical representation of the "flow" of data through an information system
. It differs from the system flowchart
as it shows the flow of data through processes
instead of hardware
A data flow diagram can also be used for the visualization of data processing (structured design).
It is common practice to draw a context-level Data flow diagram
first which shows the interaction between the system and outside entities. The DFD is designed to show how a system is divided into smaller portions and to highlight the flow of data between those parts. This context-level Data flow diagram is then "exploded" to show more detail of the system being modeled.
Data flow diagrams were invented by Larry Constantine, the original developer of structured design, based on Martin and Estrin's "data flow graph" model of computation.
Data flow diagrams (DFDs) are one of the three essential perspectives of Structured Systems Analysis and Design Method SSADM. The sponsor of a project and the end users will need to be briefed and consulted throughout all stages of a system's evolution. With a dataflow diagram, users are able to visualize how the system will operate, what the system will accomplish, and how the system will be implemented. The old system's dataflow diagrams can be drawn up and compared with the new system's dataflow diagrams to draw comparisons to implement a more efficient system. Dataflow diagrams can be used to provide the end user with a physical idea of where the data they input ultimately has an effect upon the structure of the whole system from order to dispatch to recook. How any system is developed can be determined through a dataflow diagram.
Developing a Data flow diagram helps in identifying the transaction data in the data model.
There are different notations to draw data flow diagrams, defining different visual representations for processes, datastores, dataflow, and external entities.
Developing a Data flow diagram
- The system designer makes "a context level DFD", which shows the "interaction" (data flows) between "the system" (represented by one process) and "the system environment" (represented by terminators).
- The system is "decomposed in lower level DFD (Zero)" into a set of "processes, data stores, and the data flows between these processes and data stores".
- Each process is then decomposed into an "even lower level diagram containing its subprocesses".
- This approach "then continues on the subsequent subprocesses", until a necessary and sufficient level of detail is reached which is called the primitive process (aka chewable in one bite).
Event Partitioning Approach
was described by Edward Yourdon
in Just Enough Structured Analysis
- Construct detailed Data flow diagram.
- The list of all events is made.
- For each event a process is constructed.
- Each process is linked (with incoming data flows) directly with other processes or via datastores, so that it has enough information to respond to a given event.
- The reaction of each process to a given event is modeled by an outgoing data flow.
Data flow diagram levels
This level shows the overall context of the system and its operating environment and shows the whole system as just one process. It does not usually show data stores, unless they are "owned" by external systems, e.g. are accessed by but not maintained by this system, however, these are often shown as external entities.
This level shows all processes at the first level of numbering, data stores, external entities and the data flows between them. The purpose of this level is to show the major high level processes of the system and their interrelation. A process model will have one, and only one, level 0 diagram. A level 0 diagram must be balanced with its parent context level diagram, i.e. there must be the same external entities and the same data flows, these can be broken down to more detail in the level 0, e.g. the "enquiry" data flow could be spilt into "enquiry request" and "enquiry results" and still be valid.
This level is a decomposition of a process shown in a level 0 diagram, as such there should be a level 1 diagram for each and every process shown in a level 0 diagram. In this example processes 1.1, 1.2 & 1.3 are all children of process 1, together they wholly and completely describe process 1, and combined must perform the full capacity of this parent process. As before, a level 1 diagram must be balanced with its parent level 0 diagram.
Data flow diagram tools
- CA ERwin Data Modeler, a data modeling tool
- ConceptDraw, a Windows and Mac OS X data flow diagramming tool
- Dia, a free source diagramming tool with flowchart support
- Kivio, a free source diagramming tool for KDE
- Microsoft Visio, a Windows diagramming tool which includes very basic DFD support (Images only, does not record data flows)
- SmartDraw, a Windows diagraming tool with Yourdon and Coad process notations and Gane and Sarson process notation
- System Architect, an enterprise architecture tool, supporting Coad/Yourdon, Gane & Sarson, Ward/Mellor, and SSADM notations and techniques
- DFDdeveloper, an open source software application that allows Microsoft Office users to create interactive leveled data flow diagrams and data dictionaries
- Flow-based programming diagramming tool (DrawFBP), developed by J. Paul Morrison