1
DESARROLLO DE UN PROTOTIPO FUNCIONAL DEL APLICATIVO “PEREIRA CIRCULA”
JORGE ANDRÉS ROSERO GONZÁLEZ HERNÁN DE JESÚS SÁNCHEZ MEDINA
UNIVERSIDAD CATÓLICA DE PEREIRA FACULTAD DE CIENCIAS BÁSICAS E INGENIERÍA INGENIERÍA DE SISTEMAS Y TELECOMUNICACIONES
PEREIRA 2016
2
DESARROLLO DE UN PROTOTIPO FUNCIONAL DEL APLICATIVO “PEREIRA CIRCULA”
JORGE ANDRÉS ROSERO GONZÁLEZ HERNÁN DE JESÚS SÁNCHEZ MEDINA
Informe Final de Trabajo de Grado
Director:
Ing. Bryan Valencia Suárez
UNIVERSIDAD CATÓLICA DE PEREIRA FACULTAD DE CIENCIAS BÁSICAS E INGENIERÍA INGENIERÍA DE SISTEMAS Y TELECOMUNICACIONES
PEREIRA 2016
3
TABLA DE CONTENIDOS
RESUMEN ... 10
ABSTRACT ... 10
INTRODUCCIÓN ... 12
1. FORMULACIÓN DEL PROYECTO ... 14
1.1. Descripción y formulación del problema ... 14
1.2. Objetivos ... 16 1.2.1. Objetivo General ... 16 1.2.2. Objetivos Específicos ... 16 1.3. Justificación ... 17 1.4. Cronograma ... 18 2. MARCO CONTEXTUAL ... 19
2.1. Análisis social y organizacional ... 19
2.1.1. Transporte en Pereira ... 19
2.1.2. Área Metropolitana ... 19
2.2. Uso aplicaciones móviles ... 23
3. MARCO TEÓRICO ... 24
3.1. Antecedentes ... 24
3.2. Android y Aplicaciones Móviles ... 25
3.3. Versiones de Android y Niveles de API ... 26
3.4. Linux ... 32
3.4.1. Ubuntu ... 33
3.5. Modelo Vista Controlador (MVC) ... 34
3.6. Framework web ... 36
3.6.1. Django ... 37
3.6.2. Django Push Notification ... 38
4
3.7.1. Métodos HTTP ... 41
3.7.2. Que es un servicio web: (Web Service) ... 41
3.8. RESTful y JSON ... 42
3.8.1. REST ... 42
3.8.2. JSON ... 44
3.9. Google Cloud Messaging ... 45
3.9.1. RegistrationId ... 46 4. ENFOQUE METODOLÓGICO ... 47 4.1. Scrum ... 47 4.1.2. Sprint ... 48 4.2. Product Backlog ... 48 4.3. Historias de usuario ... 51 4.4. Requerimientos ... 60 4.5. Diagramas ... 65
4.5.1. Diagrama de casos de usos ... 65
4.5.2. Diccionario de casos de uso ... 69
4.5.3. Diagramas de actividades ... 90
4.5.4. Diagrama de modelo de datos ... 102
4.6. GIT y Bitbucket ... 105 4.6.1. GIT ... 105 4.6.2. BitBucket ... 106 4.7. Mockups ... 109 4.8. Diseño gráfico ... 114 5. PROCESO DE DESARROLLO ... 117
5.1. Estandarización del establecimiento de Web Services ... 117
5.2. Desarrollo Android Nativo ... 118
5.2.1. Estructura y manejo de la clase Activity ... 119
5.3. Librerías utilizadas en el desarrollo de la aplicación Android... 123
5.3.1. Android Asynchronous Http Client... 123
5
5.4. Recursos gráficos ... 126
5.5. Integración de Web View para Mapa ... 127
5.6. Utilización de Adapters ... 128
5.7. Notificaciones Push ... 130
5.8. Manejo de dependencias con Gradle ... 133
5.9. Pruebas ... 134
5.10. Instalación APK en diferentes dispositivos ... 142
CONCLUSIONES ... 145
RECOMENDACIONES ... 146
LISTA DE REFERENCIAS... 147
6
LISTA DE TABLAS
Tabla 1: Product Backlog ... 49
Tabla 2: HU-PC-1 ... 51 Tabla 3: HU-PC-2 ... 52 Tabla 4: HU-PC3 ... 53 Tabla 5: HU-PC-4 ... 54 Tabla 6: HU-PC-5 ... 55 Tabla 7: HU-PC-6 ... 56 Tabla 8: HU-PC-7 ... 57 Tabla 9: HU-PC-8 ... 58 Tabla 10: HU-PC-9 ... 59 Tabla 11: Requerimiento 1 ... 60 Tabla 12: Requerimiento 2 ... 60 Tabla 13: Requerimiento 3 ... 61 Tabla 14: Requerimiento 4 ... 61 Tabla 15: Requerimiento 5 ... 61 Tabla 16: Requerimiento 6 ... 62 Tabla 17: Requerimiento 7 ... 62 Tabla 18: Requerimiento 8 ... 63 Tabla 19: Requerimiento 9 ... 63 Tabla 20: Requerimiento 10 ... 63 Tabla 21: Requerimiento 11 ... 64 Tabla 22: Requerimiento 12 ... 64 Tabla 23: Requerimiento 13 ... 64 Tabla 24: Requerimiento 14 ... 65 Tabla 25: Cu-001 ... 69 Tabla 26: Cu-002 ... 70 Tabla 27: Cu-003 ... 71 Tabla 28: Cu-004 ... 72 Tabla 29: Cu-005 ... 73 Tabla 30: Cu-006 ... 74 Tabla 31: Cu-007 ... 75 Tabla 32: Cu-008 ... 76 Tabla 33: Cu-009 ... 77 Tabla 34: Cu-010 ... 78 Tabla 35: Cu-011 ... 79 Tabla 36: Cu-012 ... 80
7 Tabla 37: Cu-013 ... 81 Tabla 38: Cu-014 ... 82 Tabla 39: Cu-015 ... 83 Tabla 40: Cu-016 ... 84 Tabla 41: Cu-017 ... 85 Tabla 42: Cu-018 ... 86 Tabla 43: Cu-019 ... 87 Tabla 44: Cu-020 ... 88 Tabla 45: Cu-021 ... 89
Tabla 46: Diccionario del modelo de datos ... 103
Tabla 47: Formato de documentación de Web Services ... 118
Tabla 48: Caso de prueba No. 1 ... 135
Tabla 49: Caso de prueba No. 2 ... 135
Tabla 50: Caso de prueba No. 3 ... 136
Tabla 51: Caso de prueba No. 4 ... 136
Tabla 52: Caso de prueba No. 5 ... 137
Tabla 53: Caso de prueba No. 6 ... 137
Tabla 54: Caso de prueba No. 7 ... 138
Tabla 55: Caso de prueba No. 8 ... 138
Tabla 56: Caso de prueba No. 9 ... 139
Tabla 57: Caso de prueba No. 10 ... 139
Tabla 58: Caso de prueba No. 11 ... 140
Tabla 59: Caso de prueba No. 12 ... 140
8
LISTA DE FIGURAS
Figura 1. Organigrama de AMCO 21
Figura 2. Jurisdicción AMCO 22
Figura 3. Arquitectura Modelo – Vista – Controlador 35
Figura 4. Funcionamiento Protocolo HTTP 40
Figura 5. Ejemplo respuesta JSON Pereira Circula 45
Figura 6. Diagrama de casos de uso – Usuario 66
Figura 7. Diagrama de casos de uso - Administrador (1) 67 Figura 8. Diagrama de casos de uso - Administrador (2) 67 Figura 9: Diagrama de casos de uso - Administrador (3) 68 Figura 10. Diagrama de casos de uso - Cron, Google Cloud Message 68 Figura 11. Diagrama de actividades - Crear vehículos (Usuario) 90 Figura 12. Diagrama de actividades - Ver vehículo (Usuario) 91 Figura 13. Diagrama de actividades - Editar vehículos (Usuario) 91 Figura 14. Diagrama de actividades - Eliminar vehículos (Usuario) 92 Figura 15. Diagrama de actividades - Consultar noticias (Usuario) 92 Figura 16. Diagrama de actividades - Consultar pico y placa (Usuario) 93 Figura 17. Diagrama de actividades - Consultar transporte público (Usuario) 93 Figura 18. Diagrama de actividades - Recibir notificación push 94 Figura 19. Diagrama de actividades - CRUD Administradores (Administrador) 95 Figura 20. Diagrama de actividades - CRUD Rutas (Administrador) 96 Figura 21. Diagrama de actividades - CRUD Noticias (Administrador) 97 Figura 22. Diagrama de actividades – Editar e ingresar Pico y placa
(Administrador) 98
Figura 23. Diagrama de actividades - CRUD RegistrationId (Administrador) 99 Figura 24. Diagrama de actividades - CRUD Vehículos de usuarios (Administrador) 100 Figura 25. Diagrama de actividades - Notificaciones importantes hechas por
administradores 101
Figura 26. Diagrama de actividades - Notificación de pico y placa 101
Figura 27. Diagrama de modelo de datos 102
Figura 28. Ejemplo GIT 105
Figura 29. Repositorios Bitbucket 106
Figura 30. Source Bitbucket 107
Figura 31. Commits en Bitbucket 107
Figura 32. Mockup 1 109
9 Figura 34. Mockup 3 110 Figura 35. Mockup 4 110 Figura 36. Mockup 5 111 Figura 37. Mockup 6 111 Figura 38. Mockup 7 112 Figura 39. Mockup 8 112 Figura 40. Mockup 9 113 Figura 41. Mockup 10 113 Figura 42. Mockup 11 114
Figura 43. Logotipo Pereira Circula - Icono Launcher 114
Figura 44. Splash horizontal 115
Figura 45. Splash vertical 115
Figura 46. Imagen de estado vacío 116
Figura 47. Imagen cargando 116
Figura 48. Imagen de menú de navegación 116
Figura 49. Desarrollo en Android Studio 119
Figura 50. Ciclo de vida de una Actividad 120
Figura 51. Menú lateral 122
Figura 52. Toolbar 123
Figura 53. Recursos Graficos 127
Figura 54. Mapa de rutas de servicio público 128
Figura 55. Ejemplo Adapter 129
Figura 56. Notificación Push recibida en Android de Pereira Circula 131 Figura 57. Registro de dispositivo en GCM y Servidor Web 132 Figura 58. Proceso envío Notificación Push desde servidor web. 133 Figura 59. APK Instalado en Samsung Galaxy S5 142 Figura 60. APK Instalado en Motorola Moto G3 143 Figura 61. APK Instalado en Samsung Tablet 3 144
10 RESUMEN
La mayor cantidad de proyectos de desarrollo de Apps móviles que se realizan a nivel de empresa buscan crear una nueva perspectiva de uso de las tecnologías móviles y agilizar el proceso de consultas de información otorgando una mejor experiencia en el uso y mayor comodidad mediante los dispositivos móviles.
Tomando estos dispositivos no solo como un aparato tecnológico de ocio sino también usándolos como un dispositivo fundamental para el uso y el acceso a la información de una manera rápida y eficaz, se plantea Pereira Circula, que es una App de Android que ofrece información de interés general a la comunidad que se moviliza a través de las vías del municipio de Pereira, tales como información de pico y placa, consulta de las rutas de los buses de la ciudad, la posibilidad de recibir alertas relacionadas al pico y placa de los vehículos del usuario en particular, entre otros.
Para lograr el desarrollo de esta aplicación, se realiza un trabajo en compañía del Área Metropolitana de Centro Occidente con quienes se definieron los requisitos y elementos a contener. El desarrollo se hace en el sistema operativo Android y como infraestructura web y administrativa se utiliza el Framework Django. La metodología utilizada está basada en el marco de trabajo Scrum.
PALABRAS CLAVES: Aplicación móvil, Android, Django, Servicio web, JSON, RESTful, HTTP, Scrum.
ABSTRACT
Most development projects mobile apps that are made at company level seek to create a new perspective on the use of mobile technologies and streamline the consultation process information giving an experience in the use and convenience through mobile devices.
Taking these devices not only as a technological apparatus leisure but also using it as a key device for use and access to information more quickly and efficiently, Pereira Circula, which is an Android App that provides information arises general interest to the community that moves through the tracks of the municipality of Pereira, such as information peak and plate, see the routes of city buses, the ability to receive alerts related to the peak and plate vehicles particular user.
11
To achieve the development of this application, work is done in the company of Área Metropolitana de Centro Occidente with those requirements and contain elements defined. The development is done in the Android operating system and web infrastructure and management as the Django Framework is used. The methodology is based on the work Scrum framework.
KEYWORDS: Mobile Application, Android, Django, Web service, JSON, RESTful, HTTP, Scrum.
12
INTRODUCCIÓN
Las aplicaciones móviles están siendo sin duda alguna una herramienta importante para el día a día de muchas personas. Actualmente existen aplicaciones para todo tipo de actividades: comunicación, educación, salud, entretenimiento, encontrar y conocer personas, y un sin número de posibilidades más. Esto representa una oportunidad interesante para los profesionales en informática de generar software móvil que afecte y contribuya con muchas personas.
El proyecto que se presenta en este documento nace del aprovechamiento de la oportunidad que se acaba de mencionar en combinación con una necesidad en el contexto particular de la ciudad de Pereira. Pereira Circula, como es el nombre de la aplicación móvil desarrollada, es un proyecto que busca ser una herramienta para el transporte urbano de la ciudad. Dentro de sus servicios están la búsqueda de rutas de transporte público, el almacenamiento de vehículos para alarmas y notificaciones de pico y placa y la publicación de noticias relacionadas a este tema.
Las rutas de transporte público son un servicio que le permite al usuario listar cuáles números de ruta están disponibles en la ciudad, ver el recorrido de las mismas con ayuda de un mapa y además una descripción de los lugares por donde pasa la misma.
Por otra parte el usuario de la aplicación Móvil Pereira Circula también puede registrar sus vehículos como automóviles y motocicletas, sus respectivos números de pico y placa y la aplicación móvil le advertirá a través de una notificación en el celular y a la hora que el usuario elija, que ese día tiene Pico y Placa y que por tanto NO debe transitar con su vehículo por las vías que rigen la norma.
Además de eso, dentro de la aplicación el usuario puede ver un listado de noticias recientes sobre el transporte en la ciudad de Pereira, esto es un medio que permite mantener actualizado al usuario por si hay, por ejemplo, vías cerradas, mantenimientos, nuevos normas de tránsito, entre muchas otras cosas.
El sistema operativo elegido para el desarrollo de la aplicación móvil fue Android, entre otras cosas por ser el más usado. La aplicación fue desarrollada usando el IDE Android Studio y por tanto de manera nativa sin la utilización de Frameworks ni otra herramienta, esto es porque el desarrollo nativo garantiza que la aplicación
13
va a funcionar correctamente en cualquier dispositivo Android y en cualquiera de sus versiones.
Para este proyecto no solamente se generó un desarrollo en Android, sino que también se creó una arquitectura administrativa en versión web para tener la posibilidad de actualizar los parámetros e información de la aplicación móvil. Esto significa que desde un panel web un administrador puede cambiar los días de pico y placa, publicar, editar o eliminar noticias y las rutas de buses, gestionar los usuarios, entre otras opciones.
Para la creación de este administrador se utilizó un Framework web llamado Django, que maneja la arquitectura Modelo-Vista-Template, más conocida como MVC (Modelo-Vista-Controlador) y que se codifica en Python.
14
1. FORMULACIÓN DEL PROYECTO
1.1. Descripción y formulación del problema
En el ámbito en el que se mueven los habitantes de la ciudad de Pereira cada vez es más complejo y lento el transitar de los vehículos e incluso de las personas; la ciudad presenta un crecimiento exponencial en materia de infraestructura y movilidad, por eso es importante plantearse preguntas y dar soluciones a problemas que afectan de manera directa a sus habitantes.
Cada vez es más común ver personas que ingresan a la ciudad buscando un medio de transporte o la manera más adecuada de movilizarse, por eso es fundamental que tanto residentes como visitantes tengan información oportuna y confiable a la hora de transitar por las diferentes vías del municipio.
Por esta razón es importante gestionar soluciones a diferentes problemáticas relacionadas al sector de transporte que pueden afectar el desarrollo de la ciudad de Pereira. Uno de esos inconvenientes es que el acceso a la información de tránsito de la ciudad, que incluye nuevas normas de tránsito, rutas del servicio público (busetas), normas o cambios en las mismas, pico y placa y de más, se encuentra sectorizada o divida en diferentes entes, lo que hace difícil y tardío el acceso a la información que el usuario necesita para movilizarse de manera tranquila y sin inconvenientes.
La congestión vehicular y desconocimiento de las rutas, pico y placa y el aumento del parque automotor crean una problemática para la movilidad, transporte y ubicación de los ciudadanos; por eso se deben buscar soluciones en el medio tecnológico.
Una solución tecnológica podría, además de centralizar y estandarizar la información, hacer más cómodo y práctico la utilización de los diferentes sistemas de transporte público.
Por otra parte, para las personas dueñas de vehículos, estarían teniendo a la mano una herramienta confiable para evitar caer en infracciones de tránsito, relacionadas con Pico y Placa o nuevas normas que, muchas veces por desconocimiento, son infringidas.
Una de esas soluciones es el aprovechamiento de la tendencia al uso de las aplicaciones móviles. Una aplicación móvil que, además de exponer la información
15
relacionada al transporte de la ciudad sea una herramienta de ayuda al usuario, puede mejorar considerablemente la calidad de vida de los habitantes de la ciudad de Pereira.
16 1.2. Objetivos
1.2.1. Objetivo General
Desarrollar una aplicación móvil que otorgue información sobre los estados de vías, pico y placa de los vehículos particulares y rutas de servicio público de la ciudad de Pereira
1.2.2. Objetivos Específicos
Definir requerimientos, examinando y recopilando las necesidades de los usuarios y del software.
Desarrollar los modelos para la implantación del programa y garantizar que se cumplan a cabalidad los requerimientos solicitados.
Desarrollar el software mediante la codificación y representación de los modelos.
Realizar pruebas del software en las cuales se evaluara los resultados del mismo.
Realizar la integración del software con los dispositivos móviles para el inicio de su fase de implantación.
17 1.3. Justificación
La información relacionada al transporte de una ciudad, representa un conjunto grande de diferentes elementos como normatividad, Pico y Placa, Transporte público, entre otros, que es muy conveniente que esté centralizada y estandarizada para que se pueda acceder a ella de manera fácil y así esto se traduzca en menores infracciones, mayor y mejor uso del transporte público y menor congestión vehicular.
En este momento, existen múltiples entidades que se encargan de la especificación de normas o la presentación de diferente información trascendental para la comunidad de Pereira relacionada al transporte. Entre estas entidades se encuentran La Alcaldía de Pereira, El Área Metropolitana y el Instituto Municipal de Tránsito de Pereira. También entidades a nivel nacional como el Ministerio de Transporte.
Pereira Circula representa una opción para centralizar y facilitar el acceso a la información que esta cantidad de fuentes e instituciones generan de manera independiente y que por esta razón puede que no tengan la exposición ni percepción adecuada.
Este proyecto no sólo sirve como medio de exposición, sino que es también una herramienta para el cálculo de rutas y como medio para registro de vehículos para facilitar el cumplimiento de la norma de Pico y Placa mediante notificaciones. Se plantea realizar el desarrollo de esta aplicación móvil en el sistema operativo Android, entre otras razones porque su desarrollo es posible llevarlo a cabo con herramientas libres y además porque este sistema operativo conto con el 70% del mercado en el 2012, según el estudio realizado por Strategy Analytics, lo que posibilita llegar a más habitantes de la ciudad. (Andrade, 2013)
Una aplicación móvil que exponga información importante relacionada al tránsito para la ciudad de Pereira, enfocada a que tanto habitantes como turistas puedan saber qué sucede en el transporte de la ciudad, estar enterados a tiempo de las noticias relacionadas con el flujo vehicular, y estar atentos a las normas que deben de tener los dueños de los vehículos, como el pico y placa, significa una herramienta de gran utilidad. Siendo Pereira una conexión importante entre otras ciudades por su ubicación geográfica, es conveniente gestionar soluciones a tipos de problemática que impiden el desarrollo de la misma, como el tema de movilidad y desarrollo de las tecnologías.
18 1.4. Cronograma
Actividad Marzo Abril Mayo Junio Julio Agos Sept Oct Nov Investigación de las
herramientas que dispone el Área Metropolitana para el desarrollo del aplicativo. Realizar una lista de requerimientos funcionales y no funcionales: del administrador y del aplicativo móvil.
Análisis y diseño de la solución software: diagramas de casos de uso, diagramas de actividades, mockups
gráficos del
aplicativo, modelo de datos. Codificación y preparación del servidor
Diseño, creación y documentación de webservices.
Codificación visual (front-end)
Codificación funcional (back-end)
Realización y documentación de pruebas.
Manual de usuario del administrador.
Avance en la documentación del informe final.
19
2. MARCO CONTEXTUAL
2.1. Análisis social y organizacional 2.1.1. Transporte en Pereira
En la ciudad de Pereira se cuenta con un transporte público que cubre el área metropolitana del centro occidente, hay rutas que circulan tanto por la parte central de Pereira hasta las partes rurales, tratando de conectar y transitar por las calles principales de la ciudad, más de 44 rutas con un gran recorrido donde la gran población de la ciudad hace uso de este servicio.
Debido a la gran cantidad de vehículos que transitan diariamente, se redacta el decreto 516 del 21 de julio de 2015, donde indica que el pico y placa restringe transitar unas vías específicas a vehículos correspondientes a un día determinado y en horarios puntuales, para lograr optimizar el flujo vehicular y poder transitar con mayor rapidez. (Alcaldía de Pereira, 2015)
A la fecha el pico y placa en la ciudad de Pereira funciona de la siguiente manera: Para los carros el pico y placa funciona con el último número de su placa y está distribuido así: lunes 0 y 1, martes 2 y 3, miércoles 4 y 5, jueves 6 y 7, viernes 8 y 9.
Para las motocicletas se aplica al primer número de la placa distribuyéndose de la siguiente manera: lunes 0 y 1, martes 2 y 3, miércoles 4 y 5, jueves 6 y 7, viernes 8 y 9
2.1.2. Área Metropolitana
El Área Metropolitana es una entidad administrativa de la ciudad donde se incorporará la aplicación móvil, “cuyas funciones generales son programar y coordinar el desarrollo armónico e integrado del territorio colocado bajo su jurisdicción; racionalizar la prestación de los servicios públicos a cargo de los municipios que la integran y ejecutar obras de interés común metropolitano, la cual fue derogada por la Ley 1625 de 2013 mediante la cual se les entregó, de manera definitiva, competencias como autoridad ambiental urbana, autoridad de transporte
20
metropolitano y masivo y el ejercicio de planificación territorial en las jurisdicciones de las que hacen parte” (El Diario del Otún, 2013)
Teniendo en cuenta la gran participación del Área Metropolitana en el sector del Transporte en la ciudad y la oportunidad que presenta para el desarrollo del presente proyecto, se realizó un convenio con esta entidad para trabajar de manera colaborativa en la creación del aplicativo móvil que le permitirá no sólo a esta entidad tener un medio de difusión, sino que será también un servicio muy útil para todos los usuarios.
“La responsabilidad del Transporte Público en las Áreas Metropolitanas, fue delegada directamente por los alcaldes de los municipios que la conforman y es así como a través del Acuerdo Metropolitano 010 de 1990, se constituye el transporte como un hecho metropolitano para los municipios de Pereira, Dosquebradas y La Virginia, delegándose la autoridad en un principio a la Alcaldía de Pereira y en Acuerdo Metropolitano No. 017 de 2001, se constituye al AMCO como autoridad de transporte público, reconocida también por el Ministerio de Transporte mediante resolución 4380 y 6633 del 2002.” (El Diario del Otún, 2013), Al tener el contacto directo con la entidad encargada de las rutas de transporte público y regulación de ellas, nos ayuda a tener información real y actualizada para poder alimentar la aplicación de manera correcta.
Misión
"Es nuestro compromiso propender por el desarrollo armónico, coordinado y sostenible de los municipios que la conforman, mediante la planeación, la gestión y ejecución de proyectos con impacto metropolitano que la conduzcan a su fortalecimiento y consolidación territorial. Este compromiso se fundamenta en el respeto por la autonomía municipal, la concertación, el interés ciudadano y el liderazgo institucional de todo el equipo de trabajo comprometido por el desarrollo de la ciudad región" (Área Metropolitana de Centro Occidente, 2012)
Visión
"Ser la entidad líder en la gestión del desarrollo integral de la ciudad región, posicionándose como agencia promotora y gestora de proyectos estructurantes a nivel metropolitano, soportados por una organización ágil, con talento humano competitivo y capaz de liderar el desarrollo y crecimiento sostenible de la metrópoli" (Área Metropolitana de Centro Occidente, 2012)
21 Organigrama
Figura 1. Organigrama de AMCO
Fuente: Área Metropolitana de Centro Occidente. (19 de Julio de 2012). Quiénes Somos? Recuperado el 17 de Abril de 2016, de http://amco.gov.co/contenido-mision-y-vision-108.html
22 Jurisdicción
Figura 2. Jurisdicción AMCO
Fuente: Área Metropolitna de Centro Occidente. (2012). Quiénes Somos? Recuperado el 17 de Abril de 2016, de http://amco.gov.co/contenido-jurisdiccion-118.html
Según la ordenanza No. 14 del 26 de marzo de 1991, se establecen los municipios adscritos: Pereira, Dosquebradas, Posteriormente el Municipio de La Virginia.
23 2.2. Uso aplicaciones móviles
Una gama de aplicaciones llegó a Colombia desde hace ya un tiempo para dar soluciones a diferentes tipos de necesidad de los colombianos, tales como ayudar a ordenar horarios, tener recordatorios y entregar de manera ágil, en cualquier lugar y momento la información requerida. Diferentes aplicaciones hoy en día son una gran estrategia de negocio por su gran magnitud de uso entre todas las personas que poseen un Smartphone y encuentran una llamativa iniciativa de encontrar nuevas formas de gestionar información de interés y respondiendo a sus necesidades.
“La oferta de aplicaciones que existen en las tiendas virtuales es hoy incalculable y cada día se crean más, muchas de ellas con el objetivo de mejorar las condiciones de los ciudadanos con el apoyo de la tecnología.” (Noticias RCN, 2016)
A pesar de que existen más de 700.000 aplicaciones móviles en la tienda oficial de Android Google Play, aun no se satisfacen todas las necesidades, por la cantidad de información que los seres humanos generan todos los días, y la mejor solución en estos tiempos es el desarrollo de sistemas de información. (Google Play, s.f.) Estadísticas importantes a tener en cuenta otorgadas por la Corporación Colombia Digital (2014):
Se estima que, a finales de diciembre de 2014, se habrán descargado 138.1 mil millones de ‘apps’ móviles. En 2017 el número total de descargas ascenderá a 268.7 mil millones, prácticamente el doble de 2014. La cifra es impresionante si se tiene en cuenta que en 2010 hubo tan sólo 4.5 mil millones de ‘apps’ móviles descargadas.
Del total de descargas, el 91% son gratuitas.
Las cinco categorías de aplicaciones descargadas con mayor popularidad son las siguientes:
- Juegos (19.1%). - Educación (10.1%). - Negocios (8.4%). - Estilo de vida (8.1%). - Entretenimiento (7.8%).
24
3. MARCO TEÓRICO 3.1. Antecedentes
En la actualidad la manera en que los pereiranos buscan la información de las rutas de transporte público de la ciudad, es, generalmente, mediante el sitio web del Área Metropolitana de Centro Occidente, donde pueden ver la descripción de las rutas y el mapa por donde cruzan las mismas.
De la misma forma, para enterarse del pico y placa deben ingresar directamente a un buscador, leer periódicos o ver avisos que hay en los semáforos donde no se pueden detallar correctamente. No siempre pueden enterarse al instante cuando este decreto se modifica, o del mismo modo sucede cuando hay una noticia de interés para los conductores de vehículos.
Actualmente se encuentran aplicaciones móviles similares en otras ciudades que han atacado el problema de la información relacionada al transporte.
Transmilenio y SITP
Es una aplicación que permite ubicar rutas de Transmilenio y del Servicio Integrado de Transporte Público de la ciudad de Bogotá.
Como es citado por el Periódico El Tiempo (2015), el creador de la App, Fabio Parra dice: “Decidimos crear una herramienta que tuviera toda la información. Aprovechando el GPS que tienen los dispositivos pueden buscar dónde recargar las tarjetas”.
El usuario puede calcular el tiempo que tardará la ruta señalando el lugar de origen y destino, y le mostrara que ruta debe tomar para que sea más eficiente, además de poder saber cuánto saldo tiene en su tarjeta con la que accede al servicio de transporte (Periodico El Tiempo, 2015).
WAZE
Es una comunidad a nivel mundial de conductores que comparten a través de la aplicación los estados de las vías en tiempo real, creando alertas e información para el resto de las personas que navegan sobre la aplicación. La aplicación a su vez genera un mapa creado por la misma comunidad donde direcciona al usuario hacia la mejor ruta determinada gracias a la información compartida por los demás conductores, su lema es “Obtén la mejor ruta, todos los días, con la ayuda en tiempo real de otros conductores.”
25
Esta aplicación genera también otro tipo de información como accidentes, sitios de interés, costo de combustible en las estaciones de gasolina, peligros en las vías, policía de tránsito, entre otros (WAZE, s.f.).
Moovit
Moovit es una aplicación móvil alimentada por una comunidad de más de 30 millones de pasajeros en 65 países, lo que hace que la plataforma trabaje en tiempo real y gestione la información ingresada por todos los usuarios, además proporciona móvil asistencia personal de transporte público, horario de salida y llegadas de los diferentes medios de transporte, guiando y planificando de manera óptima los viajes (Moovit, 2016).
Lo particular de esta aplicación, es que es una de las pocas que logra centralizar la información de los medios de transporte de múltiples países, así, personas que están acostumbradas a recorrer diferentes lugares, no tienen que pasar por el problema de descargar aplicaciones específicas para cada país.
Pico y placa Colombia
Aplicación que genera alertas para no olvidar el pico y placa, correspondiendo a cada norma de las ciudades, de igual forma consultando solamente los días y sus números relacionados (Tech.Freak, 2015).
3.2. Android y Aplicaciones Móviles
La Historia de Android comenzó en octubre del año 2008 cuando se creó el primer teléfono inteligente equipado con este sistema operativo, T-Mobile G1, un SmartPhone fabricado por HTC y desarrollado junto con Google.
Días antes de este lanzamiento comercial, el 23 de septiembre del 2008, Google celebraba una rueda de prensa donde se presentaba este dispositivo junto con la versión 1.0 de Android.
Android era un sistema operativo que estaba desarrollando una compañía de nombre Android Inc. y que fue adquirida por Google en julio del año 2005. Desde entonces siempre que se habla de este sistema operativo se hace referencia a la compañía del buscador aunque es la Open Handset Alliance.
En julio de 2005, Google adquirió Android Inc., una pequeña compañía de Palo Alto, California fundada en 2003.
26
Entre los cofundadores de Android que se fueron a trabajar a Google están Andy Rubin (co-fundador de Danger), Rich Miner (co-fundador de Wildfire Communications, Inc.), Nick Sears (alguna vez VP en T-Mobile), y Chris White (quien encabezó el diseño y el desarrollo de la interfaz en WebTV). En aquel entonces, poco se sabía de las funciones de Android Inc. fuera de que desarrollaban software para teléfonos móviles. Esto dio pie a rumores de que Google estaba planeando entrar en el mercado de los teléfonos móviles.
En Google, el equipo liderado por Rubin desarrolló una plataforma para dispositivos móviles basada en el kernel de Linux que fue promocionado a fabricantes de dispositivos y operadores con la promesa de proveer un sistema flexible y actualizable. La especulación sobre que el sistema Android de Google entraría en el mercado de la telefonía móvil se incrementó en diciembre de 2006. (Bastera & Bertea, 2012)
3.3. Versiones de Android y Niveles de API
Antes comenzar un desarrollo de una aplicación móvil para Android es indispensable elegir la versión del sistema para la que se desee realizar la aplicación. Es muy importante entender que para llevar a cabo el desarrollo de la mejor manera debe tenerse en cuenta aspectos como la disponibilidad de recursos, el acceso al hardware, entre otros elementos con los que cuenta cada versión específica, pues sus actualizaciones integran nuevos métodos y características de desarrollo.
Cuando se ha lanzado una nueva plataforma, siempre ha sido compatible con las versiones anteriores. Es decir, solo se añaden nuevas funcionalidades, y en el caso de modificar alguna funcionalidad, no se elimina, sino que se etiqueta como obsoleta, pero se puede continuar utilizando.
Según como son descritas por la Universidad Politécnica de Valencia (2015), las siguientes son las versiones y API correspondiente que hasta el momento ha lanzado Android.
Android 1.0 Nivel de API 1 (septiembre 2008)
Primera versión de Android. Nunca se utilizó comercialmente, por lo que no tiene mucho sentido desarrollar para esta plataforma.
Android 1.1 Nivel de API 2 (febrero 2009)
No se añadieron funcionalidades, solamente se realizaron algunas correcciones de la versión anterior. Es la opción a escoger si no se quiere desarrollar una
27
aplicación compatible con todos los dispositivos Android. No obstante apenas existen usuarios con esta versión.
Android 1.5 Cupcake Nivel de API 3 (abril 2009)
Es la primera versión con introducción de un usuario, aunque en la actualidad apenas quedan. Como novedades, se ingresa la posibilidad de teclado en pantalla con predicción de texto, así como la capacidad de grabación avanzada de audio y vídeo. También aparecen los widgets de escritorio y live folders. Incorpora soporte para Bluetooth estéreo, por lo que permite conectarse automáticamente a auriculares Bluetooth. Las transiciones entre ventanas se realizan mediante animaciones.
Android 1.6 Donut Nivel de API 4 (septiembre 2009)
Permite capacidades de búsqueda avanzada en todo el dispositivo. También se incorpora gestures y la síntesis de texto a voz. Asimismo, se facilita que una aplicación pueda trabajar con diferentes densidades de pantalla. Soporte para resolución de pantallas WVGA. Aparece un nuevo atributo XML, onClick, que puede especificarse en una vista. Soporte para CDMA/EVDO, 802.1x y VPNs. Android 2.0 Eclair Nivel de API 5 (octubre 2009)
Es laversión de que contaba con menos usuarios, teniendo en cuenta que la mayoría de fabricantes pasaron de la versión 1.6 a la 2.1. Como nuevas funcionalidades se agrega una API para manejar el bluetooth 2.1. Nueva funcionalidad que permite sincronizar para conectarlo a cualquier dispositivo. Centraliza un manejo de cuentas. Mejora gestión de contactos y ofrece más ajustes en la cámara. Se optimizo la velocidad del hardware. Se agrega una Nueva interfaz del navegador e integra soporte para HTML5. Ahora soporta modo de pantallas multitouch.
Android 2.1 Nivel de API 7 (enero 2010)
Se considera una actualización menor, por lo que la siguieron llamando Éclair. Se destaca el reconocimiento de voz, que permite introducir un campo de texto dictando sin necesidad de utilizar el teclado. También permite desarrollar fondos de pantalla animados. Se puede obtener información sobre la señal de la red actual que posea el dispositivo. En el paquete WebKit se incluyen nuevos métodos para manipular bases de datos almacenadas en Internet.
28 Android 2.2 Froyo Nivel de API 8 (mayo 2010)
Como característica más destacada se puede indicar la mejora de velocidad de ejecución de las aplicaciones (ejecución del código de la CPU de 2 a 5 veces más rápido que en la versión 2.1 de acuerdo a varios benchmarks). Esto se consigue con la introducción de un nuevo compilador JIT de la máquina Dalvik.
Se añaden varias mejoras relacionadas con el navegador web, como el soporte de Adobe Flash 10.1 y la incorporación del motor Javascript V8 utilizado en Chrome. También mejora la conectividad: ahora se puede utilizar el teléfono para dar acceso a Internet a otros dispositivos (tethering), tanto por USB como por Wi-Fi. También se añade el soporte a Wi-Fi IEEE 802.11n y notificaciones push.
Android 2.3 Gingerbread Nivel de API 9 (diciembre 2010)
Incorpora un nuevo interfaz de usuario con un diseño actualizado. Dentro de las mejoras de la interfaz de usuario se destaca la mejora de la funcionalidad de “cortar, copiar y pegar” y un teclado en pantalla con capacidad multitáctil.
Entre otras novedades puede mencionarse el soporte nativo para telefonía sobre Internet VoIP/SIP. El soporte para reproducción de vídeo WebM/VP8 y codificación de audio AAC. El soporte para la tecnología NFC. Las facilidades en el audio, gráficos y entradas para los desarrolladores de juegos. El soporte nativo para más sensores (como giroscopios y barómetros). Un gestor de descargas para las descargas largas.
Android 3.0 Honeycomb Nivel de API 11 (febrero 2011)
Para mejorar la experiencia de Android en las nuevas tabletas se lanza la versión 3.0 optimizada para dispositivos con pantallas grandes. La nueva interfaz de usuario ha sido completamente rediseñada con paradigmas nuevos para la interacción y navegación. Entre las novedades introducidas destacan: Los fragments, con los que podemos diseñar diferentes elementos del interfaz de usuario. Mejor soporte para redes Wi-Fi, así como guardar una configuración independiente para cada SSID.
Se mejoran los gráficos 2D/3D gracias al renderizador OpenGL acelerado por hardware. Aparece el nuevo motor de gráficos Rederscript, que saca mayor rendimiento al hardware e incorpora su propia API. Se incorpora un nuevo motor de animaciones mucho más flexible, conocido como animación de propiedades.
29 Android 3.1 Nivel de API 12 (mayo 2011)
Se permite manejar dispositivos conectados por USB (tanto host como dispositivo). Protocolo de transferencia de fotos y vídeo (PTP/MTP) y de tiempo real (RTP).
Android 3.2 Nivel de API 13 (julio 2011)
Optimizaciones para distintos tipos de tableta. Zoom compatible para aplicaciones de tamaño fijo. Sincronización multimedia desde SD.
Android 4.0 Ice Cream Sándwich Nivel de API 14 (octubre 2011)
La característica que más se resalta en esta API es que se integran las dos versiones anteriores (2.x para teléfonos y 3.x para tabletas) en una sola compatible con cualquier tipo de dispositivo. Se introduce una nueva interfaz de usuario totalmente renovada, se reemplazan los botones físicos por botones en pantalla (como ocurría en las versiones 3.x). Nueva API de reconocimiento facial que, entre otras muchas aplicaciones, permite al propietario desbloquear el teléfono. También se mejora en el reconocimiento de voz; por ejemplo, se puede empezar a hablar sin esperar la conexión con el servidor.
Aparece un nuevo gestor de tráfico de datos por Internet, donde se puede ver el consumo de forma gráfica y definir los límites de ese consumo. Se mejora la API para comunicaciones por NFC y la integración con redes sociales.
En diciembre de 2011 aparece una actualización de mantenimiento (versión 4.0.2) que no aumenta el nivel de API.
Android 4.0.3 Nivel de API 15 (diciembre 2011)
Se introducen ligeras mejoras en algunas APIs incluyendo el de redes sociales, calendario, revisor ortográfico, texto a voz y bases de datos entre otros. En marzo de 2012 aparece la actualización 4.0.4.
Android 4.1 Jelly Bean Nivel de API 16 (julio 2012)
En esta versión se hace hincapié en mejorar un punto débil de Android: la fluidez de la interfaz de usuario. Con este propósito se incorporan varias técnicas: sincronismo vertical, triple búfer y aumento de la velocidad del procesador al tocar la pantalla. Se incorporan nuevos soportes para usuarios internacionales, como texto bidireccional y teclados instalables. Para mejorar la seguridad, las
30
aplicaciones son cifradas. También se permiten actualizaciones parciales de aplicaciones
Android 4.2 Nivel de API 17 (noviembre 2012)
Una de las novedades más importantes es que podemos crear varias cuentas de usuario en el mismo dispositivo. Aunque, esta característica solo está disponible en tabletas. Cada cuenta tendrá sus propias aplicaciones y configuración.
Los Widgets de escritorio pueden aparecer en la pantalla de bloqueo. Se agrega un nuevo teclado predictivo deslizante al estilo Swype. Posibilidad de conectar dispositivo y TV HD mediante wifi (Miracast). Mejoras menores en las notificaciones. Nueva aplicación de cámara que incorpora la funcionalidad Photo Sphere para hacer fotos panorámicas (en 360º).
Android 4.3 Nivel de API 18 (julio 2013)
Esta versión agrega mejoras en varias áreas. Entre ellas los perfiles restringidos (disponible sólo en tabletas) que permiten controlar los derechos de los usuarios para ejecutar aplicaciones específicas y para tener acceso a datos específicos. Se da soporte para Bluetooth Low Energy (BLE) que permite a los dispositivos Android comunicarse con los periféricos con bajo consumo de energía. Se agregan nuevas características para la codificación, transmisión y multiplexación de datos multimedia. Se da soporte para OpenGL ES 3.0. Se mejora la seguridad para gestionar y ocultar las claves privadas y credenciales.
Android 4.4 Kitkat Nivel de API 19 (octubre 2013)
Aunque se esperaba un lanzamiento de la versión número 5.0 y con el nombre Key Lime Pie, Google sorprendió con el cambio de nombre, que se debió a un acuerdo con Nestlé para asociar ambas marcas.
El principal objetivo de la versión 4.4 es hacer que Android esté disponible en una gama aún más amplia de dispositivos, incluyendo aquellos con tamaños de memoria RAM de solo 512 MB. Para ello, todos los componentes principales de Android han sido minimizados para reducir requerimientos de memoria, y se ha creado una nueva API que puede adaptar las ejecuciones de la aplicación en dispositivos con poca memoria. Se mejora la conectividad con soporte de NFC para emular tarjetas de pago tipo HCE, varios protocolos sobre Bluetooth y soporte para mandos infrarrojos. También se mejoran los sensores para disminuir su consumo y se incorpora un sensor contador de pasos.
31
Android 5.0 Lollipop Nivel de API 21 (noviembre 2014)
La novedad más importante de Lollipop es la extensión de Android a nuevas plataformas, incluyendo Android Wear, Android TV y Android Auto. Hay un cambio significativo en la arquitectura, al utilizar la máquina virtual ART en lugar de Dalvik. Esta novedad ya había sido incorporada en la versión anterior a modo de prueba. ART mejora de forma considerable el tiempo de ejecución del código escrito en Java. Además se soporta dispositivos de 64 bits en procesadores ARM, x86, y MIPS. Muchas aplicaciones del sistema (Chrome, Gmail,…) se han incorporado en código nativo para una ejecución más rápida. El nuevo enfoque se centra en Material Design Consiste en una guía completa para el diseño visual, el movimiento y las interacciones a través de plataformas y dispositivos. Google pretende aplicar esta iniciativa a todas las plataformas, incluyendo wearables y Google TV.
Android 5.1 Nivel de API 22 (marzo 2015)
A nivel de API se añade soporte para varias tarjetas SIM en un mismo teléfono; la clase Android Http Client se marca como obsoleta; y se añade un API para que las empresas proveedoras de servicios de telecomunicación puedan distribuir software de forma segura a través de Google Play. La característica más interesante es que para poder acceder a esta API la aplicación ha de estar firmada con un certificado que coincida con el que el usuario tiene en su tarjeta UICC. Android 6.0 Mashmallow Nivel de API 23 (octubre 2015)
Android 6.0 agrega un nuevo asistente de voz Now on Tap. Una evolución de Google Now más integrada con las aplicaciones. Se activa con pulsación larga de home. Aparecerán tarjetas sobre la aplicación actual. Se añade un API que permite interacciones basadas en voz. Es decir, si una aplicación ha sido lanzada por voz, se puede solicitar una confirmación de voz del usuario, seleccionar de una lista de opciones o cualquier información que se requiera. Se puede utilizar parte de un dispositivo de almacenamiento externo, para que sea usado como almacenamiento interno. Posibilidad de fragmentar, formatear y encriptar una tarjeta SD para ser usada como memoria interna.
32 3.4. Linux
Linux es un sistema operativo basado en UNIX compatible con la mayoría de computadores de escritorio y laptops, cuenta con una licencia GNU GPL, lo que significa que su código fuente siempre está accesible y puede ser modificado y acomodado al gusto de sus usuarios o desarrolladores que quieran aportar al proyecto. Es software libre y de distribución masiva que cuenta con muchas distribuciones, algunas de ellas enfocadas y especializadas en temas como seguridad, servidores, o sistemas operativos de escritorio bastante estables y muy usados por los amantes del software libre, comunidad que crece cada vez más en el mundo.
Es un sistema operativo que al ser de licencia GPL ha sido programado por varios desarrolladores alrededor del mundo y cuenta con soporte en todas sus distribuciones. Que sea software libre no significa necesariamente que es totalmente gratis, hay paquetes y algunas distribuciones de Linux muy específicas que son de pago, lo que garantiza más seguridad y mejor desempeño.
Una gran ventaja al ser desarrollado por tantas personas a nivel mundial, es que tiene un sin número de paquetes y software de terceros que alimentan el sistema operativo constantemente, haciendo mucho más fácil su actualización y la resolución de problemas de sus distribuciones.
Hoy en día, Linux soporta los más importantes sistemas de protección de datos como bases de datos de bancos gobiernos y empresas multinacionales, pues dado que es un sistema de alta seguridad y de difícil penetración de sus sistemas, garantiza una confiabilidad mayor a los usuarios cuando se tiene información crítica como bases de datos que pueden llegar a afectar la solidez de algunas compañías.
Linux es un sistema que permite interactuar entre diferentes consolas para la configuración y ejecución de distintas funciones, esto lo hace un sistema más ágil y de una ejecución de procesos más rápida.
Una de las ventajas más importantes y que lo ha posicionado como uno de los sistemas operativos más usados a nivel mundial y que cada vez gana más usuarios, es su seguridad y minimalismo, teniendo una interfaz gráfica fácil y sencilla.
33
Este sistema operativo es también reconocido por aprovechar los recursos de la máquina donde se aloja optimizando la ejecución de sus aplicaciones.
Linux soporta LTS (lLong Term Support) garantizando el uso de sus distribuciones y ganando usuarios por su rapidez en solución de bugs y problemas.
Algunas desventajas son su entorno gráfico limitado que puede llegar a decepcionar a muchos usuarios; también que no cuenta con muchas de las aplicaciones comerciales que son usadas para desarrollos más robustos tales como programas de diseño o arquitectura (Pons, 2013).
3.4.1. Ubuntu
Como se menciona, Linux es el Kernel o núcleo, por su parte Ubuntu es un sistema operativo que hace uso de Linux como su Kernel y que a su vez es basado en Debian y de licencia GPL GNU. Su código fuente está disponible a cualquier persona, la compañía encargada de producción las versiones de este sistema operativo es Canonical quien hasta el momento en sus 7 años de lanzamiento del SO ha producido 16 versiones las cuales han ido avanzando una a una en muchas aspectos importantes, enfocado a usuarios de alto nivel y medio. Dentro de las características principales de este Sistema Operativo puede resaltarse su rapidez para ejecutar programas y para gestionar e interactuar con los servidores basados en Linux de una manera mucho más fácil, rápida, segura y de forma gratuita, pues es mantenido por una gran cantidad de desarrolladores que están aportando sus conocimientos para mejorarlo cada vez más.
Tiene como filosofía el software libre, lo que quiere decir que puede ser copiado, editado y distribuido libremente sin ningún costo. Canonical, que es la empresa que lo mantiene, ofrece capacitaciones y mantenimiento al sistema operativo. Al ser una distribución Linux no cuenta con virus registrados hasta ahora esto lo hace ideal para alojar grandes cantidades de información sin ningún riego de pérdida o plagio con contaminación de virus.
Ubuntu es una de las distribuciones Linux más usada en el mundo y su principal interés es entrar a competir directamente con sistemas operativos de escritorio tales como Windows, y Mac OS quienes tienen la mayor cantidad del mercado a nivel mundial. Ubuntu además de ofrecer las ya nombradas bondades por ser un sistema operativo con Kernel Linux y basado en Debian, incorpora en cada
34
versión, mejoras que a nivel de usuario impactan y ayudan a realizar tareas complejas de una manera más sencilla y rápida, por eso cada vez salen más y mejores paquetes de instalación con aplicaciones que son de uso regular y que de esta manera, cubre un gran número de necesidades que requieren los usuarios más exigentes.
A pesar de ser un sistema operativo totalmente diferente en su entorno gráfico y en el manejo de muchas de sus funciones de administración Ubuntu, es una de las distribuciones preferidas por las personas que apenas hacen incursión al software libre, pues cuenta con una gran comunidad dedicada a solucionar dudas y errores que se presenten en la distribución. Ofrece nuevas alternativas un entorno amigable y muy personalizable lo que lo hace mucho más atractivo a los usuarios que nos e conforman con lo mismo (Chamillard, 2011).
Por estas y otras ventajas, el sistema operativo Ubuntu fue el elegido para el despliegue en servidor del administrador web de la aplicación Pereira Circula. En este sistema operativo se realizó la instalación de los componentes necesarios para la ejecución del Framework Django, que es mencionado posteriormente.
3.5. Modelo Vista Controlador (MVC)
El desarrollo de aplicaciones web y el desarrollo de las aplicaciones móviles están adoptando un patrón en sus formas de desarrollo haciendo que sea más ágil y optimo, es aquí donde aparecen las siglas MVC (Modelo Vista Controlador) pero, ¿a qué se refiere esto? No es más que separar el desarrollo de las aplicaciones en 3 partes fundamentales, se debe tener en cuenta que si se tiene un problema dividido será mucho más sencillo de resolver. Básicamente lo que busca el patrón modelo-vista-controlador es hacer la vida del programador mucho más sencilla centrándose en una arquitectura de programación ideal donde se pueda agilizar el desarrollo de las mismas y a su vez llegar a un producto que se desarrolló en menor tiempo pero que cumple con estándares de alta calidad.
Esto es algo a lo que la arquitectura MVC le está apostando, y desde sus inicios y hasta ahora han aparecido infinidad de Frameworks que lo que hacen básicamente es plantear un modo de desarrollo ágil, sin olvidar la seguridad y que se pueda tener una mejor disponibilidad del código de la aplicación, además de eso facilitar la adición de nuevos módulos a un desarrollo, lo que se traduce en una escalabilidad real y efectiva. Este tipo de implementación también permite la
35
reutilización de código pues posibilita la manera de reutilizar funciones en varios casos que se necesite.
Para una aplicación web desarrollada con esta arquitectura (Modelo-Vista-Controlador), es necesario tener implementado un buen modelo de datos, pues hay que tener en cuenta que otras de las ventajas que brinda este modelo, es que el programador web se olvida, en gran mayoría, de las consultas a las bases de datos que puede llegar a ser un verdadero dolor de cabeza pasar muchos desarrolladores.
Esto se debe a que en el desarrollo orientado con el Modelo-Vista-Controlador, es muy probable y común que en la definición de la estructura de datos (Modelo), se tengan procesos de persistencia automáticos y estandarizados.
Figura 3. Arquitectura Modelo – Vista – Controlador
Fuente: Talledo, J. (2015). Implantación de aplicaciones web en entornos internet, intranet y extranet. España: Ediciones Parainfo S.A.
De esta manera puede definirse el modelo, o como es llamado capa de datos, como los elementos donde se representan y gestionan los datos manejados por la aplicación. El ejemplo más claro para esto es interacción con las bases de datos haciendo todo tipo de tareas.
La vista o capa de presentación, es la parte que se encarga de lo grafico de una aplicación web (código HTML, JavaScript, JQuery. Etc…). Es con lo que el usuario final interactúa: formularios, interfaces gráficas, entre otros.
Controlador o capa de control, se compone de todas las órdenes y todo lo relacionado con los eventos dentro de una aplicación móvil o aplicación web. Es el encargado de decidir qué vista cargar cuando un usuario hace una petición, de esta manera también interactúa con el modelo para realizar una óptima consulta
36
de los datos solicitados por el usuario. En pocas palabras, es el intermediario entre la capa de presentación y el modelo de datos.
3.6. Framework web
Según Gutierrez (2016), el concepto de Framework se emplea en muchos ámbitos del desarrollo de sistemas software, no solo en el ámbito de aplicaciones Web. Pueden encontrarse Framework para el desarrollo de aplicaciones médicas, de visión por computador, para el desarrollo de juegos, y para muchos otros ámbitos. En general, el término Framework, se refiere a una estructura software compuesta de componentes personalizables e intercambiables para el desarrollo de una aplicación. En otras palabras, un Framework se puede considerar como una aplicación genérica incompleta y configurable a la que pueden añadírsele las últimas piezas para construir una aplicación concreta.
Un Framework tiene básicamente los siguientes objetivos: acelerar el proceso de desarrollo, reutilizar código ya existente y promover buenas prácticas de desarrollo, como el uso de patrones, la documentación del código, entre otros. Un Framework Web, por tanto, puede definirse como un conjunto de componentes (por ejemplo clases en java y descriptores y archivos de configuración en XML) que componen un diseño reutilizable que facilita y agiliza el desarrollo de sistemas Web.
La mayoría de los Framework web tienen como filosofía hacer la vida del programador web mucho más fácil y sencilla a la hora de implementar una aplicación o página web, por eso es muy común actualmente que la mayoría de desarrolladores utilicen rameworks para sus actividades diarias de desarrollo pues, además de ser una tendencia, también ayuda en la reducción de tiempo que se toma a la hora de llevar a cabo un proyecto.
Además de estas ya nombradas ventajas se puede llegar a proporcionar sitios web más dinámicos e interactivos con el usuario final, quien en realidad va a usar el sitio con más frecuencia
Existen varios tipos de framework Web: orientados a la interfaz de usuario, a la publicación de documentos, al control de eventos y algunos que incluyen varios elementos como Tapestry. La mayoría de frameworks Web se encargan de ofrecer una capa de controladores de acuerdo con el patrón MVC o con el modelo 2 de
37
Servlets y JSP, ofreciendo mecanismos para facilitar la integración con otras herramientas para la implementación de las capas de negocio y presentación.
3.6.1. Django
Framework web de Python de alto nivel que es usado por los desarrolladores web que desean un amplio modelo de escalabilidad y una manera más rápida y ágil de programar aplicativos web. Es construido por desarrolladores con amplia experiencia y al ser un Framework se encarga de la mayoría de las tareas que pueden llegar a ser un poco molestas tales como hacer consultas SQL, y demás procesos de fondo que algunos desarrolladores web prefieren que sean apoyados directamente por un Framework.
Además de esto, Django es un Framework muy veloz, pues puede procesar solicitudes mucho más rápido que algunos de sus contendores haciendo el trabajo mucho más fácil. Una de sus características a destacar es que es Open Source, lo que trae una ventaja y es que hay una comunidad detrás de él construyéndolo y mejorándolo constantemente.
Puede notarse que la autenticación de usuarios Django la crea por sí mismo, incorporando un gran modelo de seguridad al separar en inicio de sesión de administrador y de clientes, eso al ser una ventaja también sirve para optimizar tiempos de implementación, pues los desarrolladores web tardan menos tiempo en crear módulos con Django ya que este Framework trae librerías que sirven para la mayoría de cosas que se necesitan en una página web.
Django trabaja totalmente integrado con Python. Si se desea tener un óptimo desarrollo puede usarse en distribuciones Linux para mejorar su uso aunque trabaja muy bien en plataformas Windows, es de fácil instalación y de fácil manejo, quizás una de las mayores ventajas que tiene Django en comparación con un desarrollo limpio como PHP, es que en Django los modelos de bases de datos, las consultas, las inserciones en las tablas o las modificaciones de las mismas se hacen de una manera mucho más sencilla y rápida que en un desarrollo manual, esto otorga mucha facilidad a la hora de desarrollar algún proyecto web que tenga un motor de base de datos y que constantemente se esté almacenando o haciendo peticiones a la misma(Django, 2016).
38
class Vehiculo(models.Model):
nombre = models.CharField(max_length=15,help_text="Este campo es el nombre del vehiculo que el usario le puso")
placa = models.CharField(max_length=6,help_text="Placa del vehiculo") TIPO = (
('m', 'Moto'), ('c', 'Carro'), )
tipo = models.CharField(max_length=1, choices=TIPO) hora = models.TimeField(null=True, blank=True) usuario = models.ForeignKey(Usuario)
Aquí se puede observar la manera como se define una clase creando un modelo de datos, puede notarse que en los campos “nombre” y “placa” se le restringe el número de caracteres y se le agrega un texto de ayuda, en el campo “tipo” el administrador podrá elegir entre las opciones Moto y Carro definidas anteriormente, el campo “hora” se define como un tipo de dato de tiempo y se indica que ese campo puede llegar a estar vacío y por lo tanto no es obligatorio, y al final la respectiva relación con la tabla Usuario
3.6.2. Django Push Notification
Es una aplicación (Plugin) para Django, que permite enviar desde un Web Service previamente configurado notificaciones de inserción a los dispositivos móviles. Estas notificaciones se envían mediante estos tres modelos CGM, APN y WNS. Los modelos comparten ciertos atributos iguales como:
Name (opcional): Un nombre para el dispositivo.
Active (por defecto es true): Un valor booleano que determina si el dispositivo notificaciones se enviarán.
User (opcional): Una clave externa a auth.user, si desea vincular el dispositivo a un usuario específico.
Device id (opcional): Un UUID para el dispositivo obtenido de Android / iOS / API de Windows, si lo desea para identificar de manera única.
Registration id (requerido): El ID de registro GCM o el token de APN para el dispositivo.
Además de estas opciones ya mencionadas, también implementa un panel de administración que puede configurarse para enviar notificaciones individualmente o empaquetadas a varios usuarios al tiempo, esto hace que la aplicación sea
39
bastante poderosa y de una fuerte aplicación a la hora de integrar una aplicación móvil con una aplicación web desarrollada, en este caso en Django.
GCM1 le permite al servidor donde se encuentra la aplicación web enviar un
mensaje a varios dispositivos móviles donde se encuentre instalada la respectiva aplicación móvil. Basado en el modelo de publicación / suscripción, la mensajería es compatible con las suscripciones ilimitadas por aplicación. Los desarrolladores de la aplicación web pueden elegir cualquier nombre que coincida con la expresión regular, "/topics/[a-zA-Z0-9-_.~%]+" (Leclanche, 2016).
Nota: gcm_send_bulk_message esto debe ser utilizado al enviar mensajes a los clientes que tienen activo el servicio de las notificaciones, y establecer el primer parámetro a un valor distinto de Ninguno se traducirá en un error 400 de HTTP. Además de esto Django Push Notification cuenta el soporte y la integración a Django 3.4 y 3.5 haciendo así más sencillo el desarrollo de las diferentes aplicaciones web integradas con las aplicaciones móviles para enviar notificaciones a los usuarios que tengan activado este servicio o a los que por defecto se les envía notificaciones del sistema.
3.7. Webservice y HTTP
HTTP (Protocolo de transferencia de hipertexto) es el protocolo más utilizado en Internet. La versión 0.9 sólo tenía la finalidad de transferir los datos a través de Internet (en particular las páginas Web escritas en HTML).
La versión 1.0 del protocolo (fue la más utilizada) permite la transferencia de mensajes con encabezados que describen el contenido de los mensajes mediante la codificación MIME.
La idea del protocolo HTTP es permitir la transferencia de archivos (principalmente, en formato HTML) entre un navegador (el cliente) y un servidor web (denominado entre otros httpd en equipos UNIX) localizado mediante una cadena de caracteres denominada dirección URL.
La comunicación entre el navegador y el servidor se lleva a cabo en dos etapas:
40
Figura 4. Funcionamiento Protocolo HTTP
Fuente: Kioskea. (2014). El Protocolo HTTP. Recuperado el 14 de Octubre de 2016, de http://es.ccm.net/contents/264-el-protocolo-http
El navegador realiza una solicitud HTTP
El servidor procesa la solicitud y después envía una respuesta HTTP
En realidad, la comunicación se realiza en más etapas si se considera el procesamiento de la solicitud en el servidor. Dado que sólo nos ocupamos del protocolo HTTP, no se explicará la parte del procesamiento en el servidor en esta sección del artículo. Si este tema les interesa, puede consultar el artículo sobre el tratamiento de CGI.
El propósito del protocolo HTTP es permitir la transferencia de archivos (principalmente, en formato HTML). Entre un navegador (el cliente) y un servidor web (denominado, entre otros, http en equipos UNIX) localizado mediante una cadena de caracteres denominada dirección URL.
Solicitud HTTP
Una solicitud HTTP es un conjunto de líneas que el navegador envía al servidor. Incluye:
Una línea de solicitud: es una línea que especifica el tipo de documento solicitado, el método que se aplicará y la versión del protocolo utilizada. La
41
línea está formada por tres elementos que deben estar separados por un espacio:
El método
La dirección URL
La versión del protocolo utilizada por el cliente (por lo general, HTTP/1.0)
Los campos del encabezado de solicitud: es un conjunto de líneas opcionales que permiten aportar información adicional sobre la solicitud y/o el cliente (navegador, sistema operativo, etc.). Cada una de estas líneas está formada por un nombre que describe el tipo de encabezado, seguido de dos puntos (:) y el valor del encabezado.
El cuerpo de la solicitud: es un conjunto de líneas opcionales que deben estar separadas de las líneas precedentes por una línea en blanco y, por ejemplo, permiten que se envíen datos por un comando POST durante la transmisión de datos al servidor utilizando un formulario (Kioskea, 2014). 3.7.1. Métodos HTTP
Los métodos más utilizados El protocolo HTTP según CCM son: GET: Solicita el recurso ubicado en la URL especificada
HEAD: Solicita el encabezado del recurso ubicado en la URL especificada POST: Envía datos al programa ubicado en la URL
PUT: Envía datos a la URL
DELETE: Borra el recurso ubicado en la URL
3.7.2. Que es un servicio web: (Web Service)
El consorcio W3C (2007) define los Servicios Web como sistemas software diseñados para soportar una interacción interoperable maquina a máquina sobre una red. Los Servicios Web suelen ser APIs Web que pueden ser accedidas dentro de una red (principalmente Internet) y son ejecutados en el sistema que los aloja. La definición de Servicios Web propuesta alberga muchos tipos diferentes de sistemas, pero el caso común de uso de refiere a clientes y servidores que se comunican mediante mensajes XML que siguen el estándar SOAP. En los últimos años se ha popularizado un estilo de arquitectura Software conocido como REST