¿Qué es la programación basada en flujo?
La programación basada en flujo es un método de diseño de aplicaciones y arquitecturas de computadora que es diferente a los métodos estructurados tradicionales de diseño de aplicaciones en que los datos están destinados a ser procesados en una secuencia por componentes que no están conectados entre sí y usan un sistema de mensajería externo para comunicarse . Bajo la programación basada en flujo, el enfoque se centra en transformar los datos mediante el uso de diferentes componentes, que esencialmente son módulos encapsulados o funciones que no tienen conexión directa con los otros componentes del programa. Cada uno de los flujos de datos y otros eventos es administrado por un sistema externo de transmisión de mensajes que no es diferente a algunos tipos de protocolos de red, en los que se entrega un paquete de información (IP) a un módulo mediante el uso de un puerto abstracto. Esta vista de diseño basada en componentes permite que una aplicación tenga módulos de código desarrollados por separado que solo necesitan responder a un mensaje del sistema, procesar una IP y luego liberar la IP nuevamente en el sistema. Este enfoque es útil en sistemas distribuidos, redes y con arquitecturas de programas basados en Internet y en la web, como servidores de comercio electrónico.
Uno de los componentes básicos de la programación basada en flujo es la idea de un nodo, proceso o módulo aislado. Esto puede considerarse como una parte del código fuente del programa que no tiene dependencias directas de ningún otro módulo, casi haciendo del módulo una parte independiente de la aplicación a la que se puede llamar cuando sea necesario. Cada componente no depende de ser llamado secuencialmente con otro componente, por lo que los componentes de una aplicación se pueden organizar y usar en cualquier orden, permitiendo que existan múltiples flujos de datos únicos a medida que la información se mueve a través del sistema.
Cada uno de los módulos individuales en la programación basada en flujo acepta datos a través de una interfaz abstracta conocida como puerto, que funciona de manera muy similar a un puerto de datos dentro de una red informática. Los datos se envían a un puerto a través de un búfer que tiene un tamaño limitado pero convierte múltiples IP en una secuencia que se alimenta constantemente al puerto. Un solo puerto puede relacionarse con varias instancias de un solo componente, haciendo que la estructura sea fácil de usar en un sistema distribuido o para procesamiento paralelo.
Los datos contenidos en un paquete de información se manejan a través de los módulos mediante un sistema de mensajería externo. En la programación basada en flujo, este sistema de mensajería está separado de los módulos y las IP y solo gestiona el flujo del programa mediante el uso de buffers vinculados a puertos. El sistema de mensajería básicamente no tiene conocimiento de lo que los módulos están o están haciendo y no tiene una preocupación real sobre qué datos están contenidos en las IP que procesan los módulos.
Las divisiones y la modularidad de cada uno de los componentes que constituyen las aplicaciones de programación basadas en flujo se prestan bien a procesos como la depuración y el desarrollo orientado al equipo. Gran parte del código está encapsulado, por lo que el código fuente tiene un alto potencial de reutilización. Esto también significa que actualizar o escalar una aplicación que usa programación basada en flujo puede ser más fácil que con una aplicación más integrada, porque el sistema de mensajería, los módulos y el sistema de puertos pueden cambiarse independientemente sin afectar el programa más grande.