1. Introducción a los Diagramas de Flujo de Datos
Un Diagrama de Flujo de Datos (DFD) es una representación gráfica de cómo se mueven los datos a través de un sistema de información. Muestra:
- De dónde provienen los datos y a dónde van
- Cómo se procesan los datos
- Dónde se almacenan los datos
- Quién o qué interactúa con el sistema

2. Conceptos clave
Elementos fundamentales
| Elemento | Símbolo | Propósito |
|---|---|---|
| Entidad externa | Rectángulo | Persona, organización o sistema que envía/recibe datos |
| Proceso | Círculo/Elipse | Transforma los datos entrantes en datos salientes |
| Almacén de datos | Rectángulo abierto | Repositorio para el almacenamiento persistente de datos |
| Flujo de datos | Flecha | Muestra la dirección del movimiento de los datos |
Niveles de DFD
- Diagrama de contexto (Nivel 0): Nivel más alto, muestra los límites del sistema y las entidades externas principales
- Nivel 1: Descompone el proceso principal en subprocesos principales
- Nivel 2+: Descomposición adicional que muestra procesos detallados
3. DFDs lógicos frente a DFDs físicos
DFD lógico

Un DFD lógico (también llamado “modelo esencial”) se centra en:
- QUÉ hace el sistema
- Actividades empresariales y requisitos de información
- Independiente de la tecnología de implementación
Características:
- Muestra operaciones y procesos empresariales
- Sin detalles específicos de tecnología
- Más abstracto y centrado en el usuario
- Ayuda a comprender los requisitos empresariales
DFD físico

Un DFD físico (también llamado “modelo de implementación”) se centra en:
- CÓMO se implementará el sistema
- Detalles técnicos y restricciones
- Tecnologías y sistemas específicos
Características:
- Muestra el hardware, software y personas reales
- Incluye detalles de implementación
- Más concreto y centrado en el desarrollador
- Ayuda en el diseño e implementación del sistema
Tabla comparativa
| Aspecto | DFD lógico | DFD físico |
|---|---|---|
| Enfoque | Necesidades empresariales | Implementación |
| Quién | Analistas de negocio, usuarios | Diseñadores de sistemas, desarrolladores |
| Nivel | Alto nivel, abstracto | Detallado, concreto |
| Componentes | Procesos empresariales | Procesos técnicos |
| Almacenes de datos | Entidades conceptuales | Archivos/bases de datos físicos |
| Entidades | Roles empresariales | Sistemas/dispositivos reales |
4. Componentes del DFD

Entidades externas
- Fuentes y destinos de datos
- Fuera del límite del sistema
- Nombrados con sustantivos
Procesos
- Transformar datos de entrada a salida
- Nombrados con verbo + sustantivo
- Numerados para identificación
Almacenes de datos
- Repositorios de datos persistentes
- Nombrados con sustantivos
- Numeración D1, D2, D3…
Flujos de datos
- Mostrar el movimiento de los datos
- Nombrados con etiquetas descriptivas
- La dirección indica el flujo
5. Ejemplos prácticos con Graphviz
Ejemplo 1: Sistema de Gestión Hotelera (DFD Lógico)

digraph HotelMIS_DFD_Logical {
// --- ESTILO DEL GRÁFICO ---
graph [
rankdir = LR
splines = true
overlap = false
nodesep = 0.6
ranksep = 1.0
fontname = "Helvetica,Arial,sans-serif"
fontsize = 12
]
// --- ESTILOS DE NODOS ---
node [
fontname = "Helvetica,Arial,sans-serif"
fontsize = 11
penwidth = 1.5
]
// Entidades Externas
node [shape = box, style = "filled", fillcolor = "#E1F5FE", color = "#0288D1"]
Guest;
Staff;
// --- LÍMITE DEL SISTEMA ---
subgraph cluster_SystemBoundary {
label = "Límite del Sistema Hotel MIS";
fontname = "Helvetica,Arial,sans-serif";
fontcolor = "#757575";
fontsize = 14;
color = "#757575";
style = "dashed,rounded";
bgcolor = "#FAFAFA";
margin = 20;
// Procesos
node [shape = circle, style = "filled", fillcolor = "#E8F5E9", color = "#388E3C", fixedsize = true, width = 1.3]
P1 [label="1.0nGestionarnReservas"];
P2 [label="2.0nCheck-In/nOut"];
P3 [label="3.0nGestionarnInventario"];
// Almacenes de Datos
node [shape = record, style = "filled", fillcolor = "#FFF9C4", color = "#FBC02D", fixedsize = false]
ReservationsDS [label="{ <id> D1 | ReservasnBase de Datos }"];
RoomsDS [label="{ <id> D2 | Estado de HabitacionesnBase de Datos }"];
InventoryDS [label="{ <id> D3 | InventarionBase de Datos }"];
}
// --- ESTILOS DE ARISTAS ---
edge [
fontname = "Helvetica,Arial,sans-serif"
fontsize = 9
color = "#555555"
arrowsize = 0.8
]
// --- FLUJOS DE DATOS ---
// Interacciones de Huéspedes
Guest -> P1 [label="Solicitud de Reserva"];
P1 -> Guest [label="Confirmación"];
Guest -> P2 [label="Llegada"];
P2 -> Guest [label="Llave de Habitación/Recibo"];
// Interacciones del Personal
Staff -> P3 [label="Actualizar Inventario"];
P3 -> Staff [label="Alertas/Informes"];
// Proceso a Almacén de Datos
P1 -> ReservationsDS [label="Nueva Reserva"];
ReservationsDS -> P1 [label="Verificar Disponibilidad"];
P1 -> RoomsDS [label="Solicitud de Detalles de Habitación"];
RoomsDS -> P1 [label="Habitaciones Disponibles"];
P2 -> RoomsDS [label="Actualización de Estado de Habitación"];
RoomsDS -> P2 [label="Información de Habitación"];
P2 -> P3 [label="Detalles de la Estancia"];
P3 -> InventoryDS [label="Actualización de Stock"];
InventoryDS -> P3 [label="Niveles de Stock"];
} Ejemplo 2: DFD Lógico – Sistema de Gestión de Biblioteca

digraph LibrarySystem_Logical {
// --- ESTILO DEL GRÁFICO ---
graph [
rankdir = TB
splines = true
nodesep = 0.5
ranksep = 0.8
fontname = "Helvetica,Arial,sans-serif"
fontsize = 12
]
// --- ESTILOS DE NODOS ---
node [
fontname = "Helvetica,Arial,sans-serif"
fontsize = 11
penwidth = 1.5
]
// Entidades Externas
node [shape = box, style = "filled", fillcolor = "#E1F5FE", color = "#0288D1"]
Member;
Librarian;
// --- LÍMITE DEL SISTEMA ---
subgraph cluster_LibrarySystem {
label = "Sistema de Biblioteca (Lógico)";
style = "dashed,rounded";
color = "#757575";
bgcolor = "#FAFAFA";
margin = 20;
// Procesos
node [shape = circle, style = "filled", fillcolor = "#E8F5E9", color = "#388E3C", width = 1.4]
P1 [label="1.0nGestionarnCatálogo"];
P2 [label="2.0nProcesarnPréstamos"];
P3 [label="3.0nGestionarnDevoluciones"];
// Almacenes de Datos
node [shape = record, style = "filled", fillcolor = "#FFF9C4", color = "#FBC02D"]
CatalogDS [label="{ <id> D1 | Catálogonde Libros }"];
TransactionsDS [label="{ <id> D2 | Registrosnde Préstamos }"];
MemberDS [label="{ <id> D3 | Base de Datosnde Socios }"];
}
// --- ESTILOS DE ARISTAS ---
edge [
fontname = "Helvetica,Arial,sans-serif"
fontsize = 9
color = "#555555"
arrowsize = 0.8
]
// --- FLUJOS DE DATOS ---
// Interacciones de Socios
Member -> P1 [label="Buscar Libros"];
P1 -> Member [label="Resultados de Búsqueda"];
Member -> P2 [label="Solicitud de Préstamo"];
P2 -> Member [label="Confirmación de Préstamo"];
Member -> P3 [label="Devolución de Libros"];
P3 -> Member [label="Recibo de Devolución"];
// Interacciones del Bibliotecario
Librarian -> P1 [label="Agregar/Actualizar Libros"];
P1 -> Librarian [label="Confirmación de Actualización del Catálogo"];
Librarian -> P3 [label="Procesar Mora"];
P3 -> Librarian [label="Informe de Mora"];
// Flujos de Datos
P1 -> CatalogDS [label="Actualizaciones de Libros"];
CatalogDS -> P1 [label="Datos del Catálogo"];
P2 -> CatalogDS [label="Verificar Disponibilidad"];
CatalogDS -> P2 [label="Estado del Libro"];
P2 -> MemberDS [label="Verificar Estado del Socio"];
MemberDS -> P2 [label="Información del Socio"];
P2 -> TransactionsDS [label="Crear Registro de Préstamo"];
TransactionsDS -> P2 [label="Historial de Préstamos"];
P3 -> TransactionsDS [label="Actualizar Devolución"];
TransactionsDS -> P3 [label="Registros de Préstamos"];
P3 -> MemberDS [label="Actualizar Estado del Socio"];
MemberDS -> P3 [label="Información del Socio"];
} Ejemplo 3: DFD Físico – Sistema de Gestión de Biblioteca

digraph LibrarySystem_Physical {
// --- ESTILO DEL GRÁFICO ---
graph [
rankdir = TB
splines = true
nodesep = 0.5
ranksep = 0.8
fontname = "Helvetica,Arial,sans-serif"
fontsize = 12
]
// --- ESTILOS DE NODOS ---
node [
fontname = "Helvetica,Arial,sans-serif"
fontsize = 11
penwidth = 1.5
]
// Entidades Externas (Físicas)
node [shape = box, style = "filled", fillcolor = "#E1F5FE", color = "#0288D1"]
"Library Member" [label="Socio denBiblioteca"];
"Librarian" [label="BibliotecarionPersonal"];
"Email System" [label="Sistema denCorreo"];
"Payment Gateway" [label="Pasarela denPago"];
// --- LÍMITE DEL SISTEMA ---
subgraph cluster_LibrarySystem_Physical {
label = "Sistema de Gestión de Biblioteca (Implementación Física)";
style = "dashed,rounded";
color = "#757575";
bgcolor = "#FAFAFA";
margin = 20;
// Procesos Físicos (con detalles tecnológicos)
node [shape = circle, style = "filled", fillcolor = "#E8F5E9", color = "#388E3C", width = 1.4]
P1 [label="1.0nCatálogo Webn(HTML, JS)"];
P2 [label="2.0nAPI denPréstamosn(Python/REST)"];
P3 [label="3.0nProcesadornde Devolucionesn(Java)"];
// Almacenes de Datos Físicos (con detalles tecnológicos)
node [shape = record, style = "filled", fillcolor = "#FFF9C4", color = "#FBC02D"]
CatalogDS [label="{ <id> D1 | Catálogonde Libros PostgreSQL }"];
TransactionsDS [label="{ <id> D2 | Registrosnde Préstamos MongoDB }"];
MemberDS [label="{ <id> D3 | Base de Datosnde Socios Oracle }"];
// Componentes físicos adicionales
node [shape = box, style = "filled", fillcolor = "#F3E5F5", color = "#8E24AA"]
"Cache Server" [label="CachénRedis"];
"Message Queue" [label="ColanRabbitMQ"];
}
// --- ESTILOS DE ARISTAS ---
edge [
fontname = "Helvetica,Arial,sans-serif"
fontsize = 9
color = "#555555"
arrowsize = 0.8
]
// --- FLUJOS DE DATOS (Físicos) ---
// Interacciones Físicas de Socios
"Library Member" -> P1 [label="HTTP GETnBúsqueda de Libros"];
P1 -> "Library Member" [label="ResultadosnHTML/JSON"];
"Library Member" -> P2 [label="API RESTnSolicitud de Préstamo"];
P2 -> "Library Member" [label="ConfirmaciónnJSON"];
"Library Member" -> P3 [label="API RESTnDevolución"];
P3 -> "Library Member" [label="RecibonJSON"];
// Interacciones Físicas del Bibliotecario
"Librarian" -> P1 [label="HTTPSnGestión del Catálogo"];
P1 -> "Librarian" [label="ConfirmaciónnHTML"];
"Librarian" -> P3 [label="API RESTnProceso de Mora"];
P3 -> "Librarian" [label="Informe PDF"];
// Interacciones con Sistemas Externos
P2 -> "Email System" [label="SMTPnNotificación"];
P3 -> "Payment Gateway" [label="HTTPSnPago de Multas"];
// Flujos de Datos (Físicos)
P1 -> CatalogDS [label="SQL UPDATE"];
CatalogDS -> P1 [label="SQL SELECT"];
P1 -> "Cache Server" [label="Actualización de Caché"];
"Cache Server" -> P1 [label="Hit de Caché"];
P2 -> CatalogDS [label="SQL SELECT"];
CatalogDS -> P2 [label="RESULTADO SQL"];
P2 -> MemberDS [label="SQL SELECT"];
MemberDS -> P2 [label="RESULTADO SQL"];
P2 -> TransactionsDS [label="INSERT"];
TransactionsDS -> P2 [label="SELECT"];
P2 -> "Message Queue" [label="PublicarnEvento de Préstamo"];
P3 -> TransactionsDS [label="UPDATE"];
TransactionsDS -> P3 [label="SELECT"];
P3 -> MemberDS [label="UPDATE"];
MemberDS -> P3 [label="SELECT"];
P3 -> "Message Queue" [label="PublicarnEvento de Devolución"];
} Ejemplo 4: Procesamiento de pedidos de comercio electrónico (DFD lógico)

digraph ECommerce_Logical {
// --- ESTILO DEL GRÁFICO ---
graph [
rankdir = LR
splines = true
nodesep = 0.5
ranksep = 0.8
fontname = "Helvetica,Arial,sans-serif"
fontsize = 12
]
// --- ESTILOS DE NODOS ---
node [
fontname = "Helvetica,Arial,sans-serif"
fontsize = 11
penwidth = 1.5
]
// Entidades Externas
node [shape = box, style = "filled", fillcolor = "#E1F5FE", color = "#0288D1"]
Cliente;
Proveedor;
"Procesador de Pagos" [label="PagonProcesador"];
// --- LÍMITE DEL SISTEMA ---
subgraph cluster_ECommerce {
label = "Sistema de Comercio Electrónico (Lógico)";
style = "dashed,rounded";
color = "#757575";
bgcolor = "#FAFAFA";
margin = 20;
// Procesos
node [shape = circle, style = "filled", fillcolor = "#E8F5E9", color = "#388E3C", width = 1.4]
P1 [label="1.0nProcesarnPedido"];
P2 [label="2.0nGestionarnInventario"];
P3 [label="3.0nManejarnEnvío"];
// Almacenes de Datos
node [shape = record, style = "filled", fillcolor = "#FFF9C4", color = "#FBC02D"]
AlmacenPedido [label="{ <id> D1 | Pedidos }"];
AlmacenInventario [label="{ <id> D2 | Inventario }"];
AlmacenEnvio [label="{ <id> D3 | Envíos }"];
}
// --- ESTILOS DE ARISTAS ---
edge [
fontname = "Helvetica,Arial,sans-serif"
fontsize = 9
color = "#555555"
arrowsize = 0.8
]
// --- FLUJOS DE DATOS ---
// Interacciones del Cliente
Cliente -> P1 [label="Detalles del Pedido"];
P1 -> Cliente [label="Confirmación del Pedido"];
Cliente -> P3 [label="Rastrear Pedido"];
P3 -> Cliente [label="Información de Rastreo"];
// Procesador de Pagos
"Procesador de Pagos" -> P1 [label="Respuesta de Pago"];
P1 -> "Procesador de Pagos" [label="Solicitud de Pago"];
// Proveedor
Proveedor -> P2 [label="Actualización de Stock"];
P2 -> Proveedor [label="Solicitud de Reabastecimiento"];
// Procesar Flujos de Datos
P1 -> AlmacenPedido [label="Guardar Pedido"];
AlmacenPedido -> P1 [label="Historial de Pedidos"];
P1 -> AlmacenInventario [label="Verificar Stock"];
AlmacenInventario -> P1 [label="Disponibilidad"];
P1 -> P3 [label="Detalles del Envío"];
P2 -> AlmacenInventario [label="Actualizar Stock"];
AlmacenInventario -> P2 [label="Stock Actual"];
P3 -> AlmacenPedido [label="Actualizar Estado"];
AlmacenPedido -> P3 [label="Información del Pedido"];
P3 -> AlmacenEnvio [label="Crear Envío"];
AlmacenEnvio -> P3 [label="Detalles del Envío"];
}
6. Mejores Prácticas
Para DFDs Lógicos
- Enfocarse en los procesos empresariales, no en la tecnología
- Usar terminología empresarial que los interesados comprendan
- Mantener los procesos en niveles de abstracción consistentes
- Validar con usuarios empresariales para precisión
- Mostrar todos los flujos de datos principales entre componentes
Para DFDs Físicos
- Incluir detalles específicos de la tecnología
- Considerar el rendimiento y la escalabilidad
- Documentar las interfaces del sistema claramente
- Incluir manejo de errores y procesos de recuperación
- Alinear con la arquitectura real del sistema
Mejores Prácticas Generales
- Comience con un diagrama de contexto
- Numere los procesos de forma jerárquica
- Utilice nombres significativos para todos los componentes
- Evite cruces en los flujos de datos
- Valide regularmente con las partes interesadas
7. Errores comunes

Error 1: Mezclar lo lógico y lo físico
❌ Incorrecto: Incluir nombres de tecnologías de bases de datos en un DFD lógico
✅ Correcto: Mantenga el DFD lógico independiente de la tecnología
Error 2: Flujos de datos faltantes
❌ Incorrecto: Mostrar solo una dirección entre las entidades
✅ Correcto: Incluir flujos bidireccionales cuando sea apropiado
Error 3: Demasiado complejo
❌ Incorrecto: Colocar 20 o más procesos en un solo diagrama
✅ Correcto: Descomponer en múltiples diagramas enfocados
Error 4: Etiquetado incorrecto de los flujos de datos
❌ Incorrecto: “Datos” como etiqueta
✅ Correcto: Etiquetas descriptivas como “Detalles del Pedido del Cliente”
Trampa 5: Límites de proceso incorrectos
❌ Incorrecto: Un proceso que realiza múltiples funciones no relacionadas
✅ Correcto: Procesos separados para funciones distintas
Conclusión
Los Diagramas de Flujo de Datos son herramientas esenciales para el análisis y diseño de sistemas. Comprender la distinción entre DFDs lógicos y físicos le ayuda a comunicarse eficazmente con diferentes partes interesadas en distintas etapas del ciclo de vida del desarrollo de software.
- DFDs lógicos conectan los requisitos empresariales con las soluciones técnicas
- DFDs físicos guían las decisiones de implementación y despliegue
Utilice los ejemplos proporcionados como plantillas para sus propios DFDs, adaptándolos a los requisitos específicos de su sistema mientras sigue las mejores prácticas descritas anteriormente.
Recursos adicionales
- Generador de DFDs Gane y Sarson con IA de Visual Paradigm: Explica cómo las herramientas de IA de Visual Paradigm pueden generar DFDs Gane-Sarson a partir de descripciones de texto.
- Guía paso a paso para crear Diagramas de Flujo de Datos con Visual Paradigm: Proporciona un tutorial para crear DFDs con la herramienta en línea de Visual Paradigm, desde el registro hasta el intercambio.
- ¿Cómo crear un Diagrama de Flujo de Datos (DFD)?: Una guía que cubre qué es un DFD, su propósito y los tipos principales (Físico y Lógico).
- Guía para principiantes sobre Diagramas de Flujo de Datos SSADM con Visual Paradigm Online: Una guía introductoria para crear diagramas de flujo de datos al estilo SSADM utilizando Visual Paradigm Online.
- Guía completa de Diagramas de Flujo de Datos (DFD): Desmitificando el flujo de información: Una visión general de los DFDs, detallando sus elementos y por qué Visual Paradigm es una herramienta adecuada para crearlos.
- Dominar los Diagramas de Flujo de Datos con Visual Paradigm: Una Guía Paso a Paso: Una guía práctica que utiliza ejemplos y plantillas para enseñar la creación de DFD, con estudios de caso como sistemas de compras en línea.
- Comprender el DFD Lógico frente al DFD Físico: Cuándo y Por Qué los Necesitamos: Explica las diferencias, propósitos y casos de uso apropiados para los diagramas de flujo de datos lógicos y físicos.
- Guía para Principiantes sobre Diagramas de Flujo de Datos (DFD) con Visual Paradigm Online: Un tutorial amigable para principiantes que recorre los pasos para crear un DFD con Visual Paradigm Online.
- Archivos de DFD – Guías de Visual Paradigm: Una colección de artículos sobre temas de DFD, incluidos generadores de IA, validación, equilibrado y niveles.
- Guía de Inicio para Diagramas de Flujo de Datos (DFD) con Visual Paradigm Online: Detalla el proceso paso a paso para crear DFD, incluyendo sus componentes clave y cómo usar plantillas.
- Dibujar DFD con la Mejor Herramienta de DFD: Discute la representación gráfica del flujo de datos, detalla los DFD lógicos frente a los físicos y explora los beneficios de cada tipo.
-
Guía para Principiantes sobre Diagramas de Flujo de Datos (DFD) con Visual Paradigm Online: Una guía para principiantes en idioma indonesio sobre DFD, que describe los componentes y el proceso de creación paso a paso en Visual Paradigm Online.
Esta guía proporciona una base para crear DFD efectivos. Recuerde que los buenos diagramas evolucionan mediante iteración y retroalimentación de las partes interesadas.



