3 Capítulo 3 Marco teórico Capítulo 3 Marco teórico
Transcription
3 Capítulo 3 Marco teórico Capítulo 3 Marco teórico
cenidet Centro Nacional de Investigación y Desarrollo Tecnológico Departamento de Ciencias Computacionales TESIS DE MAESTRÍA EN CIENCIAS EN CIENCIAS DE LA COMPUTACIÓN Servicios de localización conscientes del contexto aplicando perfiles de movilidad y tecnologías de localización heterogéneas presentada por Israel Arjona Vizcaíno Ing. en Sistemas Computacionales por el I. T. de Tepic como requisito para la obtención del grado de: Maestría en Ciencias en Ciencias de la Computación Director de tesis: Dr. Juan Gabriel González Serna Co-Director de tesis: Dr. Javier Ortiz Hernández Jurado: Dra. Azucena Montes Rendón – Presidente Dr. José Antonio Zarate Marceleño – Secretario M.C. Hugo Estrada Esquivel – Vocal Dr. Juan Gabriel González Serna – Vocal Suplente Cuernavaca, Morelos, México. 14 de Septiembre de 2009 “2009, Año de la Reforma Liberal” SUBSECRETARÍA DE EDUCACIÓN SUPERIOR DIRECCIÓN GENERAL DE EDUCACIÓN SUPERIOR TECNOLÓGICA CENTRO NACIONAL DE INVESTIGACIÓN Y DESARROLLO TECNOLÓGICO ANEXO No.11 M10 ACEPTACIÓN DEL DOCUMENTO DE TESIS Cuernavaca, Morelos, 07/septiembre/2009 Dr. Hugo Estrada Esquivel Jefe del departamento de Ciencias Computacionales Presente. At´n: Dr. Raúl Pinto Elías. Presidente del Consejo del Posgrado de Ciencias Computacionales Nos es grato comunicarle, que conforme a los lineamientos para la obtención del grado de Maestro en Ciencias de este Centro, y después de haber sometido a revisión académica la tesis titulada “Servicios de localización conscientes del contexto aplicando perfiles de movilidad y tecnologías de localización heterogéneas” realizada por el alumno Israel Arjona Vizcaíno y dirigida por el Dr. Juan Gabriel González Serna y Codirigida por el Dr. Javier Ortiz Hernández, habiendo realizado las correcciones que le fueron indicadas, acordamos ACEPTAR el documento final de tesis, así mismo le solicitamos tenga a bien extender el correspondiente oficio de autorización de impresión. c.c.p. Dr. Gerardo Reyes Salgado.- Subdirección Académica. L.I. Guadalupe Garrido Rivera.- Jefe Departamento de Servicios Escolares. Dr. Juan Gabriel González Serna.- Directores de tesis Interesado Interior Internado Palmira s/n Col. Palmira C. P. 62490 Cuernavaca, Morelos, México. Tel. 777 362 77 70 con 10 líneas Fax : 362 77 95 (directo) www.cenidet.edu.mx “2009, Año de la Reforma Liberal” SUBSECRETARÍA DE EDUCACIÓN SUPERIOR DIRECCIÓN GENERAL DE EDUCACIÓN SUPERIOR TECNOLÓGICA CENTRO NACIONAL DE INVESTIGACIÓN Y DESARROLLO TECNOLÓGICO ANEXO No. 12 M11 AUTORIZACIÓN DE IMPRESIÓN DE TESIS Cuernavaca, Morelos, 07/septiembre/2009 C. Israel Arjona Vizcaíno Candidato al grado de Maestra en Ciencias en Ciencias de la Computación Presente. Después de haber atendido las indicaciones sugeridas por la Comisión Revisora de la Academia de Ciencias de la Computación en relación a su trabajo de tesis cuyo título es: “Servicios de localización conscientes del contexto aplicando perfiles de movilidad y tecnologías de localización heterogéneas”, me es grato comunicarle que conforme a los lineamientos establecidos para la obtención del grado de Maestro en Ciencias en este centro se le concede la autorización para que proceda con la impresión de su tesis. c.c.p. Dr. Gerardo Reyes Salgado.- Subdirección Académica Dr. Raúl Pinto Elías.- Presidente de la Academia de Ciencias Computacionales L.I. Guadalupe Garrido Rivera.- Jefe del Departamento de Servicios Escolares Expediente Dedicatoria A Dios: Por hacerme un hombre afortunado, ya que nada me ha sido fácil. A mis padres: Ramón Arjona Flores y Ernestina Vizcaíno, sé que es poco, comparado con todo lo que me han dado. A mis hermanas: Myriam y Denisse, el triunfo también es suyo, contribuyeron con su apoyo incondicional. A mi novia: Gabriela Marisol, por soportar, mantener y respetar el amor a la distancia. Agradecimientos Difícilmente podré, en tan limitado espacio, agradecer adecuadamente todo y a todos los que algo debo en relación al trabajo que aquí presento. Si algo tiene de meritorio, sin duda es fruto de muchos más de los que menciono en estas líneas. Primero, y a gran distancia del resto, mis padres. Sin su sacrificio, la ayuda de los que siguen habría sido estéril. A mis hermanas Denisse y Myriam gracias por apoyarme en todo momento y en todas mis decisiones, que aunque no siempre son las más acertadas las respetan. A mis primos Celia Emma y José Luis, y sus hijos Alejandro y Andrea por brindarme un techo y hacerme sentir como en mi hogar. Su contribución es especial. A toda mi familia: abuelos, tíos, sobrinos, primos, son tantos que se necesitaría de otra tesis para describir el apoyo que he recibido de cada uno de ustedes. Gracias muchas gracias. Gracias, por supuesto, al Dr. Juan Gabriel, mi director de tesis. Sus consejos, correcciones y confianza me señalaron el camino cuando lo necesité. A los revisores de esta tesis: Dra. Azucena Montes Rendón, Dr. Hugo Estrada Esquivel y al Dr. José Antonio Zarate Marceleño cuya incansable labor de jardinería ha hecho posible que este trabajo pueda ser mostrado y no sólo leído. A mis compañeros de sistemas distribuidos Rubí, Yanet, Omar, Christian y José Luis por tenderme la mano y por su grata compañía. A todos mis compañeros de generación, de ingeniería de software y de inteligencia artificial por la ayuda recibida a lo largo de este tiempo, globalmente muy positivo. A todos mis amigos ¡gracias por los buenos momentos! Especialmente a los de Santa María del Oro y Tepic, Nayarit. Al Centro Nacional de Investigación y Desarrollo Tecnológico por haberme permitido pertenecer a su comunidad estudiantil y realizar así mis estudios de maestría. Al Consejo Nacional de Ciencia y Tecnología por la beca para manutención otorgada. Termino por mi novia Gabriela, precisamente porque, al menos en mi mente y en mi corazón, ella fue siempre la primera, la razón de mis esfuerzos. ¡Gracias, Gaby! Resumen Las tecnologías de información (TI) contextuales o dependientes de la localización del usuario, están proyectándose como el nuevo paradigma de interacción entre el usuario y su entorno. Sistemas en donde el usuario recibirá retroalimentación de información contextual dependiendo del lugar donde se localice. Estos servicios permitirán, entre otras cosas, realizar las actividades que tiene programadas en su agenda, las cuales, están relacionadas con una ubicación especifica, es decir, se define una relación espacio-tiempo, a diferencia de las agendas tradicionales que únicamente administran actividades atemporales. En este proyecto se presenta un sistema novedoso que utiliza tecnologías de auto-identificación como RFID y QRCodes, y teléfonos celulares con sistema operativo Android para la localización de usuarios dentro de edificios multinivel y en áreas tipo campus, es decir con varios edificios. Además ofrece la asociación de objetos del mundo real al sistema de información mediante la autoidentificación, utilizando RFID y QRCodes. Abstract Contextual or dependent information technologies are projected as the new paradigm of interaction between the user and his or her environment. Systems where the user will receive feedback from contextual information depending on where it is located. These services will, among other things, do the activities scheduled on his or her agenda, which are related to a specific location, i.e. define a relationship between space and time, unlike traditional agendas which only administer timeless activities. This project presents a novel system that uses self-identification technologies such as RFID and QRCodes, and mobile phones with the Android operating system for locating users inside multi-level buildings and in campus-type areas, i.e. with several buildings. The association also offers real-world objects to the information system by means of self-identification using RFID and QRCodes. Tabla de contenido Tabla de contenido __________________________________________________________ i Listado de figuras __________________________________________________________ iv Listado de tablas ___________________________________________________________ vi Glosario de términos y siglas _________________________________________________ vii 1 Capítulo 1 Introducción___________________________________________________ 1 1.1 Introducción ____________________________________________________________ 3 1.2 Antecedentes del proyecto ________________________________________________ 4 1.2.1 API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas [GUERRA 2007] ____________________________________________________________________ 4 1.2.2 Gateway SMS Pull para servicios basados en localización con una arquitectura de servicios Web [QUIÑONEZ 2007] ______________________________________________________________ 4 2 1.3 Descripción del problema _________________________________________________ 5 1.4 Objetivos del proyecto ____________________________________________________ 6 1.5 Justificación y beneficios del proyecto _______________________________________ 7 1.6 Alcances y limitaciones del proyecto ________________________________________ 8 1.7 Organización del documento _______________________________________________ 8 Capítulo 2 Estado del arte _______________________________________________ 11 2.1 Simple Location-based Application Development for Mobile Phones [TITICA 2007] _ 13 2.2 RADAR: An In-Building RF-based User Location and Tracking System [RADAR 2000] 15 2.3 The Horus WLAN location determination system [HORUS 2004] _________________ 17 2.4 CAALIX Complete Ambient Assisted Living Experiment [CAALIX 2007] ____________ 18 2.5 Location Awareness in Community Wireless LANs [FERSCHA 2001] ______________ 20 2.6 UbiqMuseum: A Bluetooth and Java Based Context-Aware System for Ubiquitous Computing [CANO 2006] ________________________________________________________ 22 2.7 A Location-aware System using RFID and Mobile Devices for Art Museums [TESOREIRO 2008] _____________________________________________________________ 25 3 2.8 Comparativa del estado del arte con el proyecto _____________________________ 26 2.9 Servicio UBICACEL de iusacell [UBICACEL 2008]_______________________________ 27 2.10 Servicio Localízame de Movistar [LOCALIZAME 2008]__________________________ 27 2.11 AVL Reach U / Localización y Administración Vehicular Telcel [AVL REACH 2008] ___ 28 2.12 Tramigo [TRAMIGO 2008] ________________________________________________ 28 2.13 Skyhook WPS [SKYHOOK 2008] ____________________________________________ 28 Capítulo 3 Marco teórico ________________________________________________ 31 i 3.1 3.1.1 3.1.2 3.1.3 3.1.4 3.1.5 Plataformas de dispositivos móviles ________________________________________ 33 Windows Mobile ___________________________________________________________ 33 Symbian __________________________________________________________________ 33 J2ME ____________________________________________________________________ 33 iPhone OS ________________________________________________________________ 33 Android __________________________________________________________________ 33 3.2 REST (Representational StateTransfer) ______________________________________ 34 3.3 JSON__________________________________________________________________ 34 3.4 OSGi __________________________________________________________________ 35 3.5 Servicios basados en localización (LBS) ______________________________________ 35 3.6 Técnicas de posicionamiento______________________________________________ 37 3.6.1 Basadas en redes WAN ______________________________________________________ 37 3.6.1.1 GPS _________________________________________________________________ 37 3.6.1.2 Localización usando GSM ________________________________________________ 38 3.6.2 Basadas en redes LAN _______________________________________________________ 39 3.6.2.1 WiFi ________________________________________________________________ 39 3.6.2.2 RFID ________________________________________________________________ 39 3.6.2.3 Localización por Infrarrojos ______________________________________________ 40 3.6.2.4 Bluetooth ____________________________________________________________ 40 3.6.2.5 Wi-Max ______________________________________________________________ 41 4 Capítulo 4 Análisis y diseño ______________________________________________ 43 4.1 Análisis _______________________________________________________________ 45 4.2 Diseño ________________________________________________________________ 62 4.2.1 Cliente ___________________________________________________________________ 62 4.2.1.1 Paquete mx.edu.cenidet.clientetareasandroid.activities _______________________ 63 4.2.1.2 Paquete mx.edu.cenidet.clientetareasandroid.interfaz ________________________ 65 4.2.1.3 Paquete mx.edu.cenidet.clientetareasandroid.codigobarras ____________________ 67 4.2.1.4 Paquete mx.edu.cenidet.clientetareasandroid.conexionhttp ____________________ 68 4.2.1.5 Paquete mx.edu.cenidet.clientetareasandroid.objetos _________________________ 69 4.2.1.6 Paquete mx.edu.cenidet.clientetareasandroid.rfid ____________________________ 71 4.2.1.7 Paquete mx.edu.cenidet.clientetareasandroid.utilerias ________________________ 72 4.2.2 Servidor de tareas __________________________________________________________ 73 4.2.2.1 Paquete mx.edu.cenidet.servidortareasosgi.basedatos ________________________ 73 4.2.2.2 Paquete mx.edu.cenidet.servidortareasosgi.osgi _____________________________ 74 4.2.2.3 Paquete mx.edu.cenidet.servidortareasosgi.objetos __________________________ 74 4.2.2.4 Paquete mx.edu.cenidet.servidortareasosgi.utilerias __________________________ 76 4.2.2.5 Paquete mx.edu.cenidet.servidortareasosgi.recursosrestlet ____________________ 76 4.2.3 Interacción cliente-servidor___________________________________________________ 77 4.2.3.1 Autentificación del usuario ______________________________________________ 77 4.2.3.2 Consulta de tareas pendientes____________________________________________ 79 4.2.3.3 Consultar el detalle de una tarea pendiente _________________________________ 81 4.2.3.4 Completar/Cancelar una tarea pendiente ___________________________________ 83 4.2.3.5 Dar de alta una nueva tarea (establecer tarea como pendiente) _________________ 85 4.2.3.6 Tarea de guiado _______________________________________________________ 91 4.2.4 Diseño de las URL __________________________________________________________ 96 4.2.5 Diseño del modelo de la base de datos __________________________________________ 99 4.2.6 Diseño de la aplicación Web para la gestión de las tareas __________________________ 101 4.2.6.1 Paquete mx.edu.cenidet.basedatos_______________________________________ 102 ii 4.2.6.2 5 Capítulo 5 Implementación _____________________________________________ 105 5.1 5.1.1 5.1.2 5.1.3 5.2 5.2.1 5.2.2 5.2.3 5.2.4 5.2.5 5.2.6 5.3 5.3.1 5.3.2 5.3.3 5.3.4 5.3.5 6 7 Paquete mx.edu.cenidet.xmlread ________________________________________ 103 Detalles tecnológicos ___________________________________________________ 107 Cliente __________________________________________________________________ 107 Servidor _________________________________________________________________ 108 Aplicación Web de gestión de tareas __________________________________________ 108 Interacción del sistema cliente-servidor ____________________________________ 108 Autenticación del usuario ___________________________________________________ 108 Consulta de tareas pendientes _______________________________________________ 110 Completar/Cancelar una tarea _______________________________________________ 111 Nueva tarea (establecer una tarea como pendiente) ______________________________ 113 Tarea de guiado por RFID ___________________________________________________ 115 Tarea de guiado por QRCodes ________________________________________________ 117 Interacción de la aplicación Web__________________________________________ 119 Administración de usuarios __________________________________________________ 120 Administración de recursos __________________________________________________ 121 Administración de ubicaciones _______________________________________________ 122 Administración de tareas ____________________________________________________ 124 Administración de tareas de los usuarios _______________________________________ 125 Capítulo 6 Pruebas ____________________________________________________ 127 6.1 Pruebas de configuración y conexiones ____________________________________ 129 6.2 Pruebas de auto-identificación ___________________________________________ 132 6.3 Pruebas de localización y guiado del dispositivo móvil ________________________ 134 6.4 Pruebas de administración de tareas ______________________________________ 138 6.5 Pruebas de administración de la información de la base de datos ______________ 142 Capítulo 7 Conclusiones ________________________________________________ 157 7.1 Conclusiones __________________________________________________________ 159 7.2 Aportaciones __________________________________________________________ 159 7.3 Trabajos futuros _______________________________________________________ 160 7.4 Publicaciones _________________________________________________________ 161 Anexos___________________________________________________________________ 163 Anexo A Definición de la interfaz de usuario _______________________________________ 165 Anexo B Plan de pruebas T-Guide _______________________________________________ 171 Referencias _______________________________________________________________ 189 iii List ado de figuras Figura 1.1 Tecnologías inalámbricas _________________________________________________________ 4 Figura 2.1 Sistema de localización por ángulo de llegada ________________________________________ 14 Figura 2.2Plano utilizado sistema RADAR [RADAR 2000] ________________________________________ 16 Figura 2.3 Arquitectura proyecto CAALIX [CAALIX 2007]_________________________________________ 19 Figura 2.4 Proceso de localización CampusSpace ______________________________________________ 20 Figura 2.5 Arquitectura del sistema CampusSpace [FERSCHA 2001] _______________________________ 21 Figura 2.6 Descripción RDF de un miembro del staff [FERSCHA 2001] ______________________________ 21 Figura 2.7 Arquitectura del sistema UbiqMuseum [CANO 2006] __________________________________ 23 Figura 2.8 Información recibida en un cliente en UbiqMuseum [CANO 2006] ________________________ 24 Figura 2.9 Modelo conceptual [TESOREIRO 2008]______________________________________________ 26 Figura 3.1 LBS como intersección de tecnologías ______________________________________________ 36 Figura 3.2 Clasificación de las técnicas globales de posicionamiento _______________________________ 37 Figura 3.3 Esquema de la localización por GPS ________________________________________________ 38 Figura 4.1 Diagrama de bloques del proceso de comunicación entre el cliente y el servidor _____________ 45 Figura 4.2 Diagrama general de casos de uso _________________________________________________ 46 Figura 4.3 Diagrama del caso de uso CU-1 Consultar tareas pendientes ____________________________ 46 Figura 4.4 Diagrama de actividad del caso de uso CU-1 Consultar tareas pendientes __________________ 47 Figura 4.5 Diagrama de actividad del caso de uso CU-1.2 Listado de tareas pendientes ________________ 48 Figura 4.6 Diagrama del caso de uso CU-1.1 Verificar contexto ___________________________________ 49 Figura 4.7 Diagrama de actividad del caso de uso CU-1.1 Verificar contexto _________________________ 50 Figura 4.8 Diagrama de actividad del caso de uso CU-1.1.1 Consultar por RFID ______________________ 51 Figura 4.9 Diagrama de actividad del caso de uso CU-1.1.2 Consultar por barras _____________________ 52 Figura 4.10 Diagrama de actividad del caso de uso CU-1.1.3 Obtener ubicación ______________________ 54 Figura 4.11 Diagrama del caso de uso CU-2 Alta de tarea _______________________________________ 55 Figura 4.12 Diagrama de actividad del caso de uso CU-2 Alta de tarea _____________________________ 57 Figura 4.13 Diagrama del caso de uso CU-2.1 Seleccionar tarea de guiado __________________________ 57 Figura 4.14 Diagrama de actividad del caso de uso CU-2.1 Seleccionar tarea de guiado ________________ 59 Figura 4.15 Diagrama del caso de uso CU-3 Completar tarea_____________________________________ 59 Figura 4.16 Diagrama de actividad del caso de uso CU-3 Completar tarea __________________________ 60 Figura 4.17 Diagrama del caso de uso CU-4 Cancelar tarea ______________________________________ 61 Figura 4.18 Diagrama de actividad del caso de uso CU-4 Cancelar tarea ____________________________ 62 Figura 4.19 Diagrama de paquetes del cliente ________________________________________________ 63 Figura 4.20 Diagrama de clases del paquete mx.edu.cenidet.clientetareasandroid.activities ____________ 63 Figura 4.21 Diagrama de clases del paquete mx.edu.cenidet.clientetareasandroid.interfaz _____________ 65 Figura 4.22 Diagrama de clases del paquete mx.edu.cenidet.clientetareasandroid.codigobarras ________ 67 Figura 4.23 Diagrama de secuencias para la decodificación del código de barras _____________________ 68 Figura 4.24 Diagrama de clases del paquete mx.edu.cenidet.clientetareasandroid.conexionhttp _________ 69 Figura 4.25 Diagrama de secuencias comunicación cliente/servidor por HTTP _______________________ 69 Figura 4.26 Diagrama de clases del paquete mx.edu.cenidet.clientetareasandroid.objetos _____________ 70 Figura 4.27 Diagrama de clases del paquete mx.edu.cenidet.clientetareasandroid.rfid ________________ 71 Figura 4.28 Diagrama de secuencias para el proceso de lectura de tarjeta RFID ______________________ 71 Figura 4.29 Diagrama de clases del paquete mx.edu.cenidet.clientetareasandroid.utilerias _____________ 72 Figura 4.30 Diagrama de paquetes del servidor _______________________________________________ 73 Figura 4.31 Diagrama de clases del paquete mx.edu.cenidet.clientetareasandroid.basedatos ___________ 74 Figura 4.32 Diagrama de clases del paquete mx.edu.cenidet.clientetareasandroid.osgi ________________ 74 Figura 4.33 Diagrama de clases del paquete mx.edu.cenidet.servidortareasosgi.objetos _______________ 75 Figura 4.34 Diagrama de clases del paquete mx.edu.cenidet.servidortareasosgi.utilerias ______________ 76 Figura 4.35 Diagrama de clases del paquete mx.edu.cenidet.servidortareasosgi.recursosrestlet _________ 76 Figura 4.36 Diagrama de secuencias para la autenticación del usuario _____________________________ 78 Figura 4.37 Diagrama de secuencias para la consulta de tareas pendientes _________________________ 80 iv Figura 4.38 Diagrama de secuencias para la consulta del detalle de una tarea _______________________ 82 Figura 4.39 Diagrama de secuencias para la operación de completar o cancelar una tarea _____________ 84 Figura 4.40 Diagrama de secuencias para la obtención de un listado de actividades disponibles para el usuario _______________________________________________________________________________ 86 Figura 4.41 Diagrama de secuencias para la obtención de un listado de tareas disponibles para el usuario_ 88 Figura 4.42 Diagrama de secuencias para la operación establecer una tarea como pendiente (nueva tarea) 90 Figura 4.43 Diagrama de secuencias para la operación obtener la ubicación actual del dispositivo _______ 92 Figura 4.44 Diagrama de secuencias para la operación de obtener un listado de ubicaciones ___________ 94 Figura 4.45 Diagrama de secuencias de la tarea de guiado por RFID _______________________________ 95 Figura 4.46 Diagrama de secuencias de la tarea de guiado con QRCodes ___________________________ 96 Figura 4.47 Modelo físico de la base de datos________________________________________________ 100 Figura 4.48 Casos de uso de la aplicación Web _______________________________________________ 102 Figura 4.49 Diagrama de paquetes de la aplicación Web _______________________________________ 102 Figura 4.50 Diagrama de clases paquete mx.edu.cenidet.basedatos ______________________________ 103 Figura 4.51 Diagrama de clases paquete mx.edu.cenidet.xmlread ________________________________ 103 Figura 5.1 Detalles tecnológicos del proyecto ________________________________________________ 107 Figura 5.2 Pantalla inicial del sistema ______________________________________________________ 109 Figura 5.3 Pantalla de datos erróneos ______________________________________________________ 109 Figura 5.4 Diagrama de flujo del proceso de autenticación _____________________________________ 110 Figura 5.5 Pantalla de Tareas Pendientes ___________________________________________________ 110 Figura 5.6 Pantalla de detalles de tarea ____________________________________________________ 111 Figura 5.7 Diagrama de flujo del proceso de consulta de tareas pendientes ________________________ 111 Figura 5.8 Pantalla de detalles de tarea ____________________________________________________ 112 Figura 5.9 Pantalla de listado de tareas con mensaje de tarea completada_________________________ 112 Figura 5.10 Error en la operación _________________________________________________________ 112 Figura 5.11 Diagrama de flujo del proceso de completar/cancelar una tarea _______________________ 113 Figura 5.12 Pantallas involucradas en el proceso de alta de tarea ________________________________ 114 Figura 5.13 Diagrama de flujo de alta de nueva tarea _________________________________________ 115 Figura 5.14 Diagrama de flujo del proceso de guiado por RFID __________________________________ 116 Figura 5.15 Pantallas involucradas en el proceso de guiado por RFID _____________________________ 117 Figura 5.16 Diagrama de flujo del proceso de guiado por QRCodes _______________________________ 118 Figura 5.17 Pantallas involucradas en el proceso de guiado por QRCodes __________________________ 119 Figura 5.18 Pantalla principal de la aplicación Web ___________________________________________ 120 Figura 5.19 Pantallas del módulo de administración de usuarios _________________________________ 121 Figura 5.20 Pantallas del módulo de administración de recursos _________________________________ 122 Figura 5.21 Pantalla de alta de campus ____________________________________________________ 123 Figura 5.22 Pantalla de captura de ubicaciones ______________________________________________ 124 Figura 5.23 Pantalla de alta de tareas _____________________________________________________ 125 Figura 5.24 Pantalla de activación de tarea de usuarios ________________________________________ 125 v List ado de tablas Tabla 1 Comparativa de los trabajos relacionados con el proyecto de tesis __________________________ 27 Tabla 2 Comparativa de los servicios de localización ___________________________________________ 29 Tabla 3 Descripción del caso de uso CU-1 Consultar tareas pendientes _____________________________ 46 Tabla 4 Descripción del caso de uso CU-1.2 Listado de tareas pendientes ___________________________ 47 Tabla 5 Descripción del caso de uso CU-1.1 Verificar contexto ____________________________________ 49 Tabla 6 Descripción del caso de uso CU-1.1.1 Consultar por RFID __________________________________ 50 Tabla 7 Descripción del caso de uso CU-1.1.2 Consultar por Barras ________________________________ 51 Tabla 8 Descripción del caso de uso CU-1.1.3 Obtener ubicación __________________________________ 52 Tabla 9 Descripción del caso de uso CU-2 Alta de tarea _________________________________________ 55 Tabla 10 Descripción del caso de uso CU-2.1 Seleccionar tarea de guiado ___________________________ 58 Tabla 11 Descripción del caso de uso CU-3 Completar tarea _____________________________________ 59 Tabla 12 Descripción del caso de uso CU-4 Cancelar tarea _______________________________________ 61 Tabla 13 Caso de prueba T-Guide-001-001 __________________________________________________ 129 Tabla 14 Caso de prueba T-Guide-001-002 __________________________________________________ 130 Tabla 15 Caso de prueba T-Guide-001-003 __________________________________________________ 131 Tabla 16 Caso de prueba T-Guide-002-001 __________________________________________________ 132 Tabla 17 Caso de prueba T-Guide-002-002 __________________________________________________ 133 Tabla 18 Caso de prueba T-Guide-003-001 __________________________________________________ 134 Tabla 19 Caso de prueba T-Guide-003-002 __________________________________________________ 135 Tabla 20 Caso de prueba T-Guide-003-003 __________________________________________________ 136 Tabla 21 Caso de prueba T-Guide-004-001 __________________________________________________ 138 Tabla 22 Caso de prueba T-Guide-004-002 __________________________________________________ 139 Tabla 23 Caso de prueba T-Guide-004-003 __________________________________________________ 140 Tabla 24 Caso de prueba T-Guide-005-001 __________________________________________________ 142 Tabla 25 Caso de prueba T-Guide-005-002 __________________________________________________ 144 Tabla 26 Caso de prueba T-Guide-005-003 __________________________________________________ 147 Tabla 27 Caso de prueba T-Guide-005-004 __________________________________________________ 152 Tabla 28 Caso de prueba T-Guide-005-005 __________________________________________________ 154 Tabla 29 Resumen de los casos de prueba de la plataforma propuesta ____________________________ 156 Tabla 30 Tareas a desarrollar para las pruebas ______________________________________________ 172 Tabla 31 Tecnología física utilizada ________________________________________________________ 173 Tabla 32 Tecnología de programación utilizada ______________________________________________ 173 Tabla 33 Características a probar de la aplicación ____________________________________________ 174 vi Glosario de términos y siglas GPRS General Packet Radio Service. Servicio General de Paquetes por Radio. Es una tecnología digital de telefonía móvil. Es considerada la generación 2.5, entre la segunda generación (GSM) y la tercera (UMTS). Proporciona altas velocidades de transferencia de datos (especialmente útil para conectar a Internet) y se utiliza en las redes GSM. GPS Global Positioning System. Sistema de Posicionamiento Global. Sistema Global de Navegación por Satélite que permite determinar en todo el mundo la posición de un objeto. GSM Global System for Mobile communications. Sistema Global para las Comunicaciones Móviles. Formalmente conocida como “Group Special Mobile” (GSM, Grupo Especial Móvil) es un estándar mundial para teléfonos móviles digitales. HTTP HyperText Transfer Protocol. Protocolo de transferencia de hipertexto. Protocolo desarrollado por la W3C para la transferencia de información a través de la Web. Es un protocolo sin estado –no guarda información sobre conexiones anteriores- y está basado en el modelo de clienteservidor. IEEE Institute of Electrical and Electronics Engineers. Instituto de Ingenieros Eléctricos y Electrónicos, una asociación técnicoprofesional mundial dedicada a la estandarización, entre otras cosas. Es la mayor asociación internacional sin fines de lucro formada por profesionales de las nuevas tecnologías, como ingenieros de telecomunicaciones, ingenieros electrónicos, Ingenieros en informática e Ingenieros en computación. LBS Location Based Services. Los Servicios Basados en Localización buscan ofrecer un servicio personalizado a los usuarios basado en información de ubicación geográfica de estos. OSGI Open Services Gateway Initiative. Fue creado en Marzo de 1999. Su objetivo es definir las especificaciones abiertas de software que permita diseñar plataformas compatibles que puedan proporcionar múltiples servicios. Fue pensado principalmente para su aplicación en redes domésticas y por ende en la llamada Domótica o informatización del hogar. PostgreSQL Servidor de base de datos libre desarrollado en su primera versión con el nombre de Ingres, proyecto desarrollado en la universidad de Berkeley. Considerado como el referente a los sistemas manejadores de base de datos libres. QRCODES QRCodes. Es un sistema para almacenar información en una matriz de vii puntos o un código de barras bidimensional creado por la compañía japonesa Denso-Wave en 1994; se caracterizan por los tres cuadrados que se encuentran en las esquinas y que permiten detectar la posición del código al lector. La sigla "QR" se derivó de la frase inglesa "Quick Response" pues el creador aspiraba a que el código permitiera que su contenido se leyera a alta velocidad. Los códigos QR son muy comunes en Japón y de hecho son el código bidimensional más popular en ese país. RFID SMS Radio Frequency Identification. Es un sistema de almacenamiento y recuperación de datos remoto que usa dispositivos denominados etiquetas, transpondedores o tags RFID. El propósito fundamental de la tecnología RFID es transmitir la identidad de un objeto (similar a un número de serie único) mediante ondas de radio. Las tecnologías RFID se agrupan dentro de las denominadas Auto ID (automatic identification, o identificación automática). Short Message Service. Servicio de mensajería corto. Es un servicio disponible en los teléfonos móviles que permite el envío de mensajes cortos entre teléfonos móviles, teléfonos fijos y otros dispositivos de mano. TDMA Time Division Multiple Access. Tecnología que distribuye las unidades de información en alternantes slots de tiempo proveyendo acceso múltiple a un reducido número de frecuencias. TDMA es una tecnología inalámbrica de segunda generación que brinda servicios de alta calidad de voz y datos. Divide un único canal de frecuencia de radio en seis ranuras de tiempo. A cada persona que hace una llamada se le asigna una ranura de tiempo específica para la transmisión, lo que hace posible que varios usuarios utilicen un mismo canal simultáneamente sin interferir entre sí. WIFI Wi-Fi es un sistema de envío de datos sobre redes computacionales que utiliza ondas de radio en lugar de cables, además es una marca de la Wi-Fi Alliance (anteriormente la WECA: Wireless Ethernet Compatibility Alliance), la organización comercial que adopta, prueba y certifica que los equipos cumplen los estándares 802.11. WLAN Wireless Local Area Network. Es un sistema de comunicación de datos inalámbrico flexible, muy utilizado como alternativa a las redes LAN cableadas o como extensión de éstas. Utiliza tecnología de radiofrecuencia que permite mayor movilidad a los usuarios al minimizar las conexiones cableadas. Las WLAN van adquiriendo importancia en muchos campos, como almacenes o para manufactura, en los que se transmite la información en tiempo real a una terminal central. También son muy populares en los hogares para compartir el acceso a Internet entre varias computadoras. viii 1 Capítulo 1 Introducción Capítulo 1 Introducción En este capítulo se muestran los antecedentes que existen sobre el trabajo de tesis desarrollado, el problema a abordar junto con la motivación y justificación del desarrollo de esta tesis. Por último se muestra la manera en que se encuentra estructurado el documento. Capítulo 1 Introducción 1.1 Introducción La localización de usuarios en el interior de edificios multinivel es un área de oportunidad en donde se puede potenciar la utilización de teléfonos celulares o dispositivos móviles. Estos servicios de localización en interiores permiten desarrollar innumerables aplicaciones gracias a la posibilidad de ubicar en tiempo real a objetos o personas. Algunos de los principales servicios están relacionados con el control de acceso a instalaciones, la seguridad en red basada en la localización física de los usuarios, la gestión de las instalaciones que permite el ahorro energético, el servicio de emergencia y estadísticas. Sin embargo, las aplicaciones de mayor interés comercial provienen del posicionamiento contextual (context-aware), las cuales requieren aplicaciones que reaccionan ante los cambios de contexto de los usuarios, identificando su posición y los recursos cercanos a él. Esto significa que el dispositivo del usuario estará consiente de la proximidad de objetos, personas y obviamente de su ubicación en el interior de un edificio que puede ser multinivel; esta capacidad de conciencia contextual, abre la puerta para una gran cantidad de nuevos y novedosos servicios. La información y servicios que necesita el usuario se le pueden ofrecer en el momento y lugar que los requiere. De este modo el espacio de trabajo de los usuarios puede ser adaptado, se permite el acceso a publicidad relevante y se ofrece un guiado para que el usuario complete sus tareas del día a día, entre otras muchas posibles aplicaciones. Diversas circunstancias han impulsado el desarrollo de los sistemas de posicionamiento. Ejemplo de ello, en la mayor economía del mundo (EEUU) estas tecnologías cobraron especial interés a raíz de un mandato legislativo promulgado por la Comisión Federal de Comunicaciones (Federal Communications Commission, FCC). La FCC decidió hace seis años que en diciembre de 2005 las operadoras de telefonía tendrían que ser capaces de localizar automáticamente a cualquier persona que efectuara una llamada de emergencia con una precisión de 50 a 100 metros. Con estas condiciones de contorno, se hace evidente ver escenarios en los que los usuarios deambulan por las distintas redes, de forma que inician conexiones en una tecnología concreta y, a lo largo de las mismas, se producen traspasos a otras, en virtud de atributos relativos a la calidad de servicio, costo u otras consideraciones que pueden emanar tanto desde la perspectiva de los usuarios como del propio operador. La figura 1.1 muestra un pequeño bosquejo de lo siguiente: los dispositivos celulares actuales cuentan con un gran número de tecnologías de conectividad, a las cuales pueden aplicarse técnicas para localizarlos y aprovechar todos estos dispositivos que traen inmersos los celulares hoy en día. 3 Capítulo 1 Introducción Figura 1.1 Tecnologías inalámbricas 1.2 Antecedentes del proyecto En el CENIDET, específicamente en el área de sistemas distribuidos, se han realizado trabajos relacionados con el cómputo móvil. Los trabajos centran su atención en diversas problemáticas que existen en esta área -problemas de visualización en dispositivos móviles, interoperabilidad entre plataformas, problemas de conexión- y principalmente en el desarrollo tecnológico que aportan estas investigaciones. Los antecedentes inmediatos de este trabajo son los siguientes. 1.2.1 API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas [GUERRA 2007] En esta tesis se desarrolló una API que permite el desarrollo de aplicaciones LBS para dispositivos móviles utilizando el sistema GPS como técnica de posicionamiento y el Servicio Mensajería Corta (SMS por sus siglas en inglés) como medio de transporte. En esta tesis se desarrollaron un conjunto de funciones que permiten implementar aplicaciones en dispositivos móviles para procesar consultas georeferenciadas y no georeferenciadas utilizando mensajería SMS. 1.2.2 Gateway SMS Pull para servicios basados en localización con una arquitectura de servicios Web [QUIÑONEZ 2007] En esta tesis se implementó la arquitectura de una plataforma para proporcionar servicios basados en localización a través de mensajería SMS, utilizando la ubicación del dispositivo, expresada en coordenadas geográficas para ubicar los puntos de interés que se encuentran cerca, por medio de una base de datos espacial y tecnologías de los servicios Web para resolver información externa basada en localización. Para ello se desarrolló un gateway –pasarela- que permite el procesamiento de los mensajes SMS, los procesa y retorna información – contenida localmente en una 4 Capítulo 1 Introducción base de datos espacial o externa por tecnologías de servicios Web- acorde con la ubicación del dispositivo móvil. Se proporcionan servicios basados en localización sin la restricción de la red celular sobre la que opera el dispositivo y con las ventajas que proporcionan las tecnologías de los servicios Web a través del referente de la telefonía celular, la mensajería de SMS. La particularidad de estas tesis es que únicamente enfocaban sus esfuerzos al posicionamiento GPS. 1.3 Descripción del problema El avance y la creciente difusión de las comunicaciones inalámbricas, la evolución de las tecnologías de sensores y localización, y de las tecnologías de la computación, permiten pensar en una nueva forma de interactuar con el medio que nos rodea, que se ha venido a definir como la conformación de un espacio ―inteligente‖. En Europa existe el concepto de Inteligencia Ambiental (AmI), promovido especialmente por la Comisión Europea. Según [CASAR 2007] plantea un escenario a medio o largo plazo en el que los ciudadanos compran, trabajan o descansan rodeados de interfaces inteligentes soportadas por tecnologías de computación y de comunicación ubicuas y transparentes. Los dispositivos modernos cuentan con una gran cantidad de interfaces inalámbricas (IEEE 802.11 a/b/g, IEEE 802.15, GPS, GSM, WiMax, RFID) que permiten aplicar técnicas de localización. La tendencia en tecnologías móviles es la convergencia hacia varias tecnologías. Existen gran diversidad de técnicas de localización que funcionan bien para ciertos escenarios, algunas son buenas para interiores (indoor), como las utilizadas con redes IEEE 802.11b/g (WiFi), IEEE 802.15.1 (Bluetooth) y IEEE 802.15.4 (RFID), y otras en exteriores (outdoor), como GPS y técnicas en GSM. GPS es una tecnología de posicionamiento muy buena en exteriores, sin embargo pierde su precisión debido a obstáculos como paredes y techos, y el error que puede presentar es inadmisible. Es por ello que se necesita contar con técnicas de localización heterogéneas que sean conscientes de su contexto y de este modo aprovechen todas las opciones de conectividad inalámbrica presentes en el dispositivo que se quiere localizar, para poder ubicar a un dispositivo de una manera exacta en cualquier lugar y en cualquier momento (siempre y cuando haya conectividad GSM). La problemática de la localización en interiores ha sido objeto de un intenso estudio e investigación durante los últimos años. Se han propuesto diversas técnicas de localización en WiFi, Bluetooth, RFID e infrarrojos. Hasta ahora, ninguna de las soluciones propuestas ha conseguido el éxito que han alcanzado los sistemas de localización y navegación análogos empleados en exteriores, sobre todo el GPS. Las razones de este fracaso han sido técnicas y sobre todo económicas: técnicas porque la localización en interiores plantea retos 5 Capítulo 1 Introducción tecnológicos muy superiores a los de la localización en espacios abiertos y económicas porque la mayor parte de los sistemas propuestos utilizan gran cantidad de infraestructuras fijas (sensores, puntos de control, estaciones base, etc.), lo que hace aumentar mucho el costo. Además el error en interiores tiene que ser muy bajo ya que un error grande significaría un error inadmisible en la ubicación del usuario. Cabe destacar que si no se utilizan técnicas de optimización, la precisión es inversamente proporcional al alcance de la tecnología, es decir, a mayor alcance menor precisión y viceversa. Actualmente una de las tecnologías que está siendo muy utilizada (poco en el ámbito de la localización) es RFID, sobre todo en la unión europea y puede aplicarse en la automatización de las actividades del día a día, mediante la asociación de objetos del mundo real a los sistemas de información. Con la aplicación de estas tecnologías en el ámbito de los teléfonos móviles, los servicios basados en localización (por sus siglas en inglés LBS-Location Based Services) pueden verse enriquecidos con mayor información de contexto y con una mayor precisión de localización. La mayoría de los dispositivos actuales cuentan con una cámara fotográfica integrada, la cual puede aprovecharse para decodificar QRCodes que estén asociados a una ubicación y de este modo obtener la posición del usuario cuando lo desee. 1.4 Objetivos del proyecto El objetivo general del proyecto de tesis es el siguiente: ―Desarrollar servicios conscientes del contexto que permitan la localización de dispositivos celulares a través tecnologías de posicionamiento heterogéneas (GPS, identificación de células, WiFi, Bluetooth, RFID y QRCodes) mediante la constante verificación del contexto del usuario‖. Para el cumplimiento del objetivo general, se han desarrollado los objetivos específicos que se describen a continuación: i. ii. iii. iv. Realizar una prueba de concepto, implementación y modelo mediante un sistema de localización consciente del contexto. Identificación y análisis de limitaciones tecnológicas y de servicio para estas familias de aplicaciones con tecnologías emergentes de localización, gestión de comunicaciones y de intercambio de contenidos, que permitirán subsanar progresivamente las deficiencias de servicio detectadas. Contribuir al desarrollo de los servicios móviles y ubicuos, estudiando y analizando las tecnologías de comunicaciones, su interoperabilidad, aplicaciones y limitaciones. Ampliar el uso de la inteligencia en el acceso a la información, mediante el desarrollo de un software que seleccione la información relevante en el 6 Capítulo 1 Introducción v. momento preciso (conciencia del contexto), teniendo en cuenta la ubicación del usuario. Hacer uso de la metodología orientada a componentes con el fin de hacer reutilizable la aplicación. 1.5 Justificación y beneficios del proyecto En los últimos años los servicios de localización en redes inalámbricas se están convirtiendo en un servicio clave para todo operador. La razón del creciente interés en este tipo de servicios reside en el hecho de que la información de localización constituye un servicio en sí mismo (p. ej. un usuario desea conocer su posición en un determinado instante), al tiempo que dicha información puede emplearse para la construcción de servicios de valor añadido en los que el usuario no solicite la posición de forma explícita, pero el servicio solicitado sí requiera de ella para llevarse a cabo (p. ej. guiado, farmacia de guardia más cercana, etc.) [DRANE 1998]. Además, las exigencias establecidas por parte de diversos reguladores (p. ej. FCC, UE, etc.) hacen que los servicios de localización estén cada vez más presentes en las redes celulares públicas actuales [ESCALONA 2007]. La disponibilidad de este tipo de servicios puede ser aprovechada por los operadores de red más allá de la percepción económica que se espera de ellos. De esta forma, la información de localización de los usuarios de la red puede emplearse para optimizar el funcionamiento de la misma [LEE 2001], empleando por ejemplo sistemas inteligentes de buscapersonas, modelos de traspaso basados en la localización del usuario y la previsión de sus movimientos, la reserva de recursos en función del patrón de movimiento de los distintos usuarios de la celda, etc. La problemática de la localización en interiores ha sido objeto de un intenso estudio e investigación durante los últimos años. En varios proyectos se describe como han ido evolucionando los sistemas basados en localización y pasaron de ser reactivos, en donde el usuario solicitaba referencias según su ubicación a ser proactivos en donde se verifica el contexto para ofrecer servicios al usuario. Hasta ahora, ninguna de las soluciones propuestas ha conseguido el éxito que han alcanzado los sistemas de localización y navegación análogos empleados con mucho éxito en entornos urbanos, como lo es el sistema de posicionamiento global (GPS por sus siglas en inglés) o los sistemas híbridos empleados por las compañías de telefonía celular (AGPS), los cuales no son adecuados para identificar la ubicación de un usuario que se encuentra dentro de un edificio. En resumen, se pueden identificar dos factores que han determinado el fracaso de estas técnicas de localización al interior de edificios, uno es técnico y otro económico, es decir, el factor técnico se enfrenta a retos tecnológicos muy superiores a los de la localización en espacios abiertos, las exigencias de 7 Capítulo 1 Introducción precisión en este tipo de sistemas incluyen un error medio menor a 2 metros; por otro lado, el factor económico porque la mayor parte de los sistemas propuestos en los trabajos relacionados utilizan gran cantidad de infraestructura fija (sensores, puntos de control, estaciones base, etc.), lo que hace aumentar mucho el costo de estos sistemas de localización. Desarrollar una técnica que sea viable y factible tanto económica como técnicamente, y además ofrezca una gran precisión de ubicación significa poder ofrecer una gran cantidad de servicios a los usuarios dependiendo de su contexto y de su ubicación. 1.6 Alcances y limitaciones del proyecto El proyecto puede volverse muy amplio debido a la gran diversidad de tecnologías y, para cada una de ellas una variedad de técnicas de localización, si a esto le agregamos la convergencia de estas técnicas, resulta un problema sumamente complejo, es por ello que hemos definido las siguientes consideraciones para el proyecto: Para el desarrollo del proyecto partiremos del hecho de que el entorno en el que se quiere localizar al dispositivo tiene al menos cobertura GSM. Se trabajará en técnicas de posicionamiento utilizando RFID y QRCodes. Trabajará con tecnología GSM en los rangos de frecuencia 850/1900 y 900/1800. El medio de transmisión será HTTP. Los dispositivos celulares que se utilizarán son dispositivos que soporten el sistema operativo Android y que tengan conectividad WiFi. El proyecto no contemplará lo siguiente: Redes WiFi para el estándar 802.11a\b\g, Redes Bluetooth 802.15. Se limitará a algunos dispositivos celulares, no para todas las marcas y modelos. No se trabajará con redes 802.16 (Wi-Max) debido a que no se tiene la infraestructura para hacerlo. 1.7 Organización del documento El documento se encuentra organizado en 6 capítulos, los cuales presentan la siguiente información: i. Capítulo 2: Estado del arte. Se presentan trabajos relacionados con el proyecto de tesis, desarrollados recientemente. 8 Capítulo 1 Introducción ii. iii. iv. v. vi. vii. viii. Capítulo 3: Marco Teórico. Se presentan los fundamentos teóricos de las diferentes tecnologías usadas y su forma de operación. Asimismo, se describen los conceptos utilizados en el desarrollo del documento. Capítulo 4: Análisis y Diseño. Se muestran los casos de uso, escenarios, diagramas de actividad, clases y secuencia que representan el análisis y diseño de las aplicaciones que resultan del proyecto. Capítulo 5: Implementación. Se presenta la implementación de la arquitectura y la forma en que colaboran los diferentes módulos que la conforman. Se describen las interfaces de usuario desarrolladas para su manejo y se menciona la relación entre cada uno de los módulos de las aplicaciones. Capítulo 6: Pruebas. Se presentan los resultados de las pruebas. Capítulo 7: Conclusiones. Se presentan las aportaciones de la tesis, los trabajos futuros y las publicaciones realizadas durante el desarrollo de la tesis. Anexo A: Definición de las interfaces de usuario. Se muestran las interfaces de usuario desarrolladas para el dispositivo celular con el sistema operativo Android. Anexo B: Plan de pruebas. Describe el plan de pruebas basado en el IEEE std 829. 9 2 Capítulo 2 Estado del arte Capítulo 2 Estado del arte En este capítulo se describen los trabajos relacionados y estado del arte que influyen para el desarrollo del presente trabajo. Capítulo 2 Estado del Arte A continuación se describen y se evalúan algunos artículos, relacionados con el tema de tesis, extraídos en su mayoría de memorias de congresos recientes (2006-2008) de la IEEE. 2.1 Simple Location-based Application Development for Mobile Phones [TITICA 2007] Se da una descripción general acerca de algunas de los componentes más importantes y servicios necesarios para construir aplicaciones basadas en localización. Se enfatiza que una de las tareas más importantes para realizar un sistema basado en localización, es la determinación de la posición de las terminales móviles, es por esto que se centra en la descripción de técnicas de posicionamiento GSM. Describe las siguientes: Tiempo de llegada (Time of Arrival, TOA) Esta técnica se basa en la medición del tiempo de llegada de una señal transmitida por un terminal móvil a diferentes estaciones base. Para efectuar el cálculo, una posibilidad es medir el tiempo de ida y vuelta de la señal. De esta manera la distancia recorrida por la señal se calcula como producto del tiempo empleado en llegar a la BTS (estación base) y la velocidad de la luz. Mediante TOA es necesario efectuar medidas al menos respecto a tres estaciones base para obtener una precisión aceptable en el cálculo de la posición de un terminal. Las medidas permiten trazar circunferencias con centro en cada una de las BTS, dando su intersección como resultado el punto donde se encuentra el terminal que se desea localizar. Posteriormente se transmiten al servidor de localización, que realiza los cálculos y corrige los errores utilizando métodos matemáticos. Estos errores pueden deberse al tiempo de procesado en el terminal, el cual depende del fabricante y también de la situación de carga del dispositivo en un momento determinado. Otra desventaja que presenta esta técnica es que la ausencia de visión directa entre el terminal y la estación base puede causar un error que desemboque en una falsa estimación. Cell ID Esta técnica de localización (Cell Global Identity-CGI) está disponible sin realizar ninguna inversión ni modificación en red o terminal, pues la posición se obtiene mediante la identidad de la celda en la que se encuentra el terminal móvil. La precisión de este método puede ir de algunos cientos de metros en áreas urbanas hasta 32 kilómetros en áreas rurales. Ángulo de llegada (Angle of Arrival, AOA o Direction of Arrival, DOA) Este método utiliza antenas multi-arreglo situadas en la estación base para determinar el ángulo de la señal incidente. Si un terminal que transmite una señal 13 Capítulo 2 Estado del Arte está en la línea de vista directa (LOS, Line Of Sight), la antena multi-arreglo puede determinar de qué dirección viene la señal. Para conocer la posición del terminal es necesaria al menos una segunda estimación procedente de otra estación base con la misma tecnología que la primera. La segunda estación base localizará al terminal y comparará sus datos con los de la primera estación para después calcular la posición del usuario mediante trigonometría. En principio sólo son necesarias dos estaciones base para estimar la posición del terminal móvil, por este motivo AOA resulta efectiva en entornos rurales, donde es complicado disponer de visión de tres estaciones base al mismo tiempo. Pero en condiciones adversas (entornos urbanos) suele ser imprescindible emplear más estaciones con el fin de obtener mayor precisión. Figura 2.1 Sistema de localización por ángulo de llegada Los sistemas AOA deben diseñarse para tener en cuenta señales multitrayecto, aquéllas que son consecuencia de una reflexión y que por tanto llegan a la antena con un ángulo erróneo. Por otra parte, la instalación y alineación de las antenas multi-arreglo en las estaciones base es un proceso complicado y caro. Además, si las antenas sufren una leve modificación en su orientación debido al viento o las tormentas se pueden producir errores considerables en la estimación, ya que ésta se realiza en base a ángulos absolutos respecto de la antena. Diferencia de tiempo de observado mejorado (Enhanced Observed Time Difference, E-OTD) La técnica E-OTD opera sobre redes GSM y GPRS e incluye nueva tecnología tanto en el terminal móvil como en la red. Siendo la solución de red similar a l a utilizada en TDOA, el sistema necesita que se instalen unidades de medida de posición (Location Measurement Units - LMU) a modo de balizas de referencia en puntos dispersos geográficamente. La densidad de LMUs determinará la precisión del sistema, y por ello normalmente es necesario instalar en toda la red una LMU por cada una o dos estaciones base. Estos receptores y los terminales móviles habilitados con software E-OTD realizan medidas de las señales procedentes de tres o más estaciones base periódicamente. Las diferencias temporales de llegada de la señal a los dos puntos (LMU y terminal) se combinan para producir líneas hiperbólicas que se intersecan en el lugar donde está el terminal móvil, ofreciendo de esta manera localización en dos dimensiones. 14 Capítulo 2 Estado del Arte En E-OTD el terminal móvil mide la diferencia de tiempo de llegada de las ráfagas de pares cercanos de estaciones base. Si estas estaciones no están sincronizadas (como es el caso de las redes GSM), la red debe evaluar el desfase entre ellas para poder estimar las diferencias de tiempo relativas (Relative Time Difference RTD). Con el fin de obtener un resultado preciso, se necesitan medidas de la diferencia de tiempo observado (Observed Time Difference) y RTD de tres pares de estaciones base separadas en el espacio. Una vez obtenidas las medidas, el cálculo de la posición puede estar asistido por red, si el terminal móvil mide la señal de OTD y la red le proporciona la información de las coordenadas de las BTS y valores RTD, o asistido por el terminal, en cuyo caso es el terminal el que mide la OTD y envía la medida a la red que calcula la ubicación. En conclusión, la posición del terminal móvil se obtiene mediante triangulación a partir de: Las coordenadas de las BTSs. El tiempo de llegada de las ráfagas de cada BTS. Las diferencias de tiempo entre las BTSs. Desventajas Únicamente se enfoca a la localización utilizando técnicas en GSM, por lo que el error de posicionamiento es inadmisible para interiores (más de 50 metros). No se maneja la consciencia de contexto. No define otro tipo de tareas. 2.2 RADAR: An In-Building RF-based User Location and Tracking System [RADAR 2000] RADAR es un sistema de localización en WLAN, desarrollado por investigadores de Microsoft, el cual opera mediante la grabación y procesamiento de información de la potencia de señal recibida de múltiples AP (Utiliza potencia de señal recibida). Este sistema combina mediciones empíricas con el modelado de propagación de la señal para determinar la localización de un dispositivo. Las fases de la metodología son las siguientes: Fase de recolección de datos Se registra información acerca de la señal de radio en función de la posición del usuario, esto se realizó de la siguiente manera: Se utiliza un software llamado WaveLAN para monitorear los paquetes beacom enviados por los AP. Se diseña un mapa del piso de un edificio (ver figura 2.2). 15 Capítulo 2 Estado del Arte Figura 2.2Plano utilizado sistema RADAR [RADAR 2000] Se realiza un recorrido utilizando un dispositivo inalámbrico y el software antes mencionado, en los puntos negros de la figura 3 se tomaron varias medidas de la potencia de la señal de los diversos AP provistas por el software WaveLAN, cabe destacar que se toman medidas colocando al usuario con el dispositivo inalámbrico volteando hacia los 4 puntos cardinales (debido a que el cuerpo puede obstruir la señal de un AP, lo que ocasionaría recibir un dato de potencia de señal más bajo). Posteriormente un usuario manualmente define su posición dando clic sobre un mapa. Después los datos recolectados se almacenan en una base de datos como tuplas formadas de la siguiente manera: Posición x Posición y Dirección (norte, sur..)i Potencia señali Fase de localización El dispositivo captura la potencia de la señal recibida en su posición proveniente de los AP que tiene a la vista y utilizando la fórmula de la distancia euclidiana: D = , donde si es la potencia de señal detectada y s i’ es la potencia de señal obtenida por el usuario, dados estos valores y por medio de la fórmula se obtiene la posición x y y que minimice a D según las potencias recibidas. Desventajas No contempla otro tipo de posicionamiento. No maneja consciencia de contexto ni auto-identificación. El grado de precisión de la ubicación está en función de la cantidad de AP que se tengan a la vista, a mayor número de AP mayor será la precisión, por lo que se pueden tener errores inadmisibles cuando sólo se está en la cobertura de un AP. 16 Capítulo 2 Estado del Arte 2.3 The Horus WL AN location determination system [HORUS 2004] Investigadores de la Universidad de Maryland presentan Horus, el cual es un sistema de determinación de la localización basado en RF (radio frecuencia). El sistema utiliza la longitud de la señal observada por la transmisión de paquetes transmitidos por los AP para inferir la localización del usuario. Utiliza una técnica de mapeo de radio basado en la probabilidad, además utiliza clúster para reducir los requerimientos computacionales y de procesamiento. Las fases de la metodología son las siguientes: Fase de entrenamiento fuera de línea 1. Se construye el mapa de radio, clúster de localizaciones del mapa de radio, el cual almacena la distribución de la longitud de la señal recibida de cada AP para cada ejemplo de localización. 2. Almacena los datos obtenidos del mapeo en forma de tuplas compuestas como sigue: x y ss P(x) Donde: x y y representan las coordenadas dentro del plano del piso del edificio. ss es la potencia de señal recibida y P(x) es la probabilidad de que un dispositivo esté en las coordenadas (x, y) con potencia recibida ss. Para obtener P(x) sacaron alrededor de 300 muestras en cada uno de los puntos de ejemplo. 3. Posteriormente se crean clúster o agrupaciones según los puntos de localización en el mapa del piso, con la finalidad de minimizar la carga computacional al momento de la fase de determinación de la localización del dispositivo. Fase de determinación de localización en línea 1. Se obtiene un vector compuesto de las potencias de señal y las direcciones MAC de los AP de los cuales se recibe señal. 2. Para el AP con mayor señal recibida se busca encontrar la localización (x, y) que maximice la probabilidad P(x). 3. Si la diferencia entre la P(x) mayor y la segunda mayor es considerablemente alta se toma ese punto como la localización del dispositivo, en caso contrario se repite el paso 2 tomando en cuenta la potencia de señal del siguiente AP. 17 Capítulo 2 Estado del Arte Desventajas Al utilizar técnicas probabilísticas para la obtención del mapa de radio es más preciso que los que utilizan técnicas determinísticas en WLAN. No contempla otro tipo de posicionamiento. No maneja la consciencia del contexto ni auto-identificación. El grado de precisión de la ubicación está en función de la cantidad de AP que se tengan a la vista, a mayor número de AP mayor será la precisión, por lo que se pueden tener errores inadmisibles cuando sólo se está en la cobertura de un AP. 2.4 CAALIX Complete Ambient Assisted Living Experiment [CAALIX 2007] Es un proyecto concluido en diciembre de 2008 en el cual se desarrolla un dispositivo ligero capaz de medir los signos vitales específicos de los ancianos, detectando fallas y comunicando automáticamente en tiempo real a sus cuidadores en caso de emergencia, esto lo hace en interiores o en exteriores. Los objetivos primordiales de este proyecto son los siguientes: 1. Identificar los signos vitales y patrones más importantes en la determinación de probables estados críticos de la salud de un anciano. 2. Desarrollar un dispositivo electrónico habilitado para medir los signos vitales y detectar recaídas en las personas ancianas en un ambiente domestico y en exteriores. El aparato tiene un sistema de geolocalización, de modo que el sistema de monitoreo esté habilitado para conocer la posición del anciano en caso de emergencia. 3. Permitir el monitoreo seguro de los individuos organizados en grupos dirigidos por un cuidador, quien decidirá si comunicar los eventos identificados mediante el sistema a un servicio de emergencia. 4. Crear un servicio de tele-asistencia social que pueda ser operado fácilmente por los usuarios. Cuenta con tres áreas principales de desarrollo: El sistema de monitoreo de roaming. Su intención es monitorear discretamente a la persona mayor mientras lleva a cabo sus actividades diarias en forma independiente, tanto en su casa como en el exterior. Se medirán varios signos vitales o recaídas y automáticamente se enviarán junto con su posición geográfica al servicio central de cuidado en caso de emergencia, de este modo una unidad de rescate puede ser despachada a tiempo. 18 Capítulo 2 Estado del Arte El sistema de monitoreo del hogar. Su intención es extender el monitoreo en el ambiente del hogar, integra otros dispositivos y sensores; el soporte de video comunicación y VoIP. El sistema central de monitoreo servicio de cuidado. Recibe las alertas de las personas mayores suscritas. El cuidador evalúa la situación de una persona de acuerdo a los resultados recibidos y en caso necesario se comunica al servicio de emergencia. Figura 2.3 Arquitectura proyecto CAALIX [CAALIX 2007] Desventajas Únicamente utiliza el GPS como técnica de localización, esto significa que no se puede localizar a la persona en interiores que no sean su hogar, por ejemplo un centro comercial o un campus donde hay muchos edificios y no hay conectividad GPS. En el interior de su hogar se tiene que desplegar un gran sistema de monitoreo vía circuito cerrado para identificar la posición de la persona, esto lo hace muy costoso. La posición la envía únicamente con transmisión de datos GPRS, esta cobertura es menor a la cobertura utilizada por el GSM, si no hay GPRS no puede enviar su localización, aunque tenga cobertura GPS. 19 Capítulo 2 Estado del Arte No maneja consciencia del contexto ni auto-identificación. 2.5 Location Awareness in Community Wireless LANs [FERSCHA 2001] En este proyecto, llamado CampusSpace, se propone utilizar las capacidades de posicionamiento de las técnicas en redes 802.11 (WiFi) mediante la integración de las tecnologías RFID. Para lo anterior desarrollaron un Framework, el cual permite de forma transparente recolectar e interpretar información de la posición de móviles en coberturas de señales 802.11 y del mismo modo recolecta información mapeada cartográficamente en etiquetas RFID. Proceso de determinación de posición El proceso que siguen consta de dos fases hasta antes de llegar a la determinación de la posición, ver figura 2.4. Recolección de información geográfica Recolección de proximidad espacial Determinación de la posición Figura 2.4 Proceso de localización CampusSpace Recolección de la información geográfica En este punto se recolecta la potencia de señal recibida en la cobertura de los dispositivos cliente registrados en los AP. Para la realización de las pruebas se trabaja con el estándar 802.11b, además se considera la aparición de no más de tres AP para evitar la colisión de paquetes. Como técnica de posicionamiento WLAN se utiliza la potencia de la señal recibida RSS, la cual se ve afectada por paredes de concreto, objetos de metal y personas, entre otros. Recolección de proximidad espacial Para realizar este proceso se hace uso de la tecnología RFID, para ello se utilizan tarjetas RFID pasivas. Los lectores RFID se integraron dentro de los dispositivos como un hardware PCMCIA mismo que permite, por un lado la conexión mediante WiFi y por otro está magnéticamente acoplado a un lector RFID. 20 Capítulo 2 Estado del Arte Arquitectura del sistema La arquitectura del sistema se presenta en la figura 2.5. Como puede observarse está compuesta por un servidor central, el cual colecta información de localización de las estaciones móviles y de los AP, así como sus propiedades, localización, etc. Este servidor es llamado servidor de localización y actúa como un agente entre diferentes clientes. Figura 2.5 Arquitectura del sistema CampusSpace [FERSCHA 2001] Los clientes almacenan información local, mientras el servidor de localización sólo administra URIs y URLs enlazadas a la información. Para manejar esta información de forma estructurada se utiliza RDF como un formato general de descripción, el cual es un Framework para metadatos en la World Wide Web (WWW), desarrollado por el World Wide Web Consortium (W3C). Un ejemplo de este tipo de formato se muestra en la figura 2.6. Figura 2.6 Descripción RDF de un miembro del staff [FERSCHA 2001] 21 Capítulo 2 Estado del Arte El funcionamiento se describe como sigue: 1. Primeramente el dispositivo móvil detecta en que AP está conectado. 2. El dispositivo verifica la información de su posición en el servidor de localización, obteniendo de ello una URL la cual contiene una página que contiene una imagen o texto, la cual le indica el lugar en donde se encuentra. 3. Como el error que conlleva utilizar únicamente la potencia recibida del AP puede ser grande, en el momento que el dispositivo tiene en su cercanía una etiqueta RFID este la lee, cada etiqueta tiene su propio identificador de modo que el servidor de localización tendrá almacenada alguna URL de posición de dicha etiqueta. 4. Nuevamente el dispositivo vuelve a verificar su posición, ya más exacta debido a la corta distancia que manejan estas etiquetas (las que utilizaron tienen un máximo de 1 metro de cobertura), y actualiza la información en el servidor de posición y obtiene la URL correspondiente a su posición, de este modo el usuario puede verificar su posición entrando a la URL correspondiente. Desventajas Se deben tener tantas páginas como tarjetas se tengan o como puntos de localización se quieran mostrar, debido a que cada punto de localización tiene su propia URL que describe su posición mediante una imagen o texto. No maneja consciencia del contexto ni auto-identificación. Únicamente se centra en el posicionamiento y no extiende su funcionalidad a algún servicio para el usuario, como lo es el manejo de tareas de acuerdo al contexto. 2.6 UbiqMuseum: A Bluetooth and Java Based Context-Aware System for Ubiquitous Computing [CANO 2006] Este proyecto se desarrolla por investigadores de la Universidad Politécnica de Valencia. El principal objetivo de este proyecto es evaluar el uso de Bluetooth y tecnologías basadas en java en ambientes de computación ubicua. UbiqMuseum es una aplicación experimental consciente del contexto que provee información a visitantes de museos. El sistema da a los visitantes información precisa acerca de lo que están viendo, de acuerdo a su nivel de conocimiento y en su lenguaje natural. Del mismo modo provee de una interfaz grafica de usuario que se adapta al tipo de dispositivo (háblese de teléfonos móviles, PDAs o laptops). Arquitectura del sistema El sistema considera 3 tipos de entidades de software: 22 Capítulo 2 Estado del Arte Aplicaciones cliente. Ejemplo de ello es un visitante con una PDA con Bluetooth habilitado. Puntos de información del museo (MIPs). Se asocian a una o más piezas de arte u objetos dentro del museo. Servidor central. El cual contiene información de los distintos objetos y piezas de arte en el museo además de guardar una bitácora de las piezas que son visitadas e información del usuario que la visita. La figura 2.7 muestra una representación de la arquitectura de UbiqMuseum. Figura 2.7 Arquitectura del sistema UbiqMuseum [CANO 2006] Funcionamiento del sistema Para la implementación se utilizan APIs de Java para la tecnología Bluetooth (JABWT) contenida en el JSR-82. La funcionalidad de cada uno de los elementos de la arquitectura es la siguiente: Los usuarios (visitantes del museo), que llevan consigo los clientes, configuran sus preferencias mediante un conjunto de parámetros de entrada que son: 1) el tipo de dispositivo (laptop, PDA o teléfono móvil), 2) el lenguaje de su preferencia y c) el nivel de detalle de la información recibida (intermedio, básico, experto). Una vez hecho esto, el cliente busca por algún MIP mediante Bluetooth. Cuando encuentra un dispositivo y si el usuario decide elegirlo el dispositivo cliente envía el perfil del usuario previamente capturado al MIP elegido. Posteriormente el MIP combina el perfil del usuario con el identificador de la pieza del museo que representa y envía esta información al servidor central. 23 Capítulo 2 Estado del Arte El siguiente paso es que el servidor central registra en la bitácora la petición y envía la información correspondiente a la pieza de arte que el MIP representa combinando está con las preferencias del usuario. El MIP recibe esta información y la retransmite al cliente. La figura 2.8 muestra la información que un usuario recibe, cabe resaltar que el usuario lleva consigo una PDA y ha elegido el nivel de detalle intermedio. Figura 2.8 Información recibida en un cliente en UbiqMuseum [CANO 2006] Desventajas Únicamente maneja conectividad Bluetooth. No maneja perfiles de movilidad. La puesta en marcha puedo costar mucho debido a que se deben tener tantos MIPs (dispositivos Bluetooth), en este caso se utilizan tantas laptops, como piezas se tengan en el museo. Es un sistema de corto alcance debido a que la comunicación entre los MIPs y el servidor central se hace a través de sockets. Limitado a pocos clientes por MIP (máximo 7) debido a las características de las piconet formadas por los dispositivos Bluetooth. No maneja otras tareas. 24 Capítulo 2 Estado del Arte 2.7 A Location-aware System using RFID and Mobile Devices for Art Museums [TESOREIRO 2008] Este proyecto dirigido por investigadores de la Universidad de Castilla-La Mancha, España, presenta un sistema de localización consciente basado en RFIDs activos y pasivos combinado con la tecnología IR (infrarrojos) los cuales soportan el posicionamiento automático de dispositivos móviles. Este proyecto se aplica a museos de arte. Funcionamiento Para saber la ubicación del usuario se utilizan tarjetas RFID de tipo activas, las cuales están transmitiendo ondas indicando su presencia y cuando el usuario llega, dotado de un lector RFID y un equipo móvil (PDA o laptop), envían su identificador. Cuando el equipo móvil lee el identificador lo envía a un servidor el cual tiene una tabla de mapeo indicando su posición y la información relativa al objeto que el usuario tiene en cercanía. Posteriormente el servidor envía la información perteneciente al identificador, ya sea en forma de texto, audio, imagen o video mediante el protocolo HTTP. Por último el usuario recibe en su dispositivo la información que requiere. Cabe resaltar que aunado al uso de tarjetas RFID activas, incluye el uso de tarjetas RFID pasivas y de lectores de códigos de barras, para leer un objeto en particular. El modelo Su mayor aportación es que presentan un modelo conceptual para soportar un sistema de posicionamiento automático basado en la tecnología RFID. La figura 2.9 muestra el modelo que se presenta en este proyecto. 25 Capítulo 2 Estado del Arte Figura 2.9 Modelo conceptual [TESOREIRO 2008] Lo interesante de este modelo es la parte resaltada en gris claro, la cual hace referencia a la forma en que se obtiene el identificador de cada objeto presente en el museo, es independiente de tecnología y puede obtenerse mediante RFID activos, RFID pasivos y códigos de barras. El modelo y el prototipo son flexibles a cambios y fácilmente pueden añadirse otras tecnologías como (WiFi y Bluetooth) para establecer la ubicación del usuario y mostrarle la información pertinente. Desventajas No define tareas, actividades y servicios, únicamente se centra en enviar la información de los objetos que el usuario tiene en cercanía. No es compatible con dispositivos celulares. 2.8 Comparativa del estado del arte con el proyecto En la tabla 1 se comparan diversas características de los trabajos relacionados con el proyecto de tesis. Puede observarse claramente las ventajas que ofrece respecto de otros proyectos similares. Las ventajas más notables son el hecho de que maneja perfiles de movilidad, ofrece un posicionamiento mediante RFID y QRCodes, y no sólo eso sino que también será flexible a la introducción de otras técnicas y tecnologías de posicionamiento. Aunado a esto el proyecto tiene la ventaja de ofrecer múltiples tareas para la realización de las actividades de un usuario dentro de un campus universitario y no sólo se limita al posicionamiento 26 Capítulo 2 Estado del Arte del mismo. Asimismo, el proyecto manejará un proceso de guiado utilizando la información de la ubicación del usuario, para posicionarlo dentro del campus. Tabla 1 Comparativa de los trabajos relacionados con el proyecto de tesis Envío de datos [Radar 2000] WiFi HTTP WiFi, RFID activo HTTP, GPRS [Horus 2004] WiFi HTTP [Cano 2006] Bluetooth Bluetooth <5 [Titi 2007] GSM GPRS <500 [Caalix 2007] GPS GPRS [Teso 2008] RFID activo y pasivo HTTP RFID y QRCodes HTTP Tesis Guiado Múltiples tareas Manejo de mapas Método Posición [Fers 2001] Consciencia de contexto Utilizado en celulares Proyecto <9.5 No aplica <1 La segunda parte que conforma el estado del arte la cubren desarrollos tecnológicos que se encuentran operando en el sector privado, los principales desarrollos son servicios que proporcionan las compañías telefónicas para sus usuarios. 2.9 Servicio UBICACEL de iusacell [UBICACEL 2008] Servicio de localización que permite conocer la ubicación geográfica de dispositivos Iusacell. Sirve para localizar dispositivos con capacidad de GPS y GPSOne cuando se encuentren dentro del alcance de la red celular y satelital. Su funcionamiento es el siguiente: mediante una aplicación instalada en el teléfono celular a través de técnicas de triangulación se obtiene la localización del dispositivo y se puede generar la respuesta sobre la ubicación del teléfono. 2.10 Servicio Localízame de Movistar [LOCALIZAME 2008] Servicio proporcionado por la compañía telefónica Movistar para localizar dispositivos móviles por medio de mensajes SMS. Cuenta con la opción de localización por medio de su página de Internet, la localización se hace por medio de la infraestructura de red de la telefónica. Su precisión varía dependiendo de la zona en que se encuentra el dispositivo móvil. 27 <15 <1.5 Error (m) <1 Capítulo 2 Estado del Arte Cuenta con tres opciones del servicio: para localizar otros dispositivos móviles, para que localicen mi dispositivo y para saber mi propia ubicación. Necesita autorización para conocer la ubicación de otro dispositivo. 2.11 AVL Reach U / Localización y Administración Vehicular Telcel [AVL REACH 2008] Servicio que permite a empresas, desde sus propias instalaciones, localizar, rastrear y monitorear vehículos particulares o utilitarios bajo un concepto avanzado de interacción con el equipo instalado en el vehículo. Además permite la obtención de reportes estadísticos y un nivel sofisticado de funcionalidades desde la plataforma y/o a través del envío de mensajes escritos desde un celular Telcel previamente definido. 2.12 Tramigo [TRAMIGO 2008] Tramigo es una compañía establecida en Finlandia, sus productos permiten rastrear la ubicación y controlar su automóvil a través de su teléfono celular o de su computadora y ser notificado en caso de eventos inesperados tales como accidentes, robos o secuestros. Todos los productos Tramigo cuentan con las siguientes características: rastreo y gestión vehicular, localización vía GPS, soporte SMS en cualquier red telefónica GSM, datos geográficos, posibilidad de personalizar ubicaciones o puntos de interés. 2.13 Skyhook WPS [SKYHOOK 2008] El sistema de posicionamiento WiFi inalámbrico Skyhook, es una simple solución de localización software que permite a cualquier dispositivo móvil con WiFi habilitado determinar su posición con una precisión de 20 metros. A diferencia de los receptores GPS, los cuales utilizan satélites para determinar su localización, WPS utiliza puntos de acceso WiFi terrestres. El cliente WPS localiza las señales WiFi existentes a su alrededor y calcula su posición actual usando algoritmos de localización desarrollados por Skyhook Wireless. WPS requiere el conocimiento de la localización geográfica de cada punto de acceso. Esta información es obtenida mediante el despliegue de cientos de especialistas de datos, quieres buscan y localizan puntos de acceso, los cuales se almacenan en una base de datos, por medio de los puntos de acceso es como el dispositivo móvil puede identificar su localización. En la tabla 2 se muestra la comparativa de los servicios anteriores con la tesis propuesta. 28 Capítulo 2 Estado del Arte Tabla 2 Comparativa de los servicios de localización Nombre Posicionamiento Envío de datos Servicio UBICACEL de Iusacell Técnicas híbridas GSM y GPS SMS Servicio localízame de Movistar Basada en red SMS Técnicas hibridas GSM y GPS SMS, GPRS Tramigo GPS SMS, GPRS Skyhook WPS Wi Fi GPRS RFID, QRCodes HTTP AVL Reach U / Localización y administración vehicular Tesis Indep. de red Consciencia de contexto Múltiples tareas La mayoría de los desarrollos presentados en la tabla anterior, utilizan técnicas híbridas para obtener la localización de los dispositivos. La presentación de los datos puede ser en una página Web o en formato de un SMS. La desventaja que tiene cada uno de estos desarrollos es su dependencia con la red celular para obtener la ubicación y proporcionar los servicios que se demandan. Con la plataforma, producto de esta tesis, no se tiene ninguna limitante para obtener la localización, la respuesta se envía con los servicios disponibles en la posición actual, además el dispositivo tendrá consciencia del contexto y se administrarán las tareas de los usuarios. Además ninguno de los proyectos anteriores maneja la consciencia del contexto del dispositivo ni técnicas de auto-identificación. 29 3 Capítulo 3 Marco teórico Capítulo 3 Marco teórico En este capítulo se presenta la teoría relacionada con este trabajo de tesis. Se inicia describiendo las plataformas más populares de dispositivos móviles y las tecnologías empleadas en el proyecto de tesis, posteriormente se describen los LBS y técnicas de localización en diversas tecnologías. Capítulo 3 Marco Teórico 3.1 Plataformas de dispositivos móviles 3.1.1 Windows Mobile Es un sistema operativo compacto, con una suite de aplicaciones básicas para dispositivos móviles basados en la API Win32 de Microsoft. Los dispositivos que llevan Windows Mobile son Pocket PC, Smartphones y Media Center portátil. Ha sido diseñado para ser similar a las versiones de escritorio de Windows. 3.1.2 Symbian Es un sistema operativo que fue producto de la alianza de varias empresas de telefonía móvil, entre las que se encuentran Nokia, Sony Ericsson, PSION, Samsung, Siemens, Arima, Benq, Fujitsu, Lenovo, LG, Motorola, Mitsubishi Electric, Panasonic, Sharp, etc. Sus orígenes provienen de su antepasado EPOC32, utilizado en PDA's y Handhelds de PSION. 3.1.3 J2ME La plataforma Java Micro Edition, o anteriormente Java 2 Micro Edition(J2ME), es una especificación de un subconjunto de la plataforma Java orientada a proveer una colección certificada de APIs de desarrollo de software para dispositivos con recursos restringidos. Está orientado a productos de consumo como PDAs, teléfonos móviles o electrodomésticos. 3.1.4 iPhone OS El iPhone OS es el sistema operativo que utiliza el iPod touch y el iPhone, diseñado por 175 ingenieros de Apple. Está basado en una variante del Mach kernel que se encuentra en Mac OS X. 3.1.5 Android Android es un sistema operativo para dispositivos móviles basado en el núcleo Linux. Inicialmente fue desarrollado por Google y luego por la Open Handset Alliance (liderada por la propia Google). La presentación de la plataforma Android se realizó el 5 de noviembre de 2007 junto con la fundación Open Handset Alliance, un consorcio de 48 compañías de hardware, software y telecomunicaciones comprometidas a la promoción de estándares abiertos para dispositivos móviles. Esta plataforma permite el desarrollo de aplicaciones por terceros (personas ajenas a Google). Los desarrolladores deben escribir código gestionado en el lenguaje de programación Java a través de la SDK que proporciona Google. La mayoría del código fuente de Android ha sido publicado bajo la licencia de software Apache, una licencia de software libre y código fuente abierto. 33 Capítulo 3 Marco Teórico 3.2 REST (Representational StateTransfer) La Transferencia de Estado Representacional (Representational State Transfer) o REST es una técnica de arquitectura software para sistemas hipermedia distribuidos como la World Wide Web. El término se originó en el año 2000, en una tesis doctoral sobre la Web escrita por Roy Fielding, uno de los principales autores de la especificación del protocolo HTTP y ha pasado a ser ampliamente utilizado por la comunidad de desarrollo. Si bien el término REST se refería originalmente a un conjunto de principios de arquitectura —descritos más abajo—, en la actualidad se usa en el sentido más amplio para describir cualquier interfaz Web simple que utiliza XML y HTTP, sin las abstracciones adicionales de los protocolos basados en patrones de intercambio de mensajes como el protocolo de servicios Web SOAP. Con REST es posible diseñar servicios Web de acuerdo con el estilo arquitectural REST de Fielding y también es posible diseñar interfaces XML-HTTP de acuerdo con el estilo de llamada a procedimiento remoto pero sin usar SOAP. REST afirma que la Web ha disfrutado de escalabilidad como resultado de una serie de diseños fundamentales clave, los cuales se describen a continuación: Un protocolo cliente/servidor sin estado: cada mensaje HTTP contiene toda la información necesaria para comprender la petición. Como resultado, ni el cliente ni el servidor necesitan recordar ningún estado de las comunicaciones entre mensajes. Sin embargo, en la práctica, muchas aplicaciones basadas en HTTP utilizan cookies y otros mecanismos para mantener el estado de la sesión (algunas de estas prácticas, como la reescritura de URLs, no son permitidas por REST). Un conjunto de operaciones bien definidas que se aplican a todos los recursos de información: HTTP 1.1, define un conjunto de operaciones, las más importantes son POST, GET, PUT y DELETE. Una sintaxis universal para identificar los recursos. En un sistema REST, cada recurso se referencia únicamente a través de su URI. El uso de hipermedios, tanto para la información de la aplicación como para las transiciones de estado de la aplicación: la representación de este estado en un sistema REST son típicamente HTML o XML, aunque también soporta la representación en JSON. Como resultado de esto, es posible navegar a los recursos REST a través de URIs dinámicas. 3.3 JSON JSON (JavaScript Object Notation - Notación de Objetos de JavaScript) es un formato para el intercambio de datos. Es un formato con una estructura simple y se caracteriza por reducir significativamente el volumen de datos a transmitir. Está basado en un subconjunto del Lenguaje de Programación JavaScript, Standard ECMA-262 3rd Edition - Diciembre 1999. JSON es un formato de texto que es 34 Capítulo 3 Marco Teórico completamente independiente del lenguaje pero utiliza convenciones que son ampliamente conocidas por los programadores de la familia de lenguajes C, incluyendo C, C++, C#, Java, JavaScript, Perl, Python, y muchos otros. Estas propiedades hacen que JSON sea un lenguaje ideal para el intercambio de datos. JSON está constituido por dos estructuras: Una colección de pares de nombre/valor. En varios lenguajes esto se conoce como un objeto, registro, estructura, diccionario, tabla hash 1, lista de claves o un arreglo asociativo. Una lista ordenada de valores. En la mayoría de los lenguajes, esto se implementa como arreglos, vectores, listas o secuencias. 3.4 OSGi OSGI son las siglas de Open Services Gateway Initiative y fue creado en Marzo de 1999. Su objetivo es definir las especificaciones para software abierto que permitan diseñar plataformas compatibles que puedan proporcionar múltiples servicios. Fue pensado principalmente para su aplicación en redes domésticas y por ende en la llamada domótica2 u hogar inteligente. Aunque OSGi define su propia arquitectura, ha sido pensada para su compatibilidad con Jini [JINI 2009] o UPnP [UPNP 2009]. La arquitectura de OSGi posee un elemento llamado Service Platform, el cual está situado en la red local y a su vez conectado al proveedor de servicios a través de una pasarela en la red del operador. Este elemento será el responsable de permitir la interacción entre dispositivos o redes de dispositivos que podrían utilizar distintas tecnologías para comunicarse. La especificación de OSGi se ha definido con una serie de APIs básicas para el desarrollo de servicios, como los de registro de bitácora, servidor HTTP y el la especificación de acceso a dispositivos (por sus siglas en inglés DAS), que permite el descubrir los dispositivos y servicios ofrecidos por éstos. 3.5 Servicios basados en localización (LBS) Los LBS (Location Based Services) o LDIS (Location Dependent Information Services) hacen referencia a Servicios Basados en Localización o para algunos autores simplemente Servicios de Localización. 1 Una tabla hash o mapa hash es una estructura de datos que asocia llaves o claves con valores Se entiende por domótica al conjunto de sistemas capaces de automatizar una vivienda, aportando servicios de gestión energética, seguridad, bienestar y comunicación, y que pueden estar integrados por medio de redes interiores y exteriores de comunicación, cableadas o inalámbricas, y cuyo control goza de cierta ubicuidad, desde dentro y fuera del hogar 2 35 Capítulo 3 Marco Teórico Los Servicios Basados en Localización buscan ofrecer un servicio personalizado a los usuarios, en base a su ubicación geográfica. Para su operación utiliza tecnología de sistemas de información geográfica, alguna tecnología de posicionamiento bien sea de lado cliente (ej. GPS) o de lado servidor (ej. servicio de posicionamiento suministrado por el operador de la red) y tecnología de comunicación de redes para transmitir información hacia una aplicación LBS que pueda procesar y responder la solicitud. Las aplicaciones típicas LBS buscan proveer servicios geográficos en tiempo real. Algunos ejemplos típicos de esto son servicios de mapas, enrutamiento y páginas amarillas geográficas. Las NICTs (New Information and Communication Technologies, Tecnologías Nuevas de Información y Telecomunicación), describe a los LBS como una intersección entre: sistemas y dispositivos móviles de comunicación, Internet y GIS (Geographic Information Systems, Sistemas de información geográfica) con base de datos espaciales. [STEINIGER 2006] Ver figura 3.1. Figura 3.1 LBS como intersección de tecnologías En la figura 3.1 se observa que existen algunas características en común entre los LBS y los GIS, tales como el manejo de datos con referencia posicional y funciones de análisis espacial, las cuales responden preguntas como: ¿Dónde estoy…? ¿Qué está cerca de…? ¿Cómo puedo llegar a…? [GUERRA 2007]. Sin embargo los LBS y los GIS tienen diferentes orígenes y grupos de usuarios. Los GIS han sido desarrollados durante varias décadas en base a aplicaciones de datos geográficos profesionales, mientras que los LBS surgieron recientemente por la evolución de servicios móviles públicos. En lo que se refiere a grupos de usuarios, un GIS puede ser visto como un sistema profesional y tradicional, destinado a usuarios con amplia experiencia en sistemas geográficos, además de que consumen extensos recursos de cómputo. En contraste, los LBS se desarrollan como servicios limitados para un gran número de usuarios no profesionales. La aplicaciones LBS operan con las restricciones del ambiente de cómputo móvil como baja potencia computacional, pantallas pequeñas, o limitaciones debidas al alto consumo de batería. 36 Capítulo 3 Marco Teórico 3.6 Técnicas de posicionamiento Existen diferentes técnicas para obtener la ubicación del dispositivo móvil. Las cuales se clasifican como se muestra en la figura 3.2. [STEINIGER 2006], [BERNARDOS 2003], [VENTURINO 2003], [MARTINEZ 2005]. Técnicas de posicionamiento Redes LAN Redes WAN Bluetooth GSM Wi Fi GPS Infrarrojos RFID Banda Ultraancha Figura 3.2 Clasificación de las técnicas globales de posicionamiento 3.6.1 Basadas en redes WAN 3.6.1.1 GPS Los localizadores por GPS (y de forma similar sus competidores el ruso Glonass, el chino Beidou y el europeo Galileo) reciben el soporte de una constelación de hasta 24 satélites, que orbitan por todo el globo terrestre enviando sus señales a todo aquél que quiera oírlas. Un receptor de GPS que quiere localizarse dentro del globo terrestre localiza al menos a cuatro satélites – cuanto mayor sea el número de satélites encontrado mejorará su estimación de la posición – y de cada uno de ellos obtiene la posición del satélite emisor y el tiempo de envío de cada muestra recibida. Con estos datos, el receptor GPS calcula por triangulación su posición absoluta dentro de la tierra (latitud, longitud, altitud) gracias a que los satélites emiten en el mismo preciso momento su señal, pero ésta le llega retardada al receptor por razones obvias de distancia. 37 Capítulo 3 Marco Teórico Figura 3.3 Esquema de la localización por GPS Un esquema básico del GPS se muestra en la figura 3.3; este sistema tiene una precisión que puede llegar a ser menor a los 10 metros si se toman en consideración más de cuatro satélites. El inconveniente de utilizar esta tecnología es que al necesitar línea de visión directa (LOS Line of sight), hay veces que no se encuentran suficientes satélites al alcance para permitir una localización correcta, esto puede ocurrir en ciudades con rascacielos o calles demasiado estrechas y en túneles. Además, normalmente se requiere que el dispositivo tenga grabado un mapa porque, sin él, sólo se podrá mostrar al usuario su longitud, latitud y altitud, y estos datos no suelen ser informativos para un usuario promedio. Además, las señales del GPS viajan muchos kilómetros y son bastante tenues, por lo que es muy difícil para un receptor GPS en el interior de un edificio encontrar señales procedentes de los satélites y más aún, conseguir que estas señales le sirvan para localizarse. 3.6.1.2 Localización usando GSM Otra alternativa posible, que además no necesitaría ningún hardware adicional, pasaría por el uso de un teléfono móvil [FISHER 1998], y de hecho ya hay operadoras de telefonía móvil que ofrecen la opción de localización vía móvil a sus clientes. Sin embargo, la falta de precisión sitúa a esta tecnología en clara desventaja respecto de otras, ya que los sistemas de localización de este tipo no pueden dar precisiones mayores de 50 metros. Esto es debido a que la localización con el uso del teléfono móvil (localización por GSM) se basa en la detección de la célula a la que está conectada el móvil, y en zonas urbanas la precisión es de decenas de metros, sin embargo en las zonas rurales, donde se necesitan menos células para dar servicio a menor población, esta precisión es mucho menor. 38 Capítulo 3 Marco Teórico 3.6.2 Basadas en redes LAN 3.6.2.1 WiFi La comunicación típica en el protocolo IEEE 802.11 sigue un modelo centralizado. Por tanto, una red consta de uno o varios puntos de acceso (APs) y multitud de clientes conectados a uno de los puntos de acceso. Cada punto de acceso emite periódicamente una serie de paquetes llamados beacon frames para hacer notar su presencia a los usuarios, los cuales de este modo pueden saber en todo momento qué redes inalámbricas hay disponibles en su entorno. Así pues, se puede realizar un mapeo de las coordenadas de los APs utilizando sus direcciones MAC, un dispositivo que esté en la cobertura de un determinado AP puede saber su ubicación mediante el envío de las direcciones MAC a un servidor que contenga la ubicación de dicho AP. El inconveniente de esta técnica en principio es el modo de recolección de las coordenadas de los APs, ya que si no se establecen las correctas coordenadas de un AP, la precisión en la localización posterior de un dispositivo se verá afectada. 3.6.2.2 RFID RFID (siglas de Radio Frequency IDentification, en español Identificación por radiofrecuencia) es un sistema remoto de almacenamiento y recuperación de datos que usa dispositivos denominados etiquetas, transpondedores o tags RFID. El propósito fundamental de la tecnología RFID es transmitir la identidad de un objeto (similar a un número de serie único) mediante ondas de radio. Las tecnologías RFID se agrupan dentro de las denominadas Auto ID (Automatic Identification, o Identificación Automática), su especificación la define el estándar IEEE 802.15.4. Una etiqueta RFID es un dispositivo pequeño, que puede ser adherido o incorporado a un producto, animal o persona. Contienen antenas para recibir y responder a peticiones por radiofrecuencia desde un emisor-receptor RFID. Existen dos tipos de etiquetas RFID: activas y pasivas. Las etiquetas pasivas no necesitan alimentación eléctrica interna, mientras que las activas sí lo requieren. Una de las ventajas del uso de radiofrecuencia (en lugar de infrarrojos) es que no se requiere visión directa entre emisor y receptor. Este sistema se basa en etiquetas de radiofrecuencia que contienen una antena emisora/receptora, la etiqueta recibe dicha señal, y la utiliza como señal de alimentación, la etiqueta utiliza el campo electromagnético alternativo creado por la bobina de antena de lectura, originando un voltaje por inducción cuando el campo electromagnético penetra la selección cruzada de la bobina de la antena del transpondedor, el voltaje se rectifica y actúa como el suministro de poder para dar energía al microchip y la memoria en la etiqueta, luego utilizando modulación el transpondedor puede transferir datos codificados hacia la memoria de la etiqueta desde el lector en onda modulada. Así, un usuario que se quisiera 39 Capítulo 3 Marco Teórico localizar en un edificio tendría cerca de él un número de etiquetas de radiofrecuencia. El propio usuario tendría un lector de etiquetas RFID y leyendo las etiquetas cercanas puede llegar a localizarse. Un ejemplo de un sistema de localización que usa RFID es Cricket [CRICKET 2001], un sistema ideado por ingenieros del MIT (Massachussets Institute of Technology), cuya precisión es 2 centímetros y ha sido empleado en otros proyectos como seguimiento de objetos, control de robots o en aplicaciones conscientes del contexto (en las cuales la localización del usuario juega un papel muy importante). Revisando las características de esta tecnología es posible utilizarla para localizar e identificar a un dispositivo dentro de un edificio, además es una tecnología que en Europa está tomando auge y los dispositivos son cada vez más económicos, tan es así que los celulares de nueva generación ya cuentan con un lector RFID inmerso. 3.6.2.3 Localización por Infrarrojos La localización por infrarrojos es de muy corto alcance (unos dos metros) y se requieren enlaces de línea de visión directa. Por su corto alcance habría que incluir una cantidad enorme de emisores de infrarrojos, y aún así serían imposibles detectar ciertas localizaciones por el problema derivado de la necesidad de línea de vista directa. Existe un proyecto llamado WIPS (Wireless Indoor Positioning System) que se basa en la existencia de beacons frames emitidos vía infrarrojos que llevan los usuarios del sistema de posicionamiento para localizarse tanto de forma pública como de forma anónima [WIPS 2000]. 3.6.2.4 Bluetooth En las técnicas basadas en Bluetooth el cliente monitorea los dispositivos que hay al alcance y procedería por triangulación a ver su localización [HALLBERG 2003] [WEISSMAN 2004]. La ventaja es que es una tecnología barata, pero el alcance es demasiado corto en su versión 1.1, sin embargo en la versión 2.0 el alcance es de cerca de 100 metros. El error cometido puede estar en torno a 1,5 metros, lo cual no está mal para localización en interiores. El mayor inconveniente que tiene Bluetooth es que el indicador de RSS (potencia de señal) no es preciso, por lo que no se puede usar y por ello, si se encuentra un dispositivo cercano, hay que asumir que se está en su entorno pero no se puede estimar el grado de cercanía o lejanía. Algunas técnicas de localización como la propuesta en [GONZALEZ 2003] han sido desarrolladas con la finalidad de ubicar a un dispositivo Bluetooth dentro de una red del mismo tipo, sin embargo no contempla que esta tecnología coexista con otras más. 40 Capítulo 3 Marco Teórico 3.6.2.5 Wi-Max La tecnología Wi-Max es aún bastante desconocida y sigue el estándar IEEE 802.16. Está pensada para la intercomunicación de áreas muy extensas, de hasta 48 kilómetros de radio, y puede llegar a transmitir a velocidades de hasta 70 Mbps. La desventaja de la utilización de esta tecnología es que la mayoría de los dispositivos actuales no cuenta con ella. 41 4 Capítulo 4 Análisis y diseño Capítulo 4 Análisis y diseño En este capítulo se presentan los diagramas de caso de uso, la definición de escenarios y los diagramas de actividad que corresponden a la fase de análisis. Asimismo se presentan los diagramas de clase y de secuencia correspondientes a la etapa del diseño. Por último se detalla el diseño de las URLs válidas para el sistema y el diagrama físico de la base de datos. Capítulo 4 Análisis y diseño 4.1 Análisis El presente trabajo de tesis es un proyecto integral que incluye la implementación tanto de la parte cliente como servidora. En la figura 4.1 se muestra el diagrama de bloques que corresponde a la forma de interacción entre el cliente y el servidor que formarán parte del proyecto. Consulta de tareas pendientes Nueva tarea Recibir petición Enviar petición URI recurso Completar tarea Obtener ubicación Mostrar resultado s Leer punto de referencia Interpretar resultados Realizar consulta Formatear resultados Recibir resultado s Enviar resultados Figura 4.1 Diagrama de bloques del proceso de comunicación entre el cliente y el servidor El análisis detallado del cliente y el servidor se llevo a cabo siguiendo un enfoque UML, por medio de diagramas de casos de uso y diagramas de actividad. A continuación se presentan los diagramas de caso de uso, la definición de escenarios y los diagramas de actividad que corresponden a la fase de análisis del proyecto. En la figura 4.2 se muestra el diagrama general de casos de uso del proyecto, se visualizan las funciones principales que ofrece, las cuales son: Consultar tareas pendientes. Alta de tarea. Completar tarea. Cancelar tarea. 45 Capítulo 4 Análisis y diseño CU-1 Consultar tareas pendientes CU-2 Alta de tarea CU-3 Completar tarea Dispositivo cliente Servidor CU-4 Cancelar tarea Figura 4.2 Diagrama general de casos de uso La figura 4.3 muestra el diagrama de caso de uso CU-1 Consultar tareas pendientes. La consulta de tareas pendientes puede ser general, o puede filtrarse mediante la verificación de los objetos que se encuentran en el contexto del dispositivo (la verificación puede realizarse mediante código de barras o RFID). CU-1.1 Verificar Contexto «extends» CU-1 Consultar tareas pendientes «uses» CU-1.2 Listado de tareas pendientes Dispositivo cliente Servidor Figura 4.3 Diagrama del caso de uso CU-1 Consultar tareas pendientes Tabla 3 Descripción del caso de uso CU-1 Consultar tareas pendientes ID: CU-1 El diagrama de actividades que incluye los escenarios de éxito y los escenarios de fracaso se muestra en la figura 4.4. Nombre del caso Consultar tareas pendientes. de uso: Actores Dispositivo cliente, Servidor. Permite consultar las tareas pendientes que tiene el usuario Descripción: mediante la conexión con el servidor y la verificación del contexto. 46 Capítulo 4 Análisis y diseño Precondiciones: Postcondiciones: Escenario de éxito 1: Escenario de éxito 2: Incluye: Suposiciones: 1. El dispositivo cliente debe tener acceso al servidor por medio de Internet. 2. El usuario debe haber accedido a la aplicación y haberse autentificado. 1. Se obtendrá un listado de tareas pendientes que serán mostradas en el dispositivo cliente. 1. Se inicia la conexión con el servidor. 2. El servidor consulta en la base de datos y devuelve mediante HTTP un listado de tareas pendientes. 3. El dispositivo cliente visualiza el listado de tareas. 4. Terminar el proceso. 1. Se verifica el contexto. 2. Se inicia la conexión con el servidor enviándole datos del contexto. 3. El servidor consulta en la base de datos las tareas pendientes haciendo un filtrado según el contexto enviado y devuelve mediante HTTP un listado de tareas pendientes. 4. El dispositivo cliente visualiza el listado de tareas. 5. Terminar el proceso. CU-1.1 Verificar contexto, CU-1.2 Listado de tareas pendientes. Se supone que el cliente tiene acceso a una conexión HTTP. No Conectar con el servidor Verificar contexto Si Buscar recursos en cercanía (RFID o barras) Obtener un listado de tareas pendientes Figura 4.4 Diagrama de actividad del caso de uso CU-1 Consultar tareas pendientes Tabla 4 Descripción del caso de uso CU-1.2 Listado de tareas pendientes ID: CU-1.2 El diagrama de actividades que incluye el escenario de éxito y los escenarios de fracaso se muestra en la figura 4.5. Nombre del caso Listado de tareas pendientes. de uso: 47 Capítulo 4 Análisis y diseño Actores Dispositivo cliente, Servidor. Descripción: Despliega un listado tareas pendientes que tiene el usuario. 1. El dispositivo cliente debe tener acceso al servidor por medio de Internet. Precondiciones: 2. El usuario debe haber accedido a la aplicación y haberse autentificado. 1. Se obtendrá un listado de tareas pendientes que serán Postcondiciones: mostradas en el dispositivo cliente. 1. Se inicia la conexión con el servidor. 2. El servidor consulta en la base de datos y devuelve mediante Escenario de HTTP un listado de tareas pendientes. éxito 1: 3. El dispositivo cliente visualiza el listado de tareas. 4. Terminar el proceso. Incluye: Suposiciones: Se supone que el cliente tiene acceso a una conexión HTTP. Conectar con el servidor No Hay tareas Informar que no existen tareas Si Obtener un listado de tareas pendientes Figura 4.5 Diagrama de actividad del caso de uso CU-1.2 Listado de tareas pendientes En la figura 4.6 se muestra el diagrama de caso de uso CU-1.1 Verificar contexto. 48 Capítulo 4 Análisis y diseño CU-1.1.1 Consultar por RFID «extends» Dispositivo cliente CU-1.1 Verificar Contexto CU-1.1.2 Consultar por Barras «extends» «extends» CU-1.1.3 Obtener ubicación Servidor Figura 4.6 Diagrama del caso de uso CU-1.1 Verificar contexto Tabla 5 Descripción del caso de uso CU-1.1 Verificar contexto ID: CU-1.1 El diagrama de actividades que incluye el escenario de éxito y los escenarios de fracaso se muestra en la figura 4.7. Nombre del Verificar contexto. caso de uso: Actores Dispositivo cliente, Servidor. Permite que el dispositivo monitoreé su alrededor en busca de recursos Descripción: que estén asociados a una tarea. 1. El dispositivo cliente debe tener acceso a un lector de tarjetas RFID, ó Precondicione 2. El dispositivo cliente debe tener una cámara fotográfica incluida. s: 3. El usuario debe haber accedido a la aplicación y haberse autentificado. Postcondicion 1. Se obtendrá un listado de recursos en cercanía, los cuales se es: relacionen con tareas pendientes almacenadas previamente. 1. Se inicia la conexión con el lector de tarjetas RFID. 2. Se obtienen los identificadores de los recursos en cercanía. Escenario de 3. Se envían los identificadores de los recursos encontrados al éxito 1: servidor. 4. Terminar el proceso. 1. Se inicia la conexión con la cámara fotográfica. 2. Se captura la imagen correspondiente al código de barras del recurso. Escenario de 3. Se decodifica el código de barras obteniendo un identificador del éxito 2: recurso. 5. Se envía el identificador del recurso encontrado al servidor. 4. Terminar el proceso. CU-1.1.1 Consultar por RFID, CU-1.1.2 Consultar por barras, CU-1.1.3 Incluye: Obtener ubicación. Se supone que el cliente tiene acceso a un lector RFID y a una cámara Suposiciones: fotográfica y que la fotografía capturada corresponde a un código de barras. 49 Capítulo 4 Análisis y diseño No Código de barras Si Conectar con el lector RFID Conectar con cámara fotográfica Obtener los identificadores en cercanía Obtener fotografía de código de barras Enviar información al servidor Decodificar fotografía (código de barras) Figura 4.7 Diagrama de actividad del caso de uso CU-1.1 Verificar contexto Tabla 6 Descripción del caso de uso CU-1.1.1 Consultar por RFID ID: CU-1.1.1 El diagrama de actividades que incluye el escenario de éxito y los escenarios de fracaso se muestra en la figura 4.8. Nombre del caso Consultar por RFID. de uso: Actores Dispositivo cliente, Servidor. Permite que el dispositivo monitoreé su alrededor en busca de Descripción: tarjetas RFID al alcance. 1. El dispositivo cliente debe tener acceso a un lector de tarjetas RFID. Precondiciones: 2. El dispositivo cliente tiene acceso mediante HTTP al servidor. 3. El usuario previamente ha ingresado a la aplicación y ha sido autentificado. 1. Se obtendrán todos los recursos que se encuentren en cercanía Postcondiciones: al dispositivo cliente. 1. Se inicia la conexión con el lector de tarjetas RFID. 2. Se obtienen los identificadores de los recursos en cercanía. Escenario de 3. Se envían los identificadores de los recursos encontrados al éxito: servidor. 4. Terminar el proceso. 1. Iniciar la conexión con el lector de tarjetas RFID. Escenario de 2. Ocurre un error en la conexión. fracaso 1: 3. Indicar que no se obtuvieron los datos. 4. Terminar proceso. 1. Iniciar la conexión con el lector de tarjetas RFID. 2. Extraer los identificadores de las tarjetas RFID en cercanía. Escenario de 3. No hay tarjetas RFID en cercanía. fracaso 2: 4. Indicar que no se obtuvieron los datos. 5. Terminar proceso. 50 Capítulo 4 Análisis y diseño Incluye: Suposiciones: Se supone que el dispositivo cliente tiene acceso a un servidor por medio de HTTP. Conectar con el lector RFID No Conexión establecida Si Extraer identificadores de tarjetas RFID No Extrajo Si Indicar que no se obtuvieron los datos Enviar información al servidor Figura 4.8 Diagrama de actividad del caso de uso CU-1.1.1 Consultar por RFID Tabla 7 Descripción del caso de uso CU-1.1.2 Consultar por Barras ID: CU-1.1.2 El diagrama de actividades que incluye el escenario de éxito y los escenarios de fracaso se muestra en la figura 4.9. Nombre del caso Consultar por barras. de uso: Actores Dispositivo cliente, Servidor. Permite que el dispositivo tome una fotografía y decodifique la Descripción: imagen si tiene un código de barras. 1. El dispositivo cliente debe tener acceso a una cámara fotográfica. 2. El dispositivo cliente tiene acceso mediante HTTP al servidor. Precondiciones: 3. El usuario debe haber accedido a la aplicación y haberse autentificado. Postcondiciones: 1. Se decodificará la imagen que contiene un código de barras. 1. Se inicia la conexión con la cámara fotográfica. 2. Capturar imagen correspondiente al código de barras. Escenario de 3. Convertir imagen capturada a monocromática. éxito: 4. Decodificar imagen capturada (código de barras). 5. Enviar información al servidor. 6. Terminar el proceso. Escenario de 1. Iniciar la conexión con la cámara fotográfica. fracaso 1: 2. Ocurre un error en la conexión. 51 Capítulo 4 Análisis y diseño 3. 4. 1. 2. 3. Escenario de 4. fracaso 2: Indicar que no fue posible decodificar la imagen. Terminar proceso. Iniciar la conexión con la cámara fotográfica. Capturar la imagen. Convertir imagen a monocromática. No se puede decodificar la imagen debido a que no es un código de barras. 5. Indicar que no se pudo decodificar la imagen. 6. Terminar proceso. Incluye: Suposiciones: Se supone que el dispositivo cliente tiene acceso a un servidor por medio de HTTP. Conectar con la cámara fotográfica No Conexión establecida Si Capturar imagen Convertir imagen a monocromática Decodificar imagen Decodificó No Si Enviar información al servidor No fue posible decodificar Figura 4.9 Diagrama de actividad del caso de uso CU-1.1.2 Consultar por barras Tabla 8 Descripción del caso de uso CU-1.1.3 Obtener ubicación ID: CU-1.1.3 El diagrama de actividades que incluye el escenario de éxito y los escenarios de fracaso se muestra en la figura 4.10. Nombre del Obtener ubicación. caso de uso: 52 Capítulo 4 Análisis y diseño Actores Dispositivo cliente, Servidor. Obtiene la ubicación actual del dispositivo utilizando RFID, Wi-Fi, Descripción: Bluetooth, GPS o alguna técnica en GSM. 1. El dispositivo cliente tiene acceso mediante HTTP al servidor. Precondicione 2. El usuario debe haber accedido a la aplicación y haberse s: autentificado. Postcondicion 1. Se obtendrá la localización del dispositivo. es: 1. Iniciar la conexión con el dispositivo GPS. Escenario de 2. Se obtiene la lectura de datos del GPS. éxito 1: 3. Se obtiene la información de ubicación del dispositivo. 4. Terminar proceso. 1. Iniciar la conexión con el dispositivo GPS. 2. No se puede conectar con el dispositivo GPS. 3. Establecer conexión con el lector RFID. Escenario de 4. Se leen las tarjetas RFID en cercanía. éxito 2: 5. Se envía los identificadores de las tarjetas leídas al servidor. 6. El servidor mapea el identificador en la ubicación. 7. Se obtiene la información de ubicación del dispositivo. 8. Terminar proceso. 1. Iniciar la conexión con el dispositivo GPS. 2. No se puede obtener información de ubicación del GPS. 3. Establecer conexión con el lector RFID. 4. No se puede conectar con el lector o no existen tarjetas RFID en cercanía. Escenario de 5. Establecer conexión con Bluetooth. éxito 3: 6. Obtener dispositivos cercanos. 7. Se envía las direcciones MAC de los dispositivos cercanos al servidor. 8. El servidor mapea la dirección MAC en la ubicación. 9. Se obtiene la información de ubicación del dispositivo. 10. Terminar proceso. 1. Iniciar la conexión con el dispositivo GPS. 2. No se puede obtener información de ubicación del GPS. 3. Establecer conexión con el lector RFID. 4. No se puede conectar con el lector o no existen tarjetas RFID en cercanía. 5. Establecer conexión con Bluetooth. 6. No se puede establecer la conexión Bluetooth o no existen Escenario de dispositivos con Bluetooth en cercanía. éxito 4: 7. Establecer conexión Wi-Fi. 8. Obtener dispositivos cercanos. 9. Se envía las direcciones MAC de los dispositivos cercanos al servidor. 10. El servidor mapea la dirección MAC en la ubicación. 11. Se obtiene la información de ubicación del dispositivo. 12. Terminar proceso. 1. Iniciar la conexión con el dispositivo GPS. Escenario de 2. No se puede obtener información de ubicación del GPS. éxito 5: 3. Establecer conexión con el lector RFID. 53 Capítulo 4 Análisis y diseño 4. No se puede conectar con el lector o no existen tarjetas RFID en cercanía. 5. Establecer conexión con Bluetooth. 6. No se puede establecer la conexión Bluetooth o no existen dispositivos con Bluetooth en cercanía. 7. Establecer conexión Wi-Fi. 8. No se puede establecer la conexión Wi-Fi o no existen AP en cercanía. 9. Obtener células GSM. 10. Se obtiene la información de ubicación del dispositivo. 11. Terminar proceso. Incluye: Suposiciones: Se supone que el dispositivo cliente tiene acceso a un servidor por medio de HTTP. Se supone además que el dispositivo cuenta al menos con conectividad GSM. Verificar conectividad GPS No Existe conexión Si Establecer conexión con lector RFID Obtener lectura de GPS No Establecer conexión Bluetooth Si Conexión establecida No Se obtuvo lectura Leer tarjetas en cercanía Si Obtener ubicación A No Se obtuvo lectura C Si Enviar identificador al servidor B Figura 4.10 Diagrama de actividad del caso de uso CU-1.1.3 Obtener ubicación 54 Capítulo 4 Análisis y diseño A No Si Conexión establecida Verificar dispositivos en cercanía Establecer conexión Wi-Fi No No Hay dispositivos Si Conexión establecida Si Verificar dispositivos cercanos Obtener información GSM B C No Hay dispositivos Si Figura 4.10 Diagrama de actividad del caso de uso CU-1.1.3 Obtener ubicación (Cont.) En la figura 4.11 se muestra el diagrama de caso de uso CU-2 Alta de Tarea. CU-2.1 Seleccionar tarea de guiado CU-1.1 Verificar Contexto «extends» «extends» CU-2 Alta de tarea Servidor Dispositivo cliente Figura 4.11 Diagrama del caso de uso CU-2 Alta de tarea Tabla 9 Descripción del caso de uso CU-2 Alta de tarea ID: CU-1.2 El diagrama de actividades que incluye el escenario de éxito y los escenarios de fracaso se muestra en la figura 4.12. 55 Capítulo 4 Análisis y diseño Nombre del caso Alta de tarea. de uso: Actores Dispositivo cliente, Servidor Descripción: Permite al usuario registrar nuevas tareas. 1. El dispositivo cliente debe tener acceso al servidor por medio de internet. Precondiciones: 2. El usuario debe haber ingresado y haber sido autentificado en la aplicación. 1. Se creará una nueva tarea la cual se establecerá como Postcondiciones: pendiente. 1. Seleccionar actividad. 2. Seleccionar tipo de tarea. 3. Seleccionar tarea. 4. Elegir recurso asociado. Escenario de 5. Verificar contexto. éxito 1: 6. Establecer fecha de cumplimiento. 7. Almacenar tarea en servidor. 8. Establecer tarea como pendiente. 9. Terminar el proceso. 1. Seleccionar actividad. 2. Seleccionar tipo de tarea. 3. Seleccionar tarea. Escenario de 4. Elegir recurso asociado. éxito 2: 5. Establecer fecha de cumplimiento. 6. Almacenar tarea en servidor. 7. Establecer tarea como pendiente. 6. Terminar el proceso. Incluye: CU-1.1 Verificar contexto, CU-2.1 Seleccionar tarea de guiado. Suposiciones: Se supone que el cliente tiene acceso a una conexión HTTP. 56 Capítulo 4 Análisis y diseño Seleccionar Actividad Seleccionar tipo de tarea Seleccionar tarea Elegir recurso asociado No Verificar contexto Si Establecer fecha de cumplimiento Buscar recursos en cercanía (RFID o barras) Almacenar tarea en servidor Establecer tarea como pendiente Figura 4.12 Diagrama de actividad del caso de uso CU-2 Alta de tarea En la figura 4.13 se muestra el diagrama de casos de uso CU-2.1 Seleccionar tarea de guiado. CU-2.1 Seleccionar tarea de guiado «uses» CU-1.1.3 Obtener ubicación «uses» Dispositivo cliente CU-2.1.1 Obtener Ruta Figura 4.13 Diagrama del caso de uso CU-2.1 Seleccionar tarea de guiado 57 Servidor Capítulo 4 Análisis y diseño Tabla 10 Descripción del caso de uso CU-2.1 Seleccionar tarea de guiado ID: CU-2.1 El diagrama de actividades que incluye el escenario de éxito y los escenarios de fracaso se muestra en la figura 4.14. Nombre del caso Seleccionar tarea de guiado. de uso: Actores Dispositivo cliente, Servidor. Descripción: Permite al usuario hacer una tarea de guiado. 1. El dispositivo cliente debe tener acceso al servidor por medio de internet. Precondiciones: 2. El usuario debe haber accedido a la aplicación y haber sido autentificado. 1. Se completará una tarea que se tenía establecida como Postcondiciones: pendiente. 1. El usuario selecciona la tarea de guiado. 2. Se obtiene la ubicación actual. 3. Se selecciona la ubicación destino. Escenario de 4. Se envían la ubicación actual y la destino al servidor. éxito 1: 5. El servidor crea la ruta y la devuelve mediante HTTP al cliente. 6. El dispositivo cliente debe seguir la ruta establecida. 7. Terminar el proceso. 1. El usuario selecciona la tarea de guiado. 2. No se puede obtener la ubicación actual. Escenario de 3. Se envía un mensaje indicándole al cliente que el proceso no fracaso 1: puede llevarse a cabo. 4. Terminar el proceso. Incluye: CU-1.1.3 Obtener ubicación, CU-2.1.1 Obtener ruta. Suposiciones: Se supone que el cliente tiene acceso a una conexión HTTP. 58 Capítulo 4 Análisis y diseño Seleccionar tarea de guiado Obtener la ubicación actual No Se obtuvo ubicación Si Seleccionar la ubicación destino Informar que no se pudo realizar la operación Enviar información al servidor Obtener ruta del servidor Figura 4.14 Diagrama de actividad del caso de uso CU-2.1 Seleccionar tarea de guiado En la figura 4.15 se muestra el diagrama de caso de uso CU-3 Completar Tarea. CU-1.1 Verificar Contexto «extends» CU-3 Completar tarea Dispositivo cliente Servidor Figura 4.15 Diagrama del caso de uso CU-3 Completar tarea Tabla 11 Descripción del caso de uso CU-3 Completar tarea ID: CU-1.3 El diagrama de actividades que incluye el escenario de éxito y los escenarios de fracaso se muestra en la figura 4.16. Nombre del caso Completar tarea. de uso: Actores Dispositivo cliente, Servidor Descripción: Permite al usuario completar una tarea pendiente. Precondiciones: 1. El dispositivo cliente debe tener acceso al servidor por medio de 59 Capítulo 4 Análisis y diseño Postcondiciones: Escenario de éxito 1: Escenario de éxito 2: Incluye: Suposiciones: internet. 2. El usuario debe haber accedido a la aplicación y haber sido autentificado. 3. El usuario deber haber consultado el listado de tareas pendientes. 4. El usuario debe haber elegido el detalle de la tarea que quiere completar. 1. Se completará una tarea que se tenía establecida como pendiente. 1. Verificar contexto. 2. Buscar recursos en cercanía. 3. Seleccionar tarea. 4. Completar tarea. 5. Cambiar estado de tarea a completa. 6. Terminar el proceso. 1. Seleccionar tarea. 2. Completar tarea. 3. Cambiar estado de tarea a completa. 4. Terminar el proceso. CU-1.1 Verificar contexto. Se supone que el cliente tiene acceso a una conexión HTTP. No Verificar contexto Seleccionar tarea Si Buscar recursos en cercanía (RFID o barras) Completar tarea Cambiar estado de tarea a completa Figura 4.16 Diagrama de actividad del caso de uso CU-3 Completar tarea En la figura 4.17 se muestra el diagrama de caso de uso CU-4 Cancelar Tarea. 60 Capítulo 4 Análisis y diseño CU-1.1 Verificar Contexto «extends» CU-3 Completar tarea Dispositivo cliente Servidor Figura 4.17 Diagrama del caso de uso CU-4 Cancelar tarea Tabla 12 Descripción del caso de uso CU-4 Cancelar tarea ID: CU-1.3 El diagrama de actividades que incluye el escenario de éxito y los escenarios de fracaso se muestra en la figura 4.18. Nombre del caso Cancelar tarea. de uso: Actores Dispositivo cliente, Servidor. Descripción: Permite al usuario cancelar una tarea pendiente. 1. El dispositivo cliente debe tener acceso al servidor por medio de internet. 2. El usuario debe haber accedido a la aplicación y haber sido autentificado. Precondiciones: 3. El usuario deber haber consultado el listado de tareas pendientes. 4. El usuario debe haber elegido el detalle de la tarea que quiere cancelar. Postcondiciones: 1. Se cancelará una tarea que se tenía establecida como pendiente. 1. Verificar contexto. 2. Buscar recursos en cercanía. Escenario de 3. Seleccionar tarea. éxito 1: 4. Cancelar tarea. 5. Cambiar estado de tarea a cancelada. 6. Terminar el proceso. 1. Seleccionar tarea. Escenario de 2. Cancelar tarea. éxito 2: 3. Cambiar estado de tarea a cancelada. 4. Terminar el proceso. Incluye: CU-1.1 Verificar contexto. Suposiciones: Se supone que el cliente tiene acceso a una conexión HTTP. 61 Capítulo 4 Análisis y diseño No Verificar contexto Seleccionar tarea Si Buscar recursos en cercanía (RFID o barras) Cancelar tarea Cambiar estado de tarea a cancelada Figura 4.18 Diagrama de actividad del caso de uso CU-4 Cancelar tarea 4.2 Diseño El proyecto de tesis consiste en dos partes: la parte cliente y la parte servidora. El diseño se explicará para cada una de las partes. En el punto 2.2.5 se detalla la interacción entre las clases del cliente y el servidor en las operaciones que realizará el sistema. 4.2.1 Cliente La parte cliente consta de 7 paquetes que se listan a continuación: mx.edu.cenidet.clientetareasandroid.activities define las activities propias de la interfaz del cliente Android. mx.edu.cenidet.clientetareasandroid.codigobarras implementa la lectura y decodificación del código de barras. mx.edu.cenidet.clientetareasandroid.conexionhttp contiene las clases para la conexión con el servidor de tareas a través del protocolo HTTP. mx.edu.cenidet.clientetareasandroid.interfaz define las interfaces gráficas del cliente Android. mx.edu.cenidet.clientetareasandroid.objetos define los objetos requeridos para el establecimiento de tareas. mx.edu.cenidet.clientetareasandroid.rfid define las clases para la conexión con el lector de tarjetas RFID y para la lectura de las tarjetas. mx.edu.cenidet.clientetareasandroid.utilerias contiene clases para el procesamiento de imágenes, cadenas y la configuración propia del cliente Android. 62 Capítulo 4 Análisis y diseño El nombre de los paquetes se asignó siguiendo las recomendaciones descritas en el artículo Estructura de paquetes [Rames 2005]. La figura 4.19 muestra el diagrama de paquetes pertenecientes al cliente Android. Figura 4.19 Diagrama de paquetes del cliente 4.2.1.1 Paquete mx.edu.cenidet.clientetareasandroid.activities En la figura 4.20 se muestra el diagrama de clases del paquete mx.edu.cenidet.clientetareasandroid.activities, el cual forma parte de la interfaz de usuario. Figura 4.20 Diagrama de clases del paquete mx.edu.cenidet.clientetareasandroid.activities 63 Capítulo 4 Análisis y diseño A continuación se describen de manera general las clases que componen a este paquete. Cabe recalcar que este paquete define las interfaces gráficas con las que trabaja Android, debido a esto no hay relación alguna entre las clases de este paquete, no obstante si las hay de este paquete con los demás paquetes. ActividadesListActivity. Contiene métodos para la obtención de la interfaz gráfica en donde se visualiza un listado de actividades a las que puede tener acceso un determinado usuario. CapturaBarrasGuiadoActivity. Contiene la funcionalidad necesaria para visualizar la interfaz gráfica para la captura de una imagen con código de barras utilizado para realizar el proceso de guiado. CapturaBarrasOrigenActivity. Contiene la funcionalidad necesaria para visualizar la interfaz gráfica para la captura de una imagen con código de barras utilizado para obtener la ubicación inicial del usuario dentro del proceso de guiado. DaemonTareas. Contiene los métodos y atributos necesarios para el lanzamiento de un servicio que se ejecuta en segundo plano y está verificando objetos cercanos que se asocien a tareas o tareas que se cumplan en los próximos minutos. GrupoListActivity. Proporciona la funcionalidad necesaria para visualizar una lista de grupos de usuarios. GuiadoActivity. Proporciona la interfaz gráfica necesaria para la realización de la tarea de guiado en interiores utilizando RFID. GuiadoQRCodesActivity. Proporciona la interfaz gráfica necesaria para la realización de la tarea de guiado en interiores utilizando código de barras. InstanciaTareaDetalleActivity. Contiene métodos y atributos necesarios para la presentación al usuario de la información detallada de una tarea pendiente. InstanciaTareaListActivity. Contiene métodos para la obtención de la interfaz gráfica de un listado de tareas pendientes del usuario. LoginActivity. Proporciona métodos para la presentación de la pantalla de autenticación del usuario. NuevaTareaActivity. Contiene métodos para visualizar la pantalla de alta de una nueva tarea. RecursoDetalleActivity. Proporciona métodos y atributos para la presentación en pantalla de los detalles de un recurso. RecursoListActivity. Contiene métodos para visualizar la pantalla de listado de recursos, utilizando para mostrar los recursos cercanos al dispositivo. TipoTareaListActivity. Proporciona métodos para la presentación en pantalla de un listado de tareas disponibles para que un usuario pueda instanciarlas. UbicacionDetalleActivity. Contiene métodos y atributos necesarios para mostrar en pantalla el detalle de una ubicación. UbicacionListQrcodesActivity. Proporciona métodos y atributos necesarios para mostrar un listado con las ubicaciones. Utilizado para que el usuario seleccione el destino en el proceso de guiado mediante QRCodes. 64 Capítulo 4 Análisis y diseño UbicacionListRFIDActivity. Contiene los métodos necesarios para mostrar en pantalla un listado con las ubicaciones. Utilizado para que el usuario seleccione el destino en el proceso de guiado mediante RFID. UsuarioDetalleActivity. Proporciona métodos para la presentación en pantalla de información detallada de un usuario. UsuarioDetalleTareaActivity. Contiene los métodos que permiten mostrar en pantalla la información detallada de un usuario. UsuarioListActivity. Contiene métodos que permiten mostrar un listado de usuarios pertenecientes. Utilizado para verificar los usuarios en cercanía. 4.2.1.2 Paquete mx.edu.cenidet.clientetareasandroid.interfaz El paquete mx.edu.cenidet.clientetareasandroid.interfaz complementa al paquete descrito anteriormente (4.2.1.1 mx.edu.cenidet.clientetareasandroid.activities) en el despliegue y establecimiento de la interfaz de usuario. La figura 4.21 muestra las clases pertenecientes al paquete mx.edu.cenidet.clientetareasandroid.interfaz, el cual contiene clases para el despliegue en pantalla de listas elegibles, ventanas de dialogo y todos los elementos necesarios para la presentación visual de la interfaz al usuario. Figura 4.21 Diagrama de clases del paquete mx.edu.cenidet.clientetareasandroid.interfaz 65 Capítulo 4 Análisis y diseño Las clases del este paquete se describen a continuación: ActividadAdapter. Contiene las vistas y métodos necesarios para el despliegue de las actividades en forma de una lista. Esta clase es usada por la clase ActividadesListActivity para mostrar al usuario una lista de actividades disponibles para elegir. Dialogo. Esta clase permite mostrar en pantalla mensajes de alerta para indicar al usuario, ya sea que una acción no se realizó, o que ha sido completada exitosamente. GrupoAdapter. Proporciona métodos necesarios para presentar los grupos de usuarios en forma de una lista. Cabe destacar que esta clase es utilizada por la clase GrupoListActivity para mostrar en pantalla un listado de grupos de usuario almacenados en la base de datos. InstanciaTareaAdapter. Contiene las vistas y métodos necesarios para el despliegue de las tareas pendientes en forma de una lista. Esta clase es usada por la clase InstanciaTareaListActivity para mostrar al usuario una lista de las tareas pendientes que tiene almacenadas en la base de datos. RecursoAdapter. Proporciona métodos necesarios para presentar los recursos en forma de una lista elegible. Esta clase es usada por la clase RecursoListActivity. TipoTareaAdapter. Proporciona métodos necesarios para mostrar en un listado los tipos de tarea. Cabe destacar que esta clase es utilizada por la clase ipoTareaListActivity para mostrar en pantalla un listado de tipos de tarea a los que un usuario puede tener acceso. UbicacionAdapter. Contiene métodos para el despliegue de un listado de ubicaciones. Esta clase es usada por la clase UbicacionListActivity para mostrar al usuario una lista de las ubicaciones almacenadas en la base de datos. UsuarioAdapter. Proporciona los métodos necesarios para mostrar un listado de usuarios. Cabe destacar que esta clase es utilizada por la clase UsuarioGroupListActivity para mostrar en pantalla un listado de los usuarios pertenecientes a un grupo de usuarios. VistaGuiado. Proporciona los métodos y atributos necesarios para establecer la interfaz de la actividad de guiado y refrescar la ubicación del usuario. Es utilizada por las clases GuiadoActivity y GuiadoQRCodesActivity. Complementado los paquetes pertenecientes a la interfaz de usuario y debido a la forma de programación en Android, en donde se pueden definir las interfaces mediante archivos XML, se establecieron 8 archivos para definir las interfaces, los cuales son descritos a continuación: captura_barras.xml. Es utilizado para definir la interfaz que permite al usuario capturar una fotografía con un código de barras y decodificarla. detalles_instancia_tarea.xml. Es utilizado para definir la interfaz que permite al usuario capturar incidencias de alguna tarea pendiente, así como 66 Capítulo 4 Análisis y diseño completar o cancelar la tarea, también es utilizada para consultar los detalles de una tarea. detalles_ubicacion.xml. Define la interfaz para mostrar el detalle de una ubicación. detalles_usuario.xml. Define la interfaz para mostrar los detalles de un usuario. guiado.xml. Es utilizado para establecer la interfaz en el proceso de guiado. lista.xml. Define la interfaz para el despliegue de una vista en forma de listado. login.xml. Define la interfaz de la pantalla principal del sistema, en donde el usuario se autentifica. nueva_tarea_recurso.xml. Define la interfaz necesaria para que un usuario establezca una nueva tarea como pendiente. El contenido de estos archivos se detalla en el anexo A. 4.2.1.3 Paquete mx.edu.cenidet.clientetareasandroid.codigobarras La figura 4.22 muestra las clases pertenecientes al paquete mx.edu.cenidet.clientetareasandroid.codigobarras el cual hace uso de la API ZXing [Zxing 2009], la cual es utilizada para la decodificación del código de barras. Figura 4.22 Diagrama de clases del paquete mx.edu.cenidet.clientetareasandroid.codigobarras En seguida se describen a grandes rasgos las clases pertenecientes a este paquete. CodigoBarras. Esta clase hace uso de la API ZXing para decodificar un código de barras y contiene los métodos necesarios para la utilización de dicha API y de la cámara fotográfica del dispositivo celular, quien se hará cargo de la captura de la imagen. RGBMonochromeBitmapSource. Proporciona los métodos necesarios para el tratamiento de una imagen con la finalidad de convertirla en un formato que sea más fácil de codificar por la API ZXing, para ello la imagen es convertida a monocromática (blanco y negro). En la figura 4.23 se muestra, mediante un diagrama de secuencias, el proceso para decodificar una imagen que contiene un código de barras. 67 Capítulo 4 Análisis y diseño CodigoBarras RGBMonochromeBitmapSource Cliente 1. Selecciona por barras 2. Conecta cámara 3. Muestra imagen 4. Captura imagen 5. Envía imagen 6. Convierte imagen a monocromática 7. Envía imagen tratada 8. Decodifica imagen 9. Muestra identificador Figura 4.23 Diagrama de secuencias para la decodificación del código de barras El proceso de decodificación de código de barras es iniciado por el usuario cuando quiere dar de alta una nueva tarea o quiere realizar el proceso de guiado mediante QRCodes, el usuario elige identificar a un recurso por medio de un código de barras. La clase CodigoBarras realiza la conexión con la cámara del dispositivo y el cliente captura la imagen, hecho esto la clase CodigoBarras obtiene la imagen capturada y la envía a la clase RGBMonochromeBitmapSource, la cual se encarga de convertir la imagen a monocromática. Una vez que la imagen es tratada se reenvía nuevamente a la clase CodigoBarras la cual utiliza la API ZXing para decodificar el código de barras contenido en la imagen, finalmente se envía el identificador perteneciente al código de barras capturado. 4.2.1.4 Paquete mx.edu.cenidet.clientetareasandroid.conexionhttp En la figura 4.24 se muestran las clases pertenecientes al mx.edu.cenidet.clientetareasandroid.conexionhttp. Este paquete únicamente de dos clases, las cuales se describe a continuación: paquete consta ConexionHTTP. Contiene los métodos necesarios para el establecimiento de peticiones POST y GET mediante el protocolo HTTP, con la finalidad de consumir los recursos ofrecidos por el servicio Web. PeticionesHTTP. Proporciona métodos y atributos necesarios para obtener objetos serializados de las peticiones mediante el protocolo HTTP. 68 Capítulo 4 Análisis y diseño Figura 4.24 Diagrama de clases del paquete mx.edu.cenidet.clientetareasandroid.conexionhttp La descripción de la conexión HTTP entre cliente y servidor se detalla en el diagrama de secuencias de la figura 4.25. Cliente Servidor ConexionHTTP WebServiceApplication 1. Envía petición GET/POST 2. Recibe petición y redirecciona según URL 3. Envía respuesta en JSON Figura 4.25 Diagrama de secuencias comunicación cliente/servidor por HTTP La comunicación mediante el protocolo HTTP entre el cliente y el servidor es iniciada por el cliente. La clase ConexionHTTP realiza una petición POST o GET, después, del lado del servidor, la clase WebServiceApplication, la cual hace la función de receptor de peticiones, recibe esta petición y según la URL solicitada, la redirecciona otra clase. Cabe destacar que éste es el diagrama de secuencias general de la comunicación HTTP entre el cliente y el servidor. 4.2.1.5 Paquete mx.edu.cenidet.clientetareasandroid.objetos En la figura 4.26 se muestran las clases mx.edu.cenidet.clientetareasandroid.objetos. 69 pertenecientes al paquete Capítulo 4 Análisis y diseño Figura 4.26 Diagrama de clases del paquete mx.edu.cenidet.clientetareasandroid.objetos A continuación se describen de manera general las clases que componen este paquete. Cabe recalcar que este paquete define los objetos que se utilizan como base para la realización de las operaciones del cliente, entre las que destacan la recepción de objetos serializados enviados por el servidor mediante el protocolo HTTP; debido a esto no hay relación alguna entre las clases de este paquete, no obstante si las hay de este paquete con los demás paquetes. Actividad. Contiene los métodos y atributos necesarios para la creación de objetos del tipo Actividad, el cual representa una actividad para el sistema. Grupo. Proporciona los métodos y atributos para la creación de objetos del tipo Grupo, el cual representa a un grupo de usuarios. InstanciaTarea. Contiene los métodos y atributos necesarios para la creación y manipulación de objetos del tipo InstanciaTarea, el cual representa las tareas pendientes de un determinado usuario. Recurso. Proporciona los métodos y atributos para la creación de objetos del tipo Recurso, el cual representa el recurso asociado a una tarea. TipoTarea. Contiene los métodos y atributos necesarios para la creación y manipulación de objetos del tipo TipoTarea, que representa las tareas que un usuario o grupo de usuarios tiene disponibles para establecer como pendientes. Ubicacion. Proporciona los métodos y atributos para la creación de objetos del tipo Ubicacion, el cual representa una ubicación almacenada en la base de datos (en el servidor) y será utilizada en el proceso de guiado. Usuario. Contiene los métodos y atributos necesarios para la creación y manipulación de objetos del tipo Usuario, el cual representa un usuario contenido en la base de datos (en el servidor de tareas). 70 Capítulo 4 Análisis y diseño 4.2.1.6 Paquete mx.edu.cenidet.clientetareasandroid.rfid En la figura 4.27 se muestra la clase perteneciente al paquete mx.edu.cenidet.clientetareasandroid.rfid. Únicamente cuenta con una clase la cual establece la conexión mediante un hilo con el lector de tarjetas RFID y rec ibe las lecturas provenientes de él. Figura 4.27 Diagrama de clases del paquete mx.edu.cenidet.clientetareasandroid.rfid Cabe destacar que actualmente los dispositivos celulares no cuentan con lectores de tarjetas RFID. La solución que se propone es realizar una aplicación en java que establezca conexión con el lector de tarjetas RFID, el cual esté conectado a una computadora mediante el puerto USB, de este modo el cliente Android se conectará por medio de un socket a la computadora que tiene asociado el lector de tarjetas RFID para obtener la lectura de las tarjetas RFID al alcance. La figura 4.28 muestra el diagrama de secuencias necesario para la obtención de una lectura de tarjetas RFID. ConexionRFID IntermediarioRFID 1. Inicia hilo de conexión LectorRFID 2. Recibe petición 3. Envía respuesta de conexión 4. Establece conexión 6. Inicia hilo de conexión 7. Recibe petición Cliente 8. Envía respuesta de conexión 9. Establece conexión 10. Verifica conexión al puerto 12. Envía identificador RFID 11. Obtiene lectura RFID ... 15. Cierra hilo de conexión 17. Cierra hilo de conexión Servidor de conexión RFID 14. Envía identificador RFID Figura 4.28 Diagrama de secuencias para el proceso de lectura de tarjeta RFID 71 Capítulo 4 Análisis y diseño El proceso de obtención de tarjetas RFID en cercanía comienza del lado del cliente (ConexionRFID), el cual inicia un hilo de conexión por medio de un socket con el intermediario RFID, que hará el papel de intermediario entre el cliente y el lector de tarjetas RFID. El intermediario RFID mediante la clase IntermediarioRFID recibe la petición y se establece la conexión, IntermediarioRFID inicia otro hilo con la clase LectorRFID la cual realiza la conexión con el lector RFID y obtiene la lectura de la tarjeta RFID en cercanía, paso siguiente LectorRFID envía el identificador RFID, el cual es interceptado por IntermediarioRFID y retransmitido a ConexionRFID (ya del lado del cliente) el cual recibe el identificador de la tarjeta RFID leída. De esta forma se pueden realizar diversas operaciones dentro del sistema, como: la identificación de recursos, la localización del dispositivo o el proceso de guiado. Este proceso es iterativo y finaliza hasta que el cliente cierra socket de conexión; mientras el hilo esté funcionando se estarán leyendo tarjetas en cercanía de la forma antes descrita. 4.2.1.7 Paquete mx.edu.cenidet.clientetareasandroid.utilerias Este paquete contiene métodos para el procesamiento de imágenes, cadenas y la configuración propia del cliente Android. La figura 4.29 muestra las clases pertenecientes a este paquete. Figura 4.29 Diagrama de clases del paquete mx.edu.cenidet.clientetareasandroid.utilerias Estas clases son utilizadas por clases de otros paquetes para el procesamiento de imágenes y cadenas. Las clases de este paquete se describen a continuación: Cadenas. Contiene los métodos para el procesamiento de cadenas. Imagenes. Proporciona los métodos y atributos para el procesamiento de imágenes. ParsedDataSet. Contiene los métodos necesarios para almacenar la información del archivo de configuración XML. 72 Capítulo 4 Análisis y diseño ParserXML. Contiene los métodos necesarios para recorrer el archivo de configuración XML. XMLRead. Contiene los métodos necesarios para interactuar con la clase ParserXML y obtener los valores de las etiquetas del archivo de configuración XML. 4.2.2 Servidor de tareas El servidor está compuesto de los siguientes paquetes: mx.edu.cenidet.servidortareasosgi.basedatos define la conexión y las consultas a la base de datos. mx.edu.cenidet.servidortareasosgi.objetos define los objetos requeridos para el establecimiento de tareas y métodos para la serialización de los objetos mediante JSON. mx.edu.cenidet.servidortareasosgi.osgi pone en marcha el servidor OSGI y publica el servicio Web, además contiene una clase que la hace de orquestador de las peticiones al servicio Web. mx.edu.cenidet.servidortareasosgi.recursosrestlet define las clases que atenderán las peticiones de los clientes al servicio Web. mx.edu.cenidet.servidortareasosgi.utilerias contiene las clases para el procesamiento de imágenes y cadenas. La figura 4.30 muestra el diagrama de paquetes pertenecientes a la parte servidora. Figura 4.30 Diagrama de paquetes del servidor 4.2.2.1 Paquete mx.edu.cenidet.servidortareasosgi.basedatos En la figura 4.31 se muestra el diagrama de las clases pertenecientes a este paquete, el cual permite realizar las consultas y operaciones sobre la base de datos. 73 Capítulo 4 Análisis y diseño Figura 4.31 Diagrama de clases del paquete mx.edu.cenidet.clientetareasandroid.basedatos A continuación se describen de manera general las clases que componen este paquete. Cabe recalcar que este paquete es utilizado por otros paquetes que utilizan llamadas a la base de datos dentro del servidor. Conexion. Contiene métodos y atributos que permiten la conexión con la base de datos de tareas. OperacionesBD. Proporciona la funcionalidad necesaria para actualizar, insertar o seleccionar registros en la base de datos. 4.2.2.2 Paquete mx.edu.cenidet.servidortareasosgi.osgi En la figura 4.32 se muestra el diagrama de las clases pertenecientes a este paquete, el cual permite activar el servidor y publicar el servicio Web. Figura 4.32 Diagrama de clases del paquete mx.edu.cenidet.clientetareasandroid.osgi A continuación se describen de manera general las clases que componen este paquete: Activator. Esta clase es necesaria debido a que se utilizará OSGI como Framework para el servidor y es mediante ella que se inicia y se detiene el servicio. WebServiceApplication. Esta aplicación sirve de orquestador entre las peticiones que realiza el cliente al servidor, es decir, es el que se encarga de redirigir las peticiones a las clases correspondientes según la URL solicitada. Previamente en el diagrama de secuencias de la figura 4.25 se ha detallado la comunicación entre el servidor y el cliente mediante el protocolo HTTP. 4.2.2.3 Paquete mx.edu.cenidet.servidortareasosgi.objetos En la figura 4.33 se visualizan las clases pertenecientes a este paquete, el cual permite crear objetos que son necesarios para enviar de forma serializada, a través del protocolo HTTP, en la comunicación entre el cliente y el servidor de tareas, debido a esto no hay relación alguna entre las clases de este paquete, no 74 Capítulo 4 Análisis y diseño obstante si las hay de este paquete con otros paquetes dentro del servidor de tareas. Figura 4.33 Diagrama de clases del paquete mx.edu.cenidet.servidortareasosgi.objetos A continuación se detallan las clases pertenecientes a este paquete: Actividad. Contiene los métodos y atributos necesarios para la creación y serialización de objetos del tipo Actividad, el cual representa una actividad para el sistema. Error. Maneja los mensajes de error enviados al cliente, los cuales se envían serializados en formato JSON. Grupo. Proporciona los métodos y atributos para la creación, manejo y serialización de objetos del tipo Grupo, el cual representa a un grupo de usuarios. InstanciaTarea. Contiene los métodos y atributos necesarios para la creación, manipulación y serialización de objetos del tipo InstanciaTarea, el cual representa las tareas pendientes de un determinado usuario. Recurso. Proporciona los métodos y atributos para la creación, manejo y serialización de objetos del tipo Recurso, el cual representa el recurso asociado a una tarea. TipoTarea. Contiene los métodos y atributos necesarios para la creación, manipulación y serialización de objetos del tipo TipoTarea, las tareas que un usuario o grupo de usuarios tiene disponibles para establecer como pendientes. 75 Capítulo 4 Análisis y diseño Ubicacion. Proporciona los métodos y atributos para la creación, manejo y serialización de objetos del tipo Ubicacion, el cual representa una ubicación almacenada en la base de datos. Usuario. Contiene los métodos y atributos necesarios para la creación, manipulación y serialización de objetos del tipo Usuario, el cual representa un usuario contenido en la base de datos. 4.2.2.4 Paquete mx.edu.cenidet.servidortareasosgi.utilerias Este paquete contiene métodos para el procesamiento de cadenas. La figura 4.34 muestra las clases pertenecientes a este paquete. Consta únicamente de una clase la cual es utilizada por clases de otros paquetes para el procesamiento de cadenas. Figura 4.34 Diagrama de clases del paquete mx.edu.cenidet.servidortareasosgi.utilerias 4.2.2.5 Paquete mx.edu.cenidet.servidortareasosgi.recursosrestlet Este paquete contiene métodos que atenderán las peticiones al servicio Web por parte de los clientes. La figura 4.35 detalla las clases que incluye este paquete. Cabe mencionar que no existen relaciones entre clases de este paquete, sin embargo si las hay entre clases de este paquete y otros paquetes dentro del servidor de tareas. Figura 4.35 Diagrama de clases del paquete mx.edu.cenidet.servidortareasosgi.recursosrestlet Las clases de este paquete se describen a continuación, debido a la relevancia de este paquete el diseño de las clases se hará con más detalle que los anteriores, tomando en cuenta casos de diseño. 76 Capítulo 4 Análisis y diseño 4.2.3 Interacción cliente-servidor 4.2.3.1 Autentificación del usuario El proceso de autentificación se desarrolla de la siguiente forma: El proceso comienza cuando el usuario inicia la aplicación. La clase LoginActivity es la primera en cargarse y ésta se encarga de lanzar el intent que contiene la interfaz gráfica, además de llamar al archivo login.xml (ver anexo A, para mayor detalle), el cual contiene la descripción de la interfaz a utilizar. De este modo se carga la pantalla de autenticación, pidiendo al usuario su clave y su contraseña. El usuario captura la clave y la contraseña. LoginActivity forma la URL de petición con la clave y la contraseña y la envía a ConexionHTTP. ConexionHTTP recibe la URL y envía una petición GET al servicio Web, el cual es proporcionado por el servidor de tareas mediante la clase WebServiceApplication; dicha clase recibe la petición y dependiendo la URL solicitada, redirecciona la petición a la clase correspondiente, en este caso UsuarioResource. UsuarioResource recibe la petición GET y la redirecciona al método que corresponde con esta petición. Dentro de esta función se formula la cadena con la consulta SQL. UsuarioResource instancia la clase OperacionesBD enviándole la consulta SQL. OperacionesBD realiza la conexión a la base de datos mediante la clase Conexion, esta última devuelve el objeto de conexión con la base de datos. OperacionesBD recibe la conexión y realiza la consulta del usuario por medio de su clave y contraseña en la base de datos. Hecho esto, cierra la conexión con la base de datos, para después crear un objeto de tipo Usuario con la información recibida, lo cual se realiza mediante la clase Usuario. Usuario se encarga de serializar el objeto de este mismo tipo, utilizando el formato de representación JSON, y envía esta información a la clase UsuarioResource. UsuarioResource recibe el objeto Usuario serializado y lo reenvía por medio de HTTP al cliente, el cual lo recibe mediante la clase ConexionHTTP. ConexionHTTP recibe la información serializada y envía los resultados en forma de un objeto de tipo Usuario a la clase LoginActivity. LoginActivity verifica que ha recibido un objeto de tipo Usuario y permite al usuario ingresar al sistema, mostrando la pantalla de detalles del usuario. Cabe destacar que esto se realiza antes de cada uno de los procesos, es por ello que se excluirá esta parte en la explicación individual de cada uno de ellos. En la figura 4.36 se describe mediante un diagrama de secuencias, el proceso de autenticación del usuario, tomando en cuenta la comunicación entre el cliente y el servidor de tareas. 77 Capítulo 4 Análisis y diseño LoginActivity ConexionHTTP UsuarioResource WebServiceApplication OperacionesBD Conexion Usuario Usuario 1. Inicia aplicación 2. Carga Intent 3. Despliega interfaz 4. Captura usuario y contraseña 5. URL de petición 6. Envía petición GET con usuario y contraseña Servidor de tareas 7. Redirección a clase UsuarioResource 8. Envía URL con usuario y contraseña 9. Redirección a método GET 10. Forma consulta SQL Cliente 11. Establece conexión con BD 12. Conexión a BD 13.Consulta usuario y contraseña 14. Cierra conexión 15. Cierra conexión con BD 16. Envía información obtenida 19. Envía objeto de tipo Usuario serializado en JSON 18. Envía objeto de tipo Usuario serializado en JSON 20. Envía resultados 22. Despliega pantalla de detalles de usuario 21. Valida resultados Figura 4.36 Diagrama de secuencias para la autenticación del usuario 78 17. Serializa Objeto Capítulo 4 Análisis y diseño 4.2.3.2 Consulta de tareas pendientes El proceso de consulta de tareas pendientes se describe detalladamente a continuación: Previamente a este proceso el usuario se debe haber autentificado. El proceso inicia cuando el usuario selecciona la opción de tareas pendientes. La clase InstanciaTareaListActivity se encarga de lanzar el intent que contiene la interfaz gráfica, además de llamar al archivo lista.xml (ver anexo A, para mayor detalle), el cual contiene la descripción de la interfaz a utilizar. InstanciaTareaListActivity forma la URL de petición incluyendo en ella la clave del usuario y la envía a ConexionHTTP. ConexionHTTP recibe la URL y envía una petición GET al servicio Web, el cual es ofrecido por el servidor de tareas mediante la clase WebServiceApplication, dicha clase recibe la petición y dependiendo la URL solicitada redirecciona la petición a la clase correspondiente, en este caso InstanciaTareaResource. InstanciaTareaResource recibe la petición GET y la redirecciona al método que corresponde con esta petición. Dentro de esta función se formula la cadena con la consulta SQL en donde se filtran las tareas pendientes del usuario. InstanciaTareaResource instancia la clase OperacionesBD enviándole la consulta SQL. OperacionesBD realiza la conexión a la base de datos mediante la clase Conexion, esta última devuelve el objeto de conexión con la base de datos. OperacionesBD recibe la conexión y realiza la consulta de las tareas pendientes del usuario en la base de datos. Hecho esto, cierra la conexión con la base de datos, para después crear un arreglo de objetos de tipo InstanciaTarea con la información recibida de la consulta a la base de datos, lo cual se realiza mediante la clase InstanciaTarea. InstanciaTarea se encarga de serializar los objetos de este mismo tipo, utilizando el formato de representación JSON, y envía esta información a la clase InstanciaTareaResource. InstanciaTareaResource recibe el arreglo de objetos InstanciaTarea serializado y lo reenvía al cliente, el cual lo recibe mediante la clase ConexionHTTP. ConexionHTTP recibe la información serializada y envía los resultados en forma de un arreglo de objetos de tipo InstanciaTarea a la clase InstanciaTareaListActivity. InstanciaTareaListActivity verifica los objetos recibidos y los utiliza para formar un listado elegible de tareas pendientes. Cabe destacar que este proceso se realiza antes de completar y cancelar una tarea, por lo que se omitirá en la explicación de estas operaciones. En la figura 4.37 se describe mediante un diagrama de secuencias, el proceso que se sigue para la realización de consulta de tareas pendientes. 79 Capítulo 4 Análisis y diseño InstanciaTareaListActivity ConexionHTTP WebServiceApplication InstanciaTareaResource OperacionesBD Conexion InstanciaTarea Usuario 2. Carga Intent 1. Selecciona tareas pendientes 3. Envía URL de petición con clave de usuario 4. Envía petición GET con clave de usuario 5. Redirección a clase InstanciaTareaResource 6. Envía URL 7. Redirección a método GET Servidor de tareas 8. Forma consulta SQL 9. Establece conexión con BD 10. Conexión a BD Cliente 11.Consulta tareas pendientes del usuario 12. Cierra conexión 13. Cierra conexión con BD 14. Envía información obtenida 17. Envía arreglo de objetos InstanciaTarea serializados en JSON 16. Envía arreglo de objetos de tipo InstanciaTarea serializados en JSON 18. Envía resultados 20. Despliega listado de tareas 19. Valida resultados Figura 4.37 Diagrama de secuencias para la consulta de tareas pendientes 80 15. Serializa arreglo de objetos Capítulo 4 Análisis y diseño 4.2.3.3 Consultar el detalle de una tarea pendiente El proceso de consulta del detalle de una tarea se describe a continuación: Previo a esto el usuario se debe haber autentificado y haber consultado el listado de tareas pendientes. El proceso inicia cuando el usuario selecciona del listado de tareas pendientes una tarea específica. La clase InstanciaTareaDetalleActivity se encarga de lanzar el intent que contiene la interfaz gráfica, además de llamar al archivo detalles_instancia_tarea.xml (ver anexo A, para mayor detalle), el cual contiene la descripción de la interfaz a utilizar. InstanciaTareaDetalleActivity forma la URL de petición e incluye en ella la clave de usuario y el identificador de la tarea y la envía a ConexionHTTP. ConexionHTTP recibe la URL y envía una petición GET al servicio Web, el cual es ofrecido por el servidor de tareas mediante la clase WebServiceApplication, dicha clase recibe la petición y dependiendo la URL solicitada redirecciona la petición a la clase correspondiente, en este caso InstanciaTareaResource. InstanciaTareaResource recibe la petición GET y la redirecciona al método que corresponde con esta petición. Dentro de esta función se formula la cadena con la consulta SQL. InstanciaTareaResource instancia la clase OperacionesBD enviándole la consulta SQL. OperacionesBD realiza la conexión a la base de datos mediante la clase Conexion, esta última devuelve el objeto de conexión con la base de datos. OperacionesBD recibe la conexión y realiza la consulta de la tarea pendiente del usuario en la base de datos. Hecho esto, cierra la conexión con la base de datos, para después crear un objeto de tipo InstanciaTarea con la información recibida de la consulta a la base de datos, lo cual se realiza mediante la clase InstanciaTarea. InstanciaTarea se encarga de serializar el objeto del mismo tipo, utilizando el formato de representación JSON, y envía esta información a la clase InstanciaTareaResource. InstanciaTareaResource recibe el objeto InstanciaTarea serializado y lo reenvía al cliente, el cual lo recibe mediante la clase ConexionHTTP. ConexionHTTP recibe la información serializada y envía los resultados en forma de un objeto de tipo InstanciaTarea a la clase InstanciaTareaDetalleActivity. InstanciaTareaDetalleActivity verifica el objeto recibido y lo utiliza para formar la interfaz del detalle de la tarea pendiente. En la figura 4.38 se describe mediante un diagrama de secuencias, el proceso que se sigue para consultar el detalle de una tarea pendiente. 81 Capítulo 4 Análisis y diseño InstanciaTareaDetalleActivity ConexionHTTP WebServiceApplication InstanciaTareaResource OperacionesBD Conexion InstanciaTarea Usuario 2. Carga Intent 1. Elegir una tarea pendiente 3. Envía URL de petición con clave de tarea 4. Envía petición GET con clave de tarea 5. Redirección a clase InstanciaTareaResource 6. Envía URL 7. Redirección a método GET Servidor de tareas 8. Forma consulta SQL 9. Establece conexión con BD 10. Conexión a BD Cliente 11.Consulta tarea elegida 12. Cierra conexión 13. Cierra conexión con BD 14. Envía información obtenida 17. Envía objeto de tipo InstanciaTarea serializado en JSON 16. Envía objeto de tipo InstanciaTarea serializado en JSON 18. Envía resultados 20. Despliega detalle de tarea 19. Valida resultados Figura 4.38 Diagrama de secuencias para la consulta del detalle de una tarea 82 15. Serializa objeto Capítulo 4 Análisis y diseño 4.2.3.4 Completar/Cancelar una tarea pendiente El proceso de cancelar o completar una tarea se describe a continuación: Previo a esto el usuario se debe haber autentificado y haber consultado el listado de tareas pendientes, además de elegir el detalle de una tarea. El proceso inicia cuando el usuario elige completar/cancelar una tarea. InstanciaTareaDetalleActivity forma la URL de petición incluyendo el identificador de la tarea y la envía a ConexionHTTP. ConexionHTTP recibe la URL y envía una petición POST al servicio Web, el cual es ofrecido por el servidor de tareas mediante la clase WebServiceApplication, dicha clase recibe la petición y dependiendo la URL solicitada redirecciona la petición a la clase correspondiente, en este caso InstanciaTareaResource. InstanciaTareaResource recibe la petición POST y la redirecciona al método que corresponde con esta petición. Dentro de esta función se formula la cadena con la instrucción en SQL indicando la actualización del estado de la tarea. InstanciaTareaResource instancia la clase OperacionesBD enviándole la instrucción SQL. OperacionesBD realiza la conexión a la base de datos mediante la clase Conexion, esta última devuelve el resultado de la operación (éxito o fracaso). OperacionesBD recibe la respuesta de la operación realizada en la base de datos y reenvía la respuesta mediante un código HTTP al cliente, el cual recibe esta respuesta por medio de la clase ConexionHTTP. ConexionHTTP recibe la respuesta y lo traduce en un mensaje para el usuario, en donde le indica que la tarea fue completada o cancelada exitosamente. Cabe destacar que el proceso de completar una tarea difiere únicamente en lo siguiente con el proceso de cancelarla: al completar una tarea, el estado de la tarea se actualiza a ―C‖ y al cancelarla se actualiza a ―X‖. En la figura 4.39 se describe mediante un diagrama de secuencias, el proceso que se sigue para completar o cancelar una tarea pendiente. 83 Capítulo 4 Análisis y diseño InstanciaTareaDetalleActivity ConexionHTTP WebServiceApplication InstanciaTareaResource OperacionesBD Conexion Usuario 1. Elegir Completar/ Cancelar tarea 2. Envía URL de petición con clave de tarea 3. Envía petición POST con clave de tarea 4. Redirección a clase InstanciaTareaResource 5. Envía URL 6. Redirección a método POST 7. Forma sentencia de actualización SQL Servidor de tareas 8. Establece conexión con BD 9. Conexión a BD 10.Actualiza campo estado de tarea elegida (―C‖, ―X‖) Cliente 11. Cierra conexión 14. Código 200 en HTTP 13. Actualización correcta 15. Mensaje de éxito 16. Mensaje de tarea Completa/Cancelada Figura 4.39 Diagrama de secuencias para la operación de completar o cancelar una tarea 84 12. Cierra conexión con BD Capítulo 4 Análisis y diseño 4.2.3.5 Dar de alta una nueva tarea (establecer tarea como pendiente) Este proceso es un tanto complejo y se divide en los siguientes subprocesos: 1. Obtener un listado de actividades disponibles para el usuario. 2. Obtener un listado de tareas disponibles para elegir según la actividad que se haya escogido en el paso anterior. 3. Elegir un recurso por medio del código de barras o por RFID y establecer la tarea como pendiente. Obtener un listado de actividades disponibles para el usuario El proceso inicia cuando el usuario selecciona la opción de crear una nueva tarea. La clase ActividadesListActivity se encarga de lanzar el intent que contiene la interfaz gráfica, además de llamar al archivo lista.xml (ver anexo A, para mayor detalle), el cual contiene la descripción de la interfaz a utilizar. ActividadesListActivity forma la URL de petición incluyendo en ella la clave del usuario y la envía a ConexionHTTP. ConexionHTTP recibe la URL y envía una petición GET al servicio Web, el cual es ofrecido por el servidor de tareas mediante la clase WebServiceApplication, dicha clase recibe la petición y dependiendo la URL solicitada redirecciona la petición a la clase correspondiente, en este caso ActividadResource. ActividadResource recibe la petición GET y la redirecciona al método que corresponde con esta petición. Dentro de esta función se formula la cadena con la consulta SQL en donde se filtran las actividades que tiene disponible el usuario. ActividadResource instancia la clase OperacionesBD enviándole la consulta SQL. OperacionesBD realiza la conexión a la base de datos mediante la clase Conexion, esta última devuelve el objeto de conexión con la base de datos. OperacionesBD recibe la conexión y realiza la consulta de las actividades disponibles para el usuario, almacenadas en la base de datos. Hecho esto, cierra la conexión con la base de datos, para después crear un arreglo de objetos de tipo Actividad con la información recibida de la consulta a la base de datos, lo cual se realiza mediante la clase Actividad. Actividad se encarga de serializar los objetos de este mismo tipo, utilizando el formato de representación JSON, y envía esta información a la clase ActividadResource. Esta última recibe el arreglo de objetos Actividad serializado y lo reenvía al cliente, el cual lo recibe mediante la clase ConexionHTTP. ConexionHTTP recibe la información serializada y envía los resultados en forma de un arreglo de objetos de tipo Actividad a la clase ActividadListActivity. ActividadListActivity verifica los objetos recibidos y los utiliza para formar un listado elegible de actividades disponibles para el usuario. En la figura 4.40 se muestra el diagrama de secuencias perteneciente a la obtención de un listado de actividades disponibles para el usuario. 85 Capítulo 4 Análisis y diseño ActividadesListActivity ConexionHTTP ActividadResource WebServiceApplication OperacionesBD Conexion Actividad Usuario 1. Selecciona nueva tarea 2. Carga Intent 3. Envía URL de petición con clave de usuario 4. Envía petición GET con clave de usuario 5. Redirección a clase ActividadResource 6. Envía URL 7. Redirección a método GET Servidor de tareas 8. Forma consulta SQL 9. Establece conexión con BD 10. Conexión a BD Cliente 11.Consulta actividades disponibles para el usuario 12. Cierra conexión 13. Cierra conexión con BD 14. Envía información obtenida 17. Envía arreglo de objetos Actividad serializados en JSON 16. Envía arreglo de objetos de tipo Actividad serializados en JSON 18. Envía resultados 20. Despliega listado de actividades disponibles 19. Valida resultados Figura 4.40 Diagrama de secuencias para la obtención de un listado de actividades disponibles para el usuario 86 15. Serializa arreglo de objetos Capítulo 4 Análisis y diseño Obtener un listado de tareas disponibles para elegir según la actividad que se haya escogido en el paso anterior Una vez obtenido el listado de actividades, el siguiente paso es elegir una de ellas y esto llevará a obtener un listado de tareas disponibles de acuerdo al usuario y a la actividad elegida. Previamente a este proceso el usuario se debe haber autentificado y haber consultado el listado de actividades disponibles. El proceso inicia cuando el usuario selecciona una actividad. La clase TipoTareaListActivity se encarga de lanzar el intent que contiene la interfaz gráfica, además de llamar al archivo lista.xml (ver anexo A, para mayor detalle), el cual contiene la descripción de la interfaz a utilizar. TipoTareaListActivity forma la URL de petición incluyendo en ella la clave del usuario y la clave de la actividad elegida previamente y la envía a ConexionHTTP. ConexionHTTP recibe la URL y envía una petición GET al servicio Web, el cual es ofrecido por el servidor de tareas mediante la clase WebServiceApplication, dicha clase recibe la petición y dependiendo la URL solicitada redirecciona la petición a la clase correspondiente, en este caso TipoTareaResource. TipoTareaResource recibe la petición GET y la redirecciona al método que corresponde con esta petición. Dentro de esta función se formula la cadena con la consulta SQL en donde se filtran las tareas disponibles de acuerdo a la actividad y al usuario. TipoTareaResource instancia la clase OperacionesBD enviándole la consulta SQL. OperacionesBD realiza la conexión a la base de datos mediante la clase Conexion, esta última devuelve el objeto de conexión con la base de datos.OperacionesBD recibe la conexión y realiza la consulta de las tareas disponibles para el usuario, almacenadas en la base de datos. Hecho esto, cierra la conexión con la base de datos, para después crear un arreglo de objetos de tipo TipoTarea con la información recibida de la consulta a la base de datos, lo cual se realiza mediante la clase TipoTarea. TipoTarea se encarga de serializar los objetos de este mismo tipo, utilizando el formato de representación JSON, y envía esta información a la clase TipoTareaResource. TipoTareaResource recibe el arreglo de objetos TipoTarea serializado y lo reenvía al cliente, el cual lo recibe mediante la clase ConexionHTTP. ConexionHTTP recibe la información serializada y envía los resultados en forma de un arreglo de objetos de tipo TipoTarea a la clase TipoTareaListActivity. Esta última verifica los objetos recibidos y los utiliza para formar un listado elegible de tareas disponibles para el usuario. En la figura 4.41 se muestra el diagrama de secuencias perteneciente a la obtención de un listado de tareas disponibles para el usuario. 87 Capítulo 4 Análisis y diseño TipoTareaListActivity ConexionHTTP TipoTareaResource WebServiceApplication OperacionesBD Conexion TipoTarea Usuario 1. Selecciona actividad 2. Carga Intent 3. Envía URL de petición con clave de usuario y clave de actividad 4. Envía petición GET con clave de usuario y clave de actividad 5. Redirección a clase TipoTareaResource 6. Envía URL 7. Redirección a método GET Servidor de tareas 8. Forma consulta SQL 9. Establece conexión con BD 10. Conexión a BD Cliente 11.Consulta tareas disponibles para el usuario 12. Cierra conexión 13. Cierra conexión con BD 14. Envía información obtenida 17. Envía arreglo de objetos TipoTarea serializados en JSON 16. Envía arreglo de objetos de tipo TipoTarea serializados en JSON 18. Envía resultados 20. Despliega listado de tareas disponibles 19. Valida resultados Figura 4.41 Diagrama de secuencias para la obtención de un listado de tareas disponibles para el usuario 88 15. Serializa arreglo de objetos Capítulo 4 Análisis y diseño Elegir un recurso por medio del código de barras o por RFID y establecer la tarea como pendiente El siguiente paso para la creación de una nueva tarea pendiente consiste en elegir un recurso, o bien por código de barras, o bien por una lectura RFID, estos procesos fueron explicados en las figuras 4.23 y 4.28 respectivamente, por ello sólo se abstraerá este proceso para la explicación del siguiente paso: el establecimiento de la tarea como pendiente. Previo a esto el usuario se debe haber autentificado, haber consultado el listado de actividades disponibles y haber consultado los tipos de tareas disponibles. El proceso inicia cuando el usuario elige un tipo de tarea disponible. La clase NuevaTareaActivity se encarga de lanzar el intent que contiene la interfaz gráfica, además de llamar al archivo nueva_tarea_recurso.xml (ver anexo A, para mayor detalle), el cual contiene la descripción de la interfaz a utilizar, dicha interfaz es la que se muestra al usuario. El usuario elige la fecha en la que desea completar la tarea y elige el recurso asociado a la tarea, o bien por código de barras, o bien por RFID. NuevaTareaActivity forma la URL de petición incluyendo el identificador del tipo de tarea, el identificador del usuario, la clave del recurso y la fecha, y la envía a ConexionHTTP. ConexionHTTP recibe la URL y envía una petición POST al servicio Web, el cual es ofrecido por el servidor de tareas mediante la clase WebServiceApplication, dicha clase recibe la petición y dependiendo la URL solicitada redirecciona la petición a la clase correspondiente, en este caso InstanciaTareaResource, esta clase recibe la petición POST y la redirecciona al método que corresponde con esta petición. Dentro de esta función se formula la cadena con la instrucción de inserción SQL, en donde se especifica la inserción de un nuevo registro como tarea pendiente del usuario. InstanciaTareaResource instancia la clase OperacionesBD enviándole la instrucción SQL. OperacionesBD realiza la conexión a la base de datos mediante la clase Conexion, esta última devuelve el resultado de la operación (éxito o fracaso). OperacionesBD recibe la respuesta de la operación realizada en la base de datos y reenvía la respuesta mediante un código HTTP al cliente, el cual recibe esta respuesta por medio de la clase ConexionHTTP. ConexionHTTP recibe la respuesta y lo traduce en un mensaje para el usuario, en donde le indica que la tarea almacenada exitosamente. En la figura 4.42 se describe el proceso que se sigue para establecer una tarea como pendiente. 89 Capítulo 4 Análisis y diseño NuevaTareaActivity ConexionHTTP WebServiceApplication InstanciaTareaResource OperacionesBD Conexion Usuario 2. Carga intent 1. Elegir tipo de tarea 3. Desplegar interfaz 4. Selecciona fecha y recurso 5. Envía URL de petición con clave de tipo de tarea y clave de usuario 6. Envía petición POST con clave del tipo de tarea y clave de usuario 7. Redirección a clase InstanciaTareaResource 8. Envía URL 9. Redirección a método POST 10. Forma sentencia de inserción SQL Servidor de tareas 11. Establece conexión con BD 12. Conexión a BD Cliente 13. Inserta registro de tarea pendiente en BD 14. Cierra conexión 17. Código 200 en HTTP 16. Actualización correcta 18. Mensaje de éxito 19. Mensaje de tarea Almacenada Figura 4.42 Diagrama de secuencias para la operación establecer una tarea como pendiente (nueva tarea) 90 15. Cierra conexión con BD Capítulo 4 Análisis y diseño 4.2.3.6 Tarea de guiado Este proceso se divide en varias actividades las cuales se listan a continuación: 1) Obtener un listado de actividades disponibles para el usuario, 2) Obtener un listado de tareas disponibles para elegir según la actividad que se haya escogido en el paso anterior, 3) Obtener la ubicación actual del dispositivo, 4) Obtener un listado de ubicaciones para elegir hacia donde se quiere realizar el guiado y 5) Proceso de guiado. Las dos primeras actividades ya han sido descritas anteriormente (ver figuras 4.40 y 4.41). Obtener la ubicación actual del dispositivo El proceso inicia cuando el usuario elije la actividad de guiado. La clase GuiadoActivity se encarga de lanzar el intent que contiene la interfaz gráfica, además de llamar al archivo guiado.xml (ver anexo A, para mayor detalle), el cual contiene la descripción de la interfaz a utilizar, dicha interfaz es la que se muestra al usuario. GuiadoActivity instancia la clase ConexionRFID, la cual es la encargada de verificar el entorno en busca de tarjetas RFID en cercanía. Una vez que ConexionRFID ha leído alguna tarjeta, envía el identificador a GuiadoActivity, esta clase por su parte forma la URL de petición incluyendo el identificador RFID leído y la envía a ConexionHTTP. ConexionHTTP recibe la URL y envía una petición GET al servicio Web, el cual es ofrecido por el servidor de tareas mediante la clase WebServiceApplication, dicha clase recibe la petición y dependiendo la URL solicitada la redirecciona a la clase correspondiente, en este caso UbicacionResource. UbicacionResource recibe la petición GET y la redirecciona al método que corresponde con esta petición. Dentro de esta función se formula la cadena con la consulta SQL en donde se consulta la ubicación que corresponde con el identificador RFID en la base de datos. UbicacionResource instancia la clase OperacionesBD enviándole la consulta SQL. OperacionesBD realiza la conexión a la base de datos mediante la clase Conexion, esta última devuelve el objeto de conexión con la base de datos. OperacionesBD recibe la conexión y realiza la consulta de la ubicación por medio del identificador RFID. Hecho esto, cierra la conexión con la base de datos, para después crear un objeto de tipo Ubicacion con la información recibida de la consulta a la base de datos, lo cual se realiza mediante la clase Ubicacion. Este último se encarga de serializar el objeto de este mismo tipo, utilizando el formato de representación JSON, y envía esta información a la clase UbicacionResource. UbicacionResource recibe el objeto Ubicacion serializado y lo reenvía al cliente, el cual lo recibe mediante la clase ConexionHTTP. ConexionHTTP recibe la información serializada y envía los resultados en forma de un objeto de tipo Ubicacion a la clase GuiadoActivity, la cual verifica el objeto recibido y los utiliza para escribir en pantalla la ubicación actual del usuario. En la figura 4.43 se muestra el proceso de obtención de la posición actual del dispositivo. 91 Capítulo 4 Análisis y diseño GuiadoActivity ConexionRFID ConexionHTTP WebServiceApplication UbicacionResource OperacionesBD Conexion Ubicacion Usuario 1. Selecciona ubicación 2. Carga Intent 3. Obtiene tarjetas RFID en cercanía 4. Lee tarjeta RFID 5. Identificador de tarjeta RFID Servidor de tareas 6. Forma URL con identificador RFID 7. Envía petición GET con identificador RFID 8. Redirección a clase UbicacionResource 9. Envía URL 10. Redirección a método GET 11. Forma consulta SQL Cliente 12. Establece conexión con BD 13. Conexión a BD 14.Consulta Ubicación con identificador RFID 16. Cierra conexión con BD 15. Cierra conexión 17. Envía información obtenida 20. Envía objeto Ubicacion serializado en JSON 19. Envía objeto de tipo Ubicacion serializado en JSON 21. Envía resultados 23. Despliega ubicación actual 22. Valida resultados Figura 4.43 Diagrama de secuencias para la operación obtener la ubicación actual del dispositivo 92 18. Serializa el objeto Capítulo 4 Análisis y diseño Obtener un listado de ubicaciones para elegir hacia donde se quiere realizar el guiado El siguiente paso para llevar a cabo el proceso de guiado es la obtención de un listado de ubicaciones dentro del campus. El proceso inicia cuando se obtiene la posición actual del usuario. La clase UbicacionListActivity se encarga de lanzar el intent que contiene la interfaz gráfica, además de llamar al archivo lista.xml (ver anexo A, para mayor detalle), el cual contiene la descripción de la interfaz a utilizar. UbicacionListActivity forma la URL de petición de ubicaciones y la envía a ConexionHTTP. ConexionHTTP recibe la URL y envía una petición GET al servicio Web, el cual es ofrecido por el servidor de tareas mediante la clase WebServiceApplication, dicha clase recibe la petición y dependiendo la URL solicitada redirecciona la petición a la clase correspondiente, en este caso UbicacionResource. UbicacionResource recibe la petición GET y la redirecciona al método que corresponde con esta petición. Dentro de esta función se formula la cadena con la consulta SQL en donde se consultan las ubicaciones almacenadas en la base de datos. UbicacionResource instancia la clase OperacionesBD enviándole la consulta SQL. OperacionesBD realiza la conexión a la base de datos mediante la clase Conexion, esta última devuelve el objeto de conexión con la base de datos. OperacionesBD recibe la conexión y realiza la consulta de las ubicaciones almacenadas en la base de datos. Hecho esto, cierra la conexión con la base de datos, para después crear un arreglo de objetos de tipo Ubicacion con la información recibida de la consulta a la base de datos, lo cual se realiza mediante la clase Ubicacion. Ubicacion se encarga de serializar los objetos de este mismo tipo, utilizando el formato de representación JSON, y envía esta información a la clase UbicacionResource. UbicacionResource recibe el arreglo de objetos Ubicacion serializado y lo reenvía al cliente, el cual lo recibe mediante la clase ConexionHTTP. ConexionHTTP recibe la información serializada y envía los resultados en forma de un arreglo de objetos de tipo Ubicacion a la clase UbicacionListActivity. UbicacionListActivity verifica los objetos recibidos y los utiliza para formar un listado elegible de ubicaciones. La figura 4.44 muestra el diagrama de secuencias para este proceso. 93 Capítulo 4 Análisis y diseño UbicacionListActivity ConexionHTTP UbicacionResource WebServiceApplication OperacionesBD Conexion Ubicacion Usuario 1. Selecciona tarea de guiado 2. Carga Intent 3. Envía URL de petición de ubicaciones 4. Envía petición GET de ubicaciones 5. Redirección a clase UbicacionResource 6. Envía URL 7. Redirección a método GET Servidor de tareas 8. Forma consulta SQL 9. Establece conexión con BD 10. Conexión a BD Cliente 11.Consulta ubicaciones en la BD 12. Cierra conexión 13. Cierra conexión con BD 14. Envía información obtenida 17. Envía arreglo de objetos Ubicacion serializados en JSON 16. Envía arreglo de objetos de tipo Ubicacion serializados en JSON 18. Envía resultados 20. Despliega listado de ubicaciones 19. Valida resultados Figura 4.44 Diagrama de secuencias para la operación de obtener un listado de ubicaciones 94 15. Serializa arreglo de objetos Capítulo 4 Análisis y diseño Proceso de guiado El siguiente paso es el proceso de guiado, en el que se indicará al usuario en todo momento su posición y la posición del destino elegido. La figura 4.45 muestra el proceso de guiado con RFID mediante un diagrama de secuencias. Mucha de la funcionalidad aquí mostrada se abstraerá de los procesos mostrados anteriormente, lo cual se hizo con la finalidad de obtener diagramas más legibles y entendibles. Cabe destacar que la parte resaltada en oscuro se repite tantas veces como se actualice la posición actual del usuario sin llegar al destino elegido. GuiadoActivity ConexionRFID Servidor Usuario 1. Inicia hilo de conexión 2. Lee tarjeta RFID 3. Identificador 4. Verifica si es destino 7. Refresca el plano y coordenadas de posición actual y destino 8. Camina a otra posición 5. Consulta ubicación 6. Ubicación, coordenadas y plano 9. Consulta ubicación 10. Lee tarjeta RFID 11. Identificador 12. Verifica si es destino ... 13. Ha llegado al destino 14. Cierra conexión Figura 4.45 Diagrama de secuencias de la tarea de guiado por RFID El proceso mostrado en la figura 4.45 se describe de la siguiente manera: 1. GuiadoActivity inicia un hilo de conexión con ConexionRFID. 2. ConexionRFID lee las tarjetas que tiene en cercanía y se obtiene la ubicación actual del usuario. 3. GuiadoActivity muestra al usuario el plano con su ubicación actual y la ubicación destino elegida. 4. El Usuario entonces camina hacia otra ubicación. Una vez que el usuario realiza esto, GuiadoActivity verifica la posición actual con ayuda de la clase ConexionRFID. Los pasos 3 y 4 se repiten hasta que el usuario camina hasta la posición destino. 5. Finalmente GuiadoActivity informa al usuario que ha llegado a su destino. 95 Capítulo 4 Análisis y diseño El proceso de guiado puede llevarse a cabo también mediante la lectura de códigos de barras, la figura 4.46 muestra el proceso de guiado mediante códigos de barras. GuiadoQRcodesActivity CodigoBarras Usuario 1. Inicia cámara 2. Decodifica el código de barras Servidor 3. Identificador 4. Verifica si es destino 7. Refresca el plano y coordenadas de posición actual y destino 8. Captura fotografía 5. Consulta ubicación 6. Ubicación, coordenadas y plano 9. Envía fotografía 10. Decodifica el código de barras 11. Identificador 12. Verifica si es destino ... 13. Ha llegado al destino Figura 4.46 Diagrama de secuencias de la tarea de guiado con QRCodes El proceso mostrado en la figura 4.46 se describe de la siguiente manera: 1. GuiadoQRCodesActivity inicia la cámara y envía la fotografía con el código de barras a CodigoBarras. 2. CodigoBarras decodifica el código de barras y envía el identificador a GuiadoQRCodesActivity, este último obtiene la ubicación actual del usuario. 3. GuiadoQRCodesActivity muestra al usuario el plano con su ubicación actual y la ubicación destino elegida. 4. El Usuario entonces captura otra fotografía. Los pasos 2, 3 y 4 se repiten hasta que el usuario captura el código de barras correspondiente al destino elegido. 5. Finalmente GuiadoQRCodesActivity informa al usuario que ha llegado a su destino. 4.2.4 Diseño de las URL Se establecieron las siguientes URL dinámicas válidas para la comunicación mediante el protocolo HTTP entre el cliente y el servidor. 96 Capítulo 4 Análisis y diseño Las siguientes son URL manejadas por la clase UbicacionResource. http://<IP_o_dominio>/ubicaciones/campus/{idcampus}. Se utiliza en una petición GET para obtener un listado de ubicaciones dentro del campus con clave {idcampus}. http://<IP_o_dominio>/ubicaciones/campus/{idcampus}/rfid/{esrfid}. Se utiliza en una petición GET para obtener un listado de ubicaciones dentro del campus con clave {idcampus}, las cuales tienen asociada una tarjeta rfid. http://<IP_o_dominio>/ubicaciones/campus/{idcampus}/qrcodes/{esqrcode}. Se utiliza en una petición GET para obtener un listado de ubicaciones dentro del campus con clave {idcampus}, las cuales tienen asociado un código de barras. http://<IP_o_dominio>/ubicaciones/{idubicacion}. Se utiliza con GET para obtener la ubicación con clave {idubicacion}. http://<IP_o_dominio>/ubicaciones/{idubicacion}. Se utiliza con GET para obtener la ubicación asociada al QRcode con identificador {qrcode} http://<IP_o_dominio>/ubicaciones/rfid/{rfid}. Se utiliza con GET para obtener la ubicación asociada con la tarjeta RFID con identificador {rfid}. http://<IP_o_dominio>/ubicaciones/escaleras/plano/{idplano}. Se utiliza con GET para obtener la ubicación definida como escaleras en el plano con clave {idplano}. http://<IP_o_dominio>/ubicaciones/contexto/{etiquetas}. Se utiliza para obtener un listado de ubicaciones que se asocien con las etiquetas con identificadores {etiquetas}. http://<IP_o_dominio>/ubicaciones/edificio/{idedificio}. Se utiliza para obtener la ubicación del edificio con identificador {idedificio}. A continuación se listan InstanciaTareaResource. las URL administradas por la clase http://<IP_o_dominio>/users/{idusuario}/tareas/. Permite, por medio de GET, consultar todas las tareas pendientes del usuario con identificador {idusuario}. http://<IP_o_dominio>/users/{idusuario}/tareas/contexto/{etiquetas}. Permite, a través de una petición GET, consultar las tareas pendientes que tengan objetos asociados a las tarjetas RFID con identificadores {etiquetas}. http://<IP_o_dominio>/users/{idusuario}/tareas/fecha/{porFecha}. Permite, a través de una petición GET, consultar las tareas pendientes que tengan como fecha {porFecha}. http://<IP_o_dominio>/users/{idusuario}/tareas/fecha/{porFecha}/hora/{porH ora}. Permite, a través de una petición GET, consultar las tareas pendientes que tengan como fecha {porFecha} y como hora {porHora}. http://<IP_o_dominio>/users/{idusuario}/tareas/{idinstanciatarea}. Permite, a través de una petición GET, consultar la tarea pendiente con clave {idinstanciatarea} del usuario con identificador {idusuario}. 97 Capítulo 4 Análisis y diseño http://<IP_o_dominio>/users/{idusuario}/tareas/{idinstanciatarea}/incidencia/ {incidencia}. Una petición POST a esta URL nos permitirá actualizar las incidencias a {incidencia} de la tarea con clave {idinstanciatarea} para el usuario {idusuario}. http://<IP_o_dominio>/users/{idusuario}/tareas/{idinstanciatarea}/estado/{est ado}/incidencia/{incidencia}. Una petición POST a esta URL nos permitirá actualizar las incidencias a {incidencia} y cambiar de estado la tarea a {estado} de la tarea con clave {idinstanciatarea} para el usuario {idusuario}. http://<IP_o_dominio>/users/{idusuario}/tareas/{idinstanciatarea}/modiFecha /{modiFecha}/modiHora/{modiHora}. Una petición POST a esta URL nos permitirá modificar la fecha y hora a {modiFecha}, {modiHora} de la tarea con clave {idinstanciatarea} para el usuario {idusuario}. http://<IP_o_dominio>/users/{idusuario}/tareas/{idtipotarea}/guardarinstanci a/asociado/{asociado}/idasociado/{idasociado}/tipoasociado/{tipoasociado}/r fid_asociado/{rfid_asociado}/fecha/{fecha}/hora/{hora}. Una petición POST en esta URL permite establecer una tarea como pendiente, la tarea se establecerá del tipo {idtipotarea} para el usuario {idusuario}, se asignará el objeto con identificador {idasociado}, descripción {asociado}, tipo {tipoasociado} y RFID {rfid_asociado}. La fecha y hora para completarla se serán {fecha}{hora}. En seguida se describe la URL manejada por la clase ActividadResource. http://<IP_o_dominio>/users/{idusuario}/grupos/{idgrupo}/actividad/. Si se usa con GET, permite obtener un listado de actividades disponibles para el usuario {idusuario}, perteneciente al grupo {idgrupo}. Las peticiones a la TipoTareaResource. siguiente URL son administradas por la clase http://<IP_o_dominio>/users/{idusuario}/grupos/{idgrupo}/actividad/{idactivid ad}/tareas/. Al realizar una petición GET a esta URL se obtendrá un listado de tipos de tareas dentro de la actividad {idactividad}, a las cuales el usuario con clave {idusuario} y grupo {idgrupo} puede tener acceso. A continuación se describen las URL que administra la clase RecursoResource. http://<IP_o_dominio>/users/{idusuario}/tareas/{idtipotarea}/recursos/{idrecu rso}. Al realizar una petición GET a esta URL se obtendrá el recurso con clave {idrecurso} asociado con el tipo de tarea {idtipotarea}, la cual está asignada al usuario {idusuario}. http://<IP_o_dominio>/recursos/{idrecurso}. Al realizar una petición GET a esta URL se obtendrá el recurso con clave {idrecurso}. http://<IP_o_dominio>/qrcode/{qrcode}. Al realizar una petición GET a esta URL se obtendrá el recurso con asociado al QRcode con identificador {qrcode}. 98 Capítulo 4 Análisis y diseño http://<IP_o_dominio>/recursos/atributos/{idrecurso_atributos}. Se obtendrán los atributos del recurso con clave {idrecurso_atributos}. http://<IP_o_dominio>/recursos/contexto/{etiquetas}. Al realizar una petición GET a esta URL se obtendrán los recursos asociados a las etiquetas {etiquetas}. Las siguientes URL son manejadas por la clase UsuarioResource. http://<IP_o_dominio>/users/. Con GET, obtiene todos los usuarios. http://<IP_o_dominio>/users/{idusuario}. Con GET, obtiene los detalles del usuario con clave {idusuario}. http://<IP_o_dominio>/users/qrcode/{qrcode}. Con GET, obtiene los detalles del usuario asociado al QRcode con identificador {qrcode}. http://<IP_o_dominio>/users/login/{login}/password/{password}. Utilizado con GET, obtiene los detalles del usuario con login {login} y contraseña {password}. http://<IP_o_dominio>/users/contexto/{etiquetas}. Permite obtener mediante una petición GET, un listado de los usuarios pertenecientes asociados a las etiquetas {etiquetas}. La URL que a continuación se muestra es administrada por la clase GrupoResource. http://<IP_o_dominio>/grupos/. Con una petición GET, obtiene un listado de los todos los grupos de usuario almacenados en la base de datos. 4.2.5 Diseño del modelo de la base de datos La aplicación contará con una base de datos, la cual almacenará información de los recursos, los usuarios, las tareas y las ubicaciones que servirán en los procesos del sistema. La figura 4.47 muestra el modelo de la base de datos. 99 Capítulo 4 Análisis y diseño Figura 4.47 Modelo físico de la base de datos La definición de las relaciones se describe a continuación: Gestión de tareas actividad. Almacenará las actividades, una actividad contiene 0 o más tarea. tipoTarea. Contiene la descripción de los tipos de tareas, en esta relación se establecerán las tareas que un usuario puede instanciar para ponerlas como pendientes. requerimientos. Almacenará los requisitos que necesita una tarea para llevarse a cabo (a quien está asociada, por quien es provista y el tipo que requiere). operacion. Se utiliza para realizar las relaciones entre tareas, es decir las operaciones que se realizan cuando una tarea se activa, se completa o se cancela (p. ej. cuando se completa la tarea PRESTAR se activa la tarea DEVOLUCION). instanciaTarea. Se almacenan las tareas pendientes de los usuarios y el detalle del recurso asociado. 100 Capítulo 4 Análisis y diseño Gestión de grupos y usuarios grupo. Almacena los grupos de usuarios. usuario. Almacena la información de los usuarios que tendrán acceso a los servicios de la aplicación. Gestión de recursos tipoRecurso. Almacena los tipos de recursos asociados a las tareas, por ejemplo LIBRO, COMPUTADORA, etc. Dependiendo el tipo de recurso serán los atributos que se almacenen es por ello de la existencia de la relación atributo. atributo. Almacena como los atributos referentes a un tipo de recurso (ej. para un libro ISBN, TITULO, EDITORIAL), dentro de esta relación existe un atributo llamado imprimible, el cual tendrá un valor 'S' refiriéndose a que el atributo se imprimirá en el cliente. recurso. Hace referencia a un recurso en especifico (p. ej. Libro Don Quijote), dependiendo del recurso que se tenga se tendrán los valores de sus atributos. valor. Almacena los valores de los atributos para cada recurso (ej. ISBN='SDGDGDGD', TITULO='DON QUIJITE'), etc. Gestión de ubicaciones campus. Almacena la ruta del archivo del plano del campus y la descripción del campus. edificio. Almacena la descripción del edificio, sus coordenadas dentro del campus y el identificador asociado ya sea de RFID, MAC o Cell-ID. plano. Almacena la descripción del plano, la ruta del archivo del plano y el edificio al cual pertenece. ubicacion. Como su nombre lo indica almacena las ubicaciones en las que un usuario podrá localizarse dentro del campus, estará asociado a un identificador, este identificador será el mismo que tenga una tarjeta RFID o el dispositivo WiFi o Bluetooth para poder realizar la localización. 4.2.6 Diseño de la aplicación Web para la gestión de las tareas La aplicación Web surge por la necesidad de alimentar y administrar el contenido de la base de datos. Es un sistema de consulta, eliminación, modificación y alta de tareas, recursos, ubicaciones y usuarios en la base de datos. En la figura 4.48 Se muestra el diagrama de casos de uso de la aplicación Web. 101 Capítulo 4 Análisis y diseño CU-1 Login CU-2 Administrar grupos y usuarios CU-8 Logout Usuario CU-7 Consultar ayuda CU-3 Administrar recursos CU-6 Administrar tareas de los usuarios Administrador CU-4 Administrar ubicaciones CU-5 Administrar tipos de tareas Figura 4.48 Casos de uso de la aplicación Web El sistema cuenta con 2 paquetes: mx.edu.cenidet.basedatos. Se encarga de la conexión y las operaciones sobre la base de datos. mx.edu.cenidet.xmlread. Se encarga de leer los atributos del archivo de configuración. En la figura 4.49 se muestra el diagrama de paquetes de esta aplicación. Figura 4.49 Diagrama de paquetes de la aplicación Web 4.2.6.1 Paquete mx.edu.cenidet.basedatos Este paquete contiene dos clases, las cuales se describen a continuación: Conexion. Contiene los métodos y atributos necesarios para realizar la conexión con la base de datos de tareas. OperacionesBD. Proporciona la funcionalidad para realizar operaciones de consulta, inserción y modificación en la base de datos. 102 Capítulo 4 Análisis y diseño En la figura 4.50 se visualiza mx.edu.cenidet.basedatos. el diagrama de clases del paquete Figura 4.50 Diagrama de clases paquete mx.edu.cenidet.basedatos 4.2.6.2 Paquete mx.edu.cenidet.xmlread Este paquete consta únicamente de una clase: XMLRead, la cual se encarga de leer los atributos capturados en el archivo de configuración. La figura 4.51 muestra el diagrama de clases de este paquete. Figura 4.51 Diagrama de clases paquete mx.edu.cenidet.xmlread En este capítulo se detallaron los diagramas UML correspondientes al análisis y diseño de las aplicaciones que forman parte del sistema, el cual es resultado del desarrollo de esta tesis. A continuación se describirá la implementación de las aplicaciones del sistema. 103 5 Capítulo 5 Implementación Capítulo 5 Implementación En este capítulo se presentan los detalles tecnológicos de la propuesta. Se describe la implementación de los módulos de las aplicaciones que son resultado de la tesis, del servidor de tareas y de la aplicación Web que gestiona la información de recursos, ubicaciones y tareas. Asimismo, se explica el funcionamiento en conjunto de los componentes que integran la plataforma propuesta. Capítulo 5 Implementación 5.1 Detalles tecnológicos El proyecto consta de 3 aplicaciones: el cliente montado en el dispositivo celular, el servidor que atiende las peticiones del cliente y la aplicación Web que gestiona la información de tareas, ubicaciones, usuarios y recursos. La figura 5.1 muestra los componentes que se utilizan en la implementación del proyecto. Figura 5.1 Detalles tecnológicos del proyecto Las tecnologías empleadas que muestra la figura 5.1 son descritas a continuación. Android se utiliza como plataforma para la parte cliente. La parte servidora se implementó utilizando OSGi, para ello se hace uso de las funcionalidades que ofrece Apache Felix. La identificación automática se hace mediante RFID y códigos de barras. El intercambio de información se realiza a través del protocolo HTTP. Se utiliza JSON para la serialización y deserialización de objetos. Se utiliza un enfoque REST para ofrecer los servicios Web. Para gestionar la información de recursos, ubicaciones, tareas y usuarios se utiliza una aplicación Web desarrollada en JSP, montada sobre Apache Tomcat. 5.1.1 Cliente El cliente se implementó en la plataforma Android. Se definió una interfaz para acceder a la lista de tareas pendientes. Esta lista puede filtrarse para mostrar las tareas del usuario, las tareas en una fecha específica, las tareas asociadas a objetos cercanos. Además se pueden establecer nuevas tareas como pendientes. 107 Capítulo 5 Implementación 5.1.2 Servidor Para obtener una arquitectura modular, la parte servidora se basó en OSGi. OSGi es una tecnología Java que permite entre otras cosas definir las dependencias entre distintos componentes (llamados bundles) de manera que se gestionen de forma automática. La implementación a utilizar se basa en open source específicamente Apache Felix. Para ofrecer los servicios del sistema de manera que otras aplicaciones (p.ej. el cliente Android) puedan acceder fácilmente a ellos, se ofrecen mediante un servicio Web siguiendo una aproximación REST. Para ello se utiliza Restlet. 5.1.3 Aplicación Web de gestión de tareas La aplicación Web de T-Guide surge por la necesidad de alimentar y gestionar la información de la base de datos correspondiente a usuarios, recursos, tareas y ubicaciones, necesarios para el correcto funcionamiento de la plataforma T-Guide. Está desarrollada en JSP y montada sobre el servidor de aplicaciones Apache Tomcat. 5.2 Interacción del sistema cliente-servidor A continuación se describe la implementación del proyecto basándonos en las interfaces de usuario, para ello se mostrará una figura con la interfaz y se describirá el proceso realizado. 5.2.1 Autenticación del usuario La autenticación se realiza de forma automática mediante la lectura de los atributos del archivo de configuración que se encuentra en el dispositivo celular llamado config.xml. A continuación se muestra el contenido del archivo de configuración. <?xml version="1.0" encoding="windows-1252"?> <!-Document : configuracion.xml Created on : 18 de mayo de 2009, 09:22 AM Author : Israel Arjona Vizcaino Description: Purpose of the document follows. --> <root> <servidor>192.168.200.21</servidor> <puerto>8101</puerto> <imagenes>/WebTareas/img/</imagenes> <planos>/WebTareas/planos/</planos> <barras>/WebTareas/barras/</barras> <fotos>/WebTareas/fotos/</fotos> <user_id>2</user_id> <servidor_rfid>192.168.200.21</servidor_rfid> <puerto_rfid>4444</puerto_rfid> 108 Capítulo 5 Implementación </root> La autenticación se realiza mediante el atributo user_id. Si se autentifica correctamente, se mostrará la pantalla inicial del sistema (ver figura 5.2). Figura 5.2 Pantalla inicial del sistema Si no se puede realizar correctamente la autenticación del usuario se muestra un mensaje indicándole que el usuario es erróneo (ver figura 5.3). Figura 5.3 Pantalla de datos erróneos El proceso que se sigue para llevar a cabo la autenticación del usuario se muestra en el diagrama de la figura 5.4. 109 Capítulo 5 Implementación BD tareas Inicio Hacer una petición GET al servicio Web ofrecido por Restlet enviando el identificador del usuario Obtener del identificador del usuario Acceder al sistema Si Se recibe objeto El servidor valida el identificador del usuario consultando la BD Se envía el objeto de tipo usuario encontrado No Mostrar pantalla de datos erroneos Fin Figura 5.4 Diagrama de flujo del proceso de autenticación 5.2.2 Consulta de tareas pendientes La figura 5.5 muestra la pantalla de ―Tareas Pendientes‖, en esta pantalla se muestra una lista elegible de tareas pendientes para el usuario, las cuales pueden ser filtradas por contexto o por fecha. Figura 5.5 Pantalla de Tareas Pendientes 110 Capítulo 5 Implementación Cuando el usuario da clic sobre una tarea se mostrará la pantalla de detalles de tarea, la cual se visualiza en la figura 5.6, en donde se podrán capturar las incidencias de la tarea, modificar la fecha y hora de la tarea, ver los detalles del objeto asociado a la tarea, cancelar y completar la tarea. Figura 5.6 Pantalla de detalles de tarea El proceso que se sigue para la consulta de tareas se muestra en el diagrama de flujo de la figura 5.7. BD tareas Inicio Hacer una petición GET al servicio Web ofrecido por Restlet enviando el identificador del usuario El servidor consulta las tareas pendientes pertenecientes al usuario en la BD Acceder al sistema Fin El servidor envía el listado en forma de objetos serializados Si Mostrar listado de tareas pendientes Se reciben objetos? No Figura 5.7 Diagrama de flujo del proceso de consulta de tareas pendientes 5.2.3 Completar/Cancelar una tarea La figura 5.8 muestra la pantalla de ―Detalle de tareas‖, es en esta pantalla donde el usuario realiza las operaciones de cancelar o completar una tarea. 111 Capítulo 5 Implementación Figura 5.8 Pantalla de detalles de tarea Al dar clic en cualquier operación completar/cancelar el estado de la tarea pasar á de activo a completado o cancelado según se haya elegido y se mostrará la pantalla de tareas pendientes (ver figura 5.9). Figura 5.9 Pantalla de listado de tareas con mensaje de tarea completada Si la operación no se realiza correctamente se mostrará el mensaje que aparece en la figura 5.10. Figura 5.10 Error en la operación 112 Capítulo 5 Implementación El proceso que se sigue para completar o cancelar tareas se muestra en el diagrama de flujo de la figura 5.11. BD tareas Elegir completar o cancelar Inicio Enviar petición POST al servidor añadiendo el identificador de la tarea y del usuario Mostrar pantalla de tareas pendientes Fin Actualizar el estado de la tarea del usuario a completo o cancelado en la BD Si Se pudo actualizar? Mostrar mensaje de alerta No Figura 5.11 Diagrama de flujo del proceso de completar/cancelar una tarea 5.2.4 Nueva tarea (establecer una tarea como pendiente) Para dar de alta una nueva tarea se realiza lo siguiente: Elegir ―Nueva tarea‖ dentro del menú de la pantalla de ―Tareas pendientes‖. Elegir la actividad a la que pertenece la tarea. Elegir el tipo de tarea que se dará de alta. Seleccionar el objeto por código de barras, introducir el identificador manualmente o verificar el contexto en busca de objetos cercanos. 5. Establecer la fecha y hora de la tarea. 6. Elegir del menú la opción ―Guardar‖. 1. 2. 3. 4. La figura 5.12 muestra las pantallas para dar de alta una nueva tarea. 113 Capítulo 5 Implementación Figura 5.12 Pantallas involucradas en el proceso de alta de tarea Si la operación no se realiza correctamente se mostrará el mensaje que aparece en la figura 5.10. El proceso que se sigue para dar de alta una nueva tarea se muestra en el diagrama de flujo de la figura 5.13. A Inicio El servidor realiza un filtrado de las los tipos de tarea dentro de la actividad elegido a los que tiene acceso un usuario en la BD BD tareas Enviar petición GET al servidor añadiendo el identificador del usuario Elegir nueva tarea Enviar petición GET al servidor añadiendo el identificador del usuario y el identificador de la actividad B 114 Elegir actividad El servidor realiza un filtrado de las actividades a las que tiene acceso un usuario en la BD El cliente recibe la información en forma de objetos serializados y muestra un listado de actividades Capítulo 5 Implementación B El cliente recibe la información en forma de objetos serializados y muestra un listado de tipos de tarea Elegir tipo de tarea Elegir por barras El cliente recibe la información en forma de un objetos serializado y muestra la información del recurso El servidor realiza la consulta del recurso en la BD No Leer identificador de recurso A Si Por barras Enviar petición GET al servidor añadiendo el identificador del recurso Mostrar cámara fotográfica Capturar imagen Si Pudo decodificar? Decodificar código de barras No Enviar petición POST al servidor añadiendo el identificador del recurso, el tipo de tarea, el identificador del usuario y la fecha Elegir guardar Se recibió exito No Mostrar mensaje de error Si El servidor inserta un nuevo registro de en la tabla InstanciaTarea en la BD El cliente recibe la respuesta del servidor por medio de un objeto serializado Mostrar mensaje de tarea almancenada Fin A Figura 5.13 Diagrama de flujo de alta de nueva tarea 5.2.5 Tarea de guiado por RFID Para dar de alta la tarea de guiado se realiza lo siguiente: 1. 2. 3. 4. 5. 6. Elegir ―Nueva tarea‖ dentro del menú de la pantalla de ―Tareas pendientes‖. Elegir la actividad de guiado. Elegir el tipo de tarea guiado por RFID. Se obtiene automáticamente la posición del dispositivo. Elegir el destino al que se desea el guiado. Se inicia el proceso de guiado, que culmina una vez que se ha llegado al destino solicitado. El proceso de guiado se describe en el diagrama de flujo de la figura 5.14. 115 Capítulo 5 Implementación Obtener tarjetas RFID en cercanía Inicio Enviar petición GET al servidor el identificador RFID obtenido El servidor consulta las la ubicación que tiene asociado el RFID BD tareas El servidor envía la ubicación encontrada en forma serializada No Se reciben objetos? Seleccionar destino El destino es igual a la posición actual Enviar mensaje de error Si Terminar la tarea de guiado Fin No Mostrar al usuario su posición actual y la posición del destino elegido Obtener tarjetas RFID en cercanía El servidor envía la ubicación encontrada en forma serializada Enviar petición GET al servidor el identificador RFID obtenido El servidor consulta las la ubicación que tiene asociado el RFID Figura 5.14 Diagrama de flujo del proceso de guiado por RFID La figura 5.15 muestra las pantallas que involucra el proceso de guiado mediante RFID. 116 Capítulo 5 Implementación Figura 5.15 Pantallas involucradas en el proceso de guiado por RFID 5.2.6 Tarea de guiado por QRCodes Para dar de alta la tarea de guiado se realiza lo siguiente: 1. 2. 3. 4. 5. 6. 7. 8. Elegir ―Nueva tarea‖ dentro del menú de la pantalla de ―Tareas pendientes‖. Elegir la actividad de guiado. Elegir el tipo de tarea guiado por QRCodes. Se inicia la cámara y el usuario captura la fotografía del código de barras. Se decodifica la fotografía. Se obtiene la posición actual del dispositivo. Elegir el destino al que se desea el guiado. Se inicia el proceso de guiado, que culmina una vez que se ha llegado al destino solicitado. El proceso de guiado por QRCodes se describe en el diagrama de flujo de la figura 5.16. 117 Capítulo 5 Implementación Inicio No A Iniciar la cámara Capturar la fotografía con el código de barras Se decodificó? Decodificar el código de barras Si El servidor consulta las la ubicación con el identificador asociado BD tareas El servidor envía la ubicación encontrada en forma serializada No Si Se reciben objetos? Seleccionar destino El destino es igual a la posición actual A Enviar mensaje de error Si Terminar la tarea de guiado Fin No Mostrar al usuario su posición actual y la posición del destino elegido No Capturar fotografía con código de barras Decodificar código de barras Se decidificó? Si El servidor envía la ubicación encontrada en forma serializada El servidor consulta las la ubicación que tiene asociado el identificador Enviar petición GET al servidor con el identificador Figura 5.16 Diagrama de flujo del proceso de guiado por QRCodes La figura 5.17 muestra las pantallas que involucra el proceso de guiado mediante QRCodes. 118 Capítulo 5 Implementación Figura 5.17 Pantallas involucradas en el proceso de guiado por QRCodes 5.3 Interacción de la aplicación Web La aplicación Web está desarrollada sobre JSP y montada en el servidor de aplicaciones Apache Tomcat. Consta de los siguientes módulos: Administración de usuarios. Administración de recursos. Administración de ubicaciones. Administración de tareas. Administración de tareas de los usuarios. Esta aplicación puede ser iniciada únicamente por el administrador. En la figura 5.18 se muestra la pantalla principal de la aplicación. 119 Capítulo 5 Implementación Figura 5.18 Pantalla principal de la aplicación Web 5.3.1 Administración de usuarios Dentro de este módulo se pueden realizar consultas, modificaciones e inserciones de grupos y usuarios. En la figura 5.19, se presentan algunas interfaces que corresponden al módulo de administración de usuarios. 120 Capítulo 5 Implementación Figura 5.19 Pantallas del módulo de administración de usuarios 5.3.2 Administración de recursos Dentro de este módulo se pueden realizar consultas, modificaciones e inserciones de recursos y tipos de recursos, un tipo de recurso hace referencia a una clase que engloba ciertos objetos con ciertos atributos, por ejemplo el tipo de recurso ―Libro‖ tiene los atributos ―ISBN‖, ―titulo‖, entre otros. En la figura 5.20, se presentan algunas interfaces que corresponden al módulo de administración de recursos. 121 Capítulo 5 Implementación Figura 5.20 Pantallas del módulo de administración de recursos 5.3.3 Administración de ubicaciones Dentro de este módulo se pueden realizar consultas, modificaciones e inserciones de campus, planos, edificios y ubicaciones. En la figura 5.21, se muestra la pantalla de alta de campus. En esta pantalla se captura la descripción y la imagen que corresponde al plano del campus. 122 Capítulo 5 Implementación Figura 5.21 Pantalla de alta de campus La figura 5.22 muestra la pantalla de alta de ubicaciones. En esta pantalla se captura el identificador de la ubicación, que puede ser RFID, o una dirección MAC de un dispositivo WiFi o Bluetooth, se captura también la descripción y se da clic sobre la imagen para almacenar la ubicación. 123 Capítulo 5 Implementación Figura 5.22 Pantalla de captura de ubicaciones 5.3.4 Administración de tareas Dentro de este módulo se pueden realizar consultas, modificaciones e inserciones de tareas que estarán disponibles para los usuarios. En la figura 5.23, se muestra la pantalla de alta de tarea. En esta pantalla se captura la descripción de la tarea, se establecen los permisos y el tipo de objeto que se requiere (recurso, ubicación o usuario), y las operaciones que se realizan al activar, completar o cancelar la tarea. 124 Capítulo 5 Implementación Figura 5.23 Pantalla de alta de tareas 5.3.5 Administración de tareas de los usuarios Dentro de este módulo se pueden realizar consultas, modificaciones e inserciones de tareas pendientes de los usuarios. En la figura 5.24, se muestra la pantalla de activación de tarea del usuario. En esta pantalla se captura la actividad, el tipo de tarea, la fecha y hora de la tarea, y el objeto que se asocia a la tarea. Figura 5.24 Pantalla de activación de tarea de usuarios En este capítulo se mostraron los detalles tecnológicos y las interfaces de usuario de las aplicaciones desarrolladas (el cliente en el dispositivo móvil y la aplicación Web para la administración de la información de la base de datos), las cuales permiten el correcto funcionamiento del proyecto. A continuación se detallan las pruebas realizadas para validar el buen funcionamiento de las aplicaciones que son resultado del proyecto de tesis. 125 6 Capítulo 6 Pruebas Capítulo 6 Pruebas En este capítulo se muestran los resultados obtenidos en cada caso de prueba realizado. Capítulo 6 Pruebas El plan de pruebas se titula T-GUIDE y se encuentra en el anexo B. Se realizó siguiendo el estándar 829 de la IEEE [STD829]. La siguiente lista define las características a ser probadas: Configuración y conexiones. Se verificó la correcta configuración de los dispositivos utilizados por el cliente: lector RFID; la conexión entre el cliente y el servidor y la conexión de la base de datos con el servidor y la aplicación Web. Auto-identificación. Define los casos de prueba para la identificación automática de recursos físicos en cercanía del dispositivo móvil, utilizando como tecnologías de Auto-ID el código de barras y tarjetas RFID. Localización y guiado del dispositivo móvil. Define los casos de prueba para la localización por medio de RFID de un dispositivo móvil. Además se definen los casos de prueba para la realización de la tarea de guiado, la cual se refiere a guiar a un usuario de una localización origen obtenida automáticamente a una destino elegida por el usuario. Administración de tareas. Define los casos de prueba para el manejo de tareas, la correcta consulta y almacenamiento de la información de estas en la base de datos y la obtención de resultados a través del protocolo HTTP. Administración de la información de la base de datos. Define los casos de prueba para la gestión de la información de la base de datos, como es la consulta, modificación, eliminación y actualización. A continuación se describen los resultados de las pruebas. 6.1 Pruebas de configuración y conexiones Tabla 13 Caso de prueba T-Guide-001-001 Caso de prueba: T-Guide-001-001 Configuración y conexión del cliente móvil con el lector RFID DESCRIPCIÓN: Permitir al dispositivo celular que pueda acceder a la conexión con el lector de tarjetas RFID. La prueba se realizó utilizando el intermediario entre el lector RFID y el dispositivo celular. Estando conectado el lector RFID, se inició el intermediario y la aplicación en el dispositivo celular. En el listado de tareas se eligió la opción contexto, para realizar una conexión con el lector RFID. 129 Capítulo 6 Pruebas Resultado: OK. Observaciones: La conexión entre el lector y el dispositivo celular se realizó exitosamente haciendo uso del intermediario. Responsable de la prueba: Israel Arjona Vizcaíno Cargo: Autor Tabla 14 Caso de prueba T-Guide-001-002 Caso de prueba: T-Guide-001-002 Configuración y conexión del servidor de tareas con el dispositivo móvil DESCRIPCIÓN: Permitir al dispositivo celular que pueda acceder al servicio Web ofrecido por el servidor de tareas. La prueba se realizó teniendo iniciado Apache Felix y el bundle del servidor de tareas activo, se realizó una petición GET para validar al usuario y obtener sus datos. 130 Capítulo 6 Pruebas Resultado: OK. Observaciones: La conexión entre el dispositivo celular y el servidor se realizó exitosamente, la configuración se hizo correctamente mediante el archivo de configuración. La información tardó alrededor de un segundo en llegar al dispositivo celular. Responsable de la prueba: Israel Arjona Vizcaíno Cargo: Autor Tabla 15 Caso de prueba T-Guide-001-003 Caso de prueba: T-Guide-001-003 Configuración y conexión del servidor de tareas con la base de datos DESCRIPCIÓN: Verificar que el archivo de configuración del servidor de tareas esté correctamente formado y sea interpretado correctamente. Asimismo, verificar que el servidor de tareas se conecte correctamente con la base de datos. La prueba se realizará con el servidor de tareas en funcionamiento y se realizará una petición GET desde un navegador Web, se solicitarán las tareas de un usuario. 131 Capítulo 6 Pruebas Resultado: OK. Observaciones: El servidor de tareas accedió exitosamente a la información de la base de datos y se obtuvieron de forma correcta las tareas activas de un usuario. Responsable de la prueba: Israel Arjona Vizcaíno Cargo: Autor 6.2 Pruebas de auto-identificación Tabla 16 Caso de prueba T-Guide-002-001 Caso de prueba: T-Guide-002-001 Captura y decodificación del código de barras DESCRIPCIÓN: Verificar que la imagen capturada, mediante la cámara inmersa en el dispositivo móvil, que contenga un código de barras, se decodifique de una forma correcta y se obtenga el identificador adecuado. La prueba se realizará con el dispositivo celular, se capturará una imagen y se obtendrá su identificador. 132 Capítulo 6 Pruebas Resultado: OK. Observaciones: Se decodificó correctamente el código de barras en la imagen. Cabe destacar que para que se lleve a cabo la decodificación debe haber bastante iluminación. Responsable de la prueba: Israel Arjona Vizcaíno Cargo: Autor Tabla 17 Caso de prueba T-Guide-002-002 Caso de prueba: T-Guide-002-002 Obtención de las tarjetas RFID en cercanía DESCRIPCIÓN: Comprobar que se obtengan correctamente las tarjetas en cercanía realizando la comunicación entre el dispositivo celular y el lector RFID. Para ello se iniciará el intermediario que realiza la comunicación entre los dispositivos y se comprobará mediante el listado de tareas relacionadas con objetos cercanos. El proceso comenzará en el celular y se acercará una tarjeta RFID al lector. Se requiere que el servidor esté activo. 133 Capítulo 6 Pruebas Resultado: OK. La tarjeta RFID obtenida tiene como identificador e070024a3848300 Observaciones: Se obtuvieron correctamente las tarjetas RFID en cercanía y el filtrado de las tareas conforme al contexto se hizo de manera exitosa. Responsable de la prueba: Israel Arjona Vizcaíno Cargo: Autor 6.3 Pruebas de localización y guiado del dispositivo móvil Tabla 18 Caso de prueba T-Guide-003-001 Caso de prueba: T-Guide-003-001 Localización del dispositivo móvil por RFID DESCRIPCIÓN: Verificar que se obtenga la ubicación del dispositivo móvil mediante la lectura de tarjetas RFID en cercanía. Para ello se iniciará el intermediario que realiza la comunicación entre los dispositivos. El proceso comenzará en el celular y se acercará una tarjeta RFID al lector. El servidor deberá estar activo. 134 Capítulo 6 Pruebas Resultado: OK. El RFID obtenido corresponde a la ubicación ―Sistemas Distribuidos‖ Observaciones: La posición se obtuvo exitosamente y con gran precisión. Responsable de la prueba: Israel Arjona Vizcaíno Cargo: Autor Tabla 19 Caso de prueba T-Guide-003-002 Caso de prueba: T-Guide-003-002 Localización del dispositivo móvil por QRCodes DESCRIPCIÓN: Comprobar que se obtenga la ubicación del dispositivo móvil mediante la captura y decodificación de una imagen con un código de barras. El servidor de tareas deberá estar activo. 135 Capítulo 6 Pruebas Resultado: OK. El código de barras decodificado corresponde a la ubicación ―Mantenimiento‖ Observaciones: La posición se obtuvo exitosamente y con gran precisión. Responsable de la prueba: Israel Arjona Vizcaíno Cargo: Autor Tabla 20 Caso de prueba T-Guide-003-003 Caso de prueba: T-Guide-003-003 Guiado del dispositivo móvil DESCRIPCIÓN: Verificar que el proceso de guiado, por RFID o por QRCodes desde su posición actual al destino se lleve a cabo de una forma precisa y correcta, actualizando constantemente la posición utilizando del dispositivo. El proceso iniciará desde el dispositivo cliente y el servidor de tareas tendrá que estar activo. 136 Capítulo 6 Pruebas Resultado: OK. El origen ―Sistemas Distribuidos‖ y el destino ―Documentación‖ están en planos distintos Se lee otra posición que corresponde a ―Mantenimiento‖ Se indica al usuario que vaya a las escaleras 137 Capítulo 6 Pruebas Se actualiza la posición del usuario Se lee otra posición y se actualiza Se llega al destino solicitado (véase que el plano es distinto) Observaciones: El proceso de guiado se realiza de forma exitosa actualizando constantemente la posición del usuario. Responsable de la prueba: Israel Arjona Vizcaíno Cargo: Autor 6.4 Pruebas de administración de tareas Tabla 21 Caso de prueba T-Guide-004-001 Caso de prueba: T-Guide-004-001 Invocación del servicio Web para la obtención de un listado de tareas pendientes DESCRIPCIÓN: Comprobar que se obtenga una lista de las tareas pendientes de un usuario en especifico, a través de la conexión entre el dispositivo celular con el servidor de tareas mediante una petición HTTP GET. Para llevar a cabo la prueba se iniciará el Apache Felix con el servidor de tareas activo. 138 Capítulo 6 Pruebas Resultado: OK. El listado de tareas corresponde con lo obtenido mediante la consulta SQL Observaciones: El listado de tareas obtenido del usuario es correcto, por lo tanto el proceso es exitoso. Responsable de la prueba: Israel Arjona Vizcaíno Cargo: Autor Tabla 22 Caso de prueba T-Guide-004-002 Caso de prueba: T-Guide-004-002 Invocación del servicio Web para completar/cancelar una tarea DESCRIPCIÓN: Verificar que se desactive correctamente una tarea pendiente, ya sea cancelándola o completándola, a través de la conexión entre el dispositivo celular mediante una petición HTTP GET con el servidor de tareas, el cual ofrece el servicio Web. Para llevar a cabo la prueba se iniciará el Apache Felix con el servidor de tareas activo. 139 Capítulo 6 Pruebas Resultado: OK. La base de datos antes y después de completar la tarea, se observa que la tarea ―Devolver Libro‖ se activa después de completar la tarea ―Prestar Libro‖. La base de datos antes y después de cancelar la tarea, se observa que ya no aparecen tareas pendientes y el estado de la tarea devolver libro se actualiza a ―X‖ Observaciones: El proceso de completar y cancelar una tarea se llevó a cabo de forma exitosa, además se pudo comprobar que las dependencias establecidas entre tareas se realizan correctamente. Responsable de la prueba: Israel Arjona Vizcaíno Cargo: Autor Tabla 23 Caso de prueba T-Guide-004-003 Caso de prueba: T-Guide-004-003 Invocación del servicio Web para el almacenamiento de una nueva tarea del usuario DESCRIPCIÓN: Comprobar que se establezca correctamente una nueva tarea como pendiente para el usuario que la crea a través de una petición POST al servidor de tareas, el cual ofrece el servicio Web. Para llevar a cabo la prueba se iniciará el Apache Felix con el servidor de tareas activo. 140 Capítulo 6 Pruebas Resultado: OK. Se elige ―Nueva Tarea‖ Se listan las actividades Se lee el objeto ―Mantenimiento‖ Se asocia el objeto Se listan las tareas dentro de la actividad Se establecen la fecha y la hora Se buscarán objetos cercanos Se almacena la tarea Observaciones: El proceso de establecer una tarea como pendiente se llevo a cabo de forma exitosa. Responsable de la prueba: Israel Arjona Vizcaíno 141 Cargo: Autor Capítulo 6 Pruebas 6.5 Pruebas de administración de la información de la base de d a to s Tabla 24 Caso de prueba T-Guide-005-001 Caso de prueba: T-Guide-005-001 Administración de la información de los usuarios DESCRIPCIÓN: Comprobar que el módulo de administración de usuarios, en donde se consulta, se modifican, se eliminan y se insertan grupos y usuarios se lleve a cabo de forma exitosa. Para llevar a cabo la prueba se pondrá en marcha el servidor de aplicaciones Apache Tomcat y se accederá a la aplicación Web de tareas mediante un navegador Web. Resultado: OK. Se realiza una consulta general Se listan los grupos, los cuales corresponden a los almacenados en la base de datos Se da de alta un nuevo grupo Se almacena el nuevo registro en la base de datos y se muestra el listado Se eliminará el grupo 142 Capítulo 6 Pruebas El grupo se elimina de la base de datos y desaparece del listado Se buscarán todos los usuarios en la base de datos Se listan los usuarios, los cuales corresponden a los almacenados en la base de datos Se dará de alta un nuevo usuario Se almacena el nuevo registro en la base de datos y se muestra el listado 143 Capítulo 6 Pruebas Se eliminará el usuario El usuario se elimina de la base de datos y desaparece del listado Observaciones: La administración de los grupos y usuarios hecha a través de la aplicación Web, en donde se insertan, modifican y eliminan grupos y usuarios se llevó a cabo de forma exitosa, manteniendo siempre la integridad de la información. Responsable de la prueba: Israel Arjona Vizcaíno Cargo: Autor Tabla 25 Caso de prueba T-Guide-005-002 Caso de prueba: T-Guide-005-002 Administración de la información de los recursos DESCRIPCIÓN: Verificar que el módulo de administración de recursos, en donde se consulta, se modifican, se eliminan y se insertan recursos y tipos de recursos se lleve a cabo de forma exitosa. Para llevar a cabo la prueba se pondrá en marcha el servidor de aplicaciones Apache Tomcat y se accederá a la aplicación Web de tareas mediante un navegador Web. 144 Capítulo 6 Pruebas Resultado: OK. Se realiza una consulta general Se listan los tipos de recursos, los cuales corresponden a los almacenados en la base de datos Se da de alta un nuevo grupo Se almacena el nuevo registro en la base de datos y se muestra el listado Se agregarán atributos al tipo de recurso Se agregan los atributos al tipo de recurso Se listan los atributos del tipo de recurso Se realiza una consulta general Se listan los tipos de recursos, los cuales corresponden a los almacenados en la base de datos 145 Capítulo 6 Pruebas Se dará de alta un nuevo recurso Se almacena el nuevo registro en la base de datos y se muestra el listado Se eliminará el recurso El recurso se elimina de la base de datos y desaparece del listado Observaciones: La administración de los recursos hecha a través de la aplicación Web, en donde se insertan, modifican y eliminan recursos y tipos de recursos se llevó a cabo de forma exitosa, manteniendo siempre la integridad de la información. Responsable de la prueba: Israel Arjona Vizcaíno 146 Cargo: Autor Capítulo 6 Pruebas Tabla 26 Caso de prueba T-Guide-005-003 Caso de prueba: T-Guide-005-003 Administración de la información de las ubicaciones DESCRIPCIÓN: Comprobar que el módulo de administración de ubicaciones, en donde se consulta, se modifican, se eliminan y se insertan campus, edificios, planos y ubicaciones se realice de forma exitosa. Para llevar a cabo la prueba se pondrá en marcha el servidor de aplicaciones Apache Tomcat y se accederá a la aplicación Web de tareas mediante un navegador Web. Resultado: OK. Se realiza una consulta general Se listan los campus, los cuales corresponden a los almacenados en la base de datos Se da de alta un nuevo campus Se almacena el nuevo registro en la base de datos y se muestra el listado Se eliminará el campus 147 Capítulo 6 Pruebas El campus se elimina de la base de datos y desaparece del listado Se realiza una consulta de edificios con RFID en el campus Se listan los edificios, los cuales corresponden a los almacenados en la base de datos Se capturará un nuevo edificio Se almacena el nuevo registro en la base de datos y se muestra el listado 148 Capítulo 6 Pruebas Se eliminará el edificio El edificio desaparece del listado Se realiza una consulta general de planos Se listan los planos, los cuales corresponden a los almacenados en la base de datos Se capturará un nuevo plano Se almacena el nuevo registro en la base de datos y se muestra el listado 149 Capítulo 6 Pruebas Se eliminará el plano El plano desaparece del listado Se realiza una de ubicaciones con RFID en el plano Se listan las ubicaciones, los cuales corresponden a los almacenados en la base de datos 150 Capítulo 6 Pruebas Se capturará una nueva ubicación Se almacena el nuevo registro en la base de datos y se muestra el listado Se eliminará la ubicación La ubicación desaparece del listado Observaciones: La administración de las ubicaciones hecha a través de la aplicación Web, en donde se insertan, modifican y eliminan campus, edificios, planos y ubicaciones se llevó a cabo de forma exitosa, manteniendo siempre la integridad de la información. Responsable de la prueba: Israel Arjona Vizcaíno 151 Cargo: Autor Capítulo 6 Pruebas Tabla 27 Caso de prueba T-Guide-005-004 Caso de prueba: T-Guide-005-004 Administración de la información de las tareas DESCRIPCIÓN: Verificar que el módulo de administración de tareas, en donde se consulta, se modifica, se eliminan y se insertan actividades y tareas se realice de forma exitosa. Para llevar a cabo la prueba se pondrá en marcha el servidor de aplicaciones Apache Tomcat y se accederá a la aplicación Web de tareas mediante un navegador Web. Resultado: OK. Se realiza una consulta general Se listan las actividades, las cuales corresponden a las almacenadas en la base de datos Se da de alta una nueva actividad Se almacena el nuevo registro en la base de datos y se muestra el listado Se eliminará la actividad La actividad se elimina de la base de datos y desaparece del listado 152 Capítulo 6 Pruebas Se realiza una consulta de edificios con RFID en el campus Se listan las tareas, las cuales corresponden a las almacenadas en la base de datos Se capturará una nueva tarea Se almacena el nuevo registro en la base de datos y se muestra el listado 153 Capítulo 6 Pruebas Se eliminará la tarea El edificio desaparece del listado Observaciones: La administración de las tareas hecha a través de la aplicación Web, en donde se insertan, modifican y eliminan actividades y tareas se llevó a cabo de forma exitosa, manteniendo siempre la integridad de la información. Responsable de la prueba: Israel Arjona Vizcaíno Cargo: Autor Tabla 28 Caso de prueba T-Guide-005-005 Caso de prueba: T-Guide-005-005 Administración de la información de las tareas de los usuarios DESCRIPCIÓN: Verificar que el módulo de administración de tareas de tareas de los usuarios, en donde se consulta, se modifican, se eliminan y se insertan tareas se realice de forma exitosa. Para llevar a cabo la prueba se pondrá en marcha el servidor de aplicaciones Apache Tomcat y se accederá a la aplicación Web de tareas mediante un navegador Web. 154 Capítulo 6 Pruebas Resultado: OK. Se realiza una consulta de tareas de un usuario Se listan las actividades, las cuales corresponden a las almacenadas en la base de datos Se da de alta una nueva tarea para el usuario Se almacena el nuevo registro en la base de datos y se muestra el listado Se eliminará la tarea La tarea se elimina de la base de datos y desaparece del listado 155 Capítulo 6 Pruebas Observaciones: La administración de las tareas de los usuarios hecha a través de la aplicación Web, en donde se insertan, modifican y eliminan tareas de los usuarios se llevó a cabo de forma exitosa, manteniendo siempre la integridad de la información. Responsable de la prueba: Israel Arjona Vizcaíno Cargo: Autor Los casos de prueba presentados validaron la funcionalidad de los módulos que conforman la arquitectura de T-Guide. En la Tabla 29 se muestra un resumen de los grupos de casos de prueba con una conclusión sobre la operación y comportamiento de la plataforma para cada grupo. Tabla 29 Resumen de los casos de prueba de la plataforma propuesta Grupo Descripción Resultado T-Guide-001 Pruebas de configuración y conexiones Exitoso T-Guide-002 Pruebas de autoidentificación Exitoso T-Guide-003 Pruebas de localización y guiado del dispositivo móvil Exitoso T-Guide-004 Pruebas de administración de tareas Exitoso T-Guide-005 Pruebas de administración de la información de la base de datos Exitoso 156 Conclusión La conexión entre dispositivo móvil con el lector de tarjetas, entre el servidor y la base de datos y entre el cliente y el servidor se realizó de manera exitosa. Se obtuvieron correctamente las tarjetas RFID y se tomó y decodificó la fotografía con un código de barras. La fotografía que se tome no debe estar borrosa. Se posicionó con precisión al dispositivo utilizando QRCodes y RFID, y el proceso de guiado se realiza de forma exitosa actualizando correctamente la posición del usuario. Se administran de manera correcta las operaciones sobre las tareas de los usuarios desde el dispositivo móvil. La información de la base de datos se administra de manera exitosa desde la aplicación Web, manteniendo siempre la integridad de la información. 7 Capítulo 7 Conclusiones Capítulo 7 Conclusiones En este capítulo se muestran las conclusiones aportaciones, trabajos futuros, publicaciones que se obtuvieron con el presente trabajo de tesis. Capítulo 7 Conclusiones 7.1 Conclusiones El presente trabajo ha introducido una metodología para localizar dispositivos celulares en interiores y se ha comprobado que es posible desarrollar un sistema que asocie objetos del mundo real a actividades mediante la asociación de tarjetas RFID a objetos, háblese de lugares, personas o recursos, que le servirán de recordatorios para realizar sus tareas del día a día. A través de la metodología propuesta es posible localizar un dispositivo celular utilizando RFID y QRCodes en interiores con gran precisión. El resultado de este proyecto son tres aplicaciones: el cliente sobre Android, el servidor OSGi y una aplicación Web para la gestión de las tareas, de las ubicaciones, las tarjetas RFID y las direcciones MAC de los dispositivos de referencia. Hasta ahora, este proyecto ha sido probado únicamente para la localización mediante RFID, sin embargo, la técnica utilizada para RFID es válida para Bluetooth, WiFi y Cell-ID. Se logró implementar y probar satisfactoriamente el proyecto en el dispositivo celular HTC G2 con sistema operativo Android y se comprobó la exactitud de la localización con RFID y QRCodes. Debido a que el dispositivo celular no cuenta con lector RFID se realizó una emulación de las lecturas RFID, pasando las lecturas a través de un socket entre el lector RFID conectado mediante USB a una laptop y el dispositivo celular. Se desarrolló un servidor que atiende las peticiones de los clientes a través de un servicio Web, el cual es independiente del tipo de dispositivo celular y su sistema operativo, lo que hace que el proyecto pueda crecer hacia otras plataformas cliente. A continuación se detallan las principales aportaciones del proyecto. 7.2 Aportaciones Este proyecto tiene varias contribuciones, entre las que destacan: i. ii. La vinculación de objetos del mundo real con las tareas mediante la autoidentificación, ya sea por código de barras (mediante QRCodes) o por RFID, haciendo uso de las funcionalidades de un dispositivo celular. La localización de un dispositivo utilizando varias técnicas de posicionamiento, con tecnologías incluidas en la mayoría de los dispositivos celulares nuevos, con esto se abre un gran abanico de posibilidades de localizar a un dispositivo y cuando alguna de las tecnologías no se encuentre disponible se puede verificar que alguna otra 159 Capítulo 7 Conclusiones iii. iv. esté disponible y con ello poder localizar al dispositivo en cualquier lugar y en cualquier momento, en interiores y en exteriores. La metodología utilizada para la localización ha sido probada únicamente en RFID y QRCodes, sin embargo ésta técnica es válida y aceptable para la localización en Bluetooth, WiFi y Cell-ID, la base de datos y la aplicación Web están preparadas para aceptar estas modificaciones. La precisión que se logra en el posicionamiento del dispositivo que es menor a 2 metros en interiores. 7.3 Trabajos futuros Algunos de los trabajos futuros que pueden depender del desarrollo de esta tesis son los siguientes: Utilizando la metodología desarrollada se pueden ampliar las capacidades de localización del dispositivo celular a otras tecnologías como Bluetooth, WiFi y Cell-ID, cabe destacar que la aplicación Web que administra la información de la base de datos no tiene que ser modificada, está preparada para aceptar estos cambios. Se pueden desarrollar clientes en diversas plataformas como J2ME y no sólo en Android, el servidor que atiende las peticiones no tendría que sufrir modificación alguna. Se puede extender la auto-identificación a NFC 3, debido a que muchos celulares actuales ya contarán con esta tecnología. Se puede incluir un guiado en exteriores, que haga uso del GPS y las APIs de Google Maps. Se pueden investigar técnicas de posicionamiento como potencia de señal recibida en WiFi e incluirlas al proyecto. Se puede desarrollar un módulo de diseño de planos para que se adapten perfectamente a la pantalla de los dispositivos. Se puede hacer uso de las capacidades de los nuevos dispositivos celulares los cuales cuentan con brújula para hacer un guiado indicándole hacia dónde dirigirse. 3 Near Field Communication (NFC) es un protocolo basado en una interfaz inalámbrica. La comunicación se realiza entre dos entidades (peer-to-peer). El protocolo establece conexión wireless entre las aplicaciones de la red y los dispositivos electrónicos. 160 Capítulo 7 Conclusiones 7.4 Publicaciones Se logró la publicación de un artículo en el VII Congreso Internacional sobre Innovación y Desarrollo Tecnológico con ISBN: ISBN978-607-95255-0-7. T-Guide: sistema contextual de guiado y administración de actividades mediante teléfonos celulares con sistema operativo Android y tecnología RFID. Se obtuvo el 2º lugar en el XIV Concurso de creatividad de los Institutos Tecnológicos en su fase local. 161 Anexos Anexos Anexo A Definición de la interfaz de usuario Anexo A Definición de la interfaz de usuario 1. captura_barras.xml <?xml version="1.0" encoding="utf-8"?> <TableLayout android:id="@+id/widget0" android:layout_width="fill_parent" android:layout_height="wrap_content" xmlns:android="http://schemas.android.com/apk/res/android"> <TableRow android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center"> <TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/myTableLayout" android:layout_width="fill_parent" android:layout_height="wrap_content" android:animation="@anim/layout_animation_row_left_slide"> <TableRow android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginTop="15px" android:gravity="center"> <EditText android:id="@+id/etCapturaBarras" android:text="" android:textSize="18sp" android:typeface="sans" android:textStyle="bold" android:layout_marginLeft="5px" android:maxWidth="100px" android:width="100px" android:height="50px" android:maxHeight="50px"> </EditText> <Button android:id="@+id/btCapturaBarras" android:width="130px" android:layout_height="wrap_content" android:text="Por barras" android:textSize="14sp"> </Button> </TableRow> </TableLayout> </TableRow> <TableRow android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center"> <TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/myTableLayout" android:layout_width="fill_parent" android:layout_height="wrap_content" android:animation="@anim/layout_animation_row_left_slide"> <TableRow android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginTop="15px" android:gravity="center"> <ImageView android:id="@+id/imCapturaBarras" android:width="170px" android:maxWidth="170px" android:height="170px" android:maxHeight="170px" android:gravity="center"> </ImageView> </TableRow> </TableLayout> </TableRow> </TableLayout> 2. detalles_instancia_tarea.xml <?xml version="1.0" encoding="utf-8"?> <TableLayout android:id="@+id/widget0" android:layout_width="fill_parent" android:layout_height="wrap_content" xmlns:android="http://schemas.android.com/apk/res/android"> <TableRow android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginLeft="8px"> <TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/myTableLayout" android:layout_width="fill_parent" android:layout_height="wrap_content" android:animation="@anim/layout_animation_row_left_slide"> <TableRow android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginTop="10px"> <TextView android:text="Recurso Asociado" android:textSize="18sp" android:typeface="sans" android:textStyle="bold"> </TextView> 165 Anexo A Definición de la interfaz de usuario </TableRow> </TableLayout> </TableRow> <TableRow android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_gravity="center" android:layout_marginLeft="8px"> <TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/myTableLayout" android:layout_width="fill_parent" android:layout_height="wrap_content" android:animation="@anim/layout_animation_row_left_slide"> <TableRow android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginLeft="3px" android:layout_marginTop="5px"> <TextView android:id="@+id/recurso" android:width="300px" android:maxWidth="300px" android:text="Libro Don Quijote de la mancha\nclick for more..." android:textSize="16sp" android:typeface="sans" android:gravity="center"> </TextView> </TableRow> </TableLayout> </TableRow> <TableRow android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_marginTop="10px" android:layout_marginLeft="8px"> <TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/myTableLayout" android:layout_width="fill_parent" android:layout_height="fill_parent" android:animation="@anim/layout_animation_row_left_slide"> <TableRow android:layout_width="fill_parent" android:layout_height="fill_parent" android:gravity="center_vertical"> <TextView android:layout_width="fill_parent" android:layout_height="fill_parent" android:width="300px" android:text="Incidencias" android:textSize="16sp" android:typeface="sans" android:textStyle="bold"> </TextView> </TableRow> <TableRow android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_marginTop="10px" android:layout_marginLeft="3px"> <EditText android:id="@+id/incidencias" android:layout_width="wrap_content" android:layout_height="fill_parent" android:maxWidth="300px" android:text="" android:textSize="18sp" android:typeface="sans" android:lines="5"> </EditText> </TableRow> </TableLayout> </TableRow> <TableRow android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_gravity="center"> <TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/myTableLayout" android:layout_width="fill_parent" android:layout_height="wrap_content" android:animation="@anim/layout_animation_row_left_slide"> <TableRow android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginTop="5px"> <TextView android:id="@+id/tareasRelacionadas" android:width="300px" android:maxWidth="300px" android:text="Ver tareas relacionadas\nclick for more..." android:textSize="16sp" android:typeface="sans" android:gravity="center"> </TextView> </TableRow> </TableLayout> </TableRow> <TableRow android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_marginTop="10px" android:layout_gravity="center"> <TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/myTableLayout" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_gravity="center" android:animation="@anim/layout_animation_row_left_slide"> <TableRow android:layout_width="fill_parent" 166 Anexo A Definición de la interfaz de usuario android:layout_height="wrap_content" android:layout_marginTop="10px"> <Button android:id="@+id/btGuardar" android:width="150px" android:layout_height="wrap_content" android:text="Guardar" android:layout_gravity="center_horizontal" android:textSize="14sp"> </Button> </TableRow> </TableLayout> </TableRow> </TableLayout> 3. detalles_ubicacion.xml <?xml version="1.0" encoding="utf-8"?> <TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/myTableLayout" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_gravity="center" android:gravity="center" android:animation="@anim/layout_animation_row_left_slide"> <TableRow android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_gravity="center" android:layout_marginTop="10px"> <TextView android:id="@+id/txUbicacion" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:autoLink="all" android:textSize="16sp" android:textStyle="bold"> </TextView> </TableRow> <TableRow android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_gravity="center" android:layout_marginTop="10px"> <TextView android:id="@+id/txEdificio" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="" android:layout_gravity="center" android:autoLink="all" android:textSize="16sp" android:textStyle="bold"> </TextView> </TableRow> <TableRow android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_gravity="center" android:layout_marginTop="10px"> <Button android:id="@+id/btIniciaGuiado" android:width="130px" android:layout_height="wrap_content" android:text="Iniciar Guiado" android:layout_gravity="center" android:textSize="14sp"> </Button> </TableRow> </TableLayout> 4. detalles_usuario.xml <?xml version="1.0" encoding="utf-8"?> <TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/myTableLayout" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_gravity="center" android:animation="@anim/layout_animation_row_left_slide"> <TableRow android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_marginTop="10px"> <ImageView android:id="@+id/foto" android:layout_width="100px" android:layout_height="100px"> </ImageView> </TableRow> <TableRow android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_marginTop="10px"> <TextView android:id="@+id/name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Israel Arjona Vizcaíno" android:layout_gravity="center_horizontal" android:autoLink="all" android:textSize="15sp" android:typeface="sans"> </TextView> </TableRow> <TableRow android:layout_width="fill_parent" 167 Anexo A Definición de la interfaz de usuario android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_marginTop="10px"> <TextView android:id="@+id/email" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="mojolote@hotmail.com" android:layout_gravity="center_horizontal" android:autoLink="all" android:textSize="13sp"> </TextView> </TableRow> <TableRow android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_marginTop="5px"> <TextView android:id="@+id/telefono" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="3111111" android:layout_gravity="center_horizontal" android:autoLink="all" android:textSize="13sp"> </TextView> </TableRow> </TableLayout> 5. guiado.xml <?xml version="1.0" encoding="utf-8"?> <TableLayout android:id="@+id/widget0" android:layout_width="fill_parent" android:layout_height="wrap_content" xmlns:android="http://schemas.android.com/apk/res/android"> <TableRow android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center"> <TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/myTableLayout" android:layout_width="fill_parent" android:layout_height="wrap_content" android:animation="@anim/layout_animation_row_left_slide"> <TableRow android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginTop="9px" android:gravity="center"> <TextView android:id="@+id/txGuiado" android:text=" ::Bitacora de eventos:: \n\n" android:width="300px" android:maxWidth="300px" android:textSize="14sp" android:typeface="sans" android:gravity="left" android:textStyle="bold"> </TextView> </TableRow> </TableLayout> </TableRow> <TableRow android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center"> <TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/myTableLayout" android:layout_width="fill_parent" android:layout_height="wrap_content" android:animation="@anim/layout_animation_row_left_slide"> <TableRow android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginTop="15px" android:gravity="center"> <ImageView android:id="@+id/imFondoGuiado" android:width="170px" android:maxWidth="170px" android:height="170px" android:maxHeight="170px" android:gravity="center"> </ImageView> </TableRow> </TableLayout> </TableRow> </TableLayout> 6. lista.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <ListView android:id="@+id/android:list" android:layout_width="fill_parent" android:layout_height="fill_parent" android:gravity="center" /> 168 Anexo A Definición de la interfaz de usuario <TextView android:id="@+id/android:empty" android:layout_width="fill_parent" android:layout_height="fill_parent" android:text="@string/main_no_items" android:gravity="center" /> </LinearLayout> 7. login.xml <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:padding="5dp"> <ImageView android:id="@+id/imgAtrexis" android:src="@drawable/candado" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:padding="10dp" /> <TextView android:id="@+id/lblUsername" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/imgAtrexis" android:text="Username:" /> <EditText android:id="@+id/txtUsernameLogin" android:layout_width="fill_parent" android:layout_height="wrap_content" android:singleLine="true" android:layout_below="@id/lblUsername" android:layout_marginBottom="5dp" /> <TextView android:id="@+id/lblPassword" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/txtUsernameLogin" android:text="Password:" /> <EditText android:id="@+id/txtPasswordLogin" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_below="@id/lblPassword" android:password="true" android:singleLine="true" android:layout_marginBottom="10dp" /> <Button android:id="@+id/btnEntrarLogin" android:layout_width="80dp" android:layout_height="wrap_content" android:layout_below="@id/txtPasswordLogin" android:padding="10dp" android:layout_centerInParent="true" android:text="Entrar" /> <TextView android:id="@+id/lblPowered" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_alignParentRight="true" android:textStyle="bold" android:textColor="#FFFFFF" android:text="Powered By Israel" /> </RelativeLayout> 8. nueva_tarea_recurso.xml <?xml version="1.0" encoding="utf-8"?> <TableLayout android:id="@+id/widget0" android:layout_width="fill_parent" android:layout_height="wrap_content" xmlns:android="http://schemas.android.com/apk/res/android"> <TableRow android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center"> <TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/myTableLayout" android:layout_width="fill_parent" android:layout_height="wrap_content" android:animation="@anim/layout_animation_row_left_slide"> <TableRow android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginTop="9px" android:gravity="center"> <TextView android:id="@+id/descripcionTareaNuevaTarea" android:text="" android:textSize="16sp" android:typeface="sans" android:gravity="center"> </TextView> </TableRow> </TableLayout> </TableRow> <TableRow android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginLeft="8px" android:layout_marginTop="10px"> <TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/myTableLayout" android:layout_width="fill_parent" android:layout_height="wrap_content" android:animation="@anim/layout_animation_row_left_slide"> 169 Anexo A Definición de la interfaz de usuario <TableRow android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginTop="10px"> <TextView android:text="Recurso" android:textSize="18sp" android:typeface="sans" android:textStyle="bold"> </TextView> <EditText android:id="@+id/idrecurso" android:text="" android:textSize="18sp" android:typeface="sans" android:textStyle="bold" android:layout_marginLeft="5px" android:maxWidth="100px" android:width="100px" android:height="50px" android:maxHeight="50px"> </EditText> <Button android:id="@+id/btCargar" android:width="130px" android:layout_height="wrap_content" android:text="Por barras" android:layout_gravity="center" android:textSize="14sp"> </Button> </TableRow> </TableLayout> </TableRow> <TableRow android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginLeft="8px" android:layout_marginTop="10px"> <TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/myTableLayout" android:layout_width="fill_parent" android:layout_height="wrap_content" android:animation="@anim/layout_animation_row_left_slide" android:gravity="center"> <TableRow android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginTop="10px" android:gravity="center"> <TextView android:id="@+id/fechaNuevaTarea" android:text="Fecha: " android:textSize="18sp" android:typeface="sans" android:textStyle="bold" android:gravity="center"> </TextView> </TableRow> </TableLayout> </TableRow> <TableRow android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center"> <TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/myTableLayout" android:layout_width="fill_parent" android:layout_height="wrap_content" android:animation="@anim/layout_animation_row_left_slide"> <TableRow android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginTop="15px" android:gravity="center"> <ImageView android:id="@+id/imBarras" android:width="170px" android:maxWidth="170px" android:height="170px" android:maxHeight="170px" android:gravity="center"> </ImageView> </TableRow> </TableLayout> </TableRow> <TableRow android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center"> <TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/myTableLayout" android:layout_width="fill_parent" android:layout_height="wrap_content" android:animation="@anim/layout_animation_row_left_slide"> <TableRow android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginTop="9px" android:gravity="center"> <TextView android:id="@+id/descripcionRecurso" android:text="" android:textSize="16sp" android:typeface="sans" android:gravity="center"> </TextView> </TableRow> </TableLayout> </TableRow> </TableLayout> 170 Anexo B Plan de pruebas T-Guide Anexo B Plan de pruebas T-Guide El plan de pruebas constará de los siguientes puntos: 1. 2. 3. 4. 5. Introducción. Descripción del plan. Casos de prueba. Procedimientos de prueba. Resultados de pruebas Introducción Este documento define el plan de pruebas basado en el estándar IEEE 829 [STD829] para pruebas de software, que permitirá verificar la funcionalidad del sistema T-Guide, que es una aplicación cliente-servidor que permite establecer tareas asignadas a recursos físicos del mundo real, y sirve para recordar al usuario que la tarea debe cumplimentarse, además incluye la funcionalidad para la localización y guiado de dispositivos móviles a través de RFID. La aplicación está compuesta de cuatro módulos principales: 1. 2. 3. 4. Conexión y configuración. Auto-identificación. Localización y guiado. Administración de tareas. Descripció n del plan Características a ser probadas El plan de pruebas contiene la descripción de los casos de prueba definidos con el fin de validar y verificar que la aplicación T-Guide cumple con los requisitos requeridos para la correcta administración y recordatorio de tareas del usuario. Características excluidas de las pruebas No se dará prioridad al diseño de interfaz de las aplicaciones que se utilicen para probar la aplicación. Las aplicaciones no serán probadas en dispositivos móviles que no cuenten con soporte para Android. Habrá casos en los que la funcionalidad que se pruebe sea simulada. 171 Anexo B Plan de pruebas T-Guide Enfoque Debido a que las mediciones que se utilizarán serán principalmente de funcionalidad, por lo que no se tomará en cuenta el tiempo de respuesta, ni la exactitud de la función. Criterio pasa/ no pasa de casos de prueba En la descripción de los casos de prueba, se detallarán los resultados esperados para cada uno de ellos. Se considerará que una prueba ha pasado con éxito cuando los resultados esperados coincidan con los descritos en el caso de prueba. En caso de no coincidencia, se analizarán las causas y se harán las modificaciones necesarias hasta que se cumplan con los resultados esperados. Criterios de suspensión y requerimientos de reanudación En ningún caso se suspenderán definitivamente las pruebas. Cada vez que se presente que el caso no pasa una prueba, inmediatamente se procederá a evaluar y corregir el error, permaneciendo en la prueba de este caso hasta que ya no se presenten dificultades con él. Tareas de pruebas Las tareas a desarrollar para preparar y aplicar las pruebas son: Tabla 30 Tareas a desarrollar para las pruebas Tarea Habilidades especiales precedente Tarea Responsa bilidades 1. Preparación del plan de pruebas. Terminación del análisis y diseño de la aplicación. Conocimiento sobre servicios basados en localización, las aplicaciones cliente servidor, los servicios Web y del IEEE Std. 829. Autor de la tesis. 2. Preparación del diseño de las pruebas. Tarea 1. Conocimiento sobre la estructura de la Aplicación T-Guide, sus clases y métodos, y del IEEE Std. 829. Autor de la tesis. 3. Preparación de los casos de prueba. Tarea 2. Conocimiento sobre servicios basados en localización, las aplicaciones cliente servidor Autor de la tesis. 4. Aplicación pruebas. Tarea 3. Conocimiento del entorno y preparación del sistema desarrollado para su ejecución. Autor de la tesis. de 172 Anexo B Plan de pruebas T-Guide 5. Resolver incidentes pruebas. los de 6. Evaluación resultados. de Tarea 4. Conocimiento de programación en JAVA, Android, Restlet, OSGi, JSON, servicios Web, hilos, sockets, protocolo HTTP; además conocimiento en base de datos PostgreSQL. Autor de la tesis. Tarea 4. Tarea 5. Conocimiento de las preguntas de investigación, la hipótesis de prueba, y los objetivos de esta tesis. Autor de la tesis. Liberación de las pruebas La entrada especificada y la salida esperada en cada caso de prueba, serán suficientes para la comprobación del objetivo alcanzado y por lo tanto para la aceptación de las pruebas. Requisitos ambientales Las características y propiedades físicas y lógicas requeridas para el ambiente de pruebas, son las siguientes: Tabla 31 Tecnología física utilizada Equipo PC de Laptop escritorio o Dispositivo móvil Procesador Intel P4 o superior. 512MB de memoria RAM o superior. 80 GB en disco duro. Windows XP o superior. Android OS. Wi-Fi. Bluetooth. Lector de tarjetas RFID Conexión mediante USB. Tarjetas RFID Compatibles con el lector RFID. Tabla 32 Tecnología de programación utilizada Herramientas Android SDK 1.2 Eclipse 3.4 Ganymede como entorno de programación Celular HTC G2 con Android Apache Tomcat 6.0 Apache Felix 1.4.1 API ZXing 2.0 para la decodificación del código de barras PostgreSQL 8.3. 173 Anexo B Plan de pruebas T-Guide Responsabilidades Toda la responsabilidad de las pruebas recae en el autor de la tesis. Riesgos y contingencias Falta de tiempo: El tiempo es un factor importante que genera incertidumbre a la hora de aplicar las pruebas, por lo que se tomarán como mínimo 16 casos de prueba, si el tiempo lo permite se extenderán las pruebas a otros casos. Todas las fallas que se pudieran presentar en el transcurso del desarrollo de las pruebas deberán ir resolviéndose de manera iterativa por el responsable de esta tesis, hasta que la falla no produzca más. Casos de pruebas Características a probar Los distintos casos de prueba definen las características a ser probadas que se muestran en la tabla 33. Tabla 33 Características a probar de la aplicación Característica Configuración y conexiones Auto-identificación Localización y guiado del dispositivo móvil Administración de tareas Descripción Define los casos de prueba para verificar la correcta configuración de los dispositivos utilizados por el cliente: lector RFID; la conexión entre el cliente y el servidor y la conexión de la base de datos en la aplicación T-Guide. Define los casos de prueba para la identificación automática de recursos físicos en cercanía del dispositivo móvil, utilizando como tecnologías de Auto-ID el código de barras y tarjetas RFID. Define los casos de prueba para la localización por medio de RFID de un dispositivo móvil. Además se definen los casos de prueba para la realización de la tarea de guiado, la cual se refiere a guiar a un usuario de una localización origen obtenida automáticamente a una destino elegida por el usuario. Define los casos de prueba para el manejo de tareas, la correcta consulta y almacenamiento de la información de estas en la base de datos y la obtención de resultados a través del protocolo HTTP. Pruebas de Define los casos de prueba para la gestión de la información administración de la de la base de datos, como es la consulta, modificación, información de la base de eliminación y actualización. datos 174 Anexo B Plan de pruebas T-Guide Pruebas de configuración y conexiones T-Guide-001 Pruebas de configuración y conexión. T-Guide-001-001 Configuración y conexión del cliente móvil con el lector RFID. T-Guide-001-002 Configuración y conexión del servidor de tareas con el dispositivo móvil. T-Guide-001-003 Configuración y conexión del servidor de tareas con la base de datos. Pruebas de auto-identificación T-Guide-002 Pruebas de auto-identificación. T-Guide-002-001 Captura y decodificación del código de barras. T-Guide-002-002 Obtención de las tarjetas RFID en cercanía. Pruebas de localización y guiado del dispositivo móvil T-Guide-003 Pruebas de localización y guiado del dispositivo móvil. T-Guide-003-001 Localización del dispositivo móvil por RFID. T-Guide-003-002 Localización del dispositivo móvil por QRCodes. T-Guide-003-003 Guiado del dispositivo móvil. Pruebas de administración de tareas T-Guide-004 Pruebas de administración de tareas. T-Guide-004-001 Invocación del servicio Web para la obtención de un listado de tareas pendientes. T-Guide-004-002 Invocación del servicio Web para completar/cancelar una tarea. T-Guide-004-003 Invocación del servicio Web para el almacenamiento de una nueva tarea del usuario. 175 Anexo B Plan de pruebas T-Guide Pruebas de administración de la información de la base de datos T-Guide-005 Pruebas de administración de la información de la base de datos. T-Guide-005-001 Administración de la información de los usuarios. T-Guide-005-002 Administración de la información de los recursos. T-Guide-005-003 Administración de ubicaciones. T-Guide-005-004 Administración de tareas. T-Guide-005-005 Administración de tareas de los usuarios. Procedim iento de pruebas Este apartado contiene la descripción de los procedimientos correspondientes a todos los casos de prueba que conforman el presente documento. La organización de todos los casos de prueba se basa en cada uno de los grupos definidos. El objetivo fundamental de cada uno de los casos es verificar y validar una funcionalidad específica de la aplicación T-Guide acrónimo de plan de pruebas. Dentro de cada uno de los grupos de pruebas se definen casos de prueba para cierta funcionalidad específica a modo de comprobar que cumple con aspectos funcionales que deben ser cubiertos por ese grupo de casos de prueba. Cada uno de los casos de prueba se enfoca en la validación y verificación de una funcionalidad concreta de la aplicación T-Guide. La descripción de cada uno de los casos de prueba muestra el objetivo general del grupo, el entorno de prueba necesario y todos los casos de prueba que lo conforman. Para cada uno de los casos de prueba se define el propósito del caso, el entorno necesario para su ejecución, el procedimiento y los resultados esperados de la prueba. Como recomendación para la revisión de los casos de prueba, se deben llevar a cabo en orden de aparición. T-Guide-001 Pruebas de conexión y configuración Objetivo Verificar que la conexión entre dispositivo móvil y el lector RFID se establezca correctamente. Asimismo que la comunicación del servidor con la base de datos y entre el cliente y el servidor se lleve a cabo de una forma correcta. 176 Anexo B Plan de pruebas T-Guide Entorno de prueba Para los casos de prueba contenidos en este grupo se utilizan los siguientes elementos: PC o Laptop. Lector de tarjetas RFID. Teléfono móvil HCT G2 con sistema operativo Android. Manejador de bases de datos PostgreSQL 8.3. Apache Felix con bundle de servidor de tareas iniciado. Tarjetas RFID. T-Guide-001-001 Configuración y conexión del cliente móvil con el lector RFID Objetivo Establecer la configuración en el archivo config.xml y verificar la conexión del software T-Guide con el lector de tarjetas RFID. Entorno de prueba La prueba se llevará a cabo con un teléfono que contenga el sistema operativo Android y un lector de tarjetas RFID con capacidad para conectarse al puerto USB. Proceso 1. Conectar el lector de tarjetas RFID al puerto USB de la computadora. 2. Establecer los parámetros de conexión al teléfono en el archivo config.xml. 3. Ejecutar la aplicación e iniciar el hilo de conexión al lector de tarjetas mediante el lanzamiento de la tarea de guiado, observar los resultados. Resultados Lograr la conexión con el lector RFID para comenzar a obtener tarjetas RFID en cercanía. T-Guide-001-002 Configuración y conexión del servidor de tareas con el dispositivo móvil Objetivo Establecer la configuración en el archivo config.xml y verificar la conexión del software T-Guide con el servidor de tareas OSGI, instalado como un bundle en el servidor Apache Felix. 177 Anexo B Plan de pruebas T-Guide Entorno de prueba La prueba se llevará a cabo con un teléfono que contenga el sistema operativo Android y una computadora (PC o Laptop) que tenga el servidor de tareas OSGI instalado en forma de un bundle en Apache Felix. Proceso 1. Iniciar el servidor Apache Felix. 2. Si el bundle Servidor_OSGI_Tareas_1.0.0.jar no está instalado, proceder con su instalación. 3. Iniciar el bundle anteriormente mencionado. 4. Establecer los parámetros de conexión del teléfono móvil con el servidor en el archivo config.xml. 5. Realizar una petición GET al servicio Web ofrecido por el servidor de tareas. 6. Verificar que se reciban resultados. Resultados Lograr que se establezca la comunicación entre el cliente Android y el servidor de tareas OSGI. T-Guide-001-003 Configuración y conexión del servidor de tareas con la base de datos Objetivo Establecer la configuración de la base de datos en el archivo OSGITareas.conf y verificar la conexión del servidor de tareas OSGI y el manejador de base de datos. Entorno de prueba La prueba se llevará a cabo utilizando una computadora (PC o Laptop) con el manejador de bases de datos PostgreSql 8.3 en ejecución. Proceso 1. En caso de que el servidor de base de datos no se encuentre en ejecución, iniciarlo. 2. Establecer los parámetros de conexión a la base de datos en el archivo OSGITareas.conf. 3. Ejecutar la aplicación y observar los resultados. Resultados Obtener y mantener una conexión a la base de datos y verificar que se cuenta con el acceso a ella en la aplicación T-Guide. 178 Anexo B Plan de pruebas T-Guide T-Guide-002 Pruebas de auto-identificación Objetivo Verificar que la captura y decodificación de una imagen con un código de barras se lleve a cabo exitosamente. Asimismo comprobar que la lectura de tarjetas RFID en cercanía al lector RFID se realiza de una forma correcta. Entorno de prueba Para los casos de prueba contenidos en este grupo se utilizan los siguientes elementos: Lector de tarjetas RFID. Computadora. Teléfono móvil con sistema operativo Android. API ZXing 1.2. Imagen con código de barras impreso y legible. T-Guide-002-001 Captura y decodificación del código de barras Objetivo Capturar una imagen, mediante la cámara inmersa en el dispositivo móvil, que contenga un código de barras, decodificar la imagen y obtener el identificador asociado al código. Entorno de prueba La prueba se llevará a cabo utilizando el dispositivo móvil y la API ZXing para la decodificación del código de barras, además de la cámara fotográfica que incluida en el dispositivo. Proceso 1. Iniciar la captura de la imagen mediante la cámara fotográfica del dispositivo móvil. 2. Capturar la imagen con el código de barras impreso. 3. Observar los resultados. Resultados Obtener el identificador asociado a un código de barras mediante la captura y decodificación utilizando el software T-Guide. T-Guide-002-002 Obtención de las tarjetas RFID en cercanía Objetivo Obtener los identificadores de las tarjetas RFID en cercanía al dispositivo móvil mediante la conexión a un lector de tarjetas RFID. 179 Anexo B Plan de pruebas T-Guide Entorno de prueba La prueba se llevará a cabo utilizando el dispositivo móvil, una computadora y un lector de tarjetas RFID con conexión al puerto USB. Proceso 1. Iniciar alguna tarea que involucre la lectura mediante RFID. 2. Observar los resultados obtenidos. Resultados Obtener el identificador asociado a las tarjetas RFID en cercanía al lector RFID mediante el software T-Guide. T-Guide-003 Pruebas de localización y guiado del dispositivo móvil Objetivo Verificar que la localización del dispositivo móvil se realiza de una forma acertada. Asimismo que en la tarea de guiado se lleve a cabo de una forma correcta mostrando la posición del dispositivo en todo momento. Entorno de prueba Para los casos de prueba contenidos en este grupo se utilizan los siguientes elementos: Lector de tarjetas RFID. Computadora. Teléfono móvil con sistema operativo Android. Apache Felix con bundle de servidor de tareas iniciado. Manejador de bases de datos PostgreSQL iniciado. T-Guide-003-001 Localización del dispositivo móvil por RFID Objetivo Obtener la ubicación del dispositivo móvil en una posición donde existen tarjetas RFID en cercanía. Entorno de prueba La prueba se llevará a cabo utilizando el dispositivo móvil, una computadora y un lector de tarjetas RFID con conexión al puerto USB. Asimismo, es necesario que el servidor de tareas esté corriendo en forma de un bundle en Apache Felix y que el manejador de bases de datos PostgreSQL esté en ejecución con la base de datos de las ubicaciones activa. Previo a esto se deben haber verificado las pruebas de configuración y conexión y de autoidentificación. 180 Anexo B Plan de pruebas T-Guide Proceso 1. Iniciar los servidores (PostgreSQL, Apache Felix y el servidor de tareas). 2. Iniciar la tarea de guiado en interiores por RFID. 3. Observar y verificar que el resultado de la posición actual sea el correcto. Resultados Se espera que la ubicación actual del dispositivo se despliegue en pantalla y sea la localización correcta. T-Guide-003-002 Localización del dispositivo móvil por QRCodes Objetivo Obtener la ubicación del dispositivo móvil mediante la captura y decodificación de un código de barras. Entorno de prueba La prueba se llevará a cabo utilizando el dispositivo móvil. Asimismo, es necesario que el servidor de tareas esté corriendo en forma de un bundle en Apache Felix y que el manejador de bases de datos PostgreSQL esté en ejecución con la base de datos de las ubicaciones activa. Previo a esto se deben haber verificado las pruebas de configuración y conexión y de autoidentificación. Proceso 1. Iniciar los servidores (PostgreSQL, Apache Felix y el servidor de tareas). 2. Iniciar la tarea de guiado en interiores por QRCodes. 3. Observar y verificar que el resultado de la posición actual sea el correcto. Resultados Se espera que la ubicación actual del dispositivo se despliegue en pantalla y sea la localización correcta. T-Guide-003-003 Guiado del dispositivo móvil Objetivo Guiar al dispositivo móvil desde su posición actual al destino, actualizando constantemente su posición utilizando la tecnología RFID o QRCodes. Entorno de prueba La prueba se llevará a cabo utilizando una computadora, un dispositivo móvil y un lector de tarjetas RFID con conexión al puerto USB. Asimismo, es necesario que el servidor de tareas esté corriendo en forma de un bundle en Apache Felix y que el manejador de bases de datos PostgreSQL esté en ejecución con la base de datos de las ubicaciones activa. Previo a esto se 181 Anexo B Plan de pruebas T-Guide deben haber verificado las pruebas de configuración y conexión y de autoidentificación. Proceso 1. Iniciar los servidores (PostgreSQL, Apache Felix y el servidor de tareas). 2. Iniciar la tarea de guiado en interiores (por RFID o por QRCodes). 3. Se obtiene la posición actual por RFID o QRCodes (ver T-Guide-003001 y T-Guide-009-002). 4. Seleccionar el destino hacia el que se guiará. 5. Ir hacia el destino mostrado en el dispositivo, verificar que se refresque la posición del dispositivo. 6. Observar y verificar los resultados. Resultados Se espera que el dispositivo móvil sea guiado de forma correcta y que se refresque en todo momento la posición del dispositivo T-Guide 003-002. T-Guide-004 Pruebas de administración de tareas Objetivo Verificar que la administración de las tareas (consulta, completar/cancelar y nueva tarea) se lleven a cabo de forma exitosa. Entorno de prueba Para los casos de prueba contenidos en este grupo se utilizan los siguientes elementos: Computadora. Teléfono móvil con sistema operativo Android. Apache Felix con bundle de servidor de tareas iniciado. Manejador de bases de datos PostgreSQL iniciado. T-Guide-004-001 Invocación del servicio Web para la obtención de un listado de tareas pendientes Objetivo Obtener una lista de las tareas pendientes que tiene un usuario en especifico a través de la conexión entre el cliente con el software T-Guide mediante HTTP con el servidor de tareas, el cual ofrece un servicio Web. Entorno de prueba La prueba se llevará a cabo utilizando una computadora y un dispositivo móvil. Asimismo, es necesario que el servidor de tareas esté corriendo en forma de un bundle en Apache Felix y que el manejador de bases de datos 182 Anexo B Plan de pruebas T-Guide PostgreSQL esté en ejecución con la base de datos de tareas activa. Previo a esto se deben haber verificado las pruebas de configuración y conexión. Proceso 1. Iniciar los servidores (PostgreSQL, Apache Felix y el servidor de tareas). 2. Iniciar la aplicación T-Guide. 3. Elegir el listado de tareas pendientes. 4. Observar y verificar los resultados obtenidos. Resultados Se espera que el listado de tareas pendientes que se visualice en el dispositivo cliente a través del software T-Guide sea el correcto, es decir, que sean las tareas activas pertenecientes al usuario que realiza la consulta. T-Guide-004-002 Invocación del servicio Web para completar/cancelar una tarea Objetivo Desactivar una tarea pendiente, ya sea cancelándola o completándola, a través de la conexión entre el cliente con el software T-Guide mediante HTTP con el servidor de tareas, el cual ofrece el servicio Web. Entorno de prueba La prueba se llevará a cabo utilizando una computadora y un dispositivo móvil. Asimismo, es necesario que el servidor de tareas esté corriendo en forma de un bundle en Apache Felix y que el manejador de bases de datos PostgreSQL esté en ejecución con la base de datos de tareas activa. Previo a esto se deben haber verificado las pruebas de configuración y conexión. Proceso 1. Iniciar los servidores (PostgreSQL, Apache Felix y el servidor de tareas). 2. Iniciar la aplicación T-Guide. 3. Elegir el listado de tareas pendientes. 4. Elegir la tarea que se desea completar/cancelar. 5. Completar o cancelar la tarea. 6. Observar y verificar los resultados obtenidos. Resultados Se espera que la operación de cancelación o completitud se realice exitosamente para la tarea elegida y que esto se refleje en el listado de tareas pendientes, es decir, que esta tarea desaparezca de dicho listado. 183 Anexo B Plan de pruebas T-Guide T-Guide-004-003 Invocación del servicio Web para el almacenamiento de una nueva tarea del usuario Objetivo Establecer una nueva tarea como pendiente para el usuario que la crea a través de la conexión entre el cliente con el software T-Guide mediante HTTP con el servidor de tareas, el cual ofrece el servicio Web. Entorno de prueba La prueba se llevará a cabo utilizando una computadora y un dispositivo móvil. Asimismo, es necesario que el servidor de tareas esté corriendo en forma de un bundle en Apache Felix y que el manejador de bases de datos PostgreSQL esté en ejecución con la base de datos de tareas activa. Previo a esto se deben haber verificado las pruebas de configuración, conexión y de auto-identificación. Proceso 1. Iniciar los servidores (PostgreSQL, Apache Felix y el servidor de tareas). 2. Iniciar la aplicación T-Guide. 3. Elegir el listado de tareas pendientes. 4. Elegir nueva tarea. 5. Elegir la actividad a la que pertenece. 6. Elegir el tipo de tarea. 7. Elegir el recurso al que se asociará la tarea (Por barras o introduciendo el identificador). 8. Elegir guardar la tarea. 9. Observar y verificar los resultados obtenidos. Resultados Se espera que el almacenamiento de la nueva tarea se realice exitosamente con el recurso asociado elegido y que esto se refleje en el listado de tareas pendientes, es decir, que esta tarea aparezca en dicho listado. T-Guide-004 Pruebas de administración de la información de la base de datos Objetivo Verificar que la información de la base de datos se almacena, se c onsulta, se elimina y se modifica de forma correcta manteniendo la integridad de la información y se obtiene lo que se pide en cada caso. 184 Anexo B Plan de pruebas T-Guide Entorno de prueba Para los casos de prueba contenidos en este grupo se utilizan los siguientes elementos: Computadora. Apache Tomcat iniciado Manejador de bases de datos PostgreSQL iniciado. Aplicación Web de tareas iniciada. T-Guide-005-001 Administración de la información de los usuarios Objetivo Verificar que el módulo de administración de usuarios, en donde se consulta, se modifica, se eliminan y se insertan grupos y usuarios se lleve a cabo de forma exitosa. Entorno de prueba La prueba se llevará a cabo utilizando una computadora. Asimismo, es necesario que el servidor de aplicaciones Apache Tomcat esté corriendo y que el manejador de bases de datos PostgreSQL esté en ejecución con la base de datos de tareas activa. Proceso 1. Iniciar los servidores (PostgreSQL y Apache Tomcat). 2. Iniciar la aplicación Web de tareas. 3. Realizar operaciones de modificación, consulta, eliminación e inserción de grupos y usuarios. 4. Observar y verificar los resultados obtenidos. Resultados Se espera que las operaciones realizadas de consulta, modificación, eliminación e inserción se lleven a cabo de forma exitosa y que los datos arrojados sean los correctos. T-Guide-005-002 Administración de la información de los recursos Objetivo Verificar que el módulo de administración de recursos, en donde se consulta, se modifica, se eliminan y se insertan recursos y tipos de recursos se lleve a cabo de forma exitosa. Entorno de prueba La prueba se llevará a cabo utilizando una computadora. Asimismo, es necesario que el servidor de aplicaciones Apache Tomcat esté corriendo y 185 Anexo B Plan de pruebas T-Guide que el manejador de bases de datos PostgreSQL esté en ejecución con la base de datos de tareas activa. Proceso 1. Iniciar los servidores (PostgreSQL y Apache Tomcat). 2. Iniciar la aplicación Web de tareas. 3. Realizar operaciones de modificación, consulta, eliminación e inserción de recursos y tipos de recursos. 4. Observar y verificar los resultados obtenidos. Resultados Se espera que las operaciones realizadas de consulta, modificación, eliminación e inserción se lleven a cabo de forma exitosa y que los datos arrojados sean los correctos. T-Guide-005-003 Administración de la información de ubicaciones Objetivo Verificar que el módulo de administración de ubicaciones, en donde se consulta, se modifica, se eliminan y se insertan campus, edificios, planos y ubicaciones se lleve a cabo de forma exitosa. Entorno de prueba La prueba se llevará a cabo utilizando una computadora. Asimismo, es necesario que el servidor de aplicaciones Apache Tomcat esté corriendo y que el manejador de bases de datos PostgreSQL esté en ejecución con la base de datos de tareas activa. Proceso 1. Iniciar los servidores (PostgreSQL y Apache Tomcat). 2. Iniciar la aplicación Web de tareas. 3. Realizar operaciones de modificación, consulta, eliminación e inserción de campus, edificios, planos y ubicaciones. 4. Observar y verificar los resultados obtenidos. Resultados Se espera que las operaciones realizadas de consulta, modificación, eliminación e inserción se lleven a cabo de forma exitosa y que los datos arrojados sean los correctos. T-Guide-005-004 Administración de la información de tareas Objetivo Verificar que el módulo de administración de tareas, en donde se consulta, se modifica, se eliminan y se insertan actividades y tareas se lleve a cabo de forma exitosa. 186 Anexo B Plan de pruebas T-Guide Entorno de prueba La prueba se llevará a cabo utilizando una computadora. Asimismo, es necesario que el servidor de aplicaciones Apache Tomcat esté corriendo y que el manejador de bases de datos PostgreSQL esté en ejecución con la base de datos de tareas activa. Proceso 1. Iniciar los servidores (PostgreSQL y Apache Tomcat). 2. Iniciar la aplicación Web de tareas. 3. Realizar operaciones de modificación, consulta, eliminación e inserción de actividades y tareas. 4. Observar y verificar los resultados obtenidos. Resultados Se espera que las operaciones realizadas de consulta, modificación, eliminación e inserción se lleven a cabo de forma exitosa y que los datos arrojados sean los correctos. T-Guide-005-005 Administración de la información de tareas de los usuarios Objetivo Verificar que el módulo de administración de tareas de los usuarios, en donde se consulta, se modifica, se eliminan y se insertan actividades y tareas se lleve a cabo de forma exitosa. Entorno de prueba La prueba se llevará a cabo utilizando una computadora. Asimismo, es necesario que el servidor de aplicaciones Apache Tomcat esté corriendo y que el manejador de bases de datos PostgreSQL esté en ejecución con la base de datos de tareas activa. Proceso 1. Iniciar los servidores (PostgreSQL y Apache Tomcat). 2. Iniciar la aplicación Web de tareas. 3. Realizar operaciones de modificación, consulta, eliminación e inserción de tareas de los usuarios. 4. Observar y verificar los resultados obtenidos. Resultados Se espera que las operaciones realizadas de consulta, modificación, eliminación e inserción se lleven a cabo de forma exitosa y que los datos arrojados sean los correctos. 187 Referencias [STEINIGER 2006] Steiniger Stefan Neun Moritz, Alistair Edwardes. ―Foundations of Location Based Services‖. Zurich, Suiza : Departamento de Geografía, Universidad de Zurich, Suiza, 2006. [GUERRA 2007] Ruiz Guerra Lirio. ―API SMS para el procesamiento de consultas Georeferenciadas / No georeferenciadas‖. Cuernavaca, Morelos: Cenidet, 2007. [QUIÑONEZ 2007] Quiñonez Bernardino, Pedro. ―Gateway SMS Pull para Servicios Basados en Localización con una Arquitectura de Servicios Web‖. Cuernavaca, Morelos: Cenidet, 2007. [BERNARDOS 2003] Bernardos Barbolla Ana M. ―Servicios Móviles de localización‖. España: ceditec, 2003 [MARTINEZ 2005] Martínez Gens Luis E. y Urios de las Heras Mercedes. ―Tecnologías de Localización y Posicionamiento para Servicios Basados en Localización (LBS)‖. España, 2005. [DRANE 1998] C. Drane M. Macnaughtan, and C. Scott. ―Positioning GSM‖. IEEE Communications Magazine, 1998. - Vol. 36. [ESCALONA 2007] Escalona I. Martin y Arroyo F. Barcelo. ―Estudio de disponibilidad de medidas de localización en redes celulares urbanas‖. Madrid, España: IEEE LATIN AMERICA TRANSACTIONS, 2007. - 6 : Vol. 5. [LEE 2001] Lee D.J.Y y Lee W.C.Y. ―Optimize CDMA System Capacity with Location‖. IEEE PIMRC, 2001. [CASAR 2007] Casar Corredera José Ramón y López Molina José Manuel. ―Integración de comunicaciones, localización y provisión inteligente de contenido: arquitectura para servicios moviles móviles emergentes. (COLOCAME)‖. Madrid, España : Jornada de Seguimiento de Proyectos en Tecnologías de Servicios de la Sociedad de la Información, 2007. [BELLAVISTA 2006] Bellavista Paolo y Cinque Marcelo. ―Integrated Support for Handoff Management and Context Awareness in Heterogeneus Wireless Networks‖. Grenoble, Francia, 2006. [PANDEY 2006] Pandey Santosh y Agrawal Prathima. ―A survey on localization techniques for wireless networks‖. Auburn, AL : Electrical and Computer Engineering Auburn University, 2006. [KAVITHA 2006] Muthukrishnan Kavitha. ―WLAN location sharing through a privacy observant architecture‖. Holanda : University of Twente, Faculty of Computer Science Computer Architecture Design and Test for Embedded Systems group, 2006. [FRIEDMAN 2006] Friedman Roy y Kliot Gabriel. ―Location services in wireless Ad Hoc and Hybrid networks: A survey‖. Haifa, Israel : Department of Computer Science Technion, 2006. 189 [VARSHAVSKY 2007] Varshavsky Alex. ―The SkyLoc Floor Localization System‖. Toronto, US : University of Toronto, 2007. [CHOI 2006] Choi Youngkyu and Choi Sunghyun. ―Service Charge and EnergyAware Vertical Handoff in Integrated‖. IEEE [Journal] 2006. [UBICACEL 2008] Iusacell. Servicio Ubicacel de Iusacell. Cunsultado el 8 de abril de 2008 de http://www.iusacell.com.mx. [LOCALIZAME 2008] Telefónica Movistar. Servicio Localízame de Movistar. Consultado el 8 de abril de 2008 de http://www.movistar.com.mx/servicios/serv_loca.html. [AVL REACH 2008] Telcel. AVL Reach / U Localización y Administración Vehicular Telcel. Consultado el 8 de abril de 2008 de http://www.telcel.com/. [SKYHOOK 2008] Skyhook. Skyhook Wireless. Consultado el 23 de junio de 2008 de http://www.skyhookwireless.com. [TRAMIGO 2008] Tramigo. Localizador GPS GSM más avanzado. Consultado el 23 de junio de 2008 de http://www.tramigo.net/spa/default.asp. [GONZALEZ 2003] González Castaño F. J. y García Reinoso J. ―Survivable Bluetooth Location Networks‖. Anchorage, EEUU : IEEE International Conference of Communications, 2003. - 1 : Vol. 1. [MOUSTAFA 2005] Youssef Moustafa y Agrawala Ashok. ―Location-clustering techniques for WLAN location determination systems‖. Maryland, Virginia : University of Maryland at College Park, 2005. - 1 : Vol. I. [FISHER 1998] S. Fischer, H. Grubeck, A. Kangas, H. Koorapaty, E. Larsson, P. Lundqvist, ―Time of Arrival Estimation of Narrowband TDMA Signals for Mobile Positioning‖ Personal Indoor and Mobile Radio Communications, 1998. [RADAR 2000] Paramvir Bahl and Venkata N. Padmanabhan. (2000). ―RADAR: An InBuilding RF-based User Location and Tracking System‖. INFOCOM 2000. Nineteenth Annual Joint Conference of the IEEE Computer and Communications Societies. Proceedings. IEEE. [WIPS 2000] ―Wireless Indoor http://csd.ssvl.kth.se/2000/group12/ Positioning System‖, [FERSCHA 2001] Ferscha Alois, Beer Wolfgang, Narzt Wolfgang. (2001). ―Location Awareness in Community Wireless LANs‖. [HIGHTOWER 2001] Hightower, J. & Borriello, G. (2001), “Location Systems for Ubiquitous Computing”, IEEE Computer 34(8), 57--66. [HALLBERG 2003] [LIONEL 2004] J. Hallberg, M. Nilsson, K. Synnes, ―Bluetooth Positioning‖. (2003) Lionel M. Ni, Yunhao Liu, Yiu Cho Lau and Abhishek P. Patil. ―LANDMARC: Indoor Location Sensing Using Active RFID‖. Department of Computer Science, Hong Kong University of Science and Technology, Clearwater Bay, Kowloon, Hong Kong, China. Ed. Springer Netherlands 2004. 190 [HORUS 2004] [WEISSMAN 2004] Moustafa A. Youssef, Ashok Agrawala. (2004). ―The Horus WLAN location determination system‖. Department of Computer Science, University of Maryland, 2004. Z. Weissman, ―Indoor Location‖. (2004) [CANO 2006] Juan-Carlos Cano, Pietro Manzoni and C.-K. Toh. ―UbiqMuseum: A Bluetooth and Java Based Context-Aware System for Ubiquitous Computing‖. Polytechnic University of Valencia, University of Hong Kong, Hong Kong, China. Ed. Springer Netherlands 2006. [MILLER 2006] L. E. Miller, ―Indoor Navigation for First Responders: A Feasibility Study‖. Feb. 2006 [GAYATHRI 2007] Gayathri Chandrasekaran, Mesut Ali Ergin, Marco Gruteser, Richard P. Martin. (2007). ―Bootstrapping a Location Service through Geocoded Postal Addresses‖. Lecture Notes in Computer Science, 2007. [GIUSTINIANO 2007] Domenico Giustiniano, Francesca Lo Piccolo, Nicola Blefari Melazzi. (2007). ―Relative Localizacion in 802.11/GPS systems‖. Satellite and Space Communications, 2007. IWSSC '07. International Workshop on. [CAALIX 2007] Maged N Kamel Boulos, Artur Rocha, Angelo Martins, Manuel Escriche Vicente, Armin Bolz, Robert Feld, Igor Tchoudovski, Martin Braecklein, John Nelson, Gearóid Ó Laighin, Claudio Sdogati, Francesca Cesaroni, Marco Antomarini, Angela Jobes and Mark Kinirons. (2007). ―CAALIX: Complete Ambient Asisted Living Experiment‖. International Journal of Health Geographics 2007. [MOUSTAFA 2007] Moustafa A. Youssef, Ashok Agrawala. (2007). ―Analysis of the optimal strategy for WLAN location determination systems‖. International Journal of Modeling And Simulation, 2007. [TITICA 2007] Titica, D. Fratu, O. Stanescu, E. Halunga-Fratu, S. (2007). ―Simple Location-based Application Development for Mobile Phones‖. Telecommunications in Modern Satellite, Cable and Broadcasting Services, 2007. TELSIKS 2007. 8th International Conference on. [TESORIERO 2008] R. Tesoriero, J. A. Gallud, M. Lozano, V. M. R. Penichet. ―A Locationaware System using RFID and Mobile Devices for Art Museums‖. Computer Systems Department Universidad de Castilla-La Mancha [RAMES 2005] Rodríguez Ramés ―Estructura de paquetes‖ Revista Software Guru. Marzo - Abril 2005 [ZXING 2009] Multi-format 1D/2D barcode image processing library with clients for Android, Java, and iPhone. Consultado el 15 de noviembre de 2008 de http://code.google.com/p/zxing/ [STD829] Software Engineering Technical Committee of the IEEE Computer Society. IEEE Standard for Software Test Documentation. Disponible en: http://www.ucsc.cl/~marciam/weblog/images/ieeestd8291998standardtest_documentation.pdf. Última consulta: Febrero 2009 [FELIX 2009] Apache, Documentación de apache Felix. Consultado en enero de 191 2009 de http://felix.apache.org/site/index.html [RESTLET 2009] Noelios Technology, Documentación de Restlet. Consultado en enero de 2009 de http://www.restlet.org/documentation/ [ANDROID 2008] Android developers, Documentación de Android. Consultado en diciembre de 2008 de http://developer.android.com/guide/index.html [JSON 2009] Android developers, Documentación de Android. Consultado en enero de 2009 de http://developer.android.com/reference/org/json/packagesummary.html [HTTP 2009] Android developers, Documentación de Android. Consultado en enero de 2009 de http://developer.android.com/reference/org/apache/http/packagesummary.html [ECLIPSE 2008] Eclipse, Documentación de eclipse Ganymede. Consultado en diciembre de 2008 de http://help.eclipse.org/ganymede/index.jsp [BELLAVISTA 2008] Bellavista, P.; Küpper, A. & Helal, S. (2008), ―Location-Based Services: Back to the Future‖, IEEE Pervasive Computing 7(2), 85-89. [OPEN 2009] Open Handset Alliance, ―Android, Official Website‖. Última consulta 12 de mayo de 2009 de http://www.android.com/about/. [OSGI 2009] OSGi Alliance, “OSGi – The Dynamic Module System for Java”. Última consulta 12 de mayo de 2009 de http://www.osgi.org/Main/HomePage [COFETEL 2009] COFETEL, ―Estadísticas de Portabilidad‖. Última consulta mayo de 2009 de http://www.cft.gob.mx/wb/Cofetel_2008/estadisticas_de_portabilidad. [JSON 2009] JSON, ―Introducción a JSON‖. Última consulta 13 de mayo de 2009 de http://www.json.org/json-es.html. [EMCA 2009] ECMA, ―Estándar ECMA-262‖. Última consulta 13 de mayo de 2009 de http://www.ecma-international.org/publications/files/ECMA-ST/Ecma262.pdf [GINER 2009] Giner, P.; Cetina, C.; Fons, J. & Pelechano, V. (2009), Presto: A pluggable platform for supporting user participation in Smart Workflows, in 'MobiQuitous'. [NFC 2009] Wikipedia la enciclopedia libre, ―NFC‖. Última consulta mayo de 2009 de http://es.wikipedia.org/wiki/Near_Field_Communication. [JINI 2009] Sun Microsystem, ―Jini‖. Última consulta febrero de 2009 de http://www.jini.org/wiki/Main_Page. [UPNP 2009] [CRICKET 2001] UPnP, ―UPnP Forum‖. http://www.upnp.org/. Última consulta febrero de 2009 de Nissanka B. Priyantha, ―The cricket location-support system‖. International conference on mobile computing and networking, Boston, Massachusetts, US. 2001. 192