Agente Hola Mundo

29
Desarrollo con el INGENIAS Development Kit Agente Hola Mundo Jorge J. Gómez Sanz Dep. de Sistemas Informáticos y Programación http://grasia.fdi.ucm.es

Transcript of Agente Hola Mundo

Page 1: Agente Hola Mundo

Desarrollo con el INGENIAS Development Kit

Agente Hola Mundo

Jorge J. Gómez Sanz

Dep. de Sistemas Informáticos y Programación

http://grasia.fdi.ucm.es

Page 2: Agente Hola Mundo

UCM, 2003 Agentes Software 2

Desarrollo de agentes con el IDK

El IDK proporciona soporte a la metodología INGENIAS Metodología: notación + herramientas + proceso +

paradigma

Page 3: Agente Hola Mundo

Ingeniería del Software Orientada a Agentes 3

modelo SMAmodelo

SMAmodelo SMA (XML)

Específicos de una plataforma(deben reunir los elementos de los metamodelos)

IDK: Generación de código

plantilla de códigomarcado con XML

Plataforma de agentes

plantilla de códigomarcado con XML

plantilla de códigomarcado con XML

Generadorcódigo

de agentecódigode agentecódigo

de agente

Completar/Revisarpor el programador

Page 4: Agente Hola Mundo

Ingeniería del Software Orientada a Agentes 4

Sobre el IDK

Se basa en un lenguaje para el modelado de SMA El lenguaje está expresado como un meta-modelo

El lenguaje es un superconjunto de lo que reconoce el generador de código No todos los elementos son reconocidos para generar el

SMA Se pueden construir múltiples generadores de

código

Page 5: Agente Hola Mundo

Ingeniería del Software Orientada a Agentes 5

Sobre el IDK

Está desarrollado en Java Compatible con versiones superiores a la 1.4

Usa la herramienta ant http://ant.apache.org

Está desarrollado con código GPL en su mayoría Librerías para gestión de gráficos Librerías para persistencia en XML Plataforma JADE

Los SMA que se generan con IAF están completos al 70% Falta introducir el código correspondiente a las tareas La coordinación y flujo de control está prácticamente

implementado

Page 6: Agente Hola Mundo

Ingeniería del Software Orientada a Agentes 6

Descargando el software

Ir a http://ingenias.sourceforge.net Saltar a la sección downloads Descargar la versión IDK 2.7 Descomprimir en la carpeta c:\hlocal Lanzar la consola de ant

Page 7: Agente Hola Mundo

Ingeniería del Software Orientada a Agentes 7

Estructura general

IDK editor. Contiene el editor visual de especificaciones. iaf. Contiene el generador de código workspace. Contiene los diferentes proyectos

Se recomienda crear los proyectos dentro de workspace, pero se pueden mantener fuera igualmente

Dentro de un proyecto hay, entre otras, las siguientes carpetas src. Contiene fuentes generados manualmente gensrc. Son los fuentes generados automáticamente permsrc. Fuentes generados automáticamente y no

regenerados spec. La especificación del problema

Page 8: Agente Hola Mundo

Ingeniería del Software Orientada a Agentes 8

Creando un proyecto

Se abre una consola de comandos Se abre la carpeta donde se ha instalado el IDK Se invoca la creación del proyecto con:

Esto creará un proyecto en c:\hlocal\IDK2.7\workspace\MiProyecto

Dentro de este proyecto se crea automáticamente una especificación ya preconfigurada en la carpeta spec

Page 9: Agente Hola Mundo

Ingeniería del Software Orientada a Agentes 9

Abriendo la especificación

Hay que ejecutar el editor con ant runide

La especificación se crea con el editor visual La creación del proyecto incluye la creación de una

especificación donde están configurados los parámetros de generación de código

Page 10: Agente Hola Mundo

Ingeniería del Software Orientada a Agentes 10

Abriendo la especificación

Se elige la opción File -> Load Vamos a la carpeta c:\hlocal\IDK2.7\workspace\MiProyecto\spec Se abre el fichero specification.xml

Page 11: Agente Hola Mundo

Ingeniería del Software Orientada a Agentes 11

Propiedades de la especificación

Definen parámetros para los módulos de generación

Ir a Project -> Properties

Page 12: Agente Hola Mundo

Ingeniería del Software Orientada a Agentes 12

Creando un agente

Crear un diagrama de agentes

Page 13: Agente Hola Mundo

Ingeniería del Software Orientada a Agentes 13

Definiendo la tarea

Definir la tarea con un diagrama de tareas/objetivos

Page 14: Agente Hola Mundo

Ingeniería del Software Orientada a Agentes 14

Asociando código a la tarea

Definir un diagrama de componentes

Page 15: Agente Hola Mundo

Ingeniería del Software Orientada a Agentes 15

El código de la tarea

Las tareas java contienen el código introducido dentro del componente

Page 16: Agente Hola Mundo

Ingeniería del Software Orientada a Agentes 16

Generando código

Seleccionar Modules -> Code Generator -> Ingenias Agent Framework generator -> Generate

La pestaña Logs mostrará el resultado de la generación

Page 17: Agente Hola Mundo

Ingeniería del Software Orientada a Agentes 17

Ejecutando

Ir a la carpeta del proyecto Abrir dos consolas aquí

En la primera consola ant runjade Se ejecuta sólo una vez

En la segunda consola ant run El mensaje aparecerá al final

Se verán dos GUIS El del adminstrador de JADE El del depurador del IAF

Page 18: Agente Hola Mundo

Ingeniería del Software Orientada a Agentes 18

Ejecutando II

Como alternativa, se puede abrir una única consola y escribir lo siguiente

ant runProdStandAlone

Con eso se lanza de forma conjunta un contenedor JADE y los agentes definidos No se lanza ningún GUI adicional Útil para despliegues en entornos de producción

Page 19: Agente Hola Mundo

Ingeniería del Software Orientada a Agentes 19

Definiendo un despliegue

Crear un diagrama de despliegue

Page 20: Agente Hola Mundo

Ingeniería del Software Orientada a Agentes 20

Definiendo un despliegue

Page 21: Agente Hola Mundo

Ingeniería del Software Orientada a Agentes 21

Ejecutando

Se regenera el código y se vuelve a ejecutar El número de opciones para ejecutar aumenta

Hay opciones para ejecutar el despliegue que acabamos de definir:

ant runDespliegueTresAgentes

Page 22: Agente Hola Mundo

Ingeniería del Software Orientada a Agentes 22

Integrando con Eclipse

La modificación de fuentes se puede hacer desde eclipse Creando un nuevo

proyecto JAVA desde los fuentes existentes

Page 23: Agente Hola Mundo

Ingeniería del Software Orientada a Agentes 23

Integrando con Eclipse

Las carpetas que deben configurarse como código fuente son gensrc, permsrc, y src Pulsar con el botón

derecho en una carpeta para ver la opción de agregar al build path

Definir la carpeta bin para los binarios que se generen

Page 24: Agente Hola Mundo

Ingeniería del Software Orientada a Agentes 24

Integrando con Eclipse

Ahora se puede trabajar como si se tratara de JAVA La carpeta gensrc no

debe modificarse, a menos que se alteren tareas

La carpeta permsrc puede modificarse. No se sobreescribirán lo modificado

La carpeta src está gestionada por completo por el usuario

Page 25: Agente Hola Mundo

Ingeniería del Software Orientada a Agentes 25

Modificando una tarea

Las tareas se generan en gensrc/ingenias/jade/components Buscar el nombre de la tarea en cuestión

Las modificaciones hay que copiarlas a mano en el editor

Page 26: Agente Hola Mundo

Ingeniería del Software Orientada a Agentes 26

Modificando una tarea

Si queremos modificar como en el ejemplo, hay que actualizar el cambio en el módulo

Page 27: Agente Hola Mundo

Ingeniería del Software Orientada a Agentes 27

Advertencia

Modificaciones diferentes de insertar código en la parte indicada de la tarea no pueden gestionarse en la versión actual del generador de código Por ejemplo, si se necesita meter un nuevo método en la

tarea• Si se necesita algo como esto, se recomienda crear estos

métodos en clases externas a la tarea

Si se usa eclipse, es frecuente que se incluyan automáticamente imports de clases que se vayan utilizando Los imports no se guardarán en el modelo

Page 28: Agente Hola Mundo

Ingeniería del Software Orientada a Agentes 28

Configurando Eclipse

Para evitar el uso de imports, hay que modificar las preferencias de Eclipse Menú Window-

>Preferences Para actualizar los

ficheros automáticamente con cada generación de código, hay que activar el refresco automático

Page 29: Agente Hola Mundo

Ingeniería del Software Orientada a Agentes 29

Sincronizando Código y especificación

Consiste en asegurar que todo lo que hay en la carpeta gensrc del proyecto es regenerable desde la especificación Toda modificación realizada al código de las tareas debe

poder subirse al editor Hay una forma más sencilla, pero requiere bajarse

la última versión del IDK. Para ello hay que tener el Subversion instalado. Mirar las transparencias del CodeUpdater