1
Encuentro Tecnológico Informática y Gestión
Ingeniería de Software Orientada a Agentes:
un ejemplo usando Tropos
Carlos Cares1,2
ccares @ lsi.upc.edu
Temuco, Chile, 17-18 Octubre 2007
1
2
Departamento de Ingeniería de Sistemas
Universidad de La Frontera
Departament de Llenguatges i Sistemes Informatics
Universitat Politécnica de Catalunya
Exposición Invitada
Ingeniería de Software Orientada a Agentes
Ingeniería de Software
“La ingeniería de software es la disciplina de ingeniería relacionada con todos los aspectos de la producción de software”
Sommerville I. Software Engineering. 7th ed: Addison Wesley, 2004.
2
Ingeniería de Software Orientada a Agentes
Ingeniería de Software
Incluye:1. Levantamiento de Requerimientos
2. Análisis de Requerimientos
3. Diseño de Solución Organizacional
4. Diseño de Solución de Software
5. Diseño de Software
6. Implementación
7. Prueba (Testing)
8. Mantención
Ingeniería de Software Orientada a Agentes
Ingeniería de Software
Requiere:
1. Representación y Seguimiento de un Proceso
(p.e. PERT, GANTT, Diagramas de Tarea UML)
2. Uno o varios Lenguajes de Diseño (p.e. Diagrama
de Clases UML, Diagrama Entidad – Relación,
3
Ingeniería de Software Orientada a Agentes
Ingeniería de Software Orientada a Agentes
Wooldridge M., Cincarani P. Agent-Oriented Software Engineering: The State of the Art. First International Workshop, AOSE 2000, Limerick, Ireland, June 10,
2000. LNCS 2001; vol 1957 p.1-28.
Es cuando se realizan las tareas de la
ingeniería de software usando como clave
de abstracción el concepto de agente
Ingeniería de Software Orientada a Agentes
El Concepto de Agente
Un agente es una pieza de software que “disfruta” de propiedades como autonomía, reactividad, proactividady habilidades sociales.
4
Ingeniería de Software Orientada a Agentes
Agente (Autonomía)
Autonomía significa que el agente tiene un estado interno que no es accedible a otros (agentes o humanos). El agente define su actuar de acuerdo a este estado interno.
Ingeniería de Software Orientada a Agentes
Agente (Autonomía)
Reactividad se basa en el supuesto que el agente se encuentra en un ambiente y tiene la habilidad de reaccionar a los cambios que ocurren en él.
5
Ingeniería de Software Orientada a Agentes
Agente (Proactividad)
Proactividad significa que un agente tiene sus propios objetivos y, por lo tanto, puede tomar las iniciativas acorde a las metas que tiene la intención de cumplir.
Ingeniería de Software Orientada a Agentes
Agente (Habilidad Social)
Habilidad Social es la característica que permite interactuar (con humanos o con otros agentes) y conformar actos de grupo ya sea para cooperar o negociar.
6
Ingeniería de Software Orientada a Agentes
Ingeniería de Software Orientada a Agentes
Requiere:
1. Representación y Seguimiento de un Proceso
2. Uno o varios Lenguajes de Diseño donde el concepto
clave de abstracción es el concepto de agente
Ingeniería de Software Orientada a Agentes
TROPOS Una Metodología Orientada a Agentes
Etapas
t
ActorSocial
Nuevo Sistema
Componentes
Agentes
Etapa temprana deRequerimientos
Etapa tardía deRequerimientos
Diseño de la Arquitectura
Diseño Detallado
Implemen-tación
7
Ingeniería de Software Orientada a Agentes
TROPOS Una Metodología Orientada a Agentes
Lenguaje de Modelación
Actores
Role
Position
Agent
Actor
Elementos Intencionales
Goal
Softgoall
Task
Resource
An actor and its boundary
Ingeniería de Software Orientada a Agentes
TROPOS Una Metodología Orientada a Agentes
Lenguaje de Modelación
Some Dependencies
Task-dependency Goal-dependency
Intentional Relationships
Means-end Contribution+ | ++ | - | --
Decomposition
Actor’s Relationships
is_a | is_part_of | instance_of | covers | plays | occupies
8
Ingeniería de Software Orientada a Agentes
Un ejemplo académico-didáctico
Primera Competencia en Sistemas Multiagente Basados
en Lógica Computacional del 2005: First CLIMA Contest(Computational Logic in MultiAgent-systems)
Principal Problema: Disminuir la distancia conceptual entre metodologías
orientada a agentes y la implementación de agentes
de software.
Problema para ejemplificar propuesta:Un conjunto de agentes recolectores de comida, jugando
diferentes roles, y cooperando para maximizar la comida
recolectada en un ambiente virtual
Ingeniería de Software Orientada a Agentes
Un ejemplo de ambiente
Una malla de
20 x 20
20
20
9
Ingeniería de Software Orientada a Agentes
Un ejemplo de ambiente
Comida
• Las celdas pueden
contener comida
• La comida es producida
por el ambiente
• La comida es posicionada
al azar
• Hay comida inicialmente
en el ambiente
Ingeniería de Software Orientada a Agentes
Un ejemplo de ambiente
Un depósito de comida
10
Ingeniería de Software Orientada a Agentes
Un ejemplo de ambiente
Agents
• Pueden “ver” la existencia de
comida sólo en su celda actual
• Pueden recoger la comida
• Pueden intercambiar
información si están en
posiciones adyacentes
• Deben juntar comida en el
depósito
Ingeniería de Software Orientada a Agentes
Etapa de Tardía de Requerimentos en TROPOS
11
Ingeniería de Software Orientada a Agentes
Etapa de Tardía de Requerimentos en TROPOS
Ingeniería de Software Orientada a Agentes
Diseño de la Arquitectura en TROPOS (Parcial)
12
Ingeniería de Software Orientada a Agentes
Ingeniería de Software Orientada a Agentes
Diseño Detallado en TROPOS (Parcial)
13
Ingeniería de Software Orientada a Agentes
Diseño Detallado en TROPOS (Parcial)
Ingeniería de Software Orientada a Agentes
Ejecución
DEMO
14
Ingeniería de Software Orientada a Agentes
Conclusiones del Programa
� Los agentes son autónomos y no tienen un control central.
Esto se refleja que dos o más agentes van tras una misma
pieza de comida. Incluso si ya ha sido recogida.
� Los agentes son reactivos, si van por una pieza de comida,
pero se encuentran con otra, recogen la actual y luego tratan
de alcanzar la original
� Los agentes son proactivos, buscan comida
autónomamente sin esperar información externa.
� Los agentes tienen habilidades sociales, comparten la
información y el estado parcial de la malla que ellos manejan
Ingeniería de Software Orientada a Agentes
Conclusiones Generales
� La complejidad de sistemas distribuidos puede ser
abordada desde la Ingeniería de Software Orientada a
Agentes y en particular usando Tropos.
� La metáfora de diseño de Tropos es útil tanto para el
diseño de software como para la representación de
sistemas organizacionales
� Tropos ofrece un lenguaje intuitivo para la modelación de
sistemas y organizaciones
� Es factible generar interpretaciones del Diseño Detallado
que permita la implementación de Sistemas Multi-Agente