Ingenieria de Software Orientada a Agentes: Estado del Arte

Anuncio
Ingeniería de Software Orientada a Agentes: Estado del
Arte
Michael Wooldridg and Paolo Ciancarini
Resumen
En este artículo se argumenta que los agentes y los Sistemas Multiagentes son las
herramientas adecuadas para manejar la complejidad inherente a los sistemas de
software. Se hace una comparación entre agentes y objeto. Luego se examinan una
serie de prototipos propuestos para ingeniería de sistemas de agentes, incluyendo
metodologías para análisis y diseño orientado a agentes, métodos de verificación y
especificación formal para sistemas de agentes, y técnicas para implementar
especificaciones de agentes.
Introducción
La interacción es probablemente la característica más importante del software complejo.
Las arquitecturas de software que contienen muchos componentes interactuando
dinámicamente, cada uno con su propio hilo de control, e involucrándose en protocolos
de interacción complejos, son típicamente de ordenes de magnitud más complejas para
ingeniarlos correctamente y eficientemente, que aquellos que simplemente computan
una función de alguna entrada en un hilo de control.
En muchas aplicaciones de la vida real esta es la característica, por lo cual se han
desarrollado herramientas y técnicas para modelar, entender, e implementar sistemas en
los que las interacciones son la norma.
Desde los 80s los sistemas de software de agentes y sistemas Multiagentes han crecido
en lo que es una de las áreas más activas de investigación y desarrollo en la
computación. Una de las razones más importantes es la de los agentes como sistemas
autónomos, capaces de interactuar con otros agentes para satisfacer sus objetivos de
diseño.
El objetivo de este artículo es revisar el estado del arte en ingeniería de software
orientada a agentes. Se da un concepto de lo que son agentes y sistemas Multiagentes, y
se comenta la relación entre los agentes y los objetos (desde el punto de vista de OOP).
Luego se revisan algunas metodologías preliminares para ingeniería de sistemas
Multiagentes – las cuales proveen una aproximación estructural pero no matemática al
análisis y diseño de los sistemas de agentes, y que toman mucha de su inspiración de las
metodologías de análisis y diseño orientado a agentes y aproximaciones de ingeniería de
conocimiento. Además se comentan métodos formales para ingeniería de sistemas
Multiagentes.
Por último se discuten problemas, retos y aspectos que deben ser manejados si se espera
que los agentes logren su potencial como un paradigma de ingeniería de software.
Análisis y diseño de agentes
Las metodologías de desarrollo informales para el análisis y desarrollo de sistemas
basados en agentes pueden ser ampliamente divididos en dos grupos:

Las que tienen su inspiración en el desarrollo orientado a objetos, y extienden
metodologías orientadas a objetos existentes o las adaptan para los propósitos de
la Ingeniería de Software Orientada a Agentes.

Las que adaptan la ingeniería de conocimiento u otras técnicas.
Como ejemplos de la primera se tienen la AAII Methodology de Kinny et al, Gaia
de Wooldrige et al, Agent UML de Odell et al. Como representantes de la segunda
se tienen DESIRE de Treur et al, Cassiopeia de Collinot et al y una especificación
en el lenguaje Z realizada por Luck and d´Inverno.
Métodos Formales para AOSE
Una de las áreas de trabajo más activas en Ingeniería de Software Orientado a Agentes
ha sido el uso de métodos formales. Hablando de manera amplia, los métodos formales
juegan tres roles en la ingeniería de software:

Especificación de sistemas.

Programación de sistemas directamente.

Verificación de sistemas.
Conclusión
La ingeniería de Software Orientada a Agentes se encuentra en una etapa temprana de
su evolución. Las metodologías preliminares y herramientas para dar soporte al
desarrollo de sistemas de agentes están empezando a aparecer, pero lentamente. Según
el autor, estos son algunos de los obstáculos que se deben vencer para que la AOSE
alcance su potencial:

Poner en orden la relación de los agentes a otros paradigmas de software –
objetos en particular. Todavía no es claro como el desarrollo de sistemas de
agentes va a coexistir con otros paradigmas de software, como el desarrollo
orientado a objetos.

Metodologías orientadas a agentes: Aunque existen varias metodologías para el
análisis y diseño de sistemas basados en agentes, existe poco consenso entre
estas. No existe un acuerdo entre la clase de conceptos que estas metodologías
deberían sustentar. Además está la presencia de UML como el lenguaje de
modelado predominante pera sistemas orientados a objetos: las clases de
conceptos y notaciones soportadas por UML no son necesariamente las más
adecuadas para el desarrollo de sistemas orientados a agentes.

Ingeniería para sistemas abiertos. Los agentes son adecuados para sistemas
abiertos. En los mismos, es esencial poder reaccionar a eventos imprevistos,
aprovechando las oportunidades donde aparecen, y llegando a acuerdos
dinámicamente con componentes del sistema cuya presencia no pudo ser
predicha en el momento de diseño. Sin embargo, es difícil saber como
especificar estos sistemas; y aún menos saber como implementarlos. Se necesita
un mejor entendimiento de cómo ingeniar sistemas abiertos.

Ingeniería para escalabilidad. Se necesita un mejor entendimiento de cómo
ingeniar de manera segura y predecible sistemas que comprendan un número
masivo de agentes interactuando unos con otros para lograr su objetivo. Estos
sistemas estás propensos a comportamientos caóticos e inestables,
retroalimentación, etc., y pueden caer ante comportamientos maliciosos tales
como los virus.
Descargar