The idea of a DFD is to show how data flows between different processes of a system.
A DFD has the following:
Data flows - This should be the name of the data which is flowing between two processes:
Code:
appointment time
-------------------->
External entities - These are entities which do not actually have a physical interaction with any of the systems processes. E.g. a patient
Code:
+---------+
+ +
| patient |
+ +
+---------+
Processes - An action which has input and an output such as booking an appointment.
Code:
+------------------+
|1| Receptionist |
|------------------|
| Book appointment |
| |
| |
+------------------+
Data stores - Such as a database or a filing cabinet. Thy should be labelled with a unique number. E.g. M1 for a manual data store, D1 for a digital datastore.
Code:
+-----------------------
| D1 | Patient Database
+-----------------------
You then join them all together to create a simple DFD:
Code:
+---------+
+ +
| patient |
+ +
+---------+
| ^
| |
|D |
|O |Appointment
|B |Card
| |
| |
V |
+------------------+
|1| Recepionist | appointment time
|------------------|<--------------------------|
| Book appointment | |
| |--------------| |
| | | |
+------------------+ | |
^ |patient |
|patient |name |
|details | |
| V |
+----------------------- +---------------------------
| D1 | Patient Database | D1 | Appointment Database
+----------------------- +---------------------------
The above is not the best example. You can have three types of DFD. Levels 0, 1, and 2 and possibly 3 depeending on the complexity of the system.
Level 0 just shows the dataflows of the external entities in and out of a system. The level 1 shows all the main processes and their dataflows and level 2 details more complex processes and breaks them down into further smaller processes.
I use MS Visio 2000 to create my DFD's and tend to steer clear of the ASCII art where possible.