Sei sulla pagina 1di 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
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
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
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.
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.
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
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.
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.
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
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]
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
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
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
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].


- 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].
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.

Recolección de
Información

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

Creación de Modelo Creación de Algoritmo


UML

Creación de Código

Implementación y realización de pruebas unitarias

Planificar y estructurar Selección lenguaje y


herramientas para el Desarrollo de la
la arquitectura de la
desarrollo de la app. aplicación
aplicación

Integrar la aplicación
Pruebas de entre un servidor de
funcionamiento de la Creación de web service. negocios y un servidor
aplicación de base de datos

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


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
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
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:
$ 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.
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.
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.
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.
Figura 8. Listado de usuarios que compartieron su ruta

Figura 9. Envío de solicitud


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


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
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.
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.
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"

Potrebbero piacerti anche