desarrollo de aplicaciÓn movil de transporte …

29
DESARROLLO DE APLICACIÓN MOVIL DE TRANSPORTE ENTRE LA COMUNIDAD UNIVERSITARIA CON CAPACIDAD DE GEOLOCALIZACION PARA EL PROYECTO UD SOBRE RUEDAS. NESTOR RAUL GUZMAN DIAZ MIGUEL CHAPARRO ARIZA UNIVERSIDAD DISTRITAL FRANCISCO JOSÉ DE CALDAS FACULTAD TECNOLÓGICA INGENIERÍA EN TELECOMUNICACIONES BOGOTÁ D.C. 2017

Upload: others

Post on 14-Nov-2021

8 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: DESARROLLO DE APLICACIÓN MOVIL DE TRANSPORTE …

DESARROLLO DE APLICACIÓN MOVIL DE TRANSPORTE ENTRE LA

COMUNIDAD UNIVERSITARIA CON CAPACIDAD DE GEOLOCALIZACION

PARA EL PROYECTO UD SOBRE RUEDAS.

NESTOR RAUL GUZMAN DIAZ

MIGUEL CHAPARRO ARIZA

UNIVERSIDAD DISTRITAL FRANCISCO JOSÉ DE CALDAS

FACULTAD TECNOLÓGICA

INGENIERÍA EN TELECOMUNICACIONES

BOGOTÁ D.C.

2017

Page 2: DESARROLLO DE APLICACIÓN MOVIL DE TRANSPORTE …

DESARROLLO DE APLICACIÓN MOVIL DE TRANSPORTE ENTRE LA

COMUNIDAD UNIVERSITARIA CON CAPACIDAD DE GEOLOCALIZACION

PARA EL PROYECTO UD SOBRE RUEDAS.

NESTOR RAUL GUZMAN DIAZ

MIGUEL CHAPARRO ARIZA

DIRECTOR DE PROYECTO

ING. GIOVANI MANCILLA GAONA

Trabajo de grado para optar al título de profesional en Ingeniería en

Telecomunicaciones

UNIVERSIDAD DISTRITAL FRANCISCO JOSÉ DE CALDAS

FACULTAD TECNOLÓGICA

INGENIERÍA EN TELECOMUNICACIONES

BOGOTÁ D.C.

2017

Page 3: DESARROLLO DE APLICACIÓN MOVIL DE TRANSPORTE …

INDICE DE CONTENIDO.

1. INTRODUCCION ...................................................................................................................... 5

2. ANTECEDENTES .................................................................................................................... 6

3. OBJETIVOS .............................................................................................................................. 8

4. MARCO TEORICO .................................................................................................................. 9

5. METODOLOGÍA ..................................................................................................................... 16

6. RESULTADOS ....................................................................................................................... 19

7. CONCLUSIONES ................................................................................................................... 26

8. AGRADECIMIENTOS ........................................................................................................... 27

9. REFERENCIAS ..................................................................................................................... 28

Page 4: DESARROLLO DE APLICACIÓN MOVIL DE TRANSPORTE …

INDICE DE FIGURAS

Figura 1. Arquitectura en cuatro capas MDA.

Figura 2. Diagrama de flujo de metodología aplicada.

Figura 3. Arquitectura de aplicación Ud sobre ruedas

Figura 4. Generación Apk en apache Cordova.

Figura 5. Pantalla de inicio e ingreso

Figura 6. Geolocalizacion

Figura 7. Formulario y descripción del modo de viaje. Figura 8. Listado de usuarios que compartieron su ruta Figura 9. Envío de solicitud

Figura 10. Menú general.

Page 5: DESARROLLO DE APLICACIÓN MOVIL DE TRANSPORTE …

1. INTRODUCCION

Hoy en día las telecomunicaciones es una necesidad primordial para todas las

personas, a lo largo de la historia se ha observado la evolución a pasos

agigantados que ha tenido los sistemas de telecomunicaciones, últimamente el

auge de la tecnología crece en cualquier ámbito; el diseño, la implementación etc,

el uso de los sistemas de telecomunicaciones se hace una actividad cada vez más

común y cotidiana, como parte fundamental de la economía. El auge e incremento

de las aplicaciones móviles ha crecido últimamente dando solución y

acomodándose a la vida cotidiana del usuario sobre todo en cuanto a movilización

y transporte dentro de un ámbito urbano.

Siendo el problema de movilización muy común entre los miembros de la

universidad sobre todo en cuanto a tráfico y seguridad, el grupo de investigación

Gidenutas crea el proyecto UDsobreRuedas con el fin de que los miembros de la

comunidad universitaria compartan su destino, ruta, su forma de transportarse etc.

Inicialmente el proyecto se desarrolló en una página de Facebook, con el fin de

permitir el transporte colectivo entre los estudiantes de la universidad distrital para

llegar a su destino, generando asi comodidad y solidaridad entre la comunidad

universitaria. Debido a esto se pretende desarrollar e implementar una aplicación

para dispositivos móviles que permita el funcionamiento y optimización de este

proyecto, permitiendo a los usuarios mayor comodidad y facilidad para compartir

sus rutas.

Page 6: DESARROLLO DE APLICACIÓN MOVIL DE TRANSPORTE …

2. ANTECEDENTES

Actualmente a nivel mundial se están implementando y desarrollando soluciones y aplicaciones móviles para la movilidad en el casco urbano, compartir el vehículo y convertir esa práctica en sinónimo de conocer gente, reservar un cupo en un transporte, ahorrar gastos y tiempo es el objetivo con las que fueron creadas.

2.1 Fuimonos

“La mayoría de usuarios de esta app son personas que trabajan en la misma empresa, o estudiantes que quieren compartir su carro para reducir los costos de movilización”, apuntó el directivo. Garzón detalló que en tan solo un mes de operaciones se han transportado unos 1.400 pasajeros, que se han comunicado a través de unos 13.000 mensajes internos en la aplicación. Estos emprendedores lograron triplicar la ocupación vehicular promedio en la ciudad que, según Garzón, es de 1,5 pasajeros por auto y así "reducir el tiempo que se demoran las personas en ir a sus trabajos". Para emplear los servicios de 'Fuímonos' los usuarios tienen que ingresar al portal y seleccionar la comunidad a la que pertenecen, es decir, confirmar si son empleados o estudiantes de alguna de las entidades reconocidas por el sistema. Luego el interesado registra un correo institucional que valide esa información, pone un nombre y crea una contraseña con la que ingresará al sistema. En esta aplicación los conductores tienen la libertad de decidir si cobran o no por su servicio. Además pueden dar detalles de su itinerario para que las personas tengan más información sobre la ruta. [1]

2.2 Tripda

Tripda es una aplicación creada por brasileños y apoyada por la aceleradora alemana Rocket Internet. Promueve el uso de carro compartido entre ciudades e incentiva el ahorro en gastos de viaje. Fue lanzada en Colombia en julio del 2015. La aplicación se ha popularizado, sobre todo, en periodos vacacionales y festivos. Durante la temporada navideña, 1.200 personas viajaron con Tripda cubriendo rutas como Bogotá-Villavicencio, Bogotá-Cali, Bogotá-Girardot, Bogotá-Melgar, Barranquilla- Santa Marta, Cali-Palmira, Bogotá-Tunja y Bogotá-Manizales. Tripda busca fomentar el consumo colaborativo. No buscamos que el usuario se lucre con la aplicación, sino que comparta los gastos del viaje. Dependiendo de la ruta elegida, compartir carro puede suponer un ahorro de hasta el 80 por ciento en los costos de desplazamiento. [2]

2.3 Mi Aguila

Esta herramienta fue desarrollada para que los usuarios que se encuentren en puntos cercanos compartan un solo carro a la hora de desplazarse a su lugar de destino. Lo importante es empezar a generar confianza entre la gente, porque

Page 7: DESARROLLO DE APLICACIÓN MOVIL DE TRANSPORTE …

muchos viven cerca, van para el mismo sitio y no se conocen. Los usuarios deben pertenecer a una red registrada previamente por Mi Águila; después la conexión se realiza a través de Facebook, por lo tanto los usuarios pueden ver el perfil de quienes estarán en el auto. Por último, Mi Águila verifica cada uno de los datos proporcionados. Además, lo novedoso de esta aplicación es que el conductor puede recibir un reconocimiento económico por transportar al resto de los pasajeros. El objetivo de esta app es eliminar la congestión vehicular y disminuir el impacto ambiental. Mi Águila se encuentra disponible para dispositivos IOS y Android. [3] 2.4 Uber Technologies INC. Es una empresa internacional que proporciona a sus clientes una red de transporte privado, a través de su software de aplicación móvil (app), que conecta los pasajeros con los conductores de vehículos registrados en su servicio, los cuales ofrecen un servicio de transporte a particulares. La empresa organiza recogidas en decenas de ciudades de todo el mundo y tiene su sede en San Francisco, California. [4] 2.5 Tappsi Es una aplicación que se creó para tratar de simplificar la forma actual en que se piden o reservan taxis, se crea de la necesidad que casi todos vivimos al momento de querer reservar un taxi, para solo darnos cuenta que nos va mejor saliendo a la lluvia para tratar de frenar uno, o mirando a ver si se puede caminar a nuestro destino final. [5] A diferencia de los proyectos anteriormente mencionados, el proyecto que se

pretende desarrollar está orientado hacia la comunidad universitaria, pretende

optimizar y facilitar el tiempo y recorrido de los usuarios desde sus puntos de

origen hacia la universidad, contribuyendo a la movilidad en la ciudad y al

cumplimiento en los horarios académicos.

Page 8: DESARROLLO DE APLICACIÓN MOVIL DE TRANSPORTE …

3. OBJETIVOS

3.1 Objetivo General

Desarrollar una aplicación móvil para el transporte con capacidad de geolocalización, enfocada a los estudiantes de la universidad Distrital facultad tecnológica, en el proyecto UD sobre ruedas.

.

3.2 Objetivos Específicos

• Crear esquema o arquitectura del proyecto para las alternativas de transporte (bicicletas, vehículos, motos, y caminantes)

• Diseñar una aplicación móvil con capacidad de geolocalización integrado entre un servidor de negocio y servidor de base de datos

• Crear un web service para generar comunicación entre la aplicación móvil y el servidor.

• Generar protocolo de pruebas que permita obtener estadísticas de usabilidad y calidad.

Page 9: DESARROLLO DE APLICACIÓN MOVIL DE TRANSPORTE …

4. MARCO TEORICO

4.1 Aplicaciones Moviles

Las aplicaciones también llamadas apps están presentes en los teléfonos desde hace tiempo; de hecho, ya estaban incluidos en los sistemas operativos de Nokia o Blackberry años atrás. Los móviles de esa época, contaban con pantallas reducidas y muchas veces no táctiles, y son los que ahora llamamos feature phones, en contraposición a los smartphones, más actuales. [6] En esencia, una aplicación no deja de ser un software. Para entender un poco mejor el concepto, podemos decir que las aplicaciones son para los móviles lo que los programas son para los ordenadores de escritorio.[9] Actualmente encontramos aplicaciones de todo tipo, forma y color, pero en los primeros teléfonos, estaban enfocadas en mejorar la productividad personal: se trataba de alarmas, calendarios, calculadoras y clientes de correo. Hubo un cambio grande con el ingreso de iPhone al mercado, ya que con él se generaron nuevos modelos de negocio que hicieron de las aplicaciones algo rentables, tanto para desarrolladores como para los mercados de aplicaciones, como App Store, Google Play y Windows Phone Store.

Al mismo tiempo, también mejoraron las herramientas de las que disponían diseñadores y programadores para desarrollar apps, facilitando la tarea de producir una aplicación y lanzarla al mercado, incluso por cuenta propia. [7]

4.2 JavaScript

(Abreviado comúnmente JS) es un lenguaje de programación interpretado, dialecto del estándar ECMAScript. Se define como orientado a objetos,[9] basado en prototipos, imperativo, débilmente tipado y dinámico.Se utiliza principalmente en su forma del lado del cliente (client-side), implementado como parte de un navegador webpermitiendo mejoras en la interfaz de usuario y páginas web dinámicas[10] aunque existe una forma de JavaScript del lado del servidor(Server-side JavaScrip o SSJS). Su uso en aplicaciones externas a la web, por ejemplo en documentos PDF, aplicaciones de escritorio (mayoritariamente widgets) es también significativo. [8]

Desde el 2012, todos los navegadores modernos soportan completamente ECMAScript 5.1, una versión de javascript. Los navegadores más antiguos soportan por lo menos ECMAScript 3. La sexta edición se liberó en Julio del 2015. JavaScript se diseñó con una sintaxis similar a C, aunque adopta nombres y convenciones del lenguaje de programación Java. Sin embargo, Java y JavaScript tienen semánticas y propósitos diferentes. [9]

4.3 Formato JSON

JavaScript Object Notation, es un formato de texto ligero para el intercambio de datos. JSON es un subconjunto de la notación literal de objetos de JavaScript aunque hoy, debido a su amplia adopción como alternativa a XML, se considera un formato de lenguaje independiente.Una de las supuestas ventajas de JSON sobre XML como formato de intercambio de datos es que es mucho más sencillo escribir un analizador sintáctico (parser) de JSON. En JavaScript, un texto JSON se puede analizar fácilmente usando la

Page 10: DESARROLLO DE APLICACIÓN MOVIL DE TRANSPORTE …

función eval(), lo cual ha sido fundamental para que JSON haya sido aceptado por parte de la comunidad de desarrolladores AJAX, debido a la ubicuidad de JavaScript en casi cualquier navegador web. [10]

En la práctica, los argumentos a favor de la facilidad de desarrollo de analizadores o del rendimiento de los mismos son poco relevantes, debido a las cuestiones de seguridad que

plantea el uso de eval() y el auge del procesamiento nativo de XML incorporado en los

navegadores modernos. Por esa razón, JSON se emplea habitualmente en entornos donde el tamaño del flujo de datos entre cliente y servidor es de vital importancia (de aquí su uso por Yahoo, Google, etc, que atienden a millones de usuarios) cuando la fuente de datos es explícitamente de fiar y donde no es importante el no disponer de procesamiento XSLT para manipular los datos en el cliente. Si bien es frecuente ver JSON posicionado contra XML, también es frecuente el uso de JSON y XML en la misma aplicación. Por ejemplo, una aplicación de cliente que integra datos de Google Maps con datos meteorológicos en SOAP hacen necesario soportar ambos formatos. [11]

4.4 HTML5

(HyperText Markup Language, versión 5) es la quinta revisión importante del lenguaje básico de la World Wide Web, HTML. HTML5 especifica dos variantes de sintaxis para HTML: una «clásica», HTML (text/html), conocida como HTML5, y una variante XHTML conocida como sintaxis XHTML5 que deberá servirse con sintaxis XML (application/xhtml+xml).[12] Esta es la primera vez que HTML y XHTML se han desarrollado en paralelo. La versión definitiva de la quinta revisión del estándar se publicó en octubre de 2014. [13]

Al no ser reconocido en viejas versiones de navegadores por sus nuevas etiquetas, se recomienda al usuario común actualizar su navegador a la versión más nueva, para poder disfrutar de todo el potencial que provee HTML5. El desarrollo de este lenguaje de marcado es regulado por el Consorcio W3C.

4.5 HTML5 Para App móviles hibridas

Como si se tratase de una síntesis al más puro estilo de la dialéctica hegeliana aparece el concepto de aplicación híbrida. Algo que tampoco es que sea totalmente nuevo pero si tiene que ver con una mayor madurez de las plataformas de desarrollo nativo y del soporte más generalizado de HTML5.

Las aplicaciones hibridas consisten en desarrollar la app en HTML5 y incrustarla en una ventana de navegador creada nativamente para la app. Básicamente las aplicaciones hibridas parecen sacar lo mejor de cada una de las opciones anteriores. Vamos a ver los pros y contras de cada opción y como el desarrollo híbrido parece dar una respuesta más que aceptable. [14]

Page 11: DESARROLLO DE APLICACIÓN MOVIL DE TRANSPORTE …

4.6 Framework

Es una estructura conceptual y tecnológica de soporte definido, normalmente, con artefactos o módulos concretos de software, que puede servir de base para la organización y desarrollo de software. Típicamente, puede incluir soporte de programas, bibliotecas, y un lenguaje interpretado, entre otras herramientas, para así ayudar a desarrollar y unir los diferentes componentes de un proyecto. [15]

4.6.1 Ionic

Ionic es una herramienta, gratuita y open source, para el desarrollo de aplicaciones híbridas basadas en HTML5, CSS y JS. Está construido con Sass y optimizado con AngularJS.

1.- AngularJS & Ionic: Ionic utiliza AngularJS con el fin de crear un marco más adecuado para desarrollar aplicaciones ricas y robustas. Ionic no sólo se ve bien, sino que su arquitectura central es robusta y seria para el desarrollo de aplicaciones. Trabaja perfectamente con AngularJS.

2.- Centro nativo: Ionic se inspira en las SDK de desarrollo móviles nativos más populares, por lo que es fácil de entender para cualquier persona que ha construido una aplicación nativa para iOS o Android. Lo interesante, como sabéis, es que desarrollas una vez, y compilas para varios.

3.-Bonito diseño:Limpio, sencillo y funcional. Ionic ha sido diseñado para poder trabajar con todos los dispositivos móviles actuales. Con muchos componentes usados en móviles, tipografía, elementos interactivos, etc.

4.-Un potente CLI: Con un sólo comando podrás crear, construir, probar y compilar tus aplicaciones en cualquier plataforma. [15]

4.6.2 Maven

Es una herramienta de software para la gestión y construcción de proyectos Java creada por Jason van Zyl, de Sonatype, en 2002. Es similar en funcionalidad a Apache Ant (y en menor medida a PEAR de PHP y CPAN de Perl), pero tiene un modelo de configuración de construcción más simple, basado en un formato XML. Estuvo integrado inicialmente dentro del proyecto Jakarta pero ahora ya es un proyecto de nivel superior de la Apache Software Foundation. Maven utiliza un Project Object Model (POM) para describir el proyecto de software a construir, sus dependencias de otros módulos y componentes externos, y el orden de construcción de los elementos. Viene con objetivos predefinidos para realizar ciertas tareas claramente definidas, como la compilación del código y su empaquetado. [16]

Una característica clave de Maven es que está listo para usar en red. El motor incluido en su núcleo puede dinámicamente descargar plugins de un repositorio, el mismo repositorio que provee acceso a muchas versiones de diferentes proyectos Open Source en Java, de Apache y otras organizaciones y desarrolladores. Este repositorio y su sucesor reorganizado, el repositorio Maven 2, pugnan por ser el mecanismo de facto de

Page 12: DESARROLLO DE APLICACIÓN MOVIL DE TRANSPORTE …

distribución de aplicaciones en Java, pero su adopción ha sido muy lenta. Maven provee soporte no solo para obtener archivos de su repositorio, sino también para subir artefactos al repositorio al final de la construcción de la aplicación, dejándola al acceso de todos los usuarios. Una caché local de artefactos actúa como la primera fuente para sincronizar la salida de los proyectos a un sistema local.

4.7 Google App Engine

Es un servicio de alojamiento web que presta Google de forma gratuita hasta determinadas cuotas. Este servicio permite ejecutar aplicaciones sobre la infraestructura de Google. Si no se cuenta con un dominio propio, Google proporciona uno con la siguiente estructura, midominio.appspot.com. También permite implementar un dominio propio a través de Google Apps. Por el momento las cuentas gratuitas tienen un límite de 500 megabyte de almacenamiento permanente y la suficiente cantidad de ancho de banda y CPU para cinco millones de visitas mensuales, y si la aplicación supera estas cuotas, se pueden comprar cuotas adicionales. Actualmente las aplicaciones Google App Engine se implementan mediante los lenguajes de programación Python, Java, Goy PHP. [17]

4.8 Aplicaciones de los lenguajes de dominio específico

Los lenguajes de dominio específico pueden ser considerados como argumentos escritos

en un lenguaje de programación más general. El lenguaje de programación “real” ejecuta

el parser sobre el código del DSL, para luego trabajar sobre él. Generalmente, las

funciones del DSL sólo se centran en lo que se quiere hacer, y el sistema más grande

resuelve el cómo hacerlo.

Son muchos los DSL existentes actualmente, suficiente como para cubrir gran parte de

las aplicaciones que se puedan necesitar. Los DSL más populares incluyen todos los

lenguajes de consulta (query), todos los lenguajes plantilla, Shell scripts, lenguajes de

almacenamiento e intercambio de datos como XML, o lenguajes para documentos como

LaTex, CSS o HTML. [18]

4.9 Tipos de DSL Son muchos los DSL existentes actualmente, suficiente como para cubrir gran parte de las aplicaciones que se puedan necesitar. Los DSL más populares incluyen todos los lenguajes de consulta (query), todos los lenguajes plantilla, Shell scripts, lenguajes de almacenamiento e intercambio de datos como XML, o lenguajes para documentos como LaTex, CSS o HTML [19]. Tres ejemplos destacados de DSL son:

- Structure Query Language – SQL:

Este DSL aparece por primera vez en 1974, como sucesor de SEQUEL (Structured English Query Language), el lenguaje de IBM para acceder a datos basado en el cálculo

Page 13: DESARROLLO DE APLICACIÓN MOVIL DE TRANSPORTE …

de predicados. Fue diseñado por Donald D. Chamberlin en los laboratorios de IBM y lanzado oficialmente al mercado en 1986, año en el cual fue estandarizado por ANSI y un año después por ISO, creando así la primera versión del lenguaje. Se desarrolla con el fin de poder acceder a bases de datos relacionales y especificar diferentes tipos de operaciones en ellas. Se caracteriza por el uso de álgebra y cálculo relacional para recuperar y modificar información en las bases de datos [20].

- Unified Modeling Language – UML:

Es el ejemplo más claro de lenguajes de dominio específico gráficos. Se utiliza para modelar sistemas de software. Permite la visualización, especificación, construcción y documentación de un sistema. Algunos miembros de la comunidad científica no consideran a UML como un DSL debido a que sus funciones son netamente de modelado y no sigue los ideales de la programación estructurada. Sin embargo, sus funciones de modelado son lo que lo hace precisamente un lenguaje de dominio específico, y son de gran importancia para implementar los procesos de la ingeniería de requerimientos y en la programación orientada a objetos. En 2005 se lanza como un estándar aprobado por la ISO, respaldado por el OMG (Object Management Group), aunque su primera aparición es en 1997 como propuesta de “Los tres amigos” (James Rumbaugh, Grady Booch, Ivar Jacobson) para el OMG [17].

- Extensible Markup Language – XML:

Es un lenguaje de marcas utilizado para almacenar datos de manera legible. Permite definir la gramática de lenguajes específicos, al igual que HTML, para estructurar documentos, con la gran diferencia que XML soporta bases de datos, permitiendo la comunicación de aplicaciones e integración de información. Fue desarrollado por el W3C (World Wide Web Consortium) como subconjunto del SGML (Standard Generalized Markup Language), la normalización del GML (Generalized Markup Language) de IMB hecha por ISO en 1986. XML ha servido como base para la creación de más lenguajes como XSL, XLINK y de tecnologías como Xades, Xpath, XQuery y XLT, entre otros [21].

4.10 Ingeniería dirigida por modelos (MDE)

La Ingeniería Dirigida por Modelos o MDE por sus siglas en inglés (Model Driven Engineering) es una metodología para el desarrollo de software, centrada en la creación de modelos de dominio, es decir, representaciones abstractas del modelo a construir. Se habla de dominios en lugar de algoritmos. Todas las formas de ingeniería existentes están basadas en la abstracción de un modelo del mundo real, en otras palabras, en el modelado de diseño de sistemas del mundo real. La importancia de los modelos en el desarrollo y diseño de software va desde su utilidad para el entendimiento de los aspectos físicos del sistema, de las características del sistema, impactos y riesgos, hasta la comunicación e integración de las características del sistema con las partes interesadas [22]. MDE nace de la necesidad de separar la lógica del negocio y la tecnología usada. Con las herramientas MDE se imponen restricciones de dominio para detectar y

Page 14: DESARROLLO DE APLICACIÓN MOVIL DE TRANSPORTE …

prevenir errores al inicio del ciclo de vida del software. Con MDE el sistema de modelos posee suficiente detalle como para permitir la generación de todo un sistema de aplicación de los modelos propios. Entonces, todo nace a partir de los modelos, por lo que la atención se centra en el modelamiento y el código se genera mecánicamente a partir del modelo. Así como en la orientación a objetos “todo es un objeto”, en MDE “todo es un modelo” [23].

La Ingeniería Dirigida por Modelos promete grandes hazañas en el campo de complejidad de plataformas, en donde los lenguajes de tercera generación sufren inconvenientes para aliviar esta complejidad y a su vez para expresar conceptos de dominio de manera sencilla para el público. MDE cubre grandes cantidades de espacios tecnológicos de trabajo de manera uniforme. Los dos espacios tecnológicos de trabajo más populares son los Lenguajes de Sistemas de Gestión de Bases de Datos o DBMS (Database Management System) y la Arquitectura Dirigida por Modelos o MDA (Model Driven Arquitecture) [24]. a. Arquitectura dirigida por modelos

La Arquitectura Dirigida por Modelos es una familia de estándares propuesta por la OMG (Object Management Group) con el fin de establecer una guía para el desarrollo de software separándolo en diferentes niveles de abstracción, conectados entre sí por medio de modelos o artefactos. Así, existe un modelo para cada nivel de abstracción el cual es tomado como guía para el siguiente nivel [25]. a OMG propone cuatro niveles de abstracción, la arquitectura en cuatro capas, representada en la Figura 2 [26].

Figura 1. Arquitectura en Cuatro Capas MDA [26].

Page 15: DESARROLLO DE APLICACIÓN MOVIL DE TRANSPORTE …

- M3 Meta-metamodelo: también llamado MOF por sus siglas en inglés (Meta Object Facility) es un lenguaje abstracto y autodefinido el cual unifica cada paso del desarrollo e integración del modelo del negocio, a través de modelado de aplicaciones y arquitectural para el desarrollar, mantener y evolucionar. MOF incluye una familia de especificaciones para manejar el ciclo de vida e intercambio de los modelos. MOF ofrece estándares que proveen especificaciones de cómo importar o exportar modelos desde varios formatos textuales [27].

- M2 Metamodelo: contiene los estándares definidos por el usuario en el Meta-metamodelo [28].

- M1 Modelo: abstracción del mundo real, es lo que se busca diseñar. Contiene los conceptos que son representados por un metamodelo.

- M0 Realidad: Hace referencia a lo que se planea modelar, es decir, al mundo real.

b. Protocolos de Red Un protocolo de red es un conjunto de reglas necesarias para permitir a dos o más procesos computacionales comunicarse entre sí. Estos procesos pueden ser ejecutados en el mismo equipo o en diferentes dispositivos conectados por diferentes tipos de redes. Estos procesos separan los procesos del sistema operativo, ejecutando diferentes programas, o pueden ser procesos virtuales, o partes modulares de un solo programa. Siempre van a existir dos o más procesos y deben ser comunicados entre sí [29]. Las reglas describen el cálculo que cada uno de los procesos debe hacer con el fin de enviar el mensaje que contenga los valores correctos en el tiempo adecuado. Estas reglas pueden ser ejecutadas tanto por software como por hardware, o por una combinación de los dos. Así como los lenguajes de programación describen cálculos, los protocolos describen las comunicaciones, “los protocolos son a las comunicaciones como los lenguajes de comunicación son a los cómputos.” [30].

Page 16: DESARROLLO DE APLICACIÓN MOVIL DE TRANSPORTE …

5. METODOLOGÍA

El proceso metodológico para alcanzar cada uno de los objetivos, y las diferentes

actividades que definen el procedimiento para llegar a la solución, se realizará con

una descripción individual de estas actividades donde se plantee a manera de plan

el desarrollo de cada uno de los objetivos, según el diagrama mostrado en la

Figura 2.

Figura 2. Diagrama de flujo de metodología aplicada.

Planificar y estructurar

la arquitectura de la

aplicación

Selección lenguaje y

herramientas para el

desarrollo de la app.

Desarrollo de la

aplicación

Integrar la aplicación

entre un servidor de

negocios y un servidor

de base de datos

Creación de web service.

Pruebas de

funcionamiento de la

aplicación

Recolección de

Información

Aplicación Móvil Servidor Base de Datos Web Service

Creación de Modelo

UML

Creación de Algoritmo

Creación de Código

Implementación y realización de pruebas unitarias

Page 17: DESARROLLO DE APLICACIÓN MOVIL DE TRANSPORTE …

Las actividades realizadas para este proyecto son las descritas a continuación:

5.1 Planificar y estructurarla arquitectura de la aplicacion.

Se realizó un diseño previo y se estructuro los servicios que tendría y de qué forma funcionaria y realizaría consultas la aplicación, los módulos que tendría y la arquitectura tanto del core como del data ver Figura 3.

5.2 Selección lenguaje y herramientas para el desarrollo de la app.

La aplicación se hizo con el propósito de que se pudiera desplegar en cualquier SmartPhone, de manera que se optó por tecnología de Compilación Multiplataforma, por lo cual se evita la creación de doble código, por este motivo utilizamos el Framework de CORDOVA, basado en lenguaje HTML5, JavaScript y CSS.

5.3 Desarrollo de la aplicación.

Para la creación de aplicaciones móviles, utilizamos las librerías de JQuery con el

motivo de realizar peticiones de Web Services REST tipo Json, la librería de

GoogleMaps la cual se emplea para el sistema de geolocalización en la appy el

entorno grafico que se crea apartir de lenguaje html y css.

5.4 Integración entre el servidor de negocio y servidor de base de datos.

Se realiza la integración entre las clases de la lógica del Negocio, mediante el

accesos de objetos de datos DAO implementado bajo el Lenguaje JAVA, Los

Objetos de Acceso a Datos son un Patrón de los subordinados de Diseño Core

J2EE, esta implementación se realiza mediante el FrameWork de JAVA MAVEN,

creando las dependencias de MySql 5.1.41 como conector de la Base de Datos,

utilizando las siguientes conexiones:

Host = jdbc:https://mysql22779-env-3803161.j.facilcloud.com/udsobreruedas Username = root Password = MHTdlr28370 Driver = com.mysql.jdbc.Driver Alojados en el servidor de la nube dado por Jelastic, como plataforma en la Nube, creado como plataforma como servicio PAAS. Se crea una base de datos udsobreruedas, con las siguientes tablas 1. USUARIOSDB: Tabla que almacena los datos personales de los usuarios 2. SUGERENCIAS_SOBRE_RUEDAS: Tabla que almacena las sugerencias realizadas por los usuarios 3. UBICACIÓN_USUARIOS: Tabla que almacena los viajes propuestos por los usuarios 4. REGISTRO_RUEDAS: Tabla que almacena los vehículos registrados por los usuarios

Page 18: DESARROLLO DE APLICACIÓN MOVIL DE TRANSPORTE …

5.5 Creación de Web Services.

Se realiza los servicio web creándolos de tipo RestFull por los métodos POST() en

java, entregando una estructura json, puesto que la integración para el consumo

de los servicios se crean con la tecnología AJAX, ya que la aplicación se crea con

HTML5 y Java Script, por tal razón la implementación de los servicios Web, se

crean de tipo REST, ya que ajax solo soporta este tipo de invocaciones. Los

servicios Web se realiza mediante las librerías agrupadas com.sun.jersey, de los

artefactos jersey-core, jersey-json y jersey-servlet con las versiones 1.19

Se crean los siguientes servicios web:

1. Servicio de inicio de sesión

http://host//RestJR/services/SobreRuedas/validaUser

2. Consulta los datos personales de los usuarios registrados

http://host//RestJR/services/SobreRuedas/consultaDatosPersonales

3. Actualiza los datos personales y la contraseña de los usuarios registrados

http://host//RestJR/services/SobreRuedas/actualizaDatosPersonales

4. Crea y actualiza los vehículos registrados por los usuarios

http://host//RestJR/services/SobreRuedas/creaActualizaRegistroRuedas

5. Consulta todos los usuarios que hayan registrado su ruta

http://host//RestJR/services/SobreRuedas/consultaUbicaciones

6. Crea la ruta que va a realizar el usuario

http://host//RestJR/services/SobreRuedas/creaUbicacion

7. Crea sugerencias de los usuarios

http://host//RestJR/services/SobreRuedas/creaSugerencias

8. Consulta las solicitudes pendientes y confirmadas que tiene cada usuario

http://host//RestJR/services/SobreRuedas/solicitudesPendientes

9. Realiza las solicitudes y confirmaciones de los usuarios que deseen unirse

al viaje propuesto

http://host//RestJR/services/SobreRuedas/solitaConfirmaViaje

Page 19: DESARROLLO DE APLICACIÓN MOVIL DE TRANSPORTE …

5.6 Pruebas de funcionamiento de la aplicacion.

Una vez se ha culminado la etapa de planeacion y posterior desarrollo, se procede

a la realización de pruebas de funcionamiento y de calidad. Por último se harán las

pruebas finales por usuarios, estudiantes de la Universidad Distrital Facultad

Tecnológica, verificando el funcionamiento del aplicativo, esto permite consolidar

que la aplicación UDsobreruedas cumple con los objetivos propuestos.

Figura 3. Arquitectura de la aplicación

6. RESULTADOS

6.1 Compilacion y generación de la APK

Para iniciar la prueba de la aplicación en un dispositivo móvil se requiere compilar

el proyecto realizado, desde apache cordova, para lo cual empleamos los

siguientes comandos, Añadimos la plataforma del sistema operativo que se desee

ya que cordova permite desarrollar una aplicación multiplataforma, para este caso

haremos las pruebas en Android:

Page 20: DESARROLLO DE APLICACIÓN MOVIL DE TRANSPORTE …

$ cordova platform add android

Generamos el apk con el comando:

$ cordova build android

Y como se observa en la figura la compilación inicia, la apk se guarda en la ruta

mostrada en la consola que para este caso es:

C:\wamp\www\app\mi-app\platforms\android\build\outputs\apk\android-debug.apk

Figura 4. Generacion Apk en apache Cordova

6.2 Pantalla inicio y login.

Posteriormente a la generación del apk, se procede a la instalación en los

teléfonos móviles, una vez instalado ejecutamos el icono de la aplicación UD

sobre ruedas el cual al abrirse genera un splash o pantalla de bienvenida seguido

de un formulario de login tal como se aprecia en la figura. Para acceder solicita un

usuario y contraseña el cual es registrado desde la base de datos de MySQL en el

servidor virtual y al pulsar ingresar realiza la consulta en el servidor si el usuario

está registrado permite el ingreso en caso contrario remite un error.

Page 21: DESARROLLO DE APLICACIÓN MOVIL DE TRANSPORTE …

Figura 5. Pantalla de Inicio e ingreso

6.3 Pantalla de Geolocalización

Una vez el usuario haya ingresado satisfactoriamente a la aplicación pedirá

acceder a su ubicación actual, enseguida muestra un marcador en google maps

con la referencia geográfica actual obtenido por el GPS del teléfono, en la parte

superior una caja de texto en la cual se escribirá el lugar de destino por medio de

la librería de Googlemaps.places nos ubicara otro marcador en este lugar y

generara una ruta estándar entre estos dos puntos como se puede ver en la figura

en la parte inferior se ve el menú que genera un formulario para dar una

descripción del modo de viaje.

Page 22: DESARROLLO DE APLICACIÓN MOVIL DE TRANSPORTE …

Figura 6. Geolocalizacion

6.3 Formulario Modo de viaje

En el formulario modo de viaje Figura. Solicita algunos datos del modo de viaje

como descripción de la ruta, es un campo de texto abierto en el cual el usuario

puede detallar la ruta hacia su destino, selección de modo de viaje (pie, bici, moto

y carro) seleccionar el modo en que el usuario se desplaza en caso de tener

vehículo el usuario deberá registrarlo por el formulario de registro de vehículo,

seleccionar la hora de partida, selección de la hora en el cual el usuario inicia su

viaje desde el punto en que registro su posición de origen y en el último campo

seleccionar la cantidad de puestos disponible aplican solo cuando tengo un

vehículo y puedo llevar a otros usuarios ya sea carro o moto, y el botón de enviar

que envía la información y la registra en la database del server.

Page 23: DESARROLLO DE APLICACIÓN MOVIL DE TRANSPORTE …

Figura 7. Formulario y descripción del modo de viaje

6.3 Lista de Usuarios y solicitud.

Enseguida de haber enviado la información de modo de viaje se despliega una

lista de usuarios que han registrado su viaje, se observa el tipo de vehículo

mediante el icono que se encuentra al lado del nombre del usuario Figura.7,

pudiendo los usuarios que seleccionaron su modo de viaje a pie ver a los usuarios

que también van a pie, los que seleccionaron vehículos con puestos disponibles,

los que seleccionaron bicicleta pueden ver a otros usuarios de bicicleta etc.

Además poder ver toda la información y descripción de ruta de otros usuarios

como el lugar en que se encuentra y la hora de salida y poder seleccionar el

usuario que más favorezca y enviar una solicitud de viaje compartido Figura.8 a la

espera de la aceptación de la solicitud por el otro usuario.

Page 24: DESARROLLO DE APLICACIÓN MOVIL DE TRANSPORTE …

Figura 8. Listado de usuarios que compartieron su ruta

Figura 9. Envío de solicitud

Page 25: DESARROLLO DE APLICACIÓN MOVIL DE TRANSPORTE …

6.4 Menú UD sobre ruedas.

En el menú desplegable de la aplicación Figura 9. se visualiza la información del

usuario (nombre y código) la pestaña de inicio la cual nos llevara a la pantalla de

geolocalización, la pestaña registro de vehículo para registrar cualquier tipo (

bicicleta, moto, carro) y que serán almacenadas en la base de datos, las pestañas

de consulta de solicitudes pendientes que el usuario a recibido y las solicitudes

confirmadas por parte de otros usuarios lo cual les permitirá ponerse en contacto,

la pestaña de sugerencias que permite la calificación y envío de ideas sugeridas

por los usuarios de la aplicación, por ultimo cerrar sesión el cual finaliza

satisfactoriamente la salida del usuario de la aplicación.

Figura 10. Menú general

Page 26: DESARROLLO DE APLICACIÓN MOVIL DE TRANSPORTE …

7. CONCLUSIONES

• La implementación y diseño de aplicaciones móviles empleando apache cordova reduce el tiempo de desarrollo considerablemente si se requiere que la aplicación sea multiplataforma.

• La implementación de modelo UML reduce el tiempo de desarrollo considerablemente y facilita el control del proceso y la ejecución de las tareas programadas para culminar el proyecto dentro de los tiempos previstos.

• Múltiples características de los dispositivos son redundantes o se pueden considerar características de omisión teniendo en cuenta que solo se hacen necesarias las características que tengan incidencia sobre la ejecución del proyecto.

• La implementación de tecnología AJAX, para el consumo de Servicios Web son más eficientes ya que facilita la integración de los datos obtenidos con la app, al entregar estructuras JSON

• Al desarrollar la aplicación móvil multiplataforma, es necesario desarrollar servicios web tipo REST, el cual soportan estructuras tipo JSON para la implementación de la misma

• La implementación del Servidor de Base de Datos, se debe implementar sobre la misma maquina en el cual se implementa el servidor de aplicaciones, ya que las respuestas por TIM-OUT, son menos concurrentes al implementar conexiones sobre la Base de Datos, sobre todo si se trabaja con tecnologías de Cloud Computing, como es el caso de Jelastic, OpenShift.

• Para el correcto funcionamiento de la aplicación con el GPS es necesario descargar el Plug-in de geolocalización para Cordova, ya que sin él no es posible que el celular interactue con los periféricos del GPS, a pesar que en las pruebas de Escritorio la aplicación se ejecute sin novedades aparentes.

• En el desarrollo del servidor de aplicaciones con servicios Web, se necesitaron la implementación de Jersey, lo cual facilito el uso de anotaciones para la implementación de los servicios Web con el método POST y estrucuturas tipo JSON en el Request y Response de los Servicios

• Para servcios Web cuyo propósito es el consumo sobre aplicaciones móviles es necesario implementar la no restricción de solicitudes por origen Cruzado CORS, para lo cual es necesario deshabilitar esta opción desde el Servidor de aplicaciones, por medio del archivo web.xml sobre la creación de la aplicación JEE2

Page 27: DESARROLLO DE APLICACIÓN MOVIL DE TRANSPORTE …

8. AGRADECIMIENTOS

Queremos agradecer primeramente a Dios por permitirnos realizar el proyecto, también al Ing. Giovani Mancilla por su asesoría y colaboración constante durante el desarrollo del proyecto, agradecemos a nuestra familia por el constante apoyo y a todas las personas que con cada uno de sus aportes contribuyo a este proyecto.

Page 28: DESARROLLO DE APLICACIÓN MOVIL DE TRANSPORTE …

9. REFERENCIAS

[1] Solano Arenas John Camilo, Jaimes Fajardo Leonardo Andrés "Implementación en

Java del modelo de propagación Andino UIS® para planificación y análisis de redes

celulares sobre CellGis" [En línea] Febrero de 2016, disponible en

http://repositorio.uis.edu.co/jspui/bitstream/123456789/3308/2/125826.pdf

[2] Juan Bernardo Quintero, Raquel Anaya. (Diciembre 2007). 2MDA Y EL PAPEL DE

LOS MODELOS EN EL PROCESO DE DESARROLLO DE SOFTWARE2. EIA, ISSN

1794-1237 Número 8, 131-146. [En línea] Consultado en marzo de 2016, disponible

en http://repository.eia.edu.co/revistas/index.php/reveia/article/view/190/187

[3] Revista Portafolio “Mi águila cambiara al mundo” [En línea] consultado Noviembre 03

de 2016 10:00 am, disponible en: http://www.portafolio.co/negocios/empresas/mi-

aguila-cambiara-mundo-muestra-ruta-uber-23122

[4] Loizos, Connie (29 de abril de 2016). «Handcuffed to Uber». TechCrunch (en inglés).

Consultado el 22 de octubre de 2016

[5] Diario el Tiempo “Tappsi el fenómeno de las mil descargas” [En línea] consultado

noviembre 03 de 2016 10:00 am, disponible en:

http://www.eltiempo.com/archivo/documento/CMS-12779543

[6] Santiago, Raul et al. (2015). Mobile learning: nuevas realidades en el aula. Grupo

Océano. pp. 8-26-27, 22-29. ISBN 9788449451454. Consultado Noviembre 2016

[7] UIT: Unión Internacional de Telecomunicaciones (Año 2009). Disponible

en: http://www.itu.int/itunews/manager/display.asp?lang=es&year=2009&issue=03&ipa

ge=33&ext=html, basado en "Utilities, grids and Clouds", Informe de Technology

Watch publicado en marzo de 2009 por el Sector de Normalización de la UIT (UIT–

T), http://www.itu.int/oth/T2301000009/en

[8] Douglas Crockford on Functional JavaScript (2:49): "[JavaScript] es el lenguaje

funcional más popular del mundo. JavaScript es y siempre ha sido, al menos desde [la

versión] 1.2, un lenguaje de programación funcional."

[9] M. Domínguez-Dorado,. Todo Programación. Nº 12. Págs. 48-51. Editorial

Iberprensa(Madrid). DL M-13679-2004. Septiembre de 2005. Bases de datos en el

cliente con JavaScript DB.

[10] Yahoo!. «Using JSON with Yahoo! Web services». Archivado desde el original el 1

de diciembre de 2015. Consultado el 2 de noviembre de 2016.

[11] RESTful Java Web Services. Jobinesh Purushothaman. Packt Publishing 2015.

Page 29: DESARROLLO DE APLICACIÓN MOVIL DE TRANSPORTE …

Segunda edición

[12] W3C (6 de octubre de 2009). Ian Hickson y David Hyatt, ed. «HTML5» (en inglés).

Consultado el, 6 de octubre de 2016.

[17] Jorge Franganillo (6 de septiembre de 2010). [En línea] consultado octubre 31 de

2016 Disponible en: http://franganillo.es/html5.pdf

[18] Carl Bamford, Paul Curran. (1991). SQL. In Data Structures, Files and Databases,

pp 209-228. UK: Macmillan Education.

[19] Jose Jesus Perez Rivas “Que es y como empezar con framework ionic”. Disponible

en: http://www.phonegapspain.com/que-es-y-como-empezar-con-ionic-framework/

[20] “Google App engine”. [En línea] consultado octubre 31 de 2016 10:00 am,

disponible en: http://code.google.com/appengine

[21] Joachim Fischer, Markus Scheidgen, Ina Schieferdecker, Rick Reed. (2015). SDL:

Model-Driven Engineering for Smart Cities. Switzerland: Springer International

Publishing.

[22] Marco Bernardo, Vittorio Cortellessa, Alfonso Pierantonio. (2012). MDE Basics with

a DSL Focus. In Formal Methods for Model-Driven Engineering, pp. 21-57. Berlin:

Springer.

[23] Oscar Pastor, Juan Carlos Molina. (2007). The Need for New Development

Environments. In Model-Driven Architecture in Practice, pp. 13-18. Berlin: Springer.

[24] Liming Zhu. (2011). Model-Driven Architecture. En Essential Software Architecture,

pp. 201-217. Berlin: Springer.

[25] García Díaz, Vicente (2012). Ingeniería Dirigida por Modelos [Imagen].

Recuperado de Universida de Oviedo, databases.

[26] “Ontology Definition Metamodel Request For Proposal” [En línea] consultado

marzo 13 de 2016 10:00 am, disponible en http://www.omg.org/cgi-bin/doc?ad/2003-3-

40

[27] “The Architecture Of Choice For A Changing World” [En línea] consultado marzo

13 de 2016 10:00 am, disponible en http://www.omg.org/mda/

[28] Walid Mohamed Taha. (2009). Domain-Specific Languages. Berlin: Springer.

[29] Antonio Vallecillo, Juha-Pekka Tolvanen, Ekkart Kindler, Harald Störrle, Dimitris

Kolovos. (2012). Domain-Specific Textual Meta-Modelling Languages for Model Driven

Engineering. En Modelling Foundations and Applications, pp.259-274. Berlin: Springer.

[30] Marco Bernardo, Vittorio Cortellessa, Alfonso Pierantonio. (2012). Graph

Transformations for MDE, Adaptation, and Models at Runtime. En Formal Methods for

Model-Driven Engineering, pp.137-191. Berlin: Springer.

[31] John Cowley. (2013). Network Protocols. En Communications and Networking,

pp.81-109. London: Springer.

[32] Comer (2000). Sect. 11.2 - The Need For Multiple Protocols, p. 177, "They

(protocols) are to communication what programming languages are to computation"