Ciclo de Vida

Los meta-modelos son una gran ayuda en el proceso de desarrollo de SMA, ya que determinan qué entidades tienen que existir y cómo deben conectarse. Desde el punto de vista de ingeniería, lo que interesa de los meta-modelos, además de servir de guía, es cómo pueden ayudar a estructurar el desarrollo de SMA. Para estudiar la aplicación de los meta-modelos a procesos de ingeniería, se han tomado los meta-modelos como lenguaje de especificación del SMA, de forma similar a los diagramas UML como especificación de un desarrollo orientado a objetos. Partiendo de este lenguaje se estudian qué actividades y productos son necesarios para generar los modelos que constituyen la especificación del sistema. Estas actividades y productos son relevantes porque se pueden integrarse dentro de un proceso de ingeniería del software. Las actividades se pueden distribuir entre los diferentes componentes de un equipo de trabajo, estableciendo qué productos se esperan de cada actividad y cómo se combinan.

Como aplicación práctica de esta idea, en este capítulo se plantea la integración con el Rational Unified Process (RUP) [Jacobson, Booch y Rumbaugh 00] en las fases de análisis y diseño. Se ha elegido este modelo de desarrollo de software por las dependencias observadas entre los distintos meta-modelos. Al ser iterativo e incremental, es más sencilla la generación de modelos, ya que se pueden elaborar poco poco aplicando los criterios de integración de resultados de los modelos para asegurar su coherencia. Además, el RUP toma la arquitectura del sistema como guía del desarrollo, del mismo modo que en el capítulo anterior se señalaba que el modelo de organización constituía la espina dorsal de la especificación del SMA. Por último, el RUP utiliza casos de uso para determinar la funcionalidad del sistema y diagramas de colaboración y secuencia (entre otros) para describirlos. Ya se ha comentado la utilidad de las interacciones como generalización de diagramas de colaboración y diagramas de secuencia. Así, lo más lógico es utilizar interacciones como especificación del comportamiento de los casos de uso.

En este capítulo se presenta la integración propuesta definiendo primero el nivel de detalle a alcanzar en cada una de las etapas del RUP y después las diferentes actividades requeridas para generar modelos. El nivel de detalle se obtiene a partir de la estimación hecha en el RUP para los modelos generados con UML. Las actividades se obtienen a partir de la experiencia obtenida en el desarrollo de casos prácticos, uno de los cuales se presenta en el siguiente capítulo, y se expresan con diagramas de actividades de UML. Como complemento al estudio de la generación de la especificación del sistema, en las dos últimas secciones se estudia cómo llevar a cabo la implementación del sistema de forma automatizada y qué elementos arquitectónicos deben existir en la arquitectura final del sistema.

1.1 Integración de los meta-modelos en el RUP

En el RUP, el esfuerzo del análisis y diseño se encuentra localizado en tres fases: inicio, elaboración y construcción. Dentro de cada fase se desarrollan las iteraciones (ciclos completos de desarrollo incluyendo análisis, diseño, implementación y pruebas) que construyen gradualmente el sistema. La Tabla 5 muestra el conjunto de actividades que según [Jacobson, Booch y Rumbaugh 00] se realizan en esas etapas. Como se puede apreciar, la principal diferencia en cada etapa consiste en el nivel de detalle alcanzado al final de las iteraciones que se realizan en cada una de ellas.

Tabla 5. Actividades a realizar en las etapas de inicio, elaboración y construcción.

La generación de modelos a partir de meta-modelos se guía por el conjunto de actividades que se presentarán a lo largo de este capítulo. Estas actividades no sustituyen las indicadas por el RUP, sino que se integran en el paradigma como complemento de los elementos de especificación ya existentes. De hecho, en las actividades de generación se mencionan técnicas convencionales refiriéndose a la utilización de notaciones como UML y modelos de desarrollo como RUP para atacar el diseño de elementos concretos.

Para orientar la integración, se plantean una serie de asociaciones entre elementos del RUP y elementos de los meta-modelos (ver Tabla 6 ).

Tabla 6. Asociaciones entre los elementos del RUP y entidades de MAS GRASIA

El agente, como la clase, define tipos. Lo que aquí se ha denominado agente en ejecución sería un objeto en el RUP. La organización equivale a la arquitectura en el RUP por su carácter estructurador. La organización da una visión global del sistema agrupando agentes, roles, recursos y aplicaciones y estableciendo su participación en los flujos de trabajo del SMA. El grupo es la unidad de estructuración utilizada en la organización. Su similitud con un subsistema se debe a que como éste, se utiliza para organizar elementos en unidades de abstracción mayores y define un conjunto de interfaces para interaccionar, los roles en este caso. La interacción, como se comentó en la introducción, se ve como una generalización de los diagramas de colaboración y secuencia. En el RUP, los diagramas de secuencia y colaboración se ven como escenarios que describen cada caso de uso. Por último, roles, tareas y los flujos de trabajo proporcionan el encapsulamiento de acciones que en el RUP dan métodos e interfaces.

Tabla 7. Adecuación de las etapas del RUP a los meta-modelos presentados.

Estas asociaciones marcan prioridades a la hora de profundizar en la generación de los distintos modelos (agente, organización, interacción, entorno, objetivo y tareas). De acuerdo con estas equivalencias y el proceso del RUP, la generación de modelos se estructuraría según indica la Tabla 7 . Las distintas iteraciones consistirían en seguir las actividades de las subsecciones anteriores, ya dispuestas con un inicio y final.

Las fases de pruebas e implementación no se han incluido. La fase de pruebas no tiene por qué ser diferente de la del software convencional. El software final ha de satisfacer casos de uso identificados, y como indica la tabla Tabla 7 , el concepto de casos de uso se mantiene. En cuanto a la implementación, se admite que el diseñador puede actuar como en diseños usuales, desarrollando elementos computacionales que hagan lo que está especificado. En este dominio, este enfoque no sería el más adecuado, ya que sería deseable aprovechar los desarrollos existentes, donde ya están resueltos los problemas de comunicación o implantación del control en los agentes. Por ello, se propone reutilizar el software de agentes personalizándolo con los modelos generados a partir de los meta-modelos de esta tesis. El proceso se denomina parametrización porque toma un software operativo y lo concreta con información extraída de los modelos generados. Desde este punto de vista, el software se ve como un resolutor general de problemas que ha de ser particularizado para el dominio actual. Aunque la parametrización puede realizarse manualmente, en este trabajo se propone automatizar en parte este proceso.

El proceso de parametrización implica ser capaz de recorrer los modelos generados y de poder extraer datos de ellos. Aunque la herramienta de soporte utilizada, METAEDIT+, no proporciona primitivas adecuadas para recorrer los modelos, permite traducir los modelos a otras representaciones. En este caso, se ha optado por traducir los modelos a términos PROLOG. Desde estos predicados, se ha diseñado un programa con el cual es posible volcar las especificaciones directamente en código fuente. Sólo se requiere que el código fuente que se parametriza esté marcado de una forma especial y que se generen las secuencias de datos a volcar. Para proporcionar más detalles de este proceso, puede consultarse la sección 3.7 .

1.2 Generación de instancias del meta-modelo de agente

Al instanciar el meta-modelo de agente, se está describiendo cómo son los elementos fundamentales del sistema, los agentes. Debido a que lo normal es que la información reflejada en estos modelos sea una recolección de información presentada en los otros, no suele constituir un buen punto de partida.

La generación de instancias de este meta-modelo se organiza en torno a los resultados esperables durante el análisis y el diseño. Los resultados que se obtienen durante el análisis son los siguientes:

o Funcionalidad del agente. Un conjunto de roles que desempeña cada agente. Un conjunto de tareas asociadas a los agentes o a roles que estos jueguen.

o Requisitos del agente. Qué cualidades se esperan del agente. Como ya se ha mencionado, si se espera del agente que demuestre inteligencia o autonomía, hay que especificar con detalle qué tipo de inteligencia y qué tipo de autonomía se espera. A este nivel basta con una descripción en lenguaje natural acompañada de casos de uso que lo ejemplifiquen.

Los resultados a obtener durante el diseño se refieren al control del agente:

o Restricciones de control. Se representan mediante los estados mentales por los que pasa el agente a lo largo de las interacciones.

o Medios de control. Cómo es el control que asegura la transición entre los distintos estado mentales identificados. La especificación de estos medios puede hacerse en lenguaje natural o utilizando referencias a modelos de objetivos y tareas.

Para lograr estos resultados, se proponen las actividades de la Ilustración 85 e Ilustración 84 :

1. Identificar agentes usando el principio de racionalidad. En el análisis, se buscarán entidades cuyo comportamiento se adapte al enunciado por este principio. Para ello, basta con ser capaz de explicar el comportamiento de la entidad con objetivos y tareas.

§ Producto. Un conjunto de instancias básicas del meta-modelo de agente con un único participante, el agente.


Ilustración 84. Actividades involucradas en la generación de modelos de agente en el análisis

Ilustración 85. Actividades involucradas en la generación de modelos de agente en el diseño


2. Asociar tareas o roles para alcanzar los objetivos del agente. Según el esquema de control visto, los objetivos se alcanzan ejecutando tareas o desempañando roles que participan en interacciones que persiguen objetivos. Tras la identificación de objetivos, la asociación de tareas a objetivos o el desempeñar un rol sirve para clarificar el por qué una tarea existe.

2.a. Identificar los objetivos de cada agente. Siguiendo con la idea de principio de racionalidad, se hacen explícitas las metas del agente. La identificación de metas puede llevar implícita la identificación de tareas y viceversa.

§ Producto. Un conjunto de objetivos asociados al agente por meta-relaciones GTPersigue o WFPersigue. Inclusión del objetivo en el estado mental si se trata del estado inicial del agente. Si pertenece a algún estado intermedio, indicarlo con insancias de Consulta Agente y asociar estas instancias con el tipo de agente.

2.b. Identificar funcionalidad. La funcionalidad del agente se determina mediante las tareas que sabe realizar, asignadas directamente (AResponsable) o como resultado de su participación en flujos de trabajo (WFResponsable), y los roles que desempeña. Mediante estos elementos se explica cómo se alcanzan los objetivos del agente. Una misma meta se puede alcanzar de diferentes formas. Pensando en las metas del agente, surgirán las tareas que deben ejecutarse o los roles que se desempeñan. Las tareas se asignan directamente al agente o se sobreentienden debido a asociaciones del agente con roles (si un agente desempeña un rol, entonces asume todas las tareas relacionadas con el rol). Los roles proceden del modelo de organización (de la especificación del flujo de trabajo) o bien del modelo de interacciones, al estudiar las diferentes interacciones que existen. La participación de roles en flujos de trabajo significa que tiene la responsabilidad de ejecutar tareas, mientras que la participación en interacciones significa que colabora en la consecución del objetivo de la interacción.

§ Productos. Un conjunto de tareas y asociaciones WFResponsable, AResponsable. Un conjunto de roles y asociaciones WFJuega.

2.c. Asociar funcionalidad a objetivos. Justifica la ejecución de tareas o el desempeñar roles, asociando un sentido (el objetivo) a la funcionalidad del agente. Si se trata de tareas, el objetivo se asocia a las tareas mediante instancias de GTAfecta. Si lo que se ha identificado son roles, el objetivo se asocia al rol mediante instancias de WFPersigue o bien se puede omitir si se indica la participación del rol en interacciones, ya que las interacciones tienen asociado un objetivo. Más tarde, las tareas asociadas a los roles, dentro de flujos de trabajo o interacciones, se tendrán que asociar a objetivos relacionados, si no iguales, al del rol. Los objetivos también se pueden alcanzar mediante la satisfacción o fracaso de otros objetivos, esto es, sin necesidad de que se ejecuten otras tareas. Para determinar si es ésta la situación, hay que estudiar los modelos de objetivos y tareas buscando instancias de GTDepende. Hay aclarar que aunque algunos objetivos se puedan satisfacer de esta forma, el resto siguen teniéndose que alcanzar mediante tareas o roles.

§ Productos. Asociaciones de tareas y objetivos (GTAfecta). Asociaciones de roles a objetivos WFPersigue.

3. Identificar aspectos relevantes del comportamiento del agente. Esta actividad se refiere a que hay que decidir qué cualidades debe tener el agente: si tiene aprendizaje qué es lo que va aprender y para qué, si es inteligente qué tipo de inteligencia tendrá y para qué será usada.

§ Producto. Descripción de las características deseables (tipo de inteligencia, tipo de aprendizaje, algoritmos y heurísticas aplicables) en el agente en lenguaje natural acompañada de un conjunto de casos de uso ilustrativos.

4. Decidir, de acuerdo con las cualidades del agente, el tipo de procesador de estado mental. Como se mencionó en al presentar el meta-modelo de agente, estas cualidades aparecen a nivel del meta-modelo encapsuladas dentro el procesador de estado mental y gestor de estado mental.

§ Producto. Instancias de Procesador y Gestor de estado mental asociadas al agente mediante instancias de las meta-relaciones ATieneProcesadorEM y ATieneGestorEM. Estas entidades deben acompañarse de una descripción en lenguaje natural del tipo de gestión y procesamiento deseado utilizando la propiedad Descripción.

5. Actualizar modelos con los requisitos de las plataformas destino. Implica por lo general añadir información a la presentada en el modelo. Esta nueva información surge de la necesidad de instanciar un armazón software para que lleve a cabo las especificaciones del modelo. Según los requisitos impuestos por el armazón software, la especificación del sistema debiera modificarse. Así, un armazón software donde la comunicación entre agentes es importante, como JADE, influiría pidiendo un nivel de detalle alto en los modelos de interacciones.

§ Productos. Nuevas entidades en el modelo o más detalle en las existentes.

6. Detallar los estados intermedios por los que pasa el agente. Los estados mentales intermedios provienen de los requisitos de los modelos de interacción y como resultado de la ejecución de tareas. En el primer caso, se tiene una referencia directa en las unidades de interacción a patrones de estado mental. En el segundo, hay que revisar las tareas del sistema para estudiar qué entidades mentales producen y qué entidades mentales se requieren.

§ Producto. Nuevos modelos donde se reflejan los estados mentales requeridos.

7. Diseño del control del agente. El control del agente se diseña de acuerdo a las necesidades identificadas durante el análisis (inteligencia, autonomía, descripciones del gestor y procesador de estado mental). Es probable que el usuario decida dejar el control del agente en manos de un algoritmo, como en TAEMS [Decker 96;Decker y Lesser 95;Decker 95] . En tal caso esta actividad se delega en la actividad de generación de diseño convencional.

7.a. Partiendo del conjunto de estados mentales, determinar cómo se pasa de uno a otro. En esta actividad es determinante el tipo de gestor de estado mental elegido. A modo de guía, si se trata de un sistema basado en reglas, el gestor establecería qué entidades nuevas deben añadirse, cuáles modificarse y cuáles eliminarse en términos de operaciones assert, retract y modify. Para ver cómo se pasa de un estado a otro hay que estudiar las tareas asociadas con el agente, qué requieren en su ejecución y qué efectos tienen. Parte de los difgerentes estados mentales por los que pasa el agente se enumeran dentro de los diagramas GRASIA.

§ Productos. Operaciones a realizar para asegurar la transición entre los diferentes estados mentales identificados. Las operaciones dependen del tipo de gestor de estado mental elegido.

7.b. Definir la gestión de los objetivos de los agentes. La gestión puede definirse en lenguaje natural si se considera apropiado. Será apropiado, por ejemplo, si la descripción provee de una definición sin ambigüedades de cómo se lleva a cabo. Si esta descripción no es posible, se propone detallar esta gestión con modelos de objetivos y tareas. En estos modelos, las tareas producirían, modificarían o destruirían objetivos. Estas tareas estarían guiadas por objetivos dedicados a la gestión de otros objetivos, de la misma forma en que existen meta-reglas en sistemas expertos que gestionan otras reglas. También habría que indicar cómo se gestionan los objetivos que gestionan objetivos. Para ellos se podría aplicar otra vez esta actividad. Se da por hecho que existe un conjunto de objetivos, por descubrir, cuya gestión es expresable en lenguaje natural de forma razonablemente no ambigua.

§ Productos. Referencias a modelos de objetivos y tareas.

7.c. Asociar los estados mentales a la ejecución de acciones. Esta actividad depende del tipo de procesador de estado mental elegido. La decisión de ejecutar una acción puede ser fruto de la ejecución de una regla. La condición de ejecución se reflejaría en la parte izquierda de la regla mientras que la acción se codificaría en la parte derecha. La decisión también puede surgir como resultado de un proceso deliberativo complejo, como el propuesto por SOAR o IRMA. Estas alternativas pueden expresarse también utilizando modelos de objetivos y tareas.

§ Productos. Descripción del proceso deliberativo que lleva a la ejecución de acciones en función del estado mental. La descripción depende del tipo de procesador de estado mental elegido. Es admisible la utilización de modelos de objetivos y tareas

8. Validar el modelo contra los otros modelos. La validación se realiza según los criterios de la sección 2.2.7 del capítulo segundo.

§ Productos. Lista de inconsistencias

9. Corregir el modelo. Para hacer el modelo consistente con las instancias de otros meta-modelos

§ Productos. Modificaciones a efectuar.

1.3 Generación de instancias del meta-modelo de interacciones

El meta-modelo de interaccion refleja el comportamiento deseado de un agente cuando recibe instrucciones de otro agente o bien requiere de otro agente para realizar una tarea. Como en los modelos de agentes, la generación de modelos de instancias se inicia en el análisis y se continúa en el diseño.

Para el análisis se ha fijado que los resultados esperables son:

o Interacciones relevantes en el sistema. Indicando participantes y objetivos perseguidos.

o Esquema inicial de intercambio de mensajes. Realizado con diagramas de colaboración o de secuencia UML. La realización de estos diagramas es menos costosa que los diagramas GRASIA.

Como en procesos convencionales de ingeniería, no es de esperar que los diagramas de colaboración resultantes sean definitivos. Estos diagramas sufrirán cambios cuando se entre en profundidad en la especificación de interacciones. Del diseño se espera :

o Descripciones detalladas de las interacciones. Han de ser tan detalladas como para permitir una generación automática de código. El nivel de detalle es función de las entidades que se escogen para implementar las interacciones.

o Contexto de las interacciones. Las interacciones contextualizadas en los flujos de trabajo de la organización y con información adicional acerca de las condiciones de participación en la interacción.

o Conjunto de unidades de interacción asociadas a los participantes. Cada participante en las interacciones comparte con los otros unidades de interacción. Esto forma parte de la descripción funcional del agente.

Para lograr estos resultados se proponen las siguientes actividades:

1. Identificar los objetivos que se persiguen. Se trata de determinar el principar producto de la interacción que es permitir a un conjunto de agentes alcanzar un objetivo que beneficia a todos los participantes. Cuál es este objetivo es un problema de estudio del contexto de la interacción. Así preguntándose cuándo tiene lugar la interacción, quién la inicia y dentro de qué flujo de trabajo estaría enmarcada, se deducen qué objetivos se están persiguiendo.

§ Productos. Un conjunto de objetivos asociados a la interacción mediante instancias de IPersigue.

2. Identificar colaboradores e iniciadores de las interacciones. Los participantes en la interacción aparecen si se estudia la interacción desde el punto de vista de la organización. En la organización, dentro del flujo de trabajo, las interacciones se producen como resultado de la ejecución de tareas. El ejecutor de las tarea que origina la interacción es el iniciador de la interacción (relación IInicia) y el resto de los participantes involucrados son colaboradores (IColabora).

§ Productos. Un conjunto de roles o agentes asociados a la interacción mediante relaciones IInicia e IColabora.

3. Identificar la naturaleza de la interaccion. La naturaleza de la interaccion influye en el tipo de control que se va a aplicar al agente. Si se necesita generar una secuencia de tareas para alcanzar un objetivo, la naturaleza es planificación. Si se trata de intercambiar mensajes en un orden concreto y un contenido predecible, se habla de cooperación. Si hay recursos limitados o existe algún bien que regula la predisposición de los agentes a colaborar, se tendrá negociación. Las negociaciones siguen reglas concretas, como el contract-net [Smith 80] . Cuando éstas no son rígidas y hay libertad para que un agente acapare recursos o bienes del sistema, se tendrá competición.

§ Productos. caracterización del tipo de interacción según la clasificación de [Huhns 00] (Ilustración 32 ).

4. Generar una primera especificación con diagramas de colaboración o de secuencia de UML. Los diagramas de colaboración y de secuencia son sencillos de identificar. Asumen que la interacción se realiza por intercambio de mensajes o bien por llamadas a procedimiento remoto. Aunque el contenido de la información intercambiada aún no es prioritario, sí que lo es el determinar de qué tipo son los mensajes que se están mandando y la secuencia en que son procesados. Esta información se ampliará más tarde con los diagramas de interacción GRASIA.

4.a. Identificar mensajes intercambiados. Para cada actor, determinar los mensajes intercambiados estableciendo el orden en que son pasados de un actor a otro y el propósito de los mismos.

§ Productos: Un conjunto de pasos de mensaje etiquetados según la notación de UML (notación de secuencia, guardas, nombre de operación y parámetros)

4.b. Identificar emisores y receptores. Cada mensaje necesita de un un emisor y uno o varios receptores. Aunque aún no es momento de pensar acerca de la motivación de cada uno, sí que se puede determinar para cada participante qué mensajes envía y cuáles recibe.

§ Productos: Se obtiene un diagrama de colaboración UML donde los actores son roles o agentes.


Ilustración 86. Actividades de análisis para la generación de modelos de interacciones

Ilustración 87. Actividades de diseño para la generación de modelos de interacciones


5. Generar una especificación GRASIA. La especificación GRASIA ha sido elaborada pensando en separar la ejecución de unidades de interacción de la asociación entre emisor y receptor. Esta separación es útil a la hora de generar código automáticamente.

5.a. Traducir mensajes a unidades de interacción. Cada mensaje se traduce a unidades de interacción adecuadas al medio de comunicación elegido (espacios compartidos de tuplas, paso de mensajes, llamada a procedimiento remoto).

§ Productos: Un conjunto de unidades de interacción donde cada unidad de interacción se corresponde con uno o más mensajes.

5.b. Asociar tareas a los iniciadores y colaboradores de los mensajes. Las unidades de interacción son ejecutadas por un agente con el objetivo de que otro participe en su ejecución (recibiendo el mensaje, leyendo del espacio compartido de tuplas, recibiendo la llamada).

§ Productos: Instancias de las relaciones UIInicia y UIColabora asociadas a las unidades de interacción.

5.c. Establecer condiciones mentales para la ejecución de unidades de interacción. Dentro de esta actividad se estudia la motivación de los participantes a nivel de unidad de interacción. La motivación consiste en una instantánea del estado mental de los agentes en el momento en que inician o colaboran en la ejecución de una unidad de interacción. En la representación del estado mental se tienen patrones de estado mental de entre los cuales destacan los patrones de estado mental AOP y los patrones de estado mental GRASIA. Los primeros se expresan con cadenas de texto que utilizan el BNF descrito por Shoham (ver sección 1.1 en el primer capítulo). Los últimos se expresan gráficamente con agregaciones de las entidades mentales que han de estar presentes.

§ Productos: Un conjunto de patrones de estado mental asociados a las relaciones UIInicia y UIColaba.

5.d. Establecer un orden de ejecución entre las unidades de interacción obtenidas. Las unidades de interacción se ordenan de una forma determinada dependiendo de las necesidades establecidas por el flujo de trabajo representado. En el diagrama de colaboración, por defecto se tiene un orden secuencial de acciones. Sin embargo, también se permite la selección condicional y la iteración. Siguiendo UML, se han extraido cuatro primitivas fundamentales para determinar el orden de ejecución Precede, UIItera, UIConcurren y Bifurca.

§ Productos: Instancias de las meta-relaciones UIItera, UIConcurren, Precede y Bifurca ordenando la ejecución de las unidades de interacción.

6. Actualizar modelos con los requisitos de las plataformas destino. Implica por lo general añadir información a la presentada en el modelo. Esta nueva información surge de la necesidad de instanciar un armazón software para que lleve a cabo las especificaciones del modelo. Según los requisitos impuestos por el armazón software, la especificación del sistema debiera modificarse. Así, un armazón software donde la comunicación entre agentes es importante, como JADE, influiría pidiendo un nivel de detalle alto en los modelos de interacciones.

§ Productos. Nuevas entidades en el modelo o más detalle en las existentes.

7. Validar el modelo contra los otros modelos. La validación se realiza según los criterios de la sección 2.3.4 del capítulo segundo.

§ Productos: Lista de inconsistencias

8. Corregir el modelo. Para hacer el modelo consistente con las instancias de otros meta-modelos

§ Productos: Modificaciones a efectuar.

1.4 Generación de instancias del meta-modelo de tareas y objetivos

El meta-modelo de interaccion refleja el comportamiento deseado de un agente cuando recibe instrucciones de otro agente o bien requiere de otro agente para realizar una tarea. Como en los modelos de agentes, la generación de modelos de instancias se inicia en el análisis y se continúa en el diseño.

Para el análisis se ha fijado que los resultados esperables son:

o Tareas y objetivos. Los objetivos que se persiguen en el sistema, que han de ser resumen de todos los incluidos en los modelos de agente y organización. Se admite la descomposición estructural de tareas y objetivos (GTDescompone y WFDescompone). De hecho, se espera que se aplique con vistas a disminuir su complejidad. Esta descomposición se acompaña de dependencias entre objetivos (GTDepende)

o Tareas asociadas a objetivos. La asociación consiste inicialmente en instancias de GTAfecta que evolucionarán en el diseño hacia GTSatisface o GTFalla. Esta asociación constituye la justificación de la ejecución de la tarea.

o Precondiciones y postcondiciones tentativas. Las precondiciones mínimas son determinar qué entidades mentales se consumen (WFConsume), qué interacciones y entidades mentales se producen (WFProduce y GTCrea) y qué aplicaciones se usarán en el proceso (WFUsa).

Ilustración 88. Actividades de análisis para la generación de modelos de tareas y objetivos

Ilustración 89. Actividades de diseño para la generación de modelos de tareas y objetivos


Para el diseño se ha fijado que los resultados esperables son:

o Refinamiento de las dependencias entre objetivos. Se detalla la dependencia indicando si se trata de dependencia Y (GTDependeY) o dependencia O (GTDependeO). Las dependencias pueden desaparecer con motivo de cambios en la dependencias estructurales entre objetivos.

o Condiciones de satisfacción o fallo de los objetivos. Las relaciones GTAfecta entre tareas y objetivos evolucionan a GTFalla y GTSatisface. En estos dos casos es necesario además indicar bajo qué condiciones se asume el éxito o fracaso del objetivo. Estas condiciones se expresan con patrones de estado mental.

o Precondiciones detalladas. El detalle en las precondiciones viene de añadir los recursos que necesita la tarea (WFUsa) y de incluir nuevas instancias de WFConsume, GTDestruye, GTModifica. Estas dos últimas se interpretan como precondiciones en el sentido de que requieren la existencia de la entidad mental con la que se relaciona.

o Postcondiciones detalladas. Se asocian nuevas instancias WFProduce con recursos para expresar la restitución de los mismos. Adicionalmente, se incluyen instancias WFUsaLlamada que expresan qué operaciones se están utilizando de las aplicaciones asociadas. Asimismo, se incluyen instancias de GTDestruye, GTModifica y GTCrea para mostrar cómo se modifica el estado mental. Se pueden asociar también entidades mentales con WFProduce, pero en dicho caso se interpreta la producción en términos de flujo de trabajo (información pasada de una tarea a otra).

Para conseguir estos resultados, se proponen las siguientes actividades:

1. Identificar tareas y objetivos. Los objetivos se pueden iniciar identificando, como hace MaSE, requisitos del sistema con objetivos. Otra forma es extraer qué deseos son asociables con el agente de otros meta-modelos (agente y organización). Por último, se pueden ver los objetivos como representantes del estado de las tareas con las que se asocian. En cuanto a las tareas, hay dos enfoques: relacionar las tareas con la funcionalidad requerida o bien sacar las tareas de los objetivos existentes.

§ Producto: Un conjunto de objetivos y tareas.

2. Asociar tareas a objetivos. Las asociación de tareas a objetivos se hace mediante instancias de meta-relaciones GTAfecta. Esta asociación determina cómo se satisface un objetivo, pero los objetivos también se pueden satisfacer mediante instancias de GTDepende. Por ello, no existe obligación de que todos y cada uno de los objetivos esté asociado con una tarea (el recíproco no es cierto).

§ Producto: Un conjunto de objetivos y tareas asociados por meta-relaciones GTAfecta.

3. Descomponer tareas. Es responsabilidad del ingeniero el determinar la complejidad que conlleva la realización de una tarea. Cuando la complejidad es excesiva, una técnica común es la de divide y vencerás. La descomposición de objetivos vuelve a sacar el problema de identificación de objetivos. La creación de nuevas tareas debería ir de la mano de la creación de nuevos objetivos. Así, cada nueva tarea procedente de la descomposición de la tarea original tiene que asociarse con otro objetivo. La descomposición también puede entenderse al revés: la tarea se realiza porque el objetivo con el que está relacionado la tarea se ha descompuesto.

§ Productos: Un conjunto de tareas asociadas con la relación WFDescompone.

4. Descomponer objetivos objetivos si fuera necesario. Como las tareas, los objetivos también se pueden descomponer. La descomposición obedece a la complejidad asociada con un objetivo (divide y vencerás) o bien por la descomposición de tareas asociadas.

§ Productos: Un conjunto de objetivos relacionados por instancias de GTDescompone.

5. Establecer dependencias entre objetivos. Los objetivos se relacionan entre sí, por diversos motivos. En este trabajo se acepta que dos objetivos se relacionan entre sí únicamente con motivo de la existencia de una instancia de la meta-relación GTDescompone. En esta actividad se pide únicamente asociar los sub-objetivos con el padre mediante GTDepende. Para los casos en que las dependencias sean evidentes, se pueden indicar directamente en esta fase.

§ Productos: Cada sub-objetivo relacionado con el objetivo padre mediante GTDepende.

6. Precondiciones y postcondiciones tentativas. Es necesario establecer a nivel de análisis qué es necesario para ejecutar las tareas y cuales son las consecuencias para el agente. Parte de las pre y postcondiciones se han fijado ya con instancias de meta-relaciones GTDepende y GTAfecta.

6.a. Asociar tareas con interacciones producidas. Las interacciones son posibles productos de las tareas. Que una tarea produzca una interacción significa que su ejecución conlleva la ejecución de tareas en otros agentes, lo cual implica que los efectos de una tarea se extienden más allá del agente. Esto es de suficiente importancia como para justificar la aparición de las interacciones en esta etapa.

§ Productos: Asociaciones entre interacciones y tareas con WFProduce.

6.b. Asociar tareas con entidades mentales producidas. La ejecución de tareas conlleva la creación, destrucción o modificación de entidades mentales del agente ejecutor. A este nivel, sólo se resaltan las creadas. Hay que distinguir aquellas entidades mentales creadas por su utilización dentro de un flujo de trabajo y aquellas creadas localmente con otros fines. Las primeras se reflejan con WFProduce mientras que las segundas se representan con GTCrea.

§ Productos: Asociaciones entre tareas y entidades mentales mediante instancias de WFProduce y GTCrea.

6.c. Asociar tareas con entidades mentales consumidas. Esta actividad se relaciona con la anterior. Se trata de la destrucción de entidades mentales como consecuencia de la ejecución de tareas. La destrucción de entidades mentales se hace con GTDestruye.

§ Productos: Asociaciones entre tareas y entidades mentales mediante instancias de GTDestruye.

6.d. Asociar tareas con aplicaciones. Las tareas requerirán actuar sobre el entorno. Al tratarse de agentes software, las acciones sobre el entorno se traducen con invocaciones de operaciones en aplicaciones software. A este nivel basta con indicar que existe una necesidad de actuar sobre la aplicación.

§ Productos: Asociaciones entre tareas y aplicaciones mediante instancias de WFUsa.

7. Identificar postcondiciones de tareas. Las postcondiciones establecidas hasta ahora son sólo indicaciones de lo que puede pasar que no entran en detalles. Las actividades que se enmarcan dentro de ésta se orientan a la obtención de una descripción detallada de los efectos de las tareas.

7.a. Indicar qué recursos se restablecen. Una vez utilizados, los recursos se reponen bien indicando la finalización de su uso o bien restituyendo una cantidad predeterminada.

§ Productos: Instancias de WFProduce asociando tareas y recursos.

7.b. Asociar tareas con entidades mentales indicando modificación, destrucción o creación. En actividades anteriores se mostraron relaciones entre tareas y entidades mentales (GTCrea, GTDestruye y WFProduce). Esta información se complementa en esta etapa con nuevas asociaciones para indicar modificación de entidades mentales (GTModifica) en concreto satisfacción y fallo de objetivos (GTSatisface y GTFalla). Estas asociaciones se caracterizan por estar condicionadas a la satisfacción de un patrón de estado mental. Este patron indica qué entidades mentales deben existir para dar por satisfecho o fallido el objetivo. Estas entidades pueden ser producidas por la tarea asociada o provenir del entorno como resultado de la actuación de la tarea.

§ Productos. Instancias de GTSatisface y GTFalla asociando tareas y objetivos.

7.c. Asociar tareas con operaciones de las aplicaciones. Dentro de la tarea se realizan actividades sobre el entorno. Estas actividades se modelan utilizando operaciones concretas de las aplicaciones.

§ Productos: Instancias de WFUsaLlamada indicando la operación utilizada sobre la aplicación.

8. Identificar precondiciones de las tareas. Las precondiciones en el diseño recogen información adicional respecto a los recursos consumidos y las entidades mentales que se utilizan como entradas para las tareas.

8.a. Refinar entidades mentales consumidas. Según progresa el diseño es normal que se matice el funcionamiento de las tareas, requiriendo en algunos casos, modificaciones en la información que se suministra a la tarea, esto es, cambios en las entidades mentales que se consumen. Estos cambios se reflejan en la aparición de nuevas entidades mentales, o modificación de las existentes.

§ Productos: Nuevas entidades mentales, modificaciones en entidades existentes, instancias de WFConsume

8.b. Determinar recursos a consumir. Los recursos se consumen con instancias de WFUsa. Estas instancias significan la necesidad de un recurso concreto durante la ejecución de la tarea.

§ Productos: Instancias de WFUsa asociando tareas y recursos.

9. Actualizar modelos con los requisitos de las plataformas destino. Implica por lo general añadir información a la presentada en el modelo. Esta nueva información surge de la necesidad de instanciar un armazón software para que lleve a cabo las especificaciones del modelo. Según los requisitos impuestos por el armazón software, la especificación del sistema debiera modificarse. Así, un armazón software donde la comunicación entre agentes es importante, como JADE, influiría pidiendo un nivel de detalle alto en los modelos de interacciones.

§ Productos. Nuevas entidades en el modelo o más detalle en las existentes.

10. Refinar dependencias de objetivos. Los objetivos se alcanzan o bien por sus dependencias respecto de otros objetivos existentes o bien por sus asociaciones con tareas.

10.a. Refinar dependencias entre objetivos. Las instancias de GTDepende identificadas durante el análisis se refinan en GTDependeY o GTDependeO.

§ Productos.Instancias de GTDependeY o GTDependeO.

10.b. Refinar satisfacción/fracaso de objetivos. La semántica de GTDepende determina per se la satisfacción o fracaso de un objetivo. Sin embargo, en el caso que el estado final del objetivo dependa de una tarea, el procedimiento es distinto. Se indica qué evidencias deben existir para considerar alcanzado o fracasado un objetivo. Esta información se proporciona dentro de instancias de GTSatisface y GTFalla en forma de patrones mentales.

§ Productos. Instancias de GTSatisface y GTFalla asociadas con instancias de patron de estado mental.

11. Validar el modelo contra los otros modelos. La validación se realiza según los criterios de la sección 2.4.5 del capítulo segundo.

§ Productos: Lista de inconsistencias

12. Corregir el modelo. Para hacer el modelo consistente con las instancias de otros meta-modelos

§ Productos: Modificaciones a efectuar.

1.5 Generación de instancias del meta-modelo de organización

El meta-modelo de organización es comparable a la arquitectura del sistema en un SMA. Este meta-modelo relaciona las entidades activas (agentes, roles), pasivas (aplicaciones, recursos) y los elementos que proporcionan la funcionalidad del sistema (flujos de trabajo, tareas). Por ello, es aconsejable que este meta-modelo sea el primero en estudiarse para generar meta-modelos y que se vuelva a él con frecuencia a medida que van apareciendo nuevos elementos en los demás modelos.

Para el análisis se ha fijado que los resultados esperables son:

o Estructura de la organización. La idenficicación de los elementos del sistema es primordial. El detalle aquí alcanzado ha de ser el mayor posible, ya que ello posibilitará el tratamiento de las entidades encontradas en el resto de actividades.

o Flujos de trabajo. Aunque no se llegue a un gran detalle, hay que generar una lista de las tareas, con sus responsables correspondientes, conectadas unas con otras y resaltando aquellas tareas cuya ejecución afecte a otros agentes.

o Dependencias sociales. En el análisis basta con tejer una red de instancias de AGORelacion como se definieron en el meta-modelo de organización.

Para el diseño se ha fijado que los resultados esperables son:

o Contexto de ejecución de las tareas. Las tareas se asocian con sus ejecutores para indicar quien se ve afectado por ellas, qué recursos y entidades mentales se consumen y qué entidades de información se producen.

o Refinamiento de las dependencias sociales. Hay que detallar qué tipo de relaciones se están definiendo cuando se interconectan dos entidades con AGORelacion. Concretamente, se debe determinar si hay o no subordinación o si se trata de una relación cliente-servidor, indicando en cada caso las condiciones de prestación de servicio y el servicio en sí.


Ilustración 90. Actividades del análisis para generación de modelos de organización

Ilustración 91. Actividades del diseño para generación de modelos de organización


Para conseguir estos resultados, se proponen las siguientes actividades:

1. Generar Definición Estructural. Antes de comenzar cualquier otra actividad, hay que identificar las entidades que componen el sistema, en este caso, agentes, roles, recusos, aplicaciones, grupos y organizaciones.

1.a. Identificar grupos. Los grupos aparecen cuando se intenta estructurar los distintos participantes de los distintos flujos de trabajo.

§ Productos: Un conjunto de grupos asociados a la organización por instancias de OContieneOrganizacion.

1.b. Generar miembros del grupo. Los miembros de los grupos (agentes, roles, recursos y aplicaciones), aparecen al señalar los actores que aparecen en los flujos de trabajo (agentes y roles) y trasladar parte de los requisitos de la especificación (recursos disponibles, aplicaciones existentes con las que hay que integrar).

§ Productos: Un conjunto de roles, agentes, recursos y aplicaciones asociados a uno o varios grupos mediante instancias de OContieneGrupo.

1.c. Aplicar descomposición grupos para reducir complejidad. La complejidad de los grupos que actúan en ellos puede ser demasiado elevada en algunos casos. Mediante la descomposición (aplicando divide y vencerás) el ingeniero asigna trabajo a los diferentes componentes del equipo de desarrollo para facilitar la construcción del SMA.

§ Productos: Nuevos grupos asociados a los grupos existentes mediante instancias ODescomponeGrupo.

2. Generar definición funcional. La especificación funcional en el análisis se construye identificando las tareas más relevantes, relacionándolas con sus ejecutores y entre sí y destacando aquellas tareas que conllevan la ejecución de tareas en otros agentes.

2.a. Identificar Flujos de trabajo. Los flujos de trabajo surgen al considerar los requisitos funcionales del sistema.

§ Productos: Un conjunto de flujos de trabajo asociados a la organización por instancias de OContieneFlujoTrabajo.

2.b. Aplicar descomposición flujos de trabajo para reducir complejidad. La complejidad de los flujos de trabajo que actúan en ellos puede ser demasiado elevada en algunos casos. Mediante la descomposición (aplicando divide y vencerás) el ingeniero asigna trabajo a los diferentes componentes del equipo de desarrollo para facilitar la construcción del SMA.

§ Productos: Nuevos flujos de trabajo asociados a los flujos de trabajo existentes mediante instancias ODescomponeFlujo.

2.c. Identificar objetivos. La organización tiene un conjunto de objetivos que justifican la colaboración de los agentes. La relación exacta entre estos objetivos y los asociados con los agentes y roles individuales se establece dentro de modelos de tareas y objetivos.

§ Productos: Objetivos asociados a la organización mediante instancias de GTPersigue.

3. Generar definición social. La definición social en el análisis se limita a identificar la existencias de relaciones sociales a cada uno de los tres niveles organizativos expuestos al presentar la definición de relaciones sociales en el meta-modelo de organización.

3.a. Establer relaciones a nivel de organización. Consiste en asociar las distintas organizaciones entre sí mediante instancias de AGORelacion.

§ Productos: Instancias de AGORelacion entre organizaciones.

3.b. Establecer relaciones a nivel de grupo. Consiste en asociar los grupos existentes entre sí mediante instancias de AGORelacion.

§ Productos: Instancias de AGORelacion entre grupos

3.c. Establecer relaciones a nivel de agente o rol. Se relacionan los agentes y roles entre sí mediante instancias de AGORelacion.

§ Productos: Instancias de AGORelacion entre agentes o roles.

4. Refinar dependencias entre organizaciones, grupos, roles y agentes. Durante el diseño, las relaciones sociales del análisis se refinan en dependencias concretas del tipo AGOSubordinacionCondicional, AGOSubordinacionIncondicional o AGOClienteServidor.

4.a. Relaciones de subordinación. Las relaciones de subordinación posibles son AGOSubordinacionCondicional y AGOSubordinacionIncondicional. La primera se aplica cuando el agente no puede comprometerse completamente en la obediencia a otro agente. La segunda, cuando no existe tal restricción. Las condiciones de obediencia se fijan en términos de patrones de estado mental.

§ Productos:Instancias de AGOSubordinacionCondicional, asociadas a instancias de patrones de estado mental para indicar las condiciones de obediencia, o AGOSubordinacionIncondicional

4.b. Relaciones cliente-servidor. Con estas relaciones se representa la noción de servicio aparecida en otras metodologías. El servicio se asimila con un objetivo dando a entender que lo que se ofrece es la capacidad de satisfacer el objetivo ofertado.

§ Productos: Instancias de AGOClienteServidor

5. Refinamiento de la descripción funcional. La descripción funcional en el diseño ha de ser lo más detallada posible desde el punto de vista de interacción con otras tareas. De forma individual, las tareas se describen en el meta-modelo de tareas y objetivos.

5.a. Identificar tareas. Se trata de identificar tareas dentro de los flujos de trabajo definidos en el análisis. Las tareas a ejecutar se pueden obtener mediantes técnicas convencionales de ingeniería del software a partir de la especificación del problema o bien obtenerse de otros modelos (modelo de tareas y objetivos, modelo de agente). Estas tareas se asocian a los flujos de trabajo mediante relaciones de pertenencia y relaciones de flujo de datos (WFProduce, WFConecta, WFConsume).

§ Productos: Un conjunto de tareas asociadas a flujos de trabajo.

5.b. Conectar tareas. Las tareas generadas en esta o futuras iteraciones se interrelacionan por medio de las entradas requeridas y las salidas producidas dentro del flujo de trabajo.

§ Productos: Instancias de WFConecta conectando las distintas tareas.

5.c. Identificar tareas no locales. Las tareas que conlleven la ejecución de otras tareas en otros agentes se identifican asociándoles una interacción. Se asume que en un flujo de trabajo, donde cada tarea previsiblemente se ejecutará en distintos agentes, sólo produce una interacción la tarea que da comienzo al flujo de trabajo. Estas tareas se asocian con la interacción con instancias de WFEspecificaEjecucion.

§ Productos: Instancias de Interaccion asociadas con tareas mediantes instancias de WFProduce y WFEspecificaEjecucion.

5.d. Asociar responsables. Las tareas son ejecutadas directamente por agentes o indirectamente a través de los roles desempeñados. Para cada tarea, se ha de decidir quién es su responsable, teniendo como posibilidades alguno de los agentes o roles existentes.

§ Productos: Instancias de WFResponsable asociando agentes o roles y tareas

5.e. Recursos en las tareas. Los recursos disponibles en el sistema provienen de la especificación de requisitos inicial. Estos recursos se asignan a las distintas tareas en función de lo que el diseñador considere necesario. Los recursos que la tarea necesita para poder ejecutarse se asocian con instancias WFUsa. Los recursos que restituye la tarea se asocian con instancias de WFProduce. El conjunto de recursos consumidos es un subconjunto estricto de los recursos restituidos. Idealmente, por cada recurso consumido debe existir una restitución del mismo, pero para algunos recursos (los no consumibles según lo establecido en la sección 2.6.1.2 ) puede omitirse entendiendo que estos recursos se restauran automáticamente a la finalización de la tarea.

§ Productos: Instancias de WFUsa y WFProduce asociando recursos a las tareas.

5.f. Identificar entidades mentales intercambiadas entre las tareas dentro del flujo de trabajo. Las entidades mentales son los elementos pasados de una tarea a otra durante la ejecución. Estas entidades se identifican de forma detallada dentro del meta-modelo de tareas y objetivos. No obstante, no todas las entidades que aparecen en las instancias de ese meta-modelo son válidas aquí. En este contexto se mencionan únicamente aquellas entidades mentales que o bien activan el flujo de trabajo o bien sirven para que éste continúe su ejecución. Una tarea se conecta con las entidades mentales consumidas en el flujo de trabajo con WFConsume y con las entidades producidas con WFProduce. Las tareas productoras de entidades mentales están unidas a las consumidoras con WFConecta.

§ Productos: Instancias de WFConsume asociando a las tareas entidades mentales requeridas. Instancias de WFProduce asociando instancias de entidades mentales generadas por las tareas.

6. Actualizar modelos con los requisitos de las plataformas destino. Implica por lo general añadir información a la presentada en el modelo. Esta nueva información surge de la necesidad de instanciar un armazón software para que lleve a cabo las especificaciones del modelo. Según los requisitos impuestos por el armazón software, la especificación del sistema debiera modificarse. Así, un armazón software donde la comunicación entre agentes es importante, como JADE, influiría pidiendo un nivel de detalle alto en los modelos de interacciones.

§ Productos. Nuevas entidades en el modelo o más detalle en las existentes.

7. Validar el modelo contra los otros modelos. La validación se realiza según los criterios de la sección 2.5.4 en el capítulo segundo

§ Productos: Lista de inconsistencias

8. Corregir el modelo. Para hacer el modelo consistente con las instancias de otros meta-modelos

§ Productos: Modificaciones a efectuar.

1.6 Generación de instancias del meta-modelo de entorno

La mayoría de la información para la generación de instancias del meta-modelo de entorno proviene de la captura de requisitos, que es la entrada para el análisis.

Para el análisis se ha fijado que los resultados esperables son:

o Entidades del entorno. Una enumeración de las entidades que preceden al sistema a desarrollar. Estas entidades se categorizan como aplicaciones, agentes o recursos. Cada entidad se acompaña de una descripción de sus funciones, que se entiende han de extraerse de la captura de requisitos.

o Percepción del agente. Aunque se detallará más adelante, la percepción del agente se asocia con las aplicaciones del entorno.

Para el diseño se ha fijado que los resultados esperables son:

o Configuración de la percepción del agente. Cada agente asociado con aplicaciones explicita cómo va a percibir, si va a utilizar mecanismos de muestreo o notificación y qué es lo que espera recibir.

o Relaciones con tareas. Aunque se considera en otros meta-modelos, se identifican asociaciones de producción y utilización de aplicaciones y recursos con tareas.

o Definición detallada de los recursos. Consiste en especificar exactamente cómo es cada recurso, detallando su categoría concreta, el límite inferior de consumo, el superior y el estado en que se encuentra inicialmente.

Para conseguir estos resultados, se proponen las siguientes actividades

1. Identificar aplicaciones. Las aplicaciones se conciben como objetos. Será una aplicación todo software o hardware con que el sistema debe interactuar y que no puede ser modelado (o no conviene) como agente.

1.a. Identificar aplicaciones del entorno. Las aplicaciones del entorno se extraen la captura de requisitos del sistema. Se identifican con el software propietario o paquetes estándar con que hay que interactuar.

§ Productos: Conjunto de instancias de AplicacionEntorno

1.b. Identificar aplicaciones internas. Las aplicaciones internas se extraen de las necesidades contempladas a la hora de diseñar los agentes en otros meta-modelos. Se trata de servicios que han de mantenerse centralizados y que no muestran necesidad de incorporar comportamiento similar al de los agentes.

§ Productos: Conjunto de instancias de AplicacionInterna.

Ilustración 92. Actividades de análisis para la generación de modelos de entorno

Ilustración 93. Actividades de diseño para la generación de modelos de entorno


2. Asociar operaciones sobre las aplicaciones. Sobre las aplicaciones se pueden realizar un conjunto de operaciones que son definidas durante la captura de requisitos. Estas operaciones se caracterizan por tener una signatura (nombre, tipo devuelto, parámetros) más unas precondiciones y postcondiciones. La identificación de estas operaciones es una tarea convencional de ingeniería.

§ Productos: Un conjunto de instancias de Operación asociadas a las aplicaciones.

3. Actividades de análisis de las aplicaciones. La especificación concreta de las aplicaciones internas se realiza con métodos convencionales. De aplicar un análisis orientado a objetos, por ejemplo, sería conveniente detallar el estado interno de las aplicaciones y el efecto de las operaciones sobre este estado. Las aplicaciones del entorno no deberían necesitar este esfuerzo ya que se presuponen ya analizadas.

§ Productos: Los establecidos por el método elegido

4. Identificar agentes del entorno. Los agentes del entorno son entidades similares a las instancias de aplicación solo que son modelables utilizando los meta-modelos aquí presentados. Principalmente, se aplica el principio de racionalidad para distinguirlas del software convencional, aunque se cuenta con que dentro de la captura de requisitos ya aparecen identificados.

§ Productos: Un conjunto de agentes

5. Definir agentes utilizando los meta-modelos. Para el caso en que se trate de software convencional que hay que recubrir con una capa de software de agentes, se aplican los meta-modelos aquí expuestos para definir el nuevo agente.

§ Productos: Instancias de los meta-modelos de agente, organización, tareas y objetivos, entorno e interacción para los nuevos agentes.

6. Determinar la percepción de los agentes en función de aplicaciones. Inicialmente basta con unir agentes con aplicaciones con instancias de EPersigue sin indicar nada más.

§ Productos: Instancias de EPercibe asociando agentes a instancias de aplicación.

7. Identificar recursos disponibles. Los recursos disponibles surgen de la captura de requisitos del sistema. Los recursos se categorizan en consumibles y no consumibles. De forma orientativa, en la sección 2.6.1.2 se muestra una lista de los recursos más comunes. Esta lista se corresponde con posibles instancias de Recurso.

§ Productos: Instancias de Recurso.

8. Asociar recursos a agentes y grupos. Los recursos se asocian a agentes o roles, indicando quién es el responsable de su gestión. Cuando se asocian a un grupo, no hay un responsable directo, salvo que el ingeniero acuerde tácitamente que determinado agente o rol es responsable de los recursos de su grupo.

§ Productos: Instancias de ERecursoPertenece asociando recusos a agentes o grupos.

9. Refinar la percepción de los agentes para extraer el tipo de percepción deseada. La percepción del agente se refina indicando si se tiene un muestreo o una notificación respecto de los valores devueltos por una operación de la aplicación.

§ Productos: Instancias de EPercibeNotificacion y EPercibeMuestreo donde antes había solo instancias de EPercibe. Es obligatorio el indicar la operación asociada.

10. Actividades de diseño para aplicaciones. Las aplicaciones se diseñan utilizando métodos convencionales de ingeniería del software.

§ Productos: Los establecidos por el método elegido

11. Definir los atributos propios de cada recurso. Cada recurso se define mediante umbrales y el estado inicial. Durante el diseño, y en vista de los resultados del análisis en otros modelos, se fijan los recursos que se necesitan.

§ Productos: Determinar el valor de los umbrales de los recursos y su estado inicial

12. Asociar recursos, aplicaciones y tareas. Durante el diseño, los modelos de tareas y objetivos mostrarán asociaciones con recursos y aplicaciones que conviene repetir aquí.

§ Productos: Instancias de WFUsa asociando tareas y aplicaciones. Instancias de WFConsume y WFProduce asociando tareas y recursos

13. Actualizar modelos con los requisitos de las plataformas destino. Implica por lo general añadir información a la presentada en el modelo. Esta nueva información surge de la necesidad de instanciar un armazón software para que lleve a cabo las especificaciones del modelo. Según los requisitos impuestos por el armazón software, la especificación del sistema debiera modificarse. Así, un armazón software donde la comunicación entre agentes es importante, como JADE, influiría pidiendo un nivel de detalle alto en los modelos de interacciones.

§ Productos. Nuevas entidades en el modelo o más detalle en las existentes.

14. Validar el modelo contra los otros modelos. La validación se realiza según los criterios de la sección 2.6.4 en el capítulo segundo

§ Productos: Lista de inconsistencias

15. Corregir el modelo. Para hacer el modelo consistente con las instancias de otros meta-modelos

§ Productos: Modificaciones a efectuar.

1.7 Fase de implementación

La fase de implementación en esta tesis se plantea como la parametrización de un armazón software ya existente. Existen múltiples desarrollos que pueden servir como armazón software, por ejemplo, los ya vistos, JADE, ZEUS o Grasshopper. Sobre estos armazones se construrían esqueletos genéricos que serían concretados más tarde con los datos de los modelos que especifican el SMA.

Este planteamiento es diferente del adoptado por la mayoría de las herramientas de análisis y diseño, donde la generación automática de código es fija y sin posibilidad de modificación. Herramientas como Rational Rose o TogetherJ trabajan con elementos como diagramas de secuencia y de estados para los que existen representaciones únicas dentro de un lenguaje destino a elegir por el desarrollador (JAVA , Smalltalk, C++).

A diferencia de estas herramientas, en este trabajo se busca traducciones de los modelos en elementos conocidos como máquinas de estado, protocolos o arquitecturas de agente. Estos elementos se suponen organizados para formar un armazón de SMA. Para facilitar esta traducción, se propone un método genérico de parametrización de armazones basado en el marcado con XML del código del armazón. A grandes rasgos, el proceso consiste en sustituir el código marcado en el armazón por información elaborada a partir de los modelos que componen la especificación.

La selección de un armazón adecuado es importante. El armazón destino debe reunir ciertos elementos recogidos en los modelos, por ejemplo, elementos a cargo de la gestión del estado mental o de la toma de decisiones.

En esta sección, primero se describe informalmente el proceso completo de generación del sistema para ubicar la parte de parametrización del armazón. A continuación se describen los elementos que se utilizan en la parametrización, las plantillas y las secuencias. El proceso en sí se presenta después utilizando diagramas de decisión. Para terminar, algunas consideraciones sobre el armazón sobre el que se aplicará el proceso.

1.7.1 Actividades

La generación de código se realiza de acuerdo con las actividades de la Ilustración 94 .

Ilustración 94. Actividades para la generación automática de código

La generación de modelos consiste en el diseño del sistema utilizando los meta-modelos de este trabajo. Se soporta con la herramienta METAEDIT+, que genera editores de modelos personalizados para cada uno de los meta-modelos.

Al análizar los modelos se transforma la representación de METAEDIT+ en un conjunto de predicados PROLOG más sencillos de procesar. La transformación se hace también desde PROLOG.

La generación de secuencias se hace teniendo en cuenta los parámetros que admite el armazón sobre el que se va a trabajar. Las secuencias son listas de listas de términos clave = valor. Esta parte es dependiente del armazón destino, por lo que debe ser programada especialmente para cada tipo de armazón.

Por último, la instanciación del armazón se realiza utilizando el intérprete de lenguaje de marcado de PiLLOw (Programming in (Constraint) Logic Languages on the Web) [Departamento de Inteligencia Artificial (UPM) 02] . La instanciación consiste en sustituir marcas (tags) en el armazón por el valor indicado en las secuencias del paso anterior.

El resultado final es un armazón parametrizado donde los programadores tienen que insertar su código. El proceso se realiza mediante la utilización de plantillas marcadas.

1.7.2 Plantillas y Secuencias

Como ya se ha comentado, parte del código dentro del armazón sobre el que se desarrolla está marcado. Las partes que están marcadas se denominan plantillas. Las plantillas pueden estar escritas en cualquier lenguaje de programación, siembre que se respeten las marcas establecidas. Las marcas indican los lugares donde se ubicarán los datos extraídos de los modelos. Las plantillas, entonces, se conciben como documentos XML que satisfacen la especificación de la Ilustración 95 .

Para rellenar las plantillas, se utilizan la misma solución que en los lenguajes de que integran SQL en páginas HTML. La información de las instancias del meta-modelo se pasa a un formato de listas de listas de términos igualdad (ver Ilustración 96 ) . Estas secuencias se incrustan en las plantillas mediante dos clases de etiquetas: repeat y v (de variable).

Ilustración 95. Especificación de una plantilla con marcado con esquemas XML.

La etiqueta repeat tiene un atributo id cuyo valor sirve para identificar las secuencias que contienen datos relevantes para el fragmento de código actual. Estas secuencias se caracterizan por contener un identificador id con el mismo valor asociado que en la plantilla. Para repeat anidados, se admite la existencia de múltiples id siempre y cuando no se repitan sus valores. La etiqueta v señala la existencia de una variable cuyo identificador aparece en la secuencia considerada.

Ilustración 96. Expresión BNF para definir secuencias de datos.

Las secuencias que describen la parametrización del armazón se especifican con la Ilustración 96 . Se trata de listas de listas de términos identificador = valor. El identificador se utiliza para identificar la variable a sustituir (marca v de la Ilustración 95 ). Existe un identificador reservado. Este identificador es id y se utiliza para identificar secuencias, posiblemente anidadas, de parametrizaciones.

1.7.3 Rellenando las Plantillas

El proceso para la reescritura de las plantillas está escrito íntegramente en PROLOG (ver Anexo I. ). La idea general es que hay que sustituir las etiquetas de las plantillas por información de los modelos. La información de los modelos viene en forma de lista de listas de términos que han de ser cotejados contra los identificadores asociados a las etiquetas repeat y v en la plantilla. El proceso se basa en la librería PiLLOW. Esta librería lee cualquier documento de texto y es capaz de extraer las marcas. El resultado es una lista de términos donde hay etiquetas o texto. El proceso (ver Ilustración 97 ) comienza analizando la plantilla.

Tras el análisis, se procede a estudiar la lista resultante, comprobando si el término a analizar es texto o una etiqueta. Si es texto, se imprime por pantalla. Si es una etiqueta y además un repeat, se filtran las secuencias que contienen la información de los modelos dejando solo aquéllas que contengan un término id cuyo valor coincida con el del atributo id de la etiqueta repeat encontrada. Con las secuencias filtradas, se vuelve a aplica recursivamente el análisis. Cuando la etiqueta es v, se realiza una sustitución de la etiqueta por el valor asociado dentro de las secuencias de datos de los modelos.

Al término del proceso, todas las etiquetas de la plantilla han desaparecido y sólo quedan los valores extraidos de los modelos ya situados en el código del armazón. Como ejemplo de aplicación, la Ilustración 98 muestra cómo se instancia una plantilla de regla de producción con una secuencia de datos ficticia.

Ilustración 97. Diagrama de decisión del proceso de instanciación de plantillas

Ilustración 98. Ejemplo de aplicación de secuencias a plantillas.

1.7.4 Patrones arquitectónicos de diseño

Los modelos generados para especificar un SMA definen implícitamente un conjunto de patrones arquitectónicos que deben soportarse en la arquitectura final. Los patrones arquitectónicos se entienden como abstracciones de arquitecturas del sistema y sus componentes. Al identificar el conjunto de elementos necesarios para definir el agente y el SMA, se está aludiendo a qué elementos han de estar presentes en la arquitectura que soporte el SMA, cómo se relacionan y qué funcionalidad deben aportar.

Respecto de la arquitectura del agente, los meta-modelos indican que deben existir componentes que representen:

§ El estado mental. Contiene toda aquella información que permite al agente tomar decisiones. A lo largo de la tesis, se ha expresado el estado mental como agregación de entidades mentales utilizando instancias del modelo de agente. Se ha distinguido entre el estado mental inicial del agente, asociando el agente a una instancia de estado mental, y los estados mentales intermedios, asociando una instancia de consulta autónoma a una instancia de estado mental. El paso del estado mental inicial por cada uno de los intermedios se indica mediante la ordenación de tareas dentro de flujos de trabajo e interacciones, que son las que modifican el estado mental. El estado mental, en este trabajo, se ha descrito de forma simbólica, por lo que se espera que en la arquitectura aparezca de igual forma. Sin embargo, hay desarrollos precedentes que muestran que no es necesario. Así, en los Situated Autómata se establecen procedimientos para transformar especificaciones simbólicas en autómatas equivalentes [Rosenschein y Kaelbling 95]

§ El gestor de estado mental. Describe cómo se gestionan las entidades mentales. Este gestor completa la definición de la evolución del estado mental estableciendo, por ejemplo, qué ocurre con los objetivos una vez se alcanzan, qué entidades ya no son válidas y si se pueden añadir nuevas entidades mentales mientras se está tomando una decisión. Estos aspectos se definen utilizando texto y modelos de tareas y objetivos.

§ El procesador de estado mental. Es el encargado de tomar las decisiones a partir del estado mental. A la descripción textual de este elemento se añade una descripción en forma de modelos y tareas. A veces es suficiente con decir que se trata de un planificador STRIPS, otras hay que detallar un conjunto de tareas que describan cómo se activan otras tareas.

§ Percepción. La percepción del agente obliga a que la arquitectura considere la comunicación con elementos anteriores a la construcción del sistema o con nuevos elementos identificados durante el análisis y el desarrollo. La percepción se puede encapsular en un componente o aparecer distribuida en un conjunto de componentes especializados.

§ Otros componentes. Durante el desarrollo aparecen instancias de aplicación asociadas al agente dentro del modelo de entorno. Estas asociaciones se trasladan a la arquitectura como componentes casi directamente ya que se trata de elementos cuyo desarrollo se hace utilizando técnicas convencionales, como tecnología de objetos.

Alguno de estos elementos son combinables, como el procesador y gestor de estado mental, dentro de la arquitectua final. De hecho, los motores de reglas, como se verá más tarde, son combinación de los elementos de gestión y procesamiento del estado mental.

Respecto a patrones arquitectónicos del SMA, su tratamiento difiere de los de los agentes. Estos patrones, no implican la existencia de una entidad SMA como componente, ya que en la mayoría de desarrollos existentes, los componentes asociables al SMA como tal se distribuyen entre los agentes del sistema, buscando sobre todo la descentralización. De cualquier forma, la arquitectura que soporte el SMA, debe tener en cuenta:

§ Coordinación. Las interacciones constituyen el comportamiento del agente cara a otros agentes. Dependiendo de cómo se planteen las interacciones, la arquitectura deberá soportar comunicación síncrona, asíncrona, dirigida por datos o dirigida por mecanismos de control [Papadopoulos y Arbab 98] . Además, hay que tener en cuenta que el agente puede participar en varios procesos de coordinación simultáneos, por lo que serán necesarios mecanismos de gestión de sesiones de comunicación.

§ Restricciones sociales. Las restricciones sociales se observan en la implementación mediante elementos que limiten las actuaciones o las percepciones de los agentes. Estas restricciones pueden aparecer como condiciones adicionales para la ejecución de tareas o como componentes arquitectónicos que inhiben al agente.

§ Funcionalidad. La funcionalidad del sistema se recoge principalmente en tareas, flujos de trabajo y objetivos. La existencia de tareas en la arquitectura final es difícil de evitar. Sin embargo, en el caso de los flujos de trabajo y los objetivos, se pueden obviar. MaSE consigue omitir los objetivos igualando un rol a un objetivo durante la implementación,. Los flujos de trabajo, aunque no aparezcan explícitamente, estarán presentes en la arquitectura como asociación entre tareas.

§ Estructuración del sistema. El modelo de organización proporciona una estructuración de elementos que sirve de partida a la hora de elaborar la arquitectura final del sistema. La estructuración en grupos es similar a la estructuración en paquetes aplicada en JAVA. A diferencia de los paquetes JAVA, la inclusión de los grupos en la organización se rige por la conveniencia de la agrupación en tanto se facilite la la consecución de los objetivos de la organización. La arquitectura final del sistema respetará esta estructura y proporcionará, si fuera necesario, mecanismos de gestión de los miembros de la organización así como servicios de localicación y, en caso necesario, matchmaking.

Para facilitar la revisión de estos aspectos de la especificación, se ha organizado la documentación del sistema siguiendo una estructura similar a la enumeración ya vista. Parte de estos aspectos ya han sido estudiados dentro de MESSAGE, identificando elementos computacionales que parecen especialmente adecuados como implementación de las especificaciones aquí mostradas. Estos componentes se utilizaron durante el desarrollo de MESSAGE como implementación de las especificaciones iniciales:

· Motores de reglas. Se usan para definir el comportamiento del agente. Se han utilizado especialmente motores de reglas de inferencia con encadenamiento hacia delante y hacia atrás. Estos motores permiten gestionar eficientemente la ejecución de un conjunto grande de reglas. La definición de reglas así como su gestión se consigue a través de un lenguajes de definición de reglas específico del motor. Las reglas constan de guardas, tambien conocidas como parte izquierda de la regla o LHS (Left Hand Side), y acciones, tambien conocidas como parte derecha de la regla o RHS (Right Hand Side). Su funcionamiento se limita a chequear la parte izquierda de la regla contra la memoria de trabajo del motor, si se satisfacen las guardas, entonces se ejecuta de forma mutuamente exclusiva la parte derecha de la regla. Las reglas pueden utilizarse para propósitos de gestión y procesamiento del estado mental mientras que las entidades mentales se pueden mostrar como hechos. Las restricciones sociales también se presentan dentro de un motor de reglas como reglas de alta prioridad o como guardas adicionales en las reglas existentes.

· Máquinas de estado para los protocolos. Las interacciones se pueden codificar en forma de máquinas de estados, donde dentro de cada estado o en la transición de un estado a otro se ejecutan tareas. Es importante la reutilización y flexbilidad de la implementación de la máquina de estados. Para el caso de MESSAGE, ya que se implementaban muchos protocolos, se diseñó un intérprete para plantillas de definición de máquinas de estado en XML. Gracias a este intérprete, las modificaciones en la comunicación tenían un impacto reducido en el diseño.

· Comunicación CORBA y FIPA ACL. Se utiliza para implementar las unidades de interacción. La comunicación mediante paso de mensajes utilizando FIPA ACL puede ser una buena opción desde las especificaciones de esta metodología, ya que en cada unidad de interacción se están transportando entidades mentales de un agente a otro. FIPA ACL se adecúa a este uso con facilidad, ya que el paso de mensajes es asíncrono y además contempla el transporte de entidades mentales de un agente a otro. Sin embargo, diseñar un agente que se comunique correctamente utilizando FIPA ACL no es trivial. Uno de los mayores problemas consiste en verificar la estructura y contenido de los mensajes, ya que es muy fácil que, debido a errores de programación, se malformen los mensajes. En este sentido, uso de CORBA es más sencillo y seguro ya que define interfaces de forma convencional y no requiere arquitecturas que soporten mensajería asíncrona.

Objetos. La POO es conveniente para representar y encapsular el comportamiento de entidades como las tareas, los objetivos o los eventos. Para la representación de tareas, OMG proporciona un conjunto de interfaces compatibles con el uso de las tareas tal y como se ha mostrado aquí [OMG 00c] . Para los objetivos, reutilizando la experiencia de proyectos anteriores [Gomez-Sanz, Garijo y Pavon 00]"  ADDIN REFMAN ÿ\11\05‘\19\01\00\00\00\1F[Gomez-Sanz, Garijo y Pavon 00]\00\1F\00\13d:\5Ctesis\5Crefinitiva\03\00\03139'Gomez-Sanz, Garijo, et al. 2000 139 /id\00'\00 [Gomez-Sanz, Garijo y Pavon 00] , se diseñaron estructuras de datos arbóreas que facilitaban la gestión de los mismos. Estas estructuras se basaban en los arboles Y/O ya comentados en la presentación del meta-modelo de objetivos y tareas (ver sección 2.4 ).

1.8 Conclusiones

Este capítulo se ha mostrado una integración de la generación de la especificación del sistema como una actividad más en el modelo de desarrollo del RUP. La integración se ha planteado por un lado definiendo qué productos son deseables en cada iteración y fase, y por otro qué actividades se involucran en cada fase de desarrollo.

En este trabajo, estas actividades han sido tomadas como guía de los productos que deberían generarse y de las posibles dependencias que se pueden encontrar los usuarios finales de esta metodología. Aunque su número es elevado, no se plantea en ningún momento que el proceso de desarrollo tenga que seguir tantos pasos. Los usuarios pueden decidir unir varias actividades para generar otras más genéricas siempre y cuando se respeten los productos que se deben generar. Además, las actividades identificadas constituyen un punto de partida para futuros trabajos. Su número y propósito concreto deberán ser probados en distintos desarrollos.

En cuanto a la composición de las actividades dentro de los diagramas de actividades de análisis y diseño, no se prevén cambios en estos diagramas al variar las iteraciones. Los diagramas marcan las dependencias entre las actividades y, por lo tanto, el orden en que debieran producirse cada parte del modelo completo. Si el desarrollador en una iteración encuentra que el nivel de detalle alcanzado por una actividad es suficiente, entonces, puede dar la actividad por concluida.

La implementación final del sistema se ha estudiado desde dos puntos de vista: como un proceso automatizado de parametrización de arquitecturas software y como un problema de aplicación de patrones arquitectónicos de diseño. Dentro del primer enfoque, se ha proporcionado un medio de instanciación de arquitecturas software que toma como entrada los modelos que forman la especificación del sistema. Dentro del segundo, se ha estudiado qué patrones arquitectónicos son más relevantes y qué elementos computacionales pueden soportarlos.