Introducción

1. Los Bloques de Construcción Fundamentales: El “Vocabulario” del DFD
Antes de adentrarse en los niveles y tipos, necesita los cuatro símbolos fundamentales de los que está hecho todo DFD. Estos son consistentes en todas las notaciones (Yourdon/DeMarco, Gane & Sarson, SSADM); solo difieren en forma.
| Elemento | Propósito | Forma de Gane & Sarson | Forma de Yourdon/DeMarco |
|---|---|---|---|
| Entidad Externa (Terminador) | Una fuente o sumidero fueradel sistema: una persona, organización o sistema externo que suministra o consume datos | Rectángulo redondeado | Cuadrado / caja |
| Proceso | Transforma entradas en salidas. Siempre nombrado con un verbo y numerado | Rectángulo redondeado | Círculo (burbuja) |
| Almacén de Datos | Donde se almacenan los datos en reposo: un archivo, una base de datos o un repositorio | Rectángulo de extremo abierto | Dos líneas paralelas |
| Flujo de datos | Una flecha con nombre que muestra el movimiento de datos entre elementos | Flecha con etiqueta | Flecha con etiqueta |
Convenciones de nomenclatura (cruciales para la claridad):
-
Procesos: número + frase verbal →
1.0 Validar pedido,2.0 Verificar inventario. El numeración es lo que permite la descomposición (proceso2.0se divide en2.1,2.2,2.3…). -
Almacenes de datos: número + frase nominal →
D1 Cliente,D2 Inventario. -
Flujos de datos: un breve descriptor del contenido de los datos →
Solicitud de pedido,Verificación de pago,Recuento de existencias.
2. La jerarquía de niveles (Abstracción por descomposición)
La idea central de los DFDs por niveles es descomposición de arriba hacia abajo: se comienza con una única burbuja opaca y se exponen recursivamente sus internals hasta que cada proceso es trivialmente simple.
2.1 Diagrama de contexto (Nivel 0)
-
Abstracción: Máxima posible — el sistema completo es un único proceso.
-
Lo que muestra: Entidades externas, y los flujos de datos que las conectan a la única burbuja del sistema. Eso es todo.
-
Lo que oculta deliberadamente: Cada proceso interno, cada almacén de datos y todos los flujos de datos dentro del sistema.
-
Propósito: Define el límite del sistema — la línea nítida entre “lo que está dentro” y “lo que está fuera”.
A continuación se muestra un Diagrama de contexto para un Sistema de Procesamiento de Pedidos. Observe cómo todo el sistema aparece como un proceso 0, y todos los detalles se envían al mundo externo:

digraph DFD_Context {
graph [
rankdir = LR
splines = true
overlap = false
nodesep = 0.5
ranksep = 1.2
fontname = "Helvetica,Arial,sans-serif"
fontsize = 12
label = "Sistema de Procesamiento de Pedidos — Diagrama de Contexto (Nivel 0)"
labelloc = t
]
node [
fontname = "Helvetica,Arial,sans-serif"
fontsize = 11
penwidth = 1.5
]
node [shape = box, style = "filled", fillcolor = "#E1F5FE", color = "#0288D1"]
Customer; Supplier; Bank;
subgraph cluster_SystemBoundary {
label = "Sistema de Procesamiento de Pedidos";
fontname = "Helvetica,Arial,sans-serif; bold"
fontsize = 14
color = "#757575"
style = "dashed,rounded"
bgcolor = "#FAFAFA"
margin = 20
node [shape = circle, style = "filled", fillcolor = "#E8F5E9", color = "#388E3C", fixedsize = true, width = 1.6]
SYS [label="0nProcesamientondenPedidos"];
}
edge [
fontname = "Helvetica,Arial,sans-serif"
fontsize = 9
color = "#555555"
arrowsize = 0.8
]
Customer -> SYS [label="SolicitudndenPedido"];
SYS -> Customer [label="ConfirmaciónnynEstadondelnPedido"];
Supplier -> SYS [label="DisponibilidadndenInventario"];
SYS -> Supplier [label="SolicitudndenStock"];
Bank -> SYS [label="VerificaciónndenPago"];
SYS -> Bank [label="SolicitudndenPagonynDesembolso"];
}
Lea el límite: En este Diagrama de Contexto, el sistema no hace nada visible — pero cada interacción externa está enumerada. Este artefacto es el contrato que firmó con las partes interesadas: captura alcance y previene la expansión del alcance porque todo lo que no está en este diagrama está fuera de alcance.
2.2 DFD de Nivel 1
-
Abstracción: Descompone el único
0proceso en sus principales subprocesos. -
Lo que muestra: Las áreas funcionales principales, los almacenes de datos clave y cómo se mueven los datos entre ellos, los almacenes y las entidades externas.
-
Propósito: Ofrece la primera vista real de estructura del sistema. Las funciones principales ahora son visibles.
Para el ejemplo de Pedido, el proceso 0 se descompone en cuatro funciones principales: Validar pedido, Verificar inventario, Procesar pago, y Generar envío. Tenga en cuenta que los almacenes de datos aparecen aquí por primera vez:

digraph DFD_Level1 {
graph [
rankdir = LR
splines = true
overlap = false
nodesep = 0.5
ranksep = 0.8
fontname = "Helvetica,Arial,sans-serif"
fontsize = 12
label = "Sistema de procesamiento de pedidos — DFD Nivel 1"
labelloc = t
]
node [
fontname = "Helvetica,Arial,sans-serif"
fontsize = 11
penwidth = 1.5
]
node [shape = box, style = "filled", fillcolor = "#E1F5FE", color = "#0288D1"]
Customer; Supplier; Bank;
subgraph cluster_SystemBoundary {
label = "Sistema de procesamiento de pedidos";
fontname = "Helvetica,Arial,sans-serif; bold"
fontsize = 14
color = "#757575"
style = "dashed,rounded"
bgcolor = "#FAFAFA"
margin = 20
node [shape = circle, style = "filled", fillcolor = "#E8F5E9", color = "#388E3C", fixedsize = true, width = 1.4]
P1 [label="1.0nValidarnpedido"];
P2 [label="2.0nVerificarninventario"];
P3 [label="3.0nProcesarnpago"];
P4 [label="4.0nGenerarnenvío"];
node [shape = record, style = "filled", fillcolor = "#FFF9C4", color = "#FBC02D", fixedsize = false]
CustomerDS [label="{ <id> D1 | Cliente }"];
InventoryDS [label="{ <id> D2 | Inventario }"];
OrderDS [label="{ <id> D3 | Pedido }"];
PaymentDS [label="{ <id> D4 | Pago }"];
}
edge [
fontname = "Helvetica,Arial,sans-serif"
fontsize = 9
color = "#555555"
arrowsize = 0.8
]
Customer -> P1 [label="Solicitudnde pedido"];
Bank -> P3 [label="Verificaciónnde pago"];
Supplier -> P2 [label="Disponibilidadnde inventario"];
P1 -> P2 [label="Pedidonválido"];
P3 -> P4 [label="Pagonconfirmado"];
P1 -> CustomerDS [label="Validar y actualizarncliente", dir=both];
P2 -> InventoryDS [label="Actualizar ynconsultar stock", dir=both];
P1 -> OrderDS [label="Registrarnpedido"];
P3 -> PaymentDS [label="Registrar y verificarnpago", dir=both];
P4 -> OrderDS [label="Actualizarnestado"];
P2 -> Supplier [label="Solicitudnde stock"];
P4 -> Customer [label="Detallesnde envío"];
} Aspectos clave que ocurren aquí y que siempre debe verificar:
-
La numeración es consistente (
1.0…4.0) que coincide con el padre0. -
Equilibrio (descrito a continuación) — los flujos hacia y desde proceso
0en el Diagrama de contexto deben ser iguales a los flujos hacia y desde del diagrama de Nivel 1 en su conjunto. -
Acceso bidireccional al almacén (por ejemplo,
P1 -> CustomerDS [dir=both]) se dibuja como una única arista fusionada en lugar de dos flechas de desorden.
2.3 Diagrama de Flujo de Datos de Nivel 2 (y más allá)
-
Abstracción: Descomposición adicional de un único proceso de Nivel 1.
-
Lo que muestra: Detalle granular para procesos complejos. Cada subproceso recibe una función atómica.
-
Propósito: Continúas creando Nivel 3, Nivel 4, etc., hasta que cada proceso hoja es lo suficientemente simple para describirse en una narrativa breve o pseudocódigo — ese proceso terminal se llama un Primitiva Funcional (un proceso primitivo).
Aquí hacemos zoom en proceso 2.0 Verificar Inventario del Diagrama de Flujo de Datos de Nivel 1, descomponiéndolo en 2.1 Consultar Existencias, 2.2 Verificar Disponibilidad, y 2.3 Reservar Existencias:

digraph DFD_Level2 {
graph [
rankdir = LR
splines = true
overlap = false
nodesep = 0.4
ranksep = 0.8
fontname = "Helvetica,Arial,sans-serif"
fontsize = 12
label = "Sistema de Procesamiento de Pedidos — DFD Nivel 2 (descomposición de 2.0 Verificar Inventario)"
labelloc = t
]
node [
fontname = "Helvetica,Arial,sans-serif"
fontsize = 11
penwidth = 1.5
]
node [shape = box, style = "filled", fillcolor = "#E1F5FE", color = "#0288D1"]
P1_Parent [label="1.0 / 3.0n(vecinos)"];
Supplier;
subgraph cluster_SystemBoundary {
label = "2.0 Verificar Inventario (descompuesto)";
fontname = "Helvetica,Arial,sans-serif; bold"
fontsize = 14
color = "#757575"
style = "dashed,rounded"
bgcolor = "#FAFAFA"
margin = 20
node [shape = circle, style = "filled", fillcolor = "#E8F5E9", color = "#388E3C", fixedsize = true, width = 1.4]
P21 [label="2.1nConsultarnStock"];
P22 [label="2.2nVerificarnDisponibilidad"];
P23 [label="2.3nReservarnStock"];
node [shape = record, style = "filled", fillcolor = "#FFF9C4", color = "#FBC02D", fixedsize = false]
InventoryDS [label="{ <id> D2 | Inventario }"];
OrderDS [label="{ <id> D3 | Pedido }"];
}
edge [
fontname = "Helvetica,Arial,sans-serif"
fontsize = 9
color = "#555555"
arrowsize = 0.8
]
P1_Parent -> P21 [label="PedidonVálido"];
P22 -> P1_Parent [label="StocknConfirmado & Estado"];
Supplier -> P22 [label="Respuestande Disponibilidad"];
P21 -> P22 [label="Conteonde Stock"];
P22 -> P23 [label="DisponibilidadnConfirmada"];
P23 -> P1_Parent [label="StocknReservado"];
P21 -> InventoryDS [label="Consultar", dir=both];
P23 -> InventoryDS [label="DisminuirnReservado", dir=both];
P23 -> OrderDS [label="ActualizarnEstado"];
P22 -> OrderDS [label="LeernPedido"];
}
¿Cuándo se detiene? La regla general: siga descomponiendo hasta que cada proceso hoja sea un Primitiva Funcional — un proceso lo suficientemente simple como para ser especificado completamente con unas pocas líneas de pseudocódigo o una historia de usuario breve. No hay un nivel objetivo fijo; la complejidad determina la profundidad. Un proceso pequeño puede ser primitivo en el Nivel 1; uno grande puede necesitar el Nivel 3 o 4.
3. DFDs Lógicos vs. Físicos — La Intención Dimensión
Este es el eje que correctamente señalaste como siendo confundido con la terminología de los Diagramas de Clases. Seamos precisos:

-
Diagramas de Clases usan Conceptual/Lógico/Físico para expresar niveles de abstracción de un modelo de datos.
-
DFDs usan Lógico/Físico para expresar la intención de diseño — qué vs. cómo — y esto es ortogonal a la jerarquía de Niveles.
Esto significa que cada nivel (Contexto, Nivel 1, Nivel 2) puede dibujarse como un DFD Lógico o como un DFD Físico.Son ejes independientes, no una escalera.
3.1 DFD Lógico — Qué hace el Sistema
| Aspecto | Detalle |
|---|---|
| Enfoque | Requisitos empresariales y qué debe lograr el sistema — sin sesgo de implementación. |
| Ignora deliberadamente | Hardware, software, bases de datos, departamentos, manual vs. automatizado, formatos de archivo, cronometraje. |
| Se utiliza en | Análisis de requisitos y modelado empresarial. |
Compare esto Lógico diagrama de flujo de datos (DFD) de membresía con el Físico que está directamente debajo. Mismo sistema, mismo nivel — pero el Lógico no nombra tecnologías ni departamentos específicos, solo actividades empresariales y conceptuales almacenes de datos:

digraph DFD_Logical {
graph [
rankdir = LR
splines = true
overlap = false
nodesep = 0.5
ranksep = 0.8
fontname = "Helvetica,Arial,sans-serif"
fontsize = 12
label = "DFD Lógico — Qué hace el sistema (sin sesgo de implementación)"
labelloc = t
]
node [
fontname = "Helvetica,Arial,sans-serif"
fontsize = 11
penwidth = 1.5
]
node [shape = box, style = "filled", fillcolor = "#E1F5FE", color = "#0288D1"]
Customer; Staff;
subgraph cluster_SystemBoundary {
label = "Sistema de Membresía (Lógico)";
fontname = "Helvetica,Arial,sans-serif; bold"
fontsize = 14
color = "#757575"
style = "dashed,rounded"
bgcolor = "#FAFAFA"
margin = 20
node [shape = circle, style = "filled", fillcolor = "#E8F5E9", color = "#388E3C", fixedsize = true, width = 1.4]
P1 [label="1.0nRegistrarnMiembro"];
P2 [label="2.0nEmitirnRenovación"];
node [shape = record, style = "filled", fillcolor = "#FFF9C4", color = "#FBC02D", fixedsize = false]
MemberDS [label="{ <id> D1 | Registros de Miembros }"];
}
edge [
fontname = "Helvetica,Arial,sans-serif"
fontsize = 9
color = "#555555"
arrowsize = 0.8
]
Customer -> P1 [label="Solicitudnde Membresía"];
Staff -> P2 [label="Solicitudnde Renovación"];
P1 -> MemberDS [label="AgregarnMiembro"];
P2 -> MemberDS [label="Actualizar &nLeer Registros", dir=both];
P2 -> Customer [label="Avisonde Renovación"];
}
3.2 DFD Físico — Cómo se implementa el Sistema
| Aspecto | Detalle |
|---|---|
| Enfoque | La realización concreta del modelo lógico: tecnologías específicas, nombres de archivos / bases de datos, personas, departamentos, hardware, cronometraje, protocolos. |
| Incluye | Nombres de DBMS y esquemas, colas de mensajes, APIs y protocolos (HTTPS, JSON, JDBC, JMS), personas y departamentos, opciones de automatización. |
| Utilizado en | Diseño del sistema y planificación de la implementación. |
El mismo sistema de membresía, ahora como un DFD físico — observe que el proceso 1.0 se convierte en un Servicio de Registro (Servidor), el almacén de datos se convierte en MySQL members_db, una Cola de Correos aparece, y los flujos se etiquetan con protocolos concretos:

digraph DFD_Physical {
graph [
rankdir = LR
splines = true
overlap = false
nodesep = 0.5
ranksep = 0.8
fontname = "Helvetica,Arial,sans-serif"
fontsize = 12
label = "DFD físico — Cómo se implementa el sistema (tecnologías y departamentos)"
labelloc = t
]
node [
fontname = "Helvetica,Arial,sans-serif"
fontsize = 11
penwidth = 1.5
]
node [shape = box, style = "filled", fillcolor = "#E1F5FE", color = "#0288D1"]
CustomerWeb [label="ClientenPortal Web"];
FrontOffice [label="OficinanFrontal"];
subgraph cluster_SystemBoundary {
label = "Sistema de Membresía (Físico)";
fontname = "Helvetica,Arial,sans-serif; bold"
fontsize = 14
color = "#757575"
style = "dashed,rounded"
bgcolor = "#FAFAFA"
margin = 20
node [shape = circle, style = "filled", fillcolor = "#E8F5E9", color = "#388E3C", fixedsize = true, width = 1.5]
SRV [label="RegistronServicion(Servidor)"];
node [shape = record, style = "filled", fillcolor = "#FFF9C4", color = "#FBC02D", fixedsize = false]
MySQLDS [label="{ <id> D1 | MySQLnmembers_db }"];
QueueDS [label="{ <id> D2 | Colande Correos }"];
}
edge [
fontname = "Helvetica,Arial,sans-serif"
fontsize = 9
color = "#555555"
arrowsize = 0.8
]
CustomerWeb -> SRV [label="HTTPS POSTn/registern(JSON)"];
FrontOffice -> SRV [label="Aplicación de escritorionAPI Login"];
SRV -> MySQLDS [label="JDBC Insertn& Select Txn", dir=both];
SRV -> QueueDS [label="JMSnMensaje"];
SRV -> CustomerWeb [label="HTTP 200nemail de bienvenida"];
}
Conclusión: Un proyecto maduro produce DFDs lógicos primero (Contexto hasta el Nivel 2) durante la recopilación de requisitos para que las partes interesadas puedan verificar la corrección del comportamiento sin ruido técnico, y luego deriva los DFDs físicos a partir de ellos durante el diseño — cuando se acuerda el «qué», el «cómo» puede añadirse en capas. Los niveles permanecen paralelos: su Nivel Físico 1 refleja su Nivel Lógico 1, enriquecido con detalles de implementación.
4. Mapeo de los niveles DFD a la abstracción del diagrama de clases
Si ya piensa en términos de abstracción de diagrama de clases, aquí hay una aproximación (y útil pero imperfecto) puente:
| Noción de Diagrama de Clases | ≈ Equivalente DFD |
|---|---|
| Conceptual Diagrama de Clases (comprensión a nivel empresarial) | Diagrama de Contexto o DFD Lógico de Nivel 1 |
| Lógico Diagrama de Clases (especificación funcional detallada) | DFD Lógico de Nivel 2+ |
| Físico / Implementación Diagrama de Clases (diseño específico de tecnología) | DFD Físico |
Aviso: Este mapeo es una comodidad del modelo mental, no una equivalencia formal. Como usted señaló, la autoritativa terminología en la literatura de análisis de sistemas (DeMarco, Gane & Sarson, Yourdon) es estrictamente Contexto, Nivel 1, Nivel 2… junto con la ortogonal Lógico/Físico distinción.
5. Las Reglas Críticas de Calidad de los DFD
Estas son las invariantes que separan un DFD profesional y equilibrado de uno descuidado:

-
Disciplina de nomenclatura. Cada proceso tiene un verbo + un sustantivo, está numerado, y la numeración forma un árbol estricto (
0→1.0…4.0→2.1…2.3). Cada almacén de datos está numeradoD1,D2, … Cada flujo tiene una etiqueta descriptiva. -
Equilibrio (consistencia entre niveles). Las entradas y salidas de un proceso padre deben coincidir exactamente las entradas y salidas combinadas de sus procesos hijos. Si el proceso
2.0recibePedido válidoy devuelveStock confirmado, entonces el diagrama de Nivel 2 que descompone2.0debe aceptarPedido válidoy debe producirStock confirmado— ni más, ni menos. Esta es la regla más importante al descomponer. -
No hay flujos directos de entidad a entidad.Los datos siempre fluyen a travésun proceso. Las entidades externas nunca se conectan directamente entre sí ni con los almacenes de datos.
-
No hay flujos directos de entidad a almacén.Las entidades externas interactúan con los almacenes únicamente a través de un proceso (en la convención de DeMarco/Yourdon, esto es una regla estricta).
-
El acceso bidireccional es un solo borde.Cuando dos elementos intercambian datos en ambas direcciones (típico en los almacenes de datos), dibuje un único flechacon
dir=bothy una etiqueta combinada ("Actualizar y consultar"), no dos flechas unidireccionales separadas: esto mantiene el diagrama limpio y legible. -
Deténgase en las primitivas funcionales.Descomponga solo hasta donde sea necesario; los procesos terminales deben poder describirse en unas pocas líneas de pseudocódigo.
6. Convenciones visuales utilizadas en estos diagramas
Todos los ejemplos anteriores siguen el estilo moderno estándar de DFD que se renderiza limpiamente en Graphviz:
-
Entidades externas — cajas de color azul claro con bordes azules (
#E1F5FE/#0288D1). -
Procesos — círculos verdes con bordes verdes (
#E8F5E9/#388E3C), numerado y nombrado con un verbo. -
Almacenes de datos — barras amarillas de estilo registro (
#FFF9C4/#FBC02D) etiquetado con ID + nombre (D2 | Inventario). -
Límite del sistema — un contenedor (agrupación) discontinuo y redondeado con un fondo claro (
#FAFAFA) y borde gris (#757575). -
Bordes — gris medio (
#555555), puntas de flecha pequeñas, enrutamiento alineado al eje a través delpuntomotor.
7. Lista de verificación antes de presentar un DFD
Utilice esto como un filtro de auto-revisión antes de considerar cualquier DFD como terminado:
-
¿Está el nivel claramente indicado (Contexto / Nivel n)? ¿Es el árbol de numeración consistente con el padre?
-
¿Se utilizan correctamente los cuatro tipos de símbolos, con los patrones de nomenclatura adecuados?
-
¿Está el diagrama equilibrado ¿contra su padre (los flujos de entrada/salida coinciden exactamente)?
-
¿Todos los flujos están etiquetados con descriptores de datos significativos?
-
¿Se fusionan los flujos bidireccionales de almacén/proveedor en un solo
dir=ambosaristas? -
¿Las entidades de límite y externas están libres de flujos directos entidad↔entidad / entidad↔almacén?
-
¿Cada proceso hoja califica como un primitivo funcional?
8. Resumen
-
Jerarquía = Niveles. Contexto (Nivel 0) → Nivel 1 → Nivel 2 → … Cada nivel descompone un proceso en subprocesos más detallados hasta primitivos funcionales se alcanzan.
-
Intención = Lógico vs Físico. Los DFDs lógicos responden qué; los DFDs físicos responden cómo. Los dos ejes son ortogonales — cada nivel puede dibujarse de cualquiera de las dos formas.
-
No llame a los niveles de DFD «conceptual/lógico/físico». Esos son términos de modelos de clases. En el análisis formal de sistemas (DeMarco, Gane & Sarson, Yourdon), el vocabulario correcto es Contexto / Nivel 1 / Nivel 2 más la Lógico/Físico distinción.
-
Mejor práctica: construya DFDs lógicos a través de los Niveles 0–2 durante el análisis para fijar los requisitos, y luego derivar Diagramas de Flujo de Datos Físicosdurante el diseño para planificar la implementación.
Los cuatro diagramas de Graphviz anteriores («Contexto, Nivel 1, Nivel 2 y el par Lógico/Físico) demuestran la progresión completa. Cada uno se genera directamente desde los bloques de código: puede copiar cualquiera de ellos en Graphviz para ver el resultado renderizado.
Conclusión
Referencias
- Dominando los Diagramas de Flujo de Datos: Del Dibujo Manual al Modelado Asistido por IA con Visual Paradigm: Una guía integral que cubre los fundamentos de los DFD, los pasos de creación manual y el innovador flujo de trabajo de modelado asistido por IA utilizando el Chatbot VP AI.
- Dominando los Diagramas de Flujo de Datos: Una Guía Integral de la Descomposición Top-Down Asistida por IA con Visual Paradigm: Esta entrada de blog profundiza en el uso de la IA de Visual Paradigm para la descomposición top-down, demostrando cómo generar DFDs de Nivel 1, 2 y 3 de manera conversacional.
- Dominando los Diagramas de Flujo de Datos con Visual Paradigm: Una Guía Paso a Paso: Una guía oficial que proporciona un tutorial práctico paso a paso sobre la creación de DFDs, comenzando con plantillas y utilizando ejemplos del mundo real como un sistema de compras en línea.
- Cómo Crear un DFD con Visual Paradigm Desktop: Una guía práctica centrada en la versión de escritorio, explicando cómo crear un proyecto, dibujar diagramas de contexto y de nivel 1, y utilizar la función de descomposición.
- Dominando los Niveles de Diagramas de Flujo de Datos y el Equilibrio: Un recurso que aborda el concepto crítico de equilibrar los diagramas de flujo de datos en diferentes niveles para garantizar la consistencia y precisión en el análisis de sistemas.
- Guía para Principiantes de Diagramas de Flujo de Datos (DFD) con Visual Paradigm Online: Una guía amigable para principiantes que introduce los conceptos de DFD y proporciona un tutorial simple paso a paso para crear diagramas utilizando la versión en línea de Visual Paradigm.
- Ejemplos de Diagramas de Flujo de Datos: Una página de recursos valiosa que ofrece una colección de ejemplos de DFD para diversos sistemas como un sistema de pedidos de comida, una aplicación de supermercado y gestión de inventario, utilizables como modelos de referencia.




