Data-flow diagram
A data-flow diagram is a way of representing a flow of data through a process or a system. The DFD also provides information about the outputs and inputs of each entity and the process itself. A data-flow diagram has no control are no decision rules and no loops. Specific operations based on the data can be represented by a flowchart.
There are several notations for displaying data-flow diagrams. The notation presented above was described in 1979 by Tom DeMarco as part of structured analysis.
For each data flow, at least one of the endpoints must exist in a process. The refined representation of a process can be done in another data-flow diagram, which subdivides this process into sub-processes.
The data-flow diagram is a tool that is part of structured analysis, data modeling and threat modeling. When using UML, the activity diagram typically takes over the role of the data-flow diagram. A special form of data-flow plan is a site-oriented data-flow plan.
Data-flow diagrams can be regarded as inverted Petri nets, because places in such networks correspond to the semantics of data memories. Analogously, the semantics of transitions from Petri nets and data flows and functions from data-flow diagrams should be considered equivalent.
History
The DFD notation draws on graph theory, originally used in operational research to model workflow in organizations, and in computer science to model the flow of inputs and outputs across computations. DFD originated from the structured analysis and design technique methodology in the middle of the 1970s. It was first proposed by Larry Constantine, and popularized by Edward Yourdon, Tom DeMarco,Chris Gane and Trish Sarson, who enriched the diagramming technique with different notations, data dictionary practices and guidance for the hierarchical decomposition of processes.
The primary aim of data-flow diagrams in the context of structured design was to build complex modular systems, rationalizing the interdependencies across different modules. Data-flow diagrams quickly became a popular way to visualize the major steps and data involved in software-system processes. DFDs were usually used to show data flow in a computer system, although they could in theory as well be applied to business process modeling. DFDs were useful to document the major data flows or to explore a new high-level design in terms of data flow.
DFD components
DFD consists of processes, flows, warehouses, and terminators. There are several ways to view these DFD components.Process
The process is part of a system that transforms inputs to outputs. The symbol of a process is a circle, an oval, a rectangle or a rectangle with rounded corners. The process is named in one word, a short sentence, or a phrase that is clearly to express its essence.
Data flow
Data flow shows the transfer of information from one part of the system to another. The symbol of the flow is the arrow. The flow should have a name that determines what information is being moved. Exceptions are flows where it is clear what information is transferred through the entities that are linked to these flows. Material shifts are modeled in systems that are not merely informative. Flow should only transmit one type of information. The arrow shows the flow direction. Flows link processes, warehouses and terminators.
Warehouse
The warehouse is used to store data for later use. The symbol of the store is two horizontal lines, the other way of view is shown in the DFD Notation. The name of the warehouse is a plural noun —it derives from the input and output streams of the warehouse. The warehouse does not have to be just a data file but can also be, for example, a folder with documents, a filing cabinet, or a set of optical discs. Therefore, viewing the warehouse in a DFD is independent of implementation. The flow from the warehouse usually represents reading of the data stored in the warehouse, and the flow to the warehouse usually expresses data entry or updating. The warehouse is represented by two parallel lines between which the memory name is located.
Terminator
The terminator is an external entity that communicates with the system and stands outside of the system. It can be, for example, various organizations, groups of people, authorities or a department of the same organization, which does not belong to the model system. The terminator may be another system with which the modeled system communicates.