proyecto final de carrera ingenierÍa de...

52
KEEPMYCAR: HERRAMIENTA SOFTWARE DE GESTIÓN DE CARTERA DE CLIENTES EN TALLERES DE MECÁNICA MEMORIA Autor: Gabriel Cebriá Oliveira Director: Federico José Barrero García JUNIO 2015 ESCUELA SUPERIOR DE INGENIEROS DE SEVILLA UNIVERSIDAD DE SEVILLA Proyecto final de Carrera Ingeniería de telecomunicaciones

Upload: truonganh

Post on 20-Jul-2018

278 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Proyecto Final de Carrera INGENIERÍA DE …bibing.us.es/proyectos/abreproy/12269/fichero/proyectodraft.pdf · Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES Memoria

KEEPMYCAR: HERRAMIENTA SOFTWARE DE GESTIÓN DE CARTERA DE CLIENTES EN TALLERES DE MECÁNICA

MEMORIA

Autor: Gabriel Cebriá Oliveira

Director: Federico José Barrero García

JUNIO 2015 ESCUELA SUPERIOR DE INGENIEROS DE SEVILLA

UNIVERSIDAD DE SEVILLA

Proyecto final de Carrera

Ingeniería de telecomunicaciones

Page 2: Proyecto Final de Carrera INGENIERÍA DE …bibing.us.es/proyectos/abreproy/12269/fichero/proyectodraft.pdf · Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES Memoria

Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES

Memoria

1

Page 3: Proyecto Final de Carrera INGENIERÍA DE …bibing.us.es/proyectos/abreproy/12269/fichero/proyectodraft.pdf · Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES Memoria

Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES

Memoria

2

Resumen del Proyecto

El objetivo de este proyecto fin de carrera es el de desarrollar una primera versión de una aplicación

para escritorio y otra aplicación móvil, que van a formar un sistema conjunto, y evaluar sus

opciones de negocio.

El sistema, bautizado con el nombre de KeepMyCar, tiene como objetivos la mejora en la

comunicación de talleres mecánicos con sus clientes gracias a una aplicación móvil para los

clientes desde la cual van a poder acceder a novedades en el taller, así como la gestión de cartera

de clientes y publicación de novedades desde una herramienta java para escritorio.

Se van a analizar las opciones de mercado disponibles, para seguidamente mostrar las tecnologías

con las que se ha realizado el proyecto. Más adelante se explica el proyecto, con muestras visuales

del resultado y comentando algunas de las clases más importantes en él.

Los últimos apartados introducen un modelo de negocio y exponen el posible futuro de

KeepMyCar.

El trabajo de los últimos meses ha permitido obtener un prototipo funcional del sistema para

Android y Windows. Ambas herramientas requieren aún del desarrollo de funcionalidades

adicionales y de llevar a cabo una fase de prueba de errores para ser viable el lanzarlas al mercado,

pero el objetivo principal, que era la implementación de funcionalidades principales y la estructura

del sistema, se ha completado.

Page 4: Proyecto Final de Carrera INGENIERÍA DE …bibing.us.es/proyectos/abreproy/12269/fichero/proyectodraft.pdf · Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES Memoria

Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES

Memoria

3

Contenido

Resumen del proyecto………………………………………………………………………..2

Contenido……………………………………………………………………………………..3

1. Introducción…………………………………………………………………....................6

1.1 Motivación……………………………………………………………………….…....6

1.2 Objetivos y alcance del proyecto………………………………………………........6

2. Oferta actual……………………………………………………………………………....8

2.1 Aplicaciones Smartphone………………………………………………………..…...8

2.2 Aplicaciones funcionales………………………………………………………..….....9

2.3 Posible competencia: identificación y características……………………….….....10

3. Tecnología para el desarrollo de la

herramienta…………………………………………………………………....................13

3.1 Introducción…………………………………………………………………….........13

3.2 Entorno de desarrollo y técnicas empleadas…………………………………….....13

3.2.1 Entorno de desarrollo………………………………………………………….....13

3.2.2 Técnicas empleadas………………………………………………………….......14

4. Desarrollo de KeepMyCar……………………………………………………................21

4.1 Introducción……………………………………………………………………….....21

4.2 Esquema básico de funcionamiento del sistema…………………………...............22

4.3 Diagrama de casos de uso…………………………………………………...............22

4.3.1 Actores…………………………………………………………………..............23

4.3.2 Diagrama de casos de uso del mecánico………………………………………...23

4.3.3 Diagrama de casos de uso del usuario registrado del taller……..........................24

4.4 Diagramas de clases……………………………………………………….………...24

4.4.1 Diagramas de clases en App Android……………………………….…..............24

4.4.2 Diagramas de clases en la aplicación de escritorio……………….……..............29

4.5 Diseño de las bases de datos……………………………………….……....………..33

4.5.1 Base de datos central…………………………………………………................33

4.5.2 Bases de datos locales…………………………………………………..............34

4.6 Evaluación y pruebas con KeepMyCar…………………………………..………...34

4.6.1 Prueba 1…………………………………………………………………………35

4.6.2 Prueba2..………………………………………………………………………..36

4.6.3 Prueba3……………………………………………………………………...…..38

4.6.4 Prueba4………………………………………………………………..……...…39

Page 5: Proyecto Final de Carrera INGENIERÍA DE …bibing.us.es/proyectos/abreproy/12269/fichero/proyectodraft.pdf · Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES Memoria

Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES

Memoria

4

5. Plan de implantación

KeepMyCar……….…………………………………………..……………………….41

5.1 Concepto de negocio………………………………………………………………41

5.2 Presentación de la empresa……………………………………………………….42

5.3 Visión, misión y objetivos…………………………………………………………42

5.3.1 Vision…………………………………………………………………………42

5.3.2 Mision…………………………………………………………………………43

5.3.3 Objetivos………………………………………………………………………43

6. Trabajo futuro……………………………………………………...…………………..44

6.1 Fase de prueba del sistema………………………………………………………...44

6.2 Desarrollo de funcionalidades adicionales………………………………………..44

7. Coste del proyecto…………………………………………………………....................45

7.1 Coste de recursos humanos………………………………………………………...45

7.2 Costes adicionales…………………………………………………………………...46

7.3 Costes totales del proyecto………………………………………………………….46

8. Conclusiones………………………………………………………………………….....48

9. Agradecimientos……………………………………………………………………...…49

10. Bibliografía complementaria………………………………………………………...…50

Page 6: Proyecto Final de Carrera INGENIERÍA DE …bibing.us.es/proyectos/abreproy/12269/fichero/proyectodraft.pdf · Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES Memoria

Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES

Memoria

5

Page 7: Proyecto Final de Carrera INGENIERÍA DE …bibing.us.es/proyectos/abreproy/12269/fichero/proyectodraft.pdf · Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES Memoria

Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES

Memoria

6

1 Introducción

1.1 Motivación

Los teléfonos móviles inteligentes han ido tomando el control del mercado, con millones de

descargas de aplicaciones cada día. Los teléfonos han pasado de ser herramienta de llamadas

y SMS a “ordenadores de abordo”, con los que se trabaja o se accede a redes sociales.

Según el instituto nacional de estadística, el 77.1% de los usuarios de internet acceden a través

de su teléfono móvil, dejando atrás los ordenadores de escritorio. Por ello, el mercado de

aplicaciones móviles es aún un sector con mucho potencial por alcanzar.

En este contexto, se quiere desarrollar una herramienta software de gestión de cartera de

clientes en talleres de mecánica adaptada a los nuevos tiempos, aprovechando el potencial

de las aplicaciones móviles.

Por un lado, el administrador del taller de mecánica tiene una aplicación en su ordenador de

escritorio en la que administrar sus clientes y citas, así como próximas revisiones. Esta

aplicación está en contacto con un servidor central al que también accede una aplicación móvil,

que se encarga de avisar al cliente de sus próximas revisiones, citas o incluso de las ofertas

que publica el taller. De este modo, el principal objetivo es un sistema que mejore la relación

taller/clientes, de manera que, por un lado, el cliente se sienta más cómodo con su taller, y por

otro, el taller consiga mayores tasas de fidelidad en sus clientes.

Con KeepMyCar conseguimos estas funcionalidades entre la herramienta de ordenador de

escritorio y la aplicación móvil, así como otras que iremos exponiendo a lo largo de esta

memoria.

1.2 Objetivos y alcance del proyecto

Los principales objetivos del proyecto son:

Estudiar la viabilidad de éste como negocio con futuro

Desarrollo del producto KeepMyCar.

En el estudio de la viabilidad del proyecto como negocio, se han tenido en cuenta las opciones

disponibles en el mercado actual, el plan de implantación de KeepMyCar como negocio, los

costes asociacios a la realización del proyecto y el futuro de éste, con algunas de las

funcionalidades que se pueden añadir si se continúa el desarrollo de KeepMyCar.

Page 8: Proyecto Final de Carrera INGENIERÍA DE …bibing.us.es/proyectos/abreproy/12269/fichero/proyectodraft.pdf · Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES Memoria

Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES

Memoria

7

También se muestran las tecnologías utilizadas en el desarrollo del proyecto, los pasos

seguidos en su desarrollo, se comentan las partes fundamentales del código con muestras reales

del aspecto del sistema y se muestran las pruebas que se han realizado en la fase básica de

pruebas.

Por otro lado, los objetivos del sistema formado por la herramienta de gestión de clientes y

citas de escritorio y la aplicación móvil se enfocan hacia la experiencia del administrador del

taller y del cliente de éste. Son:

Facilitar la comunicación del cliente con su taller mediante el desarrollo de una interfaz

amigable y un sistema basado en la aparición de notificaciones en el teléfono

Permitir al taller gestionar su clientela con la herramienta de escritorio

Permitir al taller publicar ofertas que lleguen al teléfono de sus clientes. Al ser más

cercana la relación taller/cliente, el objetivo final con esto es conseguir una mayor tasa

de fidelidad en los clientes

Page 9: Proyecto Final de Carrera INGENIERÍA DE …bibing.us.es/proyectos/abreproy/12269/fichero/proyectodraft.pdf · Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES Memoria

Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES

Memoria

8

2. Oferta actual

2.1 Aplicaciones Smartphone

KeepMyCar se desarrolla en el marco de las aplicaciones para Smartphone. A día de hoy un

teléfono móvil no es solo un dispositivo para realizar llamadas sino que se ha convertido también

en una herramienta indispensable en el día a día de los ciudadanos, manteniéndonos en contacto

con el exterior y haciendo más llevaderas las tareas del día a día. En esta gran transformación de

los teléfonos móviles, las aplicaciones han sido claves.

A día de hoy hay ya 22 millones de usuarios activos de Apps en España (primer país en penetración

de Smartphones en Europa). Además, cada dispositivo dtiene de media 24 apps (smartphones) ó

31 (tablets), y el usuario medio gasta más de tres horas al día con su Smartphone.

En las apps del mercado se puede hacer una sencilla distinción entre aquellas que se ofrecen de

forma gratuita y las que son de pago en las tiendas online conocidas.

Figura 2.1 Estadísticas de apps en España

Hablando de tipos de aplicaciones, se ve que hay diferencias en la “venta tipo” en el mercado App

Store (iOS) y Google Play (Android). Mientras que el usuario medio de Android busca por lo

Page 10: Proyecto Final de Carrera INGENIERÍA DE …bibing.us.es/proyectos/abreproy/12269/fichero/proyectodraft.pdf · Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES Memoria

Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES

Memoria

9

general lo gratuito y muy raramente paga por una aplicación, el de iOS no pone tantas pegas a la

hora de pagar por un producto de buena calidad y con reputación y funcionamiento probado.

Sin embargo, al haber cada

vez mayor número de

usuario Android, las

ganancias totales por venta

de Apps están cada vez

más a la par en los dos

sistemas operativos

mayoritarios.

Además, cabe destacar

que aunque el usuario

medio de iPhone sigue

gastando más dinero en

Apps, hay un cambio de

tendencia y cada vez los

usuarios de Android son

menos reticentes a la compra de Apps.

2.2 Aplicaciones Funcionales

KeepMyCar se encuentra en el marco de las aplicaciones funcionales para móviles. Las

aplicaciones funcionales son aquellas que tienen una función práctica y nos facilitan el día a día

ahorrándonos tiempo ya que nos facilitan distintas tareas como mirar la previsión meteorológica,

programación de la televisión, mirar el tráfico en un determinado momento, hacer la lista de la

compra, apuntar citas próximas…

Vamos a ver algunos ejemplos de aplicaciones funcionales en el mundo de las apps móviles:

Endomondo

Utilidad: Utilizando la función GPS del teléfono,

Endomondo calcula la distancia recorrida a pie,

corriendo, nadando, en bicicleta…

Número de usuarios: más de 20 millones.

Page 11: Proyecto Final de Carrera INGENIERÍA DE …bibing.us.es/proyectos/abreproy/12269/fichero/proyectodraft.pdf · Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES Memoria

Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES

Memoria

10

Evernote/Colornote

Utilidad: Permite tomar notas, guardar imágenes con

anotaciones, actúa como agenda…

Número de usuarios: más de 100 millones.

Llama

Utilidad: aplicación que permite al usuario programar

distintos “perfiles” de funcionamiento en el teléfono

según su localización: por ejemplo, cuando salga de

casa activar el GPS y modo silencio.

Número de usuarios: alrededor de 5 millones

2.3 Posible competencia: identificación y características

Aunque en el mercado no se han encontrado aplicaciones ni sistemas con grandes parecidos a

KeepMyCar, sí hay aplicaciones existentes que tienen bastantes similitudes y procuran satisfacer

el mismo conjunto de necesidades que KeepMyCar.

El modelo de app que más se acerca a lo que pretende ofrecer KeepMyCar es el CRM (Customer

Relationship Management). Un sistema CRM informático es aquel que da apoyo a la gestión de

relaciones con clientes, venta y al marketing. Es parte de una estrategia de negocio centrada en el

cliente, la cual gana cada día un mayor peso. El principal objetivo es que el cliente tenga lo que

necesita y en el momento en que lo necesita.

Los sistemas CRM se han ido popularizando desde los años 90, debido en gran medida al avance

de la tecnología en el campo de las bases de datos, que han hecho posible almacenar el volumen

de información que puede requerir un CRM. CRM se refiere a un modelo de organización, basado

en la satisfacción del cliente, y los sistemas CRM proporcionan un conjunto de herramientas

utilizadas en el márketing relacional. El marketing relacional es el marketing que como fin tiene

la generación de relaciones rentables entre vendedor y cliente. Se idea una serie de estrategias y

acciones con el fin de facilitar la interacción con los clientes y brindarles una experiencia positiva.

Gerente de Citas

Page 12: Proyecto Final de Carrera INGENIERÍA DE …bibing.us.es/proyectos/abreproy/12269/fichero/proyectodraft.pdf · Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES Memoria

Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES

Memoria

11

Es una aplicación para el manejo de clientes y citas Empresariales,

contactos de clientes y facturación. El calendario de citas da un

resumen gráfico del intervalo de tiempo libre / ocupado de modo

que uno se pueda programar sus compromisos en consecuencia.

Ofrece recordatorios SMS personalizados, así como alertas SMS.

También se puede utilizar como un mini CRM, ya que ayuda a

comunicarse con los clientes a través de correo electrónico y SMS.

BASE CRM

Base CRM permite controlar los contactos del negocio, llevar cuenta

de las ventas o crear tareas desde el teléfono o Tablet, manteniéndose

sincronizados los cambios con la página web. La app de Android es

gratuita, pero utilizar la web tiene un coste de 25 euros mensuales.

Más de 100 000 clientes.

SMARTY CRM

Se trata de una completa e intuitiva herramienta para mantener la

fidelidad de colaboradores, y con ella puede mantener una base de

datos, establecer recordatorios, y registrar sus hitos de colaboración.

Funciona localmente y también a través de un servidor.

5000-10000 instalaciones

Por otro lado, existen herramientas de escritorio para la gestión de talleres mecánicos media

disponibles para descargar, entre las que se destacan:

TallerGP

Herramienta informática que permite gestionar tu taller y tener los

datos sincronizados con la nube, evitando de este modo la pérdida de

datos en caso de avería del ordenador. También permite enviar SMS y

correos electrónicos a clientes y proveedores, mejorando la relación

con estos. Asimismo, genera informes de documentos relativos al taller

(presupuestos, facturas, entradas a taller, etc) en PDF y dispone de la

Page 13: Proyecto Final de Carrera INGENIERÍA DE …bibing.us.es/proyectos/abreproy/12269/fichero/proyectodraft.pdf · Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES Memoria

Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES

Memoria

12

certificación de seguridad internacional 27001:2005 para el Sistema de Gestión de Seguridad de

la Información que avala la gestión de la información de todos los procesos en su Data Center.

Gestión de citas vía internet

Otra opción a la hora de gestionar el taller es permitir la gestión de citas vía internet, para lo cual

hay servicios de pago como Appointy, Veribook, o Zenkiu. Si bien esta es una función que puede

ser útil en la gestión de citas y en la comunicación con el cliente, estos sitios web ofrecen solo una

funcionalidad, sin dar opción a, por ejemplo, la publicación de ofertas y boletines para mejorar la

relación con el cliente. Sin embargo, esta función es muy interesante, y vale la pena considerar

incorporarla al sistema KeepMyCar en un futuro.

Conclusiones

A pesar de haber competidores en el mercado, KeepMyCar ofrece un enfoque que pensamos tiene

posibilidades, ya que permite al dueño de un taller estar en contacto con el cliente de forma sencilla

y sin necesidad de recordatorios SMS, así como la gestión de citas desde la aplicación de escritorio.

Además, la posibilidad de publicar ofertas que llegan instantáneamente al teléfono del cliente

mediante sencillas notificaciones es una característica añadida a explotar. Es necesario mencionar

que para ser competitivo en el mercado hay que cumplir condiciones como la certificación de

seguridad internacional 27001:2005 para el Sistema de Gestión de Seguridad de la Información,

que actualmente KeepMyCar no soporta.

Siendo KeepMyCar un sistema que ofrece un enfoque relativamente distinto a la oferta actual del

mercado, en el desarrollo de éste es necesario tener en cuenta lo que hay a día de hoy disponible,

y adoptar algunas de las características ya ofertadas en el mercado. Para ello, es necesario un

estudio completo de todas las opciones principales, ver cuáles tienen más cuota de mercado y por

qué, buscar las necesidades de los clientes e intentar encontrar un modelo que se asemeje lo máximo

posible a lo que se demanda a día de hoy, consiguiendo así el objetivo de facilitar tanto para el

dueño del negocio como para los clientes el proceso de ventas, gestión de citas e interacción entre

ellos.

Page 14: Proyecto Final de Carrera INGENIERÍA DE …bibing.us.es/proyectos/abreproy/12269/fichero/proyectodraft.pdf · Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES Memoria

Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES

Memoria

13

3. Tecnología para el desarrollo de la herramienta

3.1 Introducción

En el desarrollo de la KeepMyCar se han utilizado una serie de tecnologías que han sido necesarias

para el correcto fucnionamiento del sistema completo.

3.2 Entorno de desarrollo y tecnologías empleadas

3.2.1 Entorno de desarrollo

Hardware

o Ordenador portátil hp I7

o Teléfono móvil BQ AQUARIS E5

Software

o Sistemas operativos

Android 4.4

Windows 7

o Emuladores de sistemas operativos

Genymotion para Android

o Servidor

XAMPP (Apache, PhpMyAdmin, PHP)

o Bases de datos

MySQL (servidor)

SQLite (bases de datos locales, en el dispositivo móvil y en la herramienta

para ordenador)

o IDEs

Eclipse (desarrollo de la herramienta para ordenador)

Android Studio (desarrollo de la aplicación Android)

o Otros

SQLite Manager (visualización de bases de datos SQLite y pruebas)

Notepad (edición de texto PHP)

Word (redacción de la memoria)

Page 15: Proyecto Final de Carrera INGENIERÍA DE …bibing.us.es/proyectos/abreproy/12269/fichero/proyectodraft.pdf · Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES Memoria

Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES

Memoria

14

3.2.2 Tecnologías empleadas

3.2.2.1 Android

Para el desarrollo de KeepMyCar se hace necesaria una aplicación móvil. Hoy en día existen dos

plataformas móviles ampliamente extendidas en el mercado: Android e IOS. Se ha elegido

Android por varios motivos. Para empezar, ya estaba acostumbrado al desarrollo Android, y

cambiar de Java a Java-Android es relativamente sencillo: solo hay que familiarizarse con una

serie de conceptos propios de Android como las Activities (cada Activity es básicamente una

pantalla en la interfaz de usuario).

A diferencia de las aplicaciones de programación orientada a objetos tradicionales, las Activities

son unas clases especiales que forman la estructura básica de toda aplicación Android. Asimismo,

al desarrollar en Android o cualquier otra plataforma móvil hay que tener en cuenta que no

disponemos de potencia ilimitada (ahorro de batería), o que el sistema Android puede decidir en

cualquier momento “matar” nuestra aplicación. El reto está en asumir el compromiso o trade-off

entre rendimiento y ahorro de batería: la parte móvil de KeepMyCar se despierta periódicamente

y comprueba si hay novedades en el servidor central, y, si para el usuario en términos de

rendimiento instantáneo sería que la aplicación accediese al servidor central cada minuto, esto no

sería lo más eficiente en términos de ahorro de energía.

Para el desarrollo Android se tiene presente el diseño de las Activities, y para ello, se utilizan

ficheros XML. El código responde a interacciones con los elementos XML cuando los linkamos

con el código correctamente.

A la hora de desarrollar en Android, nos encontramos ante la elección del entorno de desarrollo.

Los dos IDE más extendidos en el desarrollo de Android son Eclipse (con el plugin de Android

Development Tools) y Android Studio. Tras empezar el desarrollo de KeepMyCar en Eclipse, en

Marzo de 2015 se migró a Android Studio. Las razones son la falta de estabilidad del IDE de

Eclipse para Android, así como el hecho de que Google dejó de soportar las nuevas actualizaciones

de Android Development Tools en Eclipse.

Como KeepMyCar requiere el almacenamiento local de datos que provienen del servidor, se hizo

necesaria la elección de una base de datos local. Tras investigar, se vió que SQLite es la base de

datos más extendida para Android, y la interacción Android-SQLite resulta sencilla si se utilizan

una serie de clases y métodos ya escritos y disponibles para el público. Para el análisis de las bases

de datos SQLite, la herramienta utilizada ha sido el plugin de Mozilla “Mozilla SQLite Manager”.

Éste plugin es útil para ver qué estamos desarrollando, ya que de otra forma no es posible acceder

a las bases de datos locales de los móviles Android.

3.2.2.2 Java. Herramienta Software para ordenador de escritorio

Page 16: Proyecto Final de Carrera INGENIERÍA DE …bibing.us.es/proyectos/abreproy/12269/fichero/proyectodraft.pdf · Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES Memoria

Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES

Memoria

15

A la hora de planificar y desarrollar la primera versión de KeepMyCar, se ha tenido en cuenta que

a día de hoy la gestión de citas en talleres y consultas de todo tipo aún se realiza mayoritariamente

en ordenadores de escritorio y no en dispositivos móviles ni tablets. Por ello, se ha considerado

básico que la gestión de citas se pueda realizar desde ordenadores de escritorio, dejándose el

soporte a gestión de citas desde dispositivos móviles para posteriores versiones.

El lenguaje de programación elegido para la realización de esta herramienta es Java, y el IDE

Eclipse. Se ha utilizado el plugin AWT de Eclipse para el desarrollo de aplicaciones con ventanas

(con el paquete SWING). La elección de Java como lenguaje de programación para desarrollar la

aplicación se debe a las facilidades que la programación orientada a objetos da a la hora del

desarrollo de programas con características de alto nivel (manejo de interfaces de usuario), además

de ser Java un lenguaje con el que se tenía experiencia.

3.2.2.3 Servidor central y base de datos del servidor

Se ha elegido Apache como servidor web que responda a las peticiones de los clientes. En el

desarrollo del servidor, se hizo necesario el uso de dos tecnologías. El lenguaje de programación

elegido para ejecutarse en el lado del servidor ha sido PHP, mientras que la base de datos se ha

desarrollado en el lenguaje MYSQL.

3.2.2.4 Apache

Desarrollado en el marco del proyecto de HTTP Server de Apache Software Foundation, Apache

es el servidor HTTP más utilizado en la actualidad, y tiene una serie de ventajas con respecto a sus

competidores principales como pueden ser el hecho de que Apache Server es altamente

configurable o que proporciona bases de datos de autenticación y con negociación de contenido.

Sin embargo, la mayor arma de Apache, y que ha permitido su total extensión en el ámbito de

servidores HTTP, es su carácter abierto, multi-plataforma y extensible. Además, al estar tan

extendido su uso, es también muy fácil encontrar ayuda y tutoriales sobre best practices en

Internet.

Es muy usado hoy en día en conjunción a MYSQL y PHP en el desarrollo de páginas dinámicas

en Internet. Una de las grandes ventajas que proporciona el uso de Apache es además su

integración en paquetes junto a MYSQL, para el desarrollo de webs o bases de datos dinámicas

desde un servidor local. En el desarrollo de KeepMyCar, se ha utilizado el paquete XAMPP. Esto

ha permitido realizar pruebas sin la necesidad de subir los scripts PHP ni la base de datos a la red,

lo cual ha resultado en evidente ahorro de tiempo (esto ha permitido previsualizar el resultado

final, y llevar a cabo eficientes test locales).

3.2.4.2 PHP

Page 17: Proyecto Final de Carrera INGENIERÍA DE …bibing.us.es/proyectos/abreproy/12269/fichero/proyectodraft.pdf · Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES Memoria

Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES

Memoria

16

PHP es un lenguaje que permite programar scripts que se integran en el código HTML de modo

que se integra la funcionalidad Server Side a éste, cosa imprescindible en el desarrollo de

aplicaciones que utilizan bases de datos no locales.

El uso de PHP en KeepMyCar se debe principalmente a que para interactuar con la base de datos

MYSQL, es necesario un “intermediario” que favorezca la comunicación cliente-base de datos del

servidor. Al acceder a la base de datos a través de PHP, obtenemos automáticamente las ventajas

que PHP nos proporciona, como el establecimiento de sesiones con la base de datos. Así mismo,

PHP traduce a SQL las queries de manera que se hace más fácil la interacción con MYSQL desde

la aplicación Java o móvil.

La elección de PHP a la hora del desarrollo de KeepMyCar se ha facilitado al ser la sintaxis de

PHP muy parecida a lenguajes de programación a los ya familiares JAVA o C. Además, los scripts

PHP funcionan sin ningún problema de compatibilidad en el módulo Apache /MYSQL que

proporciona el programa XAMPP para desarrollo local de aplicaciones.

3.2.3.3 MYSQL

Para la gestión de bases de datos en el desarrollo de KeepMyCar, MYSQL ha sido el sistema

preferido. MYSQL es un sistema de gestión de base de datos relacional, multiusuario y con más

de seis millones de instalaciones. Además, está desarrollado como software libre, aunque

siguiendo un esquema de licencia dual. Está ofrecido bajo licencia GNU GPL para usos

compatibles con ésta. Por otro lado, empresas que quieran incorporar MYSQL en productos

privativos deben una licencia que permite dicho uso.

La distribución libre de MYSQL está mantenida por la amplísima comunidad de programadores

que da soporte a código Open Source.

Como ventajas de MYSQL, vemos que es una tecnología que está adaptada para funcionar en

equipos de múltiples procesadores, proporcionando una muy alta fidelidad y velocidad de

respuesta.

Las características que se han ido añadiendo a MYSQL han tenido siempre en cuenta que el

principal objetivo de MYSQL es garantizar que éstas no comprometen la estabilidad o el

rendimiento del sistema.

En KeepMyCar se ha utilizado PhpMyAdmin en la gestión de la base de datos MYSQL, tanto en

local como una vez el sistema fue subido al servidor. PhpMyAdmin es una herramienta muy

intuitiva incluida en XAMPP, y nos permite gestionar bases de datos y crear distintas tablas, así

como visualizar las filas de la base de datos creada, ejecutar queries de prueba y ver el tiempo de

ejecución de las mismas.

Sin conocimiento previo de bases de datos, la curva de aprendizaje SQL ha resultado muy corta

gracias en parte a las facilidades que ha dado PhpMyAdmin.

Page 18: Proyecto Final de Carrera INGENIERÍA DE …bibing.us.es/proyectos/abreproy/12269/fichero/proyectodraft.pdf · Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES Memoria

Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES

Memoria

17

3.2.3 Alternativas existentes a las tecnologías empleadas

En algunos casos la elección de una determinada tecnología se ha debido a que ya se disponía de

experiencia en dicho campo, mientras que en otros ha sido el resultado de investigación sobre

alternativas y del análisis de ventajas e inconvenientes de cada una. A la hora de elegir cada

tecnología en el desarrollo de KeepMyCar se han tenido en cuenta los siguientes factores:

Conocimiento previo

Curva de aprendizaje

Extensión y popularidad (existencia de tutoriales, foros de apoyo)

Perspectiva de desarrollo futuro

Precio

A continuación se exponen algunas de las muchas alternativas que hay en cada a cada una de las

tecnologías escogidas. Se han intentado recoger las principales, y se explicarán los motivos por los

cuales se descartó su uso.

3.2.3.1 Alternativas a Android

Figura 3.1

En la figura, podemos

observar la evolución de

ventas en los distintos

sistemas operativos

desde el primer

trimestre de 2012 hasta

el primer trimestre de

2015.

3.2.3.1.1 Windows Phone

El ambicioso proyecto Windows Phone ha resultado en un potente sistema operativo, que solo en

el primer trimestre de 2015 vendió 9.2 millones de unidades y casi un 3% del mercado. Sin

Page 19: Proyecto Final de Carrera INGENIERÍA DE …bibing.us.es/proyectos/abreproy/12269/fichero/proyectodraft.pdf · Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES Memoria

Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES

Memoria

18

embargo, esto se antoja insuficiente a la hora de elegir la plataforma de desarrollo en un proyecto

que busca llegar al mayor número de personas posible.

3.2.3.1.1 Apple iOS

Apple vende alrededor del 20% de móviles del mercado, lo cual es casi un 50% por debajo de su

rival en el mercado de móviles, Android. Sin embargo, iOS tiene una comunidad enorme de

desarrolladores, y el mercado App Store mueve incluso más dinero que Google Play (a finales de

2013, el mercado Apple hacía más dinero que toda la competencia junta). Esto es debido a los

distintos perfiles de los usuarios de Apple y Android. Los usuarios de Apple están por lo general

más dispuestos a gastar dinero en aplicaciones.

Sin embargo, la App móvil de KeepMyCar está pensada para ser gratuita, porque será usada por

los clientes del taller mecánico. Por ello, el hecho de que Android ocupa actualmente casi el 80%

de las ventas de dispositivos móviles ha sido definitivo a la hora de elegir dicha plataforma.

Otro inconveniente de iOS es que su desarrollo es en C Objective, lenguaje orientado objetos con

el que si bien el alumno tiene experiencia, ésta es inferior a la de Android, con el que había llevado

a cabo varios proyectos anteriormente.

Además, el desarrollo de iOS es costoso, ya que precisa de ordenador Apple y de pago de cuota

anual de 99 dólares, y a la hora del desarrollo de KeepMyCar uno de los objetivos fijados ha sido

el que éste sea lo más económico posible.

Sin embargo, no es recomendable despreciar un 20% de mercado potencial a la hora de desarrollar

un producto, así que en futuras versiones de KeepMyCar sí se tendría en cuenta el desarrollo de

versiones iOS.

3.2.4.1 Alternativas a Java y al desarrollo de la herramienta software de

escritorio

Se eligió Java como lenguaje en el desarrollo de la aplicación de escritorio por la simplicidad de

éste y por ser un lenguaje de programación orientada al objetos bien conocido por el alumno. Sin

embargo, se consideraron las siguientes alternativas:

3.2.4.2 Desarrollo de una aplicación web

Quizás la alternativa más sólida al desarrollo de una aplicación de escritorio ha sido la posibilidad

de sustituir ésta por una aplicación web, desarrollada con C#, Visual Basic o JavaScript. Existen

varias ventajas derivadas de las aplicaciones web que podrían haber sido muy beneficiosas en el

desarrollo de la aplicación de gestión de cartera de clientes que el mecánico usará. Vamos a

enumerar las principales:

Evitan problemas de compatibilidad entre plataformas

Page 20: Proyecto Final de Carrera INGENIERÍA DE …bibing.us.es/proyectos/abreproy/12269/fichero/proyectodraft.pdf · Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES Memoria

Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES

Memoria

19

No ocupan espacio de disco duro

No requieren mantener una base de datos local con los datos de los clientes del mecánico

Son totalmente portables

Los virus que pueda tener el ordenador del mecánico no dañan los datos. Al no tener datos

en local y estar todos en el servidor, utilizando una aplicación web no tenemos que

preocuparnos de problemas de sincronización entre datos de cliente y servidor

Se consumen muy pocos recursos al estar la mayor parte de los datos procesados en el

servidor

Sin embargo, una de las premisas buscadas en el desarrollo de la parte del mecánico de

KeepMyCar ha sido la posibilidad de que si hubiera un problema de conexión con internet se

puedan guardar datos en una base de datos local para luego sincronizar con el servidor. De esta

manera, el mecánico no acusará el problema y podrá seguir gestionando sus citas. Cuando haya

conexión disponible de nuevo, KeepMyCar se sincronizará con el servidor de forma transparente

al usuario.

3.2.4.3 Desarrollo de la herramienta software de escritorio en C

Una vez tomada la decisión de desarrollar la herramienta de escritorio, se consideró C como

alternativa a Java. C presentaría un cambio de filosofía en el desarrollo de la herramienta

(programación estructurada vs POO), y tiene una serie de ventajas sobre Java:

Velocidad y potencia

Compilado: no hay que utilizar intérpretes

Mayor control sobre el programa (de más bajo nivel)

Por otra parte, y como ya se ha expuesto anteriormente, Java tiene las ventajas de que el desarrollo

de interfaces gráficas es sencillo al tratarse de un lenguaje de alto nivel, y que exime al

programador de tener que preocuparse excesivamente por la gestión de recursos del sistema.

3.2.5.1 Alternativas en la elección de Apache como servidor Http

Existen muchas alternativas al servidor Apache Http. Sin embargo, se ha elegido Apache por las

ventajas ya comentadas anteriormente. Vamos a mencionar algunas de las alternativas que se han

considerado:

Thttpd: distribuido en software libre y disponible para plataformas UNIX, tiene como

mejores prestaciones su simplicidad, poco tamaño, portabilidad, rapidez y seguridad,

empleando los requerimientos mínimos de un servidor HTTP. Sin embargo, tiene una serie

de inconvenientes, como por ejemplo que no soporta https, esto hizo que se descartara como

alternativa.

Page 21: Proyecto Final de Carrera INGENIERÍA DE …bibing.us.es/proyectos/abreproy/12269/fichero/proyectodraft.pdf · Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES Memoria

Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES

Memoria

20

Nginx: Servidor web que ha crecido mucho en los últimos años, es recomendado para sitios

web estáticos que necesiten alta velocidad, con poco uso de la memoria y sitios web que

funcionan con un servidor dedicado. Al estar basado en eventos y no en procesos (como

Apache, en el que cada conexión requiere un hilo, lo que aumenta la carga

considerablemente), nginx consume mucho menos memoria. Además, cuando hay muchas

conexiones simultáneas, nginx ofrece muy altas velocidades de transferencia.

No se eligió Nginx por el hecho de tener Apache una mayor comunidad de desarrolladores.

Sin embargo, podría haber sido la alternativa más eficiente a la hora de procesar las

conexiones de clientes en KeepMyCar.

3.2.5.2 Alternativas en la elección de MYSQL

MariaDb: es considerada la evolución de MySQL, y son compatibles. De hecho, en la

migración MySQL-MariaDb no es necesario cambiar modificar el código. MariaDb es

un sistema de gestión de bases de datos derivado de MySQL con licencia totalmente

gratuita GPL. Es desarrollado por Michael Widenius (fundador de MySQL) y la comunidad

de desarrolladores de software libre. Se considera que existen una serie de ventajas de

MariaDb con respecto a MySQL:

o Motores de almacenamiento nuevos, como Aria, que reemplaza MyISAM.

o Mejoras de velocidad, sobre todo cuando se utiliza el motor de almacenamiento

Aria. El motivo es que Aria cachea datos en tablas temporales de memoria,

mejorando así el rendimiento de MyISAM, que utilizaba el disco duro.

o Nuevas tablas de sistema que almacenan estadísticas que pueden ser útiles para

realizar la optimización de la base de datos.

Vemos como MariaDb no supone un salto abrupto desde MySQL, por lo que incluso se

podría hacer el trasvase de las bases de datos de KeepMyCar a MariaDb sin problemas.

MySQL fue la base de datos elegida por encontrarse en el paquete de desarrollo XAMPP,

aunque en versiones futuras se tendrá en cuenta MariaDb como evolución natural de

MySQL.

Page 22: Proyecto Final de Carrera INGENIERÍA DE …bibing.us.es/proyectos/abreproy/12269/fichero/proyectodraft.pdf · Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES Memoria

Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES

Memoria

21

4. Desarrollo de KeepMyCar

4.1 Introducción

KeepMyCar es un sistema de gestión de cartera de clientes de mecánica. Por un lado, está la

herramienta software instalada en el equipo del mecánico. El mecánico gestiona en ella sus clientes

y citas. En adición, puede crear “ofertas” del taller y “recordatorios” de próximas revisiones

asociados a uno o varios clientes. De forma transparente al mecánico, las ofertas, citas y

recordatorios son guardados doblemente. Por un lado, en la base de datos local del mecánico, y

por otro, son enviados a una base de datos central. Al estar guardados los datos en un servidor

central, por un lado conseguimos un sistema seguro y portable para el mecánico, y por otro, los

datos de las próximas citas de cada cliente pueden ser enviados a éstos.

El cliente del taller descarga la aplicación Android KeepMyCar, y obtiene su usuario. Con la

aplicación KeepMyCar, tendrá acceso a las citas, ofertas y recordatorios de su taller. La aplicación

hace acceso a las nuevas publicaciones del taller diariamente, y en caso de haber novedades

(próxima cita concertada, nuevo recordatorio…), se abrirá una notificación en el dispositivo móvil

del cliente mostrando el número de novedades que hay publicadas en su taller.

De esta manera, el cliente del taller va a estar al tanto de novedades en su taller incluso

manteniendo cerrada su aplicación de Android, ya que ésta abrirá notificaciones periódicamente

indicándole las novedades que ha publicado el mecánico.

KeepMyCar ofrece, como se ha expuesto, una serie de servicios, con el objetivo de obtener una

mayor fidelidad por parte del cliente y mejorar la interacción entre éste y el mecánico. Por ejemplo,

cada vehículo tiene ciclos de mantenimiento que es conveniente mantener. Al poder el mecánico

publicar los recordatorios de estos ciclos, se está ofreciendo un servicio valioso al cliente, ya que

se está facilitando el mantenimiento de su automóvil.

Además, con la publicación periódica de recomendaciones u ofertas, el taller consigue mantenerse

presente en el cliente, de modo que se evita la necesidad de buscar otro taller.

Por otro lado, el cliente obtiene fácil acceso a la dirección y número de teléfono del taller mediante

la aplicación Android.

Page 23: Proyecto Final de Carrera INGENIERÍA DE …bibing.us.es/proyectos/abreproy/12269/fichero/proyectodraft.pdf · Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES Memoria

Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES

Memoria

22

4.2 Esquema básico de funcionamiento del sistema

Figura 4.1

Esquema básico

de funcionamiento

del sistema. El

teléfono del

cliente recoge las

ofertas, citas y

recordatorios de

un servidor central

con el que

interactúa el

mecánico, que

también mantiene

una base de datos

local

4.3 Diagramas de casos de uso

Los diagramas de casos de uso permiten diferenciar los actores que interactúan con el sistema, las

relaciones entre ellos y las acciones que puede realizar cada uno dentro del sistema.

Este tipo de diagramas es comprensible tanto por clientes como por usuarios, y representa los

requisitos funcionales del sistema, utilizándose como base para un desarrollo iterativo e

incremental. Los diagramas de casos de uso tienen tres elementos:

Actores: Son los usuarios del sistema. Un actor puede ser una persona, un conjunto de

personas, un sistema hardware o un sistema software. Los actores representan un rol, que

puede desempeñar alguien que necesita intercambiar información con el sistema.

Casos de uso: Un caso de uso describe una forma concreta de utilizar parte de la

funcionalidad de un sistema. La colección de todos los casos de uso describe toda la

funcionalidad del sistema.

Page 24: Proyecto Final de Carrera INGENIERÍA DE …bibing.us.es/proyectos/abreproy/12269/fichero/proyectodraft.pdf · Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES Memoria

Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES

Memoria

23

Comunicación entre actores y casos de uso: Cada actor ejecuta un número específico de

casos de uso en la aplicación. Por eso decimos que hay comunicación entre actores y casos

de uso.

4.3.1 Actores

Figura 4.2

Actores del sistema

4.3.2 Diagramas de casos de uso del mecánico

Figura 4.3

Diagrama de casos de uso del

mecánico

Page 25: Proyecto Final de Carrera INGENIERÍA DE …bibing.us.es/proyectos/abreproy/12269/fichero/proyectodraft.pdf · Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES Memoria

Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES

Memoria

24

4.3.3 Diagramas de casos de uso del usuario registrado del taller

Figura 4.4

Diagrama de casos

de uso del Usuario

4.4 Diagramas de clases

A la hora de evaluar las clases del proyecto, se van a evaluar las clases más importantes de la

aplicación Android y Java por separado.

4.4.1 Diagramas de clases en App Android

Page 26: Proyecto Final de Carrera INGENIERÍA DE …bibing.us.es/proyectos/abreproy/12269/fichero/proyectodraft.pdf · Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES Memoria

Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES

Memoria

25

Figura 4.4 Archivos conteniendo el código fuente de

la aplicación Android

Para comenzar, mencionar que en una aplicación

Android hay código Java (en el caso de KeepMyCar

en la carpeta com.example.gabrilator.keepmycar), y

también hay código XML que se referencia desde el

código Java. Estos archivos XML se encuentran en

la carpeta res (resources), y son imprescindibles para

el correcto desarrollo de la aplicación. En la carpeta

Layout hay varios archivos XML, uno por User

Interface, mientras que en la carpeta drawable

colocamos las imágenes que luego referenciamos en

el resto del código.

Vemos las principales clases de la aplicación:

Login. Clase que extiende Activity. Carga una UI donde el cliente del taller puede hacer

login con el usuario y contraseña que le han sido

asignados. Cuando el cliente hace “tap” en login, se

ejecuta el proceso background de login mediante la

clase AttemptLogin, que extiende a AsyncTask. El

proceso de login consiste en el envío al servidor de las

credenciales de usuario, y la interpretación de la

respuesta de este. Para interpretar la respuesta del

servidor se hace uso de la clase JSONParser. Si la

respuesta es positiva, se abre la Activity MenuActivity.

Figura 4.5 Aspecto de la Activity Login en teléfono Android

Page 27: Proyecto Final de Carrera INGENIERÍA DE …bibing.us.es/proyectos/abreproy/12269/fichero/proyectodraft.pdf · Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES Memoria

Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES

Memoria

26

Figura

4.5

Login

MenuActivity. Clase de tipo Activity (interacciona con usuario en Android) que muestra

al cliente las opciones “ver citas”, “ver recordatorios”,

“ver ofertas” y “contacto”. Es llamada una vez obtenemos

éxito en el intento de Login.

Figura 4.6 Aspecto de MenuActivity

Page 28: Proyecto Final de Carrera INGENIERÍA DE …bibing.us.es/proyectos/abreproy/12269/fichero/proyectodraft.pdf · Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES Memoria

Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES

Memoria

27

Figura 4.7 Diagrama de la clase MenuActivity

o OfertasActivity. Muestra, en orden de fecha, las ofertas que hemos recogido del servidor

central. Estas ofertas son guardadas en la base

de datos local SQLite del móvil, de manera que

la próxima vez que se abra la vista, se cargarán

primero los datos locales, y luego se accederá al

servidor para comprobar si hay novedades.

Como en cada Activity de Android que necesita

acceder a la red, OfertasActivity utiliza una

AsycTask (LoadComments) que ejecute el

acceso a la red en un hilo. Observamos que un

método de LoadCommets es

doInBackground. Es aquí donde se realiza la

petición http al servidor. Esto es debido a que si

accediésemos a la red en el hilo principal (por

ejemplo, en el método onCreate de

OfertasActivity), la interacción UI-usuario se

vería afectada, ya que el hilo principal estaría

accediendo a la red.

Figura 4.8 Aspecto de la Activity OfertasActivity

Page 29: Proyecto Final de Carrera INGENIERÍA DE …bibing.us.es/proyectos/abreproy/12269/fichero/proyectodraft.pdf · Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES Memoria

Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES

Memoria

28

Figura 4.8 OfertasActivity

o CheckService. Android tiene un tipo especial de clase llamado Service. La clase

CheckService extiende a IntentService. Un IntentService es un tipo de Service que

responde a peticiones asíncronas. Los clientes mandan peticiones a través de

startService(Intent). En el caso de KeepMyCar, CheckService va a ejecutarse

periódicamente a petición de AlarmReceiver: se programa el AlarmManager de Android

para periódicamente “despertar” al IntentService, de manera que incluso estando la

aplicación apagada, si el usuario ha hecho login anteriormente, la aplicación comprueba la

existencia de novedades en el taller del cliente en internet. Si hay novedades, CheckService

crea una notificación indicando el número de novedades, y ésta se muestra en el teléfono.

CheckService también hace uso de JSONParser para interpretar las respuestas del servidor

central.

Page 30: Proyecto Final de Carrera INGENIERÍA DE …bibing.us.es/proyectos/abreproy/12269/fichero/proyectodraft.pdf · Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES Memoria

Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES

Memoria

29

Figura 4.9 CheckService

4.4.2 Diagramas de clases en la aplicación de escritorio

Figura 4.10 Archivos conteniendo el código fuente de

la aplicación de escritorio

Para la aplicación KeepMyCar Java de escritorio se ha

utilizado la librería Swing para representar los

componentes UI. En primera instancia, se escribió el

programa sin tener en cuenta que al acceder a la red

desde el hilo “even dispatch thread” (el hilo que

permite la interacción con los elementos Swing), la

aplicación se bloquea y no responde a ninguna acción

del usuario hasta que se terminase la acción. Viendo

este comportamiento indeseado, se investigó y se

aplicó el enfoque correcto, teniendo en cuenta:

Page 31: Proyecto Final de Carrera INGENIERÍA DE …bibing.us.es/proyectos/abreproy/12269/fichero/proyectodraft.pdf · Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES Memoria

Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES

Memoria

30

o Los hilos iniciales, que son los hilos que ejecutan el código inicial de la aplicación.

o El ya mencionado “event dispatch thread”, que donde debemos incluir todo código que

interactúe con la Framework de Swing.

o Hilos trabajadores o “background threads”. Aquí debemos añadir las tareas que consumen

tiempo considerable, y éstas se ejecutarán en segundo plano, dejando el event dispatch

thread libre para interactuar con él.

Pues bien, para hacer uso de estos hilos trabajadores se ha extendido la clase SwingWorker, y el

código ejecutado en “background” se ha añadido en el método “doInBackground”. A continuación

se exponen los diagramas de algunas de las clases más importantes de la aplicación. Al ser clases

“visuales”, se va a mostrar también el aspecto de éstas al ser ejecutadas.

Clientes. Clase que extiende JFrame (incluye elementos Swing). Carga de la base de datos

local los clientes registrados con un determinado mecánico (que ha hecho login), pregunta

al servidor si hay nuevos clientes y en caso de haberlos los descarga. También nos ofrece

la opción de crear nuevo cliente, cargar los datos de un determinado cliente, modificar un

determinado cliente y eliminar un cliente. Como se ha explicado, las operaciones de

networking se realizan por separado del hilo dispatcher de JFrame, para lo cual se han

creado las clases ClientesBackground, EliminarBackground y ModificarBackground.

Figura 4.11 Clase clientes, aspecto en la aplicación

Page 32: Proyecto Final de Carrera INGENIERÍA DE …bibing.us.es/proyectos/abreproy/12269/fichero/proyectodraft.pdf · Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES Memoria

Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES

Memoria

31

Figura 4.12 Diagrama de la clase Clientes

Clase Comments. De nuevo, extiende JFrame (es Swing element). Carga los Recordatorios

y Citas de un determinado cliente, y los expone en orden de fecha. También hace uso de

una serie de clases clases SwingWorkers para realizar tareas de networking en el

background: AnswerWorker, EliminarCommentBackground y

ModificarCommentBackground.

Page 33: Proyecto Final de Carrera INGENIERÍA DE …bibing.us.es/proyectos/abreproy/12269/fichero/proyectodraft.pdf · Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES Memoria

Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES

Memoria

32

Figura 4.12 Clase Comments, aspecto en la aplicación

Figura 4.13 Diagrama de la clase Comments

AnadirComment. Clase que representa una ventana, creada con JFrame. Es llamada para

añadir una cita con un determinado cliente, y el trabajo de networking lo realiza llamando

al método doinBackground de AnadirCommentBackground (que extiende a

SwingWorker).

Page 34: Proyecto Final de Carrera INGENIERÍA DE …bibing.us.es/proyectos/abreproy/12269/fichero/proyectodraft.pdf · Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES Memoria

Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES

Memoria

33

Figura 4.13 Clase AnadirComment, aspecto en la aplicación

Figura 4.12 Diagrama de la clase AnadirComment

4.5 Diseño de bases de datos

Se ha utilizado MySQL para la base de datos central, mientras que para las bases de datos locales

(la de la aplicación de escritorio y la de la aplicación Android) se ha optado por SQLite.

4.5.1 Base de datos central

La base de datos central debe almacenar toda la información del sistema. Se ha optado por

distribuir la información en tres tablas:

Tabla superusers. Almacenamos en ella información necesaria para el login del mecánico

en el sistema, como su usuario y contraseña. Asimismo, almacena información del taller,

Page 35: Proyecto Final de Carrera INGENIERÍA DE …bibing.us.es/proyectos/abreproy/12269/fichero/proyectodraft.pdf · Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES Memoria

Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES

Memoria

34

como el nombre de la compañía, dirección y teléfono. Esta información será recogida por

la aplicación Android y servirá al cliente del taller como información de contacto.

Tabla users. En esta tabla, se almacenan en distintas columnas los datos de login de los

clientes del taller, e información como su nombre, apellidos, número de teléfono (contacto)

o dirección. Asimismo, la columna superuser relaciona a cada cliente con un taller, de

manera que al acceder el cliente al sistema obtendrá la información del taller que le

corresponde.

Tabla comments. Tabla que almacena las ofertas, citas y recordatorios publicados por el

software de escritorio del mecánico, y que los asocia a cada cliente.

4.5.2 Bases de datos locales

El diseño de las dos bases de datos locales se ha realizado teniendo en cuenta que hay que mantener

sincronización con la base de datos del servidor central. Así, el mayor reto ha sido cómo

programáticamente evitar duplicados y consultas innecesarias que recarguen el servidor. Por

ejemplo, cuando recogemos los datos del servidor buscando novedades en android, le indicamos

al servidor la última novedad recibida, de manera que el servidor solo tiene que buscar datos a

partir de ésta.

4.5.2.1 Base de datos local en android

Se trata de una base de datos sencilla (una tabla) en la que almacenamos los mensajes que llegan

del servidor central, el tipo de cada mensaje (oferta, cita, recordatorio) y datos de identificación y

sincronización con el servidor central.

4.5.2.1 Base de datos local en Java (aplicación de escritorio para el mecánico)

Esta base de datos es muy importante ya que la aplicación de escritorio debe poder guardar datos

sin que haya conexión a internet. Más tarde, al detectarse conexión a internet, la aplicación se

sincronizará con el servidor. Tenemos dos tablas:

Tabla users. En esta tabla, se guarda toda la información de los clientes del taller. El

mecánico puede consultar, modificar o eliminar los datos de cada usuario en la aplicación.

Tabla comments. Guarda los datos de citas, recordatorios y ofertas generados por el

mecánico. En caso de encontrarse conexión a internet, estos datos estarán sincronizados en

todo momento con el servidor. En caso de estarse trabajando en modo offline, se irán

guardando y al volver al modo online se autosincronizarán con el servidor.

4.6 Evaluación y pruebas con KeepMyCar

Se diseñan una serie de pruebas para comprobar el correcto funcionamiento del sistema

KeepMyCar. Las pruebas van a consistir en lo que podría considerarse como el proceso normal de

interacción entre un mecánico y un cliente que quiere utilizar la aplicación Android para estar al

corriente de las novedades en su taller. Cabe mencionar que el usuario del mecánico con el que

Page 36: Proyecto Final de Carrera INGENIERÍA DE …bibing.us.es/proyectos/abreproy/12269/fichero/proyectodraft.pdf · Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES Memoria

Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES

Memoria

35

vamos a hacer login en la aplicación de escritorio es “Jimenez”, y hemos creado un perfil con un

negocio llamado “Taller Jimenez SA”.

Número Prueba Resultado

1.1 Creación de nuevo usuario Android OK

1.2 Login con el nuevo usuario Android OK

1.3 Comprobar que no se muestran citas ni

recordatorios, pero si las ofertas

OK

2.1 Añadir novedades desde la aplicación de

escritorio

OK

2.2 Check online de las novedades añadidas OK

2.3 Se abren las notificaciones en el móvil OK

3.1 Comprobar datos de contacto del taller OK

4.1 Eliminar usuario creado OK

4.2 Comprobación desde la aplicación móvil OK

4.6.1 Prueba 1: Creación correcta de un cliente de prueba desde la herramienta

de escritorio

Desde la herramienta de escritorio, creamos un nuevo cliente y comprobamos que todo funciona

correctamente:

Figura 4.13 Nuevo cliente del taller desde la aplicación del escritorio

Figura 4.14 Comprobación de que el cliente ha sido añadido en el servidor

Page 37: Proyecto Final de Carrera INGENIERÍA DE …bibing.us.es/proyectos/abreproy/12269/fichero/proyectodraft.pdf · Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES Memoria

Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES

Memoria

36

Figura 4.15 Login con nuevo usuario Figura 4.16 No hay citas que mostrar Figura 4.17 No

revisiones

Vemos que, tras hacer login con el nuevo usuario PrueProy y comprobar si hay novedades en la

aplicación Android, no hay citas ni revisiones futuras. Esto es el comportamiento esperado, ya que

no se han añadido desde la aplicación de escritorio. Sin embargo, sí deberían poder consultarse ya

las ofertas, ya que estas son accesibles desde cualquier cliente del

taller. Lo comprobamos:

Figura 4.17 Ofertas

En 4.17 comprobamos cómo Android recoge del servidor las

ofertas del taller. Las ofertas creadas desde la herramienta de

escritorio son guardadas en el servidor como tipo “oferta”, y se

ha creado un script php que responde a la petición de la aplicación

Android para todas las ofertas publicadas por el taller

correspondiente. Comportamiento correcto

4.6.2 Prueba 2: Se añaden novedades desde la aplicación de escritorio y se

comprueba que éstas llegan al servidor, y que Android las recoge

automáticamente abriendo una notificación

Vamos a crear dos recordatorios de revisión “Recordatorio 1” y “Recordatorio 2”, así como una

cita “Cita 1”, asociados al usuario PrueProy que hemos creado en el paso anterior. Estas novedades

Page 38: Proyecto Final de Carrera INGENIERÍA DE …bibing.us.es/proyectos/abreproy/12269/fichero/proyectodraft.pdf · Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES Memoria

Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES

Memoria

37

se añaden al servidor, y Android debería “despertarse” y consultarlas, mostrándolas por la pantalla.

Vemos cómo se comporta el sistema ante estas acciones.

Figura 4.18 Se han añadido los recordatorios y la cita a la herramienta de escritorio

Figra 4.19 Novedades añadidas en el servidor central.

Observamos cómo se han añadido correctamente al servidor las tres novedades. Ahora, en el

funcionamiento normal del sistema KeepMyCar, la aplicación accedería cada 12 ó 24 horas al

taller (aún no se ha decidido cada cuánto programar el acceso). Sin embargo, con el propósito de

poder realizar las pruebas, se ha programado un acceso al

servidor cada minuto. Se espera un minuto con la aplicación

KeepMyCar no abierta en Android (eso sí, se había hecho login

con el nuevo usuario anteriormente), y vemos que se abre una

nueva notificación:

La notificación muestra el número de novedades que se han

añadido desde la herramienta de escritorio, así como un icono

de KeepMyCar. Al hacer tap en la notificación, se debería abrir

el menú de la aplicación Android mostrándonos, entre otras

cosas, el desglose de novedades (en este caso, hay 2 revisiones

nuevas y una cita nueva).

Page 39: Proyecto Final de Carrera INGENIERÍA DE …bibing.us.es/proyectos/abreproy/12269/fichero/proyectodraft.pdf · Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES Memoria

Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES

Memoria

38

Figura 4.21 Menu con novedades Figura 4.22 Recordatorios añadidos Figura 4.23 Citas

añadidas

4.6.3 Prueba 3: comprobar datos de contacto con el taller desde la aplicación

Android

La aplicación de Android sirve también al cliente para ponerse en contacto con el mecánico si así

lo necesita. Haciendo tap en “información de contacto”, accedemos a la información del taller:

Page 40: Proyecto Final de Carrera INGENIERÍA DE …bibing.us.es/proyectos/abreproy/12269/fichero/proyectodraft.pdf · Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES Memoria

Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES

Memoria

39

Figuras 4.24 y 4.25 Contacto con el taller desde la aplicación Android.

4.6.4 Prueba 4: Eliminamos el usuario creado, vemos que no es posible hacer

login en la aplicación Android

Se va a eliminar el usuario creado anteriormente. Tras esto, vamos a comprobar que el usuario ya

no consta en la base de datos del servidor, así como los comentarios que añadimos anteriormente.

Tras realizar las pruebas, se ha comprobado que los datos del usuario no están en el servidor ni en

la base de datos local de la aplicación de escritorio, y que el login desde android no es posible.

Page 41: Proyecto Final de Carrera INGENIERÍA DE …bibing.us.es/proyectos/abreproy/12269/fichero/proyectodraft.pdf · Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES Memoria

Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES

Memoria

40

Figura 4.26 Lista de clientes, sin el usuario de prueba añadido

Ahora, tras intentar hacer login con el usuario creado anteriormente, la aplicación vuelve a la

pantalla de Login tras unos segundos de intercambio de mensajes con el servidor.

Esto prueba que el usuario ha sido eliminado correctamente. Aun así, vamos a acceder al servidor

central, y ejecutamos la SQL query “select * from users where username= ‘PrueProy’”, para

comprobar que la base de datos no devuelve ningún resultado:

Figura 4.27 Login no exitoso

Figura 4.28 Checkeo online, la base de datos no devuelve ningún resultado

Page 42: Proyecto Final de Carrera INGENIERÍA DE …bibing.us.es/proyectos/abreproy/12269/fichero/proyectodraft.pdf · Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES Memoria

Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES

Memoria

41

5. Plan de implantación KeepMyCar

5.1 Concepto de negocio

El sistema al que nos referimos, que hemos llamado KeepMyCar, ofrece a los dueños de talleres

mecánicos las siguientes funcionalidades principales:

Gestión de clientes y citas

Publicación de recordatorios de servicio (recordatorios de citas, futuras revisiones)

Publicación de recomendaciones a los clientes del taller

Además, se piensan añadir funcionalidades en el futuro, como la gestión de citas online, de modo

que el cliente pueda realizar la reserva en el taller desde su teléfono móvil, o el seguimiento online

del arreglo del coche desde la aplicación. Otra funcionalidad que se piensa añadir es la opción de

permitir al mecánico gestionar las citas desde su propia aplicación Android o Iphone para

gestionarlo desde su móvil o Tablet, pensando aquellos que deseen dejar de usar el ordenador para

la gestión de sus clientes.

Los usuarios de KeepMyCar tendrán disponible la aplicación desde dos canales:

Tiendas de aplicaciones (Google Play, App Store)

Página web de KeepMyCar, desde la que también se podrá descargar la aplicación

de gestión de taller de escritorio

A la hora de realizar el modelo de negocio, nos centramos primero en Talleres independientes en

España, con el objetivo de mantenerlo relativamente sencillo y poder así profundizar en éste.

Así, tenemos un mercado en el que hay 29000 talleres, del que en una primera fase, el objetivo a

conseguir en el primer año es tener 30 talleres asociados a KeepMyCar (un 0,13 % del mercado).

Una vez se alcance este ratio, el objetivo es crecer hasta en 3-4 años tener 150 talleres asociados

en el territorio Español.

Para conseguir un producto mínimo viable, se requiere de una inversión inicial de 5000 € que

sufrague gastos iniciales:

Desarrollo de versiones Android, IoS, escritorio de KeepMyCar

Desarrollo de página web

Plan de marketing y comercialización

Otros

El modelo de negocio se basa en subscripciones al paquete KeepMyCar por parte de los talleres.

Se ofrecerá un periodo de prueba gratuito de 2 meses tras el cual el Taller deberá pagar una cuota

de abonado de 35€ mensuales. Esto, si se cumplen las previsiones

Page 43: Proyecto Final de Carrera INGENIERÍA DE …bibing.us.es/proyectos/abreproy/12269/fichero/proyectodraft.pdf · Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES Memoria

Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES

Memoria

42

5.2 Presentación de la empresa

La idea de KeepMyCar nace del clásico problema en la relación cliente-mecánico que casi todo

conductor ha vivido en varias ocasiones. “Te dejo escrito en este papel la fecha de tu próxima

revisión”, “¿cuándo tenía yo mi próxima cita con el mecánico?” “¿lo apunté?”. O el problema

típico del mecánico “¿cómo obtengo mayor tasa de fidelidad de mis clientes?

Con el objetivo de solucionar estos problemas y utilizando la sencilla y muy conocida tecnología

de apps de escritorio y apps móviles, KeepMyCar ofrece un sistema de comunicación mecánico-

cliente en el que los clientes pueden estar al tanto de las próximas citas y revisiones, así como de

las ofertas que se hayan publicado por parte del mecánico.

KeepMyCar en este sentido libera al usuario de la preocupación de tener que apuntar futuras

revisiones de su coche, de tener que acordarse de la hora exacta de una cita, y le mantiene al tanto

de novedades en su taller. Y todo a través de una aplicación móvil. ¿Por qué usamos aplicaciones

móviles?

Pues bien, como se ha dicho en el capítulo 2, el desarrollo de aplicaciones se ha convertido en los

últimos años en uno de los nuevos mercados emergentes, en el que aún hay mucho que explotar.

Consideramos que KeepMyCar tiene hueco dentro de este mercado ya que añade, con su

combinación de aplicación de escritorio para el mecánico y aplicación móvil para los clientes, una

funcionalidad no cubierta por el mercado.

Asimismo, destacar que una vez desarrollado el sistema KeepMyCar, éste puede ser aplicado sin

muchas modificaciones a otros sectores, como puede ser la gestión de citas en una consulta médica

o de fisioterapia. El objetivo final a la hora de desarrollar KeepMyCar es el de crear un

sistema de gestión de citas “global”. El usuario de Smartphone hará login en el sistema global.

Seguidamente, se le mostrará al cliente una lista de centros adscritos cercanos de diferentes tipos.

“clínicas médicas”, “talleres mecánicos”, “centro de masajes”, “fisioterapia”… al seleccionarse un

centro, se podrá acceder a ofertas o no dependiendo del tipo de centro, y si se recibe autorización

del gestor de dicho centro (por ejemplo, introduciendo la contraseña del centro) el usuario quedará

registrado en un centro más, y las citas y recordatorios que tenga con ese centro le llegarán al

móvil.

5.3 Visión, misión y objetivos

5.3.1 Vision

Mi visión es implantar KeepMyCar en los talleres a nivel nacional, convertirla en un sistema de

referencia y ser útil para los usuarios. Para conseguir esto, es necesario primero publicar una

versión con el “producto mínimo viable”, y luego ir mejorándolo y añadiendo nuevas

características gradualmente.

Page 44: Proyecto Final de Carrera INGENIERÍA DE …bibing.us.es/proyectos/abreproy/12269/fichero/proyectodraft.pdf · Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES Memoria

Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES

Memoria

43

Sin embargo, como se ha mencionado anteriormente, una vez desarrollado el producto

KeepMyCar por completo, el objetivo sería el desarrollo paralelo de un sistema de gestión de

cualquier tipo de citas profesionales, en lo que sería un proyecto mucho más ambicioso, amplio y

complejo.

5.3.2 Misión

El compromiso principal de KeepMyCar es ofrecer a sus usuarios una interfaz sencilla de contacto

con su taller, consiguiendo así mayor comodidad en éstos. También pretende ser una herramienta

para los talleres que les permita aumentar la fidelidad de sus clientes, así como ser una plataforma

en la que éstos puedan publicar ofertas.

5.3.3 Objetivos

Empezar a establecerse en los talleres de la zona sur de España durante su primer año de

lanzamiento. Los primeros talleres en acogerse a KeepMyCar lo tendrán de forma gratuita

si acuerdan dar feedback periódico del funcionamiento de éste.

Llegar a ser el sistema líder en interacción mecánico/cliente a nivel nacional.

Page 45: Proyecto Final de Carrera INGENIERÍA DE …bibing.us.es/proyectos/abreproy/12269/fichero/proyectodraft.pdf · Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES Memoria

Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES

Memoria

44

6. Trabajo futuro

6.1 Fase de prueba del sistema

Siendo KeepMyCar un sistema que gestiona datos de clientes y citas, en él la seguridad va a ser

algo crítico a la hora de desarrollar el sistema, ya que hay que evitar inyecciones y pérdidas de

datos. Por ello, será necesario pasar por una fase de pruebas de seguridad del sistema antes de su

lanzamiento al mercado.

Para ello, cabe mencionar que las contraseñas no deben ser almacenadas como tal, sino que

debemos guardar “huellas digitales” de éstas, para lo cual se piensa utilizar SHA1 a la hora de

guardar los datos en el servidor. Todo sistema que mantiene contraseñas “tal cual” presenta un

problema de seguridad.

También hay que tener en cuenta el rendimiento de las aplicaciones, especialmente la aplicación

de gestión de clientes de escritorio. Ésta aplicación soporta mucha carga de datos y accesos a la

base de datos del servidor, por lo que antes de sacar la primera versión estable del sistema al

mercado, será necesario un periodo de pruebas en el que se intentará optimizar el código.

6.2 Desarrollo de funcionalidades adicionales

Antes de publicar el sistema se desea asimismo añadir una serie de funcionalidades adicionales

que, si bien por separado no suponen un cambio drástico en KeepMyCar, sí pueden entre todas

significar una mejora significativa a la hora de competir en el mercado. Algunas de estas

funcionalidades son:

Envío de todo tipo de notificaciones por Email. Actualmente se está trabajando en añadir

esta funcionalidad, que aportará algo interesante: el taller podrá estar en contacto con los

clientes, incluso con aquellos que no utilicen la aplicación móvil.

Exportar bases de datos a Excel. Esto puede ser necesario para imprimir, por ejemplo, el

historial de un cliente.

Vista en modo “calendario” tanto en la aplicación móvil como en la herramienta Java del

mecánico.

Generar un modo “actualización del estado del coche”. Consiste en, dentro de la cita,

informar al dueño del vehículo del estado y evolución de éste, de un modo parecido a cómo

se nos informa del estado de nuestro pedido online al pedir una pizza.

Mejora del aspecto de interfaces de usuario, tanto en la aplicación de escritorio como en la

aplicación Android.

Estas funcionalidades son lo básico que necesita KeepMyCar para entrar en el mercado.

Primero, se va a prestar más atención a las pruebas básicas mostradas en este apartado. Una

vez se consiga mejorar con ello el rendimiento de KeepMyCar, se pasará a añadir

funcionalidades.

Page 46: Proyecto Final de Carrera INGENIERÍA DE …bibing.us.es/proyectos/abreproy/12269/fichero/proyectodraft.pdf · Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES Memoria

Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES

Memoria

45

7. Coste del proyecto

En este apartado se desglosan los costes involucrados con la realización del proyecto KeepMyCar.

Los costes se van a desglosar en costes de recursos humanos y costes adicionales.

7.1 Coste de recursos humanos

El proyecto se ha realizado con los recursos de un ingeniero a una tarifa horaria de 25 euros la

hora. Además, se considera que las tareas de programación han sido realizadas por un programador

a una tarifa de 15 euros la hora.

Se ha llevado a cabo entre el final de Enero y final de Mayo de 2015. Se calcula que en total se

han dedicado 558.5 horas de trabajo a su ejecución. Se hace un desglose de los costes en recursos

humanos del proyecto KeepMyCar

Concepto Horas Ejecutor Coste (€) Acumulado (€)

Brainstorming 9 Ingeniero 225 225

Planificación proyecto 13 Ingeniero 325 550

Estudio alternativas

mercado

21.5 Ingeniero 537.5 1087.5

Decisión funcionalidades 22.5 Ingeniero 562.5 1650

Aplicación Android 240 Programador 3600 5250

Gestión Servidor 16 Programador 240 5490

Tutorial

Swing/Android/PHP/SQL

35 Programador 525 6015

Aplicación Java escritorio 125 Programador 1875 7890

Pruebas sistema completo 16.5 Ingeniero 247.5 8137.5

Redacción memoria 60 Ingeniero 900 9037.5

Tabla 7.1 Costes RRHH del proyecto

Vamos a continuación a mostrar las etapas de desarrollo del proyecto a lo largo del tiempo en un

diagrama de Gantt. Varias tareas se realizaron paralelamente, al estar unas relacionadas con las

otras (se ha intentado siempre dar un enfoque práctico a lo aprendido, y así, por ejemplo, cuando

se ha adquirido una nueva habilidad nueva al hacer un tutorial se ha ido probando ésta en el

proyecto).

Page 47: Proyecto Final de Carrera INGENIERÍA DE …bibing.us.es/proyectos/abreproy/12269/fichero/proyectodraft.pdf · Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES Memoria

Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES

Memoria

46

Figura 7.2 Diagrama de Gantt del proyecto KeepMyCar

7.2 Costes adicionales

Tenemos en cuenta asimismo los costes adicionales asociados a la ejecución del proyecto. Como

se ha tenido la fortuna de poder acceder a muchos recursos a través de internet, estos costes

adicionales no son muy elevados. En estos costes entrarían:

Realización de tutoriales (tutorial swing, Android, SQL, PHP…)

Conjunto de SDKs y APIs utilizadas

Conexión a internet

Mencionamos que los tutoriales que se han realizado han sido todos de carácter gratuito. En la

actualidad tenemos la suerte de disponer de infinidad de información en internet. Además, dado

su carácter más dinámico, se han visto también muchos tutoriales en la plataforma YouTube.

Por otro lado, se han utilizado SDKs y APIs gratuitas en su totalidad, por lo que los costes

adicionales los componen solamente la conexión a internet utilizada.

Herramienta Coste (€/mes) Meses Coste total (€)

Conexión a internet 25 4 100

Tabla 7.3 Costes adicionales del proyecto

7.3 Coste total del proyecto

Sumando los dos costes anteriormente mencionados, calculamos el coste total del proyecto:

Concepto Valor (€)

Page 48: Proyecto Final de Carrera INGENIERÍA DE …bibing.us.es/proyectos/abreproy/12269/fichero/proyectodraft.pdf · Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES Memoria

Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES

Memoria

47

Costes RRHH 9037.5

Otros costes 100

Coste total del Proyecto 9137.5

Tabla 7.4 Coste total del proyecto

Page 49: Proyecto Final de Carrera INGENIERÍA DE …bibing.us.es/proyectos/abreproy/12269/fichero/proyectodraft.pdf · Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES Memoria

Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES

Memoria

48

8. Conclusiones

Estoy muy satisfecho con el desarrollo de mi proyecto fin de carrera, dado que he adquirido una

visión global de lo que se necesita para sacar adelante un producto al mercado.

Por un lado, he podido explotar parte de los conocimientos que he ido adquiriendo en mis años de

estudio en la Universidad de Sevilla y en mi año en la Universidad de Cork.

Siempre me ha llamado la atención el mundo de las apps móviles, y poder realizar un proyecto

como éste en el que he tenido que ampliar mis conocimientos y partir absolutamente desde cero

en el diseño y desarrollo ha sido muy enriquecedor para mí. He aprendido a valerme por mi mismo,

adquiriendo la mentalidad de “para todo habrá una solución”.

También, aunque es bien sabida la cantidad de información que hay disponible en la red, para mí

no ha sido hasta ponerme manos a la obra con mi proyecto fin de carrera cuando he comprendido

verdaderamente cómo buscar soluciones en internet, cuáles son fiables y cuales no tanto, y cómo

hacer uso de ellas en mi aprendizaje, y en el desarrollo de un proyecto real.

Cabe destacar la cantidad de horas que me ha tomado llevar a cabo un proyecto que en un principio

me pareció bastante sencillo de ejecutar. Si bien el tiempo total de realización del proyecto entra

dentro de lo normal (4 meses aproximadamente), le he tenido que dedicar muchas horas casi todos

los días para terminarlo en un tiempo razonable. Quizás esto se debe a que no tuve en cuenta el

proceso de aprendizaje mediante tutoriales, que ha tomado bastante tiempo, así como la corrección

de errores y el tiempo que ha tomado añadir nuevas características, por pequeñas que sean.

Quizás lo único no tan positivo de mi experiencia con el proyecto de fin de carrera haya sido el

hecho de que no he podido compartirlo con otro compañero, hecho que ha significado que las

decisiones relativas a la realización del proyecto han sido mías. Muchas veces he echado de menos

una segunda opinión u otro punto de vista distinto que complemente mi visión del proyecto.

Sin embargo, esto me ha obligado a tomar muchas decisiones, y a demostrarme a mí mismo que

era capaz de llevar adelante el proyecto. La satisfacción obtenida con ello es enorme.

Pienso KeepMyCar tiene potencial de hacerse un hueco en el mercado, aunque para ello hace

aún falta una inversión en tiempo y dinero para alcanzar todos los objetivos futuros, y conseguir

un sistema realmente competitivo.

“Siempre lo intentaste. Siempre fallaste. No importa. Inténtalo otra vez. Falla de nuevo. Falla

mejor”

Samuel Beckett

Page 50: Proyecto Final de Carrera INGENIERÍA DE …bibing.us.es/proyectos/abreproy/12269/fichero/proyectodraft.pdf · Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES Memoria

Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES

Memoria

49

9. Agradecimientos

Al tutor de este proyecto, Federico Barrero, por darme la oportunidad de desarrollar su idea

original y por su atención a lo largo del proyecto.

A mi familia, por haberme ayudado y aconsejado siempre.

I would also like to thank the people who made my year in Ireland the best experience of my life:

Anbu and Harsh, my two Indian buddies, I will never forget the times you helped me out in the

lab, nor the experiences we shared together. Giac, Dani and Vale, you were always there when I

needed it. Michka and Tiff, you are my family from Cork.

Por último, agradecer a los doce mejores amigos de Cádiz, en especial a mis compañeros de piso

y carrera Luisca y Luisfe, por haberme acompañado todos estos años.

Page 51: Proyecto Final de Carrera INGENIERÍA DE …bibing.us.es/proyectos/abreproy/12269/fichero/proyectodraft.pdf · Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES Memoria

Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES

Memoria

50

10. Bibliografía complementaria

1 Tony Bradley. Android dominates market share, but apple makes all the money.

Consulta web:

http://www.forbes.com/sites/tonybradley/2013/11/15/android-dominates-market-share-but-

apple-makes-all-the-money/

2 IDC. Smartphone maket share, Q1 2015. Consulta web:

http://www.idc.com/prodserv/smartphone-os-market-share.jsp

3 En el campo de batalla: C y Java. Consulta web:

https://deltalinuxer.wordpress.com/2007/07/10/en-el-campo-de-batalla-c-y-java/

4 Apache vs NGINX (Performance comparison) Consulta web:

http://www.theorganicagency.com/apache-vs-nginx-performance-comparison/

5 Qué es MariaDB y qué ventajas tiene sobre MySQL. Consulta web:

http://www.vozidea.com/que-es-mariadb-y-ventajas-frente-mysql

6 ¿Cuántos talleres de cada tipo existen en España y cómo son?. Consulta web:

http://www.autofacil.es/talleres/2014/01/09/talleres-tipo-existen-espana-son/17140.html

7 Customer Relationship Management. Consulta web:

http://es.wikipedia.org/wiki/Customer_relationship_management

8 Encuesta sobre equipamiento y uso de las tecnologías de información y comunicación en los

hogares. Año 2014. Consulta web:

http://www.ine.es/prensa/np864.pdf

9 8 Ideas para modernizar tu taller mecánico. Consulta web:

http://imolko.com/2014/12/17/8-ideas-para-modernizar-tu-taller-mecanico/

10 MYSQL and Java JDBC tutorial. Consulta web:

http://www.vogella.com/tutorials/MySQLJava/article.html

11 Java-PHP-MYSQL. Crear una conexión con la base de datos en php. Consulta web:

https://geekytheory.com/java-php-mysql-iii-crear-una-conexion-con-la-base-de-datos-en-

php/

12 Tutorial PHP/Android/SQL de mybringback Consulta web:

http://www.mybringback.com/

13 Tutoriales Android de DrBFraser. Consulta web:

https://www.youtube.com/channel/UCMnSzocL2Z5hhOJglLQF9oA

14 Consultas variadas (uso muy frecuente). Consulta web:

http://stackoverflow.com/

15 Alyssa Gregory. 7 Free appointment schedulers. Consulta web:

Page 52: Proyecto Final de Carrera INGENIERÍA DE …bibing.us.es/proyectos/abreproy/12269/fichero/proyectodraft.pdf · Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES Memoria

Proyecto Final de Carrera INGENIERÍA DE TELECOMUNICACIONES

Memoria

51

http://www.sitepoint.com/free-appointment-schedulers/

16 Tutoriales oficiales de Android. Consulta web:

http://developer.android.com/

17 Soluciones Java/SQL. Consulta web:

http://www.java2s.com/