APLICACIÓN MÓVIL PARA ESCUELAS DE EDUCACIÓN AMBIENTAL DEL AYUNTAMIENTO DE MADRID



Documentos relacionados
Sitios remotos. Configurar un Sitio Remoto

Manual de uso de la plataforma para monitores. CENTRO DE APOYO TECNOLÓGICO A EMPRENDEDORES -bilib

PRESENTACIÓN DEL PRODUCTO

Guía rápida de la Oficina Virtual Área Web y Administración Electrónica

Introducción a Moodle

MANUAL EMPRESA PRÁCTICAS CURRICULARES

MANUAL DE AYUDA TAREA PROGRAMADA COPIAS DE SEGURIDAD

MANUAL DE AYUDA. SAT Móvil (Movilidad del Servicio Técnico)

GUÍA DE USUARIO: GOOGLE DRIVE

GUIA APLICACIÓN DE SOLICITUDES POR INTERNET. Gestión de Cursos, Certificados de Aptitud Profesional y Tarjetas de Cualificación de Conductores ÍNDICE

MANUAL PARA EMPRESAS PRÁCTICAS CURRICULARES

Novedades PhotoGestion 5

Adaptación al NPGC. Introducción. NPGC.doc. Qué cambios hay en el NPGC? Telf.: Fax.:

Proceso de cifrado. La fortaleza de los algoritmos es que son públicos, es decir, se conocen todas las transformaciones que se aplican al documento

Manual de iniciación a

Región de Murcia Consejería de Educación, Ciencia e Investigación. Manual Usuario FCT

Anexo A Diagramas de Navegación

Manual del Alumno de la plataforma de e-learning.

1 Itinerario. 2 Descripción y funcionalidades principales. Google Docs. 1.1 Qué vamos a hacer? 1.2 Qué pasos vamos a seguir?

MANUAL DE USO DE LA APLICACIÓN

GUÍA DE USUARIO DEL CORREO

Manual de usuario para Android de la aplicación PORTAFIRMAS MÓVIL

V Manual de Portafirmas V.2.3.1

MANUAL DE AYUDA. MODULO SAT (Anexo Integración AGIL SAT)

Unidad Didáctica 12. La publicación

MANUAL DE USUARIO DE LA APLICACIÓN DE ACREDITACION DE ACTIVIDADES DE FORMACION CONTINUADA. Perfil Entidad Proveedora

WINDOWS : TERMINAL SERVER

Introducción a Google Calendar Breve guía sobre algunas de sus funcionalidades destacables.

Escudo Movistar Guía Rápida de Instalación Dispositivos Symbian

UAM MANUAL DE EMPRESA. Universidad Autónoma de Madrid

10. El entorno de publicación web (Publiweb)

CIF-KM. GUÍA DE LOS PRIMEROS PASOS

Administración Local Soluciones

ÍTEMS DEL MENÚ CREACIÓN Y GESTIÓN (Última revisión: lunes, 9 de marzo de 2009)

GUÍA RED SOCIAL FACEBOOK

GESTIÓN DOCUMENTAL PARA EL SISTEMA DE CALIDAD

Ajustes del Curso en egela (Moodle 2.5)

Contenido 1 INTRODUCCIÓN. Universidad Pablo de Olavide, de Sevilla Vicerrectorado de TIC, Calidad e Innovación

Dirección de Sistemas de Información Departamento CERES

MANUAL DE USUARIO. Se deben seguir los siguientes pasos para la correcta instalación del módulo descargable:

Plataforma e-ducativa Aragonesa. Manual de Administración. Bitácora

Manual hosting acens

Cómo instalar fácilmente tu WordPress tras contratar un hosting en Hostalia

Propuesta de Portal de la Red de Laboratorios Virtuales y Remotos de CEA

Oficina Online. Manual del administrador

Manual aplicación móvil iphone y Android

Qué es Google Calendar? Qué se puede hacer en Google Calendar?

Tutorial: Primeros Pasos con Subversion

App para realizar consultas al Sistema de Información Estadística de Castilla y León

Toda base de datos relacional se basa en dos objetos

Instalación y Registro Versiones Educativas 2013

MANUAL DE USUARIO APLICACIÓN SYSACTIVOS

Servicio de Informática Vicerrectorado de Tecnologías de la Información y la Comunicación

MANUAL DE AYUDA HERRAMIENTA DE APROVISIONAMIENTO

Internet Information Server

Introducción a la Firma Electrónica en MIDAS

Manual de configuración de Thunderbird ÍNDICE

ACCESO AL SERVIDOR EXCHANGE MEDIANTE OWA

PUCV - Pontificia Universidad Católica de Valparaíso

Manual del Usuario. Portal Web Para uso exclusivo de Ministros de Estado.

TUTORIAL PARA EL SISTEMA DE INSCRIPCIONES REMOTAS

Person IP CRM Manual MOBILE

Notas para la instalación de un lector de tarjetas inteligentes.

MANUAL WEBSOPORTE DE IRIS-EKAMAT

INSTALACIÓN DE MEDPRO

Manual de uso de Moodle para alumnos

MANUAL PARA GESTIÓN DE INCIDENCIAS INFORMÁTICAS

GESTORES BIBLIOGRÁFICOS EN LA UNIVERSIDAD COMPLUTENSE: ENDNOTE WEB

PLATAFORMA PASEN Escuela TIC 2.0 NOTA INFORMATIVA A PADRES Y MADRES

Escritorio remoto y VPN. Cómo conectarse desde Windows 7

Programa diseñado y creado por Art-Tronic Promotora Audiovisual, S.L.

Guía de Inicio Respaldo Cloud

MANUAL DE USUARIO PIFTE - ESPAÑA

Manual de configuración del correo electrónico Netkiamail en distintos dispositivos

Manual de usuario de Parda Programa de Almacenamiento y Recuperación de Datos Automático

Gestión de incidencias

Nº de expediente: TSI Subprograma: Avanza Competitividad I+D+I

LA CADENA DE LA INNOVACIÓN

AGREGAR COMPONENTES ADICIONALES DE WINDOWS

Manual EDT DISEÑO EDT - CREAR EVENTO DE DIVULGACIÓN TECNOLÓGICA

PRÁCTICA 10. Configuración de Correo y Publicar en la Web

Introducción a la extensión de scripting en gvsig 2.0

FOROS. Manual de Usuario

TPV VIRTUAL O PASARELA DE PAGOS DE CAJASTUR

CRONO SISTEMA DE CONTROL DE PRESENCIA. Software abierto. Distintas opciones para realizar las picadas. Web personal para cada usuario

CATÁLOGO CATÁLOGO CATÁLOGO CATÁLOGO CATÁLOGO

SECRETARÍA DE ESTADO DE ADMINISTRACIONES PÜBLICAS DIRECCIÓN DE TECNOLOGÍAS DE LA INFORMACIÓN Y LAS COMUNICACIONES

Instalar protocolo, cliente o servicio nuevo. Seleccionar ubicación de red. Práctica - Compartir y conectar una carpeta

PANEL DE CONTROL (Zona de Administración) MANUAL DE USO Por conexanet. Revisión 1.1 Fecha

Servicio de Alta, Baja, Modificación y Consulta de usuarios Medusa

Guía de instalación de la carpeta Datos de IslaWin

Sesión No. 4. Contextualización INFORMÁTICA 1. Nombre: Procesador de Texto

Departamento CERES Área de Tarjetas Inteligentes Manual de Usuario

Tema 2: Introducción a Android

MANUAL DE USUARIO. Sistema CLASS Estudiantes. Versión 2013 i. Derechos Reservados

Manual para Empresas Prácticas Curriculares

Tutorial DC++ Usarlo es muy sencillo y configurarlo también, aunque tiene algunos trucos importentes.

Internet como herramientas de comunicación: El correo electrónico

Transcripción:

APLICACIÓN MÓVIL PARA ESCUELAS DE EDUCACIÓN AMBIENTAL DEL AYUNTAMIENTO DE MADRID CARLOS FERNÁNDEZ VÁZQUEZ Mª DEL MAR OCTAVIO DE TOLEDO RODRÍGUEZ ANTONIO SANMARTÍN SÁNCHEZ FACULTAD DE INFORMÁTICA, UNIVERSIDAD COMPLUTENSE DE MADRID Trabajo Fin de Carrera - Sistemas Informáticos Curso 2012-2013 Dirigido por Inmaculada Pardines Lence María Victoria López López

II

AUTORIZACIÓN Carlos Fernández Vázquez, Mª del Mar Octavio de Toledo Rodríguez y Antonio Sanmartín Sánchez, matriculados en la asignatura de Sistemas Informáticos, autorizan, mediante el presente documento, a la Universidad Complutense de Madrid (UCM) a difundir y utilizar con fines académicos no comerciales y mencionando expresamente a su autor el presente Trabajo Fin de Carrera: APLICACIÓN MÓVIL PARA ESCUELAS DE EDUCACIÓN AMBIENTAL DEL AYUNTAMIENTO DE MADRID, realizado durante el curso académico 2012-2013 bajo la dirección de María Victoria López López y María Inmaculada Pardines Lence en el Departamento de Arquitectura de Computadores y Automática de la Facultad de Informática de dicho organismo, y a la Biblioteca de la UCM a depositarlo en el Archivo Institucional E-Prints Complutense con el objeto de incrementar la difusión, uso e impacto del trabajo en Internet y garantizar su preservación y acceso a largo plazo. Carlos Fernández Vázquez Mª del Mar Octavio de Toledo Rodríguez Antonio Sanmartín Sánchez III

IV

AGRADECIMIENTOS Dedicado a nuestros padres, por todo el apoyo y el cariño prestado durante estos años. Gracias. V

VI

RESUMEN Hábitat Madrid es un proyecto integral para la gestión de las escuelas temáticas del programa de Educación Ambiental del Ayuntamiento de Madrid [1]. El programa propone trimestralmente la realización de distintas actividades a través de cuatro escuelas: Primavera, Verano, Otoño e Invierno. El objetivo de este proyecto es el desarrollo de una solución basada en dispositivos móviles que permita la transferencia de información entre el ciudadano y el programa de Educación Ambiental citado. Por ello, además de desarrollar una aplicación móvil (Android) que facilita la comunicación con cualquier ciudadano, también se han desarrollado los elementos necesarios para el mantenimiento de una base de datos que almacene y gestione tanto los cursos y talleres como los datos de los ciudadanos inscritos. Para conseguir un sistema sostenible en este proyecto se incluye la implementación de un Web Service que permite la comunicación entre el servidor de datos y los terminales, y el desarrollo de las aplicaciones web (basadas en formularios) que permiten la actualización desde la intranet de los datos protegidos que son las fuentes de información y desde las que se actualiza al menos trimestralmente toda la oferta educativa de las cuatro escuelas. Uno de los objetivos más interesantes desde el punto de vista del ciudadano (usuario final de la aplicación móvil) es el sistema de acceso a la información mediante consultas (usuario a sistema), avisos (sistema a usuario) y posibilidad de reservas con notificación de estado (bidireccional). Aunque el proyecto está finalizado desde el punto de vista comercial (listo para explotación), el cliente (Ayuntamiento de Madrid) tiene previsto ponerlo a disposición del ciudadano al cabo de unos meses a la espera de su implementación en multiplataforma. Por esta razón, podemos decir que este proyecto se encuentra en su fase final de pruebas. Palabras clave: Android, aplicaciones móviles, Madrid, eventos medioambientales, cursos. VII

VIII

ABSTRACT Habitat Madrid is an integral project for the management of thematic schools for the Environmental Education Program of the City of Madrid. The program proposes the quarterly execution of different activities through four schools: Spring, Summer, Autumn and Winter. The objective of this project is the development of a solution based on mobile devices that allows the transfer of information between citizens and this Environmental Education Program. Besides developing a mobile application (Android) that facilitates the communication with any citizen, it has also been developed the necessary elements for the maintenance of a database that stores and manages information about the proposed activities and citizens registered data. To obtain a sustainable system this project includes the implementation of a web service that allows the communication between the data server and terminals, and the development of web applications (based on forms) to update, at least quarterly, the protected data through Intranet. The entered information, stored in the database, defines the educational offer of the four environmental schools. One of the most interesting objectives from the point of view of the citizen (end user of the mobile application) is the system access to the information by means of inquiries (user to system), advises (system to user) and possibility of reserves with status notification (bi-directional). Although the project is finalized from the industrial point of view (ready for exploitation), the client (City of Madrid) plans to make it available to the citizen in the coming months waiting for its implementation in multi-platforms. Therefore, we can say that this project is found in its final phase of tests. Keywords: Android, mobile applications, Madrid, environmental events, courses. IX

X

INDICE AUTORIZACIÓN... III AGRADECIMIENTOS... V RESUMEN... VII ABSTRACT... IX PRÓLOGO... 5 Capítulo 1. INTRODUCCIÓN... 7 1.1. Estado del Arte...8 Capítulo 2. ESPECIFICACIÓN DE REQUISITOS... 15 2.1. Requisitos funcionales del sistema... 15 2.2. Requisitos hardware y software... 16 2.2.1. Requisitos hardware... 16 2.2.2. Requisitos software... 17 Capítulo 3. LA APLICACIÓN... 21 3.1. Diagrama de flujo... 21 3.2. Casos de uso... 22 3.3. Arquitectura y diseño... 26 3.3.1. Funcionalidades e interfaz gráfica... 27 3.3.2. Servidor web... 36 3.3.3. Bases de datos... 41 3.4. Plan de desarrollo... 44 3.5. Análisis de riesgos... 45 3.6. Uso de la aplicación... 51 3.7. Aplicación Web... 56 Hábitat Madrid 1

3.8. Características... 66 Capítulo 4. TÉCNICAS ESPECIALES UTILIZADAS... 69 4.1. Quicksort... 69 4.2. Algoritmo de encriptación MD5... 71 4.3. Algoritmo de verificación de correo electrónico... 72 4.4. Sistema de recomendación... 73 4.4.1. Sistema de recomendación propuesto... 74 4.4.2. Sistema de recomendación implementado... 77 Capítulo 5. CONCLUSIONES Y TRABAJO FUTURO... 79 5.1. Conclusiones... 79 5.2. Trabajo futuro... 82 BIBLIOGRAFÍA... 83 Anexo I. MANUAL DE USUARIO... 87 Acceso... 87 Menú principal... 90 Configuración... 91 Actividades... 94 Noticias y eventos... 100 Planificación... 101 Recomendaciones... 101 Mis actividades... 101 Aplicación Web... 102 Anexo II. REUNIONES... 105 Acta primera reunión:... 105 Asuntos tratados:... 105 Acta segunda reunión:... 106 Asuntos tratados:... 106 Hábitat Madrid 2

Acta tercera reunión:... 107 Asuntos tratados:... 107 Acta cuarta reunión:... 110 Asuntos tratados:... 110 Acta quinta reunión:... 116 Asuntos tratados:... 116 Acta sexta reunión:... 120 Asuntos tratados:... 120 Hábitat Madrid 3

Hábitat Madrid 4

PRÓLOGO Este proyecto nace dentro de un convenio entre la Universidad Complutense y el Área de Medioambiente y Movilidad del Ayuntamiento de Madrid. Su principal objetivo ha sido crear una herramienta Android para dispositivos móviles que sirviera como una nueva vía de difusión del Programa Hábitat, programa de Educación Medioambiental del Ayuntamiento de Madrid. Este programa propone cada trimestre una serie de actividades, relacionadas con el medioambiente, que se distribuyen entre los distintos Centros de Información y Educación Ambiental del Ayuntamiento de Madrid. Las empresas que gestionan los distintos centros son las encargadas de elaborar los programas educativos y de gestionar la inscripción a las actividades que se llevarán a cabo en su centro. Hasta la fecha si un ciudadano estaba interesado en realizar una actividad debía ponerse en contacto con el centro correspondiente a través del teléfono o el correo electrónico. Surge entonces la necesidad tanto de unificar criterios a la hora de gestionar la inscripción de las distintas actividades como de que el proceso de inscripción sea transparente al usuario, es decir, que el usuario solicite la reserva por un único canal aunque después cada centro gestione sus propias reservas. Para afrontar este reto, Antonio, Mar y Carlos han tenido que acudir a varias reuniones en el Ayuntamiento de Madrid con los encargados del programa Hábitat y con los representantes de los distintos centros. Estas reuniones han sido difíciles, porque las partes implicadas no se ponían de acuerdo en cómo fijar los criterios de gestión; y en más de una ocasión se les hizo cambiar parte del trabajo realizado. En todo momento, ellos han demostrado una gran capacidad de comunicación a la hora de presentar y defender su trabajo; incluso, en determinadas ocasiones han aportado ideas para solucionar determinados aspectos que resultaban conflictivos entre los responsables de los distintos centros. En su trabajo han tenido que aplicar todos sus conocimientos sobre bases de datos para gestionar tanto la información almacenada sobre los usuarios como sobre las distintas actividades. Han tenido que idear la forma de nutrir estas bases de datos, que son actualizadas por cada centro, como mínimo cuatro veces al año, para introdu- Hábitat Madrid 5

cir la nueva programación trimestral. También han tenido que abordar la forma de comunicación entre los usuarios y los centros para poder realizar la gestión de reservas. El resultado ha sido una herramienta integral, fiable, que permite al usuario obtener información sobre las distintas actividades, de forma rápida, mediante una búsqueda por centro y temática, y mediante la recepción de notificaciones en el teléfono móvil. Permite también al usuario inscribirse en la actividad que le interesa de forma cómoda y sencilla y estar informado (mediante la recepción de una notificación) del día y la hora en la que se celebrará dicha actividad. La aplicación permite un mantenimiento sencillo, basado en formularios web y ejecutable en la intranet del Ayuntamiento para facilitar la actualización de los programas de las escuelas ambientales y el estado de solicitud de las reservas. Antonio, Mar y Carlos han propuesto también un modelo matemático para un sistema de recomendación basado en los gustos y preferencias del propio usuario y en las opiniones de otros usuarios que han realizado las actividades. Este sistema supondrá una gran mejora de la herramienta ya que a cada usuario se le ofrecerán las actividades que más se adapten a él y así podrá evitar verse desbordado por toda la información ofrecida por la aplicación. Antonio, Mar y Carlos han demostrado en este proyecto que son capaces de aplicar los conocimientos adquiridos durante su formación universitaria así como investigar y aprender a solucionar problemas de la vida real utilizando nuevas herramientas informáticas o desarrollándolas ellos mismos. Como directoras queremos agradecerles la buena disposición y la buena actitud que han tenido en todo momento. Inmaculada Pardines Lence y Victoria López Hábitat Madrid 6

Capítulo 1. INTRODUCCIÓN La necesidad de este proyecto, Hábitat Madrid, surge por un convenio de colaboración con el Ayuntamiento de Madrid relativo al desarrollo de aplicaciones móviles en el área medioambiente. Concretamente el convenio establece la colaboración entre la Facultad de Informática de la UCM y el Área de Gobierno de Medio Ambiente y Movilidad del Ayuntamiento de Madrid. El auge de los dispositivos móviles y la comodidad de poder realizar todas las gestiones desde una Tablet o un Smartphone ha sido uno de los principales factores por el cual esta idea de proyecto ha podido llevarse a cabo. El proyecto que se presenta en esta memoria tiene como objetivo principal desarrollar una aplicación para móviles Android que informa y gestiona las distintas actividades ambientales que organiza el Área de Gobierno de Medio Ambiente y Movilidad del Ayuntamiento de Madrid. El programa de actividades ambientales se compone por varios centros independientes generalmente asociados a un entorno emblemático (Dehesa de la Villa, Retiro, etc.). Cada centro tiene su forma de realizar sus inscripciones, con teléfono, horario de atención al ciudadano y correo electrónico de información. El desarrollo de la aplicación Hábitat Madrid en su versión para dispositivos móviles, no solo incorpora una nueva vía de solicitud y de información a las actividades ambientales del Ayuntamiento de Madrid (actualmente las vías que existen son mediante llamada telefónica y el correo electrónico), sino que además se ha conseguido unificar todos estos centros de forma transparente para el usuario. Se trata de una solución integral muy positiva consecuencia del gran esfuerzo realizado conjuntamente con el Ayuntamiento de Madrid. Entre los principales logros conseguidos, cabe destacar que las solicitudes de plaza para una determinada actividad se puedan realizar con una fecha anterior a un mes a la fecha de realización de la actividad. Anteriormente cada centro tenía sus propias normas (3 meses, 15 días, etc.). Con la implementación de esta nueva vía, se pretende llegar a un tipo de personas más jóvenes, que son las que están más al tanto del manejo de esta clase de dispositivos móviles sin descuidar a los ciudadanos que cursan este tipo de actividades utilizando vías tradicionales de comunicación. Hábitat Madrid 7

Cualquier usuario inscrito en la aplicación puede obtener información acerca de la actividad seleccionada y tiene la opción de solicitar la inscripción en dicha actividad. La aplicación le confirmará la existencia o no de plazas en la actividad solicitada y avisará al interesado mediante notificaciones en el dispositivo de las actividades pendientes próximas a comenzar. Para optimizar el rendimiento de la aplicación, se permite al usuario configurar un perfil con las temáticas de interés y otros datos mediante los cuales se producen recomendaciones filtradas. Para este aspecto también se toma en cuenta la opinión del asistente a una actividad mediante respuestas en un cuestionario sencillo que permite conocer la valoración global del evento que se ha desarrollado y asociarla al perfil del asistente. Esta memoria se estructura de la siguiente forma. En este capítulo introductorio además se incluye el estado del arte donde se muestran otras herramientas similares o con funcionalidades útiles para nuestro proyecto. En el capítulo 2 se describe con detalle la especificación de requisitos del proyecto. Las aplicaciones desarrolladas (App y aplicación web asociada), el diseño de las bases de datos y la arquitectura del proyecto se explica en el capítulo 3. Algunos puntos del proyecto han requerido la implementación de técnicas especiales que se describen en el capítulo 4. Por último el capítulo 5 recoge las conclusiones y la propuesta de trabajo futuro. La memoria se completa con la bibliografía y con dos anexos, un manual de uso de la aplicación y las distintas reuniones llevadas a cabo con el cliente. 1.1. Estado del Arte En esta sección se realiza un estudio de las aplicaciones, similares a la propuesta en esta memoria, que ya existen en el mercado. Actualmente las aplicaciones móviles se pueden englobar en distintos campos dependiendo hacia donde se quieran enfocar. Existen muchas aplicaciones destinadas a la educación [2,3,4], medicina [5], cultura (turismo, museos) [6], aplicaciones útiles para la vida diaria como por ejemplo Shop&Go Hábitat Madrid 8

[7] o Recycla.me [8], y podríamos seguir enumerando infinidad de sectores que hacen uso de estas aplicaciones. Dentro del grupo de tecnología, investigación y desarrollo al que pertenece este proyecto [9] se han desarrollado ya numerosas aplicaciones útiles como pueden ser Shop&Go [7], que permite realizar listas de la compra y minimiza la ruta (camino) para comprar los productos, incluidos en una de las listas creadas, en grandes superficies comerciales, CGTeL, para calcular y predecir el gasto acumulativo realizado por un terminal, o Recycla.me [8], que informa a los niños sobre un correcto reciclaje de materiales de uso diario. Las tres aplicaciones nombradas anteriormente son una muestra del estilo de aplicaciones que se llevan a cabo en este grupo de investigación y desarrollo. Para la realización de Hábitat Madrid el primer objetivo es conocer lo que ya hay desarrollado y comprobar sus ventajas e inconvenientes, para de este modo conseguir que nuestra aplicación sea lo más práctica y eficiente posible. Para ello hemos buscado aplicaciones que ya estaban en el mercado [10] diferenciándolos de la siguiente forma: Aplicaciones con identificación de usuario: cualquier aplicación que requiera registrarse para iniciar sesión. Facebook, Twitter, Endomondo, Instagram. Aplicaciones con envío de notificaciones: ScoreMobile, Facebook, Whatsapp. Aplicaciones con gestión de contenido: Gmail. Aplicaciones similares a Hábitat Madrid: Nuestra aplicación se podría englobar dentro de las aplicaciones destinadas a la cultura y al ocio, ya que tiene como finalidad que los ciudadanos conozcan y se informen de las actividades medioambientales que se llevan a cabo en la ciudad de Madrid. Durante la investigación inicial hemos encontrado algunas aplicacio- Hábitat Madrid 9

nes que presentan características similares a la propuesta en esta memoria. A continuación vamos a detallar alguna de estas aplicaciones. CulturaUNAM: Figura 1: Aplicación CulturaUNAM Esta aplicación muestra las actividades culturales de la Universidad Nacional Autónoma de México: teatro, danza, música, literatura, cine, artes visuales, radio y televisión. Hábitat Madrid 10

Navegando por la aplicación CulturaUNAM [11] se pueden ver las diferentes funcionalidades de las que dispone. Desde un menú desplegable el usuario puede elegir el tema del que se desea informar así como también ver eventos disponibles. Esta aplicación dispone de una pestaña en la que se puede escuchar la radio y ver la televisión de la universidad. Tanto en la Figura 1 como en la Figura 2 podemos observar la apariencia que tienen las dos aplicaciones que estamos mencionando. BCN cultural: La principal utilidad de BCN cultural [12] es informar de las actividades culturales de la ciudad de Barcelona. Navegando por la aplicación se pueden observar los siguientes apartados: o Agenda: Se pueden consultar las actividades propuestas para el día actual. o Buscar: Desde aquí se pueden buscar actividades y lugares culturales a partir de diferentes criterios introducidos. o Favoritos: Lista de actividades marcadas por el propio usuario. o Mapa: Situación en el mapa de las actividades culturales listadas. o Calendario: Lista de actividades destacadas de la semana actual y la siguiente. En cuanto a nuestra aplicación tendremos una distinción: introduciremos una gestión de usuarios en la cual cada persona tiene acceso a un perfil propio que se deberá completar de forma que queden registrados los intereses del usuario. Así será informado solo de las actividades en las que ha demostrado su interés. Hábitat Madrid 11

Figura 2: Aplicación BCN Cultural En estas otras aplicaciones el usuario es el que se apunta para recibir información de los eventos que le interesan. En cambio, en Hábitat Madrid es un gestor el que se encarga de decidir, en función del perfil cumplimentado por el usuario al inscribirse, qué eventos son los que le pueden interesar. Además, otra característica a destacar es que los usuarios tienen la facilidad y posibilidad de inscribirse a la actividad que le interese a través del móvil por medio de la aplicación. Puede incluso seleccionar, con un máximo de 10 personas, el número de asistentes que se desean inscribir en el evento. Y, Hábitat Madrid 12

por medio de la aplicación, el usuario tendrá la confirmación o rechazo de la plaza solicitada. Tiene la comodidad de enterarse de la existencia de nuevas noticias o eventos que el Ayuntamiento de Madrid va programando día a día por medio de notificaciones que le llegan al usuario a través de la aplicación. De este modo, el usuario no tendrá que estar entrando en la aplicación cada vez que desee enterarse si existen o no nuevos eventos. También, por medio de notificaciones, Hábitat recordará al usuario de la existencia de la actividad a la que se ha apuntado un día antes de la realización de la misma para que al usuario no se le olvide, ya que tienen la oportunidad de inscribirse en la actividad hasta un mes antes de su ejecución. Con estas funcionalidades que distinguen a Hábitat Madrid de las demás aplicaciones hemos conseguido que todo el personal del Ayuntamiento de Madrid encargado de este sector se ponga de acuerdo con la fecha de saltar a conocer la existencia de las actividades, que, en nuestro caso, será un mes antes de la fecha de realización de la actividad. Hábitat Madrid 13

Hábitat Madrid 14

Capítulo 2. ESPECIFICACIÓN DE REQUISITOS 2.1. Requisitos funcionales del sistema Durante el desarrollo de la aplicación tuvimos varias reuniones con el personal del área de Gobierno de Medio Ambiente y Movilidad del Ayuntamiento de Madrid. En estas reuniones fuimos formando los requisitos de la aplicación Hábitat Madrid. Estos requisitos ofrecen las siguientes funcionalidades al usuario: 1. Consultar actividades: Los usuarios tendrán la posibilidad de ver todas las actividades que hay programadas por el Ayuntamiento de Madrid. 2. Consultar noticias y eventos: Los usuarios tendrán la opción de ver las noticias y eventos que ofrece el Ayuntamiento de Madrid con la posibilidad de pulsar en un enlace donde se le informa de las mismas con más detalle. 3. Inscripción en actividades concretas: Los usuarios podrán reservar plazas en la actividad deseada a través de la aplicación. En cuanto el usuario reciba la contestación de que está admitido en una actividad, podrá confirmar su asistencia. 4. Recibir notificaciones: El usuario recibirá notificaciones que le informan de las noticias o eventos programados por el Ayuntamiento de Madrid. 5. Consultar el estado de las actividades: Para que los usuarios confirmen su inscripción en las actividades tendrán la opción de consultar el estado de su solicitud de reserva. 6. Utilizar un sistema de recomendaciones: Los usuarios contarán con un sistema de recomendaciones que le mostrará las actividades que más le puedan interesar. Hábitat Madrid 15

7. Protección de datos al registrarse: Los usuarios contarán con la tranquilidad de la protección de los datos que se insertan en el registro. 8. Consulta de un calendario: La aplicación llevará un calendario en el que se mostrarán los días en los que hay una actividad, así como la disponibilidad de plazas para las diferentes actividades mediante distintos colores. 9. Aplicación Web: La base de datos se nutre con los eventos y actividades disponibles a través de una aplicación web en la que el personal del Ayuntamiento pueda gestionar las inscripciones, y la información sobre las distintas actividades. 2.2. Requisitos hardware y software En esta sección vamos a describir cuales han sido los requisitos para poder llevar a cabo el desarrollo de la aplicación Hábitat Madrid. A continuación describimos los recursos software y hardware que hemos utilizado. 2.2.1. Requisitos hardware Las herramientas hardware que hemos necesitado para llevar a cabo Hábitat Madrid han sido las que se describen a continuación: Un ordenador con conexión a internet donde poder desarrollar el proyecto. En nuestro caso, cada integrante del grupo disponía de un portátil propio, lo cual ha simplificado bastante el poder realizar tareas concurrentemente. Los equipos que hemos usado son: Portatil Sony Vaio Portatil Asus A55V Portatil Dell Inspiron 1545 Las tres máquinas usaban el sistema operativo Windows7. Hábitat Madrid 16

La otra herramienta que hemos necesitado para el proyecto, ha sido un teléfono móvil con Sistema Operativo Android con conexión WIFI/3G, ya que el simulador es un poco limitado y a la hora de probar funcionalidades concretas, es mucho más efectivo correr la aplicación sobre un terminal físico. En nuestro caso, al igual que ocurría con los ordenadores, cada integrante del grupo de proyecto disponía de un teléfono móvil con sistema operativo Android. Los terminales usados han sido: 2 Sony Ericsson Xperia Neo V Samsumg Galaxy S2 2.2.2. Requisitos software Hábitat Madrid es una aplicación de telefonía móvil. Para lograr su correcto desarrollo hemos tenido que trabajar con distintas herramientas software que detallamos a continuación: 2.2.2.1. Eclipse En primer lugar, para la programación de la aplicación hemos trabajado con el entorno de desarrollo Eclipse [13] en la versión JUNO. Nos hemos decantado por el uso de esta herramienta porque la hemos usado bastante a lo largo de nuestra formación académica. Además el entorno Eclipse es gratuito. Figura 3: Eclipse Hábitat Madrid 17

Junto con Eclipse, para poder desarrollar la aplicación Android ha sido necesario descargarse el paquete Android Software Development Kit [14] (SDK), el plugin Android Development Tools [15] (ADT) que incluye un depurador de código, librerías para poder desarrollar aplicaciones para Android y un simulador de dispositivos virtuales AVD (Android Virtual Device). Figura 4: Emulador AVD Para programar Hábitat Madrid en el entorno Eclipse, hemos usado lenguajes como JAVA y XML. 2.2.2.2. Repositorio SVN SVN o Subversion, es un sistema de control de versiones. Todo el repositorio tiene un único número de versión que identifica un estado común de todos los archivos del repositorio en un instante determinado. En nuestro caso hemos decidido usar un repositorio de control de versiones SVN principalmente por dos razones, la primera es para poder tener un control de la historia Hábitat Madrid 18

de los archivos del trabajo que estamos realizando y la segunda, para poder estar trabajando los tres integrantes del grupo desde ordenadores diferentes. SVN tiene una fácil integración con Eclipse mediante el plugin Subclipse. Además no nos ha costado mucho aprender su manejo ya que en otras asignaturas de la carrera lo hemos usado. El repositorio escogido ha sido XP-Dev [16]. Figura 5: XP-Dev 2.2.2.3. Web hosting El alojamiento web, es el servicio que provee a los usuarios de internet de un sistema para poder almacenar información o cualquier contenido almacenable vía web. Para poder desarrollar Hábitat Madrid, necesitábamos disponer de una base de datos en la que pudiéramos consultar información. Decidimos contratar un servicio Hosting [17] gratuito, concretamente en Webhost.com [18], ya que podíamos alojar ahí la base de datos y los Web Services utilizados en la aplicación. Figura 6: Webhost Para poder comunicarnos desde la aplicación móvil con la base de datos, ha sido preciso crear unos Web Services (o scripts) realizados en PHP. La base de datos que nos proporcionaba este servidor gratuito era MySQL [19] administrada mediante phpmyadmin [20], este es otro punto por el cual decidimos escoger este hosting, ya que anteriormente los tres integrantes del grupo habíamos trabajado con estos entornos. Hábitat Madrid 19

2.2.2.4. Dreamweaver Para finalizar los requisitos software, hemos tenido que realizar unos pequeños formularios web con el fin de nutrir la base de datos de la aplicación y así poder difundir las noticias y eventos, que es el principal objetivo de este proyecto. Dichos formularios web los hemos realizado mediante la herramienta de diseño web Dreamweaver [21] ya que uno de los integrantes del grupo tenía experiencia en el uso de la herramienta. Los archivos generados han sido subidos al servidor hosting anteriormente descrito a través de FTP. Figura 7: Adobe Dreamweaver CS6 Hábitat Madrid 20

Capítulo 3. LA APLICACIÓN En este capítulo se detalla el proceso de desarrollo de Hábitat Madrid empezando por la definición de los casos de uso que se han utilizado, y a continuación se explican los módulos en que se ha dividido la aplicación. También se comenta el plan de desarrollo llevado a cabo por este grupo y los principales problemas con los que nos hemos encontrado. 3.1. Diagrama de flujo Los diagramas de los casos de uso [22] documentan el comportamiento de un sistema desde el punto de vista del usuario. Por tanto los casos de uso determinan los requisitos funcionales del sistema, es decir, representan las funciones que un sistema puede ejecutar. Figura 8: Diagrama de Flujo Hábitat Madrid Hábitat Madrid 21

En la Figura 8 podemos observar la relación entre los casos de uso de Hábitat Madrid. Vemos que dependen unos de otros, por lo que podemos comprobar que todos los casos de uso son necesarios para el correcto funcionamiento de la aplicación. 3.2. Casos de uso Un caso de uso describe qué hace un sistema, clase o interfaz, pero no especifica cómo lo hace. El comportamiento de un caso de uso se puede especificar describiendo un flujo de eventos de forma textual, lo suficientemente claro para que alguien ajeno al sistema lo entienda fácilmente. Al escribir este flujo de eventos se debe incluir cómo y cuándo empieza y acaba el caso de uso. En la aplicación Hábitat Madrid se presentan los siguientes casos de uso: Registrarse en la aplicación: Los usuarios llegan por primera vez a la aplicación y se registran. o Precondiciones: El usuario se registra o Postcondiciones: El usuario queda registrado en la aplicación o Flujo de eventos: 1. El usuario entra en la aplicación y pulsa el botón Registrar 2. El usuario rellena el formulario insertando todos los datos que se le piden 3. El usuario lee las condiciones de uso 4. El usuario acepta las condiciones de uso 5. El sistema registra al usuario en la base de datos y presenta el menú principal Consultar las actividades programadas: Los usuarios registrados en la aplicación pueden ver todas las actividades que hay programadas. Hábitat Madrid 22

o Precondiciones: El usuario se registra en la aplicación o Postcondiciones: El usuario tiene disponibles las actividades o Flujo de eventos: 1. El usuario pulsa sobre el botón Actividades del menú principal 2. El usuario elige el lugar donde desea realizar una actividad 3. El usuario elige el tema de la actividad que desee 4. El usuario elige la actividad que desea consultar 5. El sistema muestra la actividad con su descripción y la fecha en la que se va a llevar a cabo Inscribirse en una actividad: Los usuarios interesados pueden inscribirse en la actividad que deseen o Precondiciones: El usuario se registra y consulta las actividades o Postcondiciones: Se inscribe en una actividad o Flujo de eventos: 1. El usuario consulta la actividad en la que se desea inscribir 2. El usuario selecciona el número de plazas que desea inscribir 3. El usuario pulsa el botón de solicitar la reserva 4. El sistema recibe la solicitud de reserva del usuario y le manda una contestación, ya sea de admitido o rechazado y lo registra en la base de datos Consultar el estado de las actividades: Los usuarios pueden consultar el estado de las actividades en las que se han inscrito o Precondición: Inscribirse en una actividad Hábitat Madrid 23

o Postcondición: Consultar si el estado de la reserva es de admitido, rechazado, o sigue en curso o Flujo de eventos: 1. El usuario se inscribe en una actividad y queda a la espera de contestación 2. El sistema manda una contestación al usuario 3. El usuario pulsa sobre el botón de Mis Actividades del menú principal 4. El usuario puede consultar las actividades que están en curso, las actividades en las que le han admitido o las actividades en las que le han rechazado Recibir notificaciones: Los usuarios pueden recibir notificaciones sobre noticias o eventos de los que informa el Ayuntamiento de Madrid o Precondiciones: Estar registrado en la aplicación y tener activa la opción de recepción de notificaciones o Postcondiciones: Recepción de notificaciones o Flujo de eventos: 1. El usuario entra en el menú de configuración y mediante la opción "Notificaciones y avisos" habilita la opción de recibir notificaciones 2. El área de Medio Ambiente del Ayuntamiento de Madrid propone nuevas noticias o eventos 3. La aplicación mandará al usuario una notificación informando de esta nueva noticia o evento 4. El usuario recibe la notificación en el móvil Hábitat Madrid 24

Consultar noticias y eventos: Los usuarios tienen la posibilidad de consultar las noticias o eventos programadas por el Ayuntamiento de Madrid o Precondiciones: Estar registrado en la aplicación o Postcondiciones: Informarse de las novedades o Flujo de eventos: 1. El usuario pulsa sobre el botón de Noticias y eventos del menú principal 2. La aplicación muestra todas las noticias o eventos que siguen vigentes en el programa Consultar un calendario: Los usuarios pueden ver en un calendario las actividades que hay programadas para un día concreto o Precondiciones: Estar registrado en la aplicación o Postcondiciones: Informar de las actividades que hay en el día o Flujo de eventos: 1. El usuario pulsa sobre el botón de planificación del menú principal 2. La aplicación muestra la página del calendario del Ayuntamiento de Madrid 3. El usuario pulsa sobre el día que quiere 4. La aplicación muestra todas las actividades que hay programadas para ese día Rellenar un cuestionario: Los usuarios pueden rellenar un cuestionario sobre la actividad a la que han asistido o Precondiciones: Estar inscrito en una actividad y haber participado en ella Hábitat Madrid 25

o Postcondiciones: Informar al administrador de la opinión del usuario sobre la actividad a la que ha asistido o Flujo de eventos: 1. El usuario se inscribe en la actividad 2. El usuario es admitido en la solicitud de reserva de la actividad 3. El usuario participa de la actividad 4. El usuario rellena un cuestionario indicando su opinión sobre la actividad 5. El sistema registra la opinión del usuario (para actividades posteriores). Esta información puede ser usada por un sistema de recomendación de actividades. Utilizar un sistema de recomendación: El usuario dispone de un sistema de recomendación de actividades o Precondiciones: Estar registrado en la aplicación o Postcondiciones: Ofrecer las actividades que más le puedan interesar al usuario o Flujo de eventos: 1. Pulsar sobre el botón Recomendaciones del menú principal 2. Consultar todas las actividades que te recomienda la aplicación 3.3. Arquitectura y diseño La aplicación Hábitat Madrid puede quedar estructurada en dos partes bien diferenciadas: Hábitat Madrid 26

La primera se trata de todo lo que conlleva el entorno de desarrollo Eclipse en el cual se desarrollan las funcionalidades y la interfaz gráfica de Hábitat Madrid La segunda parte es la que conlleva todo el tema del servidor, y dentro de esta parte se encuentra la base de datos de la aplicación, los scripts PHP [23] que se encargan de ejercer la comunicación del dispositivo móvil con la base de datos y los archivos que forman la página web que se va a encargar del mantenimiento y gestión de Hábitat Madrid A continuación vamos a detallar más profundamente como están estructuradas internamente cada una de estas partes: 3.3.1. Funcionalidades e interfaz gráfica Para el desarrollo de las funcionalidades de Hábitat Madrid hemos usado cuatro paquetes Java que engloban un conjunto amplio de clases Java que están desarrolladas en su interior. A continuación vamos a describir las clases java que hemos utilizado de forma rápida y breve. Se pretende que el lector conozca una breve descripción de lo que se está haciendo en cada punto de la aplicación. Por comodidad y para evitar duplicar contenido del funcionamiento de la aplicación no vamos a detallar los ficheros XML [24] que se corresponden a la interfaz de la aplicación puesto que parte de su funcionamiento ya lo vamos a detallar al describir las clases java. Cada una de las activitys que se describen en el contenido del paquete escuelas tienen asociado un fichero XML. En la Figura 10 se puede observar la organización de los paquetes de código java así como los ficheros XML generados. Falta nombrar el archivo XML AndroidManifest, en el que se tienen que definir todas las activitys que hacen uso en la aplicación y también hay que definir aquí los permisos que son requeridos para el uso de la aplicación. Hábitat Madrid 27

Figura 9: Paquetes y clases usados Hábitat Madrid 28

Figura 10: Permisos usados en Hábitat Madrid Paquete escuelas: Dentro de este paquete se encuentran todas las Activitys de la aplicación, así como la clase AlarmChecker.java que describiremos más adelante. o MainActivity.java: Este es el principio de toda la aplicación de Hábitat Madrid. En esta clase usamos el método postdelayed de la clase Handler para mostrar una pantalla inicial durante tres segundos. o MainActivity1.java: Esta clase es la continuación a la clase explicada en el punto anterior. En esta clase realizamos una conexión a la base de datos (SQLite) interna del teléfono para comprobar si el usuario tenía marcada la opción de recordar su password y de esta forma saltar al menú principal directamente. En esta clase se usa una subclase llamada asynclogin que extiende de la clase AsyncTask, su labor principal es la de hacer las operaciones que se requieran en segundo plano (background), nosotros siempre vamos a usar esta subclase para cualquier tipo de comunicación con la base de datos, en este caso, para validar que el correo electrónico y el password que se han introducido son correctos. o MenuActivity.java: Es la clase que se encarga de gestionar las distintas opciones que ofrecemos en el menú principal de la aplicación. También es usada la subclase asynclogin mencionada anteriormente para obtener información de las noticias y de las recomendaciones. o ConfiguracionActivity.java: Desde esta clase se gestionan las distintas opciones de la aplicación a las que puede acceder el usuario. Se hace una conexión a la base de datos SQLite para obtener las preferencias del usuario que está usando la aplicación. Se usa asynclogin para recuperar los datos del usuario en el caso de que se elija la opción de modificar usuario. Hábitat Madrid 29

o ModificarDatosActivity.java: Desde aquí el usuario puede observar cuales son los datos que ha introducido a la hora de hacer el registro y puede modificar los datos que desee con excepción del correo electrónico, que permanece inalterable. o OpcionesAppActivity.java: Esta clase es la encargada de gestionar si el usuario desea que no aparezca la pantalla del menú la siguiente vez que se ejecute la aplicación. La opción que se escoja queda guardada en la base de datos SQLite interna del teléfono. o DatosAppActivity.java: Clase muy simple que muestra información de la App. o ConfiNotificacionesActivity.java: Se encarga de activar la alarma encargada de generar las notificaciones [25,26,27]. Se usan las clases AlarmManager y Calendar para programar una alarma cada cierto tiempo, en nuestro caso una vez al día. o alarmchecker.java: Extiende de Service e implementa Runnable a través del método run(). En nuestro caso accedemos al servidor para recuperar el número de noticias que hay y lo comparamos con el número de noticias que tenemos guardado en el teléfono (SQLite), si hay más noticias en el servidor se saca la notificación y guardamos el nuevo valor en la memoria del teléfono. o CambiarContrasenaActivity.java: Se encarga de cambiar la password del usuario metiendo la password vieja y posteriormente la nueva dos veces. o ActivTemaActivity.java: En esta clase se puede marcar las preferencias que le interesan al usuario, que posteriormente serán utilizadas en las recomendaciones, quedando guardadas en la base de datos interna del teléfono (SQLite). o NoticiasActivity.java: Esta clase recibe como parámetros los nombres de cada una de las noticias que están almacenadas en la base de datos y se muestran en una lista para que el usuario elija la noticia sobre la cual Hábitat Madrid 30

desea ver toda su información. Una vez que el usuario elije la noticia accedemos en background mediante asynclogin a la base de datos para sacar la información completa de la noticia y estos datos son pasados a la clase InformaciónNoticiasActivity.java como parámetro. o InformacionNoticiasActivity.java: Recibe los datos nombrados en la anterior descripción y se encarga de mostrárselos al usuario. o EventosActivity.java: Desde esta clase se muestran las áreas en las que están disponibles las actividades. Dependiendo de la opción que elija el usuario se mostrará una pantalla para elegir temáticas u otra pantalla para elegir el parque del que se quiere consultar información (Parque del Oeste, Madrid Río). o AmbientalesActivity.java: El comportamiento de esta clase es simplemente seguir clasificando la información a la que el usuario desea acceder. Dentro de las actividades ambientales se muestra otro menú donde el usuario refina más las actividades que le interesan. o Act2Activity.java: A esta clase se puede acceder desde la clase EventosActivity.java si el usuario pulsa cualquiera de los siguientes botones: Retiro, Casa de Campo, Parque Juan Carlos I o Dehesa de la Villa. La función de esta clase es refinar más la búsqueda seleccionando la temática de la que se quieren obtener las actividades. o Otras2Activity.java: Comportamiento muy similar a la clase AmbientalesActivity descrita más arriba pero con la diferencia de que lo que mostramos es la posibilidad de elegir información sobre otros parques distintos a los que ofrece EventosActivity. o ListarActividadesActivity.java: Después de haber ido clasificando la búsqueda en las Activitys descritas anteriormente, la función de esta clase es mostrar el nombre de las actividades disponibles ordenadas por fecha de realización mediante una variante del algoritmo de ordenación Quicksort [28] dentro de una lista donde el usuario debe apretar con el dedo en la actividad que desee obtener más información. Hábitat Madrid 31

o InformacionEventosActivity.java: A esta clase se le pasa por parámetro toda la información de la actividad seleccionada previamente y se le muestra al usuario. Es desde aquí donde el ciudadano puede solicitar la inscripción a una determinada actividad introduciendo el número de plazas (entre 1 y 10) que se desea reservar. Cuando se haya especificado el número de plazas se puede proceder a solicitar la reserva presionando el botón Reservar. (esto no quiere decir que el usuario esté aceptado en la actividad, si no que se procederá a tramitar su reserva y el usuario deberá consultar el apartado MIS RESERVAS del menú principal). o ListarActividadesRecomendadasActivity.java: esta clase tiene la labor de mostrar una lista con los nombres de las actividades que se le recomiendan al usuario. Para ello es necesario que el usuario haya introducido sus preferencias en el menú de configuración de la aplicación. o EstadoActividadesActivity.java: La función de esta clase es obtener la información de qué estado de las actividades quiere consultar el usuario (actividades aceptadas, en curso o rechazadas). o MostrarEstadoActividadesActivity.java: Esta clase es similar a ListarActividadesActivity, muestra una lista de la opción que se ha seleccionado en la ventana anterior. o MostrarEstadoActividades2Activity.java: Es similar a la clase descrita con anterioridad que se encarga de mostrar la información de la actividad que ha sido seleccionada salvo que en este caso no se muestra la opción de solicitar la reserva, puesto que ya está realizada. o RegenerarClaveActivity.java: Esta clase es la que gestiona el olvido del password de un usuario, para ello hace uso de asynclogin para que en segundo plano se le envíe una nueva clave al usuario generada aleatoriamente. o RegistroActivity.java: Recoge los datos introducidos por el usuario y los almacena en la base de datos que tenemos alojada en el servidor web mediante la clase asynclogin (background). De esta clase cabe destacar Hábitat Madrid 32

que usamos una notificación emergente por medio de un dialogo AlertDialog informando al usuario de las condiciones de uso, las cuales deben ser aceptadas para formalizar el registro en Hábitat Madrid. Paquete Conexión: Dentro de este paquete se encuentran todas las clases que son utilizadas para tratar las bases de datos de Hábitat Madrid. En la aplicación se usan dos tipos de bases de datos distintas. Por un lado tenemos la base de datos en MySQL que es la que se encuentra alojada en el servidor web y por el otro lado hacemos uso de una base de datos SQLite para guardar información en la memoria interna del teléfono. A continuación detallamos la funcionalidad de las clases que forman dicho paquete. o CambiarClave.java: Se tratan los cambios de la contraseña del usuario. Para ello hacemos uso de dos métodos importantes en esta clase. validarclaveactual(): su labor es verificar que la contraseña actual es la que realmente se corresponde a la del usuario que está haciendo uso de la aplicación. updatecontraseña(): método desde el cual se procede a sobreescribir la clave antigua y a guardar la clave nueva que el usuario debe usar al iniciar sesión. o DatosUsuario.java: Desde esta clase se pueden consultar los datos del usuario y posteriormente modificar los mismos si el usuario así lo desea. Los métodos que están implementados son consultardatos() y modificar- Datos(). o ListarActividades.java: Esta clase es la encargada de obtener las distintas actividades que se encuentran en la base de datos. Los métodos más importantes que están implementados son: consultaeventos(): devuelve un contenedor en el que se almacenan datos básicos de las actividades (nombre y fecha en la que tiene que ser visible la actividad). Hábitat Madrid 33

infoeventos(): más completo que el método anterior ya que el contenedor devuelto contiene toda la información que se le muestra al usuario para que decida si reserva la plaza o no. ultimaactividad(): cada actividad guardada en la base de datos posee un identificador único ascendente. La función de este método es obtener el último identificador para reconocer la actividad más actual. o ListarActividadesRecomendadas.java: Se trata de una clase similar a la descrita en el anterior punto, de hecho los dos métodos que posee son consultaeventos() y infoeventos() con la diferencia que la forma en que mostramos las actividades son distintas, puesto que aquí interesa obtener las que se corresponden con las preferencias del usuario. o Noticias.java: De similares características que las dos clases anteriores pero con los métodos consultanoticias(), infonoticias() y ultimanoticia(). El último método nombrado recoge el identificador de la noticia más reciente insertada y comparándolo con el identificador de las noticias que tenemos guardado en la memoria interna del teléfono, sabremos si el sistema debe lanzar una notificación PUSH [29] informando al usuario de que hay nuevas noticias en la sección Noticias. o RegenerarClave.java: Su función es comunicarse con el servidor para informarle que se debe generar una clave nueva para el usuario que lo solicita, la cual se debe enviar por correo electrónico a la dirección que el usuario haya proporcionado. o RegistrarUsuario.java: Esta clase informa al servidor de los datos que hay que introducir en la tabla destinada a los usuarios. o Reserva.java: Informa al servidor de la actividad que ha reservado un determinado usuario. o SolicitudesAdmitidas, SolicitudesEnCurso y SolicitudesRechazadas: Obtienen de la base de datos las actividades para las que ha solicitado Hábitat Madrid 34

reserva de plaza el usuario y las clasifica según estén admitidas, rechazadas o todavía se estén tramitando. o ValidarUsuario.java: Se encarga de verificar el correo y clave introducidos cuando el usuario desea iniciar sesión. o ConexionSQLite: Esta clase es necesaria para que se puedan almacenar datos en la memoria del teléfono, sirve para abrir la base de datos para posteriormente poder consultar datos o insertarlos. Paquete Funciones: Dentro de este paquete se encuentran funciones que en algún momento se van a usar en la aplicación. Se ha optado por aislarlas en este paquete puesto que así pueden ser más fácilmente accesibles y reutilizadas. o CompararFechas.java: Esta clase es utilizada para comparar las fechas de las actividades propuestas. Es útil para saber si una actividad se puede mostrar ya al usuario o si por el contrario todavía no se ha llegado a la fecha establecida para que aparezca en la aplicación. Otra labor de esta clase es gestionar si una solicitud de plaza está dentro de los 30 días de antelación exigidos. o DatePhone.java: Cuando se llama al método que tenemos implementado en esta clase obtenemos en un variable tipo String la fecha del dispositivo para posteriormente realizar las comparaciones de fechas necesarias para mostrar o no las actividades. o EstructuraNombreFecha.java: función utilizada para guardar información útil que sirva a otras clases en algún punto de la vida de la aplicación. o OrdenaciónQuickSort.java: Aquí reside el algoritmo de ordenación rápida QuickSort que nosotros utilizamos para mostrar las actividades de forma ordenada por la fecha de realización de la actividad, ordenadas desde las que se realizan antes (o ya se han realizado) a las que tienen una fecha de realización más tardía. Hábitat Madrid 35

Paquete Seguridad: Por último en cuanto al código java se refiere en este paquete hemos introducido dos clases que nos ayudan un poco a dar seguridad a la aplicación. o Encriptacion.java: Para proteger las claves de los usuarios y que no puedan ser conocidas por el personal que administra la base de datos usamos un algoritmo de encriptación MD5 [29]. o ValidarCorreo.java: Mediante la llamada al método que hay implementado en esta clase pretendemos conseguir que los usuarios que se registren usen un correo electrónico que tenga una formato de correo electrónico. 3.3.2. Servidor web En esta sección vamos a describir la otra parte de la estructura de la aplicación que no tiene que ver con el código java. Vamos a hablar por separado de los archivos que usamos para comunicarnos con la aplicación móvil, los archivos que usamos para componer la página web y las dos bases de datos que son usadas en Hábitat Madrid, una de ellas está alojada dentro del servidor web (MySql) y la otra está interna dentro de la memoria del dispositivo Android (SQLite). En primer lugar presentamos los archivos que se utilizan en la aplicación y que tienen su ubicación en la carpeta /public_html/. En la Figura 11 se puede observar que hay archivos de varios tipos, podemos ver archivos.php,.html [30],.css [31],.txt, y la carpeta Imágenes. A continuación vamos a describir la función de cada uno de ellos diferenciando cuáles de ellos son usados para la comunicación de la aplicación móvil con el servidor y cuáles son los usados para el desarrollo de la página web. El esquema de la Figura 12 muestra de forma gráfica como nos comunicamos con la base de datos. Para realizar la conexión se utiliza un Web Service al cual se puede acceder mediante HttpPost pasándole diversos parámetros para comunicarse con la base de datos y este Web Service devuelve a la aplicación Android los datos que han sido requeridos en formato JSON [32]. Hábitat Madrid 36

Figura 11: Archivos alojados en el servidor web JSON (JavaScript Object Notation) es un lenguaje parecido a XML ya que se usan etiquetas, se usa para el intercambio de contenidos y su uso es bastante más sencillo que XML. Hábitat Madrid 37

Figura 12: Interacción con la base de datos Los archivos que utilizamos para comunicarnos desde la aplicación Android con la base de datos MySql son archivos PHP. A continuación vamos a describir estos archivos y la función que tienen. actividades.php: Extrae de la base de datos todas las actividades y son devueltas en formato JSON. actualizaclave.php: Recibe dos parámetros, correo y password, ambos ubicados en la tabla Usuario, y se encarga de actualizar la clave del usuario que recibe. actualizadatosusuario.php: Recibe como parámetro los datos que se desean modificar junto con el correo electrónico correspondiente al que van asociados esos datos. consultaestadoreserva.php: Obtiene de la base de datos todas las reservas que se encuentran registradas en la tabla relusuarioactividad. enviamail.php: Desde este Web Service se realizan dos acciones distintas. Por un lado se recibe el correo electrónico de la cuenta registrada a la Hábitat Madrid 38

que se desea generar una nueva contraseña, se genera aleatoriamente una clave alfanumérica de 6 caracteres y se actualiza el password correspondiente a ese correo electrónico con la clave recién generada. La otra función que se lleva a cabo desde este Web Service es el envío de un correo electrónico al usuario pasado por parámetro para informarle de la nueva clave que ha sido generada. Inserta.php: Recibe una serie de parámetros que son requeridos para formalizar un nuevo registro en la tabla de Usuario. Noticias.php: Obtiene de la base de datos todas las noticias y son devueltas en formato JSON. Persona.php: Recibe de la base de datos todos los atributos de los usuarios registrados y son devueltos en formato JSON. ReservaActividad.php: Recibe los parámetros que son necesarios para solicitar una reserva en una determinada actividad y guarda esa reserva en la base de datos con el campo estado por defecto a En curso. La página web ha sido creada exclusivamente para facilitar el mantenimiento de la aplicación y la administración de la base de datos al personal del Área de Gobierno de Medio Ambiente del Ayuntamiento de Madrid. Dicha página web está compuesta por archivos PHP para la comunicación con la base de datos MySQL, de archivos HTML que se encargan de dar la apariencia a la página web, de un archivo CSS cuya función es la de que en todas las páginas diseñadas se cumplan las mismas reglas y que tengan una apariencia común. Por último, tenemos que reseñar que entre estos archivos está la carpeta Imágenes de la que se obtienen las imágenes que son mostradas tanto en las cabeceras como en el cuerpo de las páginas y un archivo de texto llamado select2.txt cuya función es nutrir de información uno de los combobox (Select en HTML) para que aparezcan unos valores distintos en función de la opción elegida en un primer ComboBox, se utiliza a la hora de insertar las actividades. Hábitat Madrid 39

El mantenimiento de la aplicación Hábitat Madrid se consigue mediante el uso de unos formularios que el personal debe rellenar para ir nutriendo la base de datos. A continuación vamos a nombrar los archivos HTML que se utilizan en esta parte pero no vamos a entrar en detalle puesto que más adelante describiremos el uso de esta página web. Los archivos PHP quedan englobados de la siguiente manera: Los archivos PHP encargados de hacer inserciones son InsertaActividad.php InsertaNoticia.php Los archivos PHP encargados de hacer modificaciones son ModificarActividad.php ModificarUsuario.php ModificarReserva.php MdificarNoticia.php Los archivos PHP encargados de hacer eliminaciones de la base de datos son EliminaActividad.php EliminaReserva.php EliminaUsuario.php EliminaNoticia.php Los archivos HTML que usamos son: Index.html (ventana principal) IntroducirActividades.html introducirnoticias.html elija-opcion-mostrar.html datos.html Hábitat Madrid 40

datos-actividades.html datos-estado-reserva.html elegirusuarioamodificar.html elegiractividadamodificar.html administrarsolicitudes.html eliminarusuario.html eliminaractiviad.html eliminarnoticia.html eliminarreserva.html Hemos usado dentro de estos archivos HTML funciones en php y funciones en JavaScript que nos han permitido conseguir determinadas funcionalidades por ejemplo a la hora de relacionar dos ComboBox. 3.3.3. Bases de datos En esta sección vamos a describir el diseño y funcionamiento de las dos bases de datos que hemos utilizado. Empezamos con la base de datos SQLite [33]. SQLite es un motor de bases de datos que se caracteriza por manejar archivos de poco tamaño, no necesita ejecutarse en un servidor, cumple el estándar SQL-92 y además es de código libre. En nuestro caso tenemos creada una base de datos SQLite que maneja solamente una tabla en la que guardamos información de utilidad para el usuario que está haciendo uso de la aplicación. La Figura 13 muestra el diseño de los atributos de la tabla de configuración correspondiente a la base de datos Conexión creada en SQLite. Hábitat Madrid 41

Figura 13: Detalle de la tabla SQLite Nos interesa tener solo un usuario, el cual hemos definido a la hora de crearnos la base de datos y lo hemos hecho clave primaria. Los atributos saltar y login son los que se usan para saber si se tiene activado el recordatorio de no volver a introducir el login cada vez que se inicie Hábitat Madrid y para saber qué usuario está usando la aplicación en cada momento. A continuación tenemos un atributo numérico numeronoticia, dentro de este campo se guarda el identificador de la noticia más reciente que se ha obtenido la última vez que se ha hecho una llamada al servidor, de esta forma cuando realicemos una nueva llamada se comparará el identificador de la noticia más reciente en el servidor con el valor que tenemos almacenado en esta variable de forma que si el número que obtenemos en la consulta del servidor es más grande que el valor de este atributo debemos guardar este valor en la base de datos SQLite y procederemos a lanzar una notificación PUSH para informarle al usuario que puede acceder a la sección de noticias ya que se han introducido noticias nuevas recientemente. Por último los cinco atributos finales se corresponden a los gustos que el usuario ha seleccionado en la sección de preferencias, dependiendo de los valores que se obtengan de consultar estos atributos se recomendarán unas actividades u otras. Ahora es el turno de hablar de la base de datos MySQL que se encuentra alojada en el servidor web que hemos descrito en la sección anterior. La principal diferencia con la base de datos descrita en el anterior párrafo es que en SQLite los datos se guardan en un archivo de forma local en la memoria del dispositivo mientras que con la base de datos MySQL accedemos a los datos en red. Nuestra base de datos en red es más compleja que la que hemos usado de forma local ya que accedemos a muchos más datos. El diseño se muestra en la Figura 14. Hábitat Madrid 42

Figura 14: Entidades y atributos de la base de datos MySQL La base de datos se compone de 5 tablas: En la tabla Usuario almacenamos todos los usuarios que están registrados actualmente en la aplicación, los datos que se solicitan al usuario son su nombre y apellidos, el correo electrónico que se usará para iniciar sesión, un password, y tres últimos atributos (sexo, edad y número de hijos) requeridos para obtener estadísticas de uso de la aplicación. En las tablas de actividades y noticias se almacena toda la información correspondiente a las actividades y a las noticias/eventos. En la tabla relusuarioactividad se guardan las actividades que han sido solicitadas por un determinado usuario junto con el número de plazas que se quieren reservar, el campo estado debe ser rellenado con los valores aceptado, rechazado o en curso, dependiendo del estado en el que se encuentre dicha solicitud de reserva. Por último la tabla Gustos hemos decidido incluirla en esta memoria puesto que inicialmente la hemos usado, actualmente esta tabla está incluida dentro de la base de datos SQLite, pero queríamos hacer una referencia a ella en esta sección puesto que se deberá utilizar en el algoritmo de recomendaciones que se propone en esta memoria en el apartado de trabajo futuro. Hábitat Madrid 43

3.4. Plan de desarrollo Para el desarrollo de este proyecto, los tres integrantes del grupo hemos tenido reuniones periódicas frecuentemente con Victoria López e Inmaculada Pardines en las cuales hemos ido solucionando problemas y marcándonos pequeños hitos de cara a la reunión posterior. Este tipo de reuniones han sido tanto individuales como grupales con el resto de alumnos que también están desarrollando proyectos relacionados con el Área de Gobierno de Medioambiente y Movilidad del Ayuntamiento de Madrid. Las conclusiones que se han ido obteniendo en estas reuniones siempre han sido positivas y han influido activamente en el desarrollo de la aplicación. Tenemos que destacar que ninguno de los integrantes del grupo se había enfrentado antes a desarrollar una aplicación para dispositivos móviles con Sistema Operativo Android, al igual que ninguno de los tres había trabajado antes con servicios web. De cada reunión realizada, siempre se sacaban nuevos objetivos y tareas a realizar para el próximo encuentro. Siempre se ha intentado llegar a la siguiente reunión con todo lo que se había acordado previamente desarrollado aunque sí que es verdad que alguna vez ha sido muy complicado llegar a tiempo y se han tenido que dejar tareas pendientes. Todo el tiempo que hemos invertido ha sido destinado tanto a tareas de investigación, como al desarrollo de la aplicación y a sus posteriores pruebas. Las pruebas las hemos ido realizando por funcionalidades o módulos. El primer módulo que fue desarrollado fue el de registrarse en la aplicación e interaccionar con la base de datos. Quizá fue uno de los más costosos y de los que nos llevó más tiempo, ya que fue al principio de todo y sirvió como una primera toma de contacto con el desarrollo. Posteriormente cada vez que implementábamos una nueva funcionalidad, hemos procurado no avanzar hasta que estaban todas las pruebas realizadas. Las horas invertidas en este proyecto han sido muchas, sobrepasando con creces el ajuste de horas/crédito asignadas en la matrícula de Sistemas Informáticos. Haciendo una estimación en horas dedicadas al proyecto (incluyendo la investigación el desa- Hábitat Madrid 44

rrollo y las pruebas) podemos decir que el promedio de horas por alumno ha sido superior a 300 horas, dedicándole semanalmente más de 10 horas cada integrante. A parte de las horas invertidas en el desarrollo del proyecto, también se han llevado a cabo varias reuniones con el personal del Área de Medioambiente del Ayuntamiento de Madrid, así como distintas reuniones con el IAM (Informática del Ayuntamiento de Madrid) y numerosas presentaciones del proyecto. 3.5. Análisis de riesgos A lo largo del desarrollo de la aplicación nos han ido surgiendo distintos problemas que hemos tenido que ir solucionando. El primer problema a destacar fue el tema de cómo organizar las actividades dentro de la aplicación. Para tomar una decisión sobre cómo afrontar este problema hemos ido teniendo varias reuniones en el Ayuntamiento de Madrid El trabajo fue complicado, ya que en distintas reuniones sobre el mismo tema llegábamos a conclusiones distintas. En un principio las actividades no las clasificábamos de ninguna manera, por lo que al seleccionar la opción de Actividades se mostraban todas las actividades disponibles. Más tarde, en una segunda reunión con el Ayuntamiento, llegamos a la conclusión de que las actividades iban a ser organizadas tanto por lugares como por temáticas, de forma que, si el usuario quería participar en eventos en un lugar determinado, iría a las actividades agrupadas por lugares. Si por el contrario buscaba un tipo concreto de actividades, las seleccionaría por temática. Por último, nos volvieron a cambiar la manera de organizarlas, de forma que tendríamos una clasificación por lugares y, dependiendo del lugar seleccionado, tendremos otra clasificación que varía según hayamos elegido uno u otro. Esto nos causó un pequeño problema a la hora de cambiar la base de datos y de hacer nuevos formularios para el personal del Ayuntamiento encargado de insertar las actividades. Hábitat Madrid 45

Como podemos observar en las Figuras 15 y 16, finalmente las actividades quedaron clasificadas por lugares y pulsando sobre un lugar concreto (como por ejemplo en el Retiro) tenemos una segunda clasificación por temáticas. Figura 15: Clasificación por lugares Figura 16: Clasificación por temáticas Otro problema lo tuvimos a la hora de la implementación. Dentro del entorno de desarrollo Eclipse, existe un archivo que no se debe modificar manualmente bajo ningún concepto, puesto que este archivo se va generando automáticamente en función de lo que se vaya desarrollando y utilizando a la hora de componer la interfaz de la aplicación. En varios puntos cronológicos de nuestro desarrollo nos hemos encontrado con que este archivo llamado R.java presentaba algún tipo de error. Nos ha llevado mucho tiempo investigar el por qué aparecían esos errores y en varios casos, nos hemos visto obligados a retroceder el proyecto a alguna versión anterior para conseguir solucionar este problema. Alguna vez se nos han presentado problemas con el servidor, ya que se ha caído varias veces y ha dejado de funcionar. Esto nos ha causado retrasos porque no podía- Hábitat Madrid 46

mos verificar las distintas funciones que íbamos realizando hasta que el servidor se arreglara. En estos casos hemos perdido bastante tiempo, ya que en algunos casos el problema ha tardado un día en solucionarse. Pero al final acabábamos siempre por probarlo y volver a seguir arreglando lo que hubiese fallado. Para no perder la información que debíamos meter en la base de datos y que no dejaba, la copiamos en un fichero de texto para que en el momento en el que ya estaba arreglado, poder pasarla al servidor y ya simplemente probar si funciona. Una vez realizadas algunas ventanas, a la hora de mostrarlas al personal del Ayuntamiento, éstos nos cambiaron la forma de nombrar las opciones del menú principal y las imágenes con las que se mostraban las actividades. Esto fue un problema menor, ya que no nos costó mucho mostrarlo como ellos nos pedían. Otra dificultad que tuvimos que solventar fue la de cómo enviar notificaciones al móvil del usuario. No sabíamos nada sobre cómo se creaban, cómo se hacía para que saltasen en el momento adecuado y sobre cómo se insertaban en nuestra aplicación. Hemos estado bastante tiempo leyendo tutoriales e información en distintos buscadores y poco a poco, con algunas dificultades, hemos conseguido que nuestra aplicación envíe notificaciones a los usuarios para avisarlos de la existencia de las actividades, y de recordarles la fecha del evento al que se han apuntado con unos días de antelación, mediante otra notificación le recuerda que tal día a tal hora tiene lugar la actividad de la que quiere ser partícipe el usuario. Se habló de la necesidad de no saturar al usuario de la aplicación con constantes avisos o notificaciones. Una de las soluciones a este problema puede ser la opción de que el propio usuario, desde dentro de la aplicación seleccione una opción para que no se le notifiquen más avisos (Figura 17). Una vez desactivada esta opción el usuario podrá volver a activarla siempre que lo desee. Hábitat Madrid 47

Figura 17: Ventana de recepción de notificaciones Respecto al formulario Web, la mayor dificultad la encontramos en el hecho de que una misma actividad se podía realizar en distintas fechas. Era necesario estudiar la forma de cómo introducir las fechas de realización de estas actividades. Llegamos a la conclusión de que la mejor opción era que los usuarios no viesen desde la aplicación el número de plazas que quedan disponibles, ya que esto implicaría la necesidad de una gran sincronización por parte de todos los departamentos, y eso es una labor muy compleja. El usuario, una vez que se inscribía en la aplicación, podía pensar que ya estaba inscrito, pero la realidad era que hasta que no se aceptase su solicitud no iba a estarlo, ya que podían no quedar plazas. Para resolver este problema hemos propuesto varias soluciones: Al inscribirse, la aplicación muestra al usuario un mensaje, como el que podemos ver en la Figura 18, indicándole que su solicitud ha sido enviada y está pendiente de confirmación. También habrá un botón al lado de la solicitud de la reserva que Hábitat Madrid 48

mostrará el estado de la solicitud a (Admitida, Rechazada o en curso). Y una última medida ha sido la inclusión en el menú principal de la opción "Mis Actividades" que, tal y como se puede observar en las Figuras 19 y 20, le muestra al usuario las actividades en las que le han aceptado, rechazado y las actividades cuyo proceso de solicitud aún están en curso. Figura 18: Mensaje informativo que indica que aún no está confirmada la solicitud del usuario Hábitat Madrid 49

Figura 19: Menú principal Figura 20: Opción Mis Actividades Para cerrar esta sección de riesgos, cabe destacar que hemos tenido un problema a la hora de mostrar la información que teníamos almacenada en nuestra base de datos. El problema consistía en que cada vez que queríamos almacenar algún dato, ya fuera un registro de un usuario a través del dispositivo móvil o una actividad o noticia a través de los formularios web, se guardaba mal en el caso de que contuviera alguna tilde o algún carácter especial como puede ser la ñ. Posteriormente, cuando queríamos realizar alguna consulta para mostrar esta información, los datos se mostraban mal ya que no se podían representar esos caracteres especiales. Tras investigar y consular diferentes páginas y foros, encontramos la solución [34], para guardar los datos tuvimos que cambiar el tipo que admitían los atributos de la base de datos a un tipo que si que soportaba este tipo de caracteres, y para mostrar las informaciones, cada vez que nos conectamos a la base de datos, antes de realizar la consulta, hemos tenido Hábitat Madrid 50

que decirle a la base de datos que queríamos los datos en el tipo de codificación adecuada. 3.6. Uso de la aplicación Inicialmente el desarrollo de la aplicación comenzó por la interfaz de las cuentas de los usuarios donde se pide al usuario que inserte su correo y contraseña para poder entrar en la aplicación (ver Figura 21). Figura 21: Pantalla principal de la aplicación En este momento empezamos a tomar las primeras decisiones sobre si el login de usuario que se inserta debía ser el correo electrónico del mismo en lugar del nombre, ya que el correo es único y así no tendríamos a más de un usuario con el mismo nombre y contraseña. Hábitat Madrid 51

Necesitamos que el usuario se haya registrado previamente para poder realizar correctamente la pantalla de login, ya que sin los datos del usuario, no se podría entrar en el menú principal. En el proceso de creación de un nuevo usuario Figura 22: Registro 1 Figura 23: Registro 2 se muestra una nueva ventana en donde se seleccionarán, además del nombre del usuario, del correo con el que entra en la aplicación y de su contraseña, el número de hijos del usuario, el sexo y la edad del mismo. Estos últimos datos se solicitan con el objetivo de realizar un estudio estadístico sobre el uso de la aplicación y también sobre qué perfil tiene el usuario que realiza estas actividades. Es necesario que al crear un nuevo usuario se acepten las condiciones de uso de protección de datos. Una vez rellenados los datos del formulario de registro (Figuras 22 y 23), los enlazamos con la base de datos. A continuación creamos la interfaz de un menú principal tal y como podemos ver en la Figura 24. Hábitat Madrid 52

Figura 24: Menú principal De acuerdo con las reuniones que tuvimos con el personal del Área de Medio Ambiente del Ayuntamiento de Madrid, llegamos a la conclusión de que las opciones que tendría el menú de nuestra aplicación serían: "Configuración", "Actividades", "Noticias y Eventos", "Planificación", "Recomendaciones" y "Mis actividades". Una vez creadas las opciones del menú, empezamos a desarrollar la opción de "Planificación" que consistía en insertar un enlace a la página del Ayuntamiento de Madrid donde encontraríamos una organización de las actividades en forma de calendario, de modo que, seleccionando el día que se desea, se muestran todas las actividades programadas para ese día. A continuación seguimos con la ventana de Configuración que se encuentra dividida en 6 opciones que permiten al usuario configurar la aplicación a su gusto. Estas 6 opciones las podemos ver en la Figura 25. Hábitat Madrid 53

Figura 25: Ventana de configuración Empezamos por el desarrollo de la opción Preferencias, insertando una nueva ventana donde se encuentran todas las palabras clave relacionadas con los gustos de los usuarios. El objetivo de recabar estos datos es poder informar a los usuarios sólo de las actividades que más se adapten a sus gustos, tarea que se realiza mediante el sistema de recomendación. Lo enlazamos a la base de datos. Incorporamos a la aplicación la opción de no tener que pasar por la ventana de login una vez que ya se ha entrado en la aplicación la primera vez. Para ello, seleccionaremos "Opciones de la aplicación" y pondremos la opción en OFF. También hicimos la ventana de "Notificaciones y avisos" donde podemos decidir si deseamos recibir notificaciones. Por defecto esta opción viene desactivada, si se desea activar basta con pulsar en el botón que estará como "Notificaciones desactivadas". Construimos la interfaz de "Modificar datos", que es una ventana muy similar a la del registro en la cual ya vienen los datos insertados del usuario de forma que el usua- Hábitat Madrid 54

rio solo cambiará el campo que se quisiera modificar y así no tendrá que rellenar otra vez todos los datos. Acto seguido hicimos la opción de "Cambiar contraseña". En esta ventana el usuario debe introducir su contraseña actual, y la contraseña nueva repitiendo esta última para su confirmación. El sistema comprueba que la contraseña actual (que es la contraseña antigua) coincide con la que el usuario tiene registrada en la base de datos, y, si es así, entonces la modifica por la nueva contraseña introducida. Una vez terminada la opción de cambiar contraseña, nos surgió el problema de cómo proceder si el usuario olvida su contraseña. Se nos ocurrió como solución que la aplicación le mandara un mail con una nueva contraseña. Creamos una ventana donde el usuario debe insertar el correo donde desea que se le mande la nueva contraseña, y, acto seguido, le llegará un mensaje a ese correo informando de una nueva contraseña generada aleatoriamente. El usuario puede modificar esta contraseña que le propone la aplicación con la opción "Cambiar contraseña" anteriormente mencionada. A continuación creamos una pantalla principal que solo dura 3 segundos en la que se puede ver exclusivamente el logo del Ayuntamiento de Madrid para mejorar la apariencia de la aplicación y que el usuario vea donde ha pulsado. Por último realizamos la opción de "Actividades" que muestra las actividades clasificadas por lugares, como se puede observar en la Figura 26. Dentro de esta clasificación habrá una segunda clasificación dependiendo del lugar que se selecciona, que se corresponde con la clasificación de la Figura 27. Una vez elegida la opción de la segunda clasificación, ya se pueden mostrar las distintas actividades que existen dentro de las opciones elegidas por el usuario, las cuales se mostrarán como podemos ver en la Figura 29. Pulsando sobre cualquiera de ellas, podemos consultar información sobre esa actividad pudiendo inscribirse si le interesa siempre y cuando se encuentre en plazo de inscripción y haya plazas disponibles. Hábitat Madrid 55

Figura 26: Clasificación por lugares Figura 27: Segunda clasificación Figura 28: Actividades propuestas Figura 29: Descripción de la actividad 3.7. Aplicación Web Hemos desarrollado una aplicación web basada en formularios para garantizar el mantenimiento de la información fuente en la Intranet del cliente. Desde esta aplicación web el personal del Ayuntamiento puede gestionar e introducir los cambios que desee en la aplicación. La aplicación web dispone de una serie de formularios diferentes dependiendo de la gestión que se desea realizar. Hábitat Madrid 56

Cualquier cambio o dato nuevo que se introduzca será automáticamente cambiado en la base de datos y podrá verse desde el dispositivo móvil, a excepción de las actividades nuevas, que tienen que llevar asignada una fecha a partir de la cual se hará visible desde la aplicación. Figura 30: Página Web para el personal del Ayuntamiento de Madrid Las funciones que se pueden desempeñar desde esta aplicación web están enfocadas a distintas vías, la primera de ellas es la de nutrir la base de datos con nuevas actividades y nuevas noticias. También se pueden modificar estas actividades/noticias si se detecta alguna errata a la hora de introducirlas, o simplemente eliminarlas si ya no se desea que aparezcan en la aplicación. La segunda vía está destinada a gestionar las decisiones del usuario que hace uso de la aplicación, desde aquí se va a proceder a la asignación de las reservas que ha solicitado un usuario en función de la disponibilidad y de las plazas que se hayan solicitado. El estado en el que se puede encontrar las reservas de plaza son tres: aceptado, en curso o rechazado. Inmediatamente después de que el usuario solicite la plaza para asistir a la actividad, en la base de datos Hábitat Madrid 57

se crea una nueva entrada registrando que ese determinado usuario a solicitado asistir a una determinada actividad con un número fijo de plazas, a dicha solicitud se le asigna un identificador y automáticamente el estado de la reserva pasa a estar en curso hasta que el personal del Ayuntamiento se encargue de procesar la solicitud. Por último hemos habilitado la opción de eliminar una reserva en el caso de que algún usuario comunique al Ayuntamiento que no va a poder asistir por algún motivo. El proceso será eliminar la reserva y si hubiera alguna reserva en estado rechazado, sería el personal del Ayuntamiento el encargado de tramitar alguna de estas solicitudes a aceptado. A continuación, vamos a comentar de manera más exhaustiva el funcionamiento de la aplicación web: Como ya hemos comentado anteriormente, el manejo de la información se basa en formularios web, que resultan fundamentales para mantener las bases de datos actualizadas. En la pantalla principal de la página web aparecen las distintas funciones que el personal del Ayuntamiento puede realizar: insertar, modificar, eliminar o simplemente consultar actividades o usuarios registrados en la aplicación. Estas funciones son: Insertar actividad: Esta opción sirve para introducir una nueva actividad propuesta por el área de Medio Ambiente del Ayuntamiento de Madrid en la aplicación. Para ello hay que rellenar los siguientes campos: o Área: Centro medioambiental o área al que pertenece la actividad para clasificarla por lugares ya sea Retiro, Casa de campo, Dehesa de la Villa, Parque Juan Carlos I, Visitas a Instalaciones Ambientales y Otros parques. o Temáticas: En este campo se inserta la temática de la que trata la actividad para su clasificación. Se corresponde con la segunda cla- Hábitat Madrid 58

sificación que se ha explicado en el Anexo I, que dependerá de lo que se haya seleccionado en la opción de Área. o Nombre: Es el nombre que el Ayuntamiento de Madrid asigne a la actividad. o Detalles: Descripción detallada de la actividad. o Fecha: Día en el que va a tener lugar la actividad. o Fecha Visible: Este dato sirve para indicar el día que va a aparecer publicada la actividad en la aplicación móvil (para que los usuarios puedan verla). Ese día, a los usuarios les saltará una notificación informando de la disponibilidad de esta actividad. Figura 31: Introducción de actividades Hábitat Madrid 59

Una vez que ya se han rellenado todos los campos, se pulsa el botón Enviar, y se guardan todos los datos en la base de datos de la aplicación. Insertar Eventos/Noticias: Esta opción es muy parecida a la anterior, aunque en lugar de actividades se insertan eventos o noticias para informar al usuario, de modo que cuando el personal del Ayuntamiento inserte una, al usuario le aparecerá una notificación informándole de la existencia de la misma. Para ello, se rellenan los siguientes campos: Figura 32: Introducción de noticias y eventos o Nombre: Es el nombre asignado a la noticia o evento. o Detalles: Descripción de la noticia o evento. Hábitat Madrid 60

o Fecha: Es el día que va a tener lugar la noticia insertada. o Enlace: Dirección web donde el usuario puede obtener toda la información relacionada con dicha noticia o evento. Una vez que ya se han rellenado todos los datos que muestra la Figura 32, se pulsará "Enviar", y los datos se introducen en la base de datos. En este momento, al usuario le saltará una notificación informando de dicha actividad o evento. Consultar Datos: Tenemos 4 opciones para posibles consultas de datos: o Usuarios registrados en la aplicación: Podemos consultar los datos de todos los usuarios registrados en la aplicación: Su nombre, apellidos, correo (Nick del usuario para entrar en la aplicación), contraseña (es un campo que está encriptado, es decir, no se puede ver que contraseña es), el sexo y los hijos que tiene el usuario. Como podemos ver en la Figura 33 estos datos se muestran en una tabla. Figura 33: Consulta de datos de los usuarios registrados en la aplicación Hábitat Madrid 61

o Actividades: Se pueden consultar las actividades que hay programadas con todos los campos que se han rellenado en el formulario de Insertar Actividad. Todas las actividades registradas en la aplicación se mostrarán en una tabla. o Noticias: Al acceder a esta página se puede consultar toda la información que hay referente a las noticias almacenadas en la base de datos. o Estado reservas: Con esta opción podemos ver el estado de las reservas de los usuarios en las distintas actividades. Este estado puede ser Aceptado, Rechazado o en curso. En una tabla se muestran todas las reservas almacenadas con su estado correspondiente, tal y como podemos ver en la Figura 58. Figura 34: Consulta del estado de las reservas Hábitat Madrid 62

Modificar Datos de Usuario: Esta opción sirve para modificar los datos de usuario existente. Para ello, se introduce el correo del usuario que se quiere modificar en el campo habilitado para ello. Debajo del campo aparecen en una tabla, tal y como muestra la Figura 35, todos los correos de los usuarios registrados en la aplicación de modo que si se olvida el correo de cualquiera para ser modificado se puede consultar en esa tabla. Hay que saber con qué usuario se corresponde cada dirección de correo electrónico. Una vez insertado el correo, se pulsa el botón "Enviar" y aparece el formulario con los datos de dicho usuario de modo que se puede cambiar el dato que se desee y, pulsando "Enviar", se enlaza con la base de datos, y se cambia el dato deseado. Figura 35: Modificar los datos de un usuario Hábitat Madrid 63

Modificar una actividad: Al igual que la opción anterior se puede modificar cualquier actividad pulsando sobre esta opción. Para ello, se introduce el identificador (id) de la actividad que se quiere modificar en el espacio habilitado para ello. Este identificador se puede consultar en la tabla proporcionada en la parte inferior de la página en la que vienen todas las actividades que se han registrado. Una vez introducido el Id de la actividad se pulsa el botón "Enviar". Al igual que en Modificar Datos de Usuario, aparecen todos los datos de la actividad con la opción de modificar cualquiera de ellos, simplemente borrando el actual e insertando el nuevo. Dándole a "Enviar" se actualiza la base de datos con los nuevos datos. Modificar Noticia: Esta opción sigue el esquema similar a las dos opciones anteriores. Se selecciona la noticia que se desea modificar y una vez seleccionada accedemos a otra página donde ya podemos modificar los datos que deseemos de la noticia seleccionada. Administrar Solicitudes: Con esta opción, el personal del Ayuntamiento de Madrid encargado de administrar las solicitudes enviadas por el usuario al inscribirse en una actividad podrá administrar esas solicitudes. Para ello, se introduce el número de la reserva que se quiere administrar en el espacio habilitado para ello. Ese número de reserva viene facilitado por una tabla en la que aparecen todas las reservas que aún no han sido tramitadas. Una vez introducido el número de reserva se pulsa sobre el botón enviar, y aparece una pantalla donde hay que insertar el número de reserva introducido anteriormente y el Estado de esa reserva, ya sea aceptado o rechazado. El correo del usuario y la actividad que se está reservando aparecen por defecto. Hábitat Madrid 64

Figura 36: Administrar Solicitudes De este modo, una vez que se ha añadido el Estado en el espacio correspondiente para ello y se ha pulsado el botón Enviar, al usuario dejará de aparecerle dicha actividad como en curso y le aparecerá el nuevo estado. Eliminar usuario: Para eliminar un usuario de la aplicación, basta con insertar el correo del usuario en el espacio correspondiente y pulsar el botón Enviar. El correo se obtiene de la tabla que aparece debajo del botón. De este modo, el usuario quedará eliminado de la base de datos de la aplicación. La ventana de esta opción es similar a la de modificar un usuario. La única distinción es que en este caso el usuario se va a eliminar. Eliminar actividad: Esta opción permite eliminar una actividad del programa de actividades del Ayuntamiento de Madrid, de modo que el usuario no la podrá visualizar. Para ello se inserta el ID de la actividad proporcio- Hábitat Madrid 65

nado por la tabla que se facilita en esta misma página, y, pulsando sobre Enviar, se eliminará automáticamente la actividad de la base de datos. Esta opción es muy similar a la de modificar una actividad. Eliminar noticia: Cuando se pulsa sobre esta opción, se va a otra página donde se muestran todas las noticias que hay registradas en la base de datos y se le ofrece al usuario la posibilidad de insertar el número de la noticia que se desea borrar. Una vez se ha introducido el número y pulsado el botón aceptar, se procede a la eliminación definitiva de la noticia de la base de datos. Eliminar reserva: Para eliminar una reserva que se ha concedido anteriormente basta con introducir en el espacio correspondiente el número de la reserva que se quiere eliminar, el cual lo proporciona una tabla que aparece en la ventana con todas las reservas existentes. De este modo, un usuario que se había quedado sin reserva por falta de plazas podrá disfrutar de dicha actividad sí el personal del Ayuntamiento le concede la plaza. Pulsando sobre el botón Enviar se eliminará la reserva de la base de datos de la aplicación. Esta opción es muy similar a la de administrar solicitudes. 3.8. Características La aplicación presta todo tipo de facilidades en todo momento. Lo que realmente se necesita es conexión a Internet. Una vez que el usuario tenga Internet, puede disponer de información sobre las distintas actividades e inscribirse a las que le interesa y de manera rápida y sencilla. La información acerca de las actividades es en tiempo real al igual que la inscripción en aquellas a las que se desea asistir, recibiendo un mensaje del Ayuntamiento de Madrid confirmando su inscripción. Mediante avisos, el usuario tiene la facilidad de recibir la información sobre las distintas actividades además de tener la posibilidad de que se le recuerde la existencia de Hábitat Madrid 66

una actividad en la que está inscrito cuando quedan pocos días para su realización. En las Figuras 37 y 38 podemos observar un ejemplo de cómo el usuario ve las notificaciones que manda la aplicación. Figura 37: Notificación recibida por el usuario Figura 38: Desplegamos la notificación recibida por el usuario Estas notificaciones, al igual que hemos comentado de la inscripción de actividades y de la consulta de actividades, son en tiempo real de modo que, una vez que el Ayuntamiento de Madrid programe una nueva noticia o evento, al usuario le llegará el aviso informándole de ello. Hábitat Madrid 67

Por último destacar que una vez que el usuario ha asistido a una actividad a la cual se ha inscrito a través de la aplicación, ésta le proporcionará al usuario un cuestionario a rellenar para que refleje su opinión sobre dicha actividad. El objetivo es que las opiniones que los usuarios proporcionen sobre las actividades se usen en el futuro para la toma de decisiones de un sistema de recomendación colaborativo. Este sistema de recomendación es muy útil para el usuario ya que le informa sobre temas y actividades que son de su interés y que otros usuarios de perfil similar han valorado previamente evitando de este modo consultar todas las actividades registradas en la aplicación. Hábitat Madrid 68

Capítulo 4. TÉCNICAS ESPECIALES UTILIZADAS En este capítulo se detallan los algoritmos y técnicas de desarrollo que hemos considerado que deben ser explicados ya que tienen mucha importancia dentro del desarrollo de Hábitat Madrid. 4.1. Quicksort En Hábitat Madrid hemos utilizado entre otros un algoritmo de ordenación estudiado durante la carrera en la asignatura de Metodología y Tecnología de la Programación [28] comúnmente denominado Algoritmo de QuickSort [35]. Este algoritmo lo hemos utilizado para ordenar la aparición de las actividades en la aplicación según la fecha de realización de las mismas, de forma que el usuario verá por orden de fecha de inicio de la actividad las actividades programadas. Hemos considerado que debíamos utilizar este algoritmo porque es el algoritmo de ordenación más rápido conocido. El número de operaciones que realiza el algoritmo de Quicksort es menor que el de otros algoritmos de ordenación con el mismo tiempo de ejecución promedio, ya que utiliza una metodología de partición. El tiempo de ejecución promedio del Quicksort es O(n log(n)), siendo en el peor caso O(n 2 ). El funcionamiento de este algoritmo consiste en la ejecución de los siguientes pasos: 1. Se elige un elemento de la lista de elementos que llamamos pivote. 2. Se realiza una partición de la lista en tres partes: a. Una que contiene todos los elementos menores o iguales que el pivote sin el pivote. b. Una que contiene el pivote. Hábitat Madrid 69

c. Una que contiene todos los elementos mayores o iguales que el pivote sin el pivote. 3. Se aplica recursión sobre la primera y la tercera parte. 4. Se unen todas las soluciones que formarán la solución que finalmente quedará ordenada concatenando las 3 parte (cada una de las partes ya estarán ordenadas). El tiempo de este algoritmo depende de cómo se implementa la elección del pivote de la lista. Esta elección determina las particiones de la lista de datos, por esa razón esta es la parte más crítica de la implementación del algoritmo de QuickSort. Hay que intentar que al seleccionar el pivote, la primera y la tercera lista tengan un tamaño lo más parecido posible. Figura 39: Algoritmo de Quicksort Hábitat Madrid 70

Siguiendo esta definición, el código de nuestro algoritmo es el que aparece en la Figura 39. En nuestro caso hacemos las comparaciones usando una estructura array que contiene las fechas y a la par que vamos intercambiando los valores según se estén ordenando, también vamos cambiando de igual manera otro array que contiene el nombre de la actividad paralelamente. Este algoritmo está basado en la recursión por lo que hay que hacer una llamada inicial. En nuestro caso esa llamada es la siguiente: Figura 40: Llamada inicial al algoritmo de Quicksort 4.2. Algoritmo de encriptación MD5 Hemos considerado fundamental para la aplicación el poder proteger las contraseñas que el usuario ha insertado al registrarse en la aplicación. Para este problema estuvimos investigando en algoritmos de encriptación seguros y tras estudiar varios algoritmos nos decantamos finalmente por implementar el algoritmo de encriptación MD5 [29]. Se trata de un algoritmo de encriptación que en la actualidad se encuentra muy difundido. La cadena insertada queda codificada mediante 32 caracteres hexadecimales. La implementación de este algoritmo la hemos realizado tanto en lenguaje Java cuando el usuario se quiere registrar en la aplicación y como en PHP en el caso de que el usuario haya olvidado su contraseña y decida restablecerla recibiendo la nueva clave en su correo electrónico. A continuación la Figura 41 muestra el código que hemos usado. Hábitat Madrid 71

Figura 41: Algoritmo de encriptación MD5 4.3. Algoritmo de verificación de correo electrónico En nuestra aplicación, si hay algún dato que consideramos muy importante para el correcto funcionamiento de la misma, éste se trata sin duda del correo electrónico del usuario, puesto que éste es un dato que se maneja constantemente durante el ciclo de vida de la aplicación. El correo electrónico se usa para registrarse, para recibir la nueva clave si se ha olvidado la antigua, para solicitar la reserva de plaza, y para varias cosas más, por lo que no puede ser válido que el usuario introduzca una cadena de caracteres que no sea un correo electrónico. Por este motivo nos hemos visto obligados a introducir en el desarrollo de la aplicación un algoritmo que fuera capaz de verificar si la cadena introducida dentro del campo del correo electrónico se trataba realmente de un correo electrónico. Dicho algoritmo está basado en la comprobación de unas expresiones regulares, siendo el código Java utilizado el que se muestra en la Figura 42. Hábitat Madrid 72

Figura 42: Algoritmo de verificación del correo electrónico 4.4. Sistema de recomendación La necesidad de un sistema de recomendación [36] surge cuando el gran volumen de información que tiene que manejar un usuario hace que se sienta desbordado a la hora de elegir un libro, una película etc. Para eso, se realiza un filtrado de los productos de una base de datos en función de, por ejemplo, los gustos de cada usuario. Un sistema de recomendación es cualquier sistema que produce recomendaciones individualizadas como salida o que guía al usuario de manera personalizada a interesantes objetos que le puedan ser útiles dentro de un amplio espacio de opciones posibles. Existen distintos modelos de sistemas de recomendación que se diferencian en las fuentes de información usadas y en la manera de obtener las recomendaciones. Entre ellos destacamos los siguientes sistemas de recomendación: sistemas de recomendación colaborativos, sistemas basados en contenido, sistemas basados en información demográfica, sistemas basados en conocimiento y sistemas basados en utilidad. 1. Sistemas de recomendación colaborativos: En este sistema las recomendaciones se hacen en base a un perfil de preferencias proporcionado por el propio usuario, un análisis de las similitudes existentes con otros usua- Hábitat Madrid 73

rios y la opinión de éstos, sobre todo, de aquellos con perfiles similares tengan de las actividades en las que han participado. 2. Sistemas de recomendación basados en contenido: Genera un clasificador a partir del comportamiento del usuario al valorar productos y dichas valoraciones se aplican a los productos no experimentados. 3. Sistemas de recomendación basados en información demográfica: Se basan en la idea de que personas con unas características demográficas (edad, sexo, etc.) tengan gustos similares a personas con unas características demográficas parecidas. 4. Sistemas de recomendación basados en conocimiento: intentos de sugerir objetos sobre las necesidades y preferencias de los usuarios en base a un perfil que el usuario tiene que rellenar. 5. Sistemas de recomendación basados en utilidad: estos sistemas recomiendan utilizando el cálculo de la utilidad de cada uno de los servicios para el usuario. El problema a resolver es cómo crear una función que defina la utilidad para cada usuario y que después pueda ser empleada de manera correcta para la recomendación. 4.4.1. Sistema de recomendación propuesto El sistema de recomendación [37] propuesto en Hábitat Madrid se trata de un sistema de recomendación colaborativo. En este tipo de sistemas se recogen valoraciones de los usuarios respecto a un objeto dentro de un dominio dado y se generan las recomendaciones en función de las opiniones de otros usuarios con un perfil similar. Para su implementación se requiere información histórica sobre la valoración que han realizado los usuarios de objetos que han seleccionado en el pasado. Hábitat Madrid muestra al usuario todas las actividades que ofrecen los centros de Educación Ambiental del Ayuntamiento de Madrid. El número de actividades que estos centros ofrecen es tan grande que para que un usuario busque información sobre estas en su teléfono móvil de forma rápida y cómoda resulta imprescindible el uso de un sis- Hábitat Madrid 74

tema de recomendación. Además, para que la información ofrecida se vea de forma adecuada el número de actividades recomendadas debe ser pequeño. De acuerdo con lo dicho y para no limitar la capacidad de elección del usuario se ha decidido implementar un sistema de recomendación que ordena las actividades en función de lo atractivas que pueden resultar al usuario. La aplicación, tras pulsar la pestaña de Recomendaciones, muestra al usuario una pantalla con las cuatro actividades que mejor se pueden adaptar a sus gustos y preferencias. Sin embargo, el usuario tendrá la opción de seguir buscando otras actividades que le puedan interesar pulsando la pestaña Siguiente que aparecerá en esa misma pantalla. De este modo, la aplicación irá mostrando al usuario las actividades de cuatro en cuatro siguiendo un orden, previamente calculado, adaptado al perfil del usuario. Modelado matemático Dado un usuario, el sistema debe atravesar 3 etapas para generar una recomendación sobre las actividades que le puedan resultar más interesantes. A continuación, se realiza una descripción matemática de estas etapas que también se pueden visualizar mediante el diagrama de flujo de la Figura 43. Etapa 1: Valoración de las actividades. El sistema de recomendación calcula dos valoraciones de todas las actividades del sistema, ambas valoraciones se realizan en paralelo. a) Valoración 1: Se calcula en base a la valoración que otros usuarios han hecho de las actividades en las que han participado. Calcular: (i) usuario u es el grado de similitud del usuario u j con el (ii) v ji es la valoración que el usuario u j ha hecho de la actividad a i Hábitat Madrid 75

(iii), es el número de usuarios y es la valoración 1 de la actividad b) Valoración 2: Se obtiene a partir del perfil de preferencias del usuario u. Dado un usuari o Calcular la valoración 2,, como: con es una palabra clave, es el número de palabras clave de que coinciden con las preferencias que el usuario ha marcado en su perfil y es el número total de palabras clave que el usuario ha seleccionado como preferencias. Etapa 2: Ordenamiento. Las actividades se ordenan en función de la valoración de la valoración obtenida en la etapa 1. a), calcular la valoración total de la actividad en base a las dos valoraciones de esta actividad calculadas para el usuario en la etapa anterior. (1) b) Ordenar el conjunto de actividades de acuerdo con la valoración calculada en la etapa 2(a). c) Se seleccionan las w actividades mejor valoradas para que sean mostradas en la primera pantalla de la aplicación. Hábitat Madrid 76

Perfil Preferencias VALORACIÓN 1 ORDENACIÓN Histórico valoraciones VALORACIÓN 2 Actividades recomendadas Figura 43: Diagrama de flujo del sistema de recomendación de Hábitat Madrid 4.4.2. Sistema de recomendación implementado A la espera de que se implemente en un futuro a corto plazo el algoritmo de recomendación propuesto en la sección anterior, hemos realizado un sistema de recomendación más sencillo que cumpla con las especificaciones de las preferencias que ha marcado el usuario como favoritas en su perfil. Inicialmente, cuando empezamos a desarrollar este proyecto estuvimos pensando cómo se iba a realizar este sistema de recomendación y clasificamos las diferentes temáticas o palabras clave que servirían para de alguna forma, informar al usuario de las actividades que más se iban a asemejar a sus gustos o preferencias. Antes de empezar a describir el funcionamiento del sistema de recomendación que está ahora mismo en uso en la aplicación, recordaremos que en la tabla que guardamos todas las características de las actividades existen dos campos llamados área y tema que son usados para ir clasificando y organizando las actividades. Pues bien, nosotros lo que hemos implementado es un algoritmo que sea capaz de leer de la base de datos interna del teléfono las preferencias que ha marcado el usuario como favoritas en su perfil, y a la vez que vamos leyendo las actividades que hay disponibles en la base de datos, vamos viendo si el tema de la actividad que se está leyendo en un determinado momento se corresponde con alguna de las preferencias que el usuario había marcado como favoritas en su perfil. Una vez que hemos obtenido todas las actividades Hábitat Madrid 77

que le van a ser recomendadas al usuario procedemos a ordenarlas por fechas en orden creciente mediante el algoritmo de QuickSort que hemos descrito anteriormente, de tal forma que las actividades más lejanas en el tiempo aparecerán al final de la lista de actividades propuestas. Hábitat Madrid 78

Capítulo 5. CONCLUSIONES Y TRABAJO FUTURO 5.1. Conclusiones Hábitat Madrid es una aplicación para dispositivos móviles Android muy completa que informa y gestiona las actividades propuestas por el programa de Educación Ambiental del Ayuntamiento de Madrid. Por un lado permite conocer todas las actividades que se organizan de manera sencilla a través del teléfono móvil. Por otro lado permite inscribirse en todas las actividades que se desee sin necesidad de llamar por teléfono o mandar un mail. Incluye también un mecanismo de notificaciones para informar en tiempo real a través de su dispositivo de las nuevas noticias o eventos que se incluyen en el programa. Con el desarrollo de Hábitat Madrid hemos conseguido que todos los ciudadanos a los que les interesen este tipo de actividades ambientales estén informados en todo momento con la posibilidad de que puedan solicitar inscribirse en una determinada actividad en cualquier momento. Conseguimos del mismo modo que el personal del Ayuntamiento se pusiera de acuerdo con las fechas de inscripción de las actividades de modo que se muestre un sistema más organizado. A la vez que hemos ido desarrollando la aplicación móvil, hemos ido haciendo también una aplicación web completa para que, por medio de formularios, el personal del Ayuntamiento pueda gestionar y mantener en todo momento la base de datos que se utiliza para mostrar la información en la aplicación. Estos formularios dan lugar a consultas, modificaciones, inserciones y eliminaciones de datos. La aplicación Hábitat Madrid ha sido presentada en diversos foros: 1. La Catedral de la Innovación: www.lacatedralonline.es, el 17 de Mayo de 2013, tipo de audiencia: empresas y profesionales de tecnología. Hábitat Madrid 79

2. Ayuntamiento de Madrid: 23 de Mayo de 2013, tipo de audiencia: a. Responsables y técnicos municipales del Área de Medio Ambiente y Movilidad. Implicadas: i. D.G. de Áreas Urbanas, Coordinación, Educación Ambiental ii. D.G. de Zonas Verdes, Limpieza y Residuos iii. D.G. de Control ambiental, Transportes y Aparcamientos iv. D.G. de Sostenibilidad b. Coordinadores de los Centros de Educación Ambiental de Retiro, Casa de Campo y Dehesa de la Villa c. Responsables y técnicos municipales de IAM. i. Subdirección de Sistemas de Información sectoriales ii. Subdirección G. de la Unidad de Apoyo El siguiente artículo ha sido aceptado para su publicación: Octavio de T., M., Sanmartín, A., Fernández, C., Pardines, I., López, V. Sistema de recomendación colaborativo de la aplicación Hábitat Madrid, IV Congreso Español de Informática CEDI 2013. Esperamos que esta aplicación la puedan estar disfrutando los ciudadanos de la ciudad de Madrid en un corto plazo de tiempo. Hábitat Madrid 80

Hábitat Madrid 81

5.2. Trabajo futuro Hábitat Madrid puede ser ampliado en varios aspectos que mencionamos a continuación: Como hemos visto anteriormente, tenemos estudiada la futura implementación de un sistema de recomendación que sugiera las actividades que más se pueden adaptar a los gustos de un ciudadano en función de sus preferencias y de lo atractivas que le hayan resultado a otros usuarios en base a la calificación que hayan recibido actividades similares con anterioridad. Para que esta aplicación pueda ser guardada en los servidores del Ayuntamiento de Madrid, es necesario adaptarla a los estándares que propone el IAM (Informática del Ayuntamiento de Madrid). Este trabajo futuro resulta imprescindible para la puesta en funcionamiento de Hábitat Madrid. Una opción interesante podría ser ampliar las notificaciones que se le envían al usuario. Actualmente el sistema envía notificaciones a los usuarios cuando hay alguna noticia nueva y para recordar la realización de una actividad reservada que se vaya a realizar en los próximos días. Podrían enviarse igualmente notificaciones cuando el estado de una reserva pasa de su estado en curso a aceptado o rechazado para que el usuario tenga la información del estado de su reserva en un tiempo real, y no tenga que estar pendiente de cuándo le contesta el Ayuntamiento de Madrid. Por último destacar que Hábitat Madrid es una aplicación para dispositivos móviles Android, la cual se podría realizar en multiplataforma para que la pudiesen utilizar móviles con otro tipo de sistema operativo como ios. Este es otro de los requisitos por qué esta aplicación entra en funcionamiento. Hábitat Madrid 82

BIBLIOGRAFÍA [1] HÁBITAT MADRID programa de actividades ambientales, <http://www.madrid.es/portales/munimadrid/es/inicio/ayuntamiento/medio- Ambiente/Educacion-ambiental/Habitat-Madrid.-Programa-de-actividades- ambientales?vgnextfmt=default&vgnextoid=f25c42ba04078310vgnvcm1000000b205a0arc RD&vgnextchannel=378c9ad016e07010VgnVCM100000dc0ca8c0RCRD> [2] Clough, G., Jones, A.C., McAndrew, P., Scanlon, E.: Informal learning with PDAs and smartphones. Journal of Computer Assisted Learning. 24 (5), 359-371 (2007). [3] Wankel, L. A., Blessinger, P.: Increasing Student Engagement and Retention using Mobile Applications: Smartphones, Skype and Texting Technologies. Emerald Group Publishing Limited (2013). [4] Styliaras, G., Koukopoulos, D.: Educational Scenarios with Smartphones in Cultural Heritage Sites and Environments. Journal of Educational Multimedia and Hypermedia. 21 (3), 285-315 (2012). [5] Tseng, J.: Review of Neurosurgical Smartphone Applications. Journal of Mobile Technology in Medicine. 1 (4) (2012) Available at: http://articles.journalmtm.com/71.pdf [6] Kenteris, M., Gavalas, D., Economou, D.: An innovative mobile electronic tourist guide application. Journal Personal and Ubiquitous Computing Archive. 13 (2), 103-118 (2009). [7] Pardines, I., López, V.: Shop&Go: The Routing Problem Applied to the Shopping List on Smartphones. In: F. Sun et al. (eds.) Knowledge Engineeing and Management. Springer, Heidelberg (2013). [8] Miñana G., López V., Tejada J.: Recycla.me: Technologies for Domestic Re cycling. In: F. Sun et al. (eds.) Knowledge Engineering and Management. Springer, Heidelberg (2013). [9] Grupo Tecnología UCM, <www.tecnologiaucm.es> [10] Google Play, < https://play.google.com/store> Hábitat Madrid 83

[11] Cultura unam, <http://www.cultura.unam.mx/> [12] BCN cultural,<http://barcelonacultura.bcn.cat/es> [13] Web oficial de Eclipse, <http://www.eclipse.org/> [14] Android SDK, <http://developer.android.com/sdk/index.html> [15] ADT Plugin para eclipse, <http://developer.android.com/tools/sdk/eclipseadt.html> [16] Web de xp-dev, <https://xp-dev.com/login> [17] Alojamiento Web, <http://es.wikipedia.org/wiki/alojamiento_web> [18] webhost,< http://www.000webhost.com/> [19] MySQL, <http://www.mysql.com/> [20] phpmyadmin, <http://www.phpmyadmin.net/> [21] Adobe Dreamweaver CS6, <http://www.adobe.com/es/products/dreamweaver.html> [22] Casos de uso, <http://es.scribd.com/doc/490192/69/casos-de-uso-y-flujode-eventos> [23] PHP, Wikipedia, <http://es.wikipedia.org/wiki/php> [24] XML, Wikipedia,<http://es.wikipedia.org/wiki/Extensible_Markup_Language> [25] StackOverflow, comunidad de desarrolladores internacional multilenguaje <http://stackoverflow.com/> [26] Sgoliver, web dedicada al aprendizaje del desarrollo de aplicaciones en Android, <www.sgoliver.net> [27] Notificaciones PUSH, <http://blog.findemor.es/2011/10/programar-enandroid-notificaciones/> [28] Narciso Martí, Yolanda Ortega, J. Alberto Verdejo, Estructura de datos y métodos algorítmicos, Prentice Hall, 2003. [29] MD5, <http://www.programandoconcafe.com/2008/06/cuando-deseamosque-nuestra-clave-se.html> [30] HTML, Wikipedia, <http://es.wikipedia.org/wiki/html> [31] CSS, Wikipedia,<http://es.wikipedia.org/wiki/Hojas_de_estilo_en_cascada> [32] Especificación JSON, <http://www.json.org/json-es.html > Hábitat Madrid 84

[33] SQLite, <http://www.sqlite.org/> [34] Tildes y ñ en BBDD, <http://xaviesteve.com/354/acentos-y-enesaparecen-mal-a%c2%b1-en-php-con-mysql-utf-8-iso-8859-1/> [35] Algoritmo QuickSort, <http://puntocomnoesunlenguaje.blogspot.com.es/2012/12/javaquicksort.html> [36] Sistemas de recomendación, <http://sinbad2.ujaen.es/cod/archivospublicos/presentaciones/sistemasder ecomendacion.pdf> [37] Inmaculada Pardines, Victoria López, Carlos Fernández, Mª del Mar Octavio de Toledo, Antonio Sanmartín: "Sistema de recomendación colaborativo de la aplicación Hábitat Madrid" IV Congreso Español de Informática CEDI 2013. (pendiente de publicación). [38] Android-Spa, principal comunidad de desarrolladores de Android en español: <http://www.android-spa.com/> Hábitat Madrid 85

Hábitat Madrid 86

Anexo I. MANUAL DE USUARIO El manual de usuario proporciona una mayor facilidad para la comprensión de las distintas funcionalidades de la aplicación mediante la visualización de la interfaz. Acceso Nada más abrir la aplicación aparece una pantalla con el logo del Ayuntamiento de Madrid que dura unos 3 segundos y a continuación se pasa a la pantalla de login de la aplicación. El usuario puede optar a pasar directamente al menú principal sin tener que volver a introducir sus datos si va al de botón de configuración y selecciona la opción correspondiente en "opciones de la aplicación". Figura 44: Pantalla principal de la aplicación Como podemos observar en la Figura 44, en la pantalla de login de la aplicación aparecen dos campos, correo, que es el correo que se ha insertado en el formulario de Hábitat Madrid 87

registro y con el que se va a entrar en la aplicación, y contraseña, que se corresponde con la que se introdujo en el formulario de registro, que son los que se debe introducir para entrar al menú principal. Más abajo aparece un enlace por si el usuario ha olvidado la contraseña. Si este es el caso, se pulsa sobre dicha opción, y se va, como podemos observar en la Figura 45, a una ventana donde se pide al usuario su correo electrónico. Una vez introducido el correo en el lugar indicado, pulsamos sobre el botón Restablecer contraseña y se enviará la solicitud del usuario. Al momento le llegará un mail a la dirección de correo introducida informándole de que ha cambiado de contraseña y proporcionándole una nueva contraseña como ya hemos explicado. Figura 45: Inserción del correo para una nueva contraseña Hábitat Madrid 88

Esta contraseña ha sido creada de forma aleatoria como una combinación de números y letras mayúsculas y minúsculas. Como no es una contraseña fácil, se usará solo para el momento de entrar en la aplicación. Una vez dentro se dispone de la opción Cambiar contraseña para proporcionar una contraseña más cómoda para el usuario y que explicaremos más adelante. Por último hay dos botones: uno de "Aceptar", que funciona correctamente si el usuario ha introducido el correo y contraseña correctos en el lugar correspondiente; y otro botón que es el de "Registrar", que se usa solo cuando el usuario todavía no está dado de alta en la aplicación. Figura 46: Registro 1 Figura 47: Registro 2 Si pulsamos sobre "Registrar", tal y como podemos ver en las Figuras 46 y 47, se piden al usuario los siguientes datos: Hábitat Madrid 89

Nombre y apellidos: Corresponden con el nombre y los apellidos del usuario que se está registrando en la aplicación Correo: Este dato corresponde al login con el que se va a acceder a la aplicación. Contraseña: Esta es la que se inserta para acceder a la aplicación Repetir contraseña: Para validar la contraseña que el usuario ha introducido Hijos: Se debe introducir el número de hijos que tiene el usuario Sexo: Especificar si es hombre o mujer Edad: Se establecen distintos rangos de edad. Estos son: 18-25, 26-40, 41-55, 56-65, +65 Tanto el número de hijos, edad, como el sexo son datos que se piden al usuario para un uso estadístico. Para poder finalizar el registro en la aplicación es necesario que el usuario lea las condiciones de uso y las acepte. En caso contrario la aplicación no permitirá a dicho usuario registrarse. Si el usuario lo desea, la pantalla de la Figura 44 donde se meten los datos para que el usuario pueda entrar a la aplicación sólo aparecerá la primera vez que el usuario entre. El resto de veces irá directamente al menú principal. Para ello se utiliza una opción de la configuración que veremos más adelante. Menú principal En el menú principal dispone de 6 opciones: "Configuración", "Actividades", "Noticias y Eventos", "Planificación", "Recomendaciones" y "Mis Actividades", las cuales permiten al usuario realizar distintas funciones que explicamos a continuación: Hábitat Madrid 90

Figura 48: Menú principal de la aplicación Configuración Para acceder a esta opción, pulsamos sobre el icono de configuración Esta opción permite modificar cualquier dato referente al usuario o a la aplicación. Como muestra en la Figura 49, disponemos de 6 posibles acciones dentro de este apartado: 1. Modificar datos: Permite modificar los datos personales del usuario salvo la contraseña que se hace con otra opción. Si se pulsa sobre este icono, aparece un formulario con los datos actuales del usuario. Este formulario es muy similar al del registro. Si se quisiera modificar algún dato, basta con pinchar en el campo deseado y modificar el valor actual por el nuevo que se desea introducir. Una vez que se pulsa "Aceptar" se guardan los Hábitat Madrid 91

cambios en la base de datos de la aplicación, y esos serán los nuevos datos del usuario. Figura 49: Pantalla de configuración 2. Preferencias: Como podemos observar en la Figura 50, esta opción muestra 5 tipos de actividades distintas para que el usuario elija las que más le interesen. Estas se utilizarán para recomendar al usuario aquellas actividades que se ajusten a su elección. 3. Opciones de la aplicación: Como se muestra en la Figura 51, este apartado permite, pulsando la pestaña OFF, que al entrar en la aplicación no salga la ventana de la Figura 44 en la que se pide el usuario y la contraseña sino que va directamente a la ventana del menú principal, que se corresponde con la Figura 48. Hábitat Madrid 92

Figura 50: Ventana de preferencias Figura 51: Ventana de las opciones de la aplicación 4. Notificaciones y avisos: Permite al usuario decidir si desea recibir notificaciones y avisos de las distintas noticias o eventos organizados por el Ayuntamiento de Madrid. Por defecto vienen desactivadas, como muestra la Figura 52. Para activarla habrá que pulsar sobre el botón "Notificaciones desactivadas". El usuario siempre tendrá la oportunidad de activar y desactivar esta opción según si desea recibir notificaciones o no. Hábitat Madrid 93

Figura 52: Ventana de notificaciones y avisos Figura 53: Ventana de cambiar contraseña Actividades 5. Cambiar contraseña: Permite al usuario modificar su contraseña, ya que, como se ha explicado anteriormente, la aplicación manda a los usuarios que se les olvidó la contraseña un correo con una contraseña difícil de memorizar, y con esta opción se le permite insertar la contraseña que el usuario desee y que le sea más fácil y cómoda de recordar. Para ello, y como se muestra en la Figura 53, se debe insertar la contraseña actual con la que el usuario ha entrado en la aplicación la última vez para validar el cambio de contraseña, y, a continuación, la nueva contraseña repitiéndola para su confirmación. 6. Acerca de la aplicación: Esta última opción muestra información que explica el funcionamiento de la aplicación. Es solo una opción informativa. Hábitat Madrid 94

La pestaña "Actividades" del menú principal permite ver todas las actividades que hay programadas en los centros de Educación Ambiental del Ayuntamiento de Madrid organizadas por lugares. Para utilizar esta opción basta con pulsar sobre el icono de Actividades. Figura 54: Ventana de Actividades Nos encontramos una clasificación de las actividades por lugares y, dependiendo del lugar, una segunda clasificación donde tendremos varias opciones. La clasificación por lugares o centros medioambientales, tal y como muestra la Figura 54, es la siguiente: - El Retiro - Casa de Campo - Dehesa de la Villa Hábitat Madrid 95

- Parque Juan Carlos I - Visitas a instalaciones ambientales - Otros parques Figura 55: Segunda clasificación de las actividades 1 Si se selecciona una de las 4 primeras opciones (Retiro, Casa de Campo, Dehesa de la Villa o Parque Juan Carlos I) pasamos, como se puede observar en la Figura 55, a una ventana en la que se presenta una nueva clasificación donde se nos permite seleccionar, por temática, el tipo de actividad que se desea encontrar: - Exposiciones - Itinerarios Guiados - Cursos y Talleres - Eventos Hábitat Madrid 96

- Otras Actividades Si por otro lado se pulsa sobre Otros parques dentro de la clasificación principal por lugares, nos encontramos, tal y como muestra la Figura 56, con una nueva clasificación de las actividades: - Parque del Oeste - Fuente del Berro - Jardín del Capricho - Monte de El Pardo - Madrid Río - Otros Figura 56: Segunda clasificación de las actividades 2 Hábitat Madrid 97

Por último, la Figura 57 nos muestra la ventana que aparece si seleccionamos Visitas a instalaciones ambientales con la siguiente clasificación de las actividades: - Centros Fauna Casa de Campo - Planta Compostaje Migas Calientes - Viveros del Retiro - Vivero Casa de Campo - Invernadero de La Arganzuela - Parque Tecnológico Valdemingómez Figura 57: Segunda clasificación de las actividades 3 Como podemos ver en la Figura 58, una vez seleccionamos la actividad que queremos consultar, aparece una ventana en la que podemos observar el Tema de la acti- Hábitat Madrid 98

vidad, el Nombre, la Descripción de esa actividad, la Fecha en la que va a tener lugar y el número de plazas que se desean reservar en el caso de querer inscribirse en dicha actividad (se pueden reservar un máximo de 10 plazas por persona). En caso de querer realizar una solicitud de reserva en la actividad, se pulsa sobre el botón Solicitar reserva. Una vez pulsado dicho botón, aparece un mensaje informando al usuario que se ha solicitado la reserva de esa actividad, pero no quiere decir que ya esté inscrito. Figura 58: Ventana de una actividad Una vez solicitada una reserva, ésta no se concede inmediatamente, sino que aparecerá en curso hasta que el personal del Ayuntamiento de Madrid acepte o deniegue dicha solicitud según las plazas que queden, por lo que hay una opción Estado de reserva que permite al usuario conocer el estado de su solicitud de reserva para saber si está admitido en ella. También se puede consultar el estado de la reserva Hábitat Madrid 99

por medio de la opción "Mis Actividades" del menú principal como veremos más adelante. Disponemos de una tercera opción dentro de esta ventana, "Valoración" mediante la cual se pueden valorar las actividades a las que se ha asistido. De este modo el Ayuntamiento tendrá información para poder mejorar las actividades en caso de que se requiera. Y también el futuro sistema de recomendación podrá seleccionar con mejor criterio las actividades que mejor se adaptan a cada usuario. Noticias y eventos Figura 59: Ventana de noticias y eventos Como muestra la Figura 59, si pulsamos sobre el icono de noticias y eventos, el usuario podrá ver todos los eventos y noticias nuevas que el Ayuntamiento vaya incorporando. Si se selecciona una, se puede conocer el Nombre del evento o de la noticia, Hábitat Madrid 100

la Descripción, la Fecha y se añade un enlace en el que el usuario podrá obtener información más detallada de dicha noticia. La aplicación dispone de un sistema de notificaciones de forma que, cada vez que se añada una noticia o evento de este tipo, saltará una notificación en el móvil del usuario informando de esta nueva incorporación. De este modo se mantendrá al usuario al tanto de las novedades que programa el Ayuntamiento de Madrid. Planificación Para utilizarla pulsamos sobre el icono de Planificación. Esta opción es un enlace que lleva al calendario del Ayuntamiento de Madrid donde, si pulsamos sobre cualquier día del calendario que aparece podremos ver todas las actividades programadas para ese día. Este sistema es como una nueva clasificación de las actividades, las cuales las podemos ver por días seleccionados. Recomendaciones Para acceder al sistema de recomendaciones basta con pulsar sobre el icono de Recomendaciones. Este sistema de recomendación ofrecerá al usuario aquellas actividades relacionadas con sus preferencias. Este sistema le vendrá muy bien al usuario ya que le propondrá una serie de actividades sobre las temáticas que le interesan sin tener que ir buscándolas por lugares. Mis actividades Esta opción permite al usuario consultar el estado de la reserva de sus actividades, que podrán estar aceptadas, en curso o rechazadas. De esta forma podrá saber a qué actividades de las que se apuntó puede asistir y en su caso consultarlas. Hábitat Madrid 101

Figura 60: Ventana de Mis Actividades Para utilizarla, pulsamos sobre el botón del menú principal, y vamos a una ventana donde aparecen 3 opciones tal y como observamos en la Figura 60: Aceptadas, En Curso o Rechazadas. Pulsando sobre cualquiera de estas opciones, podremos ver qué actividades se encuentran en cada uno de estos tres grupos. Aplicación Web Como hemos comentado en el apartado 3.7 de la memoria, hemos desarrollado una aplicación web para el mantenimiento de la información de la aplicación por parte del cliente. Está basada en una serie de formularios mediante los cuales se pueden insertar, consultar, modificar y eliminar tanto actividades como usuarios. Igualmente se pueden Hábitat Madrid 102

administrar las solicitudes de reserva de las actividades disponibles de los usuarios que las soliciten. Por último destacar que mediante esta aplicación el personal del Ayuntamiento de Madrid puede añadir noticias y eventos nuevos. Una vez que se añaden, le llegará al usuario una notificación (siempre que tenga activada esta opción) informándole de la existencia de los mismos. Hábitat Madrid 103

Hábitat Madrid 104

Anexo II. REUNIONES En este anexo vamos a mostrar las actas de las reuniones que hemos tenido con el cliente a lo largo del curso. En ellas se reflejan los puntos más importantes tratados durante cada una de estas reuniones. Acta primera reunión: Esta reunión tuvo lugar el jueves 11 de Octubre de 2012 en el Área de Gobierno de Medio Ambiente, Seguridad y Movilidad del Ayuntamiento de Madrid, situado en la calle Montalbán, 1-6ª planta (Madrid). Esta reunión fue una reunión conjunta con los otros proyectos del Ayuntamiento de Madrid donde se expusieron las ideas principales de cada proyecto. Asuntos tratados: Durante la reunión, sobre nuestro proyecto, se trataron los siguientes aspectos: El nombre del proyecto que en un primer momento se iba a llamar "Escuelas de Educación Ambiental" pasa a llamarse "Hábitat Madrid". Se trató el tema del servidor y base de datos que iba a utilizarse en el proyecto, quedando pendiente de hablar con el IAM para ver si iban a proporcionarlo ellos. Se dio gran importancia al tema de la protección de datos del usuario, indicando que es necesario que los usuarios, para registrarse a la aplicación, tengan que aceptar unas condiciones de uso, en donde aceptan que la información pueda ser almacenada en nuestra base de datos. El personal del ayuntamiento explicó la manera en la que tenían organizadas las actividades, las cuales se organizan de distinta forma para cada Centro de Educación Ambiental. Hábitat Madrid 105

Para registrarse en una actividad cada centro disponía de un correo electrónico y de un teléfono propio. Para acceder a una información detallada de cada centro y ver las distintas actividades que ofrece, podemos entrar a la siguiente página web: www.programadeactividadesambientales.com. Otros temas que se hablaron de manera superficial en esta reunión fueron la manera de tratar "Eventos especiales" que van surgiendo, la idea de que el usuario pueda valorar una actividad a través de la aplicación móvil y la manera de ofrecer un calendario para que el usuario pueda seleccionar el día para el cuál desea ver las actividades que están disponibles. Acta segunda reunión: Esta reunión tuvo lugar el viernes 23 de Noviembre de 2012 en el Área de gobierno de Medio Ambiente, Seguridad y Movilidad del Ayuntamiento de Madrid, situado en la calle Montalbán, 1-6ª planta (Madrid). La duración de la reunión fue de 1 hora y 30 minutos (10:45-12:15) a la cual asistieron un total de 11 personas. Asuntos tratados: Durante la reunión, se trataron los siguientes temas: La necesidad de no saturar al usuario de la aplicación con constantes avisos o notificaciones. Una de las soluciones a este problema puede ser que el propio usuario, desde dentro de la aplicación seleccione una opción para que no se le notifiquen más avisos. Respecto al modo de inscribirse a las actividades propuestas, los usuarios podrán reservar plaza en la actividad deseada a través de la aplicación mediante el sistema de correo electrónico, que es la vía utilizada actualmente. En cuanto el usuario reciba la contestación de que es admitido en dicha actividad, podrá confirmar su asistencia. Hábitat Madrid 106

La forma de nutrir la base de datos con los eventos y actividades disponibles consistirá en la realización de una aplicación web para que el personal del Ayuntamiento pueda manejar las inscripciones. El contenido de las actividades es gestionado por distintos centros: Actividades ambientales, Aves y Diversidad, Retiro, Casa de Campo y Dehesa de la Villa. Cada centro se encarga de gestionar las inscripciones para sus actividades (gestor de contenido propio). La aplicación tiene que ser capaz de "relacionar" todos los gestores de contenido para tener toda la información. En cuanto un usuario se instale la aplicación deberá aparecer un mensaje de protección de datos, que el usuario deberá aceptar si está conforme de que sus datos vayan a ser almacenados en una base de datos. Esta aceptación sustituye a la firma en papel. Todos los usuarios registrados en la aplicación van a una única base de datos, en la que no se diferencia por centro. La aplicación llevará un calendario en el que se mostrará los días en los que hay una actividad, así como la disponibilidad de plazas para las diferentes actividades mediante distintos colores. Por último, se trató la posibilidad de que la aplicación disponga de un método para la difusión de Eventos especiales y Eventos destacados por el Ayuntamiento de Madrid. Acta tercera reunión: Esta reunión tuvo lugar el jueves 20 de Diciembre de 2012 en el Área de Gobierno de Medio Ambiente, Seguridad y Movilidad del Ayuntamiento de Madrid, situado en la calle Montalbán, 1-6ª planta (Madrid). La duración de la reunión fue de 1 hora y 30 minutos (13:00-14:30) a la cual asistieron un total de 8 personas. Asuntos tratados: Durante la reunión se trataron los siguientes aspectos del proyecto: Hábitat Madrid 107

Debemos dividir nuestro nodo1 (Diagrama hardware) que actualmente es Actividades Ambientales (A.A) y Aves en dos, ya que son cosas diferentes. Respecto al formulario WEB, será necesario añadir el área a la que está vinculada la actividad, se discute la forma de indicar las fechas para las actividades que se repiten en varios días y se llegó a la conclusión de que los usuarios no van a poder ver desde la aplicación el número de plazas totales que quedan disponibles, ya que necesitaríamos una gran sincronización por parte de todos los centros. Siguiendo con el formulario WEB tenemos que ser capaces de que a partir de la fecha de inicio de la actividad propuesta, no se puedan solicitar las inscripciones a dicha actividad hasta un mes (o el tiempo que acuerden) antes de la celebración de la misma. Las distintas empresas deben unificar un criterio respecto a esto, ya que actualmente el Retiro solo permite hacer una reserva 15 días antes. El formulario WEB tendrá los siguientes campos: o Área. o Lugar. o Día/s de la actividad. o Día a partir del cual se puede realizar la inscripción. Si un usuario trata de registrarse antes de la fecha establecida se mostrará un mensaje indicándole a partir de qué momento es posible realizar la inscripción. A la hora de mostrar los eventos, nosotros los mostramos según sean en: Retiro, Casa de Campo, Dehesa, y Aves y Actividades Ambientales (A.A). Rafa ha propuesto, separar Aves de Actividades Ambientales y dentro de Actividades Ambientales hacer varias entradas como pueden ser: Talleres huerto, Visitas parques, Sostenibilidad En cuanto al tema de la solicitud de inscripciones se ha hablado de que el usuario rellenará un formulario dentro de la aplicación con los siguientes campos: Hábitat Madrid 108

nombre y apellidos (que son los que el usuario ha rellenado en su perfil), teléfono, número de plazas solicitadas y actividad. Si hay posibilidad de elegir varias fechas para la actividad, el usuario indicará mediante un menú desplegable el día que le interese. Cuando el usuario manda el correo para reservar plaza en una actividad, habrá que mostrarle un aviso indicándole que hasta que no reciba una notificación de respuesta no dispone de plaza. En cuanto al tema de la confirmación de solicitud de plaza, viendo las posibilidades que ofrecía el correo electrónico, hemos llegado a la conclusión de que la confirmación de la plaza o el aviso de que se está en lista de espera, vendrá dado mediante un formulario WEB muy breve que rellenarán los responsables de cada actividad, de esta forma aparecerá en la aplicación del usuario una notificación indicándole si ha sido admitida su solicitud. Sólo podrá solicitar plazas un usuario registrado en la aplicación (por la ley de protección de datos). Por lo que será necesario que cuando un usuario se registre en la aplicación se le asigne un número o patrón identificativo de tal forma que así se puedan facilitar, por ejemplo, las tareas como el confirmar la plaza a través de la aplicación WEB. Los usuarios que lo deseen (tengan habilitada la opción de recibir notificaciones) serán avisados dos días antes de la realización de la actividad a modo de recordatorio. Según nos han explicado, las actividades que se realizan en un determinado trimestre, se hacen visibles en un determinado día, en nuestro caso, el usuario podrá ver las actividades según se van metiendo a la base de datos, pero no serán capaces de apuntarse hasta un mes antes del comienzo de la fecha. Hábitat Madrid 109

El tema de la protección de datos, así como el texto de estoy de acuerdo con las condiciones de uso queda a la espera de ser estudiado por parte del Ayuntamiento. En cuanto al contenido de decoración de la aplicación hemos quedado en que nos van a facilitar los colores o patrones que se usan actualmente y algunas imágenes sencillas que puedan facilitar el uso de la aplicación para los usuarios. Han quedado en facilitarnos las fotos más representativas para que sirvan de icono a cada actividad, ya que el aspecto visual de la aplicación no se pretende modificar. Por último sigue presente la idea de meter un calendario para visualizar más fácilmente los eventos programados para un determinado día, pero antes de realizar esta mejora en la aplicación tiene que estar funcionando todo lo demás. (Segunda fase). Se realizará una reunión a principios de Febrero de 2013. Acta cuarta reunión: Esta reunión tuvo lugar el Lunes 11 de Febrero de 2013 en el IAM (Informática del Ayuntamiento de Madrid), situado en la calle Albarracín, 33 (Madrid). La duración de la reunión fue de 2 horas y 10 minutos (9:00-11:10) a la cual asistieron un total de 11 personas. Asuntos tratados: Durante la reunión se habló principalmente de los problemas que pueden surgir a la hora del mantenimiento posterior de los proyectos una vez los alumnos que estamos cursando la asignatura de Sistemas Informáticos dejemos de estar presentes. Los principales problemas que propusieron tanto Isabel como Jesús fueron el mantenimiento de los datos, que es complicado, y la distribución de las aplicaciones. Hábitat Madrid 110

En cuanto al método de trabajo se habló de dos posibles soluciones, la primera sería que nos habilitaran ellos un espacio en el que nosotros podamos ir trabajando en nuestro proyecto, y la segunda, trabajar como lo estamos haciendo hasta ahora y luego al final hacer un volcado de todo nuestro trabajo. El IAM para las bases de datos usa SQL Server 2005, nos dijeron que en teoría no habría problema para, posteriormente, hacer un volcado mediante un script. Como ya se ha dicho más arriba una de las cosas más importantes es el mantenimiento, tenemos que ser capaces de cargar, mantener, y actualizar, ya sea a través de formularios o de ficheros batch que automáticamente actualizan la base de datos. En el caso de nuestro proyecto (Hábitat) al haber muchos cambios continuamente de cursos, etc..., se hace por formularios. Respecto a la información, se insistió en que no puede andar por la red, y que se puede recoger información como el teléfono móvil o el correo electrónico, pero nunca el DNI. El otro tema importante de la reunión fue la forma en la que nos vamos a organizar todos los proyectos para crear una estructura común, concepto OpenData. Figura 61: Esquema de OpenData facilitado por el IAM Hábitat Madrid 111

El personal del IAM que como hemos dicho utiliza para la base de datos SQL Server 2005 pone la restricción de que a la hora de diseñar la base de datos, esta debe tener menos de 30 campos. Posteriormente nos explicaron los pasos que hay que seguir para realizar el proyecto. Son tres entornos: Desarrollo, preproducción y producción. Desarrollo: Despliegue inicial, reunión con calidad, primera instalación, acceso para actualización automática. Solicitud y generación de una base de datos nueva: Usuario de lectura y de escritura. Ver el diseño de la base de datos. Hasta preproducción internet no se puede probar. Preproducción: Procedimiento de pruebas de estrés, como puede ser, mucha gente atacando a la vez la aplicación. En principio en nuestro caso no se espera una utilización masiva por parte de los ciudadanos, por lo que no haría falta. Batería de pruebas para ver que todo funciona (la diseñamos nosotros) Plan de implantación: si hay algún fallo, poder recuperar. Producción: Los usuarios ya han visto que funciona y se despliega para que empiece a funcionar. El primer despliegue suele dar más problemas pero una vez hecho el primero, las cosas van más rodadas. Después se explicó el funcionamiento de la arquitectura, quedando detallado de la siguiente forma: Subsistema móvil: 1. Siempre que haya conexión: aplicación web al uso. 2. Sin conexión. La aplicación usa el API Phonegap (enfocado a que sea multiplataforma). Hábitat Madrid 112

3. Java sobre nativo para Android (Ej. para aplicaciones con uso de mapas). Esta opción es la más sencilla. Aplicación web: Corren sobre WAS61, RAD 7.0 ó 7.5, RSA 8.0. Hibernate es un framework muy utilizado, el cual implementa R.N.O a través de un mapeo xml. Ligas una clase con un registro de BBDD y los atributos de esa clase con campos. Los ficheros de configuración y los ficheros estáticos deben ir en un repositorio. Utilización de logs: todos los errores tienen que ser controlados. Figura 62: Esquema a seguir Por encima de toda la capa de la aplicación web se usa el framework spring. Si usamos algún fichero no se puede quedar en el servidor de la aplicación. Jesús ha quedado en mandarnos una maqueta. Hábitat Madrid 113

Servicio web: Tiene que ser soap. Es muy parecido a la Aplicación web. Batch: No se corre en servidor. Se ejecuta a través de un Java. Hay que especificarle un código de respuesta Figura 63: Estructura en 3 capas I Hábitat Madrid 114