La arquitectura de flujo de datos es una serie de funciones en software de computadora donde cada paso es generado automáticamente por las acciones de una función anterior. También se conoce como programación reactiva. Como cada función está programada explícitamente, no es necesario volver a calcular los valores de una variable cuando cambia otra variable. Esto habilita la función de operaciones de flujo de datos en paralelo, ya que los recursos no se centran en ajustarse a las necesidades de cada nuevo comando.
El concepto de arquitectura de flujo de datos se ha comparado con una línea de montaje de fábrica. Al igual que con ese tipo de sistema, cada paquete de información se optimiza individualmente para obtener el máximo rendimiento y, al mismo tiempo, se integra en todo el sistema. La información se organiza en una especie de tubería, donde avanza de una función a otra. Una forma significativa en la que se diferencia el sistema es que cada paquete contiene la información necesaria para conectarlo al siguiente eslabón de la cadena de flujo de datos.
Como la arquitectura de flujo de datos se considera una forma bastante simple de programación, a menudo la utilizan programadores menos experimentados. Con este método, un sistema se puede programar un paquete a la vez. Algunos programadores también se sienten atraídos por la arquitectura de flujo de datos porque es una forma sencilla de organizar grupos complejos de información.
Si bien la arquitectura de flujo de datos es relativamente fácil de usar, también tiene algunas limitaciones. Con paquetes dedicados a tareas específicas, un sistema puede funcionar de manera eficiente, pero con solo una cierta cantidad de flexibilidad. Cada paquete se puede programar de manera diferente, pero si el sistema va a funcionar, debe seguir una ruta determinada. Dado que la arquitectura de flujo de datos resuelve muchos problemas inherentes al flujo de datos y la organización, muchos programadores intentarán utilizar sus conceptos básicos mientras realizan ajustes para manejar necesidades de programación más sofisticadas.
El concepto de arquitectura de flujo de datos es opuesto al estilo tradicional conocido como arquitectura de von Neumann. En este tipo de programación, hay una sección para cada función, en lugar de una serie de paquetes con información que permite varios tipos de funciones. Una diferencia principal con esta forma de programación es que no puede manejar procesos paralelos. El sistema lleva el nombre del científico informático John von Neumann, quien escribió sobre los conceptos básicos del concepto en un artículo de 1945. A pesar de sus limitaciones, este es también un estilo de programación bastante simple y generalizado.