Tesis:

eJason : a Framework for Distributed and Fault-Tolerant Multi-Agent Systems


  • Autor: FERNÁNDEZ DÍAZ, Álvaro

  • Título: eJason : a Framework for Distributed and Fault-Tolerant Multi-Agent Systems

  • Fecha: 2018

  • Materia: Sin materia definida

  • Escuela: E.T.S DE INGENIEROS INFORMÁTICOS

  • Departamentos: LENGUAJES Y SISTEMAS INFORMATICOS E INGENIERIA DE SOFTWARE

  • Acceso electrónico: http://oa.upm.es/50369/

  • Director/a 1º: BENAC EARLE, Clara
  • Director/a 2º: FREDLUND, Lars-Ake

  • Resumen: This thesis elaborates on the synergies between the agent-oriented programming language Jason and the general-purpose programming language Erlang. These synergies are leveraged by the novel Distributed and Fault-Tolerant Multi-Agent Systems Development Framework eJason, which is the core contribution of this thesis work. The syntax of the programming language Jason incorporates high-level abstractions that enable the programmer to efficiently manage the different facets of software agents in general, and, more specifically, the building blocks of the Belief-Desire-Intention architecture. Moreover, the formal semantics of this programming language are available and well-studied. However, Jason lacks native support for the distribution of multi-agent systems across several computers and built-in fault-tolerance mechanisms for the detection and recovery of the system from faults that incapacitate an agent. The programming language Erlang provides an excellent support for the development of distributed and highly-concurrent software. Erlang provides the programmer with constructs to implement fault-detection and fault-recovery techniques that are fully-supported by the Erlang runtime system. However, Erlang lacks high-level abstractions for the development of multi-agent systems as well as any constructs related to building blocks of the Belief-Desire-Intention software architecture. Building on the strengths of Jason and Erlang, while removing their weaknesses listed above, the multi-agent system development framework eJason brings-in several relevant contributions. The first of the contributions of eJason includes a set of language extensions to Jason that enhance the control of the programmer on the behaviour of the Jason agents. These extensions tackle the negative impact of several race conditions inherent to the concurrent execution of the set of intentions within an agent’s mental state. The second contribution of eJason is a distribution schema for the Jason agents, which enables their distribution across several computers. This distribution schema is programmer-transparent and is seamlessly integrated into the syntax of Jason. The third contribution of eJason is embodied by two fault-tolerance mechanisms that are inspired by those of Erlang but which improve them in several ways. The monitoring mechanism of eJason enables the detection of different agent faults while the supervision mechanism enables the automatic execution of different fault recovery actions. The fourth contribution is a formalisation of the semantics of eJason. This formalisation builds on that of Jason, while providing a wider perspective that now includes the whole multi-agent system. Finally, the last contribution of eJason is a free and open-source implementation of an interpreter of eJason. This interpreter enables the validation of the benefits introduced by eJason, as is described by several examples and use cases throughout the thesis document. ----------RESUMEN---------- La presente tesis doctoral se fundamenta en el aprovechamiento de las sinergias existentes entre el lenguaje de programación para sistemas de agentes Jason y el lenguaje de programación de propósito general Erlang. El "Entorno de Trabajo para el Desarrollo de Sistemas Multi-Agente Distribuidos y Tolerantes a Fallos" conocido como eJason, y que representa la contribución novedosa principal de este proyecto de tesis doctoral, realiza el máximo aprovechamiento de las mencionadas sinergias. El lenguaje de programación Jason incorpora en su sintaxis diversas abstracciones de alto nivel que permiten realizar un uso eficiente, por parte del programador, de los diferentes aspectos que caracterizan a los agentes software en general. De manera más específica, estas abstracciones facilitan el manejo de los componentes esenciales de la arquitectura software conocida como BDI (de sus siglas en inglés Beliefs, Desires, Intentions), es decir, del conjunto de creencias, deseos e intenciones de un agente. La semántica formal de Jason se encuentra disponible y ha sido ampliamente estudiada, lo que proporciona una descripción precisa del comportamiento esperado de los programas desarrollados con Jason. Sin embargo, Jason carece de soporte nativo para la distribución de los distintos agentes en diferentes computadores. Este lenguaje carece, además, de mecanismos nativos para la detección y resolución de aquellos fallos que, aún incapacitando a un único agente, afecten negativamente al conjunto del sistema. El lenguaje de programación Erlang proporciona un soporte excelente al desarrollo de software distribuido y altamente concurrente. Erlang le proporciona al programador directivas para la implementación de mecanismos de detección y resolución de fallos que cuentan con el soporte completo del entorno de ejecución. El lenguaje de programación Erlang carece de abstracciones de alto nivel para el desarrollo de sistemas multi-agente así como cualquier mecanismo nativo para el manejo de los componentes de la arquitectura BDI. El entorno de desarrollo eJason, aprovechando las fortalezas de Jason y Erlang, y eliminando sus debilidades y carencias anteriormente mencionadas, proporciona y se fundamenta en distintas contribuciones relevantes. La primera contribución de eJason se encuentra representada por una serie de extensiones al lenguaje de programación Jason cuyo objetivo es la mejora en el control del comportamiento de los agentes por parte del programador. Estas extensiones minimizan o eliminan los efectos adversos de las distintas condiciones de carrera derivadas de la multiplicidad de focos de atención permitida por la semántica de Jason. La segunda contribución de eJason es la provisión de un esquema de distribución propio para los agentes Jason que posibilita su distribución en diferentes computadores. Este esquema de distribución es transparente para el programador y su integración en la sintaxis de Jason no es disruptiva. La tercera contribución de eJason está representada por dos mecanismos de tolerancia a fallos inspirados por aquéllos de Erlang pero que los superan en diversos aspectos. El mecanismo de monitorización de eJason permite la detección de diferentes fallos, mientras que el mecanismo de supervisión posibilita la corrección automatizada de diversos fallos. La cuarta contribución de eJason es una formalización de su semántica. Esta formalización extiende la de Jason proporcionando, a su vez, una perspectiva más amplia que permite especificar no sólo el comportamiento de un único agente, sino aquél del sistema multi-agente en su totalidad. Finalmente, la contribución última de eJason es un intérprete gratuito y de código abierto para este lenguaje. Este intérprete permite validar los beneficios introducidos por eJason, como se describe en diversos ejemplos y casos de uso a lo largo del documento de tesis.