Desarrollo de una aplicación móvil híbrida para la solicitud de canciones

 
SEGUIR LEYENDO
Desarrollo de una aplicación móvil híbrida para la solicitud de canciones
Escola Tècnica Superior d’Enginyeria Informàtica
       Universitat Politècnica de València

Desarrollo de una aplicación móvil híbrida
      para la solicitud de canciones

                Trabajo Fin de Grado

       Grado en Ingeniería Informática

          Autor: Carlos Fernández Samper

          Tutor: Manuela Albert Albiol
          Cotutor: María Victoria Torres Bosch

                    2020-2021
Desarrollo de una aplicación móvil híbrida para la solicitud de canciones
Desarrollo de una aplicación móvil híbrida para la solicitud de canciones

    “Algo puede suceder si primero has determinado que es
                     posible que suceda”
                                   Elon Musk

2
Desarrollo de una aplicación móvil híbrida para la solicitud de canciones
Desarrollo de una aplicación móvil híbrida para la solicitud de canciones

                                                                                    Resumen

   Este TFG consiste en el desarrollo de una aplicación híbrida, cuyo nombre provisional es
Mefis, que tiene como objetivo ofrecer la posibilidad de solicitar canciones concretas al
responsable de la música de un local. El modelo de negocio consiste en que dichas peticiones
serán monetizadas. Un usuario solicitará una canción ofreciendo una cantidad que considere
pertinente. El responsable de la música de dicho local aceptará o rechazará dicha petición. En
caso de aceptar esta solicitud la transacción será repartida entre el propio responsable de la
música, el local en el que se encuentre y el desarrollador de la app. La aplicación se desarrollará
empleando el framework de desarrollo Ionic de Angular, de forma que con un único desarrollo
esta sea válida tanto para iOS como Android.

                   Palabras clave: app, móvil, iOS, Android, Ionic, Angular.

                                                                                     Abstract

   This FDP consists of the development of a hybrid application with Mefis as provisional name,
wich aims to offer the possibility of requesting specific songs from the person in charge of the
music of a pub. The business model is that these requests will be monetized. A user will request
a song offering a certain ammount and the person in charge of the music will acept or reject that
petition. In case of accepting this request, the transaction amount will be divided between the
same person in charge of the music, the pub and the developer of the app. The application will be
developed using the Angular mobile development framework, Ionic, so that with a single
development it will be valid for both iOS and Andorid.

                      Keywords: app, mobile, iOS, Android, Ionic, Angular.

                                                                                                 3
Desarrollo de una aplicación móvil híbrida para la solicitud de canciones
Desarrollo de una aplicación móvil híbrida para la solicitud de canciones

                                                                                                  Tabla de contenidos

Contenido
1.     Introducción .......................................................................................................................... 9
1.1 Motivación ............................................................................................................................ 9
1.2 Objetivos ............................................................................................................................. 10
1.3 Impacto esperado ................................................................................................................ 10
1.4 Metodología ........................................................................................................................ 10
1.5 Estructura ............................................................................................................................ 11
2.     Estado del arte ..................................................................................................................... 12
2.1 Sinfonola ............................................................................................................................. 12
2.2 DYOU ................................................................................................................................. 13
2.3 Análisis alternativas estudiadas........................................................................................... 14
3.     Análisis del problema .......................................................................................................... 14
3.1. Especificación de requisitos ................................................................................................. 14
3.1.1. Contexto de la aplicación .................................................................................................. 14
3.1.2. Modelo de dominio ........................................................................................................... 15
3.1.3. Límites del sistema ............................................................................................................ 18
3.1.4. Características del sistema ................................................................................................ 19
3.1.5. Casos de uso ...................................................................................................................... 19
3.1.6. Análisis de riesgos............................................................................................................. 27
3.2. Identificación y análisis de soluciones posibles ................................................................... 28
3.3. Solución propuesta ............................................................................................................... 29
4.     Diseño de la solución .......................................................................................................... 30
4.1 Arquitectura del sistema ...................................................................................................... 30
4.2 Diseño detallado .................................................................................................................. 31
4.3 Tecnología utilizada ............................................................................................................ 33
4.3.1 Angular............................................................................................................................... 33
4.3.2 Firebase .............................................................................................................................. 34
4.3.3 Spotify API......................................................................................................................... 35
4.3.4 Typescript........................................................................................................................... 35
4.3.5 Visual Studio Code ............................................................................................................ 36
5.     Desarrollo de la solución propuesta .................................................................................... 36
6.     Implantación........................................................................................................................ 40
7.     Conclusiones ....................................................................................................................... 40

4
Desarrollo de una aplicación móvil híbrida para la solicitud de canciones
Desarrollo de una aplicación móvil híbrida para la solicitud de canciones

7.1. Relación del trabajo desarrollado con los estudios cursados ............................................... 40
8.   Trabajos futuros .................................................................................................................. 41
9.   Referencias .......................................................................................................................... 41

                                                                                                          Índice de tablas

                                                                                                                                            5
Desarrollo de una aplicación móvil híbrida para la solicitud de canciones
Desarrollo de una aplicación móvil híbrida para la solicitud de canciones

Tabla 1. Ontología del sistema .................................................................................................... 15
Tabla 2. Terminología técnica ..................................................................................................... 15
Tabla 3. Clase Usuario ................................................................................................................ 16
Tabla 4. Clase Dj ......................................................................................................................... 17
Tabla 5. Clase Local .................................................................................................................... 17
Tabla 6. Clase Sesion .................................................................................................................. 17
Tabla 7. Clase Peticion ................................................................................................................ 17
Tabla 8. Clase Cancion................................................................................................................ 17
Tabla 9. Caso de uso Registro ..................................................................................................... 20
Tabla 10. Caso de uso Login ....................................................................................................... 21
Tabla 11. Caso de uso Logout ..................................................................................................... 21
Tabla 12. Caso de uso Ver detalle local ...................................................................................... 22
Tabla 13. Caso de uso Solicitar una canción ............................................................................... 22
Tabla 14. Caso de uso Buscar una canción ................................................................................. 23
Tabla 15. Caso de uso Introducir Importe ................................................................................... 23
Tabla 16. Caso de uso Ver detalle sesion .................................................................................... 24
Tabla 17. Caso de uso Crear sesion............................................................................................. 25
Tabla 18. Caso de uso eliminar sesion ........................................................................................ 25
Tabla 19. Caso de uso Añadir local............................................................................................. 26
Tabla 20. Caso de uso Eliminar local ......................................................................................... 27
Tabla 21. Tabla 1 análisis de riesgos........................................................................................... 27
Tabla 22. Tabla 2 análisis de riesgos........................................................................................... 28
Tabla 23. Tabla 3 análisis de riesgos........................................................................................... 28
Tabla 24. Tabla 4 análisis de riesgos........................................................................................... 28

6
Desarrollo de una aplicación móvil híbrida para la solicitud de canciones
Desarrollo de una aplicación móvil híbrida para la solicitud de canciones

                                                                                       Índice de ilustraciones

Ilustración 1. Metodología incremental....................................................................................... 11
Ilustración 2. Sinfonola clásica ................................................................................................... 12
Ilustración 3. Sinfonola moderna ................................................................................................ 13
Ilustración 5. Aplicación DYOU ................................................................................................. 13
Ilustración 4. Aplicación DYOU ................................................................................................. 13
Ilustración 6. Diagrama de dominio ............................................................................................ 16
Ilustración 7. Diagrama de contexto ........................................................................................... 18
Ilustración 8. Diagrama caso de uso Usuario no registrado ........................................................ 19
Ilustración 9. Diagrama caso de uso Usuario registrado ............................................................. 20
Ilustración 10. Diagrama casos de uso Usuario DJ ..................................................................... 24
Ilustración 11. Diagrama casos de uso usuario dueño de un local .............................................. 26
Ilustración 12. Arquitectura software del sistema ....................................................................... 30
Ilustración 13. Arquitectura interna de la aplicación .................................................................. 33
Ilustración 14. Pantallas Login y Registro .................................................................................. 37
Ilustración 15. Pantalla verificación registro ............................................................................... 37
Ilustración 16. Pantalla Home usuario ........................................................................................ 38
Ilustración 17. Pantallas Local y Artista ..................................................................................... 38
Ilustración 18: Pantallas Request y RequestResult ..................................................................... 39
Ilustración 19. Pantallas Home para usuario DJ y usuario dueño de un local ............................ 39

                                                                                                                                     7
Desarrollo de una aplicación móvil híbrida para la solicitud de canciones
Desarrollo de una aplicación móvil híbrida para la solicitud de canciones

8
Desarrollo de una aplicación móvil híbrida para la solicitud de canciones
Desarrollo de una aplicación móvil híbrida para la solicitud de canciones

1. Introducción

El ocio nocturno es una de las actividades más famosas que existen en la actualidad. Grupos
de personas se reúnen en locales de música con el fin de socializar. Bailar y cantar son las
principales tareas que realizan en dicha actividad. Ambas tienen una cosa en común: la
música.

Y es que la música de un local, en adelante, discoteca, determina en gran medida el aforo de
esta. Una discoteca con buena música garantiza, en la mayoría de ocasiones, una gran
cantidad de clientes.

Es bastante común que, estos clientes, en un momento determinado deseen que suene un tipo
de música en específico y, en particular, una canción. Sin embargo, para que esto se produzca,
el cliente tiene que pedir personalmente la canción al DJ.

Llevar a cabo esta tarea actualmente resulta costosa ya que, o bien la distancia entre la cabina
del DJ y la pista de baile es demasiado grande, o bien no es posible comunicarse con este.

Por ello, en este documento planteo una solución a este problema mediante el uso de la
tecnología móvil, más concretamente mediante el uso de una aplicación.

    1.1     Motivación

Antes de elegir un tema para la realización del trabajo de fin de grado, ya tenía claro que
quería realizar una aplicación móvil. De hecho, el desarrollo de Software es uno de los
principales motivos por el que decidí cursar la carrera de Ingeniería Informática. Es más,
actualmente me dedico a ello profesionalmente en una empresa valenciana.

La idea sobre una aplicación para solicitar canciones surgió cuando me encontraba viendo
una película inspirada en los años 80. En ella, un hombre entró a un bar y se acercó a un
especie de tocadiscos. Una vez allí, introdujo una moneda, seleccionó un disco y al cabo de
unos segundos, este comenzó a sonar por todo el bar.

Esta idea se vió reforzada cuando, una noche en una discoteca con un grupo de amigos, nos
situamos muy cerca de la cabina del DJ de aquel local. Para nuestro asombro, cada vez era
mayor la frecuencia y el número de personas que se acercaban a dicha cabina con el fin de
solicitar una canción en concreto.

                                                                                              9
Desarrollo de una aplicación móvil híbrida para la solicitud de canciones
Desarrollo de una aplicación móvil híbrida para la solicitud de canciones

         1.2      Objetivos

     El principal objetivo de este TFG es el desarrollo de una aplicación que permita solicitar
     canciones a los responsables de la música de un local .

     Además de este objetivo general, estos son los objetivos particulares a conseguir:

         •     Permitir a los usuarios registrarse en la aplicación, ya sea como DJ, dueños de un
               local o simplemente usuarios.
         •     Permitir a un usuario crear una petición de una canción determinada en un local
               determinado con un importe determinado
         •     Mostrar la lista de locales disponibles haciendo uso de la geolocalización
         •     Permitir a los dueños de un local registrar dicho local en la aplicación.
         •     Permitir a los usuarios DJ crear y borrar sesiones en un local determinado.

         1.3      Impacto esperado

     En esta aplicación hay tres claros actores, por lo que se va a proceder a explicar el resultado
     esperado para cada uno de ellos:

         •   Por un lado, el usuario que desea solicitar una canción determinada en un local
             determinado. Para este usuario, la existencia de una aplicación que permita realizar
             esto de forma sencilla y rápida, supondrá una gran satisfacción lo que se traducirá en
             un aumento de la frecuencia con la que el usuario realiza esta actividad.
         •   Por otro lado, mediante el uso de esta aplicación, un DJ podrá obtener ingresos extra
             en cada una de sus sesiones. Además, podrá publicitarse profesionalmente a través
             de la aplicación.
         •   Finalmente, y de forma análoga al segundo actor, el dueño de un local obtendrá
             ingresos extras, así como publicidad para el local.

         1.4      Metodología

     El desarrollo de este proyecto se ha llevado a cabo empleando una metodología incremental,
     lo que permite ir aumentando la complejidad de este en cada ciclo o incremento minimizando
     los riesgos. Esta metodología es ideal para proyectos individuales como este.

     Cada ciclo de desarrollo de esta metodología está compuesto por diversas etapas:

         •   En primer lugar, se realiza un análisis del problema a resolver, así como del estado
             actual del proyecto y como este problema puede afectar a la integridad del proyecto.
         •   En segundo lugar, se diseña la solución a este problema teniendo en cuenta todo
             aquello que puda afectar al proyecto.
         •   En tercer lugar, se implementa dicha solución.

10
Desarrollo de una aplicación móvil híbrida para la solicitud de canciones

    •   Finalmente y en cuarto lugar, se valida el resultado obtenido y se compara con los
        objetivos del análisis inicial. Esto nos permitirá establecer cual será el siguiente ciclo.

                                   Ilustración 1. Metodología incremental

    1.5      Estructura

Con el fin de facilitar la lectura de este documento, se adjunta una breve descripción de cada
uno de los capítulos que aparecen en el.

    •     Capítulo 2: Estado del arte
           En este apartado se explicará el contexto actual referente a la aplicación
          desarrollada. Se analizará y valorarán las diferentes alternativas actuales.
    •     Capítulo 3: Análisis del problema
          En este capítulo se detallará la especificación de requisitos del proyecto así como
          diferentes diagramas que ayudarán a entender la solución que se quiere realizar.
    •     Capítulo 4: Diseño de la solución
          Se detallará la arquitectura y tecnologías utilizadas para el desarrollo del proyecto.
    •     Capítulo 5: Desarrollo de la solución propuesta
          En este apartado se incluirán las diferentes pantallas que componen la aplicación.
    •     Capítulo 6: Implantación
          El capitulo 6 expone como se va a desplegar el sistema para su explotación.
    •     Capítulo 7: Conclusiones
          En este apartado se discutirá si el proyecto desarrollado ha cumplido con los
          objetivos planteados así como la relación del trabajo desarrollado con los estudios
          cursados.
    •     Capítulo 8: Trabajos futuros
    •     Capítulo 9: Referencias

                                                                                                11
Desarrollo de una aplicación móvil híbrida para la solicitud de canciones

     2. Estado del arte

     En este apartado se explicarán las diferentes alternativas actuales existentes a nuestra
     aplicación desarrollada. Posteriormente se analizarán cada una de ellas y se compararán a la
     solución propuesta.

     En primer lugar se ha realizado una búsqueda por las diferentes tiendas de aplicaciones de
     cada sistema operativo móvil disponible.Si atendemos a las aplicaciones existentes en Google
     Play Store[2] y en App Store[3], no existe una aplicación que presente una funcionalidad
     similar a la descrita en este documento.

     Las aplicaciones ofertadas relacionadas con reproducción de música tienen como objetivo
     crear una sala virtual común entre varias personas con el fin de reproducir la misma música.
     Permiten enviar nuevas canciones a la cola que acabarán reproduciéndose en dicha sala.

     Todas estas aplicaciones se resumen en listas de reproducción compartidas. Ofrecen a los
     usuarios la posibilidad de añadir nuevas canciones que todos escucharán simultáneamente.

     Sin embargo, un antiguo alumno de esta escuela tuvo una idea muy similar. Esta, sumada a
     la mencionada previamente sinfonola, constituyen las actuales alternativas a nuestra
     aplicación desarrollada.

        2.1      Sinfonola

     Como se ha mencionado en el primer capítulo de este documento, en los años 80 ya existían
     mecanismos para poder reproducir una canción en específico en un local. Estas máquinas se
     crearon en los años 60 y fueron muy populares durante 3 décadas hasta la creación de los
     discos compactos (CD).

     Su nombre es sinfonola, aunque también se conoce como rocola, y su mecanismo es muy
     sencillo. Se introduce una moneda, se selecciona un disco y al cabo de unos segundos este
     comienza a sonar.

                                  Ilustración 2. Sinfonola clásica

12
Desarrollo de una aplicación móvil híbrida para la solicitud de canciones

A partir de los años 90 el disco compacto sobrepasó al disco de vinilo en popularidad y cada
vez los DJ eran más demandados en los locales. Por ello, el uso de las sinfonolas fue cada vez
a menos.

Hoy en día es raro ver uno de estos aparatos en un local de música o un bar. Los pocos que
existen, se han modernizado con respecto a la sinfonola original. Cuentan con pantalla táctil
y con una librería de más de 50.000 títulos entre los que elegir. Aún así, no son muy populares
entre la población joven.

                                 Ilustración 3. Sinfonola moderna

    2.2     DYOU

En el año 2016, Francisco Martí Polo, exalumno de la Escuela Ténica Superior de Ingeniería
Informática de la Universidad Politécnica de Valencia desarrolló un proyecto de aplicación
móvil[1] para enviar recomendaciones de canciones al DJ.

El funcionamiento de esta aplicación es muy similar al funcionamiento definido en este
proyecto. Los usuarios podrán seleccionar entre una lista de locales para a continuación hacer
una petición de una canción en específico en el local seleccionado.

Estas peticiones podrán ser vistas por el resto de usuarios los cuales, además, podrán votar
dichas peticiones para que el DJ tenga constancia de las canciones más solicitadas.

Ilustración 4. Aplicación DYOU             Ilustración 5. Aplicación DYOU

                                                                                            13
Desarrollo de una aplicación móvil híbrida para la solicitud de canciones

         2.3     Análisis alternativas estudiadas

     Por un lado, las sinfonolas ofrecen la posibilidad de reproducir una canción en específico en
     un local en específico. Sin embargo, el principal problema que presentan es que no otorgan
     una medida de control sobre la música que se reproduce en dicho local.

     Un usuario cualquiera del sistema puede monopolizar la elección de canciones de dicho local
     pues no existe ningún mecanismo que controle esto. Basta con introducir el importe requerido
     de forma reiterada y todas tus peticiones automáticamente serán efectivas.

     Por el otro lado, la aplicación que plantea Francisco Martí Polo es prácticamente idéntica a la
     aquí desarrollada. Permite buscar un local en específico y ver las diferentes peticiones que se
     han realizado en él.

     El principal inconveniente es que no proporciona ningún sistema de gratificación al DJ de
     dicho local. Esto puede traducirse en que este DJ no tenga interés alguno en reproducir las
     canciones solicitadas por los usuarios, lo que puede provocar una baja aceptación de la
     aplicación.

     3. Análisis del problema

     Una vez conocidas las diferentes características que debe tener nuestra aplicación, en este
     apartado se detallará la información necesaria para llevar a cabo este proyecto. Para ello,
     utilizaremos el estándar IEEE 29148:2018[4] que define la estructura de especificación y
     gestión de requisitos.

         3.1. Especificación de requisitos

               3.1.1. Contexto de la aplicación

     Antes de explicar el modelo de dominio, en este apartado se recogen todos los términos y
     conceptos relevantes en el contexto de la aplicación que se va a desarrollar. Se explicará la
     ontología del sistema así como la terminología técnica utilizada.

14
Desarrollo de una aplicación móvil híbrida para la solicitud de canciones

  Ontología del sistema:

                   Término                                        Descripción
Usuario                                          Persona que accede a la aplicación mediante
                                                 una cuenta creada
DJ                                               Persona responsable de la música de un local
Dueño de un local                                Persona responsable de un local de música
Petición                                         Solicitud de una canción por parte de un
                                                 usuario hacia un DJ
Local                                            Espacio físico donde se reproduce música
Sesión                                           Elemento que vincula a un DJ con un local
                                                 durante un tiempo determinado y permite a los
                                                 usuarios realizar peticiones a ese DJ durante
                                                 ese tiempo
Canción                                          Canción asociada a una petición

                                   Tabla 1. Ontología del sistema

  Terminología técnica

                   Término                                          Descripción
Email                                            Correo electrónico utilizado por un usuario
                                                 para registrarse en el sistema
Contraseña                                       Código secreto formado por caracteres para
                                                 iniciar sesión en el sistema
Género musical                                   Categoría que reúne composiciones musicales
                                                 que comparten distintos criterios de afinidad
Nombre artístico                                 Nombre que utiliza un DJ para identificarse
                                                 públicamente
Nombre del local                                 Nombre asociado a un local de música para
                                                 identificarse públicamente
Importe                                          Cantidad de dinero asociada a una petición
Url                                              Enlace único a la canción solicitada
Pinchar                                          Acción del DJ de ser el responsable de la
                                                 música de un local determinado en una sesión
                                                 determinada

                                 Tabla 2. Terminología técnica

             3.1.2. Modelo de dominio

  Introducida la terminología a utilizar en el desarrollo del proyecto, a continuación se
  mostrarán las relaciones existentes entre dichos conceptos. Para ello, se hará uso del diagrama
  de clases:

                                                                                              15
Desarrollo de una aplicación móvil híbrida para la solicitud de canciones

                                 Ilustración 6. Diagrama de dominio

     Para explicar las diferentes clases y atributos de estas, se adjunta una tabla para cada una de
     ellas:

     Clase Usuario

      Atributo                        Tipo                            Descripción
      Nombre                          String                          Nombre del usuario.
      Apellidos                       String                          Apellidos del usuario.
      Fecha de nacimiento             Date                            Fecha de nacimiento del
                                                                      usuario.
      Email                           String                          Email único para cada
                                                                      usuario

                                       Tabla 3. Clase Usuario

16
Desarrollo de una aplicación móvil híbrida para la solicitud de canciones

Clase DJ

 Atributo                      Tipo                          Descripción
 Nombre Artístico              String                        Nombre público del Dj.
 Lista de sesiones             List                  Lista de sesiones disponibles
                                                             para este Dj.

                                    Tabla 4. Clase Dj

Clase Local

 Atributo                      Tipo                          Descripción
 Nombre                        String                        Nombre público del local de
                                                             música.

                                  Tabla 5. Clase Local

Clase Sesion

 Atributo                      Tipo                          Descripción
 Lista de peticiones           List                Lista de las peticiones
                                                             creadas para esta sesión

                                  Tabla 6. Clase Sesion

Clase Peticion

 Atributo                      Tipo                          Descripción
 Importe                       Number                        Cantidad      de       dinero
                                                             vinculada a esta petición

                                   Tabla 7. Clase Peticion

Clase Cancion

 Atributo                      Tipo                          Descripción
 Nombre                        String                        Título de la canción
                                                             solicitada
 Url                           String                        Enlace único a la canción
                                                             determinada

                                 Tabla 8. Clase Cancion

                                                                                        17
Desarrollo de una aplicación móvil híbrida para la solicitud de canciones

               3.1.3. Límites del sistema

     En este apartado se detallará el diagrama de contexto correspondiente que muestra una
     representación gráfica de alto nivel de los diferentes actores involucrados en el sistema.

     Diagrama de contexto:

                               Ilustración 7. Diagrama de contexto

     Descripción de los actores:

        •   DJ: usuario que utilizará la aplicación para crear sesiones en locales de música y
            aceptar peticiones. Será el encargado de aceptar o denegar dichas solicitudes.

        •   Usuario registrado: cualquier usuario registrado que no sea ni DJ ni dueño de un
            local. Podrá utilizar la aplicación para solicitar canciones determinadas en locales
            determinados.

        •   Dueño: responsable de un local de música. Utilizará la aplicación para gestionar sus
            locales dentro de esta.

        •   Usuario no registrado: cualquier persona que acceda a la aplicación sin haberse
            registrado previamente. Sólo podrá acceder a la pantalla de Login y Registro.

18
Desarrollo de una aplicación móvil híbrida para la solicitud de canciones

          3.1.4. Características del sistema

Una vez introducido el contexto, a continuación estableceremos las características necesarias
del sistema para cumplir los objetivos.

    •   Registro de usuario:

        Es necesario que se puedan registrar los usuarios para poder acceder a la
        funcionalidad de la aplicación. Se debe implementar también el registro de los dos
        tipos especializados de usuarios: DJ y dueño de un local.

    •   Hacer peticiones:

        Se debe permitir a los usuarios realizar diferentes peticiones de determinadas
        canciopnes para determinados DJ . Los usuarios podrán buscar una canción en
        específico a traves de un buscador que ofrecerá millones de títulos.

    •   Crear sesiones:

        Los DJ podrán crear diferentes sesiones para un determinado local. Estas sesiones
        tendrán una fecha y hora determinada.

    •   Añadir local:

        En cuanto a los dueños de locales, estos podrán añadirlos a la aplicación desde su
        perfil.

          3.1.5. Casos de uso

Llegados a este punto, con toda la información descrita sobre la funcionalidad de la
aplicación, se adjuntan los diferentes casos de uso que involucran a los actores definidos
previamente

Usuario no registrado

                 Ilustración 8. Diagrama caso de uso Usuario no registrado

                                                                                          19
Desarrollo de una aplicación móvil híbrida para la solicitud de canciones

Un usuario no registrado que acceda a la aplicación sólo podrá realizar la acción de registro.

 Caso de uso 01                                   Registro

 Descripción                                      Un usuario no registrado podrá registrarse a
                                                  través de un formulario
 Actores                                          Usuario

 Precondición                                     No registrado

 Secuencia Normal                                     1. Acceso al formulario de registro.
                                                      2. El usuario introduce sus datos y
                                                          pulsa en “Registrar”
                                                      3. Se valida el registro.
 Postcondiciones                                  El usuario deberá haber sido registrado en la
                                                  base de datos
 Excepciones                                      El usuario introduce datos incorrectos.

 Comentarios                                      La contraseña debe tener letras, números y
                                                  símbolos.

                                   Tabla 9. Caso de uso Registro

Usuario registrado

                       Ilustración 9. Diagrama caso de uso Usuario registrado

20
Desarrollo de una aplicación móvil híbrida para la solicitud de canciones

Caso de uso 02                               Login

Descripción                                  Un usuario registrado introduce sus datos
                                             para acceder a la aplicación.
Actores                                      Usuario

Precondición                                 Registrado

Secuencia Normal                                 1. Introduce Email y Contraseña
                                                 2. Pulsa en “Login”
                                                 3. Se valida el inicio de sesión
Postcondiciones                              El usuario deberá estar logeado y puede ver
                                             los artistas
Excepciones                                  El usuario introduce datos incorrectos.

Comentarios

                                Tabla 10. Caso de uso Login

Caso de uso 03                               Logout

Descripción                                  El usuario cierra su sesión actual.

Actores                                      Usuario

Precondición                                 Haber hecho login.

Secuencia Normal                                 1. El usuario pulsa en “Cerrar sesión”
                                                 2. La aplicación redirige al usuario a la
                                                     pantalla de Login
Postcondiciones                              El usuario es redirigdo a la pantalla de login

Excepciones

Comentarios

                               Tabla 11. Caso de uso Logout

                                                                                              21
Desarrollo de una aplicación móvil híbrida para la solicitud de canciones

Caso de uso 04                                 Ver detalle local

Descripción                                    Un usuario podrá seleccionar un local para
                                               ver su detalle
Actores                                        Usuario

Precondición                                   Usuario logeado

Secuencia Normal                                   1. El usuario pulsa sobre un local.
                                                   2. El usuario es redirigido a la página
                                                       del local
Postcondiciones                                El usuario es redirigido a la página del local

Excepciones

Comentarios                                    En la página se mostrará el nombre artístico
                                               de los artistas que estén pinchando en dicho
                                               local

                           Tabla 12. Caso de uso Ver detalle local

Caso de uso 05                                 Solicitar una canción

Descripción                                    El usuario solicita una nueva petición de
                                               canción
Actores                                        Usuario

Precondición                                   Usuario logeado
                                               Exista un DJ pinchando en almenos un local
Secuencia Normal                                   1. El usuario selecciona un local
                                                   2. El usuario pulsa sobre un artista
                                                   3. El usuario pulsa sobre “Nueva
                                                       petición”
Postcondiciones                                El usuario es redirigido a la pantalla de
                                               peticiones
Excepciones

Comentarios                                    Al pulsar el botón atrás se deberá devolver
                                               al usuario a la pantalla del detalle de la
                                               sesión

                         Tabla 13. Caso de uso Solicitar una canción

22
Desarrollo de una aplicación móvil híbrida para la solicitud de canciones

Caso de uso 06                                Buscar una canción

Descripción                                   El usuario busca una canción determinada
                                              para una petición
Actores                                       Usuario

Precondición                                  El usuario ha solicitado una nueva petición

Secuencia Normal                                  1. El usuario introduce un texto en el
                                                     buscador
                                                  2. El usuario pulsa “Buscar”
                                                  3. Se muestran los resultados de la
                                                     búsqueda
Postcondiciones

Excepciones                                   La búsqueda no tiene resultados

Comentarios                                   Los resultados deberán mostrar una imagen
                                              del álbum

                          Tabla 14. Caso de uso Buscar una canción

Caso de uso 07                                Introducir importe

Descripción                                   El usuario introduce el importe deseado para
                                              la canción solicitada
Actores                                       Usuario

Precondición                                  El usuario ha seleccionado una canción de la
                                              lista de resultados tras la búsqueda
Secuencia Normal                                  1. El usuario selecciona una canción
                                                      de la lista de resultados.
                                                  2. El usuario introduce el importe
                                                      deseado y pulsa en “Solicitar”
                                                  3. Se crea una nueva petición de
                                                      canción para el artista seleccionado.
Postcondiciones                               Se registra una nueva petición en la base de
                                              datos para el artista seleccionado.
Excepciones                                   Ya existe una petición para dicha canción
                                              con un importe mayor.
Comentarios

                          Tabla 15. Caso de uso Introducir Importe

                                                                                              23
Desarrollo de una aplicación móvil híbrida para la solicitud de canciones

Caso de uso 08                                    Ver detalle sesión

Descripción                                       Un usuario podrá seleccionar una sesión
                                                  para ver su detalle.
Actores                                           Usuario

Precondición                                      Usuario logeado
                                                  Exista almenos un DJ con una sesión activa.
Secuencia Normal                                       1. El usuario pulsa sobre un local.
                                                       2. El usuario selecciona un artista
Postcondiciones                                   El usuario es redirigido a la página detalle
                                                  de la sesión
Excepciones                                       No existe ningún Artista con una sesión
                                                  activa.
Comentarios                                       En la página se mostrará el nombre artístico
                                                  del DJ así como las diferentes peticiones
                                                  para dicho DJ.

                              Tabla 16. Caso de uso Ver detalle sesion

     Usuario Dj

                         Ilustración 10. Diagrama casos de uso Usuario DJ

     Dado que los actores DJ y Dueño de un local son a su vez un usuario registrado, se va a
     obviar la definición de los casos de uso Login y Logout correspondientes.

24
Desarrollo de una aplicación móvil híbrida para la solicitud de canciones

Caso de uso 09                                 Crear sesión

Descripción                                    Un usuario DJ registrado crea una nueva
                                               sesión para un local
Actores                                        DJ

Precondición                                   Haber hecho login en la app

Secuencia Normal                                   1. Pulsa sobre “Añadir nueva sesión”
                                                   2. Rellena los datos de la nueva sesión
                                                   3. Pulsa en Añadir
Postcondiciones                                El usuario DJ al acceder a la app debería ver
                                               la nueva sesión añadida
Excepciones                                    El usuario DJ introduce un local de música
                                               no registrado en la app
Comentarios

                             Tabla 17. Caso de uso Crear sesion

Caso de uso 10                                 Eliminar sesión

Descripción                                    Un usuario DJ registrado elimina una sesión
                                               disponible
Actores                                        DJ

Precondición                                   Haber hecho login en la app
                                               Disponer de al menos una sesión
                                               programada
Secuencia Normal                                   1. El usuario pulsa sobre el icono de
                                                      eliminar para la sesión dada

Postcondiciones                                La sesión se eliminará del listado de
                                               sesiones disponibles
Excepciones

Comentarios

                            Tabla 18. Caso de uso eliminar sesion

                                                                                               25
Desarrollo de una aplicación móvil híbrida para la solicitud de canciones

Usuario dueño de un local

                   Ilustración 11. Diagrama casos de uso usuario dueño de un local

 Caso de uso 11                                   Añadir local

 Descripción                                      Un usuario dueño de un local añade un
                                                  nuevo local a la aplicación
 Actores                                          Dueño

 Precondición                                     Registrado
                                                  Haber hecho login en la app
 Secuencia Normal                                     1. Pulsa sobre “Añadir nuevo local”
                                                      2. Rellena la información del nuevo
                                                          local
                                                      3. Pulsa en “Añadir”
 Postcondiciones                                  El nuevo local debe aparecer en su lista de
                                                  locales
 Excepciones

 Comentarios

                                 Tabla 19. Caso de uso Añadir local

26
Desarrollo de una aplicación móvil híbrida para la solicitud de canciones

Caso de uso 12                                   Eliminar local

Descripción                                      Un usuario dueño de un local elimina un
                                                 local de la aplicación
Actores                                          Dueño

Precondición                                     Haber hecho login.
                                                 Poseer al menos un local.
Secuencia Normal                                     1. El usuario pulsa sobre el icono de
                                                          gestionar un local
                                                     2. El usuario pulsa sobre “Eliminar
                                                          local”
                                                     3. El usuario pulsa en “Confirmar
                                                          eliminar local”
Postcondiciones                                  El local es eliminado de la aplicación

Excepciones

Comentarios

                             Tabla 20. Caso de uso Eliminar local

              3.1.6. Análisis de riesgos

  En este apartado se detallarán los diferentes posibles riesgos que puedan afectar al usuario o
  a la infraestructura.

    Título                                       Un DJ acepta las canciones pero no las
                                                 reproduce
    Descripción                                  La persona responsable de la música de un
                                                 local podría aceptar las peticiones de
                                                 canciones y cobrar dicha petición pero
                                                 finalmente no reproducirla en el local.
    Impacto                                      Mala experiencia con la aplicación y caída de
                                                 usuarios.
    Medidas                                      Incorporar un sistema de puntuaciones a los
                                                 DJ con el fin de identificar a aquellos que
                                                 frecuentan esta acción

                              Tabla 21. Tabla 1 análisis de riesgos

                                                                                             27
Desarrollo de una aplicación móvil híbrida para la solicitud de canciones

       Título                                       Sistema de pagos complejo
       Descripción                                  Los usuarios podrían cancelar una petición si
                                                    el sitema de pago de la app no es adecuado,
                                                    rápido e intuitivo.
       Impacto                                      Bajo número de transacciones
       Medidas                                      Realizar un estudio de UX para diseñar un
                                                    pago de solicitudes intuitivo y rápido.

                                 Tabla 22. Tabla 2 análisis de riesgos

       Título                                       Rechazo de pagos por móvil
       Descripción                                  Algunos usuarios podrían rechazar el realizar
                                                    pagos por el móvil y preferirían pagar en
                                                    efectivo.
       Impacto                                      Bajo número de transacciones
       Medidas                                      Crear tarjetas de pago llamadas “Mefis
                                                    Points” que los usuarios puedan comprar
                                                    físicamente en el local y canjear en la app.

                                 Tabla 23. Tabla 3 análisis de riesgos

       Título                                       Gestión de la base de datos
       Descripción                                  La persona responsable de gestionar la base de
                                                    datos podría tener problemas debido al
                                                    volumen de datos generado
       Impacto                                      Ralentización de los servicios de la aplicación
                                                    e incluso inutilidad de esta
       Medidas                                      Servicios backup para preservar la
                                                    disponibilidad continua de la app.

                                 Tabla 24. Tabla 4 análisis de riesgos

         3.2. Identificación y análisis de soluciones posibles

     Una vez definidas todas las necesidades para nuestra aplicación, en este apartado se detallarán
     las diferentes opciones planteadas para la implementación de este proyecto.

28
Desarrollo de una aplicación móvil híbrida para la solicitud de canciones

En primer lugar se tratará el tema de la gestión de usuarios. Desde un inicio se tenía una idea
clara sobre el Login y Registro de nuevos usuarios. Para ello, se haría uso de un token de
autenticación mediante el extendido protocolo Oauth[5].

Una vez decidido la forma de gestionar los usuarios, tocaba buscar la tecnología adecuada
para ello. Tras indagar en la web, en una primera instancia encontré Amazon Cognito[6]. Esta
herramienta de Amazon permite gestionar de forma fácil el control de los usuarios de una
aplicación. Dado que en un proyecto anterior en el curso utilicé MongoDB[7] como base de
datos, estas dos tecnologías serían mi propuesta inicial.

Sin embargo, poco después di con la suite de Google Firebase[8]. En un principio solo me
interesé en esta por la autenticación de usuarios. Pero tras explorar su plataforma, observé
que además incluía un módulo que permitía gestionar una base de datos NoSQL[9].

De esta forma no tendría que incorporar una segunda tecnología para la gestión de la base de
datos, pues Google Firebase me permitía implementar ambas desde la misma plataforma.
Podría utilizar esta plataforma como el backend casi completo de la aplicación. Por un lado
me permitía gestionar los usuarios y por el otro servía al mismo tiempo como base de datos
para la aplicación.

Para continuar con el backend y sus servicios, sólo faltaba buscar una forma de obtener una
librería de canciones que estuviese actualizada, que fuera internacional y que fuera rápida.
Tras una búsqueda rápida en Google el primer resultado fue Shazam API[10].

Todas las opciones se basaban en peticiones API REST[11]. Sin embargo, quería asegurarme
que la API que escogiese tuviera la lista de canciones, así como sus remixes, más actualizada
posible. Es por eso que la API de Spotify[12] era la clara candidata.

Finalmente, tuve que decidir que framework de desarrollo utilizar para la implementación de
la aplicación. En este apartado no tuve muchas dudas, pues durante el curso realicé, junto a
mis compañeros, una aplicación móvil empleando como framework de desarrollo
Angular[13]. Además, este framework permite la creación de una aplicación móvil híbrida

    3.3. Solución propuesta

Una vez analizadas las diversas opciones disponibles para el desarrollo del proyecto, en este
apartado se especificará la solucion final propuesta.

Como framework de desarrollo se utilizará Angular y, más concretamente, su framework
Ionic[14] el cual permite crear una aplicación móvil. El lenguaje de programación será, por
tanto, TypeScript[15]. Este último es un lenguaje basado en el famoso JavaScript[16], aunque
con tipado fuerte.

Para gestionar el registro y acceso por parte de los usuarios, se utilizará el módulo Firebase
Authentication de Firebase. Este módulo de firebase se acompañará del módulo Firebase
Firestore el cual permitirá gestionar una base NoSQL.

                                                                                            29
Desarrollo de una aplicación móvil híbrida para la solicitud de canciones

     Como se ha comentado en el apartado anterior, la librería utilizada para realizar la búsqueda
     de canciones será Spotify API.

     Finalmente, el editor de código será Visual Studio Code[17] y se empleará Github[18] como
     repositorio Git.

     4. Diseño de la solución

     Una vez definidos los diferentes requisitos del sistema, se va a detallar a continuación el
     diseño de la solución propuesta.

         4.1     Arquitectura del sistema

                           Ilustración 12. Arquitectura software del sistema

     La arquitectura software del proyecto está reflejada en la ilustración anterior. Por un lado, el
     dispositivo móvil en el que se encuentra instalada la aplicación y será el objeto de interacción
     del usuario con el sistema.

     Como se ha mencionado en el capítulo 3.3, el framework de desarrollo será Angular. Este se
     caracteriza por utilizar un patrón Modelo – Vista – Controlador aunque no es realmente así.

     Una de las características de Angular es que permite sincronizar los datos de la vista y el
     modelo (two-way data binding). Es decir, proporciona la habilidad de modificar un dato en
     la vista y que este dato cambie simultáneamente en el modelo, por lo que la independencia
     que se produce en un modelo-vista-controlador clásico no se reproduce en este caso.

30
Desarrollo de una aplicación móvil híbrida para la solicitud de canciones

Es por esto que no se puede afirmar que el patrón utilizado es MVC (Modelo Vista
Controlador) si no que se podría identificar como MVVM (Modelo Vista Vista Modelo).

Por el otro lado, los servicios del sistema que interactúan con la aplicación. Los módulos de
Firebase encargados de gestionar el registro y acceso de los usuarios así como de proveer a
la aplicación toda la información de la base de datos y la librería de Spotify que permite
realizar la búsqueda de canciones.

    4.2       Diseño detallado

En este apartado se detallará el diseño interno de la aplicación. Se ilustrarán los diferentes
módulos o componentes internos de la misma.

Otra de las principales características de Angular son los componentes. En una aplicación
Angular cada ventana o vista de la aplicación corresponde a un componente el cual dispone
de su propia lógica (y vista) y es además independiente del resto de componentes.

Esto se traduce en que cada módulo de la aplicación es independiente del resto, lo que
garantiza un gran desacoplamiento.

A continuación se van a explicar los diferentes módulos o componentes que conforman la
aplicación:

•   Login: la pantalla de Login de la aplicación. Su lógica permite acceder a un usuario ya
    registrado mediante unas credenciales determinadas.

•   Register: módulo de registro. Permite a un usuario registrarse en el sistema al introducir
    una serie de datos requeridos. Este componente además tiene otro sub-componente:

          ▪   Register-verify: corresponde con la pantalla de confirmación de registro.
              Cuando un usuario se registra en la aplicación debe confirmar dicho registro
              mediante un correo electrónico.

•   Home: la pantalla principal de la aplicación. Cualquier usuario registrado accederá a ella
    tras hacer login. En esta pantalla se mostrarán los diferentes locales disponibles en los
    que se podrán realizar peticiones de canciones. Si se accede con un usuario Dj, se
    mostrarán las diferentes sesiones asociadas a ese Dj o, en su defecto, podrá crear una.
    Finalmente, si se accede como dueño de un local, se mostrarán los diferentes locales
    asociados a ese usuario, así como la posibilidad de gestionar cada uno de ellos.

•   Local: esta pantalla corresponde al detalle de un local. En ella se muestra información de
    un local así como las diferentes sesiones que se están llevando o llevarán a cabo en él.

•   Session: este módulo corresponde a una sesión determinada en un local determinado con
    un Dj determinado. Mostrará información de este Dj así como el local asociado y mostrará
    además las diferentes peticiones llevadas a cabo por los usuarios.

                                                                                           31
Desarrollo de una aplicación móvil híbrida para la solicitud de canciones

     •   Request: la pantalla de peticiones. En enviar una nueva petición con un importe
         determinado. Al igual que con el módulo de Register, este módulo cuenta con otro
         componente extra:

             ▪    Request-result: corresponde con la pantalla que muestra los resultados de la
                  búsqueda de una canción.

     Otra característica de los componentes de Angular es que pueden integrase dentro de otro
     componente, ampliando la funcionalidad de este. Podemos crear así componentes que
     carezcan de interfaz o vista pero su lógica pueda aprovecharse en otros módulos de la
     aplicación. Estos componentes se les conoce como servicios.

     Los servicios en angular son componentes con patrón Singleton que permiten añadir contexto
     global a la aplicación. Estos son los que se encargan de hacer peticiones a los servicios de
     BackEnd y ofrecerlos al resto de componentes.

     Así, estos son los diferentes componentes servicios que conforman la aplicación:

     •   Auth service: este es el servicio que gestiona el login y registro de usuarios. Este servicio
         hace uso de los servicios de Firebase Authentication y es utilizado en los módulos Login
         y Register.

     •   Artists service: este servicio provee a la aplicación de toda la información necesaria
         relativa a los Djs, locales, peticiones y sesiones. Extrae la información de la base de datos
         del módulo Firebase Firestore y lo ofrece a los módulos Home, Local, Session y Request
         de la aplicación.

     •   Spotify service: servicio que permite a la aplicación hacer uso de la API de Spotify y
         realizar búsquedas de canciones determinadas. Es utilizado por el módulo o componente
         Request y más concretamente por Request-result.

     Finalmente se adjunta una ilustración con los diferentes componentes que conforman la
     aplicación a fin de quede más claro el diseño interno de la aplicación:

32
Desarrollo de una aplicación móvil híbrida para la solicitud de canciones

                    Ilustración 13. Arquitectura interna de la aplicación

    4.3     Tecnología utilizada

En esta sección se presentarán las diferentes tecnologías utilizadas para el desarrollo del
proyecto.

          4.3.1 Angular

Angular es un framework de código abierto desarrollado por Google para facilitar la creación
de aplicaciones wb de una sola página, también llamadas SPA[19] (Single Page Application).
Como se mencionaba anteriormente, una de las características más importantes de Angular
es que sus aplicaciones se basan en componentes que controlan la vista y la lógica de forma
independiente los unos de los otros.

Esto permite además la creación de componentes que carecen de interfaz pero hacen de
mediadores entre el FrontEnd y el BackEnd de la aplicación y pueden integrarse en cualquier
otro componente.

Para la creación de aplicaciones móviles, Angular cuenta con un framework especializado
para ello, llamado Ionic. Ionic es un SDK de frontend de código abierto que permite
desarrollar aplicaciones híbridas, es decir, aplicaciones para iOS, Android y Web desde el
mismo código.

                                                                                         33
Desarrollo de una aplicación móvil híbrida para la solicitud de canciones

     Para ello utiliza un compilador llamado Capacitor[20] que traduce nuestro código base en el
     correspondiente a cada plataforma, de forma que podemos desarrollar funcionalidades nativas
     para cada una (uso de cámara, almacenamiento, gestos táctiles…etc)

               4.3.2 Firebase

     Firebase es una plataforma en la nube para el desarrollo de aplicaciones web y móvil, creada
     en 2011 y adquirida por Google en 2014. En un principio básicamente consistía en una base
     de datos en tiempo real, pero con el tiempo fueron añadiendo más funcionalidades hasta
     agrupar los SDK de varios productos de Google en una misma plataforma. De esta forma,
     encontramos en la misma plataforma las siguientes funcionalidades: desarrollo, crecimiento,
     monetización y análisis. A continuación, se describirán algunas de estas funcionalidades para
     cada categoria:

     •   Desarrollo: Firebase permite gestionar la autenticación de usuarios. Ofrece un sistema
         de autenticación que permite el acceso y el registro de estos. Por otro lado, Firebase ofrece
         también un servicio de base de datos en tiempo real No SQL, así como almacenamiento
         en la nube.

     •   Crecimiento: Firebase permite integrar la aplicación en los resultados de búsqueda de
         Google, lo que ayuda en cuanto al crecimiento de esta. Incluye, además, links inteligentes
         que redirigen al usuario a contenidos concretos de la aplicación, ideal para campañas
         publicitarias.

     •   Monetización: AdMob permite integrar publicidad en nuestras aplicaciones de forma
         sencilla. Todo ello gestionado desde la misma plataforma.

     •   Análisis: Firebase incluye diversas analíticas a incorporar en nuestra aplicación con el
         fin de realizar un seguimiento de las actividades de los usuarios

     Para nuestro proyecto solo hemos hecho uso de las herramientas de la categoría de desarrollo,
     ya que es la fase en la que nos encontramos. Sin embargo no se descarta utilizar el resto de
     herramientas que ofrece esta plataforma en las diferentes fases que experimentará la
     aplicación.

34
También puede leer