1. 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
2. Desarrollo de agentes con el IDK
El IDK proporciona soporte a la metodología
INGENIAS
Metodología: notación + herramientas + proceso +
paradigma
UCM, 2003 Agentes Software 2
3. IDK: Generación de código
modelo código
modelo código
SMA de agente
código
Generador
modelo
SMA de agente
de agente
SMA (XML)
Completar/Revisar
por el programador
plantilla de código
plantilla de código
plantilla de código con XML
marcado
marcado con XML
marcado con XML
Específicos de una plataforma
Plataforma de agentes
(deben reunir los elementos de los metamodelos)
Ingeniería del Software Orientada a Agentes 3
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 4
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 5
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 6
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 7
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:hlocalIDK2.7workspaceMiProyecto
Dentro de este proyecto se crea automáticamente
una especificación ya preconfigurada en la carpeta
spec
Ingeniería del Software Orientada a Agentes 8
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 9
10. Abriendo la especificación
Se elige la opción File -> Load
Vamos a la carpeta c:hlocalIDK2.7workspaceMiProyectospec
Se abre el fichero specification.xml
Ingeniería del Software Orientada a Agentes 10
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 11
12. Creando un agente
Crear un diagrama de agentes
Ingeniería del Software Orientada a Agentes 12
13. Definiendo la tarea
Definir la tarea con un diagrama de
tareas/objetivos
Ingeniería del Software Orientada a Agentes 13
14. Asociando código a la tarea
Definir un diagrama de componentes
Ingeniería del Software Orientada a Agentes 14
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 15
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 16
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 del Software Orientada a Agentes
Ingeniería 17
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 18
19. Definiendo un despliegue
Crear un diagrama de despliegue
Ingeniería del Software Orientada a Agentes 19
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 21
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 22
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 23
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 24
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 25
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 26
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 27
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 28
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
Ingeniería del Software Orientada a Agentes 29