# Data Flow Diagramming Exercise

## Prerequisites

* [Information Systems](../notes/info-systems)

## Learning Objectives

* Practice identifying a system's information requirements (i.e. Information Inputs and Information Outputs).
* Practice depicting information requirements visually, by drawing a Data Flow Diagram (DFD) to communicate the system's scope and high-level objectives.
* Practice using digital diagramming tools to lend credibility and clarity to your DFDs.

## Instructions

Identify **three information systems you are familiar with**: one should ideally be a non-tech or low-tech system (e.g. a sandwich ordering process at an old-school local corner deli) and the other two should be computer-based systems (e.g. the Instagram social media app, the Amazon.com delivery system, etc.).

For each system:

1. Identify its **Information Requirements**:
   1. What **Information Inputs** does the system require in order to function, and where does this information come from?
   2. What **Information Outputs** does the system produce, and who consumes these outputs?
2. Visually depict the flow of information using a Data Flow Diagram (DFD). Include any people or other "entities" within the scope of the system which provide information to the system or receive information from the system.

You can start by sketching the DFDs on a whiteboard or piece of paper. Then ideally translate them into digital format using a diagramming tool like [Lucid Chart](https://www.lucidchart.com/).

### DFD Shapes

* The **System** should be depicted as a rectangle with a curved top. This shape should be labeled to include the name of the system as a proper noun (e.g. "Class Registration System").
* **Entities**, or people and other organizations within the system's scope, should be depicted as squares or rectangles near the outside edges of the diagram. These entities should be labeled as proper nouns (e.g. "User", "Admin", "Bank XYZ", "Data Provider ABC", etc.).
* **Flows of Information** between the system and these entities should be depicted as arrows to denote the source and destination of the information flows. Each arrow should be labeled with a noun to describe the information that is flowing (e.g. "receipt", "payment info", "notification preferences", "monthly sales report", etc.).

See the DFD below for an example:

![A "data flow diagram" depicting a system with inputs flowing in and outputs flowing out.](https://2741866142-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Lxirt-fOkHNRdT9uASu%2F-LxyAjPAv2RY6Fzg9ag1%2F-LxyAz6tFMWoqhRxFOvX%2Fexample-data-flow-diagram.png?generation=1578370080013045\&alt=media)
