Sistema reactivo

Sistemas reactivos
Información sobre la plantilla
Parte de la familia Inteligencia artificial
Sistema reactivo.jpeg

Sistema reactivo. Son aplicaciones críticas, en las cuales una falla o mal funcionamiento pueden acarrear consecuencias graves, tales como poner en juego vidas humanas y/o grandes inversiones económicas. El comportamiento de estos sistemas, llamados sistemas de tiempo real, no está determinado únicamente por la sucesión de acciones que se ejecutan, sino también por el momento en que las mismas ocurren y son procesadas. El tiempo de ejecución es el parámetro fundamental en el comportamiento de esta clase de sistemas y una gran parte, quizás la más importante, de los requerimientos de los mismos son temporales: tal acción debe ejecutarse en un lapso de tiempo determinado, el tiempo transcurrido entre dos eventos o señales debe estar acotado por un valor constante

Surgimiento

La generalización en el uso de sistemas que deben reaccionar rápidamente ante eventos generados por su entorno, como sistemas de control industrial, por ejemplo, hizo que a mediados de los años 80 se afrontara su desarrollo de una manera diferente al del resto de los sistemas. Apareció el concepto de sistema reactivo.

Dadas las especiales características que presentan este tipo de sistemas pronto se vio que las técnicas y herramientas de desarrollo que tradicionalmente se estaban utilizando para otro tipo de sistemas no eran adecuadas para el desarrollo de sistemas reactivos, sino que éstos precisaban de técnicas de desarrollo específicas.

Cada vez son más frecuentes las aplicaciones donde el tiempo juega un rol importante. Por ejemplo en: controladores de robots, de comandos de aviones, de pasos a nivel de trenes, de dispositivos electrónicos (o electro-mecánicos) y de procesos industriales automatizados, aplicaciones multimedia y de Internet, entre otras. En general éstas son aplicaciones críticas, en las cuales una falla o mal funcionamiento pueden acarrear consecuencias graves, tales como poner en juego vidas humanas y/o grandes inversiones económicas. El comportamiento de estos sistemas, llamados sistemas de tiempo real, no está determinado únicamente por la sucesión de acciones que se ejecutan, sino también por el momento en que las mismas ocurren y son procesadas. El tiempo de ejecución es el parámetro fundamental en el comportamiento de esta clase de sistemas y una gran parte, quizás la más importante, de los requerimientos de los mismos son temporales: tal acción debe ejecutarse en un lapso de tiempo determinado, el tiempo transcurrido entre dos eventos o señales debe estar acotado por un valor constante, si un tren está próximo a cruzar un paso a nivel y han pasado más de t unidades de tiempo desde que se activó una señal de acercamiento, la barrera debe estar baja, etc.

Sistemas reactivos y lenguajes reactivos

El término sistema reactivo fue introducido en 1985 por David Harel y Amir Pnueli para caracterizar un determinado tipo de sistema distinto de los tradicionales sistemas transformacionales.

Un sistema transformacional tiene una serie de entradas, las manipula y ofrece un conjunto determinado de salidas. Su comportamiento puede equipararse al de una función, dado que transforma los parámetros de entrada obteniendo unos de salida. A la hora de trabajar con sistemas transformacionales muchas veces se suelen comparar con cajas negras, donde no importa qué es lo que ocurre dentro, sino solamente la relación entre las entradas y las salidas. Un sistema reactivo, por contra, puede ofrecer distintas salidas para el mismo conjunto de entradas, en función de lo que haya ocurrido con anterioridad en el sistema. Se suelen definir como sistemas de computación que están continuamente interactuando con el entorno, de tal manera que tienen que actuar de inmediato ante los estímulos por éste producidos.

Podemos encontrar sistemas reactivos por todas partes, sistemas de control industrial, comunicaciones, sistemas de software interactivo, (como los interfaces hombre máquina), etc.

Programa reactivo

Se define de la misma manera que un sistema reactivo. Un reactivo se caracteriza por su permanente interacción con el entorno, reaccionando a las entradas provenientes de éste y enviándole al mismo las salidas oportunas. Los programas reactivos son el componente fundamental de los sistemas reactivos, obviamente.

El concepto de programación reactiva. Suele utilizarse para hacer referencia al proceso de realizar programas reactivos.

Estructura de un sistema reactivo

La estructura habitual de un programa reactivo. Suele constar de tres niveles:

  • Un interfaz con el entorno, que se encarga de recibir las entradas de éste y de generar las salidas. Realiza la transformación entre los eventos físicos que entiende el entorno y los eventos lógicos que entiende el resto del sistema.
  • Un núcleo reactivo que contiene la lógica del programa. Como su nombre indica es la parte más importante del sistema dado que se encarga de decidir en cada momento qué es lo que hay que hacer.
  • Una capa de manejo de datos, cuya misión es realizar el procesamiento de datos clásico a petición del núcleo.

Cuando se estudian los sistemas reactivos generalmente el estudio se restringe al núcleo reactivo, dado que las dos capas restantes son aspectos habituales en cualquier tipo de programa, y, de hecho, se acostumbran implementar en cualquier tipo de Lenguaje de programación, lenguaje imperativo tradicional.

Características de los sistemas reactivos

  • Paralelismo: los sistemas reactivos se ejecutan en paralelo con otros sistemas Además, ellos mismos, posiblemente, estén constituidos por una serie de módulos funcionando en paralelo.
  • Condicionantes temporales: los sistemas reactivos tienen que responder a los estímulos de entrada “instantáneamente”. La definición exacta del término instantáneo depende mucho del tipo de sistema a considerar.
  • Confiabilidad: La mayor parte de los sistemas reactivos se emplean en situaciones donde un error puede resultar crítico (un error en un sistema de control de tráfico aéreo no es algo que pueda permitirse.
  • Determinismo: otra de las características importantes que todo programa reactivo debe tener es el determinismo. Un programa o un sistema se considera determinista cuando produce las mismas secuencias de salida ante las mismas secuencias de entradas. Esto parece contradictorio con la propia definición de sistemas reactivos sin embargo no es así si consideramos en todo caso el tiempo como una entrada más.

Fuentes