UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE INGENIERÍA, CIENCIAS FÍSICAS Y MATEMÁTICA CARRERA DE INGENIERÍA INFORMÁTICA SISTEMA WEB DE UBICACIÓN GEOGRÁFICA Y TRAZO DE RUTAS DE TRANSPORTE PARA LLEGAR A LOS COLEGIOS DE QUITO TRABAJO DE GRADUACION, PREVIO LA OBTENCIÓN DEL TÍTULO DE INGENIERO INFORMÁTICO AUTOR: Granizo Pilataxi Sergio Leonardo TUTOR: M.Sc. Mauro Leonardo Rosas Lara QUITO, 12 DE MAYO 2016 DEDICATORIA A mi madre que amo con todo mi corazón, a mi novia que quiero tanto y a mis futuros hijos. ii AGRADECIMIENTO El autor expresa su agradecimiento a: Ing. Benjamín Sandoval Bonilla, gerente general de la empresa DCA Sistemas que me permitió laborar en su organización, para demostrar mi capacidad y formar parte de manera fundamental en mis estudios universitarios y por ende en la obtención del título de ingeniero informático A todas las personas, amigos y familiares que hicieron posible cumplir este gran sueño en la vida. iii AUTORIZACION DE AUTORIA INTELECTUAL Yo SERGIO LEONARDO GRANIZO PILATAXI en calidad de autor del Proyecto integrador titulado: SISTEMA WEB DE UBICACIÓN GEOGRAFICA Y TRAZO DE RUTAS DE TRANSPORTE PARA LLEGAR A LOS COLEGIOS DE QUITO, autorizo a la Universidad Central del Ecuador hacer uso de todos los contenidos que me pertenecen o parte de los que contiene esta obra, con fines estrictamente académicos o de investigación. Los derechos que como autor me corresponden, con excepción de la presente autorización, seguirán vigentes a mi favor, de conformidad con lo establecido en los artículos 5, 6, 8; 19 y demás pertinentes de la Ley de Propiedad Intelectual y su Reglamento. Asimismo, autorizo a la Universidad Central del Ecuador para que realice la digitalización y publicación de este trabajo en el repositorio virtual, de conformidad a lo dispuesto en el Art. 144 de la Ley Orgánica de Educación Superior. Quito, 12 de mayo de 2016 Sergio Leonardo Granizo Pilataxi CI: 1719855171 Telf.: 0997009187 Email: [email protected] iv v CALIFICACION DEL TRIBUNAL vi RESULTADO DEL TRABAJO DE GRADUACION vii CONTENIDO pág. DEDICATORIA ii AGRADECIMIENTO iii AUTORIZACION DE LA AUTORIA INTELECTUAL iv APROBACION DEL TUTOR DE TRABAJO DE TITULACION v CALIFICACION DEL TRIBUNAL vi RESULTADO DEL PROYECTO INTEGRADOR vii CONTENIDO viii LISTA DE TABLAS x LISTA DE FIGURAS xi RESUMEN INFORMATIVO xv RESUMEN INFORMATIVO (INGLES) xvi 1. INTRODUCCION 1.1 Introducción .......................................................................................................... 1 1.2 Definición del Problema ....................................................................................... 1 1.3 Antecedentes ........................................................................................................ 1 1.4 Formulación del Problema ................................................................................... 2 1.2.4 Justificación ....................................................................................................... 3 1.2.5 Módulos de la Aplicación .................................................................................. 5 1.2.5.1 Módulo I: Módulo de Conexión ...................................................................... 6 1.2.5.2 Modulo II: Módulo de Transacciones............................................................. 7 1.2.5.3 Módulo III: Módulo de Búsqueda y Geolocalización .................................... 8 1.2.5.4 Módulo IV: Módulo de Administración .......................................................... 9 1.2.5.5 Módulo V: Módulo de Seguridad.................................................................. 10 viii 2. MARCO REFERENCIAL 2.1 Estado del Arte................................................................................................... 12 2.1.2 Evaluación de alternativas .............................................................................. 15 2.1.3 Implicaciones ................................................................................................... 16 3. METODOLOGIA DE DESARROLLO 3.1 Valores de la Metodología XP ........................................................................... 28 3.2 Fases de la Metodología..................................................................................... 29 3.2.1 Fase 1: Estudio de Factibilidad ....................................................................... 29 3.2.2 Fase 2: Análisis y Diseño Global .................................................................... 36 3.2.3 Fase 3: Desarrollo ............................................................................................ 37 3.2.4 Fase 4: Puesta en Producción ........................................................................ 37 3.3. Plataforma Tecnológica.................................................................................... 38 3.3.1 Arquitectura de la Aplicación Web ................................................................ 38 4. MARCO ADMINISTRATIVO 4.1 Recursos ............................................................................................................. 51 4.1.1 Técnicos – Tecnológicos................................................................................ 51 4.1.2 Humano ........................................................................................................... 52 5. CONCLUSIONES 6. RECOMENDACIONES 7. CITAS BIBLIOGRAFICAS ANEXOS ix LISTA DE TABLAS pág. 1. Campos y Descripción de los datos obtenidos 3 2. Colegios Mejor Puntuados de Quito según SENESCYT 12 3. Cuadro comparativo de metodologías 15 4. Valores de la metodología XP 18 5. Cuadro Comparativo de lenguajes de programación 20 6. Cuadro comparativo de IDE’s de Desarrollo 22 7. Cuadro Comparativo de Servidores de Aplicaciones 23 8. Cuadro Comparativo de Frameworks 24 9. Cuadro Comparativo de Sistemas Gestores de Bases de Datos 25 10. Lista de Procedimientos para manejo y uso de la aplicación web 29 11. Clase Conexión 36 12. Clase Colegio 37 13. Clase ColegioController 38 14. colegio.js 40 15. mapa.js 41 16. ubicación.js 41 17. Marcadores de la aplicación 47 18. Resumen Herramientas de desarrollo 49 x LISTA DE FIGURAS pág. 1. Módulos de la aplicación 5 2. Módulo de Conexión 6 3. Módulo de Transacciones 6 4. Ejemplo de un SIG 7 5. Usuario Administrador 8 6. Análisis de Seguridad 9 7. Colegio Sebastián de Benalcazar, mejor renqueado según SENESCYT 13 8. Problemática Actual 14 9. Casos de Uso 28 10. Diagrama Lógico de los Procesos 30 11. Diagrama del patrón de diseño MVC 32 12. Arquitectura de la Aplicación Web 33 13. Estructura de la aplicación 34 14. Muestra de la tabla de colegios en Postgresql 35 15. Diagrama de las páginas de la aplicación 39 16. Esquema Cliente – Servidor 42 17. Servicio web sin estado 43 18. Servicios uniformes 44 19. Arquitectura en Capas 44 20. Pantalla inicial del test del servicio web 45 21. Lista de Colegios en formato XML 45 xi 22. Búsqueda de colegios por Id 47 23. Plataforma Java 48 24. Antoine Picon 56 25. Pantalla de Inicio 57 26. Pantalla de Inicio con credenciales 58 27. Marcadores 59 28. Datos de un colegio 60 29. Combo 61 30. Búsqueda de colegios 62 31. Trazo de Rutas 63 32. Información de un colegio 64 xii RESUMEN “SISTEMA WEB DE UBICACIÓN GEOGRAFICA Y TRAZO DE RUTAS DE TRANSPORTE PARA LLEGAR A LOS COLEGIOS DE QUITO, MODALIDAD PROYECTO INTEGRADOR” Autor: Sergio Leonardo Granizo Pilataxi Tutor: Mauro Leonardo Rosas Lara La tecnología y la ciencia son los pilares de una cadena evolutiva en la historia del ser humano, contribuyendo al desarrollo global, abarcando todas las áreas que involucran al mismo, principalmente conllevando al crecimiento económico y social. Un avance de la ciencia y la tecnología lo forman las Tecnologías de la Información y las Comunicaciones (TIC) y con ello el uso del INTERNET, instrumento que ha marcado una huella imborrable en el desarrollo de la sociedad de hoy. De esta manera se hace necesaria la creación de una aplicación informática que muestre de manera gráfica, la localización de cada colegio y además despliegue la información necesaria y pertinente para obtener un mejor conocimiento de las unidades educativas que se encuentran ubicadas en Quito y regidas por el Ministerio de Educación, los beneficios que puede lograr con esta aplicación, entre ellos, mejor conocimiento en cuanto a localización, distancia y tiempo de llegada al colegio que necesite. PALABRAS CLAVES: /APLICACIÓN WEB / LOCALIZACIÓN DE MAPAS/ PLATAFORMA DE SERVICIO (PAAS)/ BASE DE DATOS (SGBD)/ PATRON DE DISEÑO MVC/ ARQUITECTURA CLIENTE SERVIDOR/ xiii ABSTRACT TITLE: “WEB SYSTEM FOR GEOGRAPHICAL LOCATION AND ROUTES STROKE TO ARRIVE AT COLLEGES OF QUITO, INTEGRATOR PROJECT MODE” Author: Sergio Leonardo Granizo Pilataxi Tutor: Mauro Leonardo Rosas Lara Technology and science are the pillars of an evolutionary chain in human history, contributing to global development, covering all areas involving the same, mainly leading to economic and social growth. An advance of science and technology is formed by the Information Technology and Communications (TIC) and thus the use of the Internet, an instrument that has marked an indelible mark on the development of today's society. Thus the creation of a computer application that shows graphically the location of each school and also display the information necessary and relevant for a better understanding of educational units are located in Quito and governed is necessary, by the Ministry of Education, the benefits that can be achieved with this application, including better knowledge in terms of location, distance and time of arrival at school need. KEYWORDS: / WEB APPLICATION/ LOCATION MAP / PLATFORM AS A SERVICE (PAAS) / DATABASE (DBMS) / DESIGN PATTERN MVC / CLIENT SERVER ARCHITECTURE / I CERTIFY that the above and foregoing is a true and correct translation of the original document in Spanish. ___________________________ VERDEZOTO COBOS BEATRIZ DEL CARMEN Certified Translator ID: 1708508591 xiv 1. INTRODUCCION 1.1 Introducción La educación secundaria en la actualidad demanda calidad y es vital que nuestra sociedad sepa cuáles son las instituciones que pueden aportar un buen servicio a los estudiantes, ya sea por su ubicación, jornada, especialidades que ofrece, entre otras cosas, para ello es necesario tener una aplicación gráfica y en tiempo real con el fin de llegar a los colegios y con una recopilación optima de los datos con el fin de elegir la mejor opción para nuestros hijos. 1.2 Definición del Problema Actualmente es muy difícil detectar la ubicación geográfica de un gran número de colegios de Quito de forma digital, ya que muchos no constan en los registros de Google Maps, razón por la cual se dificulta mucho conocer información relevante como: Dirección del colegio Número de estudiantes Numero de especialidades Número de alumnos que se encuentran cursando en Educación General Básica y en bachillerato Jornada de estudios (Matutina o vespertina) Distancia en km. Tiempo aproximado para llegar al colegio 1.3 Antecedentes Desde el pasado ha sido un verdadero dilema conocer las instituciones educativas que ofertan la educación secundaria de nuestros hijos, ya sea por desconocimiento o por desinterés; esto crea un estancamiento, ocasionado por la falta de explotación del 1 mercado académico y la no optimización del tiempo, lo que hace que perdamos recursos valioso como tiempo y dinero, aislándonos así de todas las oportunidades que se encuentran presentes, estos problemas se solucionaran con el desarrollo de una aplicación web que cubrirá estas falencias 1.4 Formulación del Problema Debido a la particular forma geográfica de la ciudad de Quito y a la escasez de información web disponible sobre la mayoría de los colegios de Quito es muy difícil ubicarlos en tiempo real, y más complicado aún obtener datos relevantes respecto a la proyección académica de la institución, así como trazar una ruta óptima de llegada a la institución académica destino. Considerando la problemática antes mencionada, se pretende aplacar y disminuir este desconocimiento de los colegios de Quito, que se encuentran legalmente registrados en los bancos de Datos del Ministerio de Educación del Ecuador, de tal forma que podamos acceder a la mayor cantidad de colegios viables en la forma más eficiente posible, mediante el proyecto SISTEMA WEB DE UBICACIÓN GEOGRAFICA Y TRAZO DE RUTAS DE TRANSPORTE PARA LLEGAR A LOS COLEGIOS DE QUITO 1.2.3 Objetivos 1.2.3.1 Objetivo General Crear un sistema web de ubicación geográfica y trazo de rutas de transporte para llegar a los colegios de Quito 1.2.3.2 Objetivos Específicos • Colocar a los colegios de Quito en una App usando coordenadas de longitud y latitud • Relacionar por medio de posición, las distancias y proximidades existentes entre el usuario y las unidades educativas 2 • Trazar una ruta por medio de marcadores, usando la posición del usuario y el colegio destino 1.2.4 Justificación Dado que actualmente es muy difícil detectar la ubicación geográfica de un gran número de colegios de Quito de forma digital, pues muchos no constan en los registros de Google Maps, razón por la cual se dificulta mucho conocer información relevante como: • Nombre de la institución • Dirección de la institución • Rector o autoridad máxima de la institución • Teléfonos de la institución • Número de estudiantes • Numero de especialidades • Página Web de la institución educativa (siempre y cuando disponga de un sitio web) • Jornada de estudios de los alumnos (matutino o vespertino) • Entre otras cosas. El proyecto integrador SISTEMA WEB DE UBICACIÓN GEOGRAFICA Y TRAZO DE RUTAS DE TRANSPORTE PARA LLEGAR A LOS COLEGIOS DE QUITO, avalado por la prestigiosa Universidad Central del Ecuador, propone obtener esta información de forma rápida, clara y oportuna; para ofrecer una solución tecnológica y muy fácil de utilizar y así apoyar a la comunidad de Quito con una aplicación informática que provea toda la información antes mencionada, además, dicha aplicación funcionará en tiempo real. Esta aplicación informática, tendrá una arquitectura cliente – servidor sobre un patrón de diseño Modelo Vista Controlador, eso significa que cualquier usuario que se 3 conecte a internet por medio de algún dispositivo, podrá acceder a la aplicación, sin preocuparse por los problemas de visualización, pues la app, es responsiva Para comprender de forma más clara, veamos la siguiente tabla a manera de ejemplo Tabla 1. Campos y Descripción de los datos obtenidos Campo Descripción Es el nombre del colegio o Instituto, en caso de ser Instituto Colegio se precederá el nombre del Instituto con la palabra “Instituto” Ejm: AMAZONAS Es el nombre completo del rector, rectora o autoridad Rector máxima de la institución, no se toma en cuenta títulos como: Ing. Dr. Mg., etc. Ejm: Molina Villacis Dino Isaias Es la dirección donde se encuentra ubicada la institución Dirección educativa Ejm: Lauro Guerrero S/N e Iturralde Es la jornada de estudios que ofrece la institución a sus Jornada estudiantes Ejm: Matutina y Vespertina Es la modalidad de estudios que ofrece la institución a sus Modalidad estudiantes Ejm: Presencial Número de estudiantes que se encuentran en Educación General Básica o EGB Ejm: EGB: 1280 Número de Estudiantes Número de estudiantes que se encuentran en los cursos superiores con alguna especialidad o Diversificado Ejm: Diversificado: 1251 Es el nombre de la especialidad o especialidades que ofrece la institución a sus estudiantes Ejm: Unificado, Área Especialidades de Comercio y Administración Es el número o números de los teléfonos convencionales Teléfonos (añadido la extensión 02) que posee la institución Ejm: 022611611 022612736 022612608 Es el link del sitio web oficial de la institución, en caso de no Informes disponer, se colocará la etiqueta “No dispone de Sitio Web” Ejm: www.colegioamazonas.edu.ec Hay que indicar que el formato de la información lo provee el Ministerio de Educación del Ecuador, razón por la cual, nuestra aplicación no puede alterar ningún campo antes mencionado, solo se puede acceder a ellos a través de un servicio web que funciona en tiempo real 1.2.5 Alcance El alcance del proyecto, es llegar a tomar los datos antes mencionado de cada colegio y trazar una ruta, siempre y cuando físicamente sea posible (Por Ejemplo: No se 4 podría trazar una ruta, si el usuario está en otro continente), entre el usuario y el destino, a la vez que se calcula la distancia y el tiempo promedio entre ambos puntos, usando cualquier dispositivo que tenga conexión a internet (PC, laptop, Smartphone, etc.) y soporte un navegador web 1.2.5 Módulos de la Aplicación El SISTEMA WEB DE UBICACIÓN GEOGRAFICA Y TRAZO DE RUTAS DE TRANSPORTE PARA LLEGAR A LOS COLEGIOS DE QUITO está compuesto de 5 módulos: Módulo de Conexión Módulo de Transacciones Módulo de Búsqueda y Geolocalización Módulo de Administración Módulo de Seguridad Los cuales se detallan a continuación en el siguiente diagrama: 5 Módulo de Conexión Módulo de Seguridad Módulo de Transacciones SISTEMA WEB DE UBICACIÓN GEOGRAFICA Y TRAZO DE RUTAS DE TRANSPORTE PARA LLEGAR A LOS COLEGIOS DE QUITO Módulo de Búsqueda y Geolocalización Módulo de Administración Figura 1. Módulos de la aplicación 1.2.5.1 Módulo I: Módulo de Conexión El SISTEMA WEB DE UBICACIÓN GEOGRAFICA Y TRAZO DE RUTAS DE TRANSPORTE PARA LLEGAR A LOS COLEGIOS DE QUITO, utiliza doble conexión. Conexión a través de JDBC Se toma en cuenta elementos como: JDBC: Conector que sirve para vincular la base de datos con Netbeans y el servidor de aplicaciones 6 Clase Conexión: Para extraer los datos que obtenemos de Postgresql, usando sentencias SQL. Ficheros XML de Persistencia: Para manejar de forma adecuada las conexiones de la aplicación Conexión a través de Servicio Web Ficheros de JavaScript: Para crear funciones especiales que permitan extraer los datos de un servicio web REST, para ello se utiliza el path o url que genera el servicio web y por medio del método GET se extrae la información requerida Ficheros JQuery: Para manejar de forma adecuada las conexiones de la aplicación Figura 2. Módulo de Conexión 1.2.5.2 Modulo II: Módulo de Transacciones Una transacción es un conjunto de órdenes que se ejecutan formando una unidad de trabajo, este módulo se encarga del manejo eficiente de las transacciones, algunas características son: Finalizar las transacciones exitosamente con un commit Una transacción que no termita exitosamente se cancela (rollback). 7 En JDBC por omisión cada sentencia sql, se compromete tan pronto se ejecuta, es decir una conexión funciona por defecto en modo auto-commit Además del JDBC, se hará uso del framework Java Server faces (Primefaces) para gestionar las transacciones de una manera más óptima y sistematizada. Figura 3. Módulo de transacciones 1.2.5.3 Módulo III: Módulo de Búsqueda y Geolocalización En este módulo se describe el funcionamiento del módulo de búsqueda por medio de la utilización de un API de Google Maps que actualmente es muy utilizada en los Sistemas de Información Geográfica (SIG), la cual por medio de coordenadas de latitud y longitud(x, y), nos representará gráficamente la posición del colegio API de Google Maps: Es un conjunto de API que le permiten superponer datos propios sobre un mapa de Google Maps personalizado para crear aplicaciones web y móviles con la potente plataforma de mapas de Google, incluso con imágenes satelitales, Street View, perfiles de elevación, indicaciones sobre cómo llegar, mapas con estilos, demografía, análisis y una amplia base de datos de ubicaciones. Sistema de Información Geográfica (SIG): Es un conjunto de herramientas que integra y relaciona diversos componentes (usuarios, hardware, software, procesos) que 8 permiten la organización, almacenamiento, manipulación, análisis y modelización de grandes cantidades de datos procedentes del mundo real que están vinculados a una referencia espacial, facilitando la incorporación de aspectos sociales-culturales, económicos y ambientales que conducen a la toma de decisiones de una manera más eficaz. Figura 4. Ejemplo de un SIG (http://resources.arcgis.com) 1.2.5.4 Módulo IV: Módulo de Administración En este módulo se pueden crear, modificar y eliminar usuarios para el manejo de la aplicación así como la configuración de sus respectivos permisos. Además de eso el módulo permite a los administradores gestionar el servicio de la aplicación, pudiendo incluso aumentar su escalabilidad. 9 Figura 5. Usuario Administrador 1.2.5.5 Módulo V: Módulo de Seguridad En este módulo se define las políticas de seguridad de la aplicación web, para prevenir el acceso no autorizado ya sea de manera interna o externa, para ello se restringe el acceso a los usuarios a través de un nombre de usuario y contraseña que deberá ser ingresado obligatoriamente, por otro lado el usuario solo posee permisos de lectura, es decir, no es posible alterar la base de datos, desde las páginas de navegación que se muestra al cliente. Para complementar se realizó el siguiente análisis en donde se involucran los tres agentes importantes de la organización como son la parte administrativa, organización, y la parte tecnológica 10 Figura 6. Análisis de Seguridad 11 2. MARCO REFERENCIAL 2.1 Estado del Arte A nivel nacional el desconocimiento sobre las unidades educativas que están a nuestro alrededor y que pueden servir para la educación de nuestros hijos es muy alto, es decir, la población desconoce muchos aspectos fundamentales, incluso la ubicación del colegio en el que quiere o debe poner a su hijo, algunos aspectos que influyen para este desconocimiento son: Tomar la decisión en poco tiempo No pedir consejo a nadie o consultar sólo con determinadas personas Valorar en exceso un solo aspecto de la Educación De entre el personal del colegio, interesarse sólo por los profesores Despreocuparse de las relaciones sociales y de la tecnología Olvidarse de la orientación psicopedagógica y la atención personalizada Fijarse en las dimensiones y el número de instalaciones, pero no en su cuidado Entre otros La regla de oro: “Piensa en las condiciones de tu hijo antes que en las condiciones del colegio” Y aunque el desconocimiento de la tecnología es menor, hay muchas personas que si bien algo conocen sobre los colegios, se desconocen puntos bien importantes como: Conocer cuál es la localización exacta del colegio Saber la distancia y el tiempo aproximado que le va a tomar al estudiante en llegar al colegio, desde la casa Saber las especialidades que dicha institución ofrece Conocer el nombre del rector, rectora o autoridad máxima del colegio Conocer los números telefónicos o el sitio web del colegio, para mayor información que se requiera. 12 Ranking Colegio Promedio 1 Sebastián de Benalcazar 812,9 2 Cardenal Spellman 812,3 3 Técnico Experimental de Aviación Civil 796,5 4 Unidad Educativa Municipal Experimental Eugenio Espejo 793,4 5 Marista 791,1 6 Técnico Salesiano Don Bosco 770 7 San Luis Gonzaga 768,9 8 Unidad Naval César Endara 768,4 9 Cinco de junio 764,2 10 San Gabriel 764,05 11 Juan Pío Montufar 763,04 12 Giovanni Antonio Farina 762,4 13 Colegio Militar Eloy Alfaro 757,3 14 Quitumbe 756,9 15 Sagrado Corazón de Jesús 751 16 Instituto Nacional Mejía 748,7 17 De América M. A. Carrillo de Mata M. 748,2 18 La Salle 743,7 19 Ambato 742,2 20 Santa María Eufrasia 741,6 Tabla 2. Colegios Mejor Puntuados de Quito según SENESCYT (Tomado de EL COMERCIO) 13 Figura 7. Colegio Sebastián de Benalcazar, mejor renqueado según SENESCYT Ante esto la Universidad Central del Ecuador se siente en la obligación de mitigar este desconocimiento y se ha planteado un propósito muy ambicioso que consiste en crear una aplicación Informática, específicamente para ubicar colegios y obtener su información, así como el trazado de rutas para llegar en un tiempo aproximado. El inconveniente actual que tiene la sociedad quiteña, es que al no existir una aplicación que nos despliegue la información apropiada de las instituciones educativas de Quito, hay muchas que no son conocidas, dado que tampoco existe un sistema que trace la ruta de manera apropiada, se hace difícil llegar en un tiempo optimo al lugar que se necesita acceder. Actualmente se cuenta con el servicio de Google Maps que permite ubicar un colegio y trazar la ruta, pero su uso es un tanto engorroso pues no está atomizado hacia la necesidad del cliente, por otro lado el usuario debe señalar o escribir el origen, para que trace la ruta, si el usuario tiene desconocimiento de las calles, de la ciudad y del gran número de avenidas, se le va resultar sumamente complicado, con el proyecto SISTEMA WEB DE UBICACIÓN GEOGRAFICA Y TRAZO DE RUTAS DE TRANSPORTE PARA LLEGAR A LOS COLEGIOS DE QUITO se pretende minimizar todos estos inconvenientes para que la aplicación puede ser usada por cualquier tipo de usuario 14 Figura 8. Problemática Actual Todos estos inconvenientes han impulsado para crear el SISTEMA WEB DE UBICACIÓN GEOGRAFICA Y TRAZO DE RUTAS DE TRANSPORTE PARA LLEGAR A LOS COLEGIOS DE QUITO 2.1.2 Evaluación de alternativas Existen algunas alternativas que se podrían tomar en cuenta: - La alternativa más sencilla es no hacer nada, obviamente el proyecto, no tendría razón, no se va obtener la información que requiere, el trabajo, es repetitivo y rutinario y solamente lo podrán hacer un grupo reducido de usuarios - Colocar varias personas para realizar el trabajo de censo en cada colegio, si tomamos en cuenta, que solo a nivel privado existen más de 800 instituciones, se tendría que contratar un número importante de colaboradores, y habría además que re-contratarlos cada año para ir actualizando nuestra base de conocimiento, sin tomar en cuenta el lado impredecible de las personas, la dependencia hacia los empleados, la parte administrativa también sería muy tediosa, ya que habría que visitar los colegios previamente para obtener los permisos de ingreso por parte de los rectores y demás autoridades, Luego esta información se debería publicar en las redes sociales para llegar masivamente a la mayoría de personas - Otra alternativa, sería que la Universidad lance una campaña muy agresiva de marketing y publicidad, en la prensa, contratar cuñas en la radio y en la televisión, para 15 que llegar al usuario con tal fuerza que todo el mercado de estudiantes venga a nosotros, y capacitarlos para que obtengan todo el conocimiento que la aplicación les proporciona, esta alternativa es demasiado arriesgada y tan costosa que sale del presupuesto 2.1.3 Implicaciones La tecnología y la ciencia son los pilares fundamentales de una cadena evolutiva en la historia del ser humano, contribuyendo al desarrollo global, abarcando todas las áreas que involucran al mismo, principalmente conllevando al crecimiento económico y social. El avance de la ciencia y la tecnología lo forman las Tecnologías de la Información y las Comunicaciones (TIC), el desarrollo de aplicaciones informáticas cada vez mas útiles y sofisticadas; el uso del INTERNET, instrumento que ha marcado una huella imborrable en el desarrollo de la sociedad de hoy. De esta manera se hace necesaria la creación de un sistema informático de georeferenciación que muestre de manera gráfica, la localización de cada colegio, que trace la ruta optima de desplazamiento y sobre todo obtenga la información necesaria y pertinente para los usuarios que día a día necesitan conocer los beneficios que ofrecen las instituciones de la ciudad de Quito. Los beneficios que se puede lograr con esta aplicación son: Mejor toma de decisión al elegir un colegio para estudiar Conocimiento de tiempo y distancia entre origen y destino Optimización del tiempo para recorridos Mejor conocimiento de los colegios de Quito Facilidad de uso para usuarios no informáticos. Una vez analizados todos estos factores, y la viabilidad que supone desarrollar un proyecto de tales características, es necesario elegir una metodología adecuada para la elaboración del proyecto denominado: SISTEMA WEB DE UBICACIÓN GEOGRAFICA Y TRAZO DE RUTAS DE TRANSPORTE PARA LLEGAR A LOS COLEGIOS DE QUITO 16 Selección de la Metodología y Herramientas de Desarrollo Enfoque de desarrollo Características Interacción con el usuario Proceso de desarrollo Usabilidad en aplicaciones móviles Proceso de gestión del proyecto Se centra en las mejores prácticas para la gestión de todo tipo de proyectos Un comienzo organizado y controlado Un desarrollo organizado y controlado, Un final organizado y controlado Revisiones periódicas de los progresos. Flexibilidad en las decisiones. Dirección de control automática “Gestión por Excepción”. Buena comunicación El cliente forma el equipo de desarrollo hasta la entrega del software Releases cortos Diseño Simple Pruebas y Refactorización Programación en parejas Propiedad colectiva Integración continua Estándar de codificación Se ajusta aplicaciones al desarrollo todo tipo de proyectos informáticos Reunión de planificación 9 8 7 Se centra en la gestión de proyectos, en situaciones en las que es difícil planificar el futuro. El software es desarrollado por un equipo de autoorganización en incrementos. Los cambios que deben aplicarse se registran en un backlog. El “Scrum Master” es el encargado de resolver los problemas que impiden que el equipo trabaje eficazmente El usuario interactúa todo el tiempo con el desarrollo del software Equips de Scrum Product backlog Sprint Revision del Sprint 8 8 6 Proceso de configuración del software No especificado 1 Proceso de gestión de procesos No especificado 1 7 No especificado No especificado 17 Se centra en la mentalidad de los desarrolladores guiándolos a través del desarrollo y enfocándose en la calidad del producto final Planificación, pequeñas emisiones, diseño sencillo, pruebas, y refactorización, programación en parejas, propiedad colectiva, integración continua, semana 40-h 8 8 8 Se centra en proyectos más grandes, no específicamente en aplicaciones móviles Scrum Master Reunión de planificación de Sprint Reunión scrum diaria Descripción 6 7 1 1 Peso Descripción Extreme Programing (XP) Peso Descripción Scrum Peso Prince 2 9 8 El cliente permanece fuera del proyecto hasta finalizar cada etapa de desarrollo Elegir un requisito Escribir una prueba Verificar que la prueba falla Escribir la implementación Ejecutar las pruebas automatizadas. Se ajusta perfectamente al diseño de aplicaciones móviles Reuniones de planificación Se actualiza la lista de requisitos tachando el requisito implementado. Asimismo se agregan requisitos que se hayan visto como necesarios durante este ciclo y se agregan requisitos de diseño No especificado 7 8 9 7 8 1 Manejo de errores Aceptación los planes del proyecto se centran en obtener resultados concretos, y no sólo en la planificación de las actividades Satisfacción del programador. Solución de errores de programas 8 9 Algunas prácticas son imposibles de eliminar ya que son necesarias para mantener las otras en su lugar 5 Pequeños y Medianos 8 Menor que 10 9 Iterativo y rápido 8 Estilo de código Limpio y sencillo Entorno tecnológico Requiere rápida retroalimentación Equipos en un mismo lugar y equipos distribuidos Colaborativo y cooperativo Flexibilidad Tamaño de los proyectos Tamaño de equipo Estilo de desarrollo Entorno físico Cultura de negocio Mecanismos de abstracción Curva de aprendizaje Scrum, es una metodología, muy bien recomendada, por su efectividad en la detección de errores Ha sido utilizada por grandes empresas como Google y Yahoo con resultados muy satisfactorios Algunos proyectos por ser muy grandes, se vuelven muy difíciles de manejar 8 9 XP es una de las metodologías con mayor acogida en el campo profesional, ya que está orientada precisamente a crear el software a partir de los errores Continua expandiéndose debido a sus buenos resultados 9 9 8 Es una metodología propia, que tiene un campo de acción especifico en el desarrollo de apps móviles, por lo tanto posee mayor flexibilidad 7 8 Pequeños y medianos 8 8 Menor que 10 9 Iterativo y rápido 8 Iterativo 8 7 No especificado 1 Limpio y sencillo 7 7 No especificado 1 Requiere retroalimentación 7 7 No especificado 1 No especificado 1 7 No especificado 1 Colaborativo 7 Orientado a objetos 7 Orientado a objetos 7 Orientado a objetos 7 Mediana 8 Compleja 6 Mediana 8 Sumatoria Peso Porcentual 13 8 69 % Pequeños, Medianos y grandes Múltiples equipos menores que 10 Sumatoria Porcentual 11 2 56 % Sumatoria Porcentual 14 4 72 % Tabla 3. Cuadro Comparativo de Metodologías De acuerdo a la Tabla 3 la Metodología seleccionada es XP, ya que es la que mejor se adapta a nuestro proyecto, tomando en cuenta que la aplicación a desarrollar, debe superar muchos test y además tomando en cuenta el tiempo de desarrollo con el que contamos, es ideal tener una curva de aprendizaje no muy compleja, esta metodología, tiene un mejor enfoque hacia tendencia móvil 18 REQUERIMIENTOS TÉCNICOS PARA DESARROLLAR LA APLICACIÓN LENGUAJES DE PROGRAMACION Compatibilidad con desarrollo de apps móviles Compilado Peso 8 8 PHP Descripción Es el lenguaje más flexible, potencial y de alto rendimiento de este tipo de lenguajes, la aplicación más famosa diseñada con este lenguaje es la red social de Facebook Compilado Peso 8 Python Descripción Lenguaje de programación interpretado, cuya filosofía hace hincapié en una sintaxis que favorezca un código legible para la creación de apps móviles 9 Multiplataforma 9 7 GNU Public (GPL) Libre, abierta, con copyleft 8 8 N. 8 5 N. 4 Sistema Operativo 6 Licencia N. 6 Ranking (Puesto) 10 Flexibilidad 6 9 - Mayor soporte en línea 5 Multiplatafor ma 8 - Amplio Soporte y Documentaci ón 7 9 Libre (compatible GPL) - Es muy flexible, en entornos web 8 Lenguaje de programación interpretado, en una sola pasada 8 Libre, sin copyleft (similar a BSD original) 9 4 8 Multiplataforma - Expandible y potente - Tiene bibliotecas disponibles - Seguro 8 No es muy compatible con el desarrollo de aplicaciones moviles Interpretado, reflexivo y orientado a objetos 9 N. 1 Peso Multiparadig ma programación orientada a objetos, programación imperativa y programación funcional 8 GNU Public (GPL) Libre, abierta, con copyleft Ruby Descripción Compilado Multiparadigma Imperativo, Orientado a objetos, Procedural y Reflexivo Multiplataform a Peso 8 Orientado a objetos, Imperativo Soporte Paradigma Java, tiene muchas cualidades poderosas que lo hacen prioritario al momento de diseñar una aplicación móvil Tipo de lenguaje Java Descripción 8 8 19 - Flexible - Orientado a objetos - Código más legible - Soporte en línea 8 7 - Flexible - Orientado a objetos - Código más legible - Soporte en línea 7 7 Curva de aprendizaje Conectividad con BD - No existen JDBC para BDs poco comerciales, algunas 8 Documentación Existe mucha documentación en le web 9 Existe mucha documentación en le web 9 Documentació n variada 8 Poca documentación 6 Desarrollo Web Java tiene muchas herramientas para desarrollar proyectos web 10 PHP fue creado para desarrollar proyectos web 10 Orientado al desarrollo web también 9 Pocos framework para desarrollo web 7 8 Todavía no es un lenguaje muy maduro para compararlo con Java 5 Integración con otras plataformas Portabilidad Robustez - Dificultad Moderada Peso Muy Robusto A bajo nivel se limita la portabilidad. Java puede integrarse con gestores de bases de datos, motores de reglas, servidores remotos, gestores NoSql, etc Sumatoria Porcentual 8 10 - Fácil de aprender - Capacidad de conectar con múltiples BDs Robusto 8 Portable 10 Integración limitada y menor que Java 141 88% Sumatoria Porcentual 9 - Dificultad Moderada 8 - Dificultad Moderada 8 8 La conexión can bases de datos es un tanto compleja 6 La conexión can bases de datos es un tanto compleja 6 8 Robusto 9 Portable 7 Integración limitada y menor que Java 7 Integración limitada y menor que Java Sumatoria Porcentual 126 79% Sumatoria Porcentual 130 81% 9 A bajo nivel se limita la portabilidad. 6 7 105 66% Tabla 5. Cuadro comparativo de Lenguajes de Programación De acuerdo a la Tabla 5 el lenguaje de programación Java, tiene muchas cualidades poderosas que lo hacen prioritario al momento de diseñar una aplicación móvil, entre las cualidades que favorecieron a Java, tenemos que el proyecto necesita integrarse a varios componentes distintos como son html, css, xhtml, bootstrap, jquery, javascript, servidor de base de datos, servidor de aplicaciones, cloud de openshift. Necesitamos un Lenguaje robusto que satisfaga toda esta demanda, Java es el mejor rankeado y además de eso, hay muy buena documentación para suplir las falencias que se presenten en el camino 20 IDE DE DESARROLLO Características Editor Controlador de Versiones (CVS) Interfaz Configuración Robustez Eclipse Descripción La compilación es en tiempo real. Tiene pruebas unitarias, integración con Ant, asistentes(wizards) para creación de proyectos, clases test y refactorización 8 Posee un controlador de versiones CVS 9 Es menos intuitivo que los otros IDs de Java, personalizable 7 Interfaz intuitiva y completamente personalizable 8 En proyectos avanzados se vuelve compleja la configuración 8 8 Presenta limitaciones, proyectos complejos 6 En proyectos avanzados se vuelve compleja la configuración Es robusto Programación Distribuida Es muy útil para proyectos que usen programación distribuida 13,25 segundos Compleja Sumatoria Porcentual Posee un editor de texto muy intuitivo con la sintaxis y autocompletado Peso 9 Permite comunicarse con bases de datos externas Peso 10 JCreator Descripción Incluyen la gestión de proyectos, plantillas, resaltado de sintaxis personalizable, vistas de clase, etc. Dispone de un editor de texto con resaltado de sintaxis. Conectividad con BD’s Tiempo de ejecución Curva de aprendizaje Peso 9 No posee CVS 9 8 8 7 83 83% Netbeans Descripción Edición JavaScript, soporte para usar estructuras Spring de soporte web, Peso 10 Posee un editor de texto muy intuitivo con la sintaxis y autocompletado No posee CVS 9 7 Integración con pocas BD’s Es muy limitado para proyectos de programación distribuida 1,74 segundos Mediana Sumatoria Porcentual en 8 6 5 8 8 73 73% 7 Interfaz muy intuitiva y fácil de usar La configuración es menos complejas que en los otros IDE’s Es más robusto y estable que los otros IDE’s La integración MySQL y Postgresql es más óptima y además se puede compartir bibliotecas entre proyectos dependientes. Es muy útil para proyectos que usen programación distribuida 11,20 segundos 10 10 10 10 8 8 Mediana Sumatoria Porcentual 8 90 90% Tabla 6. Cuadro comparativo de IDEs de Desarrollo De acuerdo a la Tabla 6 y tomando en cuenta, los requerimientos de la aplicación, se utilizara Netbeans como IDE prioritario, por su interfaz amigable con el usuario, facilidad para crear archivos exportables *.war. Además se necesitará la creación de un servicio web tipo REST y el mejor IDE para esta tarea, en base a la experiencia adquirida en proyectos anteriores es Netbeans combinado con Glassfish y Wildfly 21 SERVIDOR DE APLICACIONES Glassfish Descripción Diseñado específicamente para trabajar con aplicaciones escritos en Java Diseño Integración con IDE’s Conexión Remota Manejo EJB Manejo Web services Compatibilidad con Openshift Instalación Interfaz Intuitivo Robustez Operaciones por segundo Tiempo medio respuesta Tiempo mex, respuesta 90% tiempo respuesta Soporte Peso Solo se integra con Netbeans Compleja Soporta EJB´s sin ningún problema Permite crear Web services de una manera muy fácil y sencilla No es compatible Es muy fácil de instalar Muy intuitivo, fácil de usar, viene preconfiguradoo con Netbeans Es bastante completo, para aprender en un entorno experimental 6988,9 0,242 1,519 0,6 Peso 9 8 7 TomCat Descripción Es simplemente un servidor HTTP y Java servletcontainer Se integra con cualquier IDE de Java Dificultad Moderada Peso 8 9 7 No soporta EJB´s 10 4 No Soporta Web services 10 4 9 Es compatible, ero solo con características básicas Es muy ligero, no requiere instalación Hay que configurarlo manualmente, con viene integrado con Netbeans 8 Es un tanto limitado para medianos y grandes proyectos 1 9 8 9 9 9 Ya no posee soporte 6 Sumatoria Porcentual 112 80% 6615,3 3 9 8 5 7 0,358 6 3,693 7 0,75 8 Posee soporte limitado 7 Sumatoria Porcentual 92 66% Jboss Wildfly Descripción JBoss es un servidor completo de Java EE servidores de aplicaciones, incluyendo un contenedor EJB Se integra con cualquier IDE de Java Compleja Soporta EJB´s sin ningún problema La Creación de Web Services es un tanto compleja Es muy compatible con Openshift Es muy ligero, no requiere instalación Hay que configurarlo manualmente, con viene integrado con Netbeans Es muy completo, actualmente es mejor que Glassfish y Tomcat, funciona para cualquier entorno 6802,1 0,3 2,606 0,675 Posee mas soporte que los otros servidores de aplicaciones Sumatoria Porcentual Peso 9 9 7 10 8 8 9 8 9 8 7 8 9 8 117 84% Tabla 7. Cuadro comparativo de Servidores de Aplicaciones De acuerdo a la tabla 7 y tomando en cuenta que la aplicación requiere un servidor de completo, robusto y compatible con el manejo de servicios web, usaremos Glassfish, aunque para la replicación usaremos Jboss Wildfly también, porque el servidor espejo, se ejecuta sobre plataforma RedHat es muy útil en este caso, sobre todo para el acceso online. El único servidor que definitivamente no será usado es Tomcat por sus limitaciones en cuanto al manejo de EJB’s para la arquitectura MVC 22 FRAMEWORKS Características MVC Implementaciones Licencia Compatibilidad con Ajax i18n y l10n multilenguaje compatibilidad groovy/scala Curva de aprendizaje Compatibilidad con JS Documentacion Compatibilidad con Bootstrap JSF Descripción Posee un controlador central que se encarga de manejar todas las peticiones del cliente y gestionar su ciclo de vida. El código JSF con el que creamos las vistas es muy parecido al HTML estándar. Peso 10 Se puede usar para arquitectura MVC MyFaces, RichFaces, ICEFaces y Mojarra GPL 8 5 SpringMVC Descripción A pesar de que no impone ningún modelo de programación en particular, este framework se ha vuelto popular, al ser considerado una alternativa, sustituto, e incluso un complemento al modelo EJB Peso 8 Creado específicamente para arquitectura MVC 9 No dispone 1 No dispone 1 10 GPL 10 Apache GPL 10 50% 5 50% 5 100% 10 50% 5 100% 10 50% 5 100% 10 50% 5 50% 5 Facil 9 Mediana 6 Mediana 6 9 Muy básicamente 7 Muy básicamente 7 9 Documentación muy buena 8 JSF permite introducir JavaScript en la página JSF posee mucha documentación en la web Se puede integrar con bootstrap para realizar aplicaciones responsivas 10 Al no ser compatible, las vistas quedan atadas al dispositivo en el cual se renderizan Mediana 9 Configuración Peso Peso 7 7 Facil Compatibilidad con apps móviles Struts Descripción Es por el momento el más difundido de los frameworks open source en el ámbito java, consta de un servlet que actúa de controlador central que recibe todas las peticiones de los clientes Se puede usar para arquitectura MVC Es compatible, existen muchas aplicaciones en la actualidad Sumatoria Porcentual 9 110 85% 8 Se puede integrar con bootstrap 4 7 Es compatible aunque no es natural al mapeo de los datos ingresados Sumatoria Porcentual Posee documentación variada 6 81 62% 8 Compleja, ya que por cada servicio que se tenga se necesita un archivo XML de configuración. El contenedor de Spring no es ligero, no es recomendable su uso en aplicaciones móviles. Sumatoria Porcentual 5 4 86 66% Tabla 8. Cuadro Comparativo de Frameworks De acuerdo a la Tabla 8 el Framework seleccionado es JSF, ya que la aplicación posee abundante código JavaScript y JQuery, Además vamos interactuar con el API de Google Maps y con Twitter Bootstrap 23 SISTEMA GESTOR DE BASE DE DATOS Diseño Manejo de bases no relacionales Es un sistema de gestión de bases de datos muy robusto y funciona de una manera muy optima al combinarlo con Java No dispone PgAdmin Administrador 10 5 9 250 MB de espacio en disco duro Recursos 250 MB de RAM Es un sistema de gestión de bases de datos relacional, multihilo y multiusuario con más de seis millones de instalaciones. No dispone Mysqladmin 10 512 RAM 1 GB Memoria Virtual 1 GB disco duro Arquitectura del sistema 32/64 bits 9 9 GPL y Propietaria 9 8 Árbol R-/R+ (Tablas MyISAM solamente), Hash (Tablas HEAP solamente) 8 Hash, reversa y Mapa de bits 7 9 Cursor, Trigger, Funciones, Procedimiento, Rutina externa 9 10 Atomicidad 9 10 Consistencia 9 9 Aislamiento 9 10 Durabilidad, Tabla temporal y Vista materializada 10 9 Árbol R-/R+, Hash, Expresión, Parcial Objetos soportados nativamente Dominio, Cursor, Trigger, Funciones, Procedimiento, Rutina externa 9 Cursor, Trigger, Funciones, Procedimiento, Rutina externa Atomicidad 10 Atomicidad 10 Consistencia 9 Aislamiento 10 Durabilidad, Tabla temporal 9 Rango Hash Compuesto (Rango+Hash) Lista 9 Rango Hash Compuesto (Rango+Hash) Lista Rango Particionamiento Lista 9 GPL y Propietaria Manejo De Índices Durabilidad, Tabla temporal 7 7 Licencia BSD Aislamiento 9 Permite almacenar documentos completos dentro del tipo de datos xml para realizar operaciones y búsquedas de manera jerárquica e integrarlo con búsquedas relacionales DB2 Express-C (Licencia gratuita para proyectos open source) 8 8 Licencia Características fundamentales nativas 5 Es un motor de base de datos relacional que integra XML de manera nativa 256 MB RAM 2 GB de Disco Duro Arquitectura del sistema 32/64 bits Arquitectura del sistema 32/64 bits Consistencia 9 Descripción Peso Descripción DB2 Express Peso Descripción MySQL Peso Postgresql Soporte Soporte empresarial disponible. 9 Soporte empresarial disponible. 9 El Soporte es casi nulo para la versión gratuita 3 Sistema Operativo Multiplataforma. 9 Multiplataforma. 9 Multiplataforma. 9 24 Compatibilidad con tecnologías web Ampliamente popular - Ideal para tecnologías Web. Potencia Su SQL es estándar y fácil de aprender y muy potente Instalación y Configuración Fácil de Instalar y configurar 9 SOA Dispone de Arquitectura SOA 8 Facilidad de instalar, la configuración es un poco complejan. Dispone de Arquitectura SOA Documentación Existe gran cantidad de documentación, aunque sin experticia, configurar llega a ser un caos. 9 Un gran porcentaje de las utilidades de MySQL no están documentadas. Interfaz Intuitivo Posee una interface muy sencilla y fácil de entender 9 No es intuitivo, como otros programas Seguridad Velocidad al crear y ejecutar consultas Tipos de Datos Peso Es fácil de vulnerar sin protección adecuada. 9 Ampliamente popular - Ideal para tecnologías Web. 9 9 Su SQL, es muy completo y potente 9 6 Muy rápido Es fácil de vulnerar sin protección adecuada. Reducida cantidad de tipos de datos. Sumatoria Porcentual Facil de instalar y configurar 8 Dispone de Arquitectura SOA 9 6 6 7 200 87% 8 Amplia cantidad de tipos de datos Sumatoria Porcentual 8 195 85% 7 El SQL de DB2 es muy potente. 9 Muy rápido 8 Tiene más orientación hacia la parte administrativa de la empresa 9 8 La mayoría de documentación es para la versión de pago, los recursos son limitados al usar DB2 gratuito 5 No es intuitivo, como otros programas 6 Es fácil de vulnerar sin protección adecuada. 6 Lentitud crear y ejecutar consultas. Reducida cantidad de tipos de datos, en la versión gratuita Sumatoria Porcentual 5 7 167 73% Tabla 9. Cuadro comparativo de Sistemas Gestores de Base de Datos De acuerdo a la Tabla 9 el Sistema Gestor de base de datos seleccionado es Postgresql, ya que es una gestor muy robusto, fácil de usar, y ocupa pocos recursos, para disminuir el peso de la aplicación en el servidor, para administrar la base de datos se usará pgadmin Ya se han realizado proyectos anteriores, por lo que se dispone de más experiencia en cuento a la configuración del SGBD, la base local se ejecutara en Windows en el puerto 5432 y la base remota en RedHat en el puerto 5433, dado que Postgresql es compatible con ambos sistemas operativos no hay ningún problema relevante en su configuración Además se necesitará software auxiliar como: 25 Framework responsivo Bootstrap Twitter: Es un framework o conjunto de herramientas de Código abierto para diseño de sitios y aplicaciones web de índole responsivo JQuery: Es una biblioteca de JavaScript, creada inicialmente por John Resig, que permite simplificar la manera de interactuar con los documentos HTML, manipular el árbol DOM, manejar eventos, desarrollar animaciones y agregar interacción con la técnica AJAX a páginas web Google Maps: : Es un servidor de aplicaciones de mapas en la web que pertenece a Alphabet Inc. Ofrece imágenes de mapas desplazables, así como fotografías por satélite del mundo e incluso la ruta entre diferentes ubicaciones o imágenes a pie de calle con Google Street View Arc Gis: es un grupo de componentes de software que permiten trabajar con datos en forma de arreglos con la finalidad de representar mapas, para luego ser desplegados en la pantalla Plataforma OpenShift: es una plataforma de aplicaciones de nube que automatiza el hosting, configuración, implementación y administración de pilas de aplicaciones en un entorno de nube flexible Git: Es un software de control de versiones pensado en la eficiencia y la confiabilidad del mantenimiento de versiones de aplicaciones cuando éstas tienen un gran número de archivos de código fuente RubyGem: Es un gestor de paquetes para el lenguaje de programación Ruby que proporciona un formato estándar y autocontenido (llamado gem) para poder distribuir programas o librerías en Ruby 26 3. METODOLOGÍA DE DESARROLLO Luego de un exhaustivo análisis y de acuerdo a la Tabla 3 del capítulo anterior se llegó a la conclusión que la mejor opción en cuanto a metodologías de desarrollo de software compatibles con las características del proyecto es: Xtreme Programming (de ahora en adelante XP) o Programación Extrema, frente a otras metodologías como SCRUM o Prince2 que también son muy buenas, pero en otro tipo de proyectos informáticos. La metodología XP o Programación Extrema es la más destacada en cuanto al manejo de procesos ágiles, pues, brinda un mayor control y visibilidad del proyecto a corto, mediano y largo plazo, esta metodología es sumamente útil porque aplica mayor énfasis en la adaptabilidad del proyecto antes que en su pre-visualización. Tomando en cuenta que en el proyecto SISTEMA WEB DE UBICACIÓN GEOGRAFICA Y TRAZO DE RUTAS DE TRANSPORTE PARA LLEGAR A LOS COLEGIOS DE QUITO, es altamente cambiante pues integra varios paradigmas de programación, las modificaciones en el desarrollo son prácticamente inevitables, por lo tanto es de vital importancia aplicar XP para agilizar su desarrollo y minimizar su complejidad Se puede considerar la programación extrema como la adopción de las mejores metodologías de desarrollo de acuerdo a lo que se pretende llevar a cabo con el proyecto, y aplicarlo de manera dinámica durante el ciclo de vida del software. XP también incorpora al usuario como parte activa durante toda el ciclo de desarrollo del software, razón por la cual, se estará interactuando de manera continua con los clientes, cada vez que se cumpla un hito en el desarrollo del sistema, obviamente cada avance debe contar con la aprobación del cliente y si se genera algún tipo de error o alguna duda se tomarán accione como: Revisión del código Corrección de errores Refactorización del Código A continuación se mencionará los Valores más importantes de la metodología XP y su relación con el proyecto que se está realizando 27 3.1 Valores de la Metodología XP Valor Simplicidad Descripción Valor en la aplicación web Se simplifica el diseño para La app se ha creado en base al agilizar el desarrollo y patrón de diseño MVC, facilitar el mantenimiento. precisamente pensando en su fácil mantenimiento y en la agilidad del desarrollo Comunicación Retroalimentación Debe comentarse sólo Se ha comentado la definición aquello que no va a variar, de cada método, tanto en por ejemplo el objetivo de clases java como en funciones una clase o la funcionalidad JavaScript de acuerdo a su de un método. importancia y prioridad Al realizarse ciclos muy Constantemente se han venido cortos tras los cuales se realizando pruebas unitarias y muestran resultados, se de integración para mejorar el minimiza el tener que rendimiento de la aplicación rehacer partes que no cumplen con los requisitos Siempre diseñar y Se ha tratado de optimizar el programar para hoy y no tiempo de la mejor forma para mañana posible para programar la aplicación en el menor tiempo, Coraje pero con la mayor calidad posible, es decir, programar con eficiencia, eficacia y efectividad Una de las mayores cualidades Respeto Los miembros del equipo que se resaltan en el desarrollo respetan el trabajo del resto de este proyecto integrador es no haciendo precisamente el respeto por el menos a otros trabajo al momento de programar Tabla 10. Valores de la Metodología XP 28 3.2 Fases de la Metodología 3.2.1 Fase 1: Estudio de Factibilidad Esta fase tendrá como objetivo relevar y analizar en líneas generales los requerimientos y características globales de la aplicación a desarrollar, a fin de establecer el alcance del sistema y el esfuerzo necesario para su desarrollo, de forma que se pueda conformar una propuesta lo más precisa posible. En los casos en que sea factible, es conveniente mencionar la descripción de la aplicación y los requerimientos necesarios para su desarrollo. Descripción de la aplicación: La aplicación web, será gestionada a través de un servidor de aplicaciones (Glassfish en el servidor local y Wildfly en el servidor remoto), haciendo uso de la Plataforma online como servicio (PaaS) OpenShift RedHat y se podrá acceder al aplicativo escribiendo su Localizador Único de Recursos (URL) mediante un navegador web (Internet Explorer, Mozilla Firefox, Google Chrome, etc.) Una vez ingresado en el portal web de la aplicación se requiere usuario y contraseña para la autenticación, solamente por fines académicos dicho usuario y contraseña, mientras la aplicación tenga un uso no comercial, serán admin Posteriormente se desplegará una ventana dividida en dos partes. En la parte superior estarán dos botones de color azul para Trazar Ruta y Regresar y en la segunda parte estará el mapa con unos marcadores de color rojo, que al pulsar sobre ellos, proporcionaran la información de cada colegio, Luego al presionar el botón Trazar Ruta, se desplegará un combo jsf para elegir el colegio al que se desea ir, también se puede escribir el nombre del colegio sino se desea seleccionar de la lista, luego al presionar el botón IR, se trazará la ruta desde la ubicación en la que se encuentra el usuario hasta la ubicación del colegio seleccionado Finalmente al pulsar sobre el icono del colegio, se mostrará la información relevante, así como la distancia en kilómetros y el tiempo aproximado en horas y minutos que le tomará al usuario hasta llegar al colegio, usando algún vehículo 29 Requerimientos Técnicos para desarrollar la aplicación Herramienta Descripción JDK Es un kit de herramientas de desarrollo para la creación de programas en Java Netbeans Es un entorno de desarrollo integrado libre para aplicaciones de Java Glassfish Servidor de Aplicaciones en la máquina local Postgresql Sistema gestor de base de datos Pgadmin Administrador de la base de datos Wildfly Servidor de aplicaciones remoto OpenShift Plataforma como Servicio JSF Frimework Java Server faces Bootstrap Twitter Frameworj Responsivo JQuery Bibliotecas de JavaScript API Google Maps Elementos de Google Maps para visualizar puntos de referencia Tabla 11. Herramientas para desarrollo Además se necesitará software auxiliar como: Arc Gis Es un grupo de componentes de software que permiten trabajar con datos en forma de arreglos con la finalidad de representar mapas Git Software de control de versiones RubyGem Gestor de paquetes para Ruby Tabla 12. Software Auxiliar Hardware Computadora con procesador: Core i7 2.50 GHz, Memoria RAM 2GB, Disco Duro de 50 GB. Conexión permanente a internet 30 Casos de Uso Figura 9. Casos de uso A continuación detallaremos los actores principales y los casos de uso que tenemos en la aplicación Actores Usuario Administrador: Es la persona que gestiona la aplicación, si se necesita, mantenimiento, refactorización del código, configuración de los módulos, actualización o algún tipo de cambio adicional; este actor puede realizar tareas especificas Usuario: Es el cliente o usuario final, es decir la persona que únicamente usara la aplicación como producto final una vez terminado el proyecto, desde la capa del cliente Casos de Uso Modificar Usuarios y contraseñas: Si la aplicación necesita un mayor nivel de formalidad o seguridad para la puesta en producción es necesario mejorar el ingreso y gestión de usuarios 31 Figura 10. Modificar usuario y contraseña Trazar Ruta: Consiste en dibujar la ruta entre origen y destino usando la aplicación Lo primero que se necesita es conocer la posición actual del usuario, para ello se necesita conocer la latitud y longuitud del origen. Google Maps, utiliza dos objetos propios que funcionen de manera similar a un GPS llamados coords.latitude y coords.longitude para almacenar esta información. Para obtener la latitud y longuitud del colegio destino, solo lo tomaremos de la base de datos, cuando el usuario seleccione el nombre del colegio que desea visitar. De esta manera ya tenemos los datos correspondientes de origen y destino Para trazar la ruta, se utilizaran dos objetos propios del API de Google Maps: DirectionService: Calcula la ruta, siempre y cuando sea posible, entre el origen y el destino DirectionRenderer: Muestra la trayectoria de la ruta en el mapa, tomando como entrada la información que le provee el DirectionService 32 Estos dos objetos ya viene pre configurados, solo hay que instanciarlos y usar sus atributos Figura 11. Trazar Ruta Testear métodos: Consiste en probar regularmente los métodos para medir su eficiencia, velocidad, rendimiento, utilidad; los métodos siempre son susceptibles de mejora o desuso dependiendo la evolución de la aplicación, estos pueden ser refactorizados, actualizados, eliminados o a su vez se pueden crear nuevos métodos para reemplazar a métodos obsoletos Figura 12. Testear Métodos Ingresar al Portal: Consiste netamente en colocar en la barra del navegador web la dirección URL (Localizador Único de Recursos) de la aplicación, en este caso: http://database-geolocalizacion.rhcloud.com/EjemploWildfly , luego en la pantalla de ingreso, poner su usuario y contraseña (Por fines netamente académico ambos serán admin) y finalmente visualizar la primera página Figura 13. Ingresar al Portal 33 Mostrar lista de colegios en el Mapa: Despliega la lista de todos los colegios de la capital, y permite seleccionar cualquiera de ellos Figura 14. Mostrar lista de colegios Procesos PASO 1 1.1 2 ACTIVIDAD Ingresar al portal de la aplicación Iniciar Sesión Registro 2.1 Ingresar Datos Personales 2.2 Crear Usuario 3 Enviar Registro 4 Ingresar usuario y contraseña 5 Mostrar lista de colegios en el mapa 6 Seleccionar colegios 7 Trazar ruta para llegar al colegio seleccionado 8 Mostrar información relevante del colegio Tabla 13. Lista de Procedimientos para manejo y uso de la aplicación web 34 35 Figura 15. Diagrama de Secuencia Diagrama de Secuencia 3.2.2 Fase 2: Análisis y Diseño Global Se analizará a bajo nivel cada requerimiento documentado en la etapa anterior y se realizará un diseño global de los principales circuitos del sistema. El resultado de esta etapa será el “Análisis de Requerimientos”, con el cual se confeccionará la “Propuesta Definitiva”. Descripción Lógica de los procesos del Sistema Figura 16. Diagrama Lógico de los Procesos 36 3.2.3 Fase 3: Desarrollo Se compone de varias etapas bien diferenciadas y repetitivas por cada submódulo del sistema (llamadas iteraciones): a) Diseño Detallado: Se elaborarán las Especificaciones de Diseño de cada programa del sistema, se realizará un análisis de las herramientas, para elegir las más adecuadas y acordes para nuestro sistema, también se realizará un análisis de los lenguajes de programación, para elegir el programa más robusto y que cumpla con los requerimientos del proyecto b) Desarrollo: Se codificará cada uno de los programas especificados en la etapa anterior usando la plataforma Java c) Control de Calidad: se realizarán las pruebas unitarias y de integración necesarias para que la calidad de los programas desarrollados sea la más óptima posible. Esta etapa incluye el ajuste de los módulos con calidad inaceptable. d) Implementación: se lleva a cabo la integración de los programas, la carga inicial y la confección del archivo ejecutable o *.jar que será colocado en el servidor OpenShift para que el cliente pueda acceder y usar la aplicación en tiempo real,. También se procederá a cargar un manual de usuario en caso de que se requiera algún tipo de capacitación relativa al manejo del software. 3.2.4 Fase 4: Puesta en Producción Esta etapa tiene lugar cuando ya se terminó de desarrollar todos los módulos del sistema. Su función es realizar los ajustes requeridos para que el mismo pueda llevarse a producción, realizar la carga inicial y migración definitiva de los datos, parametrizar el sistema, e implementarlo en el servidor adecuado, de ser necesario, comprar un dominio y darle un nombre formal al URL que direcciona a la aplicación. Para la fase final del proyecto se procederá a entregar el proyecto con los respectivos manuales 37 Manual de Ejecución de Código Compilado Manual de Ejecución de Código Fuente Manual de Instalación en Entorno PC Manual de Instalación en máquina virtual Manual de Instalación de Herramientas Guía Rápida de Usuario (Ver Anexo F, en Sección Anexos) 3.3. Plataforma Tecnológica 3.3.1 Arquitectura de la Aplicación Web La arquitectura de la aplicación Web, se basará en un patrón de diseño bastante bien conocido llamado MVC (Modelo – Vista - Controlador) y varias capas. El modelo–vista–controlador (MVC) es un patrón de arquitectura de software que separa los datos y la lógica de negocio de una aplicación de la interfaz de usuario y el módulo encargado de gestionar los eventos y las comunicaciones. Para ello MVC propone la construcción de tres componentes distintos que son el modelo, la vista y el controlador, es decir, por un lado define componentes para la representación de la información, y por otro lado para la interacción del usuario. Este patrón de arquitectura de software se basa en las ideas de reutilización de código y la separación de conceptos, características que buscan facilitar la tarea de desarrollo de aplicaciones y su posterior mantenimiento Rápidamente el patrón MVC se define de la siguiente manera Modelo: Contiene el núcleo de la funcionalidad (dominio) de la aplicación, encapsula el estado de la aplicación, es independiente del controlador y la Vista Vista: Es la presentación del Modelo, puede acceder al modelo pero nunca cambiar su estado, puede ser notificada cuando hay un cambio de estado en el Modelo Controlador: Reacciona a la petición del cliente, ejecutando la acción adecuada y creando el modelo pertinente. 38 Figura 17. Diagrama de la arquitectura MVC 39 38 Figura 18. Arquitectura de la Aplicación Web se muestra en la siguiente aplicación La aplicación contiene varios componentes integrados, la arquitectura y el diseño total de la aplicación Como se mencionó anteriormente el patrón de diseño MVC, permite separar de manera eficiente el diseño de la lógica de negocios Contraejemplo: Se tomará el caso de algo tan sencillo como son el HTML y las CSS. Al principio, en el HTML se mezclaba tanto el contenido como la presentación. Es decir, en el propio HTML tenemos etiquetas como "font" que sirven para definir las características de una fuente, o atributos como "bgcolor" que definen el color de un fondo. El resultado es que tanto el contenido como la presentación estaban juntos y si algún día pretendíamos cambiar la forma con la que se mostraba una página, estábamos obligados a cambiar cada uno de los archivos HTML que componen una web, tocando todas y cada una de las etiquetas que hay en el documento. Con el tiempo se observó que eso no era práctico y se creó el lenguaje CSS, en el que se separó la responsabilidad de aplicar el formato de una web En el entorno Netbeans, la aplicación tiene la siguiente estructura A continuación analizaremos las capas de la arquitectura de la aplicación Capa de Información: Se compone de la base de datos y del SGBD que permite centralizar datos, administrarlos en forma eficiente y proveer acceso a los datos almacenados con programas de aplicación. 39 40 Figura 19. Diagrama de Clases de la aplicación Capa de Acceso a Datos: Conecta la Capa de Negocios con la Capa de Información, generalmente se conecta con un JDBC y se usa clases Java (Clase Conexión y Clase Colegio) en un paquete llamado conexión, y aunque se puede acceder directamente a los datos, lo recomendable es usar un framework de persistencia. Como Hibernate o el propio JPA... En esta capa se encuentran distribuidas las clases de la siguiente forma: PAQUETE CONEXIÓN Clase Conexión Clase Colegio Para una mejor descripción y detalle de las clases, observar el Anexo D (Sección Anexos) Capa de Negocio: Presenta el modelo de la aplicación, es decir, las reglas y la lógica de negocios representados en los componentes EJB (Enterprise Java Bean) que están dentro de un contenedor EJB En la arquitectura de Netbeans la capa de Negocio se encuentra dentro del paquete controlador y la lógica del negocio en sí, se encapsula en la clase ColegioController a través de notaciones EJB En esta capa se encuentra la clase que permite controlar los métodos del objeto Colegio PAQUETE CONTROLADOR Clase ColegioController Para una mejor descripción y detalle de las clases, observar el Anexo D (Sección Anexos) Capa de Presentación: Comprende todos los componentes del Contenedor Web, como Servlets, Páginas JSF, el API incrustado de Google Maps y los diferentes scripts de JQuery y Bootstrap que estamos integrando. 41 Capa del Cliente Web: Es la presentación de la interfaz gráfica de la aplicación, al usuario a través de un navegador web. A continuación se detallan las paginas jsf que forma la vista de la aplicación index.xhtml mapa.xhtml avance2.xhtml template.xhtml index.xhtml •El usuario ingresa a la aplicación, usando su nombre de usuario y su contraseña mapa.xhtml •El usuario, observa el mapa y elije el colegio al cual quiere dirigirse avance2.xhtml template.xhtml • Esta pagina muestra la ruta entre el origen y el destino, además muestra la distancia y el tiempo aproximado hasta llegar al colegio Esta página es una plantilla que contiene los elementos mas importantes que se van a mostrar, es muy útil para reutilización del código y mantenimiento de la vista de la aplicación Figura 20. Diagrama de las páginas de la aplicación Además, se hará uso de archivos JavaScript para agregar funcionalidad cuando el usuario genere algún evento, por ejemplo: pulsar algún botón para establecer conexión con el servicio web para acceso a los datos 42 Clases de tipo JavaScript Son pseudoclases ya que propiamente no son archivos que van a ser compilados por la Java Virtual Machine (JVM), sino mas bien, es código fuente de JavaScript estructurado al estilo de clase Java, es decir con métodos y funciones pero propios de JavaScript Estos ficheros están organizados en directorios, que a su vez en la idea conceptual, se podría decir que son paquetes Colegios.js PAQUETE MAPAS Mapa.js Ubicación.js Para una mejor descripción y detalle de las clases, observar el Anexo D (Sección Anexos) WEB SERVICE REST REST deriva de "REpresentational State Transfer", que traducido vendría a ser “transferencia de representación de estado”, un servicio REST no tiene estado (stateless), lo que quiere decir que, entre dos llamadas cualesquiera, el servicio pierde todos sus datos. Esto es, que no se puede llamar a un servicio REST y pasarle unos datos (p. ej. un usuario y una contraseña) y esperar que “nos recuerde” en la siguiente petición. De ahí el nombre: el estado lo mantiene el cliente y por lo tanto es el cliente quien debe pasar el estado en cada llamada. REST es un estilo de arquitectura para desarrollar servicios. Los servicios web que siguen este estilo deben cumplir con las siguientes premisas: Cliente/Servidor: Como los servicios web son cliente servidor y definen un interface de comunicación entre ambos separando completamente las responsabilidades entre ambas partes. 43 Figura 21. Esquema Cliente – Servidor (http://www.arquitecturajava.com/servicios-rest/) Sin estado: Son servicios web que no mantienen estado asociado al cliente .Cada petición que se realiza a ellos es completamente independiente de la siguiente. Todas las llamadas al mismo servicio serán idénticas. Figura 22. Servicio Web sin estado (http://www.arquitecturajava.com/servicios-rest/) Cache: El contenido de los servicios web REST se puede cachear de tal forma que una vez realizada la primera petición al servicio el resto puedan apoyarse en la cache si fuera necesario. 44 Figura 23. Caché (http://www.arquitecturajava.com/servicios-rest/) Servicios Uniformes: Todos lo servicios REST compartirán una forma de invocación y métodos uniforme utilizando los métodos GET, POST, PUT, DELETE Figura 24. Servicios uniformes (http://www.arquitecturajava.com/servicios-rest/) Arquitectura en Capas: Todos los servicios REST están orientados hacia la escalabilidad y un cliente REST no será capaz de distinguir entre si esta realizando una petición directamente al servidor, o se lo esta devolviendo un sistema de caches intermedio o por ejemplo existe un balanceador que se encarga de redirigirlo a otro servidor. 45 Figura 25. Arquitectura en Capas (http://www.arquitecturajava.com/servicios-rest/) Para ver el correcto funcionamiento del servicio web se procederá ha realizar algunos test usando el IDE Netbeans Pruebas del Servicio Web REST Para verificar el buen funcionamiento del servicio web de la aplicación, se procederá a realizar un importante paso dentro de la metodología XP, que es la parte correspondiente a Pruebas. El Web Service fue creado usando el entorno Netbeans, el test lo realizaremos con este mismo IDE, aunque tambien se puede utilizar software específicos de Test como SoapUI 46 Figura 26. Pantalla inicial del test del servicio web Figura 27. Lista de Colegios en formato XML 47 Figura 28. Búsqueda de Colegio por Id Es importante mencionar que en un servicio web REST, los datos se pueden transportar tanto en formato JSON como en formato XML, para diferenciar ambos formatos, puede observar el Anexo E que se muestra en la sección de Anexos En el proyecto, el servicio web, está contenido dentro de un archivo exportable llamado WebServiceWSJSP.war en el directorio C:/database/deployments/, si por alguna razón el WebService no permite el acceso a los datos, se recomienda reiniciar el servidor de aplicaciones para solucionar este inconveniente Descripción de los marcadores Como ya se mencionó anteriormente, en la aplicación se muestran diferentes marcadores (algunos marcadores son propios de google maps y otros son personalizados por el autor) para diferenciar tanto al usuario como al colegio destino usando sus respectivas coordenadas 48 Marcadores Imagen Nombre Descripción Este marcador aparece en la pantalla inicial de la aplicación, cada marcador representa a un colegio de la capital Colegio ecuatoriana Este marcador aparece únicamente cuando se ha seleccionado el destino al Colegio que se desea llegar Este marcador representa al usuario, aparece en las coordenadas en donde Usuario se encuentre el usuario, cuando desea trazar una determinada ruta Tabla 29. Marcadores de la aplicación 49 4. MARCO ADMINISTRATIVO 4.1 Recursos 4.1.1 Técnicos – Tecnológicos Para la realización del proyecto integrador denominado: SISTEMA WEB DE UBICACIÓN GEOGRAFICA Y TRAZO DE RUTAS DE TRANSPORTE PARA LLEGAR A LOS COLEGIOS DE QUITO y el producto final se dispuso de herramientas tecnológicas actualizadas, las cuales son: Hardware: Computadora Portátil Sony Vaio con procesador: Core i5-2450M 2.50 GHz, Memoria RAM instalada 10,00GB, Disco Duro de 500 GB. Disco duro externo de 1 TB para almacenamiento de respaldo (backup) Acceso a Internet permanente. Software para el desarrollo: En la siguiente tabla a modo de resumen listaremos las herramientas de desarrollo de software que se han venido mencionando en capítulos anteriores Herramienta Descripción JDK Es un kit de herramientas de desarrollo para la creación de programas en Java Netbeans Es un entorno de desarrollo integrado libre para aplicaciones de Java Glassfish Servidor de Aplicaciones en la máquina local Postgresql Sistema gestor de base de datos Pgadmin Administrador de la base de datos Wildfly Servidor de aplicaciones remoto OpenShift Plataforma como Servicio Git Software de control de versiones RubyGem Gestor de paquetes para Ruby 51 JSF Frimework Java Server faces Bootstrap Frameworj Responsivo JQuery Bibliotecas de JavaScript API Google Maps Elementos de Google Maps para visualizar puntos de referencia Tabla 15. Resumen herramientas de desarrollo 4.1.2 Humano Sergio Granizo, Egresado de la carrera de Ingeniería Informática de la Universidad Central del Ecuador, se encargará de programar los módulos de la aplicación en Java y de realizar las respectivas pruebas unitarias y de integración para su óptimo funcionamiento Msc. Mauro Rosas, Tutor del proyecto, se encargará de revisar la documentación del proyecto, así como de verificar el óptimo funcionamiento del sistema durante todas sus fases, desde su diseño hasta la puesta en marcha. 52 5. CONCLUSIONES Una aplicación basada en un sistema de georeferenciación orientada específicamente a la búsqueda de colegios y trazo de rutas es muy útil, porque muchos ciudadanos desconocen cuantas Instituciones educativas (Colegios e Institutos) existen en las inmediaciones de su barrio y/o parroquia; Esto conlleva a tomar malas decisiones y es una desventaja para padres y estudiantes Con el avance del desarrollo del software y la mejora de las metodologías ágiles ahora es posible construir aplicaciones de gran calidad, robustez y ponerlas en un hosting estable y seguro como OpenShift RedHat, con una mínima inversión económica, sin el riesgo que nos pueda imponer el tiempo, ya que esta Plataforma como servicio no caduca y está al alcance del alumnado universitario que desee desarrollar este tipo de proyectos El avance de la tecnología demanda que todas las aplicaciones sean de tipo responsivo, la aplicación desarrollada cumple plenamente con este requerimiento por lo tanto se adapta fácilmente a cualquier tipo de tamaño o resolución de pantalla de los dispositivos sin perder su calidad visual y maniobrabilidad A través del Middleware, se logró desarrollar una aplicación de tipo hibrido que relacionó lo mejor de cada componente (Google Maps, Java, JavaScript, etc.) para producir un producto útil y fácil de utilizar, tomando en cuenta un principio básico de las aplicaciones modernas, ya que tienen que ser orientadas a servicios, razón por la cual se ancló la aplicación a un servicio web de tipo REST para que los datos sean tratados de la mejor forma posible. El desarrollo de la tecnología hace fundamental el uso del internet como herramienta esencial para la solución de problemas cotidianos que necesariamente implica la construcción de aplicaciones más allá del ámbito local, impulsando aun más los sistemas en tiempo real y todo lo referente al paradigma de la web 3.0 liii Este tipo de aplicaciones permiten cohesionar de mejor manera la educación con la tecnología y despertar el interés de todos los agentes implicados(Empresa Privada, Población, Ministerios y Universidades) para mejorar el proceso de acceso a la información, selección y capacitación a la comunidad Además del campo académico, la Geolocalización puede desempeñar un rol fundamental en otras áreas como: Control de Transito Vehicular, Localización de puntos estratégicos en caso de emergencia, Definición de Zonas de Vulnerabilidad ya sea por la pobreza o por el nivel de delincuencia, Posicionamiento para determinadas actividades comerciales de las empresas, entre otras cosas El proyecto Sistema localizador de Colegios y Ruteo (SILCOR) esta destinado a persistir en el tiempo, ya que su arquitectura de desarrollo está basado en el patrón de diseño MVC(Modelo Vista Controlador), el cual simplifica y facilita considerablemente su mantenimiento, migración y sostenimiento Las aplicaciones diseñadas en capas son mas fáciles de proteger porque tienen separadas las vistas(Capa del Cliente) de tal manera que el usuario desconoce por completo, la lógica de negocio(Capa de Negocio) y la base de datos(Capa de Persistencia) liv 6. RECOMENDACIONES Actualmente se usa un host de la plataforma OpenShift RedHat que nos proporciona un dominio un tanto extenso y difícil de entender o memorizar, se recomienda contratar un host pagado para tener un dominio más apropiado en caso de que la aplicación se vuelva comercializable o a su vez sea acogida por alguna empresa privada o alguna entidad del gobierno como el Ministerio de Educación La aplicación actualmente posee un gran número de elementos integrados, se recomienda analizar más profundamente todas las herramientas actuales que existen de desarrollo, así como las nuevas tendencias y los paradigmas de programación para que la aplicación sea un poco más ligera, entendible, portable y se vaya innovando para que pueda perdurar en el tiempo Se recomienda continuar con el desarrollo de la aplicación tomando en cuenta la funcionalidad de la aplicación para que el sistema pueda mejorar y convertirse en un sistema experto que incluso pueda tomar decisiones como: ¿Qué tipo de colegio necesita el estudiante?, ¿Qué tipo de Jornada es la más apta para el estudiante?, etc. utilizando técnicas de Minería de Datos y Business Intelligence. Se recomienda ampliar el tipo de Instituciones Educativas que pueden ser localizadas en la aplicación, se puede extender la base de conocimientos, para que el Sistema localice Universidades, Centros de Capacitación Particulares, Infocentros, Escuelas, Escuelas para niños especiales, etc. Se recomienda aumentar el alcance, pues actualmente solo se toma en cuenta las instituciones educativas que pertenecen a la ciudad de Quito, pero se podría incluir mas espacio geográfico, incluso abarcar toda la región continental ecuatoriana lv Se recomienda integrar el API de Google Maps con la banco de datos de la Secretaría Nacional de Transporte del Ecuador para unificar las bases de conocimiento y poder agregar mayor funcionalidad a la aplicación como Rutas de los buses o de recorridos que dispone cada colegio Se recomienda incorporar elementos multimedia en la aplicación como: vista en tres dimensiones, realidad aumentada o videos de las unidades educativas que el usuario visite para que tenga una idea más clara del destino que va a conocer En el caso de ir caminando, se recomienda realizar algunos criterios de selección para predecir de mejor forma el tiempo que se va a demorar una persona en llegar al destino, por ejemplo un atleta demorará menos tiempo en llegar en comparación con una persona de la tercera edad, a pesar de ir por la misma ruta Con el paso del tiempo indudablemente la base de datos del sistema va a seguir creciendo, razón por la cual se recomienda crear un sistema de replicación o de backups, para tener un respaldo, en caso que la aplicación colapse o sufra algún daño que afecte los datos o su estructura como tal. Actualmente no se toman casos especiales al trazar la ruta como: Huelgas, desfiles o algún tipo de eventos, se recomienda unificar la base de datos con la información que provea la policía Nacional al respecto de estos contratiempos para mejorar la eficiencia de la aplicación Para un mejor manejo de los datos a futuro se recomienda la elaboración de un DataMars o un DataWareHouse para mejorar los tiempos de respuesta de la aplicación, así como el mejoramiento y la creación de nuevas políticas en la lógica del negocio lvi GLOSARIO ANCHO DE BANDA: Medida de la cantidad de información que puede pasar por una vía, expresada en bits/segundo (o algún múltiplo). API: Es un conjunto de reglas (código) y especificaciones que las aplicaciones pueden seguir para comunicarse entre ellas: sirviendo de interfaz entre programas diferentes de la misma manera en que la interfaz de usuario facilita la interacción humanosoftware. APLICACIÓN: Programa diseñado para una determinada función APPLE: Primera compañía fabricante de computadoras personales y creadora de la computadora Macintosh ARCHIVO: Conjunto de datos relacionados. AUTOMATIZACIÓN: Realización de una combinación específica de acciones por una máquina, sin la ayuda de personas. BACKUP: Copias de archivos, equipos de reemplazo o procedimientos alternativos disponibles para ser usados en caso de emergencias producidas por fallas totales o parciales de un sistema computacional. BANCO DE DATOS: Colección de archivos de datos, de tipo histórico, utilizados para consultas específicas de algún tema en particular. BASE DE DATOS RELACIONAL: Colección de datos organizada y relacionada, para evitar duplicaciones y permitir la obtención de datos combinados, satisfaciendo la necesidad de usuarios con diferentes necesidades de información. CSS: Es un lenguaje utilizado en la presentación de documentos HTML. Un documento HTML viene siendo coloquialmente “una página web”. Entonces podemos decir que el lenguaje CSS sirve para organizar la presentación y aspecto de una página web GOOGLE MAPS: Es un servidor de aplicaciones de mapas en la web que pertenece a Alphabet Inc. Ofrece imágenes de mapas desplazables, así como fotografías por satélite del mundo e incluso la ruta entre diferentes ubicaciones o imágenes a pie de calle con Google Street View lvii GIS. Es un conjunto de herramientas para unir, almacenar y presentar datos espaciales sobre el mundo que nos rodea. HTML es el lenguaje que se emplea para el desarrollo de páginas de internet. Está compuesto por una seríe de etiquetas que el navegador interpreta y da forma en la pantalla MARCADOR. Es un icono o imagen que sirve para mostrar al usuario puntos de interés en un mapa de Google Maps MVC: Modelo Vista Controlador (MVC) es un estilo de arquitectura de software que separa los datos de una aplicación, la interfaz de usuario, y la lógica de control en tres componentes distintos. PC: Computador personal de escritorio WORKFLOW: Flujo de trabajo lviii 7. BIBLIOGRAFIA 1. RUEDA, Francisco; QUINTERO, Alejandro; RUEDA, Julieta; LEON, Mauricio, (1995), Metodología para el desarrollo de aplicaciones Cliente-Servidor, descargado del internet el 12 de enero de 2016 2. GRANELL, Carlos, (2013), Future trends in geospatial information management, descargado del internet el 16 de enero del 2016 3. AVILA, Clara, (2012), Foursquare para empresas, descargado el 10 de noviembre del 2015 4. BELTRAN, Gerson, (2012), Geolocalización y redes sociales: un mundo social, local y móvil, descargado el 10 de noviembre de 2015 5. AMAYA, Daniel, (2013), Metodologías ágiles en el desarrollo de aplicaciones para dispositivos móviles, descargado el 10 de noviembre de 2015 6. http://datos.gob.es/content/herramientas-de-procesado-visualizacion-de-datos, descargado el 16 de enero del 2016 7. https://desocultar.files.wordpress.com/2010/04/google-geolocalizacion-decontenidos-maps-y-earth.pdf, descargado el 20 de enero del 2016 53 ANEXOS 54 ANEXO A Artículo: La importancia de la Geolocalización en tu negocio La Geolocalización es mucho más que una moda. Las grandes empresas, como Google, Facebook o Groupon, ya han apostado por ella. Y qué no decir de Foursquare… En esta época que nos ha tocado vivir, parece que queremos que todo el mundo sepa lo que hacemos, adónde vamos y con qué frecuencia lo hacemos (dichosas redes sociales). Más allá de este eterno debate, lo cierto es que es posible que las empresas utilicen los servicios de la geolocalización para obtener pingües beneficios. Todos tenemos que estar de acuerdo en que la geolocalización influye cada vez más en las decisiones de compra del usuario, tanto en el qué comprar como en el dónde hacerlo… Tomado de http://www.contunegocio.es/ ANEXO B Articulo: Evolución de la Geolocalización y el GPS Gestión de flotas, recursos humanos, servicios de seguridad... Las aplicaciones que la geolocalización tiene en las empresas son cada vez más numerosas. Y es que este sistema hace que todo se vea, que todo se sepa, que todo se controle. Bueno, quizás la afirmación suene un poco exagerada e, incluso, recuerde a la obra 1984, de George Orwell. Pero, hasta cierto punto, ésta es la esencia de la geolocalización, una tecnología que permite ubicar, según coordenadas espaciales, a una persona u objeto mediante un dispositivo. La definición es de Juan Miguel Gómez, profesor de la EAE Business School y de la Universidad Carlos III de Madrid. 55 Las herramientas claves son el GPS, que determina la posición de un elemento a través de satélites, y el RFID, que trabaja con radiofrecuencia. “Se podría decir que estos dos componentes son el hardware de la tecnología”… El software, mientras, estaría constituido por los planos y mapas sobre los que se realizan las identificaciones; mapas suministrados por servicios como Google Maps o Mapquest, “este último muy empleado en Estados Unidos, pero poco en Europa”. Recientemente, Apple adquirió la compañía de mapas Placebase, lo que da una idea de la relevancia de este instrumento… Tomado de http://www.emprendedores.es/ ANEXO C Noticia: El catedrático de Historia de la Arquitectura y la Tecnología de la Universidad de Harvard Antoine Picon, presidente de la Fundación Le Corbusier de París opina: “ La creciente importancia del espacio en relación a los desarrollos tecnológicos como la Geolocalización y la realidad aumentada explica el papel estratégico de los mapas en la evolución de la experiencia urbana” (15 de diciembre 2015) Figura 30. Antoine Picon Tomado de: http://www.20minutos.es/noticia/2626270/0/presidente-fundacion-lecorbusier-disertara-segovia-sobre-auge-ciudades-inteligentes/#xtor=AD15&xts=467263 56 ANEXO D PAQUETE CONEXIÓN Clase Conexión Descripción: esta clase permite conectarse con el gestor de base de datos a través de un componente jdbc, en esta clase, se crea una conexión que permite extraer los datos de los colegios para posteriormente ser tratados en los objetos que manejan la lógica de Negocio Conexión Atributos Private LinkedList<Colegio> listar_tag; Private Colegio tag_html; Private Statement st; Private ResultSet rs; Métodos Public getListar_tag; Public setListar_tag(LinkedList<Colegio> colegios); Public getTag_html; Public setTag_html(Colegio colegio); Public getListar_tag; Public setListar_tag(Colegio colegio); Public getSt; Public setSt(Statement st); Public getRs; Public setRs(Result Rs); Tabla 16. Clase Conexión Clase Colegio Descripción: Esta clase es una entidad que sirve para mapear los objetos java con las tablas y campos de la base de datos, para ello se crea un atributo de tipo privado por cada campo que maneja la tabla Colegio Atributos private Integer id; private String provincia; private String canton; private String parroquia; private String nombreInstitucion; private String codigoInstitucion; private String direccion; private String latitud; private String longuitud; private String representanteInstitucion; private String telefonos; 57 private String sostenimiento; private String regimenEscolar; private String jornada; private String modalidad; private String nivelEducacion; private String especialidadBachillerato; private String tipoEducacion; private Integer basico; private Integer diversificado; Métodos public Integer getId() ; public void setId(Integer id) ; public String getProvincia(); public void setProvincia(String provincial); public String getCanton() ; public void setCanton(String canton) ; public String getParroquia() ; public void setParroquia(String parroquia) ; public String getNombreInstitucion() ; public void setNombreInstitucion(String nombreInstitucion) ; public String getCodigoInstitucion() ; public void setCodigoInstitucion(String codigoInstitucion) ; public String getDireccion() ; public void setDireccion(String direccion) ; public String getLatitud() ; public void setLatitud(String latitud) ; public String getLonguitud() ; public void setLonguitud(String longuitud) ; public String getRepresentanteInstitucion() ; public void setRepresentanteInstitucion(String representanteInstitucion) ; public String getTelefonos() ; public void setTelefonos(String telefonos) ; public String getSostenimiento() ; public void setSostenimiento(String sostenimiento) ; public String getRegimenEscolar() ; public void setRegimenEscolar(String regimenEscolar) ; public String getJornada() ; public void setJornada(String jornada) ; public String getModalidad() ; public void setModalidad(String modalidad) ; public String getNivelEducacion() ; public void setNivelEducacion(String nivelEducacion) ; public String getEspecialidadBachillerato() ; public void setEspecialidadBachillerato(String especialidadBachillerato) ; public String getTipoEducacion() ; public void setTipoEducacion(String tipoEducacion) ; public Integer getBasico() ; public void setBasico(Integer basico); public Integer getDiversificado() ; public void setDiversificado(Integer diversificado); Tabla 17. Clase Colegio 58 Clase ColegioController Descripción: esta clase permite Controlar los elementos de la clase colegio, permite separar los datos, de la funcionalidad de la aplicación, para tener mayor control sobre la aplicación y poder realizar auditorías de seguridad y mantenimiento de una forma más rápida y sencilla ColegioController Atributos private Colegio colegio; private List<Colegio> colegios; Métodos public Colegio getColegio() ; public void setColegio(Colegio colegio) ; public List<Colegio> getColegios() ; public void setColegios(List<Colegio> colegios); public ColegioController(); Tabla 18. Clase ColegioController Colegios.js Descripción: Este archivo permite conectarse con el gestor de base de datos a través de un servicio web tipo REST, en esta clase, se crea una conexión que permite extraer los datos de los colegios a través de un URL para posteriormente ser tratados, lanzados o mostrados en la interface de la aplicación por medio de páginas tipo facelets Colegios.js Atributos Var request; Var colegio; Métodos Function llenar(); Function llenarC(colegio) Tabla 19. Colegios.js mapa.js Descripción: Este archivo permite desplegar el mapa inicial con una latitud y longuitud establecidas por default cuando la aplicación se ejecuta, además coloca marcadores 59 propios del Api de Google Maps en dicho mapa tomando como referencia la latitud y Longuitud de todos los colegios de la capital, y cuando se pulsa sobre algún marcador se despliega un cuadro de diálogo para mostrar sus datos relevantes mapa.js Atributos var myLatlng; var map; var request; Métodos Function initMap(); Function mostrarColegios(colegios) Tabla 20. mapa.js ubicacion.js Descripción: Este archivo permite tomar los datos del controlador y de los scripts anteriores para trazar la ruta entre el usuario y el destino, inicialmente se registrara la ubicación del usuario para trazar el origen de la trayectoria ubicacion.js Atributos var gMapa; var gCoder; var gLatLon; var ds = new google.maps.DirectionsService(); var dr = new google.maps.DirectionsRenderer(); var markerColegio = new google.maps.Marker(); var combo1; Métodos function getMapa(); function initM(); function fn_mal(); function fn_ok(rta); function capturarTrazar(); function trazarRuta(); function fnRutear(resultados, status); Tabla 21. Ubicación.js 60 ANEXO E Colegio ALANGASI en formato XML <basico>571</basico> <canton>QUITO</canton> <codigoInstitucion>17H01448</codigoInstitucion> <direccion> ABDON CALDERON OE1-144 Y ELOY ALFARO</direccion> <diversificado>419</diversificado> <especialidadBachillerato>Area de Comercio y Administracion, Area Tecnico Industrial,Ciencias,Unificado</especialidadBachillerato> <id>5</id> <jornada>Matutina</jornada> <latitud>-0.306333</latitud> <longuitud>-78.416389</longuitud> <modalidad>Presencial</modalidad> <nivelEducacion>EGB y Bachillerato</nivelEducacion> <nombreInstitucion>ALANGASI</nombreInstitucion> <parroquia>ALANGASI</parroquia> <provincia>PICHINCHA</provincia> <regimenEscolar>Sierra</regimenEscolar> <representanteInstitucion>DIAZ TIPAN CARLOS HUMBERTO</representanteInstitucion> <sostenimiento>Fiscal</sostenimiento> <telefonos>022788105 022787414 022787322</telefonos> <tipoEducacion>NO DISPONE</tipoEducacion> Colegio ALANGASI en formato JSON {"basico":571,"canton":"QUITO","codigoInstitucion":"17H01448","direccion":" ABDON CALDERON OE1-144 Y ELOY ALFARO","diversificado":419,"especialidadBachillerato":"Area de Comercio y Administracion, Area Tecnico Industrial,Ciencias,Unificado","id":5,"jornada":"Matutina","latitud":"-0.306333","longuitud":"78.416389","modalidad":"Presencial","nivelEducacion":"EGB y Bachillerato","nombreInstitucion":"ALANGASI","parroquia":"ALANGASI","provincia":"PICHINCHA","regimenEscol ar":"Sierra","representanteInstitucion":"DIAZ TIPAN CARLOS HUMBERTO","sostenimiento":"Fiscal","telefonos":"022788105 022787414 022787322","tipoEducacion":"NO DISPONE"} 61 ANEXO F Guía Rápida del Usuario Para facilitar el uso de la aplicación, se ha generado una guía rápida de usuario con la finalidad de que las personas que quieran usar el software puedan hacerlo muy rápidamente 1. Ingresar al link de la aplicación: http://databasegeolocalizacion.rhcloud.com/EjemploWildfl y Se nos desplegará la pantalla de ingreso Figura 31. Pantalla de Inicio 62 2. Colocar el usuario y la contraseña para ingresar a la aplicación Hay que mencionar que por motivos netamente académicos el usuario y la contraseña son Admin Figura 32. Pantalla de Inicio con credenciales 63 3. Al ingresar al sistema, se desplegará esta pantalla, todos los colegios e institutos que están registrados en el Ministerio de Educación están representados por marcadores de color rojo Figura 33. Marcadores 64 4. Si pulsamos sobre algún marcador, se nos desplegará la información relevante, como se muestra en la pantalla Figura 34. Datos de un colegio 65 5. Al presionar en el botón Trazar Ruta, se nos aparecerá una pantalla con nuestra ubicación actual y un combo con la lista de todos los colegios de Quito que constan en el banco de Datos del Ministerio de Educación Figura 35. Combo 66 6. En el combo que aparece en la aplicación, se puede seleccionar el colegio que desea o buscar el colegio escribiendo el nombre de la Institución Figura 36. Búsqueda de colegios 67 7. Luego de haber elegido el colegio que vamos a rutear(en el ejemplo se escogió al colegio ALBERT EINSTEIN) pulsamos en el botón IR, y automáticamente nos trazará la ruta, y nos mostrará la distancia y el tiempo aproximado que se demorará el usuario en llegar a la institución, en este caso 47.7 km y 1 hora respectivamente Figura 37. Trazo de Rutas 68 8. Luego que se ha trazado la ruta y se desea conocer la información del colegio, debemos pulsar sobre el marcador que identifica al colegio y se nos desplegará la información de la institución, de manera similar a lo que observamos en la captura de la pantalla Figura 38. Información de un colegio 69