A Data Flow Diagram (DFD) is a diagram which shows the flow of data within a system or a process and the transformations that occur to the data. DFDs are also graphical representations of data flows in a system and it uses shapes, symbols and labels to help in the flow of data from inputs to outputs. Components of DFDs include processes which are depicted as rectangles, data flow which is shown by arrows, data stores and external entities.
Originally applied since the 1970s for documenting process, DFDs are now employed in order to illustrate the structure of software systems. The purpose of these diagrams is to represent the topology of the system with a view of illustrating the flow of information as well as the connection between the different parts of the system.
DFDs are useful in depicting processes and flow of information in a way that is quite comprehensible and can as well show the level of detail of processes. By breaking down processes and depicting the way in which data is passed through them, DFDs give the developer, analyst and other people interested in the system a general idea of what the system looks like in the development process. This is because DFDs provide clarity and thus can be of great use during the designing of new systems besides analyzing the existing ones.
A typical DFD consists of several key components:
There are quite a number of reasons why DFDs are crucial as highlighted below. They offer a good overview of a system and at the same time are detailed enough to show most of the relations and data flows. This simplicity and clarity make DFDs particularly effective for:
A Data Flow Diagram (DFD) is one of the most important tools used in system analysis and design since it presents a graphical representation of the flow of data within a system or process. Due to the representation of different processes in the form of standardized symbols and shapes, DFDs help to design the system in detail, as well as to identify the bottlenecks and describe the data flow. This has made DFDs to be very useful in both software development and management of any process which has led to its wide use.