Sistemas Reactivos

PEGA CLIP

4

PUBLIC

25 de abril de 2012

Sistemas Reactivos


El término sistema reactivo fue introducido en 1985 por David Harel y Amir Pnueli
[HP85] 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 entra 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.

Sistemas reactivos: Interaccionan continuamente con el entorno, reaccionando a los estímulos que éste genera. El entorno carece de capacidades de sincronización.

Características de los sistemas reactivos

En general, todos los sistemas reactivos comparten una serie de características comunes, independientemente de la aplicación final a la que se destinen. Estas particularidades habrá que tenerlas en cuenta a la hora de especificar sistemas reactivos. Entre estas características podemos citar las siguientes:

Paralelismo: los sistemas reactivos se ejecutan en paralelo con otros sistemas (lo que genéricamente venimos denominando entorno). Además, ellos mismos, posiblemente, estén constituidos por una serie de módulos funcionando en paralelo.
Esto es muy habitual, como veremos, dado que simplifica notablemente el diseño de sistemas la posibilidad de dividirlo en un conjunto determinado de módulos que funcionan en paralelo y que cooperan para obtener el comportamiento deseado.

Condicionantes temporales: como ya hemos dicho antes, 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, dado que no será igual para un sistema en tiempo real que para otro tipo de sistemas.
Independientemente del tipo de sistema que se trate, los condicionantes temporales (los que sean en cada caso) son una cuestión importante a tener en cuenta a la hora de desarrollar y de verificar la corrección del sistema.

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). Esto hace que sean necesarios métodos de desarrollo y verificación rigurosos para poder detectar antes de su implantación cualquier posible anomalía que pueda darse.

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 y con la paradoja de Brock-Ackermann antes vista, pero en realidad no es así, si consideramos en todo caso el tiempo como una entrada más. De todas maneras, esta característica hay que considerarla con su justo valor: los sistemas reactivos deterministas son más fáciles de especificar, depurar y analizar que los no deterministas. Sin embargo, como veremos, algunas técnicas de especificación de sistemas reactivos aceptan el no-determinismo como una característica más (aunque no sea deseable) de los sistemas reactivos.

Aplicaciones:
  • 1.      Secuenciadores de tareas. Son habituales estas aplicaciones en interfaces hombre-máquina, en tableros de control y en sistemas de fabricación integrada (CIM). Todos estos sistemas tienen que manejar secuencias de órdenes de entrada (pulsaciones de teclas y movimientos de ratón, por ejemplo) y efectuar las acciones requeridas para cumplimentar dichas órdenes.

  • 2.      Protocolos de comunicaciones de cualquier tipo de red, en particular en redes de área local en tiempo real, donde los requisitos temporales son más estrictos. Al igual que en el caso anterior, la complejidad combinacional del problema es importante y es necesario un método de desarrollo adecuado para diseñar e implementar protocolos de comunicaciones.

  • 3.      Proceso de señal de bajo nivel. El tratamiento de señales tradicionalmente se ha realizado mediante filtros analógicos. Hoy en día se utiliza también el procesamiento digital de esas señales, que permite, además, un filtrado adaptativo. En este caso de uso es fundamental el rendimiento, por lo que es deseable manejar la arquitectura y el algoritmo de filtrado dentro del mismo marco de trabajo.

  • 4.      Control de procesos industriales. En este ámbito hay controlar una proceso industrial, lo que conlleva gobernar distintos actuadores (motores, interruptores, etc.) en función de distintos parámetros de entrada (sensores, interrupciones, etc.). Hay que buscar una forma de desarrollo de estos sistemas que permita una fácil especificación y que garantice que la implementación cumple la especificación dada.

  • 5.      Sistemas de procesamiento de señales complejas, como señales de radar o de sonar. En este caso no sólo hay que tratar con el proceso de las señales en sí, sino que hay un procesamiento añadido como puede ser compresión de datos, fusión de datos, funciones de decisión, etc. Son sistemas que exigen una computación intensiva donde se generan y combinan entre sí múltiples eventos para lanzar nuevos cálculos. El tema fundamental en este caso es la velocidad, para poder llevar a cabo el procesamiento en tiempo real.

  • 6.      Sistemas complejos de vigilancia y control, como los encargados del gobierno de aviones o de otros sistemas de transporte, de controlar sistemas industriales particularmente peligrosos (como centrales nucleares), etc. Este tipo de sistemas pueden llegar a constar de miles de sensores, cientos de actuadores y decenas de ordenadores interconectados. Suelen emplearse sistemas altamente distribuidos. La seguridad es un aspecto crítico en estos sistemas.
  • 7.  Sistemas de Orden-Control-Comunicación. Conocidos como sistemas C3 (Command-Control-Communicate) y a veces como sistemas C3 I (por inteligentes), se encuentran en campos diversos como pueden ser sistemas militares, sistemas de control de tráfico aéreo, grandes sistemas de transporte, etc.
  
Comparar los sistemas reactivos y sistemas Transformacional, ejemplos de cada uno.

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 entra 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. Los sistemas reactivos así considerados se encuentra por todas partes: sistemas de control industrial (su principal ámbito de aplicación), sistemas de comunicaciones, sistemas de software interactivo (como los interfaces hombremáquina), etc. La abstracción que se puede hacer de un sistema reactivo podría ser “cactus negro” (en contraposición con las “cajas negras” de los sistemas transformacionales), según indica Pnueli en [HP85], para enfatizar el protagonismo que tienen los canales de entrada/salida del sistema (las “espinas” del cactus).


Compartí este post con tus amigos!

...o también puedes seguir el blog en:

0 comentarios:

 

©2011 WimodProducts | FuuTheme diseñado por Fuutec | Ir arriba ↑

src='http://whos.amung.us/cwidget/aldo123456/ffffffffffff/' width='1'/>