¿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 informáticas que se diferencia de 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 utilizan un sistema de mensajería externo para comunicarse. . En la programación basada en flujo, la atención se centra en la transformación de 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 paso 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 de Internet y basadas en la web, como servidores de comercio electrónico.

Uno de los bloques de construcción fundamentales de la programación basada en flujo es la idea de un nodo, proceso o módulo aislado. Esto se puede considerar como una parte del código fuente del programa que no tiene ninguna dependencia directa de ningún otro módulo, lo que hace que el módulo sea una parte independiente de la aplicación a la que se puede llamar siempre que 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, lo que permite 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 varias direcciones IP en un flujo que se alimenta constantemente al puerto. Un solo puerto puede relacionarse con varias instancias de un solo componente, lo que hace que la estructura sea fácil de usar en un sistema distribuido o para procesamiento en paralelo.

Los datos contenidos en un paquete de información se manipulan 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 administra el flujo del programa mediante el uso de búferes que están vinculados a los puertos. Básicamente, el sistema de mensajería no tiene conocimiento de lo que están haciendo o están haciendo los módulos y no tiene una preocupación real sobre qué datos están contenidos dentro de las IP que los módulos están procesando.

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 a equipos. 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.