Post on 08-Jul-2015
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
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
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
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
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
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
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
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
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
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
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
Ingeniería del Software Orientada a Agentes 12
Creando un agente
Crear un diagrama de agentes
Ingeniería del Software Orientada a Agentes 13
Definiendo la tarea
Definir la tarea con un diagrama de tareas/objetivos
Ingeniería del Software Orientada a Agentes 14
Asociando código a la tarea
Definir un diagrama de componentes
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
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
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
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
Ingeniería del Software Orientada a Agentes 19
Definiendo un despliegue
Crear un diagrama de despliegue
Ingeniería del Software Orientada a Agentes 20
Definiendo un despliegue
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
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
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
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
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
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
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
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
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