Un diagrama de flujo de datos (DFD) muestra cómo se mueve la información por un sistema: de dónde viene, qué la transforma, dónde se guarda y adónde va. No dice nada sobre tiempos, bucles ni qué servidor ejecuta qué, y esa es su fuerza. Un DFD es la forma más rápida de ponerse de acuerdo sobre qué datos maneja un sistema, y por eso aparece en el trabajo de requisitos, en las revisiones de privacidad y en el modelado de amenazas.
Este artículo cubre los símbolos DFD en las dos notaciones clásicas y luego desarrolla un ejemplo, una tienda online, en tres niveles: el diagrama de contexto, el nivel 0 y el nivel 1. También explica la confusión de nombres en torno al «nivel 0», la regla de balanceo que mantiene coherentes los niveles y los errores que buscan los revisores.
Símbolos DFD
Los DFD usan cuatro elementos. Dominan dos notaciones, ambas de los libros de análisis estructurado de finales de los años setenta: la de Yourdon y DeMarco, y la de Gane y Sarson.
| Elemento | Qué es | Yourdon y DeMarco | Gane y Sarson |
|---|---|---|---|
| Entidad externa | Una persona, organización o sistema fuera de la frontera que envía o recibe datos | Rectángulo | Cuadrado, a menudo sombreado |
| Proceso | Trabajo que transforma datos | Círculo o burbuja | Rectángulo redondeado con una banda de ID |
| Almacén de datos | Datos en reposo: una tabla, un archivo o una cola | Dos líneas paralelas | Rectángulo abierto por un lado, con un ID como D1 |
| Flujo de datos | Datos en movimiento, nombrados con un sustantivo | Flecha | Flecha |
Las notaciones son equivalentes; elige una y mantenla. Muchas herramientas modernas dibujan los almacenes de datos como cilindros, que los lectores reconocen al instante. Elijas lo que elijas, añade una leyenda.
Las reglas que hacen válido un DFD
- Cada proceso tiene al menos una entrada y una salida. Un proceso con solo entradas es un agujero negro; uno con solo salidas, un milagro.
- Los datos solo se mueven a través de procesos. Ningún flujo va directamente de una entidad externa a un almacén de datos, de un almacén a otro ni entre dos entidades externas.
- Los flujos llevan nombres que describen datos, como «detalles del pedido» o «resultado del pago», no acciones como «enviar» o «comprobar».
- Los procesos se nombran con verbo y objeto: «Tomar pedido», «Preparar pedido».
- Cada proceso está numerado, y su descomposición repite el número: el proceso 1 se convierte en 1.1, 1.2 y 1.3.
Los niveles y la confusión del nivel 0
Un DFD se dibuja de arriba abajo, en niveles de detalle creciente:
- El diagrama de contexto muestra todo el sistema como un único proceso, rodeado de todas las entidades externas y los flujos entre ellas. Define la frontera.
- El siguiente nivel abre ese único proceso en sus procesos principales, añade los almacenes de datos y conserva los mismos flujos externos.
- Los niveles inferiores abren procesos individuales tanto como haga falta.
Aquí está la confusión: algunos libros de texto y herramientas llaman «nivel 0» al diagrama de contexto y «nivel 1» a su primera descomposición, mientras que otros, siguiendo la práctica más antigua del análisis estructurado, tratan el diagrama de contexto como un nivel propio y llaman a la primera descomposición «diagrama 0» o «nivel 0». Ninguna de las dos está mal. Este artículo usa la segunda convención: diagrama de contexto, luego nivel 0, luego nivel 1. Uses la que uses, escríbela en el diagrama.
El ejemplo: una tienda online
Una tienda online recibe pedidos de los clientes, les cobra a través de un proveedor de pagos y envía listas de picking a un almacén que despacha la mercancía.
Diagrama de contexto
Un proceso, «0 Online store», y tres entidades externas:
| Flujo | Desde | Hacia |
|---|---|---|
| Order details | Customer | Online store |
| Order confirmation | Online store | Customer |
| Payment request | Online store | Payment provider |
| Payment result | Payment provider | Online store |
| Pick list | Online store | Warehouse |
| Shipment status | Warehouse | Online store |
Ese es todo el sistema visto desde fuera. Cualquiera puede revisarlo en un minuto, y ya responde preguntas importantes: qué organizaciones reciben datos de clientes y de qué sistemas dependemos.
Nivel 0
Abre la tienda online en tres procesos y dos almacenes de datos:
- Take order recibe los detalles del pedido del cliente, lee los precios de D2 Products, escribe el pedido en D1 Orders y pasa una solicitud de pago al proceso 2.
- Process payment envía la solicitud de pago al proveedor de pagos, recibe el resultado del pago, actualiza el pedido en D1 Orders y pasa los pedidos pagados al proceso 3.
- Fulfil order lee los pedidos pagados, envía la lista de picking al almacén, recibe el estado del envío y envía la confirmación del pedido al cliente.
Cada flujo externo del diagrama de contexto vuelve a aparecer en el nivel 0, conectado a las mismas entidades. Eso es el balanceo, y el diagrama de abajo lo hace visible.
Nivel 1
Cada proceso del nivel 0 puede abrirse más. El proceso 1, Take order, en el nivel 1:
| Proceso | Entradas | Salidas |
|---|---|---|
| 1.1 Validar cesta | Order details desde Customer | Cesta válida |
| 1.2 Calcular precio del pedido | Cesta válida, precios de productos desde D2 Products | Pedido con precio |
| 1.3 Registrar pedido | Pedido con precio | Pedido nuevo hacia D1 Orders, solicitud de pago hacia el proceso 2 |
Las entradas y salidas de 1.1 a 1.3, tomadas en conjunto, deben coincidir con las entradas y salidas del proceso 1 en el nivel 0. Dibuja cada explosión de nivel 1 como un diagrama propio, con el número del proceso padre en el título.
Balanceo: la regla que los revisores comprueban primero
Un diagrama hijo está balanceado cuando los flujos de datos que entran y salen de él son iguales a los flujos que entran y salen de su proceso padre. Si el nivel 0 muestra un flujo «solicitud de reembolso» que el diagrama de contexto no tiene, uno de los dos está mal: o el sistema tiene una interfaz que nadie acordó, o el diagrama de contexto está incompleto. El balanceo es lo que hace fiables los niveles de un DFD como conjunto, y es fácil de comprobar listando lado a lado los flujos externos de cada nivel.
Errores comunes
- Dibujar un diagrama de flujo. Las decisiones, los bucles y las flechas de «después» pertenecen a un diagrama de flujo o a un diagrama BPMN. Un DFD muestra datos, no control.
- Flujos sin nombre. Una flecha sin etiqueta no le dice nada al revisor; nombra los datos que lleva.
- Demasiados procesos por diagrama. Más de siete a nueve procesos en un nivel cuesta leerlos. Agrúpalos y abre los grupos en el siguiente nivel.
- Almacenes de datos que solo reciben datos. Si nada lee nunca un almacén, ¿por qué existe? Si nada escribe en él, ¿de dónde salen sus datos?
- Mezclar niveles. Mostrar subprocesos detallados junto a procesos de alto nivel en el mismo diagrama rompe la jerarquía.
DFD, diagramas de flujo y diagramas de arquitectura
| Diagrama de flujo de datos | Diagrama de flujo | Diagrama de arquitectura | |
|---|---|---|---|
| Muestra | Datos, sus orígenes, transformaciones y almacenamiento | Pasos, decisiones y orden | Componentes, despliegue y conexiones |
| Tiempo y orden | No | Sí | Rara vez |
| Ideal para | Requisitos, revisiones de privacidad, modelos de amenazas | Procedimientos y algoritmos | Diseño y operaciones |
Los DFD son la entrada estándar del modelado de amenazas: añade fronteras de confianza a un diagrama de nivel 0 y tendrás la base de una revisión STRIDE, como muestra el artículo sobre el diagrama de flujo de datos para modelado de amenazas. Son igual de útiles para el trabajo de privacidad, donde el diagrama de mapeo de datos para el RGPD sigue los datos personales a través del mismo tipo de flujos.
El diagrama de niveles del DFD
Contenido del diagrama
- Context diagram
- 0 Online store
- Customer
- Payment provider
- Warehouse
- Level 0
- 1 Take order
- 2 Process payment
- 3 Fulfil order
- D2 Products
- D1 Orders
- order details
- order confirmation
- payment request
- payment result
- pick list
- shipment status
- order to pay
- paid order
- prices
- new order
- payment status
Cómo leerlo:
- Las entidades externas están en el centro: Customer, Payment provider y Warehouse. Ambos diagramas se conectan a ellas.
- El marco de la izquierda es el diagrama de contexto: un proceso, 0 Online store, con seis flujos con nombre hacia las entidades.
- El marco de la derecha es el nivel 0: Take order, Process payment y Fulfil order, con los almacenes de datos Orders y Products.
- El balanceo es visible: cada flujo externo de la izquierda reaparece a la derecha, ahora conectado al proceso que lo gestiona.
- El bloque Markdown es la leyenda y la convención de numeración.
Dibujar DFD que superen la revisión
- Nombra cada flujo con un sustantivo. La mayoría de los comentarios de revisión sobre DFD tratan de flechas sin etiqueta o con etiquetas vagas.
- Numera los procesos de forma coherente entre niveles, para que el lector pueda rastrear 1.2 hasta 1.
- Mantén las entidades externas en las mismas posiciones en cada nivel; así el balanceo se ve fácilmente.
- Añade una leyenda para tu notación, sobre todo si mezclas símbolos clásicos con cilindros para los almacenes de datos.
Para la notación de otros tipos de diagrama, consulta el ejemplo de respuesta a incidentes en forma de diagrama de flujo y el ejemplo de diagrama BPMN.
Constrúyelo en Archboard
- Inicia sesión con Google o GitHub y crea un diagrama.
- Añade tres nodos Caja del pack Básico en una columna central para Customer, Payment provider y Warehouse.
- Añade a la izquierda un Marco del pack Básico llamado Context diagram, con una forma Elipse del pack Básico para 0 Online store.
- Añade a la derecha un segundo Marco llamado Level 0, con tres formas Elipse para los procesos y dos formas con la variante Cilindro para D1 Orders y D2 Products.
- Dibuja los flujos como aristas etiquetadas, con las mismas etiquetas a ambos lados de las entidades.
- Añade un bloque Markdown del pack Básico con la leyenda y la convención de numeración.
El ejemplo usa 12 nodos de diagrama, dentro del plan Free.
Preguntas frecuentes
¿Cuáles son los cuatro símbolos de un diagrama de flujo de datos? Entidades externas, procesos, almacenes de datos y flujos de datos. Yourdon y DeMarco dibujan los procesos como círculos y los almacenes como líneas paralelas; Gane y Sarson usan rectángulos redondeados y rectángulos abiertos por un extremo.
¿Qué diferencia hay entre un diagrama de contexto y un DFD de nivel 0? Un diagrama de contexto muestra todo el sistema como un único proceso con sus entidades externas. El siguiente nivel abre ese proceso en subprocesos principales y almacenes de datos. Algunas fuentes llaman nivel 0 al diagrama de contexto, así que indica tu convención.
¿Qué significa balanceo en un DFD? Los flujos de datos que entran y salen de un diagrama hijo deben coincidir con los flujos de su proceso padre. Así se garantiza que los niveles describen el mismo sistema.
¿En qué se diferencia un DFD de un diagrama de flujo? Un DFD muestra qué datos se mueven adónde y cómo se transforman, sin orden ni decisiones. Un diagrama de flujo muestra la secuencia de pasos y las decisiones entre ellos.
¿Cuántos niveles debería tener un DFD? Tantos como necesiten los lectores. La mayoría de los sistemas quedan bien descritos con un diagrama de contexto y el nivel 0, con diagramas de nivel 1 solo para los procesos complejos o sensibles.