164
Equation Chapter 1 Section 1 Trabajo Fin de Grado Grado en Ingeniería de las Tecnologías de Telecomunicación Diseño e implementación de una aplicación Android para geolocalización. Autor: Priscila Crespo Bolaños Tutor: Juan Manuel Vozmediano Torres Departamento de Ingeniería Telemática Escuela Técnica Superior de Ingeniería Universidad de Sevilla Sevilla, 2015

Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

  • Upload
    others

  • View
    41

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

Equation Chapter 1 Section 1

Trabajo Fin de Grado

Grado en Ingeniería de las Tecnologías de

Telecomunicación

Diseño e implementación de una aplicación Android

para geolocalización.

Autor: Priscila Crespo Bolaños

Tutor: Juan Manuel Vozmediano Torres

Departamento de Ingeniería Telemática

Escuela Técnica Superior de Ingeniería

Universidad de Sevilla

Sevilla, 2015

Page 2: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

2

Page 3: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

3

Trabajo Fin de Grado

Grado en Ingeniería de Tecnologías de Telecomunicación

Diseño e implementación de una aplicación Android

para geolocalización.

Autor:

Priscila Crespo Bolaños

Tutor:

Juan Manuel Vozmediano Torres

Profesor titular

Departamento de Ingeniería Telemática

Escuela Técnica Superior de Ingeniería

Universidad de Sevilla

Sevilla, 2015

Page 4: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

4

Page 5: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

5

Trabajo Fin de Grado: Diseño e implementación de una aplicación Android para geolocalización.

Autor: Priscila Crespo Bolaños

Tutor: Juan Manuel Vozmediano Torres

El tribunal nombrado para juzgar el Proyecto arriba indicado, compuesto por los siguientes miembros:

Presidente:

Vocales:

Secretario:

Acuerdan otorgarle la calificación de:

Page 6: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

6

Sevilla, 2015

El Secretario del Tribunal

Page 7: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

7

A mi familia

A mis profesores

Page 8: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

8

Resumen

Dada la importancia y la fuerza con la que se introducen las tecnologías en nuestra vida cotidiana, resulta

interesante pensar en maneras en las que dichas tecnologías pueden ayudarnos o facilitarnos tareas del día a día.

En este caso hemos diseñado e implementado una aplicación Android destinada a la localización de personas.

Esto resulta de gran interés a la hora de poder supervisar a los sectores de la población más vulnerables como

pueden ser las personas de la tercera edad o niños y adolescentes.

Se ha decidido realizar el desarrollo para la plataforma Android, que según un informe de IDC (International

Data Corporation), durante noviembre de 2013 ha superado la barrera del 80% en cuota de mercado mundial de

smartphones. Esto significa que 4 de cada 5 teléfonos vendidos hasta octubre montan el sistema operativo de

Google, frente al 15% con el sistema operativo iOS.

Page 9: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

9

Abstract

Due to the importance of technologies and the fact that they are entered in our daily routine in force, it is

interesting to think about how they can help us make our life easier.

In this case we have designed and implemented an Android application with the objective of locate people. This

is of great interest when it comes to being able to monitor the most vulnerable sectors of the population such as

the elderly people or children and adolescents.

It has been decided to develop an application for the Android platform because according to an IDC

(International Data Corporation) report, in November 2013 has overcome the barrier of 80% global market share

of smartphones. This means that 4 out of 5 phones sold until October have the Google operating system,

compared to 15% with the iOS operating system.

Page 10: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

10

Índice Resumen 8

Abstract 9

Índice de Tablas 13

Índice de Ilustraciones 16

1. Introducción 20 1.1. Motivación 20 1.2. Problema planteado 20 1.3. Soluciones existentes en el mercado 21 1.4. Solución planteada 22 1.5. Estructura de la memoria 23

2. Recursos 25 Recursos humanos 25 Recursos Hardware 25

2.2.1 Pc Portatil HP ProBook 4520s 25 2.2.2 Pc portátil MacBook 13 pulgadas (finales de 2009) 25 2.2.2. Teléfonos móviles 25

Recursos Software 26 Elaboración de diagramas y tablas 26 Procesadores de texto 27 Entornos de desarrollo 27

3. Visión Global del Sistema 28 3.1. Participantes y Roles implicados 28

3.1.1. Organizaciones 28 3.1.2. Personas 28

3.2. Objetivos del sistema 29

4. Requisitos del Sistema 32 4.1 Introducción 32 4.2 Requisitos de Información 32 4.3. Requisitos funcionales 35

4.3.1. Definición de los actores 38 4.3.2. Casos de usos 38

4.4. Requisitos no funcionales 52 4.5. Matriz de rastreabilidad 56

4.5.1. Matriz de rastreabilidad IRQ frente a Objetivos 56 4.4.2. Matriz de rastreabilidad UC frente a Objetivos 57

5. Análisis del Sistema 58 5.1. Análisis estático del sistema 58

5.1.1. Modelo estático: Subsistema de Gestión de mensajes e IPs 59 5.1.2. Modelo estático: Subsistema de Solicitud de localización 63 5.1.3. Modelo estático: Subsistema de Gestión de localización propia 74

5.2. Análisis dinámico del sistema 79 5.2.1. Acciones gestión de mensajes e IPs 79 5.2.2. Acciones de solicitud de localización 81 5.2.3. Acciones de gestión de localización propia 83

5.3. Prototipo del sistema 86

Page 11: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

11

6. Diseño del Sistema 91 6.1. Clases: Subsistema de gestión de mensajes e IPs 91

6.1.1. ServidorUdp 91 6.1.2. ArgumentosRecibidos 92 6.1.3. Borrado 93 6.1.4. ElementoLista 93 6.1.5. EscribeFichero 93

6.2. Clases: Actividad principal 94 6.3. Clases: ContactosFragment 94 6.4. Clases: Base de datos 95

6.4.1. MySQLiteHelper 95 6.4.2. TablaLocalizo 96 6.4.3. TablaPermitidos 96

6.5. Clases: Subsistema de solicitud de localización 97 6.5.1. DetalleLocalizoFragment 97 6.5.2. ClienteUdp 98 6.5.3. RecibeUdp 99 6.5.4. Notificaciones 100 6.5.5. Temporizador 100 6.5.6. TemporizadorEnvio 101 6.5.7. ReceptorUdp 102 6.5.8. GestionaNotificacion 102 6.5.9. VerMapaFragment, AddressResultReceiver y AddressIntentService 102

6.6. Clases: Subsistema de gestión de la localización propia 103 6.6.1. DetallePermitoFragment 103 6.6.2. SmsReceptor y ObtenerLocalizacion 104

6.7. Clases: Interfaz gráfica 106

7. Implementación del Sistema 108 7.1. Escenario 108

7.1.1. Flujo de mensajes 108 7.2. Tipos de mensajes 110 7.3. Envío de mensajes 112 7.4. Aplicación Android 113

7.4.1. Obtención de la localización 113 7.4.2. Recepción y procesamiento de los mensajes 114 7.4.3. Mantenimiento del puerto UDP activo en el NAT 115 7.4.4. Notificaciones de la aplicación 116 7.4.5. Visualización del mapa 117 7.4.6. Permisos: AndroidManifest 118

7.5. Servicio Java 119 7.5.1. Recepción y procesamiento de los mensajes 119

8. Pruebas y validación 121 8.1. Pruebas manuales 121 8.2. Purebas automatizadas 125 8.3. Pruebas de aceptación 126

9. Estimación temporal 127 9.1. Estimación temporal a priori 127 9.2. Planificación temporal real 129

10. Conclusiones 132 10.1. Principales problemas enfrentados 132 10.2. Línea futura de desarrollo 132

Page 12: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

12

10.3. Conclusión personal 134

11. Referencias 135

12. Anexo 136 12.1. Glosario de términos 136 12.2. Resultado de pruebas automatizadas 138

12.2.1. Prueba 15 138 12.2.2. Prueba 16 140

12.3. Manual de usuario 142 12.3.1. Instalación 142 12.3.2. Vista principal de la aplicación 144 12.3.3. Acceso a Agenda para agregar contactos 145 12.3.4. Eliminar un contacto de la lista de Localizados 147 12.3.5. Eliminar un contacto de la lista de Permitidos 148 12.3.6. Ver la localización propia 150 12.3.7. Solicitar la localización de un contacto 152 12.3.8. Configuración del servidor a usar 153

12.4. Ejemplos de funcionamiento 158 12.4.1. Localizar a un contacto 158 12.4.2. Localización de dos contactos 162

Page 13: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

13

ÍNDICE DE TABLAS

Tabla 1 - Organizaciones 28

Tabla 2 - Participante: Alumna 28

Tabla 3 - Participante: Tutor del proyecto 29

Tabla 4 - Objetivos: OBJ-0001 30

Tabla 5 - Objetivos: OBJ-0002 30

Tabla 6 - Objetivos: OBJ-0003 31

Tabla 7 – IRQ-0001: Información de la agenda 32

Tabla 8 – IRQ-0002: Información de contactos que se localizan 33

Tabla 9 - IRQ-0003: Información de contactos permitidos 34

Tabla 10 - IRQ-0004: Información sobre el usuario solicitante 34

Tabla 11 - IRQ-0005: Información de localización 35

Tabla 12 - ACT-0001: Usuario final de la aplicación 38

Tabla 13 - UC-0001: Enviar mensajes desde/hacia cualquier IP 39

Tabla 14 - UC-0002: Recibir mensajes con independencia de IPs 40

Tabla 15 – UC-003: Establecer la IP y puerto del servidor 40

Tabla 16 - UC-0004: Eliminar contactos que no se quiera localizar 41

Tabla 17 - UC-0005: Agregar contactos a lista de localizados 42

Tabla 18 - UC-0006: Comenzar a localizar 43

Tabla 19 - UC-0007: Elegir tiempo con el que se reciben actualizaciones de localización 44

Tabla 20 - UC-0008: Localizar a verios contactos simultáneamente 45

Tabla 21 - UC-0009: Recibir notificaciones de localización 46

Tabla 22 - UC-0010: Localizar sólo a los contactos a los que no este localizando 46

Tabla 23 - UC-0011: Elegir contactos permitidos 47

Tabla 24 - UC-0012: Enviar localización propia 48

Tabla 25 - UC-0013: Modificar contactos permitidos (Agregar) 49

Tabla 26 - UC-0014: Modificar contactos permitidos (Eliminar) 50

Tabla 27 - UC-0015: Acceder al GPS del teléfono 51

Tabla 28 - UC-0016: Consultar localización propia 52

Tabla 29 - NFR-0001: Escalabilidad 53

Tabla 30 - NFR-0002: Interfaz 53

Tabla 31 - NFR-0003: Mantenibilidad 54

Tabla 32 - NFR-0004: Usabilidad 54

Tabla 33 - NFR-0005: Portabilidad 55

Tabla 34 - NFR-0006: Actualizaciones 56

Page 14: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

14

Tabla 35 - TRM-0001: Matriz de rastreabilidad IRQ/Objetivos 56

Tabla 36 - TRM-0002: Matriz de rastreabilidad UC frente a Objetivos 57

Tabla 37 - TYP-0001: ServidorUdp 60

Tabla 38 - TYP-0002: ElementoLista 61

Tabla 39 - TYP-0003: Borrado 61

Tabla 40 - TYP-0004: ArgumentosRecibidos 62

Tabla 41 - TYP-0005: EscribeFichero 62

Tabla 42- TYP-0006: MainActivity 65

Tabla 43 - TYP-0007: DetalleMainFragment 65

Tabla 44- TYP-0008: ContactosFragment 66

Tabla 45 - TYP-0009: DetalleLocalizoFragment 66

Tabla 46-TYP-0010: TablaLocalizo 67

Tabla 47-TYP-0011: EntradaTabla 67

Tabla 48- TYP-0012: MySQLiteHelper 68

Tabla 49 - TYP-0013: ClienteUdp 70

Tabla 50 - TYP-0014: RecibeUdp 70

Tabla 51-TYP-0015: Temporizador 71

Tabla 52 - TYP-0016: TemporizadorEnvio 72

Tabla 53 - TYP-0017: Notificaciones 72

Tabla 54 - TYP-0018: GestionaNotificacion 73

Tabla 55 - TYP-0019: VerMapaFragment 73

Tabla 56 – TYP-0020: ReceptorUdp 74

Tabla 57-TYP-0021: DetallePermitoFragment 75

Tabla 58 – TYP-0022: TablaPermitidos 75

Tabla 59- TYP-0023: SmsReceptor 77

Tabla 60- TYP-0024: ObtenerLocalización 78

Tabla 61 – TYP-0025: LocalizacionPropiaActivity 79

Tabla 62 – Tabla Localizados 96

Tabla 63 – Tabla permitidos 97

Tabla 64 – Pruebas manuales: Prueba 1 121

Tabla 65 – Pruebas manuales: Prueba 2 121

Tabla 66 – Pruebas manuales: Prueba 3 121

Tabla 67 – Pruebas manuales: Prueba 4 122

Tabla 68 – Pruebas manuales: Prueba 5 122

Tabla 69 – Pruebas manuales: Prueba 6 122

Tabla 70 – Pruebas manuales: Prueba 7 122

Tabla 71 – Pruebas manuales: Prueba 8 123

Tabla 72 – Pruebas manuales: Prueba 9 123

Page 15: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

15

Tabla 73 – Pruebas manuales: Prueba 10 123

Tabla 74 – Pruebas manuales: Prueba 11 123

Tabla 75 – Pruebas manuales: Prueba 12 124

Tabla 76 – Pruebas manuales: Prueba 13 124

Tabla 77 – Pruebas manuales: Prueba 14 124

Tabla 78 – Pruebas manuales: Prueba 15 124

Tabla 79 – Pruebas manuales: Prueba 16. 125

Tabla 80 – Pruebas manuales: Prueba 17. 125

Tabla 81 – Pruebas automatizadas: Prueba 18 125

Tabla 82 – Pruebas automatizadas: Prueba 19 126

Tabla 83 – Pruebas de aceptación: Prueba 20 126

Tabla 84 – Estimación a priori: Documentación 127

Tabla 85 – Estimación a priori: Obtención de información 127

Tabla 86 – Estimación a priori: Análisis 127

Tabla 87 – Estimación a priori: Diseño. 127

Tabla 88 – Estimación a priori: Implementación 128

Tabla 89 – Estimación a priori: Testeo y pruebas 128

Tabla 90 – Estimación a priori: Documentación final 128

Tabla 91 – Estimación a priori: Horas totales 128

Tabla 92 – Estimación real: Documentación 129

Tabla 93 – Estimación real: Obtención de información 129

Tabla 94 - Estimación real: Análisis 130

Tabla 95 – Estimación real: Diseño 130

Tabla 96 – Estimación real: Implementación 130

Tabla 97 – Estimación real: Testeo y pruebas 130

Tabla 98 – Estimación real: Documentación final 130

Tabla 99 – Estimación real: Horas totales 130

Page 16: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

16

ÍNDICE DE ILUSTRACIONES

Ilustración 1 – Icono de Android 21

Ilustración 2 - Icono de la aplicación 'Seguimiento GPS' 21

Ilustración 3 - Icono de la aplicación 'Localizador Familiar & Chat’ 21

Ilustración 4 - Icono de la aplicación 'Wayo' 22

Ilustración 5 - Icono del entorno de desarrollo Eclipse 27

Ilustración 6 - Icono del entorno de desarrollo Android Studio 27

Ilustración 7 - Subsistemas 36

Ilustración 8 - Subsistema Gestión de mensajes e IPs 36

Ilustración 9 - Subsistema Gestión de la localización solicitada 37

Ilustración 10 - Subsistema Gestión de la localización propia 37

Ilustración 11 - Diagrama de clases: subsistema de gestión de mensajes e IPs. 59

Ilustración 12 - Diagrama de clases: Agregar contacto a lista de localizados 64

Ilustración 13 – Diagrama de clases: Proceso de localización 69

Ilustración 14 - Diagrama de clases: selección de contactos permitidos 74

Ilustración 15 - Diagrama de clases: envío de localización propia 76

Ilustración 16 - Diagrama de clases: Visualización de localización propia 78

Ilustración 17 – Envío y recepción de mensajes con independencia de IPs 80

Ilustración 18 – Configuración de IP y puerto del servidor 81

Ilustración 19 - Acción de agregar a un contacto a “Localizados” 82

Ilustración 20 - Acción de comenzar a localizar 83

Ilustración 21 - Acción de envío de localización propia 84

Ilustración 22 - Acción de modificar lista de "Permitidos" 85

Ilustración 23 - Acción de consultar localización propia 86

Ilustración 24 - Interfaz de usuario: Página principal 87

Ilustración 25 - Interfaz de usuario: Agregar contactos a las listas 87

Ilustración 26 - Interfaz de usuario: Lista de contactos que localizamos 88

Ilustración 27 - Interfaz de usuario: Opciones sobre contactos que localizamos 88

Ilustración 28 - Interfaz de usuario: Elección del tiempo entre notificaciones 89

Ilustración 29 - Interfaz de usuario: Contactos permitidos 89

Ilustración 30 - Interfaz de usuario: Mapa con la localización del contacto 90

Ilustración 31 - Clase ServidorUdp 92

Ilustración 32 - Clase ArgumentosRecibidos 92

Ilustración 33 - Clase Borrado 93

Ilustración 34 - Clase ElementoLista 93

Ilustración 35 - clase EscribeFichero 94

Page 17: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

17

Ilustración 36 - Clase principal: ActivityMain 94

Ilustración 37 – Clase ContactosFragment 95

Ilustración 38 - Clase MySQLiteHelper. 95

Ilustración 39 - Clase TablaLocalizo y EntradaTabla 96

Ilustración 40 – Clase TablaPermitidos y EntradaTabla 96

Ilustración 41 – Clase DetalleLocalizoFragment 98

Ilustración 42 - Clase clienteUdp 99

Ilustración 43- Clase RecibeUdp 100

Ilustración 44 - Clase Notificaciones 100

Ilustración 45 – Clase Temporizador 101

Ilustración 46 – Clase TemporizadoEnvio 101

Ilustración 47 – Clase ReceptorUdp 102

Ilustración 48 - Clase GestionaNotificacion 102

Ilustración 49 - Clases VerMapaFragment, AddressResultReceiver, AddresIntentService 103

Ilustración 50 – Clase DetallePermitoFragment 103

Ilustración 51 – Clases SmsReceptor y ObtenerLocalización 105

Ilustración 52 - Clases de la interfaz gráfica I 106

Ilustración 53 – Clases de la interfaz gráfica II 107

Ilustración 54 – Escenario planteado 108

Ilustración 55 – Paso de mensajes en las solución elegida 109

Ilustración 56 – Obtención del serial de la Sim del teléfono 110

Ilustración 57 – Obtención del hash 111

Ilustración 58 – Llamada a la función getHash 111

Ilustración 59 – Envio de mensajes: Socket en el servidor 112

Ilustración 60 – Envio de mensajes: Socket en Android 112

Ilustración 61 – Envio de mensajes: Obtención de dirección destino en el servidor. 112

Ilustración 62 – Envio de mensajes: Obtención de dirección destino en Android 112

Ilustración 63 – Envio de mensajes: Envio del paquete UDP 113

Ilustración 64 – GoogleApi: Implementación de interfaces de callback() 113

Ilustración 65 – GoogleApi: Creación de GoogleApiClient 113

Ilustración 66 – GoogleApi: Obtención de coordenadas de latitud y longitud 114

Ilustración 67 – Espera de datos en Android 115

Ilustración 68 – Envio de SMS 115

Ilustración 69 – Creación del temporizador “esperaRefresco” 115

Ilustración 70 – Activación del temporizador de refresco 116

Ilustración 71 – Notificaciones: Error en la conexión con el servidor 116

Ilustración 72 – Notificaciones: Contacto no disponible 117

Ilustración 73 – Visualización de mapas Android 117

Page 18: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

18

Ilustración 74 – Permisos para enviar, leer y recibir SMS 118

Ilustración 75 – Permisos para realizar operaciones de red 118

Ilustración 76 – Permisos para acceder a la localización 118

Ilustración 77 – Permiso para escribir en la memoria externa 118

Ilustración 78 – Permiso para poder leer los contactos de la agenda 118

Ilustración 79 – Permiso para acceder al estado del teléfono 118

Ilustración 80 – Permiso para controlar el estado de “activo” del teléfono 118

Ilustración 81 – Clave de Google para poder usar mapas 119

Ilustración 82 – aplicación registrada en la consola de Google 119

Ilustración 83 – Actualización de un elemento en el servidor 119

Ilustración 84 – Búsqueda de un elemento en el servidor 120

Ilustración 85 – Estimación a priori: Diagrama de Gantt 129

Ilustración 86 – Estimación real: Diagrama de Gantt 131

Ilustración 87 - Número UIT-T E.164 internacional para Redes. 133

Ilustración 88 – Estructura del proyecto que soporta varios lenguajes 133

Ilustración 89 – values-es/strings.xml 133

Ilustración 90 – values-fr/strings.xml 134

Ilustración 91 – Prueba 15: mensajes cada 5 minutos 138

Ilustración 92 – Prueba 15: mensajes cada 15 minutos 139

Ilustración 93 – Prueba 15: mensajes cada 30 minutos 139

Ilustración 94 – Prueba 16: SMS para comenzar (periodo 5 minutos) 140

Ilustración 95- Prueba 16: Recepción de localización cada 5 minutos 140

Ilustración 96 – Envío de SMS para comenzar (cada 15 minutos) 140

Ilustración 97 – Prueba 16: Recepción de mensajes cada 15 minutos 141

Ilustración 98 – Envio de SMS para comenzar (cada 30 minutos) 141

Ilustración 99 – Prueba 16: Recepción de mensajes cada 30 minutos 141

Ilustración 100 – Instalación: Permisos de la aplicación (I) 142

Ilustración 101 – Instalación: Permisos de la aplicación (II) 143

Ilustración 102 – Instalación: Aplicación instalada 143

Ilustración 103 – Manual de usuario: Splash de bienvenida 144

Ilustración 104 – Manual de usuario: Página principal 145

Ilustración 105 – Manual de usuario: Acceso a los contactos de la agenda 145

Ilustración 106 – Manual de usuario: Filtrado de contactos por nombre 146

Ilustración 107 – Manual de usuario: Agregar contactos a las listas 147

Ilustración 108 – Manual de usuario: Eliminación de un contacto que localizamos 147

Ilustración 109 – Manual de usuario: Confirmación de eliminación 148

Ilustración 110 – Manual de usuario: Eliminar contacto permitido 149

Ilustración 111- Manual de usuario: Confirmación de eliminación de contacto Permitido 149

Page 19: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

19

Ilustración 112 – Manual de usuario: Acceso a localización propia 150

Ilustración 113 – Manual de usuario: Visualización de localización propia 151

Ilustración 114 – Manual de usuario: Localización propia no disponible 151

Ilustración 115 – Manual de usuario: Comienzo de la localización 152

Ilustración 116 – Manual de usuario: Elección del tiempo entre notificaciones 153

Ilustración 117 – Manual de usuario: Configuración Avanzada 154

Ilustración 118 – Manual de usuario: Configuración Avanzada-campos vacíos 154

Ilustración 119 – Manual de usuario: Configuración Avanzada-IP vacía 155

Ilustración 120 – Manual de usuario: Configuración Avanzada-Puerto vacío 155

Ilustración 121 – Manual de usuario: Configuración Avanzada-Puerto no numérico. 156

Ilustración 122 – Manual de usuario: Configuración Avanzada-Puerto fuera de rango 156

Ilustración 123 – Configuración Avanzada: IP y puerto correctos 157

Ilustración 124 – Configuración Avanzada: Guardando cambios 158

Ilustración 125 – Localizar a un contacto: Notificación error 158

Ilustración 126 – Localizar a un contacto: Detalle de la notificación de error 159

Ilustración 127 – Localizar a un contacto: Notificaciones 159

Ilustración 128 – Localizar a un contacto: Detalle de las notificaciones 160

Ilustración 129 – Localizar a un contacto: Ver mapa 161

Ilustración 130 – Localizar a un contacto: Notificación en el extremo localizado 161

Ilustración 131 – Localización de dos contactos: Notificaciones 162

Ilustración 132 – Localización de dos contactos: Aviso de fin de localización 162

Ilustración 133 – Localización de dos contactos: tiempo entre notificaciones 163

Ilustración 134 – Localización de un contacto: Mapa del contacto 1 163

Ilustración 135 – Localización de dos contactos: Mapa del contacto 2 164

Ilustración 136 - Localización de dos contactos: notificación en el extremo localizado (contacto 1) 164

Ilustración 137 – Localización de dos contactos: notificación en el extremo localizado (contacto 2) 164

Page 20: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

20

1. INTRODUCCIÓN

1.1. Motivación

Como punto final a los estudios de grado, debemos ser capaces de enfrentarnos a problemas reales que

se nos planteen, proponiendo y diseñando distintas alternativas para darles solución.

En este proyecto, poniendo en práctica todos los conocimientos hasta ahora adquiridos a lo largo de la

carrera afronté un problema de diseño software y de comunicaciones, pudiendo así proporcionar una

solución al mismo usando tecnologías tales como Android y Java, a las que se les prevé un amplio futuro

en el sector de las Telecomunicaciones.

He optado por el desarrollo de una aplicación Android, ya que resulta evidente el creciente número de

usuarios de Smartphone que buscan distintas aplicaciones que les sean de utilidad en su día a día, siendo

yo misma usuario de un Smartphone con sistema operativo Android.

Otro aspecto a tener en cuenta en la elección de este trabajo fue el reto que para mí supuso adentrarme

en el aprendizaje en mayor profundidad del lenguaje de programación Java, del que no poseía un gran

conocimiento antes de la realización del proyecto.

1.2. Problema planteado

El objetivo de este proyecto es poner solución a un problema de geolocalización mediante desarrollo

de una aplicación Android. Es decir, lo que buscamos es obtener la localización geográfica del

dispositivo siempre y cuando éste posea conexión a internet

Se nos plantea el poder solicitar la localización de un contacto de la agenda, con una periodicidad

determinada por el usuario que desea localizar y que, con dicho, se reciban las actualizaciones de

localización a su teléfono durante un tiempo máximo.

“Concentra todos tus pensamientos en el

trabajo que estás haciendo. Los rayos de sol no

queman hasta que se concentran en un punto.”

-Alexander Graham Bell–

Page 21: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

21

Ilustración 1 – Icono de Android

1.3. Soluciones existentes en el mercado

En este trabajo no estamos diseñando un tipo nuevo de aplicación. La geolocalización es un problema

que ya se había planteado previamente y se le había dado solución, por tanto tenemos ya disponible en

“Google Play” distintas aplicaciones que le dan solución. Algunas de ellas se nombran a continuación:

- Seguimiento GPS: Gratuita, con un número de instalaciones de 10.000.000 - 50.000.000 y una

puntuación de 4,3 sobre 5. Te permite localizar a tus contactos y ubicarlos en un mapa.

Ilustración 2 - Icono de la aplicación 'Seguimiento GPS'

- Localizador Familiar & Chat: Aplicación gratuita, con un número de instalaciones entre 100.000 –

500.000 y una puntuación de 4,1 sobre 5. Además de la funcionalidad propia de localización de

personas, añade otras funciones como son la mensajería, una lista de tareas a compartir con tus

contactos, un álbum familiar y un botón de pánico que al pulsarlo envía una notificación instantánea a

familiares indicándoles tu localización.

Ilustración 3 - Icono de la aplicación 'Localizador Familiar & Chat’

- Localizador de personas, Wayo: Aplicación gratuita, con un número de instalaciones entre 500.000 -

1.000.000 y una puntuación de 3,7 sobre 5. Al igual que la anterior, te permite enviar mensajes y mandar

Page 22: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

22

mensajes de alerta. Además, tiene la opción de crear grupos o bloquear contactos a los que no quieres

que se le envíe tu localización.

Ilustración 4 - Icono de la aplicación 'Wayo'

1.4. Solución planteada

La solución que se ha planteado a este problema se centra únicamente en los aspectos de localización,

es decir, no se contemplarán aspectos como chat o grupos.

La aplicación se va a dividir en tres partes:

- “Localizo a…”: Es en la que tendremos una lista de todos los contactos a los que queramos

localizar, seleccionados previamente de nuestros contactos del teléfono.

- “Contactos Permitidos”: será la parte en la que podremos especificar a qué contactos les

permitimos obtener nuestra localización.

- Y por último, “Ver mi localización”: Nos da la opción de poder visualizar en el mapa nuestra

propia localización.

Page 23: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

23

1.5. Estructura de la memoria

A continuación, se mostrará qué contenidos cubre esta memoria y su distribución dentro de la misma.

Punto 1. Introducción.

En este punto que acabamos de ver, se trata la motivación para llevar a cabo este trabajo y se expone el

problema así como la solución elegida.

Punto 2. Recursos

En este apartado se describirán los recursos que se han empleado en la elaboración del trabajo, tanto

hardware, software como humanos.

Punto 3. Visión global del sistema

En este punto se van a concretar los objetivos principales del desarrollo, así como los participantes del

mismo.

Punto 4. Requisitos del sistema

En este apartado se mostrarán los requisitos pedidos para el correcto funcionamiento de nuestra

aplicación.

Punto 5. Análisis del sistema

Una vez conocidos los requisitos del sistema, así como su funcionalidad, realizaremos un análisis del

sistema, aportando modelos estático y dinámico, así como el prototipo de la aplicación a desarrollar.

Punto 6. Diseño del sistema

En este apartado mostraremos el diseño que llevaremos a cabo para cada uno de los componentes de

nuestro sistema con el objetivo de que éste lleve a cabo la funcionalidad que se ha descrito en apartados

anteriores.

Punto 7. Implementación.

En este apartado, describiremos a nivel de código los aspectos más relevantes tenidos en cuenta en la

implementación del sistema para un correcto funcionamiento.

Punto 8. Pruebas y validación.

En este apartado, describiremos las pruebas que se han hecho para comprobar el correcto

funcionamiento del sistema.

Punto 9. Estimación temporal.

En este apartado se mostrará la estimación temporal hecha a priori, en comparativa con el tiempo real

dedicado a cada tarea.

Punto 10. Conclusiones.

En este apartado, incluiremos, tanto los principales problemas encontrados durante el desarrollo así

Page 24: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

24

como las posibles mejoras de la aplicación.

Punto 11. Referencias.

Se proporcionarán las distintas fuentes consultadas para la realización del trabajo.

Punto 12. Anexos.

En este anexo se proporcionará un glosario de términos propios en la programación de Android, los

resultados correspondientes a las pruebas automatizadas, un manual de usuario para un correcto uso de

la aplicación y por último mostraremos algunos ejemplos de la aplicación en funcionamiento.

Page 25: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

25

2. RECURSOS

ara la correcta realización de este proyecto ha sido necesario disponer de un conjunto de recursos humanos,

hardware y software que especificaremos a continuación.

Recursos humanos

A la realización de este proyecto contribuyen dos personas: una de ellas a modo de desarrolladora del mismo, y

la otra persona ejerce un papel de ayuda y tutelaje del proyecto, garantizando entre ambas que efectivamente se

cumplen los requisitos pedidos.

Priscila Crespo Bolaños. Alumna desarrolladora del proyecto.

Juan Manuel Vozmediano Torres. Tutor del proyecto.

Recursos Hardware

A continuación especificaremos los recursos hardware que se han necesitado en la realización del proyecto,

indicando también sus características.

2.2.1 Pc Portatil HP ProBook 4520s

- Procesador: Intel Celeron CPU P4500 1.87GHz.

- Memoria RAM: 3GB.

- Almacenamiento: 200GB.

- Gráficos (GPU): Intel HD Graphics.

- Sistema Operativo: Windows 8.1, Ubuntu 14.04 LTS

2.2.2 Pc portátil MacBook 13 pulgadas (finales de 2009)

- Procesador: Intel Core 2 Duo 2,26 GHz.

- Memoria RAM: 2GB 1067 MHz DDR3.

- Almacenamiento: 250GB

- Gráficos (GPU): NVIDIA GeForce 9400M 256 MB

- Sistema Operativo: OSX 10.9.5

2.2.2. Teléfonos móviles

2.2.2.1 Samsung GALAXY CORE2

Teléfono principal con el que se realizó el desarrollo de la aplicación.

- Número del modelo: SM-G355HN

- Versión de Android: 4.4.2 (KitKat)

- Capacidad total del dispositivo: 4GB

- Memoria RAM: 768 MB

- Procesador: Quad-Core 1.2GHz

- Tamaño: 480x800 píxeles, 4.5 pulgadas

- Batería: Li-Ion 2000mAh

P

Page 26: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

26

2.2.2.2. Samsung GALAXY CORE PRIME

Teléfono empleado para la realización de pruebas de conectividad y comprobación del correcto funcionamiento

de la aplicación.

- Número de modelo: SM-G360F

- Versión de Android: 4.4.4 (KitKat)

- Capacidad total del dispositivo: 8GB

- Memoria RAM: 1 GB

- Procesador: Quad-Core 1.3GHz

- Tamaño: 480x800 píxeles, 4.5 pulgadas

- Batería: Li-Ion 2000mAh

2.2.2.3. Sony Xperia Z1 compact

Teléfono empleado igualmente para realización de pruebas de la aplicación.

- Número de modelo: D5503

- Versión de Android: 5.0.2 (Lollipop)

- Capacidad total del dispositivo: 12GB

- Memoria RAM: 2GB

- Procesador: Qualcomm MSM8974 Snapdragon 800 quad-core 2.2GHz

- GPU: Adreno 330

- Tamaño: 1720x1280 píxeles, 4.3 pulgadas

- Batería: Li-Ion 2300mAh

Recursos Software

Para poder llevar a cabo el desarrollo de este proyecto también nos hemos ayudado con algunas herramientas

software que explicaremos a continuación.

Elaboración de diagramas y tablas

Pencil Project

Herramienta de código abierto usada para crear mockups de aplicaciones. Nos sirvió para crear un diseño inicial

de las distintas pantallas de la aplicación.

Microsoft Visio 2013

Esta herramienta de Microsoft nos permite la creación de diagramas para simplificar información compleja,

proporcionándonos un conjunto completo de galerías de símbolos y formas.

Microsoft Project 2013

Se trata de un software de administración de proyectos, que emplearemos para realizar diagramas de Gantt para

organizar las tareas a lo largo del tiempo de desarrollo.

Herramienta REM

REM (REquirements Management), es una herramienta experimental gratuita de Gestión de Requisitos que nos

ayudará a soportar la fase de Ingeniería de Requisitos en este proyecto software.

Page 27: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

27

Procesadores de texto

2.3.2.1. Microsoft Word 2013

Software que nos permitirá la redacción y modificación de documentos de texto con formato a lo largo del

desarrollo.

Entornos de desarrollo

Eclipse

Eclipse es una plataforma de desarrollo integrado (IDE), diseñada para ser extendida de forma indefinida a través

de plug-ins. No está definida para trabajar en un lenguaje de programación específico, pero goza de gran

popularidad entre la comunidad de desarrolladores Java.

Ilustración 5 - Icono del entorno de desarrollo Eclipse

En nuestro caso utilizamos la versión de Eclipse: Eclipse Luna SR2 (4.4.2).

Android Studio

Es un entorno de desarrollo integrado (IDE) diseñado específicamente para desarrollar en Android. Fue

anunciado por Ellie Powers el 16 de mayo de 2013 y la última versión estable de dicha plataforma es la 1.2.1.1

(12 mayo de 2015).

Ilustración 6 - Icono del entorno de desarrollo Android Studio

En este caso usamos la versión 1.0.2 de Android Studio (Diciembre de 2014).

Page 28: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

28

3. VISIÓN GLOBAL DEL SISTEMA

n este apartado queremos mostrar una visión general del sistema donde se incluya qué personas van a estar

implicadas en su desarrollo así como qué objetivos se busca cumplir.

3.1. Participantes y Roles implicados

3.1.1. Organizaciones

Organización Departamento de Ingeniería Telemática

Dirección Camino de los Descubrimientos, s/n. 41092 Sevilla (España)

Teléfono +34 954487384

Fax +34 954487385

Comentarios Departamento para el cuál se realiza este proyecto

Tabla 1 - Organizaciones

3.1.2. Personas

Tabla 2 - Participante: Alumna

E

Participante Priscila Crespo Bolaños

Organización Departamento de Telemática

Rol Desarrollador

Es desarrollador Sí

Es cliente No

Es usuario No

Comentarios Alumna del Grado en Ingeniería de las Tecnologías de Telecomunicación que llevará a cabo este desarrollo como motivo de su Trabajo de Fin de Grado

Page 29: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

29

Participante Juan Manuel Vozmediano Torres

Organización Departamento de Telemática

Rol Tutor de este Trabajo Fin de Grado

Es desarrollador No

Es cliente Sí

Es usuario Sí

Comentarios Profesor titular del departamento de Ingeniería Telemática. Será quien tutele el progreso de este proyecto.

Tabla 3 - Participante: Tutor del proyecto

3.2. Objetivos del sistema

En las siguientes tablas describiremos cuáles son los principales objetivos del sistema, que nos permitirán

abordar el problema de manera más sencilla y concreta.

OBJ-0001 Solicitud de localización

Versión 1.0 ( 24/05/2015 )

Autores Priscila Crespo Bolaños

Fuentes Juan Manuel Vozmediano Torres

Priscila Crespo Bolaños

Descripción El sistema deberá permitir a un usuario del mismo solicitar la localización de cualquiera de sus contactos

Subobjetivos [OBJ-0004] Gestión de personas que localizamos: El sistema deberá permitir al

usuario seleccionar de su agenda telefónica aquellos contactos de los que desee recibir información de localización

Importancia Vital

Urgencia Inmediatamente

Estado Validado

Page 30: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

30

Estabilidad Alta

Comentarios Un usuario de la aplicación a través de su interfaz gráfica debe poder solicitar la localización de cualquiera de sus contactos guardados en la agenda

Tabla 4 - Objetivos: OBJ-0001

OBJ-0002 Recepción de localización

Versión 1.0 ( 24/05/2015 )

Autores Priscila Crespo Bolaños

Fuentes Juan Manuel Vozmediano Torres

Priscila Crespo Bolaños

Descripción El sistema deberá proporcionarle al usuario las respuestas de localización a las solicitudes que éste haya realizado

Subobjetivos Ninguno

Importancia Vital

Urgencia Inmediatamente

Estado Validado

Estabilidad Alta

Comentarios Una vez que un usuario lanzó una solicitud de localización hacia cualquiera de sus contactos, el sistema debe ser capaz de gestionar dicha solicitud y responder al usuario. Debemos ser capaces de representar en un mapa la información de localización recibida.

Tabla 5 - Objetivos: OBJ-0002

OBJ-0003 Envio de localización propia

Versión 1.0 ( 24/05/2015 )

Autores Priscila Crespo Bolaños

Fuentes Juan Manuel Vozmediano Torres

Priscila Crespo Bolaños

Descripción El sistema deberá permitir al usuario el envio de la localización propia cuando sea solicitada

Page 31: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

31

por cualquier contacto permitido

Subobjetivos [OBJ-0005] Gestión de personas que nos localizan: El sistema deberá permitir al

usuario determinar a qué personas les permite que se envíe su localización

[OBJ-0006] Independencia de IPs: El sistema deberá poder realizar el envio de notificaciones de localización independientemente de las IPs asignadas al emisor o al receptor de dicha notificación

Importancia Vital

Urgencia Inmediatamente

Estado Validado

Estabilidad Alta

Comentarios Ninguno

Tabla 6 - Objetivos: OBJ-0003

Page 32: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

32

4. REQUISITOS DEL SISTEMA

4.1 Introducción

En este apartado vamos a realizar el proceso conocido como Ingeniería de requisitos. Esto nos permitirá

identificar las necesidades del cliente respecto del software a desarrollar, pudiendo así llegar a una solución que

se adapte lo máximo posible a sus necesidades y expectativas.

Los requerimientos del sistema que veremos a continuación nos determinarán lo que hará el sistema, y definirán

las restricciones de su operación e implementación. Acotando así la problemática planteada.

4.2 Requisitos de Información

A continuación detallaremos los requisitos de información, que nos servirán para determinar con qué

información trabajará nuestro sistema y cómo debe de hacerlo.

IRQ-0001 Información de la agenda

Versión 1.0 ( 24/05/2015 )

Autores Priscila Crespo Bolaños

Fuentes Priscila Crespo Bolaños

Dependencias [OBJ-0005] Gestión de personas que nos localizan

[OBJ-0004] Gestión de personas que localizamos

Descripción El sistema deberá almacenar la información correspondiente a la información de la agenda del usuario para poder mostrarle dicha lista de contactos a través de la interfaz gráfica de la aplicación. En concreto:

Datos específicos

Nombre

Número de teléfono

Importancia Vital

Urgencia Inmediatamente

Estado Validado

Estabilidad Alta

Comentarios Ninguno

Tabla 7 – IRQ-0001: Información de la agenda

Page 33: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

33

IRQ-0002 Informacion de contactos que se localizan

Versión 1.0 ( 24/05/2015 )

Autores Priscila Crespo Bolaños

Fuentes Priscila Crespo Bolaños

Dependencias [OBJ-0001] Solicitud de localización

[OBJ-0004] Gestión de personas que localizamos

Descripción El sistema deberá almacenar la información correspondiente a los contactos que un usuario determinado quiere localizar. En concreto:

Datos específicos

Nombre (el que figura en la agenda)

Teléfono

Importancia vital

Urgencia inmediatamente

Estado validado

Estabilidad alta

Comentarios Ninguno

Tabla 8 – IRQ-0002: Información de contactos que se localizan

IRQ-0003 Información de contactos permitidos

Versión 1.0 ( 24/05/2015 )

Autores Priscila Crespo Bolaños

Fuentes Priscila Crespo Bolaños

Dependencias [OBJ-0005] Gestión de personas que nos localizan

[OBJ-0003] Envio de localización propia

Descripción El sistema deberá almacenar la información correspondiente a los contactos a los que un determinado usuario les permite conocer la localización propia. En concreto:

Datos específicos

Nombre (el que figura en la agenda).

Teléfono.

Page 34: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

34

Importancia Vital

Urgencia Inmediatamente

Estado Validado

Estabilidad Alta

Comentarios Ninguno

Tabla 9 - IRQ-0003: Información de contactos permitidos

IRQ-0004 Información sobre el usuario solicitante

Versión 1.0 ( 24/05/2015 )

Autores Priscila Crespo Bolaños

Fuentes Priscila Crespo Bolaños

Dependencias [OBJ-0006] Independencia de IPs

Descripción El sistema deberá almacenar la información correspondiente al usuario que solicita la localización de un contacto. En concreto:

Datos específicos

IP con la que se realizó la solicitud

Puerto con el que se realizo la solicitud

Identificador del usuario que realizó la solicitud: hash (número SIM+puerto)

Importancia Vital

Urgencia Inmediatamente

Estado Validado

Estabilidad Alta

Comentarios Ninguno

Tabla 10 - IRQ-0004: Información sobre el usuario solicitante

Page 35: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

35

IRQ-0005 Información de localización

Versión 1.0 ( 24/05/2015 )

Autores Priscila Crespo Bolaños

Fuentes Priscila Crespo Bolaños

Dependencias [OBJ-0002] Recepción de localización

Descripción El sistema deberá almacenar la información correspondiente a la localización del usuario. En concreto:

Datos específicos

Latitud

Longitud

Dirección correspondiente a las coordenadas anteriores

Importancia Vital

Urgencia Inmediatamente

Estado Validado

Estabilidad Alta

Comentarios Ninguno

Tabla 11 - IRQ-0005: Información de localización

4.3. Requisitos funcionales

Los requisitos que detallaremos a continuación nos darán información sobre el funcionamiento del sistema así

como de la interacción del mismo con su entorno.

Los mostraremos en forma de diagramas de casos de usos, separados para cada uno de los subsistemas.

Page 36: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

36

Ilustración 7 - Subsistemas

Ilustración 8 - Subsistema Gestión de mensajes e IPs

Page 37: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

37

Ilustración 9 - Subsistema Gestión de la localización solicitada

Ilustración 10 - Subsistema Gestión de la localización propia

Una vez mostrados las distintas interacciones entre nuestros subsistemas y los actores pasaremos a describirlos,

y a especificar más detalladamente los distintos casos de uso

Page 38: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

38

4.3.1. Definición de los actores

En nuestro sistema vamos a tener un único actor, que será el usuario final de la aplicación.

ACT-0001 Usuario

Versión 1.0 ( 02/06/2015 )

Autores Priscila Crespo Bolaños

Fuentes Juan Manuel Vozmediano Torres

Priscila Crespo Bolaños

Descripción Este actor representa a cualquier usuario final del sistema

Comentarios Ninguno

Tabla 12 - ACT-0001: Usuario final de la aplicación

4.3.2. Casos de usos

4.3.2.1. Subsistema Gestión de mensajes e IPs

UC-0001 Enviar mensajes desde/hacia cualquier IP

Versión 1.0 ( 02/06/2015 )

Autores Priscila Crespo Bolaños

Fuentes Juan Manuel Vozmediano Torres

Priscila Crespo Bolaños

Dependencias [OBJ-0006] Independencia de IPs

[OBJ-0001] Solicitud de localización

Descripción El sistema deberá comportarse tal como se describe en el siguiente caso de uso cuando El usuario del sistema pulsa sobre el botón de "Comenzar a localizar"

Precondición -

Secuencia normal

Paso Acción

1 El actor Usuario (ACT-0001) Lanza la solicitud de localización hacia un contacto

Page 39: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

39

2 El sistema envía dicha solicitud de manera correcta independientemente de la IP origen y la IP que se quiera localizar

Postcondición -

Excepciones Paso Acción

2 Si no se puede establecer la comunicación para solicitar la localización, el sistema notificará al usuario indicándole que la localización del contacto pedido no se ha podido realizar, de manera que éste pueda volver a intentar solicitar la localización nuevamente.

Importancia Vital

Urgencia Inmediatamente

Estado Validado

Estabilidad Alta

Comentarios Ninguno

Tabla 13 - UC-0001: Enviar mensajes desde/hacia cualquier IP

UC-0002 Recibir mensajes con independencia de IPs

Versión 1.0 ( 02/06/2015 )

Autores Priscila Crespo Bolaños

Fuentes Juan Manuel Vozmediano Torres

Priscila Crespo Bolaños

Dependencias [OBJ-0002] Recepción de localización

[OBJ-0006] Independencia de IPs

Descripción El sistema deberá comportarse tal como se describe en el siguiente caso de uso cuando se produce una respuesta hacia el usuario que lanzó la solicitud

Precondición Que se haya realizado previamente una solicitud

Secuencia normal

Paso Acción

1 El actor Usuario (ACT-0001) Solicita la localización de un contacto

2 El actor Usuario (ACT-0001) Recibe una respuesta de dicho contacto

Postcondición -

Page 40: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

40

Importancia Vital

Urgencia Inmediatamente

Estado Validado

Estabilidad Alta

Comentarios Tras el envío de una solicitud, la aplicación android debe quedarse a la espera de las posibles respuestas a la misma.

Tabla 14 - UC-0002: Recibir mensajes con independencia de IPs

UC-0003 Establecer la IP y puerto del servidor

Versión 1.0 ( 02/06/2015 )

Autores Priscila Crespo Bolaños

Fuentes Juan Manuel Vozmediano Torres

Priscila Crespo Bolaños

Descripción El sistema deberá comportarse tal como se describe en el siguiente caso de uso cuando el usuario desee cambiar la IP o puerto al que se conecta

Precondición -

Secuencia normal

Paso Acción

1 El actor Usuario (ACT-0001) cambia la IP y puerto del servidor al que se quiere conectar

Postcondición -

Importancia Importante

Urgencia Inmediatamente

Estado Validado

Estabilidad Alta

Comentarios Ninguno

Tabla 15 – UC-003: Establecer la IP y puerto del servidor

Page 41: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

41

4.3.2.2. Subsistema Gestión de la localización solicitada

UC-0004 Eliminar contactos que no se quiera localizar

Versión 1.0 ( 02/06/2015 )

Autores Priscila Crespo Bolaños

Fuentes Priscila Crespo Bolaños

Dependencias [OBJ-0004] Gestión de personas que localizamos

Descripción El sistema deberá comportarse tal como se describe en el siguiente caso de uso cuando el usuario desee eliminar un usuario de su lista de “localizados”

Precondición Que el usuario se encuentre en la lista de contactos que se quieran localizar

Secuencia normal

Paso Acción

1 El sistema tiene al contacto a eliminar en la lista de localizados

2 El actor Usuario (ACT-0001) es capaz de eliminar a dicho contacto de esa lista

Postcondición -

Importancia Importante

Urgencia Inmediatamente

Estado Validado

Estabilidad Alta

Comentarios Cualquier usuario de la aplicación debe de ser capaz en cualquier momento de eliminar los contactos que se encuentren en la lista de "Localizo a..."

Tabla 16 - UC-0004: Eliminar contactos que no se quiera localizar

UC-0005 Agregar contactos a lista de localizados

Versión 1.0 ( 02/06/2015 )

Autores Priscila Crespo Bolaños

Fuentes Priscila Crespo Bolaños

Page 42: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

42

Dependencias [OBJ-0004] Gestión de personas que localizamos

Descripción El sistema deberá comportarse tal como se describe en el siguiente caso de uso cuando un usuario quiera agregar a un nuevo contacto para localizarlo

Precondición -

Secuencia normal

Paso Acción

1 El actor Usuario (ACT-0001) Accede a su lista de contactos a través de la aplicación

2 El actor Usuario (ACT-0001) Una vez encontrado el contacto que desea, lo agrega a la lista de contactos localizados

Postcondición -

Excepciones Paso Acción

2 Si el usuario seleccionado ya está en la lista de contactos localizados, el sistema no

permite volver a agregarlo a dicha lista y notifica al usuario.

Importancia Importante

Urgencia Inmediatamente

Estado Validado

Estabilidad Alta

Comentarios Cualquier usuario de la aplicación debe de ser capaz de agregar a cualquier usuario de su lista de contactos a la lista de localizados

Tabla 17 - UC-0005: Agregar contactos a lista de localizados

UC-0006 Comenzar a localizar

Versión 1.0 ( 02/06/2015 )

Autores Priscila Crespo Bolaños

Fuentes Juan Manuel Vozmediano Torres

Priscila Crespo Bolaños

Dependencias [OBJ-0004] Gestión de personas que localizamos

[OBJ-0001] Solicitud de localización

Descripción El sistema deberá comportarse tal como se describe en el siguiente caso de uso cuando el

Page 43: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

43

usuario pulsa el botón "Comenzar a localizar" de un contacto concreto

Precondición Que el contacto que se quiere localizar esté en la lista de localizados

Secuencia normal

Paso Acción

1 El actor Usuario (ACT-0001) selecciona al usuario que deseea de su lista de localizados, y pulsa sobre el botón "Comenzar a localizar"

Postcondición -

Excepciones Paso Acción

1 Si el usuario que se quiere comenzar a localizar ya está siendo localizado, el sistema deberá notificar al usuario que dicho contacto ya está siendo localizado, y no se

deberá volver a iniciar el proceso de localización de dicho usuario.

Importancia Vital

Urgencia Inmediatamente

Estado Validado

Estabilidad Alta

Comentarios Ninguno

Tabla 18 - UC-0006: Comenzar a localizar

UC-0007 Elegir tiempo con el que se reciben actualizaciones de localización

Versión 1.0 ( 02/06/2015 )

Autores Priscila Crespo Bolaños

Fuentes Juan Manuel Vozmediano Torres

Priscila Crespo Bolaños

Dependencias [OBJ-0002] Recepción de localización

Descripción El sistema deberá comportarse tal como se describe en el siguiente caso de uso cuando el usuario pulsa "Comenzar a localizar"

Precondición -

Secuencia normal

Paso Acción

1 El actor Usuario (ACT-0001) pulsa sobre el botón "Comenzar a Localizar"

Page 44: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

44

2 El sistema proporciona tres tiempos entre notificaciones para elegir por el usuario

3 El actor Usuario (ACT-0001) indica cuál de esos tiempos es el que desea

Postcondición -

Excepciones Paso Acción

3 Si el usuario no indica ningún tiempo de los propuestos, el sistema tendrá un valor

por defecto para ese tiempo que será el que use.

Importancia Importante

Urgencia Inmediatamente

Estado Validado

Estabilidad Alta

Comentarios Cuando un usuario quiere comenzar a localizar a alguno de sus contactos tiene la opción de elegir cada qué tiempo quiere recibir dicha información de localización

Tabla 19 - UC-0007: Elegir tiempo con el que se reciben actualizaciones de localización

UC-0008 Localizar a varios contactos simultáneamente

Versión 1.0 ( 02/06/2015 )

Autores Priscila Crespo Bolaños

Fuentes Priscila Crespo Bolaños

Dependencias [OBJ-0002] Recepción de localización

[OBJ-0001] Solicitud de localización

Descripción El sistema deberá comportarse tal como se describe en el siguiente caso de uso cuando el usuario esté localizando a un contacto, y quiera localizar a otro distinto

Precondición El usuario ya está localizando a un contacto determinado

Secuencia normal

Paso Acción

- -

Page 45: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

45

Postcondición -

Importancia Importante

Urgencia Inmediatamente

Estado Validado

Estabilidad Alta

Comentarios Un usuario puede localizar simultáneamente más de un contacto

Tabla 20 - UC-0008: Localizar a verios contactos simultáneamente

UC-0009 Recibir notificaciones de localización

Versión 1.0 ( 02/06/2015 )

Autores Priscila Crespo Bolaños

Fuentes Juan Manuel Vozmediano Torres

Priscila Crespo Bolaños

Dependencias [OBJ-0002] Recepción de localización

Descripción El sistema deberá comportarse tal como se describe en el siguiente caso de uso cuando un usuario del sistema solicitó la localización de uno de sus contactos y se encuentra a la espera de datos.

Precondición Estar localizando a una/varias personas

Secuencia normal

Paso Acción

1 El actor Usuario (ACT-0001) solicita la localización de un contacto

2 El sistema vence el tiempo máximo

3 El sistema deja de enviar/recibir notificaciones de localización

Postcondición -

Importancia Importante

Urgencia Inmediatamente

Estado Validado

Page 46: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

46

Estabilidad Alta

Comentarios El usuario estará recibiendo información de localización de los contactos a los que localiza durante un tiempo máximo marcado por el sistema. Una vez superado este tiempo, el usuario tendrá que lanzar una nueva solicitud de localización.

Tabla 21 - UC-0009: Recibir notificaciones de localización

UC-0010 Localizar sólo a contactos a los que no este localizando

Versión 1.0 ( 02/06/2015 )

Autores Priscila Crespo Bolaños

Fuentes Juan Manuel Vozmediano Torres

Priscila Crespo Bolaños

Dependencias [OBJ-0001] Solicitud de localización

Descripción El sistema deberá comportarse tal como se describe en el siguiente caso de uso cuando intentar localizar a un contacto que ya está siendo localizado

Precondición -

Secuencia normal

Paso Acción

- -

Postcondición -

Importancia Importante

Urgencia Inmediatamente

Estado Validado

Estabilidad Alta

Comentarios Si un usuario está localizando a un contacto, no podrá volver a realizar una solicitud de localización hacia ese mismo contacto antes de que termine el tiempo en el que recibe información de localización el él.

Tabla 22 - UC-0010: Localizar sólo a los contactos a los que no este localizando

Page 47: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

47

4.3.2.3. Subsistema de gestión de localización propia

UC-0011 Elegir contactos permitidos

Versión 1.0 ( 02/06/2015 )

Autores Priscila Crespo Bolaños

Fuentes Juan Manuel Vozmediano Torres

Priscila Crespo Bolaños

Dependencias [OBJ-0005] Gestión de personas que nos localizan

Descripción El sistema deberá comportarse tal como se describe en el siguiente caso de uso cuando un usuario de la aplicación quiera agregar a algún contacto de su agenda para permitir que le localice.

Precondición -

Secuencia normal

Paso Acción

1 El actor Usuario (ACT-0001) accede a su lista de contactos a través de la aplicación

2 El actor Usuario (ACT-0001) elige un contacto de los de su agenda para agregarlos a la lista de permitidos

Postcondición -

Importancia Importante

Urgencia Inmediatamente

Estado Validado

Estabilidad Alta

Comentarios Cualquier usuario de la aplicación debe de ser capaz de agregar a cualquier usuario de su lista de contactos a la lista de permitidos

Tabla 23 - UC-0011: Elegir contactos permitidos

UC-0012 Enviar localización propia

Versión 1.0 ( 04/06/2015 )

Autores Priscila Crespo Bolaños

Page 48: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

48

Fuentes Juan Manuel Vozmediano Torres

Priscila Crespo Bolaños

Dependencias [OBJ-0003] Envio de localización propia

[OBJ-0005] Gestión de personas que nos localizan

Descripción El sistema deberá comportarse tal como se describe en el siguiente caso de uso cuando un contacto de mi lista de permitidos solicita mi localización

Precondición El contacto que solicita mi localización debe estar en mi lista de permitidos

Secuencia normal

Paso Acción

1 El sistema recibe una petición de localización de un usuario

2 El sistema comprueba que el contacto solicitante este en la lista de contactos permitidos del usuario

3 El sistema en caso de estar en la lista de permitidos, envía un mensaje de respuesta con la localización del usuario

4 El sistema notifica al usuario de que se va a enviar la localización al contacto que la solicitó

Postcondición -

Excepciones Paso Acción

3 Si El usuario no tiene al contacto en la lista de permitidos, el sistema envía un mensaje

al contacto indicándole que no tiene permiso para conocer la localización que solicita.

Importancia Vital

Urgencia Inmediatamente

Estado Validado

Estabilidad Alta

Comentarios Ninguno

Tabla 24 - UC-0012: Enviar localización propia

Page 49: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

49

UC-0013 Modificar contactos permitidos (Agregar)

Versión 1.0 ( 04/06/2015 )

Autores Priscila Crespo Bolaños

Fuentes Juan Manuel Vozmediano Torres

Priscila Crespo Bolaños

Dependencias [OBJ-0005] Gestión de personas que nos localizan

Descripción El sistema deberá comportarse tal como se describe en el siguiente caso de uso cuando el usuario desea agregar un contacto nuevo a su lista de permitidos

Precondición El usuario a agregar no debe de estar ya en la lista de permitidos

Secuencia normal

Paso Acción

1 El actor Usuario (ACT-0001) pulsa sobre el botón "Agregar contacto"

2 El actor Usuario (ACT-0001) selecciona el contacto deseado y pulsa "Agregar a Permitidos"

Postcondición -

Excepciones Paso Acción

2 Si el contacto a agregar a permitidos ya se encontraba en dicha lista, el sistema notificará al usuario de que dicho contacto no puede agregarse, ya que ya se

encuentra en la lista.

Importancia Importante

Urgencia Inmediatamente

Estado Validado

Estabilidad Alta

Comentarios Ninguno

Tabla 25 - UC-0013: Modificar contactos permitidos (Agregar)

Page 50: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

50

UC-0014 Modificar contactos permitidos (Eliminar)

Versión 1.0 ( 04/06/2015 )

Autores Priscila Crespo Bolaños

Fuentes Juan Manuel Vozmediano Torres

Priscila Crespo Bolaños

Dependencias [OBJ-0005] Gestión de personas que nos localizan

Descripción El sistema deberá comportarse tal como se describe en el siguiente caso de uso cuando el usuario de la aplicación desea eliminar a uno de sus contactos agregados a la lista de permitidos

Precondición -

Secuencia normal

Paso Acción

1 El actor Usuario (ACT-0001) Selecciona de su lista de permitidos al contacto que desea eliminar

2 El actor Usuario (ACT-0001) Pulsa sobre dicho contacto, y selecciona la opción "Eliminar contacto"

Postcondición -

Importancia Vital

Urgencia Inmediatamente

Estado Validado

Estabilidad Alta

Comentarios Ninguno

Tabla 26 - UC-0014: Modificar contactos permitidos (Eliminar)

UC-0015 Acceder al GPS del teléfono

Versión 1.0 ( 04/06/2015 )

Autores Priscila Crespo Bolaños

Fuentes Juan Manuel Vozmediano Torres

Priscila Crespo Bolaños

Page 51: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

51

Dependencias [OBJ-0003] Envio de localización propia

Descripción El sistema deberá comportarse tal como se describe en el siguiente caso de uso cuando el usuario quiera ver su localización, o se reciba una solicitud de localización

Precondición Querer visualizar la localización propia, o bien, haber recibido una petición de localización

Secuencia normal

Paso Acción

1 El sistema recibe una petición de localización de un contacto permitido, o el propio usuario pulsa sobre el botón "Ver mi localización"

2 El sistema Accede a la información de la red y al GPS del teléfono para poder obtener las coordenadas y la dirección.

Postcondición -

Excepciones Paso Acción

2 Si El sistema no es capaz de obtener latitud y longitud, el sistema muestra un mensaje

de error, indicando que no se ha podido obtener dicha información.

Importancia Vital

Urgencia Inmediatamente

Estado Validado

Estabilidad Alta

Comentarios Ninguno

Tabla 27 - UC-0015: Acceder al GPS del teléfono

UC-0016 Consultar localización propia

Versión 1.0 ( 04/06/2015 )

Autores Priscila Crespo Bolaños

Fuentes Priscila Crespo Bolaños

Dependencias Ninguno

Descripción El sistema deberá comportarse tal como se describe en el siguiente caso de uso cuando el usuario pulsa sobre la opción de "Ver mi localización"

Page 52: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

52

Precondición -

Secuencia normal

Paso Acción

- -

Postcondición -

Importancia Quedaría bien

Urgencia Puede esperar

Estado Validado

Estabilidad Alta

Comentarios Ninguno

Tabla 28 - UC-0016: Consultar localización propia

4.4. Requisitos no funcionales

Los requisitos no funcionales, o atributos de calidad, son aquellos requisitos que se pueden usar para juzgar la

operación de un sistema en lugar de sus comportamientos específicos (requisitos funcionales). Algunos ejemplos

de requisitos funcionales son los siguientes: rendimiento, disponibilidad, accesibilidad, usabilidad, etc.

NFR-0001 Escalabilidad

Versión 1.0 ( 04/06/2015 )

Autores Priscila Crespo Bolaños

Fuentes Priscila Crespo Bolaños

Dependencias Ninguno

Descripción El sistema deberá ser fácilmente escalable ante un crecimiento en el número de usuarios

Importancia Importante

Urgencia Hay presión

Estado Validado

Estabilidad Alta

Page 53: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

53

Comentarios Ninguno

Tabla 29 - NFR-0001: Escalabilidad

NFR-0002 Interfaz

Versión 1.0 ( 04/06/2015 )

Autores Priscila Crespo Bolaños

Fuentes Priscila Crespo Bolaños

Dependencias Ninguno

Descripción El sistema deberá tener una interfaz gráfica sencilla e intuitiva

Importancia Importante

Urgencia Inmediatamente

Estado Validado

Estabilidad Alta

Comentarios Ninguno

Tabla 30 - NFR-0002: Interfaz

NFR-0003 Mantenibilidad

Versión 1.0 ( 04/06/2015 )

Autores Priscila Crespo Bolaños

Fuentes Priscila Crespo Bolaños

Dependencias Ninguno

Descripción El sistema deberá tener un mantenimiento fácil y rápido. Para ello deberán documentarse todos los cambios o actualizaciones realizadas.

Page 54: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

54

Importancia Importante

Urgencia Hay presión

Estado Validado

Estabilidad Alta

Comentarios Ninguno

Tabla 31 - NFR-0003: Mantenibilidad

NFR-0004 Usabilidad

Versión 1.0 ( 04/06/2015 )

Autores Priscila Crespo Bolaños

Fuentes Priscila Crespo Bolaños

Dependencias Ninguno

Descripción El sistema deberá tener una obtención e instalación sencilla, al igual deberá tener un uso fácil e intuitivo

Importancia Importante

Urgencia Inmediatamente

Estado Validado

Estabilidad Alta

Comentarios Ninguno

Tabla 32 - NFR-0004: Usabilidad

NFR-0005 Portabilidad

Versión 1.0 ( 04/06/2015 )

Page 55: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

55

Autores Priscila Crespo Bolaños

Fuentes Priscila Crespo Bolaños

Dependencias Ninguno

Descripción El sistema deberá usarse sólo en dispositivos con sistema operativo Android, en versiones igual o superiores a la 4.0.3 (IceCreamSandwich). Por lo tanto no se nos pide tener un sistema portable.

Importancia Importante

Urgencia Inmediatamente

Estado Validado

Estabilidad Alta

Comentarios Ninguno

Tabla 33 - NFR-0005: Portabilidad

NFR-0006 Actualizaciones

Versión 1.0 ( 04/06/2015 )

Autores Priscila Crespo Bolaños

Fuentes Priscila Crespo Bolaños

Dependencias Ninguno

Descripción El sistema deberá ser fácilmente actualizable ante las nuevas necesidades e intereses de los usuarios, quedando siempre bien documentadas dichas actualizaciones y siempre manteniendo la compatibilidad hacia atrás e interoperatibilidad entre distintas versiones.

Importancia Importante

Urgencia Hay presión

Estado Validado

Estabilidad Alta

Comentarios Ninguno

Page 56: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

56

Tabla 34 - NFR-0006: Actualizaciones

4.5. Matriz de rastreabilidad

A continuación, a modo de resumen, mostraremos dos matrices de rastreabilidad, una que nos relacionará los

requisitos de información frente a los objetivos del sistema, y otra que nos relacionará los casos de uso con los

requisitos del sistema.

Pudiendo ver así de manera directa las relaciones entre requisitos (de información y funcionales) y objetivos.

4.5.1. Matriz de rastreabilidad IRQ frente a Objetivos

TRM-0001 OBJ-0001 OBJ-0002 OBJ-0003 OBJ-0004 OBJ-0005 OBJ-0006

IRQ-0001 - - -

-

IRQ-0002

- -

- -

IRQ-0003 - -

-

-

IRQ-0004 - - - - -

IRQ-0005 -

- - - -

Tabla 35 - TRM-0001: Matriz de rastreabilidad IRQ/Objetivos

Page 57: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

57

4.4.2. Matriz de rastreabilidad UC frente a Objetivos

TRM-0002 OBJ-0001 OBJ-0002 OBJ-0003 OBJ-0004 OBJ-0005 OBJ-0006

UC-0001

- - - -

UC-0002 -

- - -

UC-0003 - - - - - -

UC-0004 - - -

- -

UC-0005 - - -

- -

UC-0006

- -

- -

UC-0007 -

- - - -

UC-0008

- - - -

UC-0009 -

- - - -

UC-0010

- - - - -

UC-0011 - - - -

-

UC-0012 - -

-

-

UC-0013 - - - -

-

UC-0014 - - - -

-

UC-0015 - -

- - -

UC-0016 - - - - - -

Tabla 36 - TRM-0002: Matriz de rastreabilidad UC frente a Objetivos

Page 58: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

58

5. ANÁLISIS DEL SISTEMA

l objetivo principal del Análisis del Sistema es servir como medio de comunicación entre ingenieros de

requisitos y desarrolladores.

En este apartado desarrollaremos el modelo estático del sistema, el modelo dinámico del sistema y los prototipos

iniciales. Dichos análisis los llevaremos a cabo mediante una serie de diagramas.

5.1. Análisis estático del sistema

En el modelo estático del sistema se deben identificar los tipos o clases de objetos así como sus asociaciones y

composiciones.

Lo representaremos para cada uno de los subsistemas vistos.

E

Page 59: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

59

5.1.1. Modelo estático: Subsistema de Gestión de mensajes e IPs

Ilustración 11 - Diagrama de clases: subsistema de gestión de mensajes e IPs.

Page 60: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

60

TYP-0001 ServidorUdp

Versión 1.0 ( 10/06/2015 )

Autores Priscila Crespo Bolaños

Dependencias Ninguno

Descripción Objeto principal que representa un servicio UDP que se encargará de hacer llegar los mensajes a su destino final con independencia de IPs.

Supertipo Ninguno

Subtipos Ninguno

Componentes Nombre Tipo Multiplicidad

- - -

Comentarios Ninguno

Tabla 37 - TYP-0001: ServidorUdp

TYP-0002 ElementoLista

Versión 1.0 ( 10/06/2015 )

Autores Priscila Crespo Bolaños

Dependencias Ninguno

Descripción Este tipo de objetos representa un elemento de la lista que almacenará la clase ServidorUdp y que se borrará si es preciso en la clase Borrado

Supertipo Ninguno

Subtipos Ninguno

Componentes Nombre Tipo Multiplicidad

- - -

Page 61: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

61

Comentarios Ninguno

Tabla 38 - TYP-0002: ElementoLista

TYP-0003 Borrado

Versión 1.0 ( 10/06/2015 )

Autores Priscila Crespo Bolaños

Dependencias Ninguno

Descripción Será la clase encargada del borrado de elementos de la lista una vez hayan permanecido en ella el tiempo máximo permitido (establecido en 35 minutos).

Supertipo Ninguno

Subtipos Ninguno

Componentes Nombre Tipo Multiplicidad

- - -

Comentarios Ninguno

Tabla 39 - TYP-0003: Borrado

TYP-0004 ArgumentosRecibidos

Versión 1.0 ( 10/06/2015 )

Autores Priscila Crespo Bolaños

Dependencias Ninguno

Descripción Este tipo de objetos representa los argumentos que el usuario le pasa al servicio por línea de comandos a la hora de ejecutarlo.

Supertipo Ninguno

Subtipos Ninguno

Componentes Nombre Tipo Multiplicidad

Page 62: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

62

- - -

Comentarios Los argumentos que se les puede pasar son: puerto de escucha del servidor, periodo, y la ruta donde desee que se guarde el fichero de logs.

Tabla 40 - TYP-0004: ArgumentosRecibidos

TYP-0005 EscribeFichero

Versión 1.0 ( 10/06/2015 )

Autores Priscila Crespo Bolaños

Dependencias Ninguno

Descripción Este tipo de objetos representa el fichero donde se quieren escribir los registros de Logs generados en la ejecución del servicio

Supertipo Ninguno

Subtipos Ninguno

Componentes Nombre Tipo Multiplicidad

- - -

Comentarios Ninguno

Tabla 41 - TYP-0005: EscribeFichero

Identificación de relaciones

Se pueden observar dos relaciones de Asociación:

La primera de ellas entre la clase principal, ServidorUdp y la clase EscribeFichero. En dónde ServidorUdp usa

un elemento de tipo EscribeFichero para poder escribir en el fichero de Logs los eventos relevantes.

La segunda relación de asociación se observa entre la clase Borrado y EscribeFichero, con la misma finalidad

que en el caso anterior, lo que se quiere es almacenar eventos en el fichero de Logs. En este caso serán eventos

correspondientes al borrado de elementos.

Relaciones de Agregación:

Se observan entre la clase ServidorUdp y ElementoLista, ya que la primera contiene un ConcurrentHashMap en

el que uno de sus elementos es de tipo ElementoLista, y dónde la clase ServidorUdp irá almacenando la

información (si procede) de los paquetes que recibe. De igual manera se relacionan Borrado y ElementoLista,

en este segundo caso Borrado eliminará si es necesario elementos de dicha lista.

Page 63: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

63

Relaciones de Dependencia:

Por último, vemos dos relaciones de dependencia entre ServidorUdp y ArgumentosRecibidos, Borrado. La clase

ServidorUdp utiliza esos otros dos tipos de datos para poder realizar de manera adecuada su función. La primera

de ella para poder realizar una correcta comprobación de los argumentos pasados como parámetros, y la segunda

de ellas para poder realizar la liberación de elementos de la lista pasado un tiempo determinado.

Todas las relaciones descritas son de multiplicidad 1:*

5.1.2. Modelo estático: Subsistema de Solicitud de localización

Para este subsistema dividiremos el diagrama en dos partes. En el primero de ellos mostraremos las clases y

relaciones entre ellas que intervienen en el proceso previo a la localización, es decir, en el proceso de acceso a

la agenda y selección de contactos que se quieren localizar. En el segundo diagrama nos ocuparemos de aquellas

clases que intervienen una vez el usuario lanzó la localización de uno de sus contactos previamente agregado.

Page 64: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

64

5.1.2.1. Selección de contactos a localizar

Ilustración 12 - Diagrama de clases: Agregar contacto a lista de localizados

Page 65: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

65

TYP-0006 MainActivity

Versión 1.0 ( 11/06/2015 )

Autores Priscila Crespo Bolaños

Dependencias Ninguno

Descripción Este tipo de objetos representa la actividad principal de la aplicación Android

Supertipo Ninguno

Subtipos Ninguno

Componentes Nombre Tipo Multiplicidad

- - -

Comentarios Su función será ir cargando distintos Fragments según sea conveniente

Tabla 42- TYP-0006: MainActivity

TYP-0007 DetalleMainFragment

Versión 1.0 ( 11/06/2015 )

Autores Priscila Crespo Bolaños

Dependencias Ninguno

Descripción Este tipo de objetos representa el layout y operaciones que se deben de realizar en la página principal de la aplicación

Supertipo Ninguno

Subtipos Ninguno

Componentes Nombre Tipo Multiplicidad

- - -

Comentarios Ninguno

Tabla 43 - TYP-0007: DetalleMainFragment

Page 66: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

66

TYP-0008 ContactosFragment

Versión 1.0 ( 11/06/2015 )

Autores Priscila Crespo Bolaños

Dependencias Ninguno

Descripción Este tipo de objetos representa el layout y operaciones que se pueden realizar sobre la sección de la aplicación que muestra la lista de contactos de la agenda

Supertipo Ninguno

Subtipos Ninguno

Componentes Nombre Tipo Multiplicidad

- - -

Comentarios Ninguno

Tabla 44- TYP-0008: ContactosFragment

TYP-0009 DetalleLocalizoFragment

Versión 1.0 ( 11/06/2015 )

Autores Priscila Crespo Bolaños

Dependencias Ninguno

Descripción Este tipo de objetos representa el layout y las operaciones que se pueden realizar sobre la lista de contactos a localizar

Supertipo Ninguno

Subtipos Ninguno

Componentes Nombre Tipo Multiplicidad

- - -

Comentarios Ninguno

Tabla 45 - TYP-0009: DetalleLocalizoFragment

Page 67: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

67

TYP-0010 TablaLocalizo

Versión 1.0 ( 11/06/2015 )

Autores Priscila Crespo Bolaños

Dependencias Ninguno

Descripción Este tipo de objetos representa a la tabla de contactos localizados dentro de la base de datos

Supertipo Ninguno

Subtipos Ninguno

Componentes Nombre Tipo Multiplicidad

- - -

Comentarios En esta clase se va a especificar la estructura que tendrá nuestra tabla. Conocida en android como 'contract class'.

Tabla 46-TYP-0010: TablaLocalizo

TYP-0011 EntradaTabla

Versión 1.0 ( 11/06/2015 )

Autores Priscila Crespo Bolaños

Dependencias Ninguno

Descripción Este tipo de objetos representa la estructura (columnas) que tendrá la tabla de localizados

Supertipo Ninguno

Subtipos Ninguno

Componentes Nombre Tipo Multiplicidad

- - -

Comentarios Ninguno

Tabla 47-TYP-0011: EntradaTabla

Page 68: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

68

TYP-0012 MySQLiteHelper

Versión 1.0 ( 11/06/2015 )

Autores Priscila Crespo Bolaños

Dependencias Ninguno

Descripción Clase de ayuda para la creación y gestión de la base de datos de nuestra aplicación

Supertipo Ninguno

Subtipos Ninguno

Componentes Nombre Tipo Multiplicidad

- - -

Comentarios Nuestra base de datos contendrá dos tablas: la tabla de contactos localizados, y la tabla de contactos permitidos. Se trata de una base de datos local al teléfono.

Tabla 48- TYP-0012: MySQLiteHelper

Identificación de relaciones

La clase principal, MainActivity, tiene una relación de asociación con la clase DetalleMainFragment, ya que la

primera contiene un elemento de la segunda, y cuando es preciso se encarga de cargar el contenido de

DetalleMainFragment. También observamos otra relación de asociación entre la clase DetalleLocalizoFragment

y MySQLiteHelper, en el que la primera posee un elemento de la segunda que usará para poder acceder a la

tabla de localizados existente en la base de datos.

Podemos ver cinco relaciones de dependencia, la primera de ellas entre MainActivity con ContactosFragment,

ya que usa esta clase para mostrar la lista de contactos y permitir al usuario realizar operaciones con ellos.

La segunda relación de dependencia es de MainActivity con la clase DetalleLocalizoFragment, en este caso la

clase MainActivity muestra la clase DetalleLocalizoFragment cuando es oportuno, mostrándole así al usuario la

lista de contactos localizados y permitiéndole realizar operaciones sobre ellos.

La tercera relación de dependencia que encontramos es entre ContactosFragment y MySQLiteHelper. La

primera instancia un elemento del tipo MySQLiteHelper para tener así acceso a la base de datos del sistema, y

poder agregar contactos a la tabla de localizados, esto se ve representado en la otra relación de dependencia que

va dirigida desde ContactosFragment hacia EntradaTabla, ya que utiliza dicha clase para la inserción de datos

en las distintas columnas.

La quinta relación de dependencia es entre MySQLiteHelper y EntradaTabla, esto es así porque la primera de

ellas necesitará acceso a la estructura interna de la tabla de localizados para poder crearla en la base de datos.

Por último, tenemos una relación de composición entre TablaLocalizo y EntradaTabla ya que EntradaTabla es

una clase interna a TablaLocalizo que define la estructura de dicha tabla.

Page 69: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

69

5.1.2.2. Proceso de solicitud de localización

Ilustración 13 – Diagrama de clases: Proceso de localización

Page 70: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

70

Vamos a definir los datos que no se hayan definido en el apartado anterior.

TYP-0013 ClienteUdp

Versión 1.0 ( 11/06/2015 )

Autores Priscila Crespo Bolaños

Dependencias Ninguno

Descripción Este tipo de objetos representa un cliente UDP que va a realizar el envio del mensaje que le llega mediante el protocolo UDP

Supertipo Ninguno

Subtipos Ninguno

Componentes Nombre Tipo Multiplicidad

- - -

Tabla 49 - TYP-0013: ClienteUdp

TYP-0014 RecibeUdp

Versión 1.0 ( 11/06/2015 )

Autores Priscila Crespo Bolaños

Dependencias Ninguno

Descripción Este tipo de objetos representa un receptor UDP, estará a la escucha en un puerto para la recepción de los primeros paquetes.

Supertipo Ninguno

Subtipos Ninguno

Componentes Nombre Tipo Multiplicidad

- - -

Comentarios Ninguno

Tabla 50 - TYP-0014: RecibeUdp

Page 71: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

71

TYP-0015 Temporizador

Versión 1.0 ( 11/06/2015 )

Autores Priscila Crespo Bolaños

Dependencias Ninguno

Descripción Este tipo de objetos representa un temporizador que va a estar durmiendo un tiempo dado, y al despertar realizará una determinada tarea

Supertipo Ninguno

Subtipos Ninguno

Componentes Nombre Tipo Multiplicidad

- - -

Comentarios Vamos a tener dos instancias de este tipo: esperaServidor y esperaCliente. Según qué instancia sea realizará una tarea u otra al despertar, y estará el proceso dormido un tiempo distinto.

Tabla 51-TYP-0015: Temporizador

TYP-0016 TemporizadorEnvio

Versión 1.0 ( 11/06/2015 )

Autores Priscila Crespo Bolaños

Dependencias Ninguno

Descripción Este tipo de objetos representa un temporizador que va a estar durmiendo, y al despertar va a enviar un mensaje determinado

Supertipo Ninguno

Subtipos Ninguno

Componentes Nombre Tipo Multiplicidad

- - -

Page 72: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

72

Comentarios Tendremos dos instancias de este tipo: esperaRefresco y esperaEnvío (este último actúa en la gestión de localización propia). Según en qué instancia estemos cambiará el mensaje que se envíe al despertar.

Tabla 52 - TYP-0016: TemporizadorEnvio

TYP-0017 Notificaciones

Versión 1.0 ( 11/06/2015 )

Autores Priscila Crespo Bolaños

Dependencias Ninguno

Descripción Este tipo de objetos representa una notificación que se le va a mostrar al usuario

Supertipo Ninguno

Subtipos Ninguno

Componentes Nombre Tipo Multiplicidad

- - -

Comentarios Ninguno

Tabla 53 - TYP-0017: Notificaciones

TYP-0018 GestionaNotificacion

Versión 1.0 ( 11/06/2015 )

Autores Priscila Crespo Bolaños

Dependencias Ninguno

Descripción Es una clase que va a gestionar el click del usuario sobre la notificación

Supertipo Ninguno

Subtipos Ninguno

Componentes Nombre Tipo Multiplicidad

Page 73: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

73

- - -

Comentarios En caso de mostrar una notificación con contenido de localización esta clase extraerá de la notificación la Latitud y Longitud, para poder posteriormente mostrarle la localización al usuario en un mapa.

Tabla 54 - TYP-0018: GestionaNotificacion

TYP-0019 VerMapaFragment

Versión 1.0 ( 11/06/2015 )

Autores Priscila Crespo Bolaños

Dependencias Ninguno

Descripción Este tipo de objetos representa el layout del mapa con el marcador en la dirección donde se encuentra el contacto del que se recibió la notificación.

Supertipo Ninguno

Subtipos Ninguno

Componentes Nombre Tipo Multiplicidad

- - -

Comentarios Ninguno

Tabla 55 - TYP-0019: VerMapaFragment

TYP-0020 ReceptorUdp

Versión 1.0 ( 11/06/2015 )

Autores Priscila Crespo Bolaños

Dependencias Ninguno

Descripción Este tipo de objetos representa la clase que va a estar a la escucha para recibir un paquete en un puerto dado que se le indique. Tras recibir un paquete, termina la escucha.

Supertipo Ninguno

Subtipos Ninguno

Page 74: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

74

Componentes Nombre Tipo Multiplicidad

- - -

Comentarios Ninguno

Tabla 56 – TYP-0020: ReceptorUdp

Identificación de relaciones

En este diagrama vemos dos relaciones de asociación, que son las existentes entre ClienteUdp y Temporizador,

y entre VerMapaFragment y AddressResultReceiver. En la primera de ellas la clase ClienteUdp contiene dos

instancias del tipo Temporizador, que lanzará cuando sea adecuado. En la segunda, VerMapaFragment contiene

un elemento de tipo AddressResultReceiver, que será a través del cuál se reciba la dirección correspondiente a

una latitud y longitud dadas. Estas relaciones son de 1:*.

El resto de relaciones que observamos en el diagrama son de tipo dependencia. Unas clases usan/llaman a otras

de manera que al final se consiga una correcta funcionalidad del sistema.

5.1.3. Modelo estático: Subsistema de Gestión de localización propia

Este apartado vamos a dividirlo en tres partes, el primero de ellos como en el caso anterior será el paso previo al

envío de localización propia, el proceso de agregar contactos a la lista de permitidos. El segundo diagrama

mostrará las clases que intervienen en el proceso de envío de dicha localización, mientras que en el último

representaremos las clases implicadas cuando el usuario decide ver su propia localización.

5.1.3.1. Selección de contactos permitidos

Ilustración 14 - Diagrama de clases: selección de contactos permitidos

Page 75: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

75

TYP-0021 DetallePermitoFragment

Versión 1.0 ( 11/06/2015 )

Autores Priscila Crespo Bolaños

Dependencias Ninguno

Descripción Este tipo de objetos representa el layout y operaciones que se pueden hacer sobre la parte de la aplicación que muestra los contactos permitidos

Supertipo Ninguno

Subtipos Ninguno

Componentes Nombre Tipo Multiplicidad

- - -

Comentarios Ninguno

Tabla 57-TYP-0021: DetallePermitoFragment

TYP-0022 TablaPermitidos

Versión 1.0 ( 11/06/2015 )

Autores Priscila Crespo Bolaños

Dependencias Ninguno

Descripción Este tipo de objetos representa la estructura (columnas) que tendrá la tabla de contactos permitidos

Supertipo Ninguno

Subtipos Ninguno

Componentes Nombre Tipo Multiplicidad

- - -

Comentarios Ninguno

Tabla 58 – TYP-0022: TablaPermitidos

Page 76: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

76

Identificación de relaciones

En este diagrama tenemos una relación de asociación entre el elemento DetallePermitoFragment y

SQLiteHelper, ya que el primero contiene un objeto del tipo del segundo. Dicho objeto lo emplea para poder

acceder a la base de datos, y por tanto poder modificar y mostrar la lista de contactos permitidos.

Al igual que en el diagrama de selección de contactos para localizar, tenemos la relación de composición entre

la clase TablaPermitidos que definirá la estructura de esta tabla mediante la clase EntradaTabla, que nos indica

las columnas de dicha tabla.

El resto de relaciones son de tipo dependencia, la clase principal MainActivity muestra la agenda de contactos

mediante ContactosFragment. Dicha clase para poder agregar contactos a la lista de permitidos necesita poder

acceder a la base de datos, mediante la clase SQLiteHelper, y poder modificar las distintas entradas de la tabla

permitidos en la base de datos, mediante la clase EntradaTabla.

Por otro lado, la clase DetallePermitoFragment también usa a la clase EntradaTabla en caso de que se quiera

eliminar un contacto de la lista de permitidos, poder borrar dicha entrada de la tabla.

5.1.3.2. Proceso de envío de la localización propia

Ilustración 15 - Diagrama de clases: envío de localización propia

Page 77: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

77

TYP-0023 SmsReceptor

Versión 1.0 ( 11/06/2015 )

Autores Priscila Crespo Bolaños

Dependencias Ninguno

Descripción Este tipo de objetos representa un receptor de sms

Supertipo Ninguno

Subtipos Ninguno

Componentes Nombre Tipo Multiplicidad

- - -

Comentarios Esta clase recibirá sms, comprobará que sea de la aplicación y si es así efectuará las operaciones que sean convenientes. Ignorará todos aquellos mensajes que no sean de la aplicación.

Tabla 59- TYP-0023: SmsReceptor

TYP-0024 ObtenerLocalizacion

Versión 1.0 ( 11/06/2015 )

Autores Priscila Crespo Bolaños

Dependencias Ninguno

Descripción Este tipo de objetos representa la clase encargada de acceder al gps del teléfono y obtener la localización de la forma latitud,longitud.

Supertipo Ninguno

Subtipos Ninguno

Componentes Nombre Tipo Multiplicidad

- - -

Comentarios Una vez obtenida la localización, deberá encargarse de llamar a la clase que realizará el envío (ClienteUdp) o a la clase que muestra la localización propia

Page 78: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

78

(LocalizacionPropiaActivity), según proceda

Tabla 60- TYP-0024: ObtenerLocalización

Identificación de relaciones

Al igual que en el caso anterior, y con el mismo motivo vemos la relación de composición entre TablaPermitidos

y EntradaTabla.

Existe una relación de asociación entre SmsReceptor y MySQLiteHelper ya que el primero contiene un

elemento del tipo del segundo, que usará para poder realizar la comprobación de si el contacto que le solicita la

localización se encuentra en la tabla de Permitidos.

El resto de relaciones son de tipo dependencia. La clase SmsReceptor usa a la clase EntradaTabla para poder

acceder a los nombres de las columnas y luego poder realizar la consulta. También utiliza la a la clase

ObtenerLocalización en caso de estar el contacto permitido, para una vez obtenida latitud y longitud llamar a la

clase ClienteUdp que enviará la información de localización. En caso de que el contacto no se encuentre en

permitidos, directamente llamará a la clase ClienteUdp para enviar el mensaje de error.

También, la clase SmsReceptor usa a la clase TemporizadorEnvio para el envío periódico de mensajes de

localización. Y la clase Notificaciones para, en caso de enviar la localización, poder informar al contacto a quién

le esta enviando su localización.

5.1.3.3. Visualización de la localización propia

Ilustración 16 - Diagrama de clases: Visualización de localización propia

Page 79: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

79

Identificación de relaciones

En este caso existe una relación de dependencia entre MainActivity, que llama a ObtenerLocalización y ésta

última, una vez obtenidas las coordenadas del usuario lanza la actividad LocalizacionPropiaActivity, que se

encargará de mostrar el mapa con la posición del usuario cargando el fragment VerMapaFragment.

Las relaciones de asociación y dependencia entre VerMapaFragment, AddressResultReceiver y

AddressIntentService ya se explicaron anteriormente.

TYP-0025 LocalizacionPropiaActivity

Versión 1.0 ( 11/06/2015 )

Autores Priscila Crespo Bolaños

Dependencias Ninguno

Descripción Este tipo de objetos representa la actividad que mostrará el mapa con la posición del usuario de la aplicación cuando éste lo solicite.

Supertipo Ninguno

Subtipos Ninguno

Componentes Nombre Tipo Multiplicidad

- - -

Comentarios Ninguno

Tabla 61 – TYP-0025: LocalizacionPropiaActivity

5.2. Análisis dinámico del sistema

En este apartado especificaremos las operaciones del sistema. Lo haremos mediante diagramas de flujos

diferenciados igualmente para cada uno de los subsistemas.

5.2.1. Acciones gestión de mensajes e IPs

El usuario debe de poder recibir y enviar mensajes de localización independientemente de las IPs origen y

destino.

- UC-0001: Enviar mensajes desde/hacia cualquier IP

- UC-0002: Recibir mensajes con independencia de IPs

- UC-003: Establecer la IP y puerto del servidor al que se conecta.

Page 80: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

80

Ilustración 17 – Envío y recepción de mensajes con independencia de IPs

Page 81: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

81

Ilustración 18 – Configuración de IP y puerto del servidor

5.2.2. Acciones de solicitud de localización

En los siguientes diagramas se cubrirán los siguientes casos de usos:

- UC-0004: Eliminar contactos que no se quiera localizar.

- UC-0005: Agregar contactos a lista de localizados.

- UC-0006: Comenzar a localizar.

Page 82: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

82

- UC-0007: Elegir tiempo con el que se reciben actualizaciones de localización.

- UC-0008: Localizar a varios contactos simultáneamente.

- UC-0009: Recibir notificaciones de localización.

- UC-0010: Localizar solo a contactos a los que no se esté localizando.

Ilustración 19 - Acción de agregar a un contacto a “Localizados”

Page 83: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

83

Ilustración 20 - Acción de comenzar a localizar

5.2.3. Acciones de gestión de localización propia

En los siguientes diagramas se cubrirán los siguientes casos de usos:

- UC-0011: Elegir contactos permitidos.

- UC-0012: Enviar localización propia.

- UC-0013: Modificar los contactos permitidos (Agregar).

- UC-0014: Modificar los contactos permitidos (Eliminar).

- UC-0015: Acceder al GPS del teléfono.

- UC-0016: Consultar la localización propia.

Page 84: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

84

Ilustración 21 - Acción de envío de localización propia

Page 85: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

85

Ilustración 22 - Acción de modificar lista de "Permitidos"

Page 86: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

86

Ilustración 23 - Acción de consultar localización propia

5.3. Prototipo del sistema

n este apartado haremos el desarrollo del prototipo inicial de la aplicación Android a desarrollar. Según la

información recopilada hasta ahora podemos ver que nuestro diseño debe de tener 5 partes principales:

- Vista principal de la aplicación.

- Vista de acceso a la agenda.

- Vista de contactos permitidos.

- Vista de contactos localizados.

- Vista donde se muestre la localización propia.

Realizamos este prototipo únicamente para la aplicación Android, ya que es el único componente del sistema

con el que el usuario final interactuará directamente a través de su interfaz gráfica.

A continuación se mostrarán los diseños de la interfaz pensados para cada una de las partes.

E

Page 87: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

87

Ilustración 24 - Interfaz de usuario: Página principal

Ilustración 25 - Interfaz de usuario: Agregar contactos a las listas

Page 88: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

88

Ilustración 26 - Interfaz de usuario: Lista de contactos que localizamos

Ilustración 27 - Interfaz de usuario: Opciones sobre contactos que localizamos

Page 89: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

89

Ilustración 28 - Interfaz de usuario: Elección del tiempo entre notificaciones

Ilustración 29 - Interfaz de usuario: Contactos permitidos

Page 90: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

90

Ilustración 30 - Interfaz de usuario: Mapa con la localización del contacto

Page 91: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

91

6. DISEÑO DEL SISTEMA

n este apartado vamos a ocuparnos del diseño del sistema. Lo dividiremos en cada uno de los subsistemas

con los que estamos trabajando. Igualmente diseñaremos la interfaz de usuario, que en nuestro caso es de

vital importancia ya que es el único médio del que dispone el usuario para interactuar con el sistema.

6.1. Clases: Subsistema de gestión de mensajes e IPs

6.1.1. ServidorUdp

Es la clase principal de este subsistema, esta clase representa un servicio UDP que permanece a la escucha de

datos en un puerto determinado por defecto. Al recibir un paquete lo procesa y efectúa la operación que sea

necesaria. Para ello tiene una serie de atributos y métodos:

- Con los métodos compruebaArgumentos, muestraHelp y muestraUso, se realiza una

comprobación de los arguementos que se les pase como parámetros a la hora de ejecutar. En

caso de estar todos los parámetros correctos se procederá la escucha UDP, en caso contrario

se mostrará al usuario una ayuda del uso de los mismos.

- Tras recibir un paquete, el método procesaDatos nos devuelve el tipo del paquete recibido

(solicitud, respuesta, error o refresco). Para ello usa los datos recibidos y las cadenas con los

tipos por defecto para la comparación.

- Una vez conocido el tipo del mensaje, y dependiendo de cuál sea, se procederá a ejecutar los

siguientes métodos: guardaElemento (para mensajes de solicitud o refresco) y buscaLista

(para mensajes de respuesta y de error).

- Con el método enviaPaquete, reenvíamos el paquete que nos llegó (respuesta, error) hacia su

destino final.

Esta clase almacena información sobre los destinos a los que debe de reenvíar dicha información en su atributo

listaElementos, que es del tipo ConcurrentHashMap donde almacena objetos de tipo ElementoLista

identificados con una Key. Estos elementos del tipo ElementoLista los describiremos más adelante.

A su vez esta clase hace uso de la clase Borrado para que pasado un tiempo, se puedan eliminar elementos de la

lista aterior. También hace uso de la clase EscribeFichero, para poder actualizar el fichero de logs con cada

paquete que recibe/reenvía.

E

Page 92: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

92

Ilustración 31 - Clase ServidorUdp

6.1.2. ArgumentosRecibidos

Esta clase almacena en sus atributos los parámetros que se les pasa por línea de comandos en el momento de

ejecución (si se les pasa). En caso contrario almacenará los valores por defecto para dichos parámetros.

Ilustración 32 - Clase ArgumentosRecibidos

Page 93: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

93

6.1.3. Borrado

Esta clase es una clase que actúa de temporizador y pasado el tiempo que está “durmiendo”, se “despierta” y

ejecuta la función eliminaElementos, esto lo hace siguiendo el siguiente criterio: borrará sólo aquellos elementos

que lleven un tiempo en la lista superior al valor del atributo tiempo_max.

También usa la clase EscribeFichero para que una vez terminada de recorrer la lista, indique en el fichero de

logs el número de paquetes que ha borrado.

Ilustración 33 - Clase Borrado

6.1.4. ElementoLista

Esta clase representa a un elemento de la lista que actualizan ServidorUdp y Borrado. Se trata de una lista en

dónde se guarda la ip origen, puerto origen del paquete de solicitud o refresco que nos llegó, y el tiempo en el

que se recibió dicho paquete. Es decir este elemento guarda la información que necesita el servidorUdp para

poder hacer llegar el paquete recibido a su destino.

Ilustración 34 - Clase ElementoLista

6.1.5. EscribeFichero

Mediante el método público escibreFicheroLog, esta clase escribe la cadena que se le pasa como parámetro en

el fichero que se le indica en el constructor (ficheroLog).

Page 94: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

94

Ilustración 35 - clase EscribeFichero

6.2. Clases: Actividad principal

Esta es la clase principal de la aplicación. Se encargará de cargar cada uno de los fragments con su funcionalidad

y estilo asociados.

Con las funciones click_recibo y click_envio, nos permitirá navegar por la lista de contactos permitidos

(click_envio) y de los localizados (click_recibo). También gestionará los clicks del usuario en los botones del

menú superior de la aplicación mediante la función onOptionsItemSelected.

Por último, también será la encargada de controlar la salida de la aplicación cuando el usuario pulse la tecla

“back”.

Ilustración 36 - Clase principal: ActivityMain

6.3. Clases: ContactosFragment

Esta clase se encarga de cargar su propio layout en el método onCreateView, y se utiliza para realizar acciones

sobre la lista de contactos que muestra.

- Con los métodos onTextChanged, beforeTextChanged, afterTextChanged y runQuery somos

capaces de filtrar la lista de contactos según las letras que vayamos escribiendo en el cuadro

de texto y mostrar así sólo los contactos que comiencen con esa cadena que escribimos.

- Por otro lado, para poder mostrar un menú para cada contacto permitiendo así que el usuario

pueda interactuar con ellos tenemos el método onCreatecontextMenu. Para poder gestionar y

Page 95: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

95

actuar en consecuencia al elemento del menú que pulsó el usuario tenemos el método

onContextItemSelected.

Ilustración 37 – Clase ContactosFragment

6.4. Clases: Base de datos

6.4.1. MySQLiteHelper

Como dijimos anteriormente en el análisis, esta es una clase de ayuda que nos ayudará a gestionar nuestra base

de datos SQLite.

- onCreate: con este método, y utilizando las sentencias guardadas en los String

CREA_LOCALIZO y CREA_PERMITO me permitirá crear las tablas Localizo y

Permitidos respectivamente.

- onUpgrade nos permite actualizar la base de datos a una versión nueva, debe borrar los datos

existentes haciendo uso de las sentencias guardadas en sus atributos

“DELETE_LOCALIZO” y “DELETE_PERMITO”, después de eliminarlas debe de volver

a crear los datos llamando a la función onCreate.

Ilustración 38 - Clase MySQLiteHelper.

Page 96: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

96

6.4.2. TablaLocalizo

Esta clase contiene a otra clase, EntradaTabla, que nos define la estructura de la tabla. EntradaTabla

implementará la interfaz ‘BaseColumns’.

Ilustración 39 - Clase TablaLocalizo y EntradaTabla

6.4.2.1. Estructura de la tabla “Localizados”

Campo Tipo Nulo PK FK

_id integer No Sí No

nombre text No No No

telefono text No No No

Tabla 62 – Tabla Localizados

6.4.3. TablaPermitidos

Ilustración 40 – Clase TablaPermitidos y EntradaTabla

Page 97: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

97

6.4.3.1. Estructura de la tabla “Permitidos”

Campo Tipo Nulo PK FK

_id integer No Sí No

nombre text No No No

telefono text No No No

Tabla 63 – Tabla permitidos

Para las tablas hemos seguido la misma estructura en la que guarda Android los contactos en la agenda. Aunque

el número de teléfono podría ser clave primaria ya que es único, Android le asigna a cada contacto un

identificador, y ese mismo identificador del contacto en la agenda será el que usaremos para distinguir a los

contactos de nuestras tablas.

6.5. Clases: Subsistema de solicitud de localización

6.5.1. DetalleLocalizoFragment

Esta clase se encarga de mostrar su propio layout mediante su método onCreate. Además ofrece operaciones a

realizar con los contactos que aparezcan en la lista.

- Mediante el método onCreateContextMenu y onContextItemSelected se le permitirá al

usuario interactuar con los contactos que tenga en esta lista vía un menú. Podrán eliminarse

contactos o comenzar a localizar.

- Si lo que se desea es comenzar la localización, mediante la función mostrarDialogo se le

permitirá al usuario elegir el tiempo entre notificaciones, y una vez elegido se llamará a la

función comienzaLocalizacion.

- Sobre los atributos cabe destacar que listaLocalizados nos almacenará los contactos que

estemos localizando en un momento dado, de manera que si se vuelve a comenzar la

localización el sistema no nos lo permita. Mediante el método público eliminaElementoLista

se podrán eliminar elementos de dicha lista una vez transcurrido el tiempo máximo de

localización.

Page 98: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

98

Ilustración 41 – Clase DetalleLocalizoFragment

6.5.2. ClienteUdp

Esta clase se encarga de recibir el mensaje UDP a enviar almacenado en la variable mensaje_udp, comprueba el

tipo del mensaje mediante su método getTipoMensaje, si se trata de un mensaje de solicitud entonces, mediante

su método getHash obtiene el hash, que agregará al mensaje de solicitud, posteriormente lo envía, y lanza la

clase RecibeUdp, que se quedará a la escucha de paquetes.

En caso de que la variable mensaje_udp contenga un mensaje de error o respuesta no habrá que hayar ningún

hash, sólo será necesario enviar el mensaje al servidor y cerrar el puerto con método cierraSocket.

Esta clase también se encargará de instanciar dos elementos de tipo Temporizador, para prevenir que la

aplicación se quede indefinidamente a la espera en caso de que el servidor o el cliente no estén disponible.

Otro método a destacar es el método desbloqueaUdp, que nos permitirá salir del método bloqueante receive()

de los sockets mediante el envío de un automensaje UDP.

Page 99: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

99

Ilustración 42 - Clase clienteUdp

6.5.3. RecibeUdp

Esta clase se ejecuta en segundo plano. Es llamada desde la clase ClienteUdp. Los atributos de esta clase

almacenan el nombre del contacto a localizar, el teléfono del contacto a localizar, el hash con el que se

identificará la conexión con ese contacto y el tiempo con el que se desea recibir notificaciones del contacto.

Esta clase será la encargada de quedarse a la escucha de mensajes UDP. Al recibir un mensaje esta clase deberá

procesarlo para saber de qué tipo se trata, y en función del tipo realizar una operación u otra. En el caso de que

sea un mensaje de tipo error o respuesta, lanzará la clase Notificaciones que se encargará de mostrarle la

notificación al usuario. Si por el contrario se trata del tipo solicitud, deberá enviar un sms al contacto al que

quiere localizar para desencadenar así el proceso de envío de localización.

Page 100: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

100

Ilustración 43- Clase RecibeUdp

6.5.4. Notificaciones

Esta clase es la encargada de llamar al método mostrarNotificacion, que mostrará la notificación en la pantalla

del dispositivo y dependiendo del tipo de notificación del que se trate, permitirá o no que el usuario interactue

con ella al hacer click sobre la misma.

Ilustración 44 - Clase Notificaciones

6.5.5. Temporizador

Esta clase se encarga de gestionar los tiempos de espera de la aplicación:

- Espera del servidor: para prevenir la escucha indefinida en caso de que el servidor no

responda.

- Espera del cliente: para prevenir la escucha indefinida en caso de que el contacto que debería

responder con su localización no lo haga.

Esta clase deberá encargarse de temporizar los distintos tiempos, y en caso de que sea necesario, cerrar el socket

de escucha. Para poder realizar su tarea de forma adecuada se le pasa el Socket actual de escucha (por si debe

cerrarlo), el tipo de espera en la que se encuentre (existen las dos nombradas previamente), y el tiempo (tiempo

en el que tiene que estar “durmiendo”).

Page 101: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

101

Ilustración 45 – Clase Temporizador

6.5.6. TemporizadorEnvio

Esta clase se utilizará tanto en el subsistema de solicitud de localización (el que estamos tratando) como en el

subsistema de gestión de localización propia.

La función de este temporizador es, igual que el anterior contabilizar un tiempo dado como tiempo_envio, y al

despertar, según el tipo de espera en el que estemos realizar una función u otra:

- Tipo_espera = refresco. Significa que debemos enviar un mensaje al servidor para actualizar

el socket de escucha y mantener la comunicación. Se cerrará el socket anterior de escucha y

se abrirá uno nuevo a través del cuál se enviará el mensaje de refresco. Posteriormente

lanzaremos el AsyncTask RecepciónUdp, proceso que se mantendrá a la escucha en el nuevo

puerto pasado como parámetro.

- Tipo_espera = espera_envío. Significa que debemos de enviar un mensaje con nuestra

localización.

Esta clase TemporizadorEnvio, se estará ejecutando durante el tiempo máximo que dura el proceso de

localización.

Ilustración 46 – Clase TemporizadoEnvio

Page 102: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

102

6.5.7. ReceptorUdp

Se trata de una clase que extiende de AsyncTask y es llamada desde TemporizadorEnvio en el caso de que se

mande un paquete de refresco. La función de esta clase es estar a la escucha de un paquete UDP en el Puerto

pasado como parámetro (Puerto por donde se envió el paquete de refresco anterior). En esta clase solo se

recibirán mensajes de tipo “respuesta”. Al recibir un paquete, muestra la notificación adecuada y termina la

tarea.

Ilustración 47 – Clase ReceptorUdp

6.5.8. GestionaNotificacion

Esta clase es llamada por la clase Notificacion, se encarga de coger los datos de la notificación: Nombre del

contacto, longitud y latitud.

Una vez con estos datos cargará el fragment VerMapaFragment, que será la clase encargada de mostrar la

dirección y el marcador en el mapa a partir de la latitud y longitud pasadas.

Ilustración 48 - Clase GestionaNotificacion

6.5.9. VerMapaFragment, AddressResultReceiver y AddressIntentService

Esta es la clase encargada de pintar el mapa y colocar el marcador en la posición indicada por las coordenadas

de latitud y longitud. Mediante su método startIntentService, llamará a un servicio Android

(AddressIntentService) que nos devolverá a través del método onReceiveResult, la dirección correspondiente a

la latitud y longitud dadas.

La clase AdressIntentService es la encargada de, usando un Geocoder transformar las coordenadas de latitud y

longitud a una dirección. Mediante el método deliverResultToReceiver, enviará esta dirección a la clase

AddressResultReceiver mostrada antes.

Page 103: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

103

Ilustración 49 - Clases VerMapaFragment, AddressResultReceiver, AddresIntentService

6.6. Clases: Subsistema de gestión de la localización propia

6.6.1. DetallePermitoFragment

Al igual que en las clases ContactosFragment y DetallePermitoFragment, esta clase proporciona el estilo de esta

sección de la aplicación, y permite al usuario realizar operaciones sobre los contactos de esta lista. El número de

operaciones está limitado a una: Eliminar contactos.

Ilustración 50 – Clase DetallePermitoFragment

Page 104: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

104

6.6.2. SmsReceptor y ObtenerLocalizacion

Cuando el teléfono recibe un SMS lo recoge en la clase SmsReceptor dentro de su atributo msgRecibido y lo

procesa para comprobar que provenga de la aplicación, es decir, que comience con la cadena “[LOCALIZAPP]”

Una vez confirmamos que efectivamente, el sms pertenece a nuestra aplicación extraemos el emisor y

comprobamos si se encuentra en la lista de permitidos. En caso negativo enviamos un mensaje de error. En caso

de que si esté permitido el contacto, llamamos a la clase ObtenerLocalización, que se encargará de consultar la

localización.

En el proceso de envío de la localización propia también intervienen las clases ClienteUdp (ver punto 6.5.2) para

enviar los mensajes, ya sea los de localización o de error (en caso de que el solicitante no esté en la lista de

permitidos) y TemporizadorEnvio (ver punto 6.5.6), que se usará en este subsistema para controlar la

periodicidad de los mensajes de localización que se envíen.

Page 105: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

105

Ilustración 51 – Clases SmsReceptor y ObtenerLocalización

Page 106: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

106

6.7. Clases: Interfaz gráfica

La clase ActivityMain, va cargando en la interfaz del usuario distintos fragments, cada uno de los cuales tiene

un layout asociado (en forma de fichero .xml) que será el que contiene la información sobre los elementos de la

pantalla, su posición, tamaño, color etc.

La clase SplashActivity, en su método onCreate carga su layout asociado, y nos mostrará el splash de bienvenida

durante dos segundos, pasado este tiempo dará paso a la actividad principal la cuál tiene un layout asociado

(activity_main.xml) que es un contenedor vacío dónde irá cargando según sea conveniente los diversos

fragments con sus layouts asociados. En un principio el layout cargado es el correspondiente a la página principal

(fragment_main.xml). En los métodos onCreateView, cada fragment carga su layout propio.

Ilustración 52 - Clases de la interfaz gráfica I

Page 107: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

107

En el caso de las actividades LocalizacionPropiaActivity y GestionaNotificacion ambas tienen como layout un

contenedor vacío en el que cargarán el fragment VerMapaFragment con su layout correspondiente.

Ilustración 53 – Clases de la interfaz gráfica II

Page 108: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

108

7. IMPLEMENTACIÓN DEL SISTEMA

n este apartado nos centraremos en cómo hemos implementado los aspectos más importantes del problema

de envío de mensajes en el sistema.

7.1. Escenario

El escenario de comunicaciones que se nos plantea es el siguiente: tendremos un usuario de nuestra aplicación,

conectado ya sea a una red wifi o móvil que desea realizar la localización de otro usuario, igualmente conectado

a una red wifi o móvil y debemos conseguir que los mensajes lleguen correctamente.

Para poder realizar dicha comunicación, dado que tenemos un equipo NAT por medio, precisamos de un servicio

intermedio entre ambos clientes de la aplicación que procese y encamine los mensajes. Dicho servidor lo

desplegaremos en saeta.us.es.

En el siguiente diagrama mostramos de manera gráfica la situación.

Ilustración 54 – Escenario planteado

7.1.1. Flujo de mensajes

En este apartado intentaremos mostrar el funcionamiento global de la solución adoptada mediante un diagrama

de paso de mensajes, de esta manera podremos hacernos una idea clara de cómo funciona el sistema

implementado.

Cabe destacar la importancia de los primeros mensajes en la comunicación (solicitud al servidor y SMS hacia el

contacto a localizar) así como de los mensajes de refresco periódicos hacia el servidor, ya que sin ellos sería

imposible hacer llegar los mensajes de un extremo a otro.

E

Page 109: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

109

Ilustración 55 – Paso de mensajes en las solución elegida

El comienzo de la comunicación lo inicia A lanzando un mensaje de solicitud hacia el servidor, abriendo así un

puerto a través del NAT de manera que puede recibir respuestas a través del mismo.

Cuando el servidor recibe un mensaje de solicitud, antes de responder almacena en su lista el hash recibido junto

con su IP y puerto, de manera que así podrá realizar un encaminamiento posterior buscando por el Hash.

Una vez el servidor le ha contestado, le manda un SMS al contacto que quiere localizar, de manera que el

contacto nombrado como B conocerá el hash del usuarioA y el tiempo con el que quiere las notificaciones.

El contacto que va a ser localizado revisará si el usuario A está en su lista de permitidos, y en cualquier caso

respondería al servidor, ya sea con un mensaje de error o de respuesta con información de localización. Para que

la comunicación se produzca, B debe de mandar un mensaje al servidor indicando el hash que le llegó en el SMS

de A. Seguidamente en el servidor se busca en su ConcurrentHashMap qué IP y puerto se corresponden con el

usuario al que quiere responder B. Una vez lo encuentra, realiza el envío.

Otro mensaje relevante en esta comunicación son los mensajes de refresco que envía el usuario A, tienen doble

función:

- La primera de ellas es actualizar su entrada en el NAT, ya que por defecto, tras 5 minutos se

elimina la entrada UDP en el NAT, haciendo imposible que pasado dicho tiempo, los

mensajes del servidor llegasen a su destino.

- La segunda función es actualizar puerto e IP en el servidor, cuando el servidor recibe un

mensaje de refresco, actualiza en su ConcurrentHashMap el nuevo par IP, puerto

correspondiente al Hash dado de manera que la comunicación seguirá siendo correcta si el

usuario A cambia de red (y por tanto de IP) en un momento dado.

El procedimiento explicado anteriormente y su flujo de mensajes fue la solución adoptada para poder realizar el

envío correcto teniendo en cuenta que los extremos se encontraban en redes privadas. Para ello se tuvo que

Page 110: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

110

implementar la técnica conocida como “UDP Hole Punching”, es decir, la apertura desde un puerto interno hacia

el servidor, que se consigue con el mensaje de solicitud y el posterior el refresco de dicho puerto para mantener

activa la entrada en el NAT, que se consigue como acabamos de explicar mediante los mensajes de refresco.

Asímismo, teniendo en cuenta los tiempos de expiración de las entradas en el NAT, cuyo tiempo mínimo de

expiración es de 2 minutos y siendo 5 minutos el tiempo por defecto, fijamos los mensajes de refresco cada dos

minutos de manera que podamos cubrir tanto los NAT con mayor tiempo de expiración y los de menor.

Aunque siempre debemos tener en cuenta que este tiempo es configurable, y por tanto, aunque desaconseja un

tiempo menor de dos minutos, podríamos llegar a encontrarnos con tiempos menores, por ejemplo, hay algunos

NATs con temporizadores para las entradas UDP de 20 segundos.

7.2. Tipos de mensajes

En nuestro sistema tendremos distintos tipos de mensajes que describiremos a continuación, todos ellos son de

tipo String.

Todos los mensajes tienen una estructura definida, con separadores entre campos determinada que permitirán su

procesamiento haciendo uso de la función Split.

Mensajes de solicitud

Estos son los mensajes de inicio de la comunicación, será el tipo de mensaje que envíe el usuario que quiere

localizar hacia el servidor, y también de este tipo será la respuesta del servidor a un contacto que solicita la

localización, la estructura de ellos es, respectivamente:

Tipo: solicitud, hash: hash_id_origen (mensaje en el sentido: usuario servidor).

Tipo: solicitud, mensaje: respuesta del servidor (mensaje en el sentido: servidor usuario).

El mensaje de respuesta del servidor le indica al cliente que debe terminar con el temporizador de espera del

servidor (ya obtuvo su respuesta) y debe lanzar el temporizador de espera del cliente.

En este apartado cabe destacar la obtención del hash. Se decidió que el hash fuese la concatenación del serial de

la Sim del teléfono con el puerto que abre la aplicación para esperar respuesta. Esto es así porque por cada cliente

abriremos un puerto distinto a la escucha, de esta manera en el servidor tendremos a todos los conctactos que

quiera localizar un mismo usuario bien identificacos.

A continuación se muestran las fracciones de código correspondientes a la obtención del serial de la Sim y del

hash.

Ilustración 56 – Obtención del serial de la Sim del teléfono

Una vez tenemos el serial y hemos abierto un socket, pasamos a obtener el hash con la siguiente función.

Page 111: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

111

Ilustración 57 – Obtención del hash

Como vemos en la llamada a la función getHash, el parámetro cadena que recibe es la concatenación del puerto

abierto y el serial.

Ilustración 58 – Llamada a la función getHash

Mensajes de respuesta

Este mensaje de respuesta se corresponde con los mensajes con información de localización que envía el

contacto que es localizado hacia el servidor y que, posteriormente llegan al usuario que solicitó la localización.

Los mensajes de este tipo tendrán la siguiente estructura:

Tipo: respuesta, hash: hash_id_destino, mensaje: latitud_valor longitud_valor, id: valor_identificador.

Hay que recordar que el hash_id_destino se trata del hash que le llegó por SMS, que identifica al contacto que

inició el proceso de solicitud de localización.

En este tipo de mensajes los valores de latitud y longitud pueden ser “No disponible” en caso de que no se tengan

los servicios de ubicación activos en el terminal que los envió.

Cuando el servidor reenvía dicho mensaje hasta su destinatario elimina la información del hash, de manera que

el mensaje de respuesta que viaja entre servidor y destinatario es:

Tipo: respuesta, mensaje: latitud_valor longitud_valor, id: valor_identificador.

Al usarse un protocolo de transporte no fiable (UDP), intentamos aumentar la fiabilidad del servicio enviando

ráfagas de 6 paquetes, todos ellos con el mismo identificador, de esta manera la aplicación descartará qué

paquetes son réplica y cuáles nuevos en función de su identificador consiguiendo así no mostrar al usuario

información de localización duplicada.

Mensajes de error

Estos mensajes son los que se envían en el caso de que al usuario que solicita la localización no se le permita

conocer dicha información, es decir, no se encuentra en la lista de “Permitidos” del contacto localizado.

La estructura del mensaje es la siguiente:

Tipo: error, hash: hash_id_destino, mensaje: No tienes permiso para conocer la localización.

Igual que en el caso anterior, en la comunicación entre servidor y destinatario se omite el hash, y el mensaje

queda de la forma:

Tipo: error, mensaje: No tienes permiso para conocer la localización.

Page 112: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

112

Mensajes de refresco

Como explicamos antes, estos mensajes se envían entre el usuario que solicita la localización y el servidor,

teniendo la doble función de mantener la entrada del NAT correspondiente a su puerto activa y poder realizar

actualizaciones de IP y puerto en el servidor. Estos mensajes no se reenvían, el servidor los consume.

Para mitigar las posibles pérdidas que puedan producirse y que no se vea afectado el proceso de localización se

enviarán, al igual que los mensajes de respuesta, en ráfagas de 6 paquetes.

La estructura de esos mensajes es la siguiente:

Tipo: refresco, hash: hash_id_origen. Cuando el servidor recibe un mensaje de este tipo actualiza la IP y puerto

correspondientes al hash que recibe.

7.3. Envío de mensajes

Dado que el proceso de envío de mensajes es idéntico para el servicio Java y para la aplicación Android, en este

apartado explicaremos la formación del datagrama y su posterior envío. Destacando que el puerto destino será

lo que variará de un caso a otro. Siendo en la aplicación android el puerto destino el del servidor (hemos tomado

el 4440), y en el caso del servidor el puerto destino se corresponderá al que se encuentre en la lista

ConcurrentHashMap y que identifique al cliente dado.

En estas dos primeras imágenes se ve cómo se ponen a la escucha los sockets del servidor en un puerto concreto

(Ilustración 59) y en la aplicación Android no se especifica cuál abrir (Ilustración 60)

Ilustración 59 – Envio de mensajes: Socket en el servidor

Ilustración 60 – Envio de mensajes: Socket en Android

A continuación, se obtienen las direcciones ip destino que variará igualmente de un caso a otro. En el servidor

(Ilustración 61) la dirección destino es la dirección que encuentra en su lista, y en el caso de Android (Ilustración

62) la dirección va a ser fija y siempre la misma, la dirección del servidor. Salvo esta diferencia, los métodos

usados para obtenerlas vemos que son los mismos.

Ilustración 61 – Envio de mensajes: Obtención de dirección destino en el servidor.

Ilustración 62 – Envio de mensajes: Obtención de dirección destino en Android

Por último, una vez tenemos el socket abierto e identificado el destino de nuestro paquete procedemos a su envío.

Primero necesitamos obtener los bytes del mensaje a enviar, mediante la función getBytes(), posteriormente

creamos nuestro Datagrama, que enviaremos mediante el método send().

Este procedimiento es el mismo tanto para android como para el servidor.

Page 113: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

113

Ilustración 63 – Envio de mensajes: Envio del paquete UDP

El tiempo máximo que la aplicación estará enviando, y por tanto recibiendo mensajes de localización será de 1

hora y 30 minutos, pasado dicho tiempo se notificará al usuario, y éste tendrá que lanzar una nueva localización.

7.4. Aplicación Android

Vamos a describir los aspectos considerados más importantes en la implementación de la aplicación Android.

7.4.1. Obtención de la localización

Para el desarrollo de aplicaciones de localización pueden elegirse dos APIS:

- android.Location.

- Google Location Services API.

Se optó por el uso de la segunda, ya que de acuerdo a la documentación de Android es preferible. Esta API nos

proporciona una precisión mayor y un ‘geofencing’ de menor consumo que la API android.Location.

En primer lugar, al crear la clase, tenemos que especificar en nuestra clase que implemente las interfaces de

callback() ConnectionCallbacks y OnConnectionFailedListener. Estas interfaces reciben callbacks en caso de

que la conexión con GooglePlay services sea correcta, falle, o se suspenda.

Ilustración 64 – GoogleApi: Implementación de interfaces de callback()

Para poder conectarnos a las Apis de Google es necesario crear una instancia de “GoogleApiClient”. En el

siguiente método creamos un cliente Google y usamos el Builder para agregar la API Location Services. Este

método lo llamamos en el método onHandleIntent del IntentService.

Ilustración 65 – GoogleApi: Creación de GoogleApiClient

Page 114: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

114

Una vez que tenemos el cliente Google nos conectamos a él mediante el método connect(). Estando conectados

a los servicios de Google y a la API Location Services, podemos obtener la localización del usuario del

dispositivo. Para pedir la localización llamamos al método getLastLocation, pasándole nuestro cliente Google.

Este método nos devuelve un objeto de tipo Location, del cuál se pueden extraer fácilmente las coordenadas de

latitud y longitud mediante los métodos: getLatitude() y getLongitude().

Ilustración 66 – GoogleApi: Obtención de coordenadas de latitud y longitud

En nuestro caso, como se ve en el fragmento de código anterior, en caso de no obtener ninguna localización

rellenamos la latitud y longitud con el texto “No disponible”, de manera que al enviarlo al usuario que solicita

la información sea información comprensible, ya que en caso contrario el contenido de latitud y longitud sería

“null”.

7.4.2. Recepción y procesamiento de los mensajes

Al lanzar una solicitud de localización, la aplicación se queda en escucha en el mismo puerto con el que realizó

la petición. En la siguiente ilustración se ve cómo se crea un array de bytes donde se guardará el mensaje que se

reciba. Hemos tomado el tamaño máximo que puede tener, después creamos el paquete donde se van a guardar

los datos, y nos quedamos bloqueados en la espera mediante el método receive() (Ilustración 67)

Una vez que recibimos un paquete, salimos de la espera bloqueante, extraemos en un String el mensaje que nos

ha llegado y llamaremos a la función procesaDatos().

En la función procesaDatos, se obtiene el tipo del mensaje que acabamos de recibir, y se procesa en función de

éste.

- Mensaje de solicitud: Significa que el servidor me ha respondido, y por tanto lanzamos el

sms hacia el contacto que queremos localizar, indicándole el hash y el tiempo que deseamos

entre notificaciones. En la Ilustración 68 podemos ver el envío de un SMS en Android

mediante el SmsManager.

- Mensaje de error o de respuesta: mostramos una notificación al usuario.

La llamada a la función procesaDatos() solo se realizaría para los primeros mensajes recibidos, una vez recibida

la primera respuesta con información de localización no resulta necesario ya que los siguientes serán igualmente

de localización.

Page 115: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

115

Ilustración 67 – Espera de datos en Android

Ilustración 68 – Envio de SMS

7.4.3. Mantenimiento del puerto UDP activo en el NAT

Para mantener el puerto UDP activo nos servimos de un temporizador, que cuando despierta envía mensajes de

refresco hacia el servidor.

Vamos a suponer en el siguiente diagrama (Ilustración 69) el caso en el que tanto servidor, como cliente han

contestado.

Cuando se recibe un mensaje del servidor, se para el temporizador y éste lanza el de esperaCliente, una vez me

llega el primer mensaje de respuesta, paro el temporizador esperaCliente ejecutándose así el método finally del

mismo que lo que hará será lanzar el temporizador esperaRefresco.

Igualmente cada vez que expira esperaRefresco se ejecuta su método finally, y lo que se realiza en ese momento

es la apertura de un nuevo socket y el envío de un mensaje de refresco a través de dicho socket, también se cierra

el socket que estaba anteriormente abierto. El temporizador esperaRefresco estará ejecutándose durante el

tiempo máximo de localización.

Ilustración 69 – Creación del temporizador “esperaRefresco”

Page 116: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

116

Ilustración 70 – Activación del temporizador de refresco

7.4.4. Notificaciones de la aplicación

Para mostrarle las notificaciones al usuario usamos el método notify del objeto NotificationManager.

Nuestra aplicación mostrará distintos tipos de notificaciones:

Notificaciones informándonos de error

En este grupo podemos incluir tres tipos de notificaciones:

- Aquellas en las que se nos avisa de que no se ha podido conectar con el servidor. Esto nos

indica que el servidor puede no estar operativo, y por tanto no podrá llevarse a cabo la

localización en dicho momento.

Ilustración 71 – Notificaciones: Error en la conexión con el servidor

- Notificaciones en las que se nos avisa de que no podemos localizar al contacto que

solicitamos. Esto puede ser debido o bien que el contacto que queremos localizar no recibió

nuestro SMS y por tanto no pudo comenzar el proceso de localiación, o que, aun recibiendo

el SMS no dispone de conexión a Internet y por tanto no puede enviar mensajes.

Page 117: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

117

Ilustración 72 – Notificaciones: Contacto no disponible

- Notificaciones en las que nos avisan de que no tenemos permiso para obtener la información

de localización del contacto. Esto significa que el contacto al que queremos localizar no nos

tiene en la lista de permitidos, un ejemplo de esta notificación se verá en el apartado 12.4.1.

Notificaciones informándonos del proceso de localización

En este caso igualmente, podemos distinguir tres tipos:

- Notificaciones en las que se le informan al contacto localizado a quién se le va a mandar su

localización.

- Notificaciones sobre la información de localización del usuario, donde se indican el nombre

del contacto al que pertenece la localización, así como sus coordenadas de latitud y longitud.

- Notificaciones de fin de localización, gracias a estas notificaciones sabremos cuándo finaliza

la localización de un contacto. Si queremos seguir recibiendo información de localización de

dicho contacto tras recibir esta notificación, debemos volver a iniciar una solicitud.

Todas estas notificaciones se muestran en los ejemplos del apartado 12.4 del anexo.

7.4.5. Visualización del mapa

Para la visualización del mapa con la posición del usuario en él se usa la clase VerMapaFragment. Para ello

usamos un elemento GoogleMap. Este elemento nos muestra el mapa, y nos da la opción de añadir un marcador

a unas coordenadas dadas o mover el mapa de manera que quede centrado en unas coordenadas específicas.

En la ilustración que vemos a continuación la variable map es de tipo GoogleMap.

Ilustración 73 – Visualización de mapas Android

Page 118: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

118

7.4.6. Permisos: AndroidManifest1

El fichero de manifiesto es imprescindible en toda aplicación android, y su nombre debe de ser siempre el mismo:

AndroidManifest.xml. Este fichero contiene información esencial acerca de nuestra aplicación que usará el

sistema operativo de Android para poder ejecutar el código.

A continuación presentaremos los permisos que hemos tenido que incluir en nuestro fichero manifiesto.

Ilustración 74 – Permisos para enviar, leer y recibir SMS

Ilustración 75 – Permisos para realizar operaciones de red

Ilustración 76 – Permisos para acceder a la localización

Ilustración 77 – Permiso para escribir en la memoria externa

Ilustración 78 – Permiso para poder leer los contactos de la agenda

Ilustración 79 – Permiso para acceder al estado del teléfono

Ilustración 80 – Permiso para controlar el estado de “activo” del teléfono

1 Permisos explicados en el glosario, apartado 12.1

Page 119: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

119

Este último permiso es de gran importancia ya que en los dispositivos Android, al apagarse la pantalla bien

porque se bloquee, o bien porque no se use durante un tiempo, la CPU se duerme y por tanto sólo se permite la

realización de tareas importantes tales como recepción de llamadas, SMS, etc., de manera que la aplicación

dejaba de enviar y recibir mensajes mientras el teléfono se encontraba bloqueado.

Para solucionar el problema anterior, se obtuvo este permiso y se agregaron las líneas de código necesarias que

permitan que la CPU nunca se duerma aunque se bloquee la pantalla. Así se garantiza que la recepción y envío

de mensajes sigue realizándose de manera correcta, eso sí, a costa de un mayor consumo de batería.

Por último, mostramos un dato que es necesario introducir en el fichero manifiesto para poder ver los mapas de

Google, y es el valor de una clave de Google que se obtiene a través de su consola de desarrollador.

Esta clave una vez obtenida puede utilizarse en distintas aplicaciones que necesiten incorporar mapas.

Ilustración 81 – Clave de Google para poder usar mapas

Ilustración 82 – aplicación registrada en la consola de Google

7.5. Servicio Java

En este punto explicaremos cómo se lleva a cabo el procesamiento de los mensajes que llegan al servidor. Es de

gran importancia este punto ya que este programa es el nexo de unión entre ambas aplicaciones Android (lado

que localiza y lado localizado).

7.5.1. Recepción y procesamiento de los mensajes

En este programa tenemos un proceso que se encuentra de manera continua a la espera de mensajes UDP en el

puerto 4440 (puerto elegido para la escucha, se podría haber elegido cualquier otro).

Al recibir un mensaje, comprueba el tipo del mensaje que le llega, y al igual que en el caso de la aplicación

Android la acción a llevar a cabo dependerá de éste.

- Tipo solicitud o tipo refresco, se guardará un elemento en la lista. Además si el mensaje es de

tipo solicitud, se responderá enviando un mensaje como explicamos en el apartado 7.3.

Ilustración 83 – Actualización de un elemento en el servidor

- Tipo error o respuesta: En este caso, el servidor recorrerá la lista para comprobar si existe en

ella un elemento identificado con el hash recibido. En caso afirmativo enviará el mensaje a la

ip y puerto que haya guardados en la entrada identificada por el hash.

Page 120: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

120

Ilustración 84 – Búsqueda de un elemento en el servidor

Page 121: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

121

8. PRUEBAS Y VALIDACIÓN

8.1. Pruebas manuales

A continución describiremos el conjunto de pruebas que se han hecho de manera manual, disponiendo para ello

de uno o dos teléfonos con sistema operativo Android, según fue preciso (los nombrados en los apartados 2.2.2.1

y 2.2.2.2).

Prueba Prueba 1

Objetivo Apertura y navegación correcta en la aplicación

Descripción Se abrirá la aplicación y se navegará por todas sus partes. También se introducirán

cambios en la orientación de la pantalla, comprobando que no afectan ni al diseño ni al

funcionamiento de la misma.

Resultado Superada

Tabla 64 – Pruebas manuales: Prueba 1

Prueba Prueba 2

Objetivo Comprobación del acceso a la agenda

Descripción Se entrará en la sección de la aplicación que nos permite el acceso a la agenda. Se

comprobará que aparecen todos los contactos esperados, y que se puede realizar un filtro

correcto por nombre.

Resultado Superada

Tabla 65 – Pruebas manuales: Prueba 2

Prueba Prueba 3

Objetivo Agregar contactos a las listas

Descripción Situados en la página que nos muestra la agenda, comprobaremos que al mantener pulsado

sobre un contacto se nos permite agregarlo a las listas “Localizados” o “Permitidos”.

Agregaremos un contacto cualquiera a dichas listas, y posteriormente comprobaremos que

se encuentran agregados en las listas correspondientes.

Resultado Superada

Tabla 66 – Pruebas manuales: Prueba 3

Page 122: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

122

Prueba Prueba 4

Objetivo Eliminación de contactos en las listas

Descripción Nos situaremos en las listas “Localizados” y “Permitidos” y borraremos algún contacto de

ellas. Comprobaremos que tras hacer esto, el contacto no aparece en la lista de la cuál se

borró.

Resultado Superada

Tabla 67 – Pruebas manuales: Prueba 4

Prueba Prueba 5

Objetivo Visualización de la localización propia

Descripción Accederemos a la parte de la aplicación que nos muestra el mapa con nuestra localización

y comprobaremos que, efectivamente, se muestra correctamente cuando tenemos el gps

activo, o nos muestra las coordenads y dirección como “No disponible” cuando no se

encuentra activo.

Resultado Superada

Tabla 68 – Pruebas manuales: Prueba 5

Prueba Prueba 6

Objetivo Comprobar que la aplicación deja de esperar respuesta del servidor pasado un tiempo, y

avisa al usuario de que no se pudo realizar la localización

Descripción Se lanzará desde un teléfono la solicitud de localización, pero el programa del servidor no

se estará ejecuando, pasado el tiempo de espera máximo del servidor, el teléfono que

lanzo la solicitud debe parar la escucha y

Resultado Superada

Tabla 69 – Pruebas manuales: Prueba 6

Prueba Prueba 7

Objetivo Comprobación del tiempo de espera del cliente

Descripción Prueba análoga a la anterior, pero en este caso se desconecta el wifi del teléfono

localizado, pasado el tiempo de espera del cliente, deberá pararse la escucha del teléfono

que solicita y se le deberá notificar al usuario de que no se ha podido realizar la

localización del contacto.

Resultado Superada

Tabla 70 – Pruebas manuales: Prueba 7

Page 123: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

123

Prueba Prueba 8

Objetivo Comprobar que no se puede localizar a una persona que ya está siendo localizada

Descripción Se comenzará la localización de un contacto concreto. Después, se volverá a realizar otra

solicitud sobre el mismo contacto, y se comprobará que no se puede volver a localizar.

Resultado Superada

Tabla 71 – Pruebas manuales: Prueba 8

Prueba Prueba 9

Objetivo Funcionamiento cuando el contacto no está en la lista de permitidos

Descripción Se lanzará la localización de un contacto que no tenga al usuario que solicita en la lista de

permitidos. Se comprobará que el mensaje de respuesta que le llegará será de tipo “error”

Resultado Superada

Tabla 72 – Pruebas manuales: Prueba 9

Prueba Prueba 10

Objetivo Comprobar el correcto envío y recepción de los mensajes de localización

Descripción Se lanzará la localización de un contacto dado que si tenga al usuario solicitante en su lista

de permitidos. Se comprobará que los mensajes periódicos se envían correctamente y se

reciben por tanto en el destino.

Resultado Superada

Tabla 73 – Pruebas manuales: Prueba 10

Prueba Prueba 11

Objetivo Comprobar la continuidad en el proceso de localización ante cambios en las IPs, tanto del

localizado como del que localiza.

Descripción Se lanzará la localización de un usuario, y se irá alternando entre uso de datos y red wifi

en ambos extremos de la comunicación. El envío y recepción de mensajes debe de

realizarse de manera correcta.

Resultado Superada

Tabla 74 – Pruebas manuales: Prueba 11

Page 124: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

124

Prueba Prueba 12

Objetivo Comprobar la correcta visualización del contacto localizado en el mapa.

Descripción Se lanzará la localización de un usuario concreto y, al recibir notificaciones, se pulsará

sobre ellas, comprobando así que la información de localización de dicho usuario se

muestra de manera correcta en el mapa.

Resultado Superada

Tabla 75 – Pruebas manuales: Prueba 12

Prueba Prueba 13

Objetivo Comprobar la localización de más de una persona simultáneamente

Descripción Se lanzará la localización de dos personas distintas, y se comprobará que nos llegan

notificaciones independientes para cada una de ellas, y que se puede ver la información de

localización de esas personas de manera adecuada e independiente en el mapa.

Resultado Superada

Tabla 76 – Pruebas manuales: Prueba 13

Prueba Prueba 14

Objetivo Extracción correcta de los datos del SMS

Descripción Se comprobará tanto por el uso de logs mostrando el contenido de las variables que

guardan la información del sms, como por el correcto funcionamiento de la aplicación ya

que es un reflejo de que se han extraído bien los datos del sms.

Resultado Superada

Tabla 77 – Pruebas manuales: Prueba 14

Prueba Prueba 15

Objetivo Continuidad de la localización ante una pérdida

Descripción Ante la pérdida de un paquete debido a que alguno (o ambos) extremos pierdan la

conexión a la red, una vez recuperada dicha conexión se deberá reanudar correctamente el

envío y recepción de paquetes.

Resultado Superada

Tabla 78 – Pruebas manuales: Prueba 15

Prueba Prueba 16

Page 125: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

125

Objetivo Comprobar la correcta configuración del servidor y puerto a usar

Descripción En la parte de la aplicación de “Configuración Avanzada”, se comprobará que sólo se

permitirá guardar la nueva información cuando los campos no estén vacíos, y además,

sean correctos.

Resultado Superada

Tabla 79 – Pruebas manuales: Prueba 16.

Prueba Prueba 17

Objetivo Comprobar que no se puede conectar a un servidor inexistente

Descripción En la parte de la aplicación de “Configuración Avanzada”, se comprobará que en caso de

introducir una IP y puerto de un servidor que no existe, se mostrará la notificación de “No

se pudo conectar con el servidor”, y que no se produzca la detención de la aplicación.

Resultado Superada

Tabla 80 – Pruebas manuales: Prueba 17.

8.2. Purebas automatizadas

Para este conjunto de pruebas se han diseñado en java unos módulos de prueba se simulan el envío y recepción

de mensajes UDP. Para todas estas pruebas se ha tomado un tiempo máximo de envío y recepción de 35 minutos.

Prueba Prueba 18

Objetivo Envío de mensajes con una periodicidad dada (5, 15 y 30 mins)

Descripción Se lanzará una solicitud de localización, y se esperará que el módulo de pruebas que envía

mensajes hacia el teléfono lo haga con las periodicidades nombradas.

Resultado Superada

Tabla 81 – Pruebas automatizadas: Prueba 182

Prueba Prueba 19

Objetivo Recepción de mensajes con una periodicidad dada

Descripción En este caso el módulo de pruebas será el receptor, y se comprobará que el teléfono le

envia correctamente los mensajes UDP periódicos.

Resultado Superada

2 Se puede ver el resultado de esta prueba en el punto 12.2.1 del anexo

Page 126: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

126

Tabla 82 – Pruebas automatizadas: Prueba 193

8.3. Pruebas de aceptación

En esta prueba se evaluará la calidad del producto en función del uso para el que fue diseñado e implementado.

Prueba Prueba 20

Objetivo Validación el producto final por parte del tutor

Descripción Se le entregará el producto final al tutor del proyecto, de manera que éste lo pruebe, y

determine si realmente cumple las expectativas planteadas.

Resultado Superada

Tabla 83 – Pruebas de aceptación: Prueba 20

3 Se puede ver el resultado de esta prueba en el punto 12.2.2 del anexo

Page 127: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

127

9. ESTIMACIÓN TEMPORAL

ste proyecto ha estado dividido en una serie de tareas. Estas tareas fueron identificadas y se les asignó un

tiempo determinado así como se planificó la secuencia de ejecución de las mismas para intentar conseguir

que el tiempo de desarrollo fuese el mínimo.

En este apartado veremos cuál fue la planificación inicial que se hizo del proyecto y la compararemos con la

estimación temporal real.

9.1. Estimación temporal a priori

Documentación 92 horas

Documentación de Android 90 horas

Plataformas de desarrollo: Androuid Studio vs Eclipse 2 horas

Tabla 84 – Estimación a priori: Documentación

Obtención de información 12 horas

Comprensión del problema 2 horas

Estudio del Objetivo del sistema 3 horas

Obtención de requisitos del sistema 7 horas

Tabla 85 – Estimación a priori: Obtención de información

Análisis 7 horas

Identificación de subsistemas y su función 7 horas

Tabla 86 – Estimación a priori: Análisis

Diseño 39 horas

Diseño del servicio 27 horas

Diseño de la interfaz de usuario 2 horas

Diseño de las clases 10 horas

Tabla 87 – Estimación a priori: Diseño.

E

Page 128: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

128

Implementación 90 horas

Codificación de las clases 60 horas

Codificación de las pruebas 30 horas

Tabla 88 – Estimación a priori: Implementación

Testeo y pruebas 45 horas

Pruebas manuales 10 horas

Pruebas automatizadas 5 horas

Corrección de errores 30 horas

Tabla 89 – Estimación a priori: Testeo y pruebas

Documentación final 70 horas

Redacción de la memoria 70 horas

Tabla 90 – Estimación a priori: Documentación final

Horas totales 355 horas

Tabla 91 – Estimación a priori: Horas totales

Page 129: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

129

Ilustración 85 – Estimación a priori: Diagrama de Gantt

9.2. Planificación temporal real

Documentación 122 horas

Documentación de Android 80 horas

Documentación Java 40 horas

Plataformas de desarrollo: Androuid Studio vs Eclipse 2 horas

Tabla 92 – Estimación real: Documentación

Obtención de información 10 horas

Comprensión del problema 2 horas

Estudio del Objetivo del sistema 3 horas

Obtención de requisitos del sistema 5 horas

Tabla 93 – Estimación real: Obtención de información

Análisis 15 horas

Identificación de subsistemas y su función 15 horas

Page 130: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

130

Tabla 94 - Estimación real: Análisis

Diseño 67 horas

Diseño del servicio 50 horas

Diseño de la interfaz de usuario 2 horas

Diseño de las clases 15 horas

Tabla 95 – Estimación real: Diseño

Implementación 112 horas

Codificación de las clases Android 70 horas

Codificación de las clases Java 35 horas

Codificación de las pruebas 7 horas

Tabla 96 – Estimación real: Implementación

Testeo y pruebas 80 horas

Pruebas manuales 21 horas

Pruebas automatizadas 9 horas

Corrección de errores 50 horas

Tabla 97 – Estimación real: Testeo y pruebas

Documentación final 80 horas

Redacción de la memoria 80 horas

Tabla 98 – Estimación real: Documentación final

Horas totales 486 horas

Tabla 99 – Estimación real: Horas totales

Page 131: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

131

Ilustración 86 – Estimación real: Diagrama de Gantt

Page 132: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

132

10. CONCLUSIONES

10.1. Principales problemas enfrentados

A lo largo de todo el proceso de desarrollo hemos encontrado diversos problemas a los que hicimos frente. A

continuación se resumirán dichos problemas así como la solución aportada.

El primer problema que surgió fue el encaminamiento de los mensajes UDP, ya que tanto el emisor de mensajes

como el receptor de los mismos tenían asignadas direcciones IP privadas. Para ello fue necesario incluir en

nuestro sistema un programa intermedio, el servidor nombrado durante la memoria, que guarda la relación hash–

IP,puerto de manera que pueda encaminar los mensajes correctamente.

Otro problema enfrentado fue el de la expiración de las entradas en la tabla del NAT, ya que como mecanismo

de seguridad pasado cierto tiempo sin recibir paquetes provenientes del dominio interno (5 minutos por defecto

para puertos UDP) se eliminaba la entrada correspondiente a dicho puerto, haciendo imposible que llegasen los

mensajes de respuesta de localización pasados esos primeros 5 minutos. Para solucionar este inconveniente

incluimos los mensajes de refresco.

Por último, nos encontramos con un problema de los dispositivos Android, ya que cuando éstos se encontraban

bloqueados, o con la pantalla apagada dejaban de enviar y recibir mensajes. Luego, al desbloquear la pantalla se

reanudaba el envío y recepción. Esto es así porque en estos dispositivos al apagar la pantalla el procesador

“duerme”, y sólo mantiene activas las funciones necesarias como son recepción de llamadas telefónicas o SMS.

Para solucionar esto se tuvo que introducir las líneas adecuadas en el código para evitar que la CPU entre en

dicho modo, permitiendo así que se siguiese ejecutanto el código tanto de envío como de recepción de paquetes.

10.2. Línea futura de desarrollo

La aplicación desarrollada cumple con la función y requisitos especificados, sin embargo, y debido al tiempo

limitado del desarrollo, se pueden encontrar futuras mejoras para llevar a cabo sobre la misma.

Se puede plantear una mejora de esta aplicación solucionando el problema de tarificación, de manera que

podamos evitar el envío inicial del SMS. Esto podría conseguirse mediante el uso de protocolos de mensajería

instantánea como por ejemplo XMPP, en el cuál los teléfonos al encenderse iniciaran sesión en el servidor y

envíarían su localización de manera periódica al mismo, y éste lo almacenaría en una base de datos, junto con

otros datos como pueden ser: nombre de contacto, teléfono, contactos que permite, etc. De esta manera cuando

un usuario desee conocer la localización de otro contacto realizará una petición a dicha base de datos para obtener

la última conocida, o un mensaje de error en caso de no ser un contacto permitido. Este método requeriría un

registro previo en dicho servidor.

Igualmente se podría considerar la posibilidad de seguir localizando al terminal a pesar de que éste no tenga

tarjeta SIM, que sea un teléfono únicamente con conexión a Internet y GPS. En este caso necesitaríamos también

una base de datos, y el usuario que desea localizar debe introducir, mediante un formulario, el nombre de usuario

con el que está registrado en el servidor el usuario que desea localizar, así como la clave para obtener su

localización, comunicada previamente mediante otra vía. Ante esta petición se comprobaría que el nombre de

usuario del que se solicita la localización es usuario del servicio, y si además la clave para dicho usuario coincide

con la clave recibida. Considerando esta situación, al igual que en el caso anterior se le enviaría al usuario

solicitante la última posición conocida del usuario solicitado.

Una limitación actual de la aplicación es que sólo está pensada para localizar a teléfonos Españoles, de la forma

(+34)-9 dígitos. Por lo que sería interesante ampliar esta localización independientemente del número de teléfono

de los extremos. Esto lo podríamos implementar almacenando los códigos de países en una base de datos, y

sabiendo que todos los teléfonos tienen 15 dígitos (Ilustración 87) procesarlo y separar lo que es código de país

y lo que es el número de teléfono.

Page 133: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

133

Ilustración 87 - Número UIT-T E.164 internacional para Redes.

Derivada de la anterior mejora, si se cubrieran los números de todos los países, necesitaríamos que nuestra

aplicación soportase distintos idiomas, para una experiencia de usuario satisfactoria en cada región.

Para añadir soporte de nuevos lenguajes necesitamos crear directorios de “values” adicionales, dentro de nuestra

carpeta de recursos /res. Cada directorio values acabará con el código del lenguaje según la ISO4. Android

cargará el recurso adecuado en tiempo de ejecución en función de la configuración local del dispositivo.

Ilustración 88 – Estructura del proyecto que soporta varios lenguajes

El contenido del fichero strings que contiene las cadenas en español podría ser, por ejemplo:

Ilustración 89 – values-es/strings.xml

Mientras que el contenido del fichero que contiene las cadenas correspondientes al idioma francés, sería:

4 Language codes – ISO 639

Page 134: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

134

Ilustración 90 – values-fr/strings.xml

En cuanto a seguridad, y debido a que nuestra aplicación transporta datos de tipo sensible como son las

coordenadas de latitud y longitud de un usuario concreto podría plantearse la encriptación de dichos datos y su

posterior desencriptación en el destino. Dos posibles alternativas para hacer frente a esto pueden ser:

Protocolo DTLS (Datagram Transport Layer Security)

Se trata de un protocolo basado el TLS que proporciona privacidad en las comunicaciones para protocolos de

datagramas. Este protocolo permite a las aplicaciones cliente/servidor comunicarse de manera que se eviten las

escuchas no deseadas (eavesdropping), accesos no permitidos, o modificación de mensajes. Este protocolo

proporciona garantías de seguridad equivalentes a TLS.

DTLS y su uso junto con el protocolo UDP queda definido en la RFC 6347.

Paquete javax.crypto

Este paquete proporciona las clases e interfaces para aplicaciones criptográficas implementando algoritmos de

cifrado, descifrado, o acuerdo de clave.

La autenticación puede basarse en MAC (Message Authentication Code), tales como HMAC (Hash MAC, es

decir, con una función hash SHA-1).

Por último, también podríamos considerar la posibilidad de adaptar esta aplicación a distintas plataformas, ya

que actualmente sólo estaría disponible para dispositivos con el sistema operativo Android.

10.3. Conclusión personal

Con la realización de este proyecto se me ha permitido completar mi formación enfrentándome a un problema

de cierta complejidad, teniendo que aportar soluciones a los problemas que surgían e investigar formas de

solucionarlos.

Con este ptoyecto no sólo he mejorado en tecnologías poco estudiadas durante la carrera como son Java y

Android, si no que también me he adentrado en la Ingeniería de software aprendiendo la importancia de una

buena planificación, diseño e identificación de requisitos.

Este ha sido un proyecto en el que he disfrutado trabajando y aprendiendo cosas nuevas, tanto en aspectos de

conocimientos como aspectos de desenvoltura a la hora de enfrentar un problema real y dar una solución al

mismo aportando mis conocimientos tecnológicos.

Page 135: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

135

11. REFERENCIAS

[1] Documentación Android: http://developer.android.com/index.html

[2] Documentación Google APIs para Android:

https://developers.google.com/android/reference/com/google/android/gms/maps/MapFragment

[3] http://elvex.ugr.es/decsai/java/pdf/3C-Relaciones.pdf

[4] https://eclipse.org/

[5] http://docs.oracle.com/javase/8/docs/api/

[6] http://download.java.net/jdk7/archive/b123/docs/api/java/net/DatagramSocket.html

[7] “Cómo programar en Java”. Paul Deitel, Harvey Deitel.

[8] http://stackoverflow.com/

[9] http://www.idc.com/getdoc.jsp?containerId=prUS24676414

[10] http://www.cisco.com/web/about/ac123/ac147/archived_issues/ipj_7-3/anatomy.html

[11] http://tools.ietf.org/html/rfc4787#section-4.3

[12] https://tools.ietf.org/html/rfc5128#section-3.3.1

[13] ITU – Recomendación E.164 : Plan internacional de numeración de telecomunicaciones públicas:

https://www.itu.int/rec/T-REC-E.164-201011-I/es

[14] Language Codes - ISO 639: http://www.iso.org/iso/es/home/standards/language_codes.htm

[15] DTLS: https://en.wikipedia.org/wiki/Datagram_Transport_Layer_Security

[16] http://www.brynosaurus.com/pub/net/p2pnat/

Page 136: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

136

12. ANEXO

12.1. Glosario de términos

A continuación vamos a definir una serie de términos propios de la programación Android que hemos usado en

la redacción de la memoria.

Activity: Son las clases Android. Representa una acción que puede realizar el usuario. Las activities se

encargan de colocar la ventana dónde luego se podrá poner la interfaz de usuario. Todas las actividades

de una aplicación deben de estar recogidas en el fichero AndroidManifest.

AsyncTask: esta clase nos permite usar el hilo UI de manera correcta y fácil. Nos permite ejecutar tareas

en segundo plano y mostrar los resultados en la interfaz de usuario.

BroadcastReceiver: Clase base para el código que recibirán los Intents enviados por sendBroadcast().

Hay dos tipos principales de clases broadcast que pueden recibirse:

- Broadcast normales (enviados con Context.sendBroadcast) son completamente asíncronos.

Todos los receptores de la emisión se ejecutan en un orden definido, a menudo al mismo

tiempo. Esto es más eficiente, pero significa que los receptores no pueden utilizar el resultado

o abortar APIs incluidas aquí.

- Broadcast normales (enviados con Context.sendBroadcast) son completamente asíncronos.

Todos los receptores de la emisión se ejecutan en un orden definido, a menudo al mismo

tiempo. Esto es más eficiente, pero significa que los receptores no pueden utilizar el resultado

o abortar APIs incluidas aquí.

En nuestro caso utilizamos esta clase para recibir los SMS que envía la aplicación.

Content provider: los proveedores de contenido gestionan el acceso a un conjunto de datos

estructurados. Encapsulan los datos y nos proporcionan mecanismos para definir la seguridad de los

datos. Se trata de la interfaz estándar para conectar los datos de un proceos con el código ejecuntándose

en otro proceso. En nuestro caso, utilizamos un content provider para el acceso a los contactos de la

agenda.

Context: Interfaz con información global sobre un entorno de aplicación. Ésta es una clase abstracta

cuya implementación está prevista por el sistema Android. Permite el acceso a los recursos y las clases

específicas de la aplicación, así como la puesta en marcha de las operaciones a nivel de aplicación, tales

como el lanzamiento de las actividades, la difusión y recepción de las intenciones, etc...

Contract class: es una clase que nos define constantes que ayudan a las aplicaciones a trabajar con URIs,

nombres de columnas, acciones de Intent y otras características de los content provider. En nuestro caso,

nuestras Contract Class lo que nos definen son los nombres de las columnas de nuestras tablas de la

base de datos, para poder acceder a ellas de manera sencilla en cualquier parte del código.

Fragment: reperesenta el comportamiento de una porción de la interfaz de usuario de una Activity. Se

pueden combinar múltiples fragments en una única actividad para construir una aplicación con

múltiples interfaces. También los fragments se pueden reutilizar en otras Activities.

Los fragments tienen su propio ciclo de vida, reciben sus propios eventos de entrada y se pueden añadir

a la interfaz de usuario en tiempo de ejecución.

Geocoder: es una clase para manejar la geocodificación y la geocodificación inversa. El proceso de

“Geocoding” es el de transformar una dirección (calle) u otra descripción de localización en

coordenadas de latitud y longitud. “Geocoding inverso” es el proceso contrario, con el que a partir de

unas coordenadas de latitud y longitud pasamos a una dirección en forma de calle.

Geofencing: es una caracaterística software de los programas que usan el GPS o identificación por radio frecuencia (RFID) para definir fronteras geodráficas.

Page 137: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

137

googleApiClient: es el principal punto de entrada para la integración de servicios de GooglePlay.

GoogleMap: es la clase principal de la Api de Google Maps de android, es el punto de entrada para

todos los métodos relacionados con el mapa de la aplicación. Obtenemos un objeto de este tipo mediante

el método getMap().

Intent: se trata de una descripción abstracta de una operación que debe realizarse. Su uso más frecuente

es para lanzar actividades mediante startActivity(Intent).

IntentService: es la clase base para los servicios que manejan peticiones asíncronas bajo demanda. Los

clientes envían peticiones a través del método startService(Intent). El servicio comienza cuando se

necesita, gestiona cada Intent en su turno, y cuando termina se para él solo. Sólo una solicitud va a ser

atendida a la vez.

LatLng: clase que representa el par de coordenadas latitud y longitud, almacenadas en grados.

MapFragment: un componente de tipo Mapa (Map) en una aplicación. Esta es la forma más sencilla de

colocar el mapa en la aplicación.

NotificationManager: clase para notificar al usuario de eventos que sucede. Es la forma que se tiene para avisar al usuario de aquellos eventos que sucenden en background.

onHandleIntent: método que se invoca en el hilo de trabajo del IntentService cuando tiene una petición

que atender.

Permisos:

- READ_CONTACTS: permite a la aplicación leer los datos de los contactos del usuario.

- ACCESS_COARSE_LOCATION: permite a la aplicación acceder a la localización

aproximada.

- ACCESS_FINE_LOCATION: permite a la aplicación en acceso a una localización más

precisa.

- SEND_SMS: permite a la aplicación el envío de SMS

- READ_SMS: permite a la aplicación la lectura de SMS

- RECEIVE_SMS: permite a la aplicación monitorizar los mensajes que llegan, almacenarlos

o procesarlos.

- INTERNET: permite a la aplicación abrir sockets.

- ACCESS_NETWORK_STATE: permite a la aplicación acceder a la información de red.

- READ_PHONE_STATE: permite leer el estado del teléfono.

- WRITE_EXTERNAL_STORAGE: permite a la aplicación escribir en el almacenamiento

externo.

- WAKE_LOCK: permite usar el PowerManager para mantener funcionando el procesador

ante el bloqueo o apagado de la pantalla.

PowerManager: esta clase nos da el control sobre el estado de la alimentación del dispositivo.

SQLiteOpenHelper: Clase que nos ayudará a gestionar la creación de la base de datos y la gestión de

versiones.

TelephonyManager: Nos proporciona acceso sobre los servicios de telefonía del dispositivo y su estado.

Toast: es una clase que ayuda a mostrar una vista de Android llamada toast que contiene un mensaje

rápido y pequeño para el usuario. Cuando la vista se muestra al usuario, aparece como una vista flotante

sobre la aplicación. La idea es ser lo más discreto posible, sin dejar de mostrar al usuario la información

que desea. Dos ejemplos son el control de volumen, y el breve mensaje diciendo que los ajustes se han

guardado.

Page 138: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

138

12.2. Resultado de pruebas automatizadas

12.2.1. Prueba 15

En las siguientes capturas veremos los mensajes del módulo de pruebas qure recibe nuestra aplicación, el

primero de ellos con un periodo de 5 minutos entre mensajes, el siguiente de 15 y el último de 30minutos. Las

pruebas se han hecho para un tiempo total de 35 minutos.

Ilustración 91 – Prueba 15: mensajes cada 5 minutos

Page 139: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

139

Ilustración 92 – Prueba 15: mensajes cada 15 minutos

Ilustración 93 – Prueba 15: mensajes cada 30 minutos

En esta última prueba el tiempo entre mensajes es cada 30 minutoss, como el tiempo total de localización son

35 minutos sólo nos llega un mensaje UDP antes de cerrar el socket de escucha y terminar la localización.

Page 140: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

140

12.2.2. Prueba 16

En este caso, el modulo de pruebas consiste en un receptor UDP, que recibirá los mensajes provenientes del

teléfono.

Para iniciar el proceso de localización, se le envío al dispositivo el SMS que se ve en la Ilustración 94, tras el

cuál ya comenzó el envío de mensajes de localización.

Ilustración 94 – Prueba 16: SMS para comenzar (periodo 5 minutos)

Ilustración 95- Prueba 16: Recepción de localización cada 5 minutos

Ilustración 96 – Envío de SMS para comenzar (cada 15 minutos)

Page 141: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

141

Ilustración 97 – Prueba 16: Recepción de mensajes cada 15 minutos

Ilustración 98 – Envio de SMS para comenzar (cada 30 minutos)

Ilustración 99 – Prueba 16: Recepción de mensajes cada 30 minutos

Page 142: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

142

12.3. Manual de usuario

12.3.1. Instalación

Tenemos dos formas de instalar nuestra aplicación, que se encuentra en forma de archivo .apk:5

- La primera forma es descargando directamente la aplicación en nuestro teléfono, y úna vez

en él, al pulsar sobre ella comenzará la instalación de la misma.

- La segunda de ellas es transfiriendo desde nuestro PC a nuestro teléfono o Tablet android

dicho .apk, mediante un cable USB, y lo colocamos en nuestra tarjeta SD. Una vez allí lo

ejecutamos y se realizará la instalación.

Una vez entramos en la instalación de la aplicación, nos avisa de todos los permisos que necesita, como se ve

en las ilustraciones 90 y 91.

Ilustración 100 – Instalación: Permisos de la aplicación (I)

5 Es necesario indicarle a Android que permita la instalación de aplicaciones fuera del Google Play (Ajustes>Seguridad>Orígenes desconocidos).

Page 143: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

143

Ilustración 101 – Instalación: Permisos de la aplicación (II)

Finalmente, pulsamos “Instalar” y tendremos la aplicación en nuestro dispositivo.

Ilustración 102 – Instalación: Aplicación instalada

Page 144: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

144

12.3.2. Vista principal de la aplicación

Al iniciar la aplicación lo primero que no encontraremos será con un Splash de bienvenida que dará paso a la

página principal.

Ilustración 103 – Manual de usuario: Splash de bienvenida

En la siguiente imagen se muestra la página principal de la aplicación con la funcionalidad de cada uno de los

botones.

Page 145: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

145

Ilustración 104 – Manual de usuario: Página principal

12.3.3. Acceso a Agenda para agregar contactos

Ilustración 105 – Manual de usuario: Acceso a los contactos de la agenda

Page 146: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

146

Ilustración 106 – Manual de usuario: Filtrado de contactos por nombre

Para agregar un contacto de los de la agenda a una de las listas que tenemos, debemos mantener pulsado sobre

dicho contacto, y entonces aparecerá un menú en el que podremos seleccionar la lista en la que queremos

introducir un usuario. No podremos agregar al un usuario dos veces a una misma lista.

Page 147: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

147

Ilustración 107 – Manual de usuario: Agregar contactos a las listas

12.3.4. Eliminar un contacto de la lista de Localizados

Ilustración 108 – Manual de usuario: Eliminación de un contacto que localizamos

Page 148: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

148

Tras pulsar en el botón de “Eliminar Contacto” nos aparecerá una confirmación de la eliminación, y veremos

que ya no aparece dicho contacto en la lista.

Ilustración 109 – Manual de usuario: Confirmación de eliminación

12.3.5. Eliminar un contacto de la lista de Permitidos

Para ello nos situamos en nuestra lista de contactos permitidos, y mantenemos pulsado sobre el contacto que

queremos eliminar. Nos aparecerá un menú, en el que seleccionaremos la única opción que hay: “Eliminar

contacto”.

Page 149: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

149

Ilustración 110 – Manual de usuario: Eliminar contacto permitido

Tras haber pulsado en dicho botón, nos aparecerá, al igual que en el caso anterior, una confirmación de la

eliminación del contacto. Y no nos aparecerá dicho contacto en la lista de permitidos.

Ilustración 111- Manual de usuario: Confirmación de eliminación de contacto Permitido

Page 150: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

150

12.3.6. Ver la localización propia

Para ello debemos de pulsar sobre el botón “Ver mi localización” situado en el menú superior de la aplicación.

Este botón será accesible desde cualquier parte de la aplicación, excepto en la pantalla de agregar contactos.+

Ilustración 112 – Manual de usuario: Acceso a localización propia

Page 151: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

151

Ilustración 113 – Manual de usuario: Visualización de localización propia

En caso de no tener activo el gps del teléfono nos aparecerá lo siguiente al intentar ver nuestra localización.

Ilustración 114 – Manual de usuario: Localización propia no disponible

Page 152: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

152

12.3.7. Solicitar la localización de un contacto

Para ello nos situaremos en la lista de contactos que queremos localizar, es decir, me voy a la sección “Localizo

a…” de la aplicación.

Una vez allí, volvemos a seleccionar un contacto, y elegimos la opción de “Comenzar a Localizar”.

Ilustración 115 – Manual de usuario: Comienzo de la localización

Tras pulsar en el botón de “Comenzar a Localizar” tendremos la opción de elegir el tiempo con el que deseamos

recibir notificaciones del contacto. En caso de no seleccionar ninguna opción, se tomará por defecto un tiempo

de 5 minutos.

Page 153: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

153

Ilustración 116 – Manual de usuario: Elección del tiempo entre notificaciones

12.3.8. Configuración del servidor a usar

En esta sección de la aplicación, se le ofrece la oportunidad al usuario de poder modificar la IP y puerto del

servidor al que se conecta.

Al abrir la configuración, aparecerán la IP y puerto usados actualmente, el usuario podrá borrarlos, e introducir

los nuevos valores que desee.

Page 154: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

154

Ilustración 117 – Manual de usuario: Configuración Avanzada

En las siguientes ilustraciones mostraremos los posibles errores en la introducción de los valores IP y puerto.

Ilustración 118 – Manual de usuario: Configuración Avanzada-campos vacíos

Page 155: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

155

Ilustración 119 – Manual de usuario: Configuración Avanzada-IP vacía

Ilustración 120 – Manual de usuario: Configuración Avanzada-Puerto vacío

Page 156: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

156

Ilustración 121 – Manual de usuario: Configuración Avanzada-Puerto no numérico.

Ilustración 122 – Manual de usuario: Configuración Avanzada-Puerto fuera de rango

Page 157: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

157

Finalmente, si los datos son correctos se guardarán.

Ilustración 123 – Configuración Avanzada: IP y puerto correctos

Page 158: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

158

Ilustración 124 – Configuración Avanzada: Guardando cambios

12.4. Ejemplos de funcionamiento

12.4.1. Localizar a un contacto

No se permite la localización

Estamos en el caso en el que el contacto que se quiere localizar no nos tiene agregados a su lista de contactos

permitidos, en este caso recibiremos un mensaje de error.

Ilustración 125 – Localizar a un contacto: Notificación error

Si desplegamos la notificación, entonces podremos ver el contenido de la misma:

Page 159: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

159

Ilustración 126 – Localizar a un contacto: Detalle de la notificación de error

Se permite la localización

En este caso se nos permite conocer la localización del contacto, y por tanto, recibimos de manera periódica

mensajes de localización. Para este ejemplo, hemos tomado como tiempo entre notificaciones 5 minutos.

Lanzamos la solicitud y seleccionamos el tiempo como vimos en el apartado 12.3.7 y obtenedremos un resultado

como el que se muestra:

Ilustración 127 – Localizar a un contacto: Notificaciones

Si desplegamos las notificaciones podremos ver el contenido de las mismas:

Page 160: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

160

Ilustración 128 – Localizar a un contacto: Detalle de las notificaciones

Si pulsamos sobre cualquiera de las notificaciones con contenido de localización, podremos visualizar la

posición del contacto en el mapa, como vemos en la siguiente imagen.

Page 161: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

161

Ilustración 129 – Localizar a un contacto: Ver mapa

Por su parte, en el extremo que va a ser localizado, se genera una notificación para informarle a quién se le está

enviando su localización.

Ilustración 130 – Localizar a un contacto: Notificación en el extremo localizado

Page 162: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

162

12.4.2. Localización de dos contactos

Para este caso vamos a realizar la localización de dos contactos simultáneamente. Localizaremos a uno de ellos

con un tiempo entre notificaciones de 5 minutos, y al otro con un tiempo de 15 minutos.

En las siguientes imágenes mostraremos la vista con todas las notificaciones en la parte superior del teléfono

(Ilustración 131), la notificación de fin de localización (Ilustración 132), el tiempo entre notificaciones para cada

contacto (Ilustración 133) y por último dos ilustraciones correspondientes a los mapas con la localización de

cada contacto (Ilustración 134 e Ilustración 135).

Ilustración 131 – Localización de dos contactos: Notificaciones

Ilustración 132 – Localización de dos contactos: Aviso de fin de localización

Page 163: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

163

Ilustración 133 – Localización de dos contactos: tiempo entre notificaciones

Ilustración 134 – Localización de un contacto: Mapa del contacto 1

Page 164: Trabajo Fin de Grado Grado en Ingeniería de las ...bibing.us.es/proyectos/abreproy/90265/fichero/TFG-Priscila_Crespo_Bolaños.pdf · 3 Trabajo Fin de Grado Grado en Ingeniería de

164

Ilustración 135 – Localización de dos contactos: Mapa del contacto 2

Al igual que en el ejemplo anterior, se generan notificaciones para avisar a los contactos que van a ser localizados

a quién envían su localización, como se muestra a continuación.

Ilustración 136 - Localización de dos contactos: notificación en el extremo localizado (contacto 1)

Ilustración 137 – Localización de dos contactos: notificación en el extremo localizado (contacto 2)