desarrollo de una aplicaciÓn para la conectividad …
TRANSCRIPT
DESARROLLO DE UNA APLICACIÓN PARA LACONECTIVIDAD ENTRE TELEFONIA MOVIL Y
MENSAJERIA INSTANTANEA
ANDRES FELIPE CHAVES BARRAGAN
UNIVERSIDAD DE LOS ANDESFACULTAD DE INGENIERÍA
DEPARTAMENTO DE SISTEMAS Y COMPUTACIÓNBOGOTÁ, D.C.
2003
ISC-2003-1-10
DESARROLLO DE UNA APLICACIÓN PARA LACONECTIVIDAD ENTRE TELEFONIA MOVIL Y
MENSAJERIA INSTANTANEA
ANDRES FELIPE CHAVES BARRAGAN
Trabajo de grado para optar al título deIngeniero de Sistemas y Computación
Director: Ingeniero HAROLD CRUZ
UNIVERSIDAD DE LOS ANDESFACULTAD DE INGENIERÍA
DEPARTAMENTO DE SISTEMAS Y COMPUTACIÓNBOGOTÁ, D.C.
2003
ISC-2003-1-10
1 TABLA DE CONTENIDO
1 TABLA DE CONTENIDO.......................................................................................32 INTRODUCCION.....................................................................................................53 OBJETIVOS .............................................................................................................7
3.1 Objetivo general...............................................................................................73.2 Objetivos específicos......................................................................................7
4 MARCO TEORICO..................................................................................................84.1 Conceptos básicos..........................................................................................8
4.1.1 Mensajería instantánea ..........................................................................84.1.2 Comunicación móvil................................................................................84.1.3 Wireless Application Protocol (WAP)...................................................8
4.2 Síntesis histórica .............................................................................................94.2.1 Historia de la mensajería instantánea..................................................94.2.2 Historia de la comunicación móvil......................................................124.2.3 Historia de WAP ....................................................................................13
5 METODOLOGIA ....................................................................................................146 FUNCIONAMIENTO DEL SISTEMA DE MENSAJERIA MSN......................15
6.1 Componentes del Sistema de Mensajería MSN......................................156.2 Protocolo de Comunicación de Mensajería MSN....................................16
6.2.1 Autenticación con el servicio de mensajería MSN...........................166.2.2 Sincronización con el servidor de mensajería MSN........................186.2.3 Estados de los Usuarios en el Servicio de Mensajería MSN.........196.2.4 Conversaciones con los contactos .....................................................196.2.5 Envío y Recepción de Mensajes.........................................................216.2.6 Manejo de errores .................................................................................21
7 ANALISIS DE REQUERIMIENTOS DE LA APLICACIÓN..............................227.1 Diagrama de casos de uso ..........................................................................227.2 Propósito del sistema desarrollado ............................................................227.3 Alcance del sistema ......................................................................................227.4 Descripción del sistema................................................................................237.5 Usuarios del sistema.....................................................................................237.6 Glosario de términos.....................................................................................237.7 Requerimientos funcionales ........................................................................23
8 DISEÑO DE LA ARQUITECTURA DE LA APLICACION...............................288.1 Arquitectura de Alto Nivel.............................................................................288.2 Modelo del Mundo.........................................................................................29
8.2.1 Componentes.........................................................................................298.2.2 Diagrama de Clases .............................................................................298.2.3 Clase Usuario.........................................................................................308.2.4 Clase Servicio ........................................................................................308.2.5 Clase Conexión......................................................................................31
ISC-2003-1-10 4
8.2.6 Clase ComandoMSN............................................................................328.2.7 Clase RequerimientoMSN....................................................................328.2.8 Clase RespuestaMSN...........................................................................338.2.9 Clase ConexionMSN.............................................................................348.2.10 Clase SesionMSN.................................................................................358.2.11 Clase MensajeMSN...............................................................................368.2.12 Clase ConexionMSNReader................................................................378.2.13 Interfaz ConexionMSNListener ...........................................................378.2.14 Clase EstadoMSN.................................................................................388.2.15 Clase UsuarioMSN................................................................................388.2.16 Clase MSNException............................................................................398.2.17 Diagramas de Secuencia .....................................................................398.2.18 Diagrama de Secuencia de Envió de un Comando Típico.............398.2.19 Diagrama de Secuencia de Recepción de un Comando Típico....408.2.20 Diagrama de Secuencia de Ingreso al Servicio de Mensajería .....418.2.21 Diagrama de Secuencia de Envío de Mensajes ..............................428.2.22 Diagrama de Secuencia de Recepción de Mensajes......................438.2.23 Diagrama de Secuencia de Visualizar Contactos............................438.2.24 Diagrama de Secuencia de Salir ........................................................44
8.3 UtilidadesXML................................................................................................448.3.1 Diagrama de Clases .............................................................................45
8.4 Capa de Presentación y Control.................................................................458.4.1 Diagrama de Clases .............................................................................468.4.2 Funcionamiento de la capa de presentación y control....................468.4.3 Diagrama de Secuencia .......................................................................49
9 HERRAMIENTAS DE DESARROLLO...............................................................509.1 Java 2 Standard Edition J2SE.....................................................................509.2 JavaDoc..........................................................................................................519.3 Servlets y Java Server Pages (JSP)..........................................................519.4 Apache Tomcat..............................................................................................529.5 Apache Ant.....................................................................................................529.6 UML y Power Designer.................................................................................529.7 Deck-It .............................................................................................................53
10 RESULTADOS ALCANZADOS ......................................................................5411 LIMITACIONES Y PROBLEMAS ENCONTRADOS ...................................55
11.1 Mantenimiento de la sesión en la aplicación WAP..................................5511.2 Restricciones de los dispositivos móviles..................................................5611.3 Interpretación de WML en dispositivos móviles .......................................56
12 POSIBLES DESARROLLOS EN EL FUTURO............................................5712.1 Enriquecer la funcionalidad .........................................................................5712.2 Incorporar nuevos servicios de mensajería ..............................................5712.3 Extender la capa de presentación ..............................................................5812.4 Aprovechar el desarrollo de la aplicación como un framework..............58
13 CONCLUSIONES..............................................................................................5914 BIBLIOGRAFIA ..................................................................................................60
ISC-2003-1-10
2 INTRODUCCION
Para nadie es sorpresa que Internet ha cambiado la forma como la gente se
comunica. Para una gran parte del mundo, el correo electrónico reemplazó el
correo tradicional, el fax e incluso el teléfono. Todo esto gracias a la velocidad y
globalidad que Internet ofrece. Las formas de comunicación que usan Internet
son las que más rápido adopta la gente hoy en día.
De un lado, toda vez que el correo electrónico y otras tecnologías de Internet,
como los boletines, noticias y foros de discusión no permiten una comunicación
en línea, la mensajería instantánea ha tenido un crecimiento gigantesco.
De otro lado, el desarrollo de los dispositivos móviles, sumado a la posibilidad
de que desde estos se tenga conexión a Internet, ha ocasionado un auge en el
desarrollo de aplicaciones para los dispositivos móviles.
Por lo expuesto anteriormente, es necesario desarrollar aplicaciones que
permitan el uso de sistemas de mensajería desde dispositivos móviles. En
particular, en este trabajo de grado, se escogió desarrollar una aplicación que
permita la comunicación con sus contactos del sistema de mensajería MSN de
Microsoft a los usuarios de teléfonos celulares y a los usuarios de Internet que
no tienen el acceso a las aplicaciones de mensajería de escritorio. Esta es una
aplicación de tipo web a la que los celulares tienen acceso vía WAP.
La importancia del proyecto reside en el gran crecimiento que la mensajería
instantánea en Internet ha tenido en los últimos años y en que ésta ya es usada
no solo como un medio de entretención, sino como un medio de comunicación
corporativo y colaborativo.
ISC-2003-1-10 6
La viabilidad técnica del software obedece a que hoy en día los dispositivos
móviles se pueden conectar a Internet mediante diferentes protocolos de
comunicación, entre ellos WAP. Por esto, el trabajo de grado pretende unir
estas dos importantes formas de comunicación: la mensajería instantánea y la
comunicación móvil.
La utilidad del software es que permite el uso del sistema de mensajería MSN
desde cualquier dispositivo con acceso a Internet, en especial los teléfonos
celulares. Esto facilita la comunicación casi en cualquier lugar entre el usuario y
sus contactos. El uso que le de el usuario a este sistema de comunicación
puede ser entretención, responder o preguntar algo importante, o comunicación
con colaboradores del trabajo o hablar con sus familiares.
Además permite el uso del sistema de mensajería desde redes donde se
bloquea el uso de la mensajería ya sea por política de uso de la red o por
norma de seguridad.
ISC-2003-1-10 7
3 OBJETIVOS
3.1 Objetivo general
El objetivo del trabajo de grado consistió en desarrollar un software que
permitiera utilizar el sistema de mensajería de Microsoft MSN desde los
celulares, usando el protocolo WAP. Dicho software tiene en cuenta la
problemática que ofrece la visualización y las formas de interactuar que ofrece
un teléfono celular. Además, el software permite su uso desde un navegador
normal de Internet.
3.2 Objetivos específicos
§ Investigar y comprender el funcionamiento interno del sistema de
mensajería MSN
§ Realizar el proceso de diseño e implementación de la aplicación. El
diseño incluye la especificación de los requerimientos y la arquitectura
detallada y de alto nivel de la aplicación.
§ Documentar el desarrollo realizado
§ Establecer futuros desarrollos que enriquezcan la aplicación
ISC-2003-1-10 8
4 MARCO TEORICO
4.1 Conceptos básicos
4.1.1 Mensajería instantánea
Mensajería Instantánea o IM (Instant Messaging) es una forma de comunicación
usada sobre Internet o LANs, que permite que dos o más personas que tengan
una misma aplicación, envíen y reciban mensajes en línea. Es decir, permite
hacer una comunicación privada persona a persona (peer to peer), a diferencia
de los chats donde los mensajes son vistos por todos lo miembros del chat.
Además permite identificar cuáles contactos o amigos, están conectados y
cuáles no.
4.1.2 Comunicación móvil
La comunicación móvil es un sistema que permite al usuario comunicarse en
cualquier momento y desde cualquier lugar, sin necesidad de estar conectado
físicamente a alguna red.
4.1.3 Wireless Application Protocol (WAP)
Dado el crecimiento de Internet en la década del noventa, se empezó a pensar
en una forma de permitir conectividad entre la tecnología celular e Internet. Se
desarrolló el protocolo o reglas que debería seguir cualquier dispositivo móvil
para acceder al WWW. A este protocolo se lo llamó Wireless Application
Protocol, WAP. Este es, en los dispositivos móviles, el equivalente al protocolo
TCP/IP en los computadores.
ISC-2003-1-10 9
Dentro del protocolo WAP se especifica el lenguaje en que se deben desarrollar
las “paginas” para WAP. Este lenguaje se llama WML (Wíreless Markup
Language).
4.2 Síntesis histórica
4.2.1 Historia de la mensajería instantánea
A mediados de los 80’s, del siglo XX, antes de que existiera Internet, las
personas para interactuar mediante el computador usaban los bulletin boards
systems (BBS). Un BBS era una aplicación que corría en un computador que
corría el programa, al cual los demás computadores se conectaban vía
marcación mediante el módem.
Los BBS tenían una interfaz de texto y permitían a las personas escribir y dejar
mensajes en el boletín. Sin embargo, las personas tenían que esperar a recibir
respuesta en el boletín de sus mensajes. Debido a esto, se creó un canal
adicional en los BBS que permitía discutir en línea. Esto es considerado como
la primera idea de mensajería instantánea. Posteriormente se incluyeron en los
BBS servicios adicionales como transferencia de archivos y correo.
Como se dijo antes, para conectarse a un BBS las personas debían hacer una
llamada al computador destino, que tenía un costo significativo cuando no era
llamada local Por esto cada localidad o ciudad tenía su propia BBS y existían
muchos sistemas BBS. Sin embargo, como a cada BBS se conectaba solo la
gente de los alrededores se generaba un sentido de comunidad virtual.
Grandes compañías de comunicaciones, como America Online (AOL) y
Compuserve, empezaron a ofrecer servicios online (Online services) de tipo
nacional o internacional. Estos online services eran unas BBS más grandes,
estables y mejoradas, lo que permitió lograr comunidades con más personas.
ISC-2003-1-10 10
Entre tanto Internet empezaba a ser de acceso público. El origen de Internet se
remonta al proyecto ARPAnet, creado por la agencia ARPA (Advanced
Research Projects Agency). El objetivo de ARPAnet era el de tener una red que
permitiera el intercambio de información entre las entidades militares en caso
de un ataque nuclear. En 1968 ARPAnet, se libera de su objetivo militar y pasa
a ser usado por universidades. ARPAnet se componía en ese entonces por
cuatro nodos.
En 1982, se finaliza el protocolo TCP/IP, que es el protocolo de red y transporte
usado en Internet. Las universidades empezaron a crear redes de área local o
LANs (Local Area Networks) que empezaron a interconectar con otras LANs
mediante el protocolo TCP. La National Science Fundation Network, NSFnet
reemplazo entonces la red ARPA por rápidos backbones sobre los que se
soporta Internet.
La popularización de Internet empieza a comienzos de 1990, cuando se
desarrolla el protocolo HTTP (HyperText Transfer Protocol) y el lenguaje HTML
(HyperText Markup Language). Este protocolo usando una dirección de Internet
(URL) permite el envió de archivos creados usando HTML, que son mas
conocidos como paginas de Internet. Esta combinación de HTTP, HTML y URLs
es lo que se conoce como World Wide Web (WWW). En 1992 se crea la el
primer browser o navegador grafico llamado Mosaic, que permite una
visualización mas natural (similar a la que usamos hoy en día) de las paginas
HTML. Gracias a los browsers gráficos, el número de personas que usaban
Internet empezó a crecer y paso de ser una herramienta académica a una
herramienta de comunicación usada por el mundo.
En 1990, cuando Internet empezaba ya su crecimiento, se desarrollaron los
chats para Internet, que son aplicaciones que permiten el envío y recepción de
mensajes por parte de las personas conectadas a Internet y al chat. Estos
mensajes son leídos por todas las personas conectadas al chat, es decir, los
ISC-2003-1-10 11
mensajes no eran de una persona a otra, sino de una persona a las demás que
están conectadas.
En noviembre de 1996, se crea la primera aplicación de mensajería
instantánea, por un grupo de desarrolladores israelíes, fundadores de la
compañía Mirabilis. La aplicación se llamó ICQ (de I seek you) y su distribución
era gratis. En solo 6 meses, ICQ tenía 650000 usuarios registrados y en junio
de 1997 Mirabilis manejaba 100000 usuarios concurrentes. ICQ se convirtió en
uno de los programas mas usados en Internet.
América Online AOL, en 1998, compra a Mirabilis los derechos sobre ICQ y,
aparte de seguir comercializándolo, crea su propio sistema de mensajería: AOL
Instant Messenger (AIM).
Debido al auge de la mensajería instantánea, dos grandes compañías sacaron
al mercado sus sistemas de mensajería: Microsoft introdujo el MSN Messenger
y Yahoo el Yahoo Messenger.
Actualmente el mercado de la mensajería instantánea esta dominado por los
messengers mencionados anteriormente: ICQ, AIM, MSN y YahooM. Debido a
que cada una de las compañías quiere dominar el mercado, los messengers no
son interoperables entre si. Sin embargo, existe otra compañía de servicio de
mensajería llamada Jabber, que usa protocolos abiertos y documentados,
basados en estándares, lo que permite interoperabilidad.
Debido a la falta de interoperabilidad, se han creado aplicaciones de otras
compañías que permiten correr varios messengers en un mismo programa.
Entre los programas mas conocidos están: Trillian, Imici, Odigo, Omni y Gaim.
Hoy en día, las aplicaciones de mensajería incluyen servicios adicionales tales
como:
ISC-2003-1-10 12
• Chats• Envío de imágenes y archivos• Mensajes de voz• Contenido agregado, tales como integración con portales (por ejemplo
yahoo y msn network), noticias, finanzas, etc.
4.2.2 Historia de la comunicación móvil
La comunicación móvil tiene sus inicios en 1921, cuando se desarrolló el primer
sistema de comunicación por radio (en la frecuencia de 2 Mhz).
Los primeros sistemas de radio fueron mejorados, disminuyendo el ruido y
mejorando la calidad de la señal, haciendo posible que la comunicación radial
empezara a ser comercializada en 1946. Cuando la radio entró en la era de la
comercialización, en los Estados Unidos, la Federal Communications
Commision, FCC, empieza a asignar frecuencias electromagnéticas y ampliar
su rango.
En 1964, se introdujeron los sistemas selectores de canales que permitieron
eliminar tanto la operación manual del radio (o necesidad de oprimir para
hablar) como la intermediación de una operadora para conectar dos equipos de
radio.
Dada la demanda del espectro radial y la saturación de las diferentes
frecuencias, la FCC empezó a investigar formas de comunicación
electromagnética con menor saturación y mayor eficiencia que el radio, en un
espectro de frecuencias mayor. En 1971, la AT&T realizó la propuesta técnica
de radio celular para lograr estos objetivos, que posteriormente fue aprobada e
implementada en 1983. Los conceptos claves de la telefonía celular habían sido
descubiertos por investigadores de los Laboratorios de Bell en 1947.
ISC-2003-1-10 13
La radio celular creó un ambiente de comunicación telefónica diferente al
tradicional. La ventaja principal de la telefonía celular consistió en la capacidad
de permitir la comunicación a muchos usuarios dentro de un número limitado de
canales. Se subdividieron las zonas geográficas en pequeñas secciones
llamadas células, lo que permitió la reutilización de frecuencias siempre y
cuando una célula esté suficientemente separada de la otra, con lo cual se
amplió la capacidad del espectro magnético.
La comunicación celular usó una transmisión análoga llamada Advanced Mobile
Phone Service (AMPS). En 1996, se cambió a transmisión digital con el
desarrollo de la tecnología Time Division Multiple Access (TDMA). Esta
tecnología la usa AT&T y Southwestern Bell. Se estableció el sistema Code
Division Multiple Access (CDMA) usado por Sprint, GTE, Bell Atlantic y el Global
System for Mobile Communications (GSM) usado por Pacific Bell y Omnipoint.
La diferencia entre estos sistemas digitales está en las formas de procesar y
codificar la voz y la información.
4.2.3 Historia de WAP
El protocolo WAP fue elaborado por Motorola, Nokia, Ericsonn y Unwired
Planet, cuando formaron el Foro WAP en 1997. A este foro se han sumado más
compañías, como Microsoft, Intel, Palm y otras.
En 1998 se anunció la versión 1.0 del protocolo WAP; en 1999 sale la versión
1.1 y al finalizar este mismo año se publica la versión 1.2.
El acceso a Internet desde dispositivos móviles ha estado en continuo
desarrollo para superar limitaciones tales como, la velocidad de conexión, la
poca cantidad de memoria de los dispositivos, la interfaz de comunicación y el
alto costo.
ISC-2003-1-10 14
5 METODOLOGIA
Para el cumplimiento de los objetivos se manejó la siguiente metodología de
desarrollo de software:
• Definición del problema de investigación
• Investigación del funcionamiento del sistema de mensajería MSN en
aspectos como componentes, protocolo, formas de autenticación.
• Diseño general y detallado de la aplicación y sus componentes. Dentro
de este diseño se encuentra la especificación de los requerimientos,
diagrama de casos de uso, de componentes, de clases y de secuencia.
• Implementación de la Aplicación, según el diseño. Esta codificación se
hace simultáneamente con la documentación del desarrollo.
• Realización de pruebas desde los diferentes clientes (Celulares y
Navegadores).
• Análisis y conclusiones
ISC-2003-1-10 15
6 FUNCIONAMIENTO DEL SISTEMA DE MENSAJERIA MSN
El servicio de mensajería de Microsoft, llamado MSN Messenger se empezó a
comercializar en 1999. Los ingenieros que desarrollaron el sistema mensajería
MSN realizaron un documento (Internet draft) donde se explica el
funcionamiento del protocolo. En este capítulo se explican las generalidades y
detalles del funcionamiento, expuestas en el Internet draft y que son adoptadas
en la aplicación que se ha desarrollado. 1
6.1 Componentes del Sistema de Mensajería MSN
La comunicación con el servicio de mensajería se divide en tres grandes áreas
o pasos. Cada paso se puede ver como un servicio o servidor. Se dividió en
estos tres componentes para garantizar escalabilidad, de tal forma que si
alguno de ellos presentaba cuellos de botella pudiera fácilmente agregarse
hardware para soportar el componente u optimizar este. Los componentes son:
Dispatch Server, Notification Server y Switchboard Server.
El Dispatch Server es el componente encargado de recibir la conexión inicial
con los clientes, realizar las negociaciones necesarias del protocolo y
determinar cual Notification Server atenderá el cliente para su redirección.
El Notification Server es el componente core o principal. Su función es
autenticar al usuario, sincronizar información entre el cliente y el servidor y
notificar eventos asincrónicos (por ejemplo: cuando un contacto entra o sale,
cuando ocurre un cambio de estado, cuando un contacto quiere iniciar una
conversación). La conexión al Notification Server permanece durante todo el
tiempo que el usuario este conectado al servicio de mensajería.
1 Adaptado del Internet Draft: MSN Messenger Service 1.0 Protocol
ISC-2003-1-10 16
El Switchboard Server les permite a los usuarios del servicio establecer
comunicación con sus contactos a través de sesiones. Por cada conversación
que tenga el usuario con sus contactos el switchboard server asigna una sesión
nueva.
6.2 Protocolo de Comunicación de Mensajería MSN
El cliente de mensajería inicialmente debe abrir una conexión TCP por el puerto
1863 a la dirección messenger.hotmail.com.
La comunicación entre el cliente y el servidor se hace a través de comandos.
Un comando es una cadena de caracteres de una sola línea, compuesta por:
tres caracteres que especifican el tipo de acción (ver anexo A) (por ejemplo ILN)
y cero o más parámetros
El envío de comandos, así como la recepción de respuestas se hace de forma
asincrónica. Para poder distinguir cual respuesta corresponde a qué
requerimiento se maneja un Transaction ID.
6.2.1 Autenticación con el servicio de mensajería MSN
El primer paso para autenticarse es especificar que versión del protocolo se va
a hablar (en los ejemplos C representa al cliente y S al componente de
mensajería):
C: VER 287970511 MSNP2S: VER 287970511 MSNP2
Una vez el servidor ha respondido con la versión del protocolo, se establece la
forma de autenticación. La autenticación es MD5:
ISC-2003-1-10 17
C: INF 287971513S: INF 287971513 MD5
Después de establecida la forma de autenticación se procede a autenticar:
C: USR 287972514 MD5 I [email protected]
El Dispatch Server devuelve el Notification Server asignado, es decir devuelve
una dirección IP y un puerto:
S: XFR 287972514 NS 207.46.106.124:1863
Una vez recibida la dirección y el puerto, el cliente de mensajería se debe
desconectar del Dispatch Server y conectarse al Notification Server, donde se
debe volver a establecer el protocolo y continuar la autenticación:
C: VER 287973686 MSNP2S: VER 287973686 MSNP2C: INF 287974717S: INF 287974717 MD5
Una vez establecido el protocolo de Nuevo, se envía el comando USR, junto
con la forma de autenticación (MD5) y el login del usuario, el servidor responde
entonces con la llave de encripción.
A continuación se concatena la llave recibida con la clave del usuario y se envía
esta cadena resultante en formato hexadecimal. Si la autenticación es exitosa el
servidor envía un OK con el login y el nombre del usuario:
C: USR 287975719 MD5 I [email protected]: USR 287975719 MD5 S 1050026167.25027C: USR 287975719 MD5 S 40b096185b49dae4ab4991808b452d95S: USR 287975719 OK [email protected] tesis%20movil
ISC-2003-1-10 18
Por ultimo se envía al cambio de estado a estado online, para que el notification
server avise a los contactos que el usuario ha ingresado:
C: CHG 287977732 NLNS: CHG 287977732 NLN
6.2.2 Sincronización con el servidor de mensajería MSN
Después de la autenticación empieza la sincronización de listas de contactos,
las cuales son: la lista de usuarios a los que se permite enviar mensajes y lista
de bloqueos. La aplicación únicamente guarda la lista de contactos o forward
list.
En la mayoría de clientes de mensajería se guarda una copia local de estas
listas, que son la que se sincronizan con el servidor. Para el caso de la
aplicación de mensajería móvil no se tienen copias locales por lo que siempre
se guarda la lista enviada por el servidor. Para empezar a sincronizar se envía
el comando SYN con la versión actual de la lista. Como no se tiene ninguna
lista local se envía como versión un cero:
C: SYN 287977732 0S: SYN 287977732 24
El servidor devuelve la versión actual de las listas y empieza a enviar
respuestas asincrónicas con los usuarios de la lista:
S: LST 287977732 FL 24 1 4 [email protected] Andres%20.NETS: LST 287977732 FL 24 2 4 [email protected] Alex%20.NET
El servidor envía los estados iniciales de los contactos que estén online,
mediante el comando ILN:
S: ILN 7 AWY [email protected] Andres%20.NETS: ILN 7 AWY [email protected] Alex%20.NET
ISC-2003-1-10 19
6.2.3 Estados de los Usuarios en el Servicio de Mensajería MSN
El cliente de mensajería puede cambiar su estado (ver anexo B) con el
comando CHG:
C: CHG 287977732 AWYS: CHG 287977732 AWY
El Notification Server envía información asincrónica indicando cambios de
estado de los contactos:
S: NLN BSY [email protected] Andres
Si el contacto se desconecta se recibe un FLN:
S: FLN [email protected]
6.2.4 Conversaciones con los contactos
Existen dos formas para iniciar una conversación: Que un contacto invite al
usuario o que el usuario invite a un contacto. En cualquiera de los dos casos el
cliente de mensajería deberá iniciar una sesión con el switchboard server.
Si recibe una invitación de un contacto, el Notification Server envía el comando
RNG seguido de 6 parámetros: el id de la sesión creada por el contacto, la
dirección IP y el puerto del Switchboard Server, el método de autenticación
(CKI), un hash, el email y el nombre del contacto que esta invitando:
RNG 168 207.46.18.3:1863 CKI 105346.20310 [email protected] Andres
ISC-2003-1-10 20
Si el usuario es quien desea invitar, debe solicitar al Notification Server la
dirección y el hash de un Switchboard Server:
C: XFR 93870881 SBS: XFR 93870881 SB 207.46.10.17:1863 CKI 109356.1054342930.215
En cualquiera de los dos casos el cliente de mensajería debe conectarse a la
dirección que da el Notification Server y una vez conectado, si es el usuario el
que esta creando la sesión se autentica con el Switchboard Server, enviando el
hash que se recibe:
C: USR 93872093 [email protected] 109356.1054342930.215S: USR 93872093 OK [email protected] Tesis%20Movil
Para invitar a un usuario a la sesión establecida se usa el comando CAL, una
vez el contacto entra a la sesión se recibe el comando JOI:
C: CAL 93873094 [email protected]: CAL 93873094 RINGING 109356S: JOI [email protected] Andres
Si el usuario fue invitado a una sesión existente se debe autenticar con el
comando ANS y el hash recibido en el XFR, una vez hecho esto la información
de los contactos que ya están dentro de la sesión se reciben con el comando
IRO:
C: ANS 43543 [email protected] 105346.20310S: IRO 43543 1 1 [email protected] AndresS: ANS 43543 OK
Cuando un usuario se desconecta de la sesión se recibe el comando BYE:
S: BYE [email protected]
ISC-2003-1-10 21
6.2.5 Envío y Recepción de Mensajes
Para enviar un mensaje se usa el comando MSG, con el Transaction ID,
seguido de A, para el acknowledge del mensaje, la longitud en bytes del
mensaje y el mensaje.
El sistema de mensajería MSN maneja mensajes de tipo MIME. Estos se
componen de un cabezote (MIME-Header) y del cuerpo del mensaje (MIME-
Body):
C: MSG 234234 A 129MIME-Version: 1.0Content-Type: text/plain; charset=UTF-8
HeyS: ACK 234234
Cuando se recibe un mensaje el servidor envía el mensaje enviado por el
contacto:
MSG [email protected] Andres 130 MIME-Version: 1.0
Hola
6.2.6 Manejo de errores
Cuando ocurren errores el servidor los envía con el siguiente formato: eee
(Transaction Id) error-info parámetros. Donde eee es el código del error (ver
anexo), transaction id es el id del comando que generó el error (si es un error
del servidor no se envía TriiD)
S: 200 ERR_SYNTAX_ERROR
ISC-2003-1-10 22
7 ANALISIS DE REQUERIMIENTOS DE LA APLICACIÓN
7.1 Diagrama de casos de uso
7.2 Propósito del sistema desarrollado
El propósito del sistema es proveer conectividad desde los dispositivos
móviles (wap) y la web hacia los messengers usados tradicionalmente.
7.3 Alcance del sistema
El sistema permitirá que, desde dispositivos conectados vía WAP, se
intercambien mensajes con usuarios del sistema de mensajería de Microsoft
(MSN). Además permitirá que, desde navegadores tradicionales también
exista conectividad con este sistema de mensajería.
La arquitectura del sistema, deberá permitir escalabilidad de tal forma que
puedan ser fácilmente acoplados módulos de conectividad a otros sistemas
de mensajería.
ISC-2003-1-10 23
7.4 Descripción del sistema
El sistema permite interactuar con el sistema de mensajería de Microsoft
(MSN), adaptando su forma de uso a las restricciones de uso que tienen los
celulares. El sistema permitirá enviar, recibir mensajes, ver la lista de
usuarios online y cambiar el estado. El sistema permitirá acceder a estos
servicios vía web y wap.
7.5 Usuarios del sistema
Cliente: Es el usuario que envía y recibe mensajes, usando la aplicación, desde
el celular o browser.
7.6 Glosario de términos
• Messenger: La definición básica es una aplicación que permite la
comunicación entre dos personas vía Internet.
• WAP: Wireless Application Protocol. Es un protocolo que define como es
la comunicación entre dispositivos wireless e Internet.
• Web: Se refiere a la navegación gráfica que se hace sobre las páginas
en Internet. La web se visualiza a través de browsers o navegadores.
7.7 Requerimientos funcionales
Identificador y Nombre:C1 ConectarTipo:Abstracto
Requerimiento que loutiliza o especializa:
Crítico?Si
Prioridad de Desarrollo:Alta
Actores:Cliente
Documentos devisualización asociados:
Entrada: Salida:Descripción:Este caso de uso engloba la funcionalidad de conexión a los sistemas demensajeríaManejo de Situaciones Anormales:
ISC-2003-1-10 24
Criterios de aceptación:
Identificador y Nombre:C1.1 Conectar MSNTipo:Concreto
Requerimiento que loutiliza o especializa:Conectarse
Crítico?Si
Prioridad de Desarrollo:Alta
Actores:Cliente
Documentos devisualización asociados:
Entrada:Correo: Correo mediante el cual elusuario se autentica (usualmente es elde Hotmail).Clave: Clave del usuario en el MSN
Salida:Se conecta al msn con los datos deentrada
Descripción:Mediante este caso de uso, el sistema conecta al cliente al servicio de mensajeríaMSNManejo de Situaciones Anormales:Si no se puede conectar se envía la razón por la que fue fallida la conexiónCriterios de aceptación:Se dará por aceptado, si se conecta al msn messenger, usando los datos deentrada, si estos son correctos.
Identificador y Nombre:C2 DesconectarTipo:Abstracto
Requerimiento que loutiliza o especializa:
Crítico?Si
Prioridad de Desarrollo:Alta
Actores:Cliente
Documentos devisualización asociados:
Entrada: Salida:Descripción:Permite al sistema cerrar las sesiones o conexiones que tiene un usuario a lossistemas de mensajeríaManejo de Situaciones Anormales:Criterios de aceptación:Se aceptará, si desconecta al usuario de los servicios de mensajería
Identificador y Nombre:C2.1 Desconectar MSNTipo:Concreto
Requerimiento que loutiliza o especializa:Desconectar
Crítico?Si
Prioridad de Desarrollo:Alta
Actores:Cliente
Documentos devisualización asociados:
ISC-2003-1-10 25
Entrada:Identificador del usuario
Salida:
Descripción:Cierra la conexión del usuario al MSN messengerManejo de Situaciones Anormales:Criterios de aceptación:Se aceptará, si desconecta al usuario del MSN messenger.
Identificador y Nombre:C3 Enviar MensajeTipo:Abstracto
Requerimiento que loutiliza o especializa:
Crítico?Si
Prioridad de Desarrollo:Alta
Actores:Cliente
Documentos devisualización asociados:
Entrada: Salida:Descripción:Este caso de uso le permite al cliente enviar un mensaje a un contacto que esteconectado a alguno de los sistemas de mensajería a los que el cliente estáconectado.Manejo de Situaciones Anormales:Criterios de aceptación:
Identificador y Nombre:C3.1 Enviar Mensaje MSNTipo:Concreto
Requerimiento que loutiliza o especializa:Enviar Mensaje
Crítico?Si
Prioridad de Desarrollo:Alta
Actores:Cliente
Documentos devisualización asociados:
Entrada:Identificador del contactoMensaje
Salida:
Descripción:Este caso de uso le permite al cliente enviar un mensaje a un contacto que esteconectado al MSN.Manejo de Situaciones Anormales:Criterios de aceptación:Se aceptará, si el mensaje es enviado al contacto escogido
Identificador y Nombre:C4 Recibir MensajeTipo:Abstracto
Requerimiento que loutiliza o especializa:
Crítico?Si
ISC-2003-1-10 26
Prioridad de Desarrollo:Alta
Actores:Cliente
Documentos devisualización asociados:
Entrada: Salida:Descripción:Este caso de uso le permite al cliente recibir un mensaje de alguno de suscontactos.Manejo de Situaciones Anormales:Criterios de aceptación:
Identificador y Nombre:C4.1 Recibir Mensaje MSNTipo:Concreto
Requerimiento que loutiliza o especializa:Recibir Mensaje
Crítico?Si
Prioridad de Desarrollo:Alta
Actores:Cliente
Documentos devisualización asociados:
Entrada:Nombre del contacto emisorLongitud del MensajeMensaje
Salida:
Descripción:Este caso de uso le permite al cliente recibir un mensaje de alguno de suscontactos del MSNManejo de Situaciones Anormales:Criterios de aceptación:Se aceptará, si se recibe el mensaje que ha enviado el contacto
Identificador y Nombre:C5 Ver ContactosTipo:Abstracto
Requerimiento que loutiliza o especializa:
Crítico?Si
Prioridad de Desarrollo:Alta
Actores:Cliente
Documentos devisualización asociados:
Entrada: Salida:Descripción:Este caso de uso le permite ver la lista de sus contactos en cada uno de losservicios de mensajería.Manejo de Situaciones Anormales:Criterios de aceptación:
Identificador y Nombre:C5.1 Ver Contactos MSN
ISC-2003-1-10 27
Tipo:Concreto
Requerimiento que loutiliza o especializa:Ver Contactos
Crítico?Si
Prioridad de Desarrollo:Alta
Actores:Cliente
Documentos devisualización asociados:
Entrada: Salida:Nombre del ContactoEmail del ContactoEstado del Contacto
Descripción:Este caso de uso le permite al cliente ver la lista de contactos del MSNmessenger. Por cada contacto debe aparecer el nick, el email y el estado.Manejo de Situaciones Anormales:Criterios de aceptación:Se aceptará, si se visualizan los contactos que tiene el cliente en el MSNmessenger.
ISC-2003-1-10 28
8 DISEÑO DE LA ARQUITECTURA DE LA APLICACION
8.1 Arquitectura de Alto Nivel
Se manejó una arquitectura de tres capas, como se ve en la figura. Es un
diseño MVC (Modelo Vista Controlador) donde las dos primeras capas son la
capa de presentación y de control y la segunda capa es el modelo del mundo.
Como la aplicación sirve para Web y para Wap, la arquitectura manejada
provee de flexibilidad y facilidad de desarrollo.
ISC-2003-1-10 29
8.2 Modelo del Mundo
8.2.1 Componentes
Se separó la aplicación en dos paquetes con prefijo co.uniandes.achaves:
MessengerMovil y utilidadesXML. El primero es el modelo real del mundo,
donde se lleva a cabo la conectividad con el servicio de mensajería MSN, el
segundo es un paquete que contiene clases que se comportan como
Contenedoras (HastTable) y como documento DOM.
8.2.2 Diagrama de Clases
ISC-2003-1-10 30
8.2.3 Clase Usuario
Usuario es la clase contenedora del modelo del mundo. Representa al usuario
de la aplicación. Posee uno o más servicios de mensajería (Clase Servicio) y
uno o más conexiones a estos (Clase Conexión).
Como la aplicación solo provee conectividad con el servicio de mensajería
MSN, Usuario posee un solo servicio y una sola conexión.
8.2.4 Clase Servicio
ISC-2003-1-10 31
Servicio representa la configuración de un perfil en algún servicio de
mensajería. Este perfil contiene el login y password de autenticación ante el
servicio y el nick en este. Además contiene el nombre del sistema de
mensajería.
8.2.5 Clase Conexión
Conexión representa la base en la comunicación con el sistema de mensajería.
La conexión esta compuesta por una dirección ip, un puerto y el socket que
representa la comunicación a ese servidor.
Conexión define seis métodos abstractos que cualquier conexión a un sistema
de mensajería debe ofrecer:
• Abrir, que abre el socket y establece comunicación con el servidor
• EnviarMensaje, que envía un mensaje a un contacto en el sistema de
mensajería
• VerMensajes, que permite ver los mensajes recibidos
• VerListaUsuarios, que permite ver los contactos del usuario, así como el
estado de cada uno de ellos
• EstaCerrada, que indica si esta cerrada o no la conexión con el servidor
• Cerrar, que cierra la conexión con el servicio de mensajería.
ISC-2003-1-10 32
8.2.6 Clase ComandoMSN
ComandoMSN representa un comando del protocolo MSN, como por ejemplo
USR o SYN. ComandoMSN posee atributos estáticos de tipo String por cada
Comando que tiene el protocolo de mensajería MSN. (Ver Anexo A).
8.2.7 Clase RequerimientoMSN
RequerimientoMSN representa una petición que se envía al servidor. Esta
compuesto por un ComandoMSN, un Transaction ID y una lista de argumentos.
Cuando se instancia un objeto RequerimientoMSN, este se encarga de asignar
un TriID único.
ISC-2003-1-10 33
8.2.8 Clase RespuestaMSN
RespuestaMSN representa una respuesta del servicio de mensajería MSN. Al
igual que el requerimientoMSN, esta compuesta de un ComandoMSN, un
transactionID y una lista de argumentos o parámetros. Adicionalmente se
guarda la respuesta tal como llega por el Stream de entrada.
RespuestaMSN ofrece además tres métodos estáticos: isMensaje, isError e
IsComando, para que la aplicación sepa si la cadena que llega por el stream de
entrada es un mensaje, una respuesta o un comando de error y decida que
evento generar.
ISC-2003-1-10 34
8.2.9 Clase ConexionMSN
ConexionMSN es una clase que hereda de la clase Conexión, de tal forma que
implementa los métodos abstractos de Conexión. Conexión se encarga de
manejar los componentes Dispatch Server y Notification Server del protocolo de
mensajería MSN. Entre sus funciones esta:
• La funcionalidad establecida por la clase Conexión: abrir, enviar un
mensaje, ver la lista de contactos, recibir mensaje y cerrar la conexión.
• Llevar a cabo los pasos de autenticación ante el servicio de mensajería.
ISC-2003-1-10 35
• Sincronizar la lista de contactos con el servidor.
• Enviar los diferentes Comandos hacia el Dispatch o Notification Server.
• Controlar y solicitar sesiones de chat para permitir enviar y recibir
mensajes.
• Recibir las respuestas o comandos que envía el servidor y manejar
apropiadamente cada una de ellas.
8.2.10 Clase SesionMSN
SesionMSN representa una sesión ante el componente del servicio MSN
Switchboard Server. Sus funciones son:
• Conectarse y desconectarse a las diferentes switchboard sessions
• Enviar Mensajes a la sesión
• Recibir los Mensajes que llegan por la sesión
• Invitar contactos a la sesión (CAL)
• Manejar respuestas dentro de la sesión. (Comandos IRO, JOI y BYE).
ISC-2003-1-10 36
8.2.11 Clase MensajeMSN
MensajeMSN representa un mensaje que se desea enviar a algún contacto o un
mensaje recibido. Posee dos métodos muy importantes para el envió y
visualización de los mensajes:
Procesar(String mensaje), que recibe un mensaje que llega por el stream de
entrada y lo procesa para separar el mensaje y el contacto que envía este y
ConvertirMensaje(), que convierte el mensaje ingresado por el usuario de la
aplicación en un mensaje MIME para que sea enviado por el stream de salida
de la sesión correspondiente.
MensajeMSN permite identificar cuales mensajes han sido leídos y cuales no, lo
cual permite visualizar de una mejor forma los mensajes.
ISC-2003-1-10 37
8.2.12 Clase ConexionMSNReader
La clase ConexionMSNReader se encarga de manejar el stream de entrada del
socket. ConexionMSNReader es el encargado de leer permanentemente el
Stream de entrada, que es un BufferedReader. Cuando lee que hay una
entrada por este reader, pregunta qué tipo de respuesta es (respuesta a una
petición, mensaje o error) y le avisa a todas las clases que implementan la
interfaz ConexionMSNReaderListener sobre la ocurrencia del nuevo evento.
Hay una clase ConexionMSNReader por cada socket abierto, es decir hay un
objeto reader de la conexión al Notification Server y un objeto por cada sesión.
8.2.13 Interfaz ConexionMSNListener
Esta interfaz, es implementada por la clase ConexionMSN y SesionMSN.
Mediante esta interfaz las dos clases se suscriben para recibir los eventos:
comandoRecibido, mensajeRecibido y errorRecibido.
ISC-2003-1-10 38
8.2.14 Clase EstadoMSN
EstadoMSN representa un estado de usuario en el servicio de mensajería MSN.
(Ver Anexo B).
8.2.15 Clase UsuarioMSN
UsuarioMSN representa un usuario o contacto del servicio de mensajería MSN.
Un usuarioMSN esta asociado a un estadoMSN, que es el estado que posee el
contacto.
ISC-2003-1-10 39
8.2.16 Clase MSNException
MSNException representa una excepción en la aplicación. Ya sea una
excepción interna o un mensaje de error del servidor de mensajería.
8.2.17 Diagramas de Secuencia
8.2.18 Diagrama de Secuencia de Envió de un Comando Típico
Mediante este proceso se envía una petición a cualquiera de los tres
componentes del servicio de mensajería. El objeto ConexionMSN instancia un
objeto RequerimientoMSN con el comando a enviar y los parámetros o
argumentos. Luego envía la representación de este objeto como cadena de
caracteres por el printWriter del stream de salida del socket.
ISC-2003-1-10 40
8.2.19 Diagrama de Secuencia de Recepción de un Comando Típico
Mediante este proceso se reciben las respuestas asincrónicas que envían los
componentes del servicio de mensajería. Inicialmente el objeto
ConexionMSNReader mediante un thread esta permanentemente revisando el
stream de entrada del socket. Cuando llega una cadena por el stream de
entrada, pregunta que tipo de entrada es (respuesta, error o mensaje). Si es
una respuesta, crea el objeto RespuestaMSN con la cadena de entrada y avisa
a todos sus escuchas (en este caso ConexionMSN) sobre la ocurrencia del
evento.
ISC-2003-1-10 41
8.2.20 Diagrama de Secuencia de Ingreso al Servicio de Mensajería
Mediante este proceso se realiza la autenticación del usuario al servicio de
mensajería. La capa de control solicita al modelo del mundo, abrir la conexión al
servicio. EL objeto conexionMSN abre la conexión al Dispatch Server, inicializa
el stream de salida y entrada y el escucha de la conexión. Una vez hecho esto
empieza a realizar el proceso de negociación del protocolo y autenticación. (ver
5.1.2 Protocolo de Comunicación de Mensajería MSN). Como este proceso se
realiza en una serie de pasos de forma petición/respuesta, se usa el método
obtenerRespuesta, que “duerme” la aplicación mientras no llegue una respuesta
con el mismo TriId del requerimiento. En el llamado al método Autenticar el
Dispatch Server devuelve la dirección del Notification Server, por lo que el
proceso vuelve a su estado inicial de abrir la nueva conexión. Luego de esto el
proceso de autenticación termina cuando el usuario cambia su estado a online.
ISC-2003-1-10 42
8.2.21 Diagrama de Secuencia de Envío de Mensajes
El controlador solicita al modelo enviarle un mensaje a un usuario. El objeto
ConexionMSN mira entonces si ya esta abierta una sesión de mensajería con el
usuario. Si no esta abierta la sesión se instancia una SesionMSN, se abre una
conexión al Switchboard e invita el usuario a la sesión. Si ya esta abierta
devuelve el objeto SesionMSN apropiado. Después de esto solicita a la
sesionMSN enviar el mensaje. SesionMSN le pide a MensajeMSN que
convierta el mensaje a tipo MIME. Y posteriormente lo envía por el printWriter
del stream de salida.
ISC-2003-1-10 43
8.2.22 Diagrama de Secuencia de Recepción de Mensajes
El thread del reader que esta escuchando el socket del Switchboard server
recibe una cadena por el stream de entrada. Luego de saber que la entrada es
de tipo mensaje, usando la longitud que viene en la entrada realiza un ciclo
hasta tener la totalidad del mensaje. Luego instancia un objeto MensajeMSN
para que procese el mensaje MIME y avisa a todos sus escuchas sobre la
ocurrencia del evento. En este caso el escucha es de tipo SesionMSN que
avisa a ConexionMSN sobre el mensaje para que este objeto lo guarde en la
colección de mensajes de tipo XMLHashTable.
8.2.23 Diagrama de Secuencia de Visualizar Contactos
ISC-2003-1-10 44
El controlador solicita al modelo del mundo ver la lista de contactos. La
conexionMSN devuelve entonces la colección XMLHashTable con los
contactos. Estos contactos y su estado llegan al modelo del mundo después de
iniciarse el proceso de sincronización mediante la recepción de un comando
típico (comando LST).
8.2.24 Diagrama de Secuencia de Salir
La conexionMSN para el escucha de la conexión al Notification Server y cierra
el socket. Posteriormente recorre todas las sesiones e invoca el método cerrar
en cada una de ellas.
8.3 UtilidadesXML
Utilidades XML es un paquete de utilidades que soporta el funcionamiento de la
aplicación, tanto en el modelo del mundo como en la capa de presentación.
XMLHashTable es una clase que se comporta como contenedor de tipo
HashTable y como documento DOM. Tiene un funcionamiento de HashTable
para tener las funciones de contenedor que se necesitan en el modelo del
mundo, y funciona como Documento DOM para soportar las transformaciones
XML de la capa de presentación.
ISC-2003-1-10 45
8.3.1 Diagrama de Clases
8.4 Capa de Presentación y Control
Esta es la capa que tiene la responsabilidad de interactuar con el cliente, es
decir, recibe las peticiones del cliente, decide cómo interactuar con el modelo
del mundo y presenta las salidas de respuesta a las peticiones. Esta capa va
dentro del Contenedor de Aplicaciones WEB.
ISC-2003-1-10 46
8.4.1 Diagrama de Clases
8.4.2 Funcionamiento de la capa de presentación y control
Como se mencionó en la arquitectura de alto nivel, se manejo un diseño MVC.
MVC es un patrón de diseño que separa la aplicación en tres módulos o
componentes: el modelo del mundo (persistencia y reglas del negocio), la
presentación que se encarga de desplegar los datos al usuario y un
componente de control que se encarga del manejo del flujo de información y de
requerimientos/respuestas desde y hacia el modelo del mundo.
Los principales beneficios del patrón MVC es que al separar en el diseño en 3
capas, disminuye el tamaño del desarrollo debido a que el código no se duplica.
ISC-2003-1-10 47
Este problema de duplicación del código es muy frecuente en aplicaciones web
y wap. Además centraliza el control de la aplicación lo que permite un
mantenimiento y ajuste del software más fácil.
El patrón MVC es uno de los patrones que mejor contribuyen a aplicaciones
como la desarrollada, donde se tienen múltiples clientes (en este caso
dispositivos móviles y browsers) debido a que no se debe duplicar el control
para cada tipo de cliente y lo único que debe ser desarrollado son las nuevas
vistas para el nuevo cliente.
La capa de control se encarga entonces de cuatro actividades: recibir e
interpretar los requerimientos, seleccionar qué método del modelo del mundo
usar y seleccionar y redireccionar a la siguiente vista.
Como parte de la implementación del patrón MVC en Java, se usa el modelo 2
de JSP. Este modelo consiste en la presencia de un servlet controlador que
centraliza la atención de los requerimientos, invoca los servicios requeridos en
el modelo del mundo y redirecciona la salida de este a la pagina jsp apropiada.
Para que el servlet controlador diferencie el tipo de operación se uso un servlet
mapping. Un servlet mapping permite direccionar varias direcciones o sufijos de
direcciones a un mismo servlet:
<servlet-mapping> <servlet-name>Controlador</servlet-name> <url-pattern>/login</url-pattern></servlet-mapping>
Cada vez que se llame la url de la aplicación, por ejemplo, tesismovil.no-
ip.com/login. El contenedor de aplicaciones redirecciona al servlet Controlador.
ISC-2003-1-10 48
Una vez se tengan los servlets mapping para cada tipo de redirección, se debe
establecer un método para identificar que url fue invocada y que tipo de acción
tomar en el modelo del mundo. Esto se puede lograr mediante condicionales
estilo IF. Sin embargo esto ocasiona que el servlet se vuelva demasiado largo e
incomprensible. Por esto se usa un mecanismo de acciones.
Una acción es una operación que se debe realizar ante el modelo del mundo.
La acción tiene un nombre, un método que realiza la interacción ante el modelo
y uno que determina la siguiente vista.
En la aplicación se tienen las siguientes acciones: AccionVerMensajes,
AccionVerContactos, AccionVerMensajes, AccionEnviarMensaje, AccionLogin y
AccionLogout.
El servlet controlador tiene una colección de tipo hashmap con las acciones que
tiene disponible la aplicación. Esta colección se indexa por el nombre de la
acción. Cuando viene un requerimiento se debe mirar la terminación de la url y
dependiendo de esta, obtener del hashmap el objeto acción indicado y llamar el
método manejar().
Luego de realizar la acción, y si no ocurre ninguna excepción el servlet le pide a
la acción la siguiente vista y hace la redirección.
Cada objeto que hereda de Accion posee dos urls distintas para redirección,
dependiendo del tipo de cliente (web o wap).
En el caso de la funcionalidad de ver contactos y ver mensajes, la jsp respectiva
se encarga de obtener el documento DOM, que el Controlador ha puesto en la
sesión después de llamar el método en el modelo del mundo, y dependiendo
del tipo de cliente aplicar el XSLT a este documento. De esta forma se genera
ISC-2003-1-10 49
el contenido dinámico independientemente del lenguaje que interpreta cada
cliente.
8.4.3 Diagrama de Secuencia
ISC-2003-1-10 50
9 HERRAMIENTAS DE DESARROLLO
Las siguientes son las herramientas y lenguajes usados para el desarrollo de la
aplicación:
9.1 Java 2 Standard Edition J2SE
Java 2 Standard Edition es un paquete de herramientas y utilidades
desarrollado por SUN Microsystems que permiten el desarrollo en lenguaje
JAVA. Java es un lenguaje de alto nivel en el cual se desarrollo el modelo del
mundo. Entre las principales características de JAVA y J2SE tenemos:
• Java independiente de la plataforma: Java es un lenguaje compilado
e interpretado al mismo tiempo. Al compilar un programa escrito en
JAVA se genera un archivo escrito en un lenguaje intermedio llamado
Bytecodes. Estos Bytecodes se pueden llevar a cualquier plataforma
o sistema operativo, donde la maquina virtual de java (Java VM) lo
interpreta.
• Java provee un API muy completo: El API de JAVA (Application
Programming Interface), provee de un conjunto de componentes y
paquetes de todo tipo para una programación fácil y de alto nivel.
Componentes para interfaz grafica, para comunicaciones, encripción,
manejo de streams, XML, estructuras de datos, etc.
• Permite desarrollar fácilmente aplicaciones stand-alone, clientes
servidor, y aplicaciones para Internet.
• Es orientado a objetos
ISC-2003-1-10 51
9.2 JavaDoc
JavaDoc es una herramienta contenida dentro de el paquete J2ME para
generar documentación de los API’s desarrollados en HTML. JavaDoc además
provee de lineamientos generales para documentación y codificación.
9.3 Servlets y Java Server Pages (JSP)
Servlets y Java Server Pages son tecnologías desarrolladas en el J2EE (Java 2
Enterprise Edition).
Servlets son programas hechos en Java que corren en el servidor y ayudan a
enriquecer el desarrollo web. Los servlets, al igual que JAVA, están pensados
para correr independientemente de la plataforma y del servidor Web. Los
servlets implementan una serie de interfaces para capturar y poder modelar los
mensajes http bajo el paradigma OO
Los servlets y las JSP tienen acceso a todo el API de Java y a librerías
específicas para el desarrollo web. Los servlets se utilizan mucho para
desarrollar los controladores.
Las Java Server Pages o JSPs son una extensión de la tecnología de Servlets,
que se asemeja a la programación de scripting del estilo ASP o PHP, es decir el
desarrollo embebido dentro de las paginas web. Este desarrollo a través de
páginas dinámicas permite un desarrollo web rápido y fácil de implementar. Las
paginas JSPs funcionan dentro del Contenedor de Aplicaciones Web como un
servlet y son usadas generalmente como vistas para ingresar datos o desplegar
información a los usuarios.
ISC-2003-1-10 52
9.4 Apache Tomcat
Apache Tomcat, es un contenedor de aplicaciones basadas en servlets y jsps.
Su uso es libre y se rige bajo la licencia de Apache. Para el desarrollo se usa el
Apache Tomcat 4.
Esta versión de Tomcat implementa las especificaciones de Servlet 2.3 y
JavaServerPages 1.2. Además de ser un contenedor de aplicaciones, sirve
también como servidor HTTP.
Apache Tomcat brinda una alternativa libre y muy completa a otros
Contenedores/Servidores Web como IBM WebSphere, Oracle IAS, Sun ONE
Web Server, BEA WebLogic, etc.
9.5 Apache Ant
Apache Ant es una herramienta basada en java que funciona de forma similar al
Make de Unix. Es decir, una forma de compilar, empaquetar, hacer deploy y
muchas otras tareas a través de scripting. La ventaja de Ant es que es
independiente de la plataforma y es extensible (se pueden especificar nuevas
tareas).2 Ant usa archivos de configuración XML para especificar las tareas a
realizar. Entre estas tareas encontramos: compresión, empaquetado de
aplicaciones en JAR/EAR/WAR, tareas de auditoria y pruebas, compilar y
realizar deploys y tareas para modificar el sistema de archivos.
9.6 UML y Power Designer
UML es un meta lenguaje de modelado de arquitecturas, que especifica y
visualiza los elementos de ésta. Este lenguaje usa un conjunto de elementos y
notaciones para modelar la parte estática, dinámica y el flujo de información en
la aplicación.
ISC-2003-1-10 53
UML especifica una gran variedad de diagramas para visualizar la arquitectura
de la aplicación. Los usados en el desarrollo de la aplicación fueron:
• Diagrama de Casos de Uso: El diagrama de casos de uso permite ver el
comportamiento del sistema desde el punto de vista del usuario final.
• Diagrama de Clases: El diagrama de clases permite visualizar el modelo
estático interno de la aplicación o sus componentes.
• Diagrama de Secuencias: El diagrama de secuencia permite visualizar
las interacciones necesarias (intercambio de mensajes) de los objetos
del modelo del mundo para poder llevar a cabo un determinado proceso,
a través del tiempo.
Power Designer es una herramienta que permite el modelado gráfico en UML
de la aplicación. Power Designer es desarrollado por Sybase Inc. Aparte de
proveer la herramienta de modelado, facilita otras actividades en el desarrollo
de la arquitectura de software, tales como diseño entidad/relación,
documentación y generación automática de código fuente.
9.7 Deck-It
Deck-It es una herramienta de libre distribución desarrollada por PyWeb que
emula las paginas WAP. Deck-it puede usarse con distintos look & feel de
teléfonos móviles. Deck-It interpreta el código WML, por lo que no es necesario
disponer de un Gateway de WAP o Toolkit que compile los WML.
2 Tomado del web site de Apache Ant
ISC-2003-1-10 54
10 RESULTADOS ALCANZADOS
• Estudio de antecedentes de la mensajería instantánea y la comunicación
móvil (ver numeral 4. Marco Teórico)
• Descripción del sistema de mensajería MSN (ver numeral 6.
Funcionamiento del sistema de mensajería MSN).
• Investigación sobre los protocolos y lenguajes que manejan los teléfonos
celulares.
• Desarrollo de software exitoso, que incluye las etapas de especificación y
diseño (ver numeral 7. Análisis de Requerimientos y 8. Diseño de la
arquitectura).
• Identificación de la problemática técnica de los teléfonos celulares como
dispositivos móviles (ver numeral 11. Limitaciones y Problemas
Encontrados).
• Se enriqueció la capacidad de conceptualización y desarrollo de
aplicaciones para WEB.
• Se identificaron posibles desarrollos futuros (ver Numeral 12. Posibles
desarrollos en el futuro).
ISC-2003-1-10 55
11 LIMITACIONES Y PROBLEMAS ENCONTRADOS
11.1 Mantenimiento de la sesión en la aplicación WAP
La sesión en una aplicación web representa una conexión a la aplicación o una
instancia de la aplicación. Cada usuario que ingresa a la aplicación tiene una
sesión independiente. Por cada sesión, el servidor o contenedor de aplicaciones
permite guardar diferentes objetos. Algunos ejemplos de objetos que se
guardan en sesión son objetos para mantener el estado del usuario o para
hacer tracking de acciones. La sesión es un concepto muy útil en las
aplicaciones web debido a que el protocolo http no contempla mecanismos para
mantener el estado del usuario o un historial de acciones.
El contenedor de aplicaciones distingue o separa cada sesión de usuario,
asignándole un identificador único de sesión o session ID. Para poder recuperar
la sesión, a medida que el usuario cambia de página, el contenedor de
aplicaciones automáticamente guarda un cookie con este id de sesión en la
máquina de cada usuario.
Como en los dispositivos celulares actuales no existe forma de guardar el
cookie, el mantenimiento de sesión no se puede hacer de esta forma. Esto
constituye un problema importante debido a que los objetos del modelo del
mundo de cada usuario se guardan en la sesión.
En el API de los servlets (J2EE API) existe un método del objeto Response
(encodeURL), que se encarga de decidir si un dispositivo acepta o no cookies.
Si no las acepta decide concatenar el url con el id de la sesión. Este último
método de llevar en la url el id de la sesión es el que se debe manejar en el
caso de la aplicación WAP.
ISC-2003-1-10 56
11.2 Restricciones de los dispositivos móviles
La funcionalidad que ofrece la aplicación se ve restringida por el tipo de
dispositivo y el ancho de banda que ofrece WAP. Aunque el servicio de
mensajería MSN ofrece transferencia de archivos, audio y video y envío de
noticias, la aplicación desarrollada debe ofrecer los servicios básicos de
mensajería, debido a las restricciones de visualización y forma de uso de los
celulares y al poco ancho de banda que ofrece WAP.
11.3 Interpretación de WML en dispositivos móviles
La visualización e interpretación de las páginas WML depende del tipo de
teléfono. Por ejemplo, la visualización de una tabla o un campo de texto varía
en cada celular. Otro ejemplo es que algunos teléfonos celulares reconocen
atributos de los tags y otros no (por ejemplo el atributo format en el tag input).
ISC-2003-1-10 57
12 POSIBLES DESARROLLOS EN EL FUTURO
12.1 Enriquecer la funcionalidad
La aplicación desarrollada ofrece los servicios básicos en la conectividad hacia
el servicio de mensajería MSN. Sin embargo se puede adicionar nuevas
funciones, como cambiar el nick name y manejar la lista de contactos. También
se puede pensar en ir añadiendo funcionalidades a medida que los teléfonos
celulares vayan evolucionando. Si en algún momento los celulares incorporaran
discos duros o si los protocolos de conexión a Internet aumentaran el ancho de
banda, se podría pensar en añadir transferencia de archivos o de audio.
El servicio de mensajería MSN, por su parte, también añade nuevos servicios
que van saliendo en cada versión del cliente o cuando se actualiza el protocolo.
Se debe tener en cuenta estos nuevos servicios para mantener la aplicación
actualizada o enriquecerla.
12.2 Incorporar nuevos servicios de mensajería
En el diseño del modelo del mundo se tuvo en cuenta la posibilidad de extender
la aplicación con otros servicios de mensajería (como AOL o Yahoo). Esta
inclusión de nuevos servicios daría mayor valor a la aplicación debido a que
normalmente las personas usan y tienen contactos en varios sistemas de
mensajería instantánea.
ISC-2003-1-10 58
12.3 Extender la capa de presentación
A medida que los celulares mejoren su forma de visualización o interacción, se
puede pensar en extender la capa de presentación. Hoy en día, por ejemplo,
algunos celulares están implementando lenguajes WML de última generación,
que permite visualización de colores, imágenes, etc.
12.4 Aprovechar el desarrollo de la aplicación como un framework
El desarrollo del modelo del mundo, constituye un framework de
interconectividad hacia el servicio de mensajería MSN. Este framework es
fácilmente extensible y usable como parte de distintas aplicaciones que
requieran interconexión con este servicio.
Un posible uso de este framework puede ser una aplicación que se ocupe del
soporte comercial a usuarios en un web site de comercio. Los usuarios hacen
preguntas desde el web site y el asesor comercial les contesta a ellos desde su
aplicación de mensajería como si estuviera hablando con un contacto.
ISC-2003-1-10 59
13 CONCLUSIONES
• Es posible desarrollar una aplicación que permita la interacción desde un
teléfono celular o desde la web con los sistemas de mensajería
instantánea, particularmente utilizando el sistema de mensajería MSN.
• El protocolo del sistema de mensajería MSN constituye un modelo
coherente y confiable para su uso en la aplicación desarrollada.
• Los requerimientos que se establecieron en el diseño de la aplicación
son: permitir ingresar y salir del sistema, enviar y recibir mensajes y ver
la lista de contactos, teniendo en cuenta que el uso de la aplicación se da
desde un teléfono celular.
• El uso del patrón MVC en la arquitectura de la aplicación, combinado con
el uso de XML y transformaciones XSL, permite ampliar y extender
fácilmente los tipos de cliente que accesan la aplicación.
• La metodología aplicada para desarrollar el software es suficiente y
puede además servir como instrumento de verificación de calidad de
procesos.
• El modelo del mundo constituye un framework que puede ser incluido o
reutilizado en aplicaciones que necesiten interconexión con el sistema de
mensajería MSN.
• Es posible dar un uso comercial a la aplicación. Teniendo en cuenta
propuestas que agreguen valor como enriquecer la aplicación con
nuevas funcionalidades del sistema de mensajería MSN, incorporar otros
sistemas de mensajería o efectuar un rediseño gráfico,
ISC-2003-1-10 60
14 BIBLIOGRAFIA
1. Rumbaugh James; Jacobson Ivar; Booch Grady. The Unified Modeling
Language Reference Manual. Addison-Wesley. 1999
2. Podosky William, Instant Messenger for Collaborative Learning
Environments. Trabajo de grado (Maestría en Ingeniería). University of
Florida 2001
3. Internet Draft: MSN Messenger Service 1.0 Protocol.
http://www.cs.berkeley.edu/~mikechen/im/protocols/msn/draft-movva-
msn-messenger-protocol-00.txt
4. MSN Instant Messenger Protocol: http://www.hypothetic.org/docs/msn/
5. The JAVA Tutorial: http://java.sun.com/docs/books/tutorial/
6. The J2EE Tutorial: http://java.sun.com/j2ee/tutorial/1_3-fcs/
7. MVC Pattern:
http://java.sun.com/blueprints/guidelines/designing_enterprise_applicatio
ns_2e/web-tier/web-tier5.html
8. Core J2EE Dispatcher View:
http://java.sun.com/blueprints/corej2eepatterns/Patterns/DispatcherView.
html
9. JavaServer Pages Technology: http://java.sun.com/products/jsp/
10. Java Servlets Technology: http://java.sun.com/products/servlet/
11. Developing XML Solutions With Java Server Pages Technology:
http://java.sun.com/blueprints/corej2eepatterns/Patterns/DispatcherView.
html
12. Java Platform Overview
http://developer.java.sun.com/developer/onlineTraining/new2java/overvie
w.html
13. Apache Tomcat: http://jakarta.apache.org/tomcat
14. Apache Ant: http://ant.apache.org/
15. Introducción a la Computación Móvil:
http://www.monografias.com/trabajos5/compumo/compumo.shtml
ISC-2003-1-10 61
16. WAP – Historia y Conceptos:
http://jlmnetwork.virtualave.net/Investigacion/Sin%20Flash/Wap/Historia/
17. Instant Messaging:
http://www.gslis.utexas.edu/~lis312le/restrict/im/im.html
18. How Instant Messaging Works:
http://www.gslis.utexas.edu/~lis312le/restrict/im/im.html
19. Arpa-Net the First Internet:
http://www.gslis.utexas.edu/~lis312le/restrict/im/im.html
20. The History of Internet: http://www.davesite.com/webstation/net-
history.shtml
ISC-2003-1-10 62
Anexo A. Tabla de Comandos del Protocolo MSN
Comando DescripciónACK Confirma el envío exitoso del mensajeADD Adiciona un contacto a las listas de contacto o bloqueosANS Acepta el ingreso o invitación a una sesiónBLP Cambia las opciones de privacidad del usuarioBYE Notifica que un usuario abandona una sesiónCAL Invita a un usuario a una sesiónCHG Envía una solicitud de cambio de estadoFLN Notifica cuando un contacto se desconectaGTC Cambia las opciones de privacidad del usuarioINF Solicita al servidor sobre los métodos de autenticación soportadosILN Comando que notifica el estado de un contacto cuando el usuario
ingresaIRO Informa sobre los contactos que están en una sesión al ingresar a
ellaJOI Notifica que un contacto ha aceptado la invitación a ingresar a la
sesiónLST Devuelve la información de las listas de contactos y bloqueos del
servidorMSG Envía un mensaje en una sesiónNAK Indica que el envío del mensaje ha falladoNLN Notifica un cambio de estado de un contactoOUT Desconecta al usuario de una sesiónREM Remueve un contacto de las listas de contactos o bloqueosRNG Notifica sobre invitaciones para ingresar a una sesiónSYN Solicita sincronizar las listas de contactos y bloqueos con el servidorUSR Comando usado para realizar los pasos de autenticación ante el
servidorVER Negocia la versión del protocolo que se va a usarXFR Indica la dirección del notification server asignada por el dispatch
server o indica la dirección de un switchboard session
ISC-2003-1-10 63
Anexo B. Estados de los Usuarios en el Protocolo de Mensajería MSN
Los estados se codifican en una cadena de tres caracteres. Los estados son:
NLN: Este estado se usa cuando el usuario ingresa a la aplicación. Elcambiarse a este estado ocasiona un aviso o alerta a todos sus contactos. Susignificado es “En Línea”
FLN: Este estado se usa para salir de la aplicación. Su significado es“Desconectado”
HDN: Este estado se usa para hacer invisible al usuario para sus contactos.Aunque en este estado el usuario no puede enviar y recibir mensajes si recibenotificaciones de ingreso/salida de sus contactos.
BSY: Representa el estado “Ocupado”
IDL: Representa el estado “Inactivo”
BRB: Representa el estado “Vuelvo en seguida”
AWY: Representa el estado “Ausente”
PHN: Representa el estado “En el teléfono”
LUN: Representa el estado “Salí a comer”