Logo Studenta
¡Este material tiene más páginas!

Vista previa del material en texto

© Copyright por Leonardo Varela Guevara y José Manuel Guerrero Serrano, 2004
 2
Modelo de actores y la implementación del portal de servicios 
para sistemas móviles en el lenguaje orientado a actores, 
SALSA. 
 
Por 
Leonardo Varela Guevara 
José Manuel Guerrero 
Asesor: Rafael Gómez 
Tesis de pregrado Universidad de los Andes 2004 
TESIS 
 
Parte de los requisitos de graduación de Ingeniería de 
Sistemas y Computación en la Universidad De Los Andes. 
 
Bogotá, Colombia 
 3
Dedicada por Leonardo: 
A mis padres, por su amor, apoyo incondicional, consejos y 
entendimiento. 
A mis hermanos por su amor, soporte emocional y profesional y por su 
tiempo. 
A Gabriela por su amor, apoyo emocional, soporte profesional, por su 
paciencia y entrega. 
A Alejandro Martínez por que debió ser coautor de esta tesis, pero la 
vida no le alcanzó. 
 
 
Dedicada por José Manuel: 
A Andreita por ser puro amor 
A mi familia por ser el apoyo incondicional y el amor eterno 
Al Mante por lo enseñado 
A los BTFC por ser amigos del alma 
 4
AGRADECIMIENTOS 
 
En primer lugar, nos gustaría agradecer a nuestro asesor, Profesor 
Rafael Gómez, por ser un excelente mentor, pero sobretodo por 
tratarnos como iguales y como amigos, por su confianza y por creer en 
nuestro trabajo de investigación. Él nos ha ayudado a ver esta tesis de 
una manera más abstracta y profunda. 
 
También nos gustaría hacer extensivo este agradecimiento a los 
profesores de Ingeniería de Sistemas y Computación de la Universidad 
de los Andes: José Abasolo, Beatriz Acosta, Germán Bravo, Rodrigo 
Cardoso, Ángela Carrillo, Gloria Cortés, Harold Cruz, Fernando de la 
Rosa, Rafael García, Olga Lucia Giraldo, Ernesto Lleras, Olga Mariño, Luz 
Adriana Osorio, Francisco Rueda, Sandra Rueda, Silvia Takahashi, Jeimy 
Cano, Juan Diego Jiménez, Juan Pablo Quiroga, y todos los demás 
miembros del departamento a quienes les debemos nuestra más 
profunda gratitud por el indescriptible impacto que tuvieron en nuestras 
vidas profesionales y en nuestro proceso de crecimiento profesional. 
 
Y especiales gracias al grupo de desarrolladores de SALSA, 
especialmente a Carlos Arturo Varela, que siempre estuvieron atentos y 
disponibles a ayudarnos durante nuestro proceso de aprendizaje y 
desarrollo de este trabajo de Tesis. 
 
 
 5
Agradecimientos de Leonardo 
 
A mis padres, Carlos Arturo y Flor Alba, mis hermanos Carlos y Javier, 
que siempre me han brindado amor incondicional, soporte emocional y 
profesional, que me han hecho creer que es posible, cuando lo he 
necesitado en momentos críticos de mis estudios de pregrado. A mi 
papá que con su ternura y sabiduría me ha ayudado a mostrarme el 
camino, a mi mamá por su ternura e inteligencia que me ha guiado en 
momentos difíciles, a mis hermanos porque siempre conté con ellos en 
todo momento y por brindarme apoyo en todo sentido. 
 
A Gabriela Pizo, por permitirme compartir con ella mis momentos más 
maravillosos, ella ha sido una fuente constante de amor, paciencia, 
felicidad, entendimiento, valor, fuerza y progreso, por su continuo 
apoyo profesional, por leer y hacer comentarios de este documento, por 
su tiempo y por su casa. 
 
A José Manuel Guerrero, coautor de la tesis, por su paciencia, su 
dedicación, su amistad, su soporte, por permitirme compartirle cosas 
diferentes a la tesis, por la confianza y la credibilidad que siempre hubo 
como grupo, por su tiempo y por dejar que se estableciera mi casa 
como sede de trabajo. 
 
A mi abuela Ana Tulia, mis primos, primas, tíos, tías, que también han 
sido un soporte emocional durante mi vida estudiantil, en especial a mis 
 6
sobrinas Tatiana y Catalina que me han brindado paz y alegría desde su 
nacimiento, por ser especiales, y por su ternura. 
 
A todas las personas que de una u otra manera hicieron placentera mi 
vida estudiantil en la Universidad de los Andes: a mis amigos del equipo 
de fútbol los Borrachos del Tablón FC: José Manuel, Carlos Alberto, 
Miguel, Fabián, Javier Camilo, Daniel, Pachón, Jara, Lina, Jeisson, Hugo, 
Pana, Darwin, a mis compañeros de proyectos en los diferentes cursos, 
a Deicy, Sergio y todas las demás personas que me permitieron 
disfrutar al máximo la época universitaria y que hicieron de ella una 
experiencia inolvidable. 
 
 
Agradecimientos de José Manuel 
Gracias monumentales a Andreita, quien todo el tiempo estuvo a mi 
lado, me dió todo su amor y me enseñó a soñar con un mundo mejor. 
Quisiera agradecer enormemente a mi familia, a Pedro, Mary, Nando y 
Rafa, porque junto a ellos sigo creciendo día a día, aprendiendo de cada 
uno de ellos y compartiendo las alegrías y tristezas para hacer la vida 
mucho más llevadera. 
Muchas gracias a Leonardo, mi compañero de tesis, porque con su 
confianza y entusiasmo me ayudó a creer en mi mismo y a emprender 
este ambicioso proyecto que al final tuvo un muy buen desenlace. 
A Alejandro Martínez, el Mante, por que alguna vez formó parte de esta 
tesis y siempre será parte de nuestras vidas. 
 7
Y gracias totales a todos los BTFC, a los que alguna vez hicieron parte 
del equipo pero en especial a Barre, Miguel, Leonardo, Fabián, Daniel, 
Lina, Pana, Javier, Pachón y Jara quienes de una u otra menara hicieron 
que existiera el Oso y por darme la oportunidad de vivir junto a ellos 
momentos inolvidables. 
 
 
 
 8
 
TABLA DE CONTENIDO 
1. INTRODUCCIÓN .................................................................................................... 11 
2. EL MODELO DE ACTORES .................................................................................... 15 
2.1. ACERCAMIENTO AL MODELO DE ACTORES ................................................................ 15 
2.2. COMPUTACIÓN WORLDWIDE .................................................................................. 16 
2.2.1. Nombramiento Universal ........................................................................ 17 
2.2.2. Escenarios de aplicación ......................................................................... 18 
2.2.2.1. Agentes de Internet ....................................................................................... 18 
2.2.2.2. Problemas de “divide y conquistarás” con paralelismo. ............................... 19 
2.2.2.3. Otros escenarios............................................................................................. 21 
2.2.2.3.1. Aplicaciones por colaboración.................................................................. 21 
2.2.2.3.2. Computación Coordinada ......................................................................... 21 
2.2.3. Comunicación remota y migración......................................................... 22 
2.2.3.1. Teatros ............................................................................................................ 23 
2.2.3.2. Migración de actores universales................................................................... 23 
2.2.3.3. Migración cast................................................................................................. 24 
2.2.3.4. Migración de mensajeros ............................................................................... 24 
2.2.4. Modelo jerárquico de coordinación ........................................................ 25 
3. SALSA (SIMPLE ACTOR LANGUAGE, SYSTEM AND ARCHITECTURE)...... 26 
3.1. COMPUTACIÓN WORLDWIDE EN SALSA.................................................................. 27 
3.1.1. Modelo de nombramiento universal....................................................... 28 
3.1.1.1. Nombres Universales de Actores ................................................................... 29 
3.1.1.2. Localizadores Universales de Actores............................................................ 31 
3.1.1.3. Nombramiento en el Computador Worldwide............................................... 32 
3.1.1.3.1. Servicio de Nombramientopara actores universales.............................. 32 
3.1.1.3.1.1. Protocolo UANP ..................................................................................... 33 
3.1.2. Comunicación Remota y Migración ........................................................ 34 
3.2. PROGRAMACIÓN ORIENTADA A ACTORES................................................................. 35 
3.2.1. Creación de Actores ................................................................................ 36 
3.2.2. Envío de Mensajes .................................................................................. 37 
3.2.3. Cambios de Estados Internos................................................................. 37 
3.3. MODELO DE COORDINACIÓN.................................................................................. 38 
3.3.1. Token Passing Continuation ................................................................... 38 
3.3.2. Join Continuation .................................................................................... 39 
3.3.3. Named Tokens ........................................................................................ 40 
3.3.4. First-Class Continuation .......................................................................... 40 
4. PORTAL DE SERVICIOS PARA SISTEMAS MÓVILES......................................... 41 
4.1 MODELO DEL SISTEMA........................................................................................... 41 
4.2 ARQUITECTURA PROPUESTA DEL SISTEMA................................................................ 42 
4.2.1 Agente Usuario ............................................................................................ 44 
4.2.2 Espacio Activo .............................................................................................. 45 
4.2.3 Unidad de Espacio Activo ............................................................................ 48 
4.2.4 Gestor de Usuarios ...................................................................................... 49 
 9
4.2.5 Fuente de Posicionamiento ......................................................................... 50 
4.2.6 Gestor Contexto Temporal .......................................................................... 50 
5 IMPLEMENTACIÓN DEL PORTAL DE SERVICIOS PARA SISTEMAS 
MÓVILES EN SALSA ....................................................................................................... 51 
5.1 EL MODELO DE ACTORES EN LA ARQUITECTURA DEL PORTAL DE SERVICIOS PARA 
SISTEMAS MÓVILES ............................................................................................................. 51 
5.1.1 Definición de teatros ................................................................................... 52 
5.1.1.1 Agente Usuario................................................................................................. 53 
5.1.1.2 Espacio Activo ................................................................................................. 53 
5.1.1.3 Unidad de Espacio Activo................................................................................. 54 
5.1.2 Definición de actores estáticos ................................................................... 54 
5.1.2.1 Agente Usuario Control .................................................................................... 55 
5.1.2.2 Espacio Activo Control ..................................................................................... 55 
5.1.2.3 Unidad Espacio Activo Control ......................................................................... 56 
5.1.3 Definición de Servicios ofrecidos por los actores estáticos.............................. 57 
5.1.3.1 Definición de los servicios que ofrecen los agentes usuarios............................... 57 
5.1.3.2 Definición de los servicios que ofrecen los espacios activos. .............................. 57 
5.1.3.3 Definición de los servicios que ofrecen las unidades de espacio activo................ 58 
5.1.4 Definición de actores dinámicos..................................................................... 58 
5.1.4.1 Agente Usuario Mensajero................................................................................ 59 
5.1.4.2 Espacio Activo Mensajero................................................................................. 59 
5.2 IMPLEMENTACIONES DEL PORTAL DE SERVICIOS PARA SISTEMAS MÓVILES USANDO 
SALSA 59 
5.2.1 Alcance de la implementación del portal de servicios para sistemas 
móviles 60 
5.2.2 Parsers de lectura de requerimientos y productos.................................... 61 
5.2.2.1 Agente Usuario ............................................................................................... 61 
5.2.2.2 Espacio Activo................................................................................................. 76 
5.2.2.3 Unidad Espacio Activo .................................................................................... 77 
5.2.3 Escenarios de implementación.................................................................... 81 
5.2.3.1 Implementación utilizando un mensajero simple ................................................ 84 
5.2.3.2 Implementación utilizando un mensajero inteligente .......................................... 84 
5.2.4 Resultados Obtenidos.................................................................................. 86 
5.2.4.1 Descripción del ambiente de ejecución .............................................................. 86 
5.2.4.2 Comparación de los datos obtenidos .................................................................. 88 
5.2.4.2.1 Resultados de la ejecución con el actor mensajero simple que migra a 10 UEA
 88 
5.2.4.2.2 Resultados de la ejecución con el actor mensajero inteligente que migra a 10 
UEA 89 
5.2.4.2.3 Resultados de la ejecución con el actor mensajeros inteligente que migra a 5 y a 
10 UEA 89 
5.2.4.3 Análisis de los resultados .................................................................................. 90 
RECOMENDACIONES ..................................................................................................... 96 
CONCLUSIONES .............................................................................................................. 99 
LISTA DE FIGURAS....................................................................................................... 101 
LISTA DE TABLAS ......................................................................................................... 102 
LISTA DE EJEMPLOS DE CODIGO............................................................................. 103 
ANEXOS ........................................................................................................................... 108 
 10
A. CÓMO DESCARGAR E INSTALAR EL PLUG-IN DE SALSA E INSTALARLO EN EDITPLUS.
 108 
B. COMO DESCARGAR SALSA Y EJECUTAR SU PRIMER PROGRAMA EN 
SALSA.......................................................................................................................... 114 
C. CÓMO COMPILAR Y EJECUTAR PROGRAMAS EN SALSA USANDO 
SISTEMA OPERATIVO DIFERENTE A WINDOWS ............................................. 128 
D. UN EJEMPLO CON MIGRACION. .................................................................. 130 
E. EJEMPLO DEL USO DE NAMED TOKENS .................................................... 136 
F. INSTALACION DEL PORTAL PARA SERVICIOS MOVILES, USO DEL CD 
INCORPORADO. ....................................................................................................... 138 
 
 11
1. Introducción 
 
El crecimiento de los recursos que se encuentran disponibles en Internet 
hace de este un computador global con capacidad gigante, conocido en 
el modelo de actores como el WWC (World Wide Computer). El objetivo 
del WWC es convertir a la Web en una infraestructura unificada, 
dependiente, lo cual la hace especial para la computación distribuida. Es 
decir, aprovechatodos los recursos sub-utilizados para proveer a los 
programadores la potencialidad de distribuir globalmente sus 
aplicaciones; se trata de lograr ofrecer a los usuarios móviles y a los 
colaboradores remotos una interfaz unificada para los datos y 
programas. Varias aplicaciones en múltiples dominios, tan diversas 
como computación paralela masiva, colaboración remota, computación 
coordinada, y lo que nos interesa más en este trabajo de tesis que son 
los agentes de Internet, son los temas que motivan el crecimiento y 
desarrollo del WWC. 
 
Dada la potencialidad encontrada en el WWC, este trabajo de tesis 
pretende introducir este concepto en el siguiente escenario: imagine 
entrar a un centro comercial o algún otro espacio activo y que su 
dispositivo móvil sea capaz de ofrecer justo aquella oferta que usted 
estaba buscando, o quizás una que no era la prioritaria pero que usted 
desea, dado un historial de interacciones con los diferentes espacios 
activos. Mas allá de esto, imagínese como empresa que pueda ofrecer 
descuentos u ofertas a alguien que seguramente se interesa por sus 
productos, y que, además, esas personas estén lo suficientemente 
cercanas a usted. En general, imagine que cada vez que usted cambia 
 12
de espacio activo (espacio geográfico reducido) el servidor que computa 
la generación de ofertas cambia dinámicamente en tiempo de ejecución. 
 
El aporte de esta tesis es un desarrollo del problema anteriormente 
introducido en un lenguaje de programación que soporta el modelo de 
actores que se llama SALSA (Simple Actor Language, System and 
Architecture), que implementa la teoría propuesta por este modelo. 
 
Los niveles de adaptabilidad que exigen problemas como el planteado 
anteriormente requieren de tecnologías que en el momento son 
insuficientes; por ejemplo Java se usa mucho por su soporte para 
contenido Web dinámico a través de applets, clases cargadas por red, 
verificación de “bytecode”1, ejecución segura, código multi-plataforma, y 
código de bytes compatible, para nombrar algunas. 
 
Java es una tecnología promisoria para computación sobre Internet y 
móvil, pero no facilita la programación orientada a actores, por esto, 
SALSA nos ofrece una gran ventaja sobre Java, pues es un lenguaje de 
programación basado en Java, que hace transparente al programador la 
sincronización de mensajes y migración de actores, además de su 
capacidad de reconfigurar dinámicamente las aplicaciones. 
 
En esta tesis se pretende estudiar la potencialidad del uso del WWC, el 
modelo de actores usando SALSA en la implementación de un problema 
cuya arquitectura fue propuesta en el diseño del portal de servicios para 
 
1 Código de bytes del inglés “bytecode”, código generado por el compilador de Java, para ser interpretado por la 
máquina. 
 
 13
sistemas móviles. Este problema lo clasificamos como uno de los 
escenarios de aplicación de los problemas que se resuelven usando 
agentes móviles. 
 
Pretendemos, además, hacer mediciones exactas en mejoras de tiempo, 
usando diferentes maneras de atacar el problema. Para esto, se 
plantearon diferentes escenarios que van a ser descritos a continuación: 
 
• Agente simple: Imagine un mensajero que recorre un centro 
comercial o espacio activo, buscando el producto que usted 
necesita, y que obtenga para usted una lista de todas las ofertas 
que se ajustan al producto que usted requiere. Este mensajero es 
un agente simple, dado que no realiza ningún procesamiento 
inteligente diferente de buscar un producto con unas 
características dadas. 
 
• Agente inteligente: Ahora imagine que este mensajero es capaz 
de velar por sus intereses y filtrar algunas ofertas que usted no 
tendrá en cuenta por alguna razón. De esta manera, usted 
recibirá una lista más reducida y acorde con sus necesidades. 
 
• Varios agentes: Ahora imagine que varios agentes simples se 
reparten los locales de un espacio activo para hacer su trabajo y 
de esta manera optimizar el tiempo de búsqueda del producto 
deseado. 
La estructura del documento consta de cuatro grandes partes: primero 
se introducirá el modelo de actores, un acercamiento básico para el 
 14
entendimiento de este modelo; luego se continúa con una breve 
introducción orientada hacia qué es el lenguaje SALSA, se exponen sus 
componentes y su funcionalidad; se sigue con la explicación de cuál es 
la estructura y diseño de la aplicación del portal de servicios para 
sistemas móviles[2]; para terminar, se presenta una manera de adaptar 
la especificación de diseño con el lenguaje. Al mismo tiempo se 
intentará mostrar la potencialidad de SALSA con respecto a Java, 
principalmente, y por qué usar un lenguaje de programación que 
implemente el modelo de actores permite un gran avance en la 
consecución de los objetivos de la especificación. 
 15
 
2. El modelo de actores 
 
2.1. Acercamiento al modelo de actores 
 
Los actores extienden los objetos secuénciales encapsulando un hilo 
de control junto con procedimientos y datos en la misma entidad; de 
esta manera proveen una unidad de abstracción y distribución 
cuando se usa concurrencia. Los actores se comunican por paso de 
mensajes asincrónicos (Figura 1); a menos que se fuercen maneras 
de coordinación específicas, los mensajes se reciben en un orden 
arbitrario que puede diferir del orden de envío. 
 
Una implementación de este modelo normalmente provee para los 
mensajes una caja de correo local, y no hay garantía de que los 
mensajes sean procesados en el mismo orden en el cual son 
recibidos. Los actores son intrínsecamente independientes, 
concurrentes y autónomos, lo cual permite eficiencia en la ejecución 
paralela [1]. 
 16
 
Figura 1. Diagrama de un Actor 
2.2. Computación Worldwide 
 
La computación Worldwide estudia los aspectos relacionados con el 
uso de plataformas de computación y colaboración usando redes de 
áreas grandes, así como la Web y tecnologías de Internet para 
tomar ventaja de todos los elementos relacionados con los 
dispositivos que pueden estar conectados a estas redes. 
 
El paradigma tradicional de uso de recursos locales es irrelevante 
cuando este tipo de computación entra en juego, dado que la 
capacidad de recursos que se pueden encontrar, geográficamente 
distribuidos, es grande. 
 
 17
Toda esta infraestructura puede ser pensada y accedida 
uniformemente como parte de un todo unificado: El computador 
global (Word Wide Computer). 
 
2.2.1. Nombramiento Universal 
 
Es el mecanismo para referenciar sistemas móviles globales, y 
para obtener dinámicamente referencias a objetos desde sus 
nombres, independientemente de su ubicación actual. 
 
En la computación Worldwide es indispensable el uso de 
mecanismos de nombramiento universal. Estos mecanismos 
tienen que facilitar la movilidad de los objetos, lo cual significa 
que se debe abstraer de la ubicación del objeto, con el fin de una 
migración independiente de ésta, en contraste con la 
infraestructura de la Web, que usa referencias dependientes de la 
ubicación (URL) y por ende pierde la capacidad de relocalización 
transparente de documentos. 
 
Es importante tener en cuenta los protocolos de comunicación de 
los dispositivos disponibles que se encuentran conectados a 
Internet; dada su naturaleza heterogénea, es de esta manera 
que el mecanismo de nombramiento debe, además, ser 
independiente de la plataforma e incluir el protocolo (o el 
conjunto de protocolos) que se requieren para la comunicación 
con el objeto. 
 
 18
2.2.2. Escenarios de aplicación 
 
Los escenarios de aplicación únicamente pretenden mostrar los 
diferentes ambientes, problemas, o circunstancias en las cuales el 
desarrollo del modelo de actores es útil, y nos permite una 
ventaja sobre otros modelos o paradigmas de programación. De 
la misma manera,para mostrar como nuestro problema en 
particular se encuentra dentro de esta gama de escenarios aptos 
para el uso de actores. 
 
2.2.2.1. Agentes de Internet 
 
Es la representación de un objeto en diferentes escenarios 
que son capaces de resolver dinámicamente situaciones dadas 
para su representante. Estos agentes tienen la potencialidad 
de viajar sobre Internet para lograr sus objetivos. 
 
Como ejemplos de esto, podemos analizar los remates en 
Internet y el caso que nos ocupa en esta tesis, que es el 
portal de servicios para sistemas móviles. En el primero, el 
agente es capaz de ofertar “inteligentemente” hasta un 
máximo ofrecido por su representante y hasta el último 
minuto del remate. Así mismo, en el segundo caso, cada 
usuario del portal tiene su representación en el mismo, y este 
es capaz de resolver “inteligentemente” requerimientos de 
productos solicitados o informar de posibles ofertas de locales 
de espacios activos (centros comerciales, lugares comerciales 
 19
concurridos) que sean de interés de su representado. A su 
vez, cada representación de un usuario tiene un agente que 
es capaz de representarlo en un espacio activo y este también 
tiene representantes que buscan los requerimientos del 
usuario en los diferentes locales que son agentes que 
representan a los locales o sitios comerciales de estos 
espacios activos; esto se explica mejor con la siguiente figura 
(Figura 2). 
 
 
Figura 2. Modelo del portal de servicios para sistemas 
móviles 
 
2.2.2.2. Problemas de “divide y conquistarás” con 
paralelismo. 
 
 20
Existen problemas para los cuales se pueden identificar 
claramente divisiones que pueden ser procesadas 
paralelamente sin dependencia entre las partes, en estos, se 
puede aplicar la estrategia “divide, distribuye y conquista” 
donde el resultado son las soluciones parciales computadas 
de manera distribuida. 
 
Sin embargo este tipo de problemas requieren migración de 
datos y código como un servicio básico ofrecido por el 
lenguaje de programación para resolver el problema. 
 
Los siguientes son algunos de los problemas que se 
encuentran en este tipo de escenario: análisis de criptografía: 
encontrar llaves criptográficas, rendering de animaciones e 
imágenes complejas. 
 
Actualmente SALSA esta siendo utilizado para resolver un 
problema en física de partículas, identificado hace mas de 30 
años, sobre la existencia de partículas subatómicas ("missing 
baryons") no observadas anteriormente, y que requiere de 
capacidades computacionales masivas para análisis de datos. 
Referencia: 
 
B. Szymanski, C. Varela, J. Cummings, and J. Napolitano, 
Dynamically 
Reconfigurable Scientific Computing on Large-Scale Heterogeneous 
Grids, 
 21
Lecture Notes in Computer Science, vol. 3019, Springer Verlag, 
Berlin, 
2004, R. Wyrzykowski, J. Dongarra, M. Paprzycki and J. 
Wasniewski (Eds.), 
Proc. of the Fifth International Conference on Parallel Processing 
and 
Applied Mathematics (PPAM'2003). Czestochowa, Poland, 
September 2003 
(Revised papers), pp. 419-430. 
 
2.2.2.3. Otros escenarios 
 
Existen otros campos computacionales a los cuales el modelo 
de actores aplica, los cuales vamos a mencionar, pero no 
vamos a entrar en detalle. 
 
2.2.2.3.1. Aplicaciones por colaboración 
 
Son las que permiten la contribución humana remota 
proveyendo una única interfaz a los datos; el famoso 
(WYSIWIS) “Lo que usted ve es lo que yo veo” (del Ingles 
“What You See Is What I See)”. 
 
2.2.2.3.2. Computación Coordinada 
 
Uno de los principales problemas de la computación 
paralela es la coordinación de los componentes 
autónomos, como, por ejemplo, los motores de búsqueda 
 22
distribuidos en la Web, las transacciones distribuidas, y la 
computación punto a punto. 
 
2.2.3. Comunicación remota y migración 
 
La migración y la comunicación remotas exigen la localización y 
acceso a los recursos computacionales asociados de una manera 
independiente de la ubicación de estos. Es importante, entonces, 
el nombramiento universal antes visto, con lo cual este modelo 
de actores logra la abstracción de estos tipos de movilidad. 
 
Las metas que pretende lograr este modelo son la transparencia 
en la comunicación entre dos actores: el envío de mensajes entre 
estos debe ser independiente de su ubicación, por lo cual, a los 
actores no les debe importa si el mensaje se envía a una 
ubicación remota o a una local. Sin embargo, esta transparencia 
no debe ser comprometida por la movilidad de los actores; es 
decir, si un actor migra mientras se le envía un mensaje, esto no 
debe afectar la semántica de recepción. 
 
Logrando estas metas, se asegura la posible reconfiguración de 
aplicaciones en tiempo de ejecución de forma arbitraria, dada la 
naturaleza asíncrona de los mensajes y la migración. 
 
Existen, además, actores que, por su naturaleza, no son móviles 
o fácilmente movibles; por ejemplo una salida de una pantalla, o 
una gran base de datos. A estos actores se les denomina actores 
 23
de ambiente; de esta manera, cuando una actor migra, 
automáticamente obtiene referencia de los actores de ambiente 
en el teatro local. 
 
Estas metas son de las más complicadas de obtener, dado que 
una aplicación que corra en el computador global debe manejar 
errores que no se dan en ambientes de ejecución locales, como, 
por ejemplo, los fallos en hosts remotos. Esto es delicado de 
implementar, si se quiere ofrecer la seguridad de que los 
mensajes sean recibidos siempre. Los tipos de migración que se 
manejan dentro del modelo son: migración de actores 
universales, migración cast y migración de mensajero. 
 
2.2.3.1. Teatros 
 
En este modelo, los actores universales residen en teatros. 
Los teatros proveen un sistema de ejecución para actores 
universales, permitiendo la comunicación remota y la 
migración, así como el acceso al ambiente local. 
 
La comunicación remota se desarrolla mediante el envío de 
mensajes asincrónicamente entre actores que pueden 
encontrarse en diferentes teatros y pueden contener 
referencia a otros actores universales y a otros objetos 
serializables de Java. 
 
2.2.3.2. Migración de actores universales 
 24
 
Es la libre migración de actores, de teatro en teatro, en 
respuesta a un mensaje que le requiere al actor su migración. 
Todos los “conocidos” del actor se mantienen igual, excepto 
por los actores de ambiente, que se vuelven referencias a los 
correspondientes a la entrada al nuevo teatro. Esta migración 
hace que se actualice la base de datos del servidor de 
nombres con la nueva ubicación del actor, y dejando en el 
teatro original un actor temporal que reenvíe los mensajes 
dirigidos al actor que se encuentra migrando al nuevo teatro, 
mientras este los puede hacer llegar hasta su buzón de 
correo.[3][4] 
 
2.2.3.3. Migración cast 
 
Por cast se entiende unidades de coordinación, es decir, una 
reunión de actores que se agrupan con alguna característica 
común, lo cual hace que tenga sentido la migración de toda 
una unidad de una sola vez. Aunque algunas veces no es 
posible migrar toda una unidad, entre más cercanos y 
correlacionados se encuentren los actores, mejor desempeño 
tendrá la aplicación. 
 
2.2.3.4. Migración de mensajeros 
 
Un mensajero es un actor especial que migra con el propósito 
de llevar mensajes de un teatro local a un teatro remoto. Un 
 25
mensajero también puede tener otros comportamientos, tales 
como hacer del envió de mensajes algo más robusto, dado 
que, como es un actor, persistirá sobre fallas temporales en el 
actor objetivo, intentar el retorno de mensajes, cuando hay 
fallas en el envío, seguir actores móviles, realizar acuse de 
recibo o procesamiento, manejar excepciones comunes en el 
teatro del actor objetivo, estar a cargo de la red y lo que 
tenga que ver con nombramiento. 
 
En el caso particularde esta tesis, la función de los 
mensajeros es cargar información para ser consultada en 
otros teatros y regresar con resultados, que pueden ser de 
diferentes maneras: procesados en el teatro remoto, o para 
procesar en el teatro local cuando el mensajero regrese. 
 
2.2.4. Modelo jerárquico de coordinación 
 
La coordinación de actividades es uno de las tareas más difíciles 
en las aplicaciones de computación global y es uno de los 
aspectos de los cuales los desarrolladores de este tipo de 
aplicaciones se preocupan más, específicamente la coordinación 
concurrente, distribuida y las actividades móviles en sistemas 
asíncronos. Los mecanismos tradicionales de coordinación están 
basados en espacio compartido, y por esto no escalan a 
ejecución global. 
 
 26
El modelo para coordinación de actores escalable, como base 
para el razonamiento y la construcción de sistemas distribuidos 
es introducido con SALSA (Simple Actor Language Systems, and 
Applications). Sin embargo este tema se sale del alcance de 
nuestra tesis y más información puede ser encontrada en los 
libros y documentos que se dan como referencia en la bibliografía 
de este trabajo.[5][6][7] 
 
 
3. SALSA (Simple Actor Language, System and Architecture) 
 
SALSA es un lenguaje de programación que implementa el modelo de 
actores descrito en el capitulo anterior. Obviamente, tiene su propia 
implementación de nombramiento universal, de comunicación remota, y 
esconde al desarrollador la difícil tarea de manejar la concurrencia y la 
coordinación entre actores. 
 
Al ser SALSA un lenguaje de programación que se está escribiendo en 
Java, le presenta al desarrollador una sintaxis muy parecida a la de este 
último, además toda su potencialidad, dado que todo el código Java 
puede ser reutilizado en SALSA. 
 
Lo anterior se debe a que el código SALSA es preprocesado por el 
compilador de salsa y convertido a código Java, el cual es compilado 
junto con la librería de Actores de SALSA, a Bytecode de Java que 
cualquier implementación de la maquina virtual de Java puede correr, 
haciendo a SALSA, al igual que Java, un lenguaje multiplataforma, como 
 27
lo podemos observar en la siguiente figura 
(Figura3).
 
Figura 3. Diagrama de compilación de un programa en 
salsa 
 
3.1. Computación Worldwide en SALSA 
 
Vamos a entrar un poco en detalle de cómo es la 
implementación que hace SALSA para solucionar el problema del 
nombramiento universal, la comunicación remota, y la migración 
en la computación Worldwide. SALSA soporta la especificación del 
modelo de actores descrita en el capitulo anterior, de esta 
manera, SALSA permite desarrollar programas que se puedan 
 28
ejecutar en el computador Worldwide (un conjunto de máquinas 
virtuales que le dan “posada” o soporte a los actores universales, 
llamadas teatros), y, aunque algunas cosas no serán 
ampliamente detalladas en este capitulo, en las referencias se 
podrán encontrar documentos que profundizan más acerca de 
esta implementación. 
 
3.1.1. Modelo de nombramiento universal 
 
El modelo de nombramiento universal propuesto por SALSA está 
basado en la estrategia de identificación uniforme de recursos 
usando – Identificador Uniforme de Recursos [2]- (URI, del inglés 
Uniform Resource Identifier), éstos incluyen Nombres Uniformes 
de Recursos (URN, del inglés Uniform Resource Names), y 
también Localizadores Uniformes de Recursos (URL, del inglés 
Uniform Resource Locators), al igual que Citaciones Uniformes de 
Recursos (URC, del inglés Uniform Resource Citations) que 
contienen metadatos. Desafortunadamente, sólo los URL están 
siendo desarrollados ampliamente, y con esto perdiendo toda la 
movilidad transparente de los recursos de la Web. 
 
SALSA especifica dos tipos de actores, los que no tienen nombre 
universal y los que lo tienen y además su nombre es legible y 
adivinable, de esta manera y siguiendo la convención para el 
direccionamiento de documentos, se usan URI para los nombres 
de los actores y sus ubicaciones. 
 
 29
La independencia de la ubicación se logra a través de un servicio 
de nombramiento universal, que permite localizar a los actores 
únicamente con su nombre y sin depender de su ubicación. Este 
servicio se detallará en la sección 3.1.1.3.1 
 
3.1.1.1. Nombres Universales de Actores 
 
Los nombres universales de actores son identificadores 
globales que persistente sobre la vida del actor y proveen una 
respuesta sobre la ubicación del mismo como se puede ver en 
la siguiente figura (Figura 4). 
 
 30
 
Figura 4. Nombres Universales de Actores 
 
Esta estructura permite a los programas clientes localizar un 
actor en cualquier momento inclusive si el actor migra muchas 
veces en su ciclo de vida dado que su nombre seguirá siendo 
el mismo todo el tiempo. 
 
Un ejemplo de una UAN utilizada para la implementación en 
SALSA del portal de servicios para sistemas móviles es el 
siguiente: 
 
 31
uan://chie.uniandes.edu.co:3030/unidadEspacioActivo/calzado
Bosi 
 
La respuesta de la ubicación actual del actor esta dada por un 
servidor de UANs escuchando en el host de Internet 
chie.uniandes.edu.co en el puerto 3030, el cual es el puerto 
por defecto de los demonios de UANs y puede ser omitido. 
 
3.1.1.2. Localizadores Universales de Actores 
 
Esta basado en un URI y describe la ubicación actual de un 
actor permitiéndole a los programas clientes el envío de 
mensajes a un determinado actor en cualquier momento. 
 
Un ejemplo de un UAL utilizado en la implementación en 
SALSA del portal de servicios para sistemas móviles es el 
siguiente: 
 
rmsp://xue.uniandes.edu.co:4040/unidadEspacioActivo/ubicac
ionBosi 
de esta manera, para enviarle mensajes a los actores, el 
sistema se conecta a un servidor RMSP (Protocolo de envío de 
mensajes remoto, del inglés Remote Message Sending 
Protocol) en el host xue.uniandes.edu.co en el puerto 4040 el 
cual es el puerto por defecto para los requerimientos RMSP y 
puede ser omitido. El servidor RMSP usa una tabla de hashing 
que mapea las UAL relativas –en el ejemplo 
 32
/unidadEspacioActivo/UbicacionBosi – para validar las 
referencias a los actores dentro del teatro, una vez el mensaje 
ha sido de-serializado, se coloca en el buzón de correo del 
actor para su procesamiento local. 
 
3.1.1.3. Nombramiento en el Computador Worldwide 
 
El computador Worldwide permite los nombres de actores 
universales y los localizadores de dos formas: La primera, 
proveyendo un servicio de nombramiento de actores 
universal, el cual mantiene un mapeo desde las UAN a las 
UAL. Y, segundo, implementando construcciones de 
programación de alto nivel para nombramiento para ser 
usadas en programas desarrollados en SALSA. 
 
3.1.1.3.1. Servicio de Nombramiento para actores 
universales 
 
Ofrece el servicio de registro de actores con su nombre y 
ubicación para ser accedidos desde cualquier programa 
cliente que desee obtener la ubicación de un actor a partir 
de su nombre. Esto lo logra a partir del registro de las 
UANs con sus respectivos UALs. Está implementado como 
un conjunto de servidores que entienden el protocolo: 
Protocolo del Nombramiento Universal de Actores (UANP, 
del inglés Universal Actor Naming Protocol). 
 
 33
3.1.1.3.1.1. Protocolo UANP 
 
Este protocolo es el usado por el servidor de nombres 
para la creación, modificación y eliminación de 
entradas de actores, sus nombres y sus ubicaciones. 
Los métodos de este protocolo son mostrados a 
continuación (Tabla 1): 
 
Método Parámetros Acción 
PUT UAN relativa, UAL Crea una nueva entrada en la base 
de datos 
GET UAN relativa Retorna la UAL correspondiente en 
la base de datos 
DELETE UAN relativa Elimina la entrada en la base de 
datos 
UPDATE UAN relativa, UAL Actualiza la UAL correspondiente en 
la base de datos 
Tabla 1: Métodos del protocolo UANP.El servicio de nombres no necesita ser centralizado, 
existe una tesis de Master en RPI (Rensselaer 
Polytechnic Institute) que desarrollo un servicio de 
nombres descentralizado (basado en Chord) para que 
no se dependa de un solo servidor de nombres para 
enviarle mensajes a un actor universal. La referencia 
es: 
 
 34
Cam Tolman, A Fault-Tolerant Home-Based Naming 
Service for Mobile Agents Master's Thesis, Rensselaer 
Polytechnic Institute, April 2003. 
 
El proyecto Chord se trata de construir sistemas 
distribuidos escalables, robustos usando ideas de peer-
to-peer (punto a punto). Chord es completamente 
descentralizado y puede encontrar datos usando solo 
log(N) mensajes, donde N es el número de nodos en el 
sistema. 
 
3.1.2. Comunicación Remota y Migración 
 
SALSA utiliza el protocolo (RMSP) para el envío de mensajes a 
actores remotos, y es usado automáticamente por el código 
generado al compilar los programas escritos en SALSA. De esta 
manera los programadores de SALSA, envían mensajes de la 
misma manera a actores locales y actores remotos, escondiendo 
la preocupación por la ubicación del actor. 
 
Esto se logra creando una referencia local con el tipo del actor 
remoto o del Actor universal (UniversalActor, que es como la 
clase Object en Java), luego esta referencia es actualizada o 
“mejorada” de una local a una referencia de un actor universal 
usando el método getReferenceByName(UAN) o 
getReferenceByLocation(UAL) del comportamiento 
UniversalActor. 
 35
 
Cuando se completa este proceso, la referencia local, se vuelve 
un alias al actor universal remoto, una vez obtenido este alias, un 
mensaje puede ser enviado al actor de la misma manera que si 
fuese local. 
 
SALSA permite la migración de actores a teatros conocidos, 
obteniendo primero una referencia al agente (actor) para luego 
llamar el método migrate(UAL) que lanza la migración. Cuando el 
actor migra, los actores universales conocidos por el actor son 
pasados por referencia; los objetos serializables de Java y los 
tipos primitivos son pasados por valor; los actores anónimos y los 
objetos de Java no serializables generan excepciones de tiempo 
de ejecución, los actores de ambiente se obtienen del nuevo 
teatro. 
 
3.2. Programación Orientada a Actores 
 
Los programas en SALSA se agrupan en módulos, cada modulo es 
capaz de contener comportamientos e interfaces. Existe la herencia 
simple de la misma manera que en Java, pues un comportamiento 
puede heredar de otro y, además, puede implementar múltiples 
interfaces para simular la herencia múltiple. 
 
Así como en Java, de la clase Object heredan todos los objetos, en 
SALSA, del comportamiento UniversalActor heredan todos los 
comportamientos. 
 36
 
3.2.1. Creación de Actores 
 
La creación de actores en SALSA se logra de manera similar a 
Java, pero teniendo en cuenta el nombramiento universal. 
 
Cuando un actor se instancia, una referencia al nuevo actor es 
retornada, un ejemplo de la creación de un actor es la siguiente: 
 
EspacioActivoControl ea = new EspacioActivoControl(); 
bind(uanEspacioActivo, ualEspacioActivo); 
 
donde se instancia EspacioActivoControl, y una referencia al 
nuevo actor es retornada y gracias al bind es ubicado en el 
servidor de nombres con la pareja UAN: uanEspacioActivo, UAL: 
ualEspacioActivo. Sin embargo en versiones subsecuentes a la 
usada esta creación de actores es deprecada, y en la 
documentación de SALSA se encuentra la nueva forma de 
creación de actores. 
 
Las definiciones de comportamientos en SALSA que son similares 
a las clases en Java también pueden contener constructores 
(pueden ser varios siguiendo el polimorfismo que se usa en 
Java), estos últimos son utilizados para la creación de nuevos 
actores. 
 
 
 
 37
 
3.2.2. Envío de Mensajes 
 
La implementación en SALSA del envío de mensajes es 
potencialmente un llamado a un método en Java; los actores en 
SALSA tienen un buzón de correo que guarda los mensajes 
recibidos y el actor los procesa secuencialmente. 
 
Para enviar un mensaje a un actor, se usa la referencia al mismo, 
seguido por una flecha (<-) y el nombre del mensaje con sus 
parámetros. Por ejemplo: 
 
ea<-cargarAtributos(requerimiento,eaUAN); 
 
Donde ea es la referencia al actor, que obtuvimos en el numeral 
anterior, y cargar atributos es el mensaje de este actor que se 
quiere poner en el buzón de correo de ea. 
 
Si no se especifica el actor al que se le quiere enviar el mensaje, 
este se pone en el buzón de correo de sí mismo. 
 
3.2.3. Cambios de Estados Internos 
 
Un actor puede cambiar el estado de las variables internas, 
incluso sus variables privadas. Si se pretende cambiar los estados 
de las variables de otros actores, se debe hacer por medio de 
mensajes y solo las variables que no son privadas. 
 38
 
3.3. Modelo de Coordinación 
 
SALSA usa tres tipos de continuaciones para coordinar la 
comunicación entre múltiples actores que son autónomos y 
asíncronos; ellas son descritas en los siguientes numerales. 
 
3.3.1. Token Passing Continuation 
 
Un token es el resultado de la invocación de un mensaje de un 
comportamiento. La continuación de paso de tokens (Token 
Passing Continuation) usa estos tokens como parámetros de 
mensajes anidados de mensajes subsecuentes, el siguiente es un 
ejemplo que ilustra este caso. 
 
getMensaje()@standardOutput<-println(token); 
 
Acá el valor de retorno del llamado del mensaje getMensaje() se 
pasa como parámetro del mensaje println(token) que se le envía 
al actor standardOutput. 
 
El alcance de los tokens es el último mensaje de paso de tokens. 
El paso de tokens, como se puede ver en el ejemplo anterior, se 
indica por medio de una arroba (@); así múltiples mensajes 
pueden ser anidados para formar una cadena del largo deseado 
de paso de tokens, un ejemplo de esto es: 
 
 39
a1<-m1(args)@a2<-m2(token)@a3<-m3(token); 
 
Acá el primer token se refiere al resultado de la evaluación de 
a1<-m1(args) y el segundo token, hace referencia al resultado 
de la evaluación de a2<-m2(token). 
 
El tipo de retorno de los mensajes es token, y se resuelve 
únicamente en tiempo de ejecución. 
 
3.3.2. Join Continuation 
 
Para establecer unos límites de sincronización, SALSA permite 
continuaciones de join. En una expresión de continuación de join, 
un actor cliente recibe un arreglo con los tokens retornados por 
múltiples actores, una vez todos ellos hayan terminado de 
procesar su mensajes. Un ejemplo de continuación de join es: 
 
join 
{ 
 autor1<-escribirCapitulo(1); 
 autor2<-escribirCapitulo(2); 
}@editor<-revisar @ imprenta<-imprimir; 
 
El actor editor recibe el mensaje de revisar con un arreglo de 
capítulos como parámetros y los pasa a la imprenta para ser 
impresos. El mensaje revisar es enviado únicamente después de 
 40
que los actores autores terminan de procesar su respectivo 
mensaje de escribirCapitulo(). 
 
3.3.3. Named Tokens 
 
Los Named Tokens son una manera de extender y mejorar los 
token-passing Continuations que permiten guardar el valor de un 
Token y sincronizar con más control múltiples mensajes a 
actores, y describir join blocks que permiten poner mecanismos 
de control (como if o while) dentro de bloques de sentencias que 
se sincronizan al final, a través de un join continuation 
 
Es decir, a los tokens se les pueden asignar nombres y 
declararlos de la manera que una variable es declarada en 
SALSA. Es una forma útil de lograr multicast, lo cual le da a 
SALSA mucho más poder expresivo, con el nombramiento de 
tokens una continuación no necesita ser expresada 
completamente en una sola línea y partes subsecuentes de una 
continuación pueden ser basadas en partes de continuaciones 
previas. Sin embargo los named tokens pueden ser usados 
únicamente como argumentos de mensajes de SALSA. No puedenser usados en operaciones aritméticas. 
 
Para un ejemplo de named tokens referirse a el apéndice E. 
 
3.3.4. First-Class Continuation 
 
 41
Las continuaciones de primera clase tienen como fin asegurar la 
terminación de la ejecución de los mensajes anidados anteriores 
a su aparición. Esto se logra con un mensaje especial llamado 
currentContinuation; a continuación se muestra un ejemplo de su 
uso: 
 
espacioActivoControl<-setRequerimiento(requerimiento)@ 
espacioActivoControl<-listarUEA()@ 
espacioActivoControl<-enviarMensajeros()@ currentContinuation; 
 
acá el mensaje setRequerimiento(requerimiento) termina 
completamente antes de enviar el mensaje listarUEA(), y este, a 
su vez, termina completamente antes de enviar el mensaje 
enviarMensajeros(); todo esto se logra dado que la ultima 
continuación es un currentContinuation. 
 
4. Portal de servicios para sistemas móviles. 
 
4.1 Modelo del sistema 
 
El portal de servicios para sistemas móviles se basa en la interacción 
de un usuario móvil con distintos sitios de interés, tales como 
centros comerciales, parques, sitios de recreación, universidades, 
etc. Estos espacios están representados por diferentes módulos de 
software que se encargan de gestionar autónomamente la relación 
de estos espacios con los usuarios. 
 42
Basados en los espacios activos (EA) y sus respectivos locales o 
unidades de espacio activo (UEA), y en la representación de los 
usuarios en el sistema, que en este caso es el agente usuario (AU), 
también existen varios elementos en los cuales se apoya el sistema 
para lograr el objetivo del mismo, estos son: el Gestor de Usuarios 
(GU), encargado de almacenar la información de los diferentes 
usuarios que pertenecen al sistema y la Fuente de Información de 
Posicionamiento (FIP), que permite determinar el momento en que 
un usuario se encuentra dentro del área de influencia de un 
determinado ambiente o espacio. Todos estos elementos se ven 
representados en la siguiente figura: 
 
2 
Figura 5. Modelo Portal de Servicios para Sistemas Móviles. 
 
4.2 Arquitectura propuesta del sistema 
 
 
2 Tomado de la tesis de Darío Melo 
 43
La arquitectura del sistema está basada en los siguientes criterios: 
 
• Independencia entre los componentes, sin dejar de lado la 
colaboración de los mismos. 
 
• Abstracción de estructuras del mundo real dentro del sistema. 
 
• Definición de interfaces para la comunicación entro los 
diferentes componentes del sistema. 
 
La arquitectura propuesta se ve en la siguiente figura: 
 
 
Figura 6. Arquitectura Portal de Servicios para Sistemas 
Móviles. 
 44
 
4.2.1 Agente Usuario 
 
El agente usuario es la representación del usuario ante el 
sistema. Tiene asociadas varias funciones tales como: 
 
• Tramitar la obtención de información solicitada por el 
usuario durante la interacción del mismo con el sistema. 
 
• Gestionar la solicitud de información de manera proactiva, 
basado en el contexto en el cual se desenvuelve el 
usuario. 
 
• Regular las labores de filtraje de la información recibida de 
los diferentes espacios activos. 
 
• Actualizar la información del usuario que representa dada 
por la interacción del mismo con el sistema. 
 
 
4.2.1.1 Agente Usuario Services 
Es la interfaz de los agentes usuarios. Aquí se encuentran los 
servicios que pueden proveer el agente usuario, estos 
servicios pueden ser utilizados ya sea por los diferentes 
espacios activos o por los usuarios que interactúan con el 
sistema, en este caso es el gestor de usuarios y los espacios 
activos. 
 45
 
4.2.1.2 Agente Usuario Control 
Este modulo se encarga de administrar, regular y ejecutar 
procesos internos del mismo agente usuario y a su vez 
delegar algunas responsabilidades a diferentes componentes 
del sistema. 
 
4.2.2 Espacio Activo 
 
Los espacios activos son las representaciones de espacios 
geográficos que unen varios locales o sitios comerciales que se 
encuentran cerca físicamente. Sus funciones se basan en atender 
el conjunto de solicitudes que los diferentes usuarios realizan; 
para ello deben valerse de la integración y el acceso que tienen a 
los diferentes UEA que se encuentran y hacen parte de su 
espacio activo; he ahí otra función muy importante que es la de 
integrar de manera eficiente a todos los UEA que conforman su 
espacio activo. Por ultimo, su funcionalidad también maneja la 
capacidad de generar de manera proactiva y reactiva propuestas 
que interesen a los representantes de los diferentes agentes 
usuarios. 
 
La meta de los diferentes espacios activos es entregar 
información de muy alta calidad y relevancia; es decir, poder 
generar propuestas que sean definitivamente aceptados por el 
agente usuario y este entregarlas a su respectivo representado. 
 
 46
Estas son las funciones que deben cumplir los diferentes espacios 
activos: 
 
• Generar propuestas a partir de solicitudes realizadas por 
los usuarios 
 
• Administrar las diferentes consultas realizadas por los 
usuarios; es decir, manejar los query y request de tal 
modo que estos sean procesados por los diferentes 
componentes integrados en el sistema. 
 
• Ofrecer maneras de suscripción de usuarios a su espacio 
activo, para que este goce de los servicios ofrecidos por 
las UEA que componen el espacio activo. 
 
• A partir de la información del usuario, poder generar 
propuestas proactivas que sean aceptadas por el agente 
usuario a partir de la interacción de las UEA que lo 
componen. 
 
• Detectar a los usuarios cuando estos se encuentren en su 
área de afluencia, apoyándose en las funciones de la 
Fuente de Información de Posicionamiento. 
 
• Avisar a las diferentes UEA del ingreso de usuarios al área 
de influencia del espacio activo para que estos puedan 
generar propuestas a estos usuarios. 
 47
 
• Registrar a los usuarios que así lo permitan para que el 
espacio activo sea notificado del ingreso de estos a su área 
de influencia. 
 
Como se ha dicho anteriormente, los espacios activos están 
conformados por partes más pequeña que se denominan 
Unidades de Espacios Activo y que ofrecen servicios particulares, 
dando al espacio activo la función de integrador de estas 
unidades. 
 
4.2.2.1 Espacio Activo Services 
Es la interfaz de los espacios activos. Aquí se encuentran los 
servicios que pueden proveer el espacio activo, estos servicios 
pueden ser utilizados ya sea por los diferentes espacios 
activos o por los usuarios que interactúan con el sistema, en 
este caso son los agentes usuarios y las unidades de espacio 
activo. 
 
4.2.2.2 Espacio Activo Control 
Este modulo se encarga de gestionar, coordinar y ejecutar, si 
el caso, procesos internos del mismo espacio activo y a su vez 
delegar algunas responsabilidades a diferentes componentes 
del sistema, como lo son las unidades de espacio activo y los 
agentes usuarios. 
 
 48
 
4.2.3 Unidad de Espacio Activo 
 
Las unidades de espacio activo son la representación en el 
sistema de los diferentes locales o sitios comerciales que se 
encuentren en un determinado espacio activo. Como 
representantes tienen las siguientes funciones fundamentales: 
 
• Atender a las solicitudes de información realizados por el 
espacio activo al cual pertenece. Estas solicitudes son 
hechas a partir de los servicios registrados por parte de la 
UEA en el espacio activo asociado. 
 
• Realizar propuestas de manera preactiva cuando se le 
informe que un determinado usuario se encuentra dentro 
del área de influencia del espacio activo asociado. Estas 
propuestas deben estar sustentadas por el perfil del 
usuario para que sean aceptadas por este. 
 
• Generar las propuestas solicitadas por parte de un usuario. 
Estas peticiones se hacen por intermedio del espacio activo 
asociado y de acuerdo con unas reglasque regulan su 
comportamiento. 
 
4.2.3.1 Unidad de Espacio Activo Services 
Es la interfaz de las unidades de espacio activo. Aquí se 
encuentran los servicios que pueden proveer la unidad de 
 49
espacio activo, estos servicios pueden ser utilizados ya sea 
por los diferentes espacios activos o por los usuarios que 
interactúan con el sistema. 
 
4.2.3.2 Unidad de Espacio Activo Control 
 
Este modulo se encarga de gestionar, coordinar y ejecutar, si 
el caso, procesos internos de la mismo unidad de espacio 
activo y a su vez delegar algunas responsabilidades a 
diferentes componentes del sistema. 
 
4.2.4 Gestor de Usuarios 
 
El gestor de usuarios se encarga de administrar toda la 
información de todos los usuarios del sistema; gracias a ello se 
convierte en una herramienta capaz de integrar el análisis para 
filtrar propuestas masivas. 
 
Dentro de sus funciones se encuentran: 
 
• Registrar las actividades realizadas por los diferentes 
usuarios en el sistema. 
 
• Evaluar las propuestas que van a ser entregadas a lo 
usuarios para que estas sean de alta calidad y relevancia. 
 
 50
• Generar query estructuradas que luego serán ofertas 
preactivas a los usuarios. 
 
• Determinar el perfil de un usuario a partir de la interacción 
del mismo con el sistema. 
 
• Establecer comportamientos globales y particulares de los 
usuarios basándose en la información centralizada que 
posee. 
 
4.2.5 Fuente de Posicionamiento 
Se encarga de la recolección de datos de la ubicación física de 
determinado usuario en coordenadas, así como también de la 
entrega de datos que le sean solicitados. 
 
4.2.6 Gestor Contexto Temporal 
 
Es el encargado de administrar la información asociada a eventos 
de tiempo y acontecimientos que afectan la conducta de las 
personas de una sociedad de forma general. 
 
 
Este sistema es utilizado a su vez por los espacios activo, los 
cuales emplean esta información para orientarse sobre qué 
propuestas generar dado un contexto situacional, y por los 
agentes usuarios, los cuales usan este sistema como filtro de 
información y para deducir el contexto situacional del individuo. 
 51
 
5 Implementación del portal de servicios para sistemas 
móviles en SALSA 
 
5.1 El modelo de actores en la arquitectura del portal de servicios 
para sistemas móviles 
 
El modelo de actores fue pensado para la implementación del 
portal de servicios para sistemas móviles, dada su capacidad para 
expresar agentes en términos de actores. Encontramos una 
especial afinidad entre actores del sistema y personas de la vida 
real; es el caso de los mensajeros del sistema, que se comportan 
como mensajeros en la vida real, y la manera en que estos se 
pueden configurar para lograr “comportarse” de maneras más 
adecuadas que simplemente envío de mensajes, aprovechando la 
movilidad del código y de los actores que ofrece SALSA. 
 
Más allá de esto, identificamos los espacios activos y las unidades 
de espacio activo como teatros dentro del sistema de actores, lo 
cual corresponde con la realidad del problema que se quiere 
atacar. También se puede identificar un teatro matriz: teatro 
donde se crearían las instancias de actores o representantes de 
los compradores en estos espacios activos, es decir, los usuarios 
del sistema. 
 
Es así como se quiso implementar el problema con el modelo de 
actores, propuesto en el capítulo 2, en el lenguaje de 
 52
programación expuesto en el capítulo 3, y basándonos en la 
arquitectura propuesta en el capítulo 4. 
 
Como nos podemos dar cuenta, la utilización de este modelo para 
la solución de la arquitectura propuesta necesitó de algunos 
cambios, dadas las diferencias en el concepto entre modelo de 
actores y modelo de objetos. A continuación, entraremos a 
detallar el modelo de actores en esta arquitectura. 
 
5.1.1 Definición de teatros 
 
Como lo habíamos adelantado, dimos cabida a teatros para 
las diferentes entidades de la arquitectura. Estas son: los 
agentes usuarios (la representación del usuario en el 
sistema), los espacios activos (la representación de los 
centros comerciales o espacios donde se encuentren muchos 
sitios comerciales) y las unidades de espacios activos (que 
son los locales u objetivos finales). 
 
Es importante aclarar que no es el teatro como tal el que crea 
los actores mensajeros: es el lugar en el cual se crean y es el 
sitio al cual llegan, pero la creación de mensajeros y la 
migración de los mismos está a cargo de los actores 
residentes en los diferentes teatros. 
 
 53
Estos teatros se caracterizan por ser ambientes de ejecución 
independientes, que pueden llegar a ejecutarse en máquinas 
físicamente separadas. 
 
Vamos a describir los teatros y sus funciones a continuación 
de manera detallada. 
 
5.1.1.1 Agente Usuario 
 
Para los agentes de usuarios, el sistema tiene 
destinado un solo teatro, que es el que va a 
registrar a los usuarios en un espacio activo, es 
decir, le va a notificar al espacio activo de la 
existencia de un usuario en su sistema. Este teatro 
tiene la tarea de albergar al actor que lee los 
requerimientos que hacen los usuarios, y de 
ofrecerse como cuna de los mensajeros que crea 
este actor, además de recibirlos cuando estos 
terminen de procesar el requerimiento. 
 
5.1.1.2 Espacio Activo 
 
Para los espacios activos, se destinan diferentes 
teatros, uno por cada espacio activo, de tal manera 
que haya uno para los diferentes centros 
comerciales u otros espacios que quieran pertenecer 
 54
al sistema. De esta manera, el teatro del espacio 
activo aloja al centro comercial como tal pero no a 
las locales de los espacios activos, y es capaz de 
recibir mensajeros de agentes usuarios y de enviar 
sus propios mensajeros a los diferentes teatros que 
se encuentren registrados como locales o unidades 
de espacio activo, con el fin de dar curso a los 
requerimientos de los usuarios. 
 
5.1.1.3 Unidad de Espacio Activo 
 
Para las unidades de espacio activas, es decir, para 
los locales o unidades más pequeñas del sistema, 
existe un teatro particular: un solo teatro que aloja 
a los actores de estas unidades. También aloja a los 
mensajeros que llegan de los espacios activos 
buscando respuestas o productos coincidentes con 
los requerimientos del agente usuario. 
 
5.1.2 Definición de actores estáticos 
 
Se llamán actores estáticos, dada su naturaleza no móvil. 
Ellos son residentes de sus teatros, y están a la espera de 
mensajeros y mensajes con los cuales interactúan para hacer 
del sistema algo interesante. Son, por definición, actores que 
interactúan con otro tipo de actores: los móviles, y en ellos 
 55
regulan su coordinación y tienen el control de la ejecución: 
cuándo es concurrente y cuándo no, asignándole tareas a los 
mensajeros, y cargándolos y descargándolos de 
requerimientos. También se hacen cargo de disparar los 
comportamientos de los mensajeros por medio de mensajes y 
se encargan de la creación dinámica de actores mensajeros. 
 
5.1.2.1 Agente Usuario Control 
 
Este actor es el encargado de escuchar propuestas 
a su usuario representado y de enviar mensajeros 
con los requerimientos que el usuario al que 
representa hace. Esto lo logra creando un 
mensajero que se cargará con el requerimiento del 
usuario y haciéndolo migrar al espacio activo más 
cercano a la ubicación de la persona a la que 
representa. 
 
5.1.2.2 Espacio Activo Control 
 
Este actor es uno de los de mas importancia ya que 
en él residen los comportamientos que forman la 
columna vertebral del sistema, es decir, él sirve de 
administrador del requerimiento al esperar al 
mensajero de algún usuario y además gestionar las 
ofertas que proponen las diferentes Unidades de 
 56
Espacio Activo; para esto debe ser capaz de 
cargarle el requerimiento a los diferentes 
mensajeros para que ellosviajen en busca de las 
posibles ofertas. Otra función muy importante es la 
de hacer el itinerario de las Unidades de Espacio 
Activo a las que deben ir los mensajeros, esto lo 
logra gracias a que previamente el ha registrado a 
todas las unidades con su nombre, ubicación y tipos 
de producto que esta ofrece. 
En conclusión, este actor, es la vía de comunicación 
entre el requerimiento (usuario) y los productos 
(locales comerciales) 
 
 
5.1.2.3 Unidad Espacio Activo Control 
 
Este actor es de gran importancia, dado que el o 
ellos son la base fundamental para lograr ofrecer 
productos a los usuarios del sistema. Su función es 
usar un parser para la lectura de los productos que 
ofrece y la conversión de estos en objetos Producto 
asociados a la unidad, para luego registrarse en el 
espacio activo y registrar cuáles serán los tipos de 
productos para futuras búsquedas que hagan los 
usuarios del sistema. Esto lo hace a través de la 
 57
lectura de una URL que apunta a un archivo XML 
que contiene la información. 
 
5.1.3 Definición de Servicios ofrecidos por los actores estáticos 
 
En la siguiente parte se enuncian los servicios que ofrecen los 
actores estáticos, los cuales son invocados por medio de 
mensajes de otros actores. 
 
5.1.3.1 Definición de los servicios que ofrecen los agentes 
usuarios 
 
Es el encargado de leer el o los requerimientos del cliente 
usando un parser (que será explicado en la sección 5.2.2) 
que, dada una URL, convertirá un archivo XML en un 
objeto de tipo Requerimiento. 
 
5.1.3.2 Definición de los servicios que ofrecen los espacios 
activos. 
 
Ofrece el servicio de registro en el espacio activo que 
utiliza cada una de las unidades de espacio activo para 
pertenecer a dicho espacio activo y de esta manera el 
 58
espacio activo asignará el respectivo mensajero a esa 
unidad de espacio activo, si así lo requiere. 
 
5.1.3.3 Definición de los servicios que ofrecen las unidades 
de espacio activo. 
 
Es el encargado de buscar dentro de sus productos el 
requerimiento solicitado por algún mensajero, y, cuando 
encuentra un producto que cumple con las características 
solicitadas, le asigna dicho producto al respectivo 
mensajero, para que este pueda coleccionar todos los 
productos resultados. 
 
5.1.4 Definición de actores dinámicos 
 
A estos actores les llamamos dinámicos dado su naturaleza móvil 
que les permite viajar entre los diferentes teatros. Estos son 
creados por los actores estáticos y durante toda su vida útil son 
controlados por ellos. Su principal función es moverse a 
diferentes teatros, y, ya estando en el teatro objetivo, cargar o 
descargar requerimientos y productos, y ejecutar 
comportamientos que ofrecen los actores locales; de esta manera 
se logra alivianar el procesamiento, dado que no va a existir el 
procesamiento centralizado. 
 
 59
5.1.4.1 Agente Usuario Mensajero 
 
Al ser creado el agente usuario mensajero en el teatro agente 
usuario, le deben cargar el requerimiento solicitado por el 
usuario y después hacerlo viajar hasta el teatro espacio activo 
correspondiente. Estando allá, el actor Espacio Activo Control 
descargará el requerimiento para que el proceso continúe, y 
terminado este, el Agente Usuario Mensajero volverá al teatro 
agente usuario con los productos resultados encontrados. 
 
5.1.4.2 Espacio Activo Mensajero 
 
El Espacio Activo Mensajero es creado en el teatro Espacio 
Activo y debe, después de que le carguen el requerimiento, ir 
hasta el teatro Unidad Espacio Activo donde el actor local 
buscara si hay algún producto que cumpla con las 
características del requerimiento y si es así le cargará los 
productos resultados, para que una vez finalizado este 
proceso, el Espacio Activo Mensajero vuelva a el teatro 
Espacio Activo, donde se precederá a devolver la respuesta al 
usuario final. 
 
5.2 Implementaciones del portal de servicios para sistemas 
móviles usando SALSA 
 
 60
A continuación presentaremos diferentes escenarios que nos 
servirán para comparar tiempos en la consecución de los 
objetivos y para comparar el trafico de red que genera 
diferentes tipos de implementaciones. Además de esto, 
veremos en detalle el alcance de este trabajo de tesis, y una 
forma detallada del lector de archivos XML que fue el 
estándar escogido para la lectura de productos y 
requerimientos. Esta sección está pensada para mostrar de 
una manera más clara la forma en que diferentes tipos de 
implementaciones pueden ser llevadas a cabo para resolver 
este problema y explicar por qué el modelo de actores es 
especial para resolverlo. 
 
5.2.1 Alcance de la implementación del portal de servicios para 
sistemas móviles 
El alcance de la implementación del portal de servicios 
para sistemas móviles en el leguaje SALSA pretende cubrir 
todo lo relacionado con los ofertas generadas, ya sea 
reactivamente o proactivamente. Para lograr esto, se 
simularon varios componentes y también se obviaron 
otros; así pues, no se va a tomar en cuenta la Fuente de 
Información de Posicionamiento, ni la función del Gestor 
de Usuarios, ni el Manejador del Contexto Temporal. 
 
Teniendo en cuenta lo anterior, lo que se pretendió lograr, 
en la implementación del portal de servicios para sistemas 
móviles, fue el tramite que tiene una oferta, desde que 
 61
nace como un requerimiento hasta que es entregada al 
usuario móvil, pasando por la gestión que realiza el 
respectivo agente usuario, el espacio activo y las 
diferentes unidades de espacio activo. De esta manera, 
nos despreocupamos de quién hace el requerimiento, si es 
el propio usuario (reactivamente) o el Gestor de Usuarios 
(proactivamente), simplemente asumimos que ya está 
hecho y que además sabemos en cuál espacio activo 
queremos realizar el trámite de dicho requerimiento. 
 
5.2.2 Parsers de lectura de requerimientos y productos 
 
Se definieron estructuras de archivos XML para los diferentes 
actores estáticos del sistema, de esta manera será clara la 
forma en que tanto los usuarios, como los espacios activos y 
sus unidades de espacio activo implementen programas 
propietarios que generen estos archivos y gracias a la 
naturaleza de los archivos XML, permite el acceso a ellos 
desde un programa en cualquier plataforma. 
 
A continuación, presentaremos la estructura de archivos XML 
que se desarrollaron para los agentes usuarios, espacios 
activos, y unidades de espacio activo. 
 
5.2.2.1 Agente Usuario 
 
 62
El archivo XML que define un requerimiento de un 
agente usuario debe ser muy flexible, por esto se 
pensó en una manera genérica de leer las 
características de un requerimiento, y finalmente se 
llegó a una estructura cuyo ejemplo mostramos a 
continuación: 
 
En la línea número 2, encontramos la identificación 
del usuario en el sistema; en la línea numero 3, se 
encuentra el nombre del producto que se quiere 
buscar; en la número 4, podemos encontrar el tipo 
de producto que se busca; en la línea número 5, la 
acción que se espera que las unidades de espacio 
activo realicen (entre estas se encuentran: vende, 
alquila, compra). Luego vienen tantas características 
como sea necesario, de la siguiente manera: 
 
 63
 
1. Ejemplo de Código: (XML) Agente usuario XML inicial. 
 
Sin embargo, este XML propuesto para la solución 
del problema se quedaría corto. Por eso hemos 
definido un XML más completo que abarque 
diferentes combinaciones de peticiones, incluyendo 
restricciones, conjunciones, etcétera. Esta 
estructura está pensada para que satisfaga el 
siguiente DTD (Data Type Definition): 
 
 64
 
2. Ejemplo de Código: (DTD) Agente Usuario - DTD de la 
versión mejorada del XML. 
 
Aunque este DTD es suficiente, para mayor claridad 
y más flexibilidad es deseable construir un esquema 
que pueda restringir la forma de los archivos XML 
que definen requerimientoshechos por los usuarios 
a través de los agentes de usuarios que ofrece el 
sistema. Así pues, el siguiente esquema fue definido 
para satisfacer el requerimiento y será explicado en 
detalle: 
 
 
 65
 
 
 
 
 
 66
 
3. Ejemplo de Código: (XSD) Esquema del XML mejorado. 
 
Este esquema es base de un requerimiento. A 
continuación vamos a explicar de una manera un 
poco más gráfica su significado: 
 
El elemento base de un XML de requerimiento es 
agenteUsuario, y de este se desprenden seis 
elementos hijos como se muestra a continuación: 
 
 
Figura 7: Estructura del XML de Agente Usuario 
(Requerimiento). 
 
 67
• Id: Identificación del usuario en el sistema. 
Podría ser, por ejemplo, el número de 
cédula, o un consecutivo que asigne el 
sistema. 
• Nombre: Nombre del producto que se desea 
buscar. 
• Tipo: Tipo del producto que se desea buscar; 
por ejemplo, calzado, ropa, carro, etc. 
• Acción: Es la acción que se desea que los 
locales realicen sobre el producto. 
• Ofertas: Número de ofertas que se desea 
que el sistema seleccione y traiga al usuario 
final. 
• Características: Las características que se 
quiere que tengan los productos resultados 
de la búsqueda. Profundizaremos un poco 
mas este 
 
 
 
Figura 8. Estructura de las características de los Productos 
(Requerimiento). 
 
 68
Las características se componen de cero o varios 
elementos característica, así como también de cero 
o varios elementos restricción. 
 
 
Figura 9. Estructura de una característica de un producto 
(Requerimiento). 
 
Cada elemento característica tiene los siguientes de 
hijos: 
• Nombre: Es el nombre de la característica; 
por ejemplo: color, marca, precio, etc. 
• Valores: Es un conjunto de cero o mas 
elementos valor; por ejemplo, de la 
 69
característica con nombre “color” los valores 
podrían ser: rojo, verde, etc. 
• Rango: Cuando la naturaleza de la 
característica así lo permite, se puede definir 
acá un rango dado un máximo y un mínimo; 
por ejemplo, en la característica de nombre 
“precio” el rango puede ser: máximo 
100.000 y mínimo 50.000. Para los casos en 
que no se especifica el máximo, se 
entenderá que se refiere a un número 
infinito positivo, y, en los casos en que no 
se define el mínimo, se entenderá que se 
refiere a cero. 
• Calificación: El objetivo de este campo es 
poder clasificar las ofertas que el sistema 
encuentra para el usuario, es decir, lograr 
determinar cuáles ofertas del total 
encontradas son las que finalmente serán 
enviadas al usuario. Nosotros proponemos 
un sistema de tolerancias para manejar este 
tema, así, este campo contendría la 
tolerancia de cada característica. 
Cuando la característica depende de la validez 
de otras características, se tejera un árbol de 
elementos características gracias a este campo. 
 
 70
 
Figura 10. Estructura de una restricción (Requerimiento) 
 
Como se ve en la figura, las restricciones tienen los mismos elementos 
que las ya mencionadas características. Podríamos definir a las 
restricciones como características negadas; así pues, se podrían 
representar necesidades tales como color: NO azul, estableciendo una 
restricción para color con valor azul. 
 
 
 71
 
 
 
 
 
 72
 
 
 
 
 
4. Ejemplo de Código: (XML) Ejemplo de un XML de un 
requerimiento. 
 73
 
Este XML representa un requerimiento bastante 
estricto. Para poder explicarlo, es necesario exponer 
la interpretación que le dimos al elemento 
calificación. Antes de hacerlo, queremos hacer 
énfasis en que es únicamente nuestra 
interpretación, pero la naturaleza del elemento 
permite que se use de la manera que se desee. 
 
La calificación en este ejemplo está medida en 
niveles de tolerancia, es decir, una tolerancia 0 
implica que la característica es obligatoria, para este 
ejemplo tomamos una escala de 0 a 10. Sin 
embargo, nuevamente, tanto la escala como la 
interpretación quedan abiertas a nuevas 
implementaciones. 
Al haber una tolerancia de 0 a 10 y siendo 0 algo 
obligatorio, 10 es entonces nada deseable, o 
inclusive una restricción. Dado que esta es sólo 
nuestra interpretación y que se desea que esta 
estructura sea genérica, se incluyó un elemento de 
tipo restricción. 
 
De esta manera, una característica que tenga 
tolerancia 2 significa que el 80% de los productos 
considerados en la búsqueda deben cumplir la 
 74
característica. De esta manera, el ejemplo mostrado 
anteriormente tiene la siguiente interpretación. 
 
 
 
Figura 11. Esquema del ejemplo del XML de 
Requerimiento, posibles caminos. 
 
En este ejemplo, el usuario que realiza el 
requerimiento desea encontrar unos tenis. En las 
líneas 9 a la 20, se encuentra una característica que 
indica que el 100% de los productos buscados 
deben ser de talla 39; es decir, que la tolerancia es 
cero a tallas diferentes. De la misma manera, los 
tenis NO pueden ser blancos, y el precio máximo 
que se va a pagar por los tenis es $200.000 pesos. 
 
 75
Ahora bien, se desea que el 30% de los tenis 
buscados sea Nike o Puma, es decir, el nivel de 
tolerancia es 7, o, de otra manera, es tolerable que 
7 de cada 10 tenis no sean de marca Nike o Puma. 
 
De este porcentaje de tenis de estas marcas, es 
deseable que por lo menos el 50% sea de color rojo 
o verde; es decir, la tolerancia es de 5. 
 
Además, si los tenis son Nike o Puma, el 60% de 
los productos tenidos en cuenta deben tener un 
precio entre $100.000 pesos y $150.000 pesos y el 
40% restante puede estar fuera de este rango, pero 
nunca mayor a $200.000 pesos. 
 
El 50% de los productos buscados deben ser de 
marca Adidas, de este 50%, el 40% deben ser de 
color negro o azul, y el 70% de este último 40% 
debe tener un precio máximo de $100.000 pesos. 
 
Como el 50% debe ser Adidas y el 30% Nike o 
Puma, el 20% restante no tiene restricción de 
marca, para este ejemplo. 
 
De esta manera, nos podemos dar cuenta de que 
las características y las restricciones pueden tener 
 76
conjunciones al nivel de profundidad y detalle que 
se desee. 
 
Esto hace que los requerimientos mostrados sean 
flexibles, soportando conjunciones, disyunciones y 
negaciones de características de productos. 
 
5.2.2.2 Espacio Activo 
 
El espacio activo en nuestra implementación no 
presenta un parser ni un archivo XML del cual pueda 
leer su configuración, simplemente, es un actor que 
escucha requerimientos de usuarios, tiene sus 
propios mensajeros, y da curso por medio de ellos a 
los requerimientos. 
 
Sin embargo, en el diseño del portal de servicios 
para sistemas móviles, se habla de manejos de 
contexto temporal, por lo cual definimos un archivo 
preliminar de cómo se debería configurar un espacio 
activo, para que soporte cierto tipo de actividades. 
 
 77
 
 
 
 
5. Ejemplo de Código: (XML) XML de un Espacio Activo 
 
5.2.2.3 Unidad Espacio Activo 
 
El archivo XML que define el conjunto de productos 
que ofrece cada una de las unidades de espacio 
activo es vital para el funcionamiento del sistema, y 
sobre todo, para que cada una de las unidades de 
espacio activo logren su objetivo final que es 
 78
entregar ofertas a los diferentes clientes, así pues 
cada producto debe estar representado fielmente 
por este archivo XML. 
 
Basándonos en esto, definimos el siguiente 
esquema para la representación de los productos en 
las diferentes unidades de espacio activo: 
 
El elemento base del XML es el elemento UEA que 
tiene los siguientes atributos: nombre, que se 
refiere al nombre de la unidad de espacio activo e 
identificación, que hace referencia al identificador 
de la respectiva unidad. 
 
 
 
Figura 12. Estructura de una UEA. 
 
El elemento UEA se compone de un conjunto de 
elementos producto. Cada elemento producto tiene 
como atributo el id del producto y, además, cinco