FERRANDIS - Desarrollo Back-End en .NET de Una Aplicación para La Obtención de Opiniones Mediante...
FERRANDIS - Desarrollo Back-End en .NET de Una Aplicación para La Obtención de Opiniones Mediante...
FERRANDIS - Desarrollo Back-End en .NET de Una Aplicación para La Obtención de Opiniones Mediante...
2017-2018
Desarrollo back-end en .NET de una aplicación para la obtención de opiniones
mediante gamificación.
2
Resumen
Este proyecto se centra en el diseño y desarrollo de un servidor (back-end) que
proporcionará soporte mediante un catálogo de servicios a una aplicación llamada
Nitpicky, la cual permitirá obtener opiniones mediante gamificación.
La gamificación permite al usuario realizar tareas de una forma lúdica. Mediante esta
técnica, se pretende aumentar el interés de los usuarios a la hora de contestar distintas
preguntas.
El sistema gestionará un ranking para generar todavía más interés en los usuarios, ya que
estarán compitiendo entre ellos. Además, el sistema proporcionará soporte a la gestión de
las propias preguntas, pudiendo crearlas, eliminarlas, modificarlas e incluso obtener
estadísticas de estas.
Cabe destacar que este proyecto se ha desarrollado en base a una propuesta de la empresa
en la cual se han realizado las prácticas del grado.
3
Desarrollo back-end en .NET de una aplicación para la obtención de opiniones
mediante gamificación.
Resum
Aquest projecte se centra en el disseny i desenvolupament d'un servidor (back-end) que
proporcionarà suport mitjançant un catàleg de serveis a una aplicació anomenada
Nitpicky, la qual permetrà obtenir opinions mitjançant gamificació.
La gamificació permet a l'usuari realitzar tasques d'una forma lúdica. Mitjançant aquesta
tècnica, es pretén augmentar l'interès dels usuaris a l'hora de contestar diferents
preguntes.
El sistema gestionarà un rànquing per a generar encara més interès en els usuaris, ja que
estaran competint entre ells. A més, el sistema proporcionarà suport a la gestió de les
pròpies preguntes, podent crear-les, eliminar-les, modificar-les i fins i tot obtenir
estadístiques d’aquestes.
Cal destacar que aquest projecte s'ha desenvolupat sobre la base d'una proposta de
l'empresa en la qual s'han realitzat les practiques del grau.
Paraules clau: Test Driven Development, API, obtenció d’opinions, gamificació, C#,
SQL, .NET, back-end
4
Abstract
This project focuses on the design and development of a server (back-end) that will
provide support through a catalogue of services to an application called Nitpicky, which
will allow opinions to be obtained through gamification.
Gamification allows the user to perform tasks in a playful way and through this technique,
it is intended to increase the interest of users when answering different questions.
The system will manage a ranking to generate even more interest from users, as they will
be competing. In addition, the system will provide support to the management of the
questions themselves, being able to create them, delete them, modify them and even
obtain statistics from them.
It should be noted that this project has been developed based on a proposal from the
company in which the internships of the degree have been carried out.
For the development of this project, C#, SQL, .NET languages and technologies have
been used mainly. In addition, the TDD (Test Driven Development) development
methodology has been used.
Key words: Test Driven Development, API, feedback, gamification, C#, SQL, .NET,
back-end
5
Desarrollo back-end en .NET de una aplicación para la obtención de opiniones
mediante gamificación.
Glosario
• Back-end: La parte de una aplicación que almacena y manipula datos.
• Front-end: Es una interfaz a través de la cual los usuarios comunes pueden
acceder a un programa.
• Test unitario: es un fragmento de código (normalmente un método) que invoca
otro fragmento de código y comprueba posteriormente la exactitud de algunas
suposiciones.
• Http (Hypertext Transfer Protocol): es el conjunto de reglas para la transferencia
de archivos (texto, imágenes gráficas, sonido, vídeo y otros archivos multimedia)
en internet.
• Framework: es una plataforma para el desarrollo de aplicaciones de software.
Proporciona una base sobre la cual los desarrolladores de software pueden
construir programas para una plataforma específica.
• Arquitectura software: es la organización fundamental de un sistema, encarnada
en sus componentes, sus relaciones entre sí y los principios que guían su diseño y
evolución.
• Interfaz: es un espacio compartido a través del cual dos o más componentes
separados de un sistema informático intercambian información.
• Arquitectura de Capas: es la organización donde los componentes funcionales
están separados jerárquicamente por capas. Cada capa solo está conectada con su
superior y su inferior mediante interfaces.
• API: se refiere a la Interfaz de Programación de Aplicaciones. Es la plataforma
que utiliza un programa para acceder a diferentes servicios en el sistema
informático.
• Dto (Data transfer object): es un objeto que transporta datos entre procesos. Se
utilizan cuando se recurre a interfaces remotas (por ejemplo, servicios web),
donde cada llamada es una operación costosa.
• Entidades: es una unidad de datos que puede clasificarse y que tiene relaciones
declaradas con otras entidades.
• Diagrama entidad-relación: Es un diagrama que representa las entidades y
cómo se relacionan entre sí.
6
Tabla de contenidos
1. Introducción ......................................................................................................................... 9
1.1 Objetivos ................................................................................................................. 10
1.2 Estructura ................................................................................................................ 11
2. Estimación de tiempos..................................................................................................... 13
3. Requisitos ....................................................................................................................... 15
3.1 Introducción ............................................................................................................ 15
3.2 Descripción general ................................................................................................. 17
3.3 Requisitos específicos .............................................................................................. 20
4. Casos de uso ................................................................................................................... 31
4.1 Diagrama de casos de uso ........................................................................................ 32
4.2 Descripción casos de uso ......................................................................................... 33
4.3 Diagramas de secuencia ........................................................................................... 38
5. Diseño............................................................................................................................. 41
5.1 Modelo Cliente Servidor .......................................................................................... 41
5.2 Arquitectura por capas ............................................................................................. 43
5.3 Base de datos relacional ........................................................................................... 44
6. Implementación.............................................................................................................. 47
6.1 Tecnologías y herramientas ...................................................................................... 47
6.2 TDD (Test-driven-development) .............................................................................. 50
6.3 Seguridad ................................................................................................................ 53
6.4 Importancia de las llamadas asíncronas .................................................................... 54
6.5 Estructura y entidades de la aplicación ..................................................................... 55
6.6 Servicios implementados ......................................................................................... 57
7. Pruebas .......................................................................................................................... 63
7.1 Pruebas de test ......................................................................................................... 63
7.2 Pruebas de uso ......................................................................................................... 64
8. Conclusiones .................................................................................................................. 67
9. Referencias .................................................................................................................... 69
10. Anexos ........................................................................................................................ 71
10.1 Anexo 1 Pruebas unitarias........................................................................................ 71
7
Desarrollo back-end en .NET de una aplicación para la obtención de opiniones
mediante gamificación.
Tabla de figuras
Ilustración 1 Roles de la aplicación ............................................................................. 17
Ilustración 2 Casos de uso ........................................................................................... 32
Ilustración 3 Diagrama de secuencia sobre caso de uso del rol jugador ........................ 38
Ilustración 4 Diagrama de secuencia sobre caso de uso del rol administrador .............. 39
Ilustración 5 Modelo cliente/servidor .......................................................................... 42
Ilustración 6 Arquitectura de n capas ........................................................................... 43
Ilustración 7 Diagrama entidad-relación ...................................................................... 45
Ilustración 8 Esquema metodología TDD .................................................................... 51
Ilustración 9 Ejemplo de test realizado ........................................................................ 52
Ilustración 10 Comprobación de rol en el controlador ................................................. 53
Ilustración 11 Método para obtener información del token .......................................... 54
Ilustración 12 Ejemplo métodos asíncronos en un servicio .......................................... 54
Ilustración 13 Estructura ejemplo carpeta de gestión ................................................... 56
Ilustración 14 Carpeta gestión rol Jugador ................................................................... 56
Ilustración 15 Modelo de datos ................................................................................... 57
Ilustración 16 Servicios de cualquier usuario ............................................................... 58
Ilustración 17 Servicios rol Jugador ............................................................................ 58
Ilustración 18 Servicios rol Administrador .................................................................. 59
Ilustración 19 Servicios rol Super Usuario .................................................................. 61
Ilustración 20 Test satisfactorios ................................................................................. 63
Ilustración 21 Pantalla principal Postman .................................................................... 65
Ilustración 22 Pestaña seguridad Postman ................................................................... 65
8
1. Introducción
Este TFG se va a desarrollar basándose en una propuesta de la empresa en la cual se han
realizado las practicas del grado. Se va a desarrollar una aplicación llamada Nitpicky la
cual se dividirá en dos partes. La parte cliente o front-end, encargada de las interfaces
gráficas de usuario y la parte servidor o back-end, encargada de almacenar y manipular
los datos de la aplicación. Este TFG se centrará en el diseño y la implementación de esta
última parte, la parte servidor. Cabe destacar que para la implementación de la aplicación
se va a utilizar la metodología TDD [17] (Test Driven Development) explicada
posteriormente.
En esta aplicación se distinguirán tres tipos de usuarios. Por una parte, el usuario que
contesta a las preguntas, llamado jugador. Por otra parte, el usuario administrador que
gestionará las preguntas y obtendrá el resultado de las mismas. El tercer tipo de usuario,
llamado super usuario, será el encargado de crear y gestionar a los administradores.
Nitpicky es una aplicación que solicita retroalimentación del jugador sobre diversos
temas importantes. Dicha retroalimentación consistirá en unas preguntas que los
jugadores deberán elegir entre diversas opciones, como las siguientes: bueno, malo,
neutral, etc.
9
Desarrollo back-end en .NET de una aplicación para la obtención de opiniones
mediante gamificación.
Las preguntas que realizará la aplicación serán siempre relacionadas con el jugador, por
ejemplo, sobre un producto comprado o un proyecto en el que participó. Como respuesta
a las preguntas, en lugar de recibir una respuesta directa, Nitpicky mostrará un juego que
permitirá al jugador expresar su opinión.
1.1 Objetivos
El objetivo principal de este proyecto es diseñar e implementar la parte servidor de la
aplicación Nitpicky. Esta parte servidor, desacoplada de las interfaces dedicadas a los
usuarios, se encargará de almacenar y gestionar las preguntas que se les ofrecerán y de
recoger las respuestas. Se generarán informes para los administradores y rankings para
los jugadores.
Será necesario definir unos objetivos más específicos con el fin de poder cumplir el
principal objetivo del proyecto. Estos objetivos son los siguientes:
10
1.2 Estructura
Esta memoria está estructurada en nueve puntos. El primer punto es la introducción,
donde se definirán los objetivos generales y la estructura de la memoria.
En el siguiente punto se establece una estimación de tiempo necesario para desarrollar las
diferentes tareas en que se divide el proyecto.
En el cuarto punto se detallan los diferentes casos de uso mediante diagramas de caso de
uso y diagramas de secuencia. También se define la información relativa a cada caso de
uso mediante una tabla.
Una vez terminada esta etapa de diseño, pasamos a la fase de implementación. En este
apartado se detallarán tanto las tecnologías como las herramientas que se han realizado
para poder desarrollar la aplicación.
11
Desarrollo back-end en .NET de una aplicación para la obtención de opiniones
mediante gamificación.
12
2. Estimación de tiempos
En este punto se va a realizar una estimación de los tiempos necesarios para la realización
de las diferentes etapas del proyecto. La planificación para identificar los requisitos y
funcionalidades es de dos semanas. En este periodo se pensará detenidamente cada uno
de los requisitos y las funcionalidades del proyecto.
La siguiente parte del proyecto es el diseño, donde se estudiarán todas las tecnologías
necesarias, que tipo de arquitectura es la adecuada, qué tipo de base de datos
necesitaremos, etc. Dado que esta parte es muy importante en el desarrollo de la
aplicación debido a que es la base del proyecto, se dedicarán dos semanas.
Como se muestra en la tabla inferior, el proyecto tiene una duración de doce semanas,
que serían unos tres meses de trabajo.
13
Desarrollo back-end en .NET de una aplicación para la obtención de opiniones
mediante gamificación.
14
3. Requisitos
En este apartado se van a definir todos los requisitos que deberá cumplir la aplicación. Se
va a seguir el estándar IEEE 830/1998 [2] para la especificación de requisitos.
Mediante este estándar se podrá confeccionar un apartado donde se definan los requisitos
de una manera muy completa.
3.1 Introducción
Como se ha comentado anteriormente se va a hacer uso del estándar IEE 830/1998 para
la definición de los requisitos de la aplicación. Mediante este estándar se sabrán los pasos
a seguir y qué estructura debe tener el análisis de requisitos. A continuación, se seguirán
las directrices impuestas por este estándar.
3.1.1 Propósito
El objetivo de este proyecto es desarrollar una API que proporcionará soporte a una
aplicación que permitirá la obtención de opiniones de los jugadores mediante la
gamificación. La aplicación que se desarrollará recibirá el nombre de Nitpicky.
Un jugador podrá acceder a un listado de todos los temas disponibles de los cuales tiene
preguntas para responder, así pues, pulsando sobre el tema le aparecerán todas las
preguntas referentes a ese tema que tenga pendientes de contestar.
El sistema permitirá al jugador descartar una pregunta, siendo está descartada del recuento
final de resultados de cada pregunta.
15
Desarrollo back-end en .NET de una aplicación para la obtención de opiniones
mediante gamificación.
El jugador podrá responder a la pregunta mediante un juego y una vez terminado el juego
se guardarán tanto el resultado de la opinión del jugador como la eficiencia con la que el
jugador ha respondido a dicha pregunta. Esta eficiencia será la puntuación del jugador.
Para la parte del administrador, el sistema proporcionará soporte para generar y gestionar
los temas, las preguntas y a que jugadores les corresponden contestarlas. Así que este
administrador será capaz de generar estadísticas y llevar a cabo un seguimiento de las
respuestas a las preguntas.
3.1.3 Referencias
IEEE Recommended Practice for Software Requirements Specification. ANSI/IEEE
830/1998
Este capítulo consta de la introducción, una descripción general y por último presenta los
requisitos específicos. En la introducción, se ha proporcionado una visión general del
capítulo. En el apartado de descripción general se encontrarán todos los aspectos que
tienen relevancia en la aplicación y en los requisitos. Para finalizar, en la sección de
requisitos específicos, se definirá cada uno de los requisitos con el suficiente detalle para
que se pueda llevar a cabo su implementación. Además, mediante estos requisitos también
se podrán planificar todas las pruebas que indicarán si se cumplen todos los requisitos
expuestos.
16
3.2 Descripción general
En el siguiente apartado se describirán todos los aspectos que puedan afectar a los
requisitos de la aplicación. Primero se describirá el marco en el que se va a desarrollar,
para posteriormente establecer todos los requisitos de una manera más detallada.
En este apartado se definirán las funciones principales que el servidor deberá ser capaz
de realizar.
17
Desarrollo back-end en .NET de una aplicación para la obtención de opiniones
mediante gamificación.
• Crear, modificar y eliminar temas: El administrador podrá crear un tema, que más
tarde estará compuesto por preguntas. Dicho administrador podrá modificar el
enunciado del tema y también borrar lo, eliminando a su vez todas las preguntas
dependientes del tema asociado.
• Ver temas a contestar: Tanto el administrador como el jugador podrán listar los
temas, con la diferencia de que el administrador podrá ver todos los temas y el
jugador solo los temas en los que tenga preguntas pendientes.
18
• Ver preguntas a contestar: El administrador podrá visualizar todas las preguntas y
el jugador solo las que tiene pendientes de contestar.
Esta aplicación está pensada para un uso empresarial, en el que el administrador gestiona
la información sobre las preguntas y los temas que deben contestar los jugadores. La
gestión de los usuarios estará controlada por la propia aplicación, siendo esta la encargada
de crear a los nuevos usuarios y almacenar su información en la base de datos. A la hora
de iniciar sesión, se comprobará si el usuario existe o no y si sus credenciales son
correctas.
3.2.4 Restricciones
La API está diseñada para dar soporte a cualquier tipo de cliente que pueda comunicarse
mediante peticiones HTTP.
El rendimiento de respuesta de la API puede variar dependiendo del servidor web que la
aloje.
19
Desarrollo back-end en .NET de una aplicación para la obtención de opiniones
mediante gamificación.
• Notificar al jugador cada cierto tiempo que tiene preguntas pendientes por
contestar.
Para el desarrollo de este proyecto no serán necesarias interfaces gráficas puesto que se
trata de una API donde ofreceremos servicios. No obstante, dichos servicios están
pensados para la implementación de dos interfaces gráficas de usuarios diferentes. Por
una parte, la interfaz para el rol jugador y por otra parte la interfaz para el rol
administrador. Cada interfaz permitirá el acceso a las distintas funcionalidades,
dependiendo del tipo de rol.
3.3.2 Funciones
En este apartado se van a explicar todas las tareas que el sistema va a llevar a cabo. Para
la explicación se enumerará una lista con cada funcionalidad indicando qué rol debe
desempeñar dicha función. Serán explicadas con el suficiente detalle para hacer posible
su posterior implementación.
20
Número 1
Requisito Crear tema
Prioridad Alta
Descripción El administrador crea un nuevo tema al
que posteriormente se asignarán las
preguntas correspondientes.
Número 2
Requisito Crear pregunta
Prioridad Alta
Descripción El administrador crea una pregunta nueva
indicando a que jugadores y tema va
dirigida la pregunta.
Número 3
Requisito Crear juego
Prioridad Alta
Descripción El administrador crea un juego nuevo en
el sistema
Número 4
Requisito Modificar tema
Prioridad Alta
Descripción El administrador modifica el título del
tema.
Número 5
Requisito Modificar pregunta
Prioridad Alta
Descripción El administrador modifica la formulación
de la pregunta.
21
Desarrollo back-end en .NET de una aplicación para la obtención de opiniones
mediante gamificación.
Número 6
Requisito Eliminar tema
Prioridad Alta
Descripción El administrador elimina un tema del
sistema, eliminando todas las preguntas
relacionadas con ese tema.
Número 7
Requisito Eliminar pregunta
Prioridad Alta
Descripción El administrador elimina una pregunta del
sistema, eliminando así la puntuación de
dicha pregunta para todos los jugadores
afectados.
Número 8
Requisito Eliminar juego
Prioridad Alta
Descripción El administrador elimina un juego del
sistema.
Número 9
Requisito Ver lista de temas
Prioridad Alta
Descripción El administrador lista todos los temas que
el sistema tiene almacenados.
22
Número 10
Requisito Ver lista de preguntas
Prioridad Alta
Descripción El administrador lista todas las preguntas
que pertenecen a un tema concreto.
Número 11
Requisito Resultado pregunta concreta
Prioridad Alta
Descripción El administrador puede observar el
resultado de una pregunta y la media de
puntuación de los jugadores.
Número 12
Requisito Resultado tema concreto
Prioridad Alta
Descripción El administrador puede observar el
resultado de un tema concreto, que es la
suma de las medias de cada pregunta.
También se obtendrá la media total de
puntuación en todas las preguntas de dicho
tema.
Número 13
Requisito Ver pregunta mejor valorada
Prioridad Alta
Descripción El administrador puede saber que
pregunta ha sido la mejor valorada en un
tema concreto.
23
Desarrollo back-end en .NET de una aplicación para la obtención de opiniones
mediante gamificación.
Número 14
Requisito Ver pregunta peor valorada
Prioridad Alta
Descripción El administrador puede saber que
pregunta ha sido la peor valorada en un
tema concreto.
Número 15
Requisito Ver pregunta con mejor puntuación media
Prioridad Alta
Descripción El administrador puede saber que
pregunta ha obtenido mayor puntuación
media por los jugadores en un tema
concreto.
Número 16
Requisito Ver pregunta con peor puntuación media
Prioridad Alta
Descripción El administrador puede saber que
pregunta ha obtenido menor puntuación
media por los jugadores en un tema
concreto.
Número 17
Requisito Ver pregunta con mayor participación
Prioridad Alta
Descripción El administrador puede saber que
pregunta ha sido la más contestada en un
tema concreto.
24
Número 18
Requisito Ver pregunta con menor participación
Prioridad Alta
Descripción El administrador puede saber que
pregunta ha sido la menos contestada en
un tema concreto.
Número 19
Requisito Ver pregunta más descartada
Prioridad Alta
Descripción El administrador puede saber que
pregunta ha sido la más descartada en un
tema concreto.
Número 20
Requisito Ver tema mejor valorado
Prioridad Alta
Descripción El administrador puede saber qué tema ha
sido el mejor valorado.
Número 21
Requisito Ver tema peor valorado
Prioridad Alta
Descripción El administrador puede saber qué tema ha
sido el peor valorado.
Número 22
Requisito Ver tema con mejor puntuación media
Prioridad Alta
Descripción El administrador puede saber el tema con
mejor puntuación media.
25
Desarrollo back-end en .NET de una aplicación para la obtención de opiniones
mediante gamificación.
Número 23
Requisito Ver tema con peor puntuación media
Prioridad Alta
Descripción El administrador puede saber el tema con
peor puntuación media.
Número 24
Requisito Ver tema con más participación
Prioridad Alta
Descripción El administrador puede saber qué tema ha
sido el más contestado.
Número 25
Requisito Ver tema con menos participación
Prioridad Alta
Descripción El administrador puede saber qué tema ha
sido el menos contestado.
Número 26
Requisito Ver tema con más preguntas descartadas
Prioridad Alta
Descripción El administrador puede saber qué tema ha
sido el más descartado.
Número 27
Requisito Ver mejores tres jugadores
Prioridad Alta
Descripción El administrador puede listar a los tres
jugadores con la puntuación más alta.
26
Ahora se van a definir las funcionalidades del rol Jugador:
Número 28
Requisito Ver ranking
Prioridad Alta
Descripción El sistema proporciona al jugador la lista
de los cinco mejores jugadores con sus
correspondientes puntuaciones.
Número 29
Requisito Ver puntuación
Prioridad Alta
Descripción El sistema proporciona al jugador su
propia puntuación con su nombre.
Número 30
Requisito Ver lista de temas disponibles
Prioridad Alta
Descripción El sistema proporciona al jugador un
listado de temas de los cuales el jugador
tiene preguntas pendientes de contestar.
Número 31
Requisito Ver lista de preguntas disponibles
Prioridad Alta
Descripción El sistema proporciona al jugador una lista
de preguntas disponibles correspondientes
al tema seleccionado.
27
Desarrollo back-end en .NET de una aplicación para la obtención de opiniones
mediante gamificación.
Número 32
Requisito Descartar pregunta
Prioridad Alta
Descripción El jugador descarta una pregunta, dicha
pregunta no tiene validez a la hora de
calcular las estadísticas de cada pregunta
y tema.
Número 33
Requisito Responder pregunta
Prioridad Alta
Descripción El jugador responde a la pregunta
seleccionada. Automáticamente se guarda
toda la información necesaria.
(puntuación de la pregunta y la respuesta
a la pregunta)
Número 34
Requisito Cambiar el rol de un jugador a
administrador
Prioridad Alta
Descripción El super usuario cambia el rol de un
usuario jugador al rol administrador.
Número 35
Requisito Cambiar el rol de un administrador a
jugador.
Prioridad Alta
Descripción El super usuario cambia el rol de un
usuario administrador al rol jugador.
28
Por último, se van a definir las funcionalidades que van a poder ser usadas por todos los
usuarios de la aplicación.
Número 36
Requisito Iniciar sesión de usuario
Prioridad Alta
Descripción Cualquier usuario puede iniciar sesión con
el fin de acceder a las funcionalidades de
la aplicación.
Número 37
Requisito Registrar nuevo usuario
Prioridad Alta
Descripción Cualquier usuario puede registrarse como
jugador con el fin de poder crear una
nueva cuenta que le de acceso a las
funcionalidades de la aplicación.
La carga que tenga que soportar el servidor no será demasiado grande, aunque deberá
tener una buena escalabilidad para poder soportar cargas mayores en el futuro.
En este apartado se van a detallar que atributos de calidad del sistema serán necesarios.
Estos atributos son fiabilidad, anonimidad, escalabilidad, seguridad y portabilidad
El sistema tiene que ser fiable, tiene que ofrecer todas las funcionalidades descritas en el
apartado anterior. Todas estas funcionalidades tienen que funcionar correctamente.
29
Desarrollo back-end en .NET de una aplicación para la obtención de opiniones
mediante gamificación.
El sistema tiene que ser escalable, tiene que ser capaz de adaptarse a la demanda de
usuarios, pudiendo dar soporte al número de usuarios que estén registrados
simultáneamente.
El sistema tiene que ser portable, es decir, que será relativamente sencillo de instalar en
otros servidores.
30
4. Casos de uso
Las técnicas de casos de uso capturan los requisitos funcionales de más alto nivel del
sistema a desarrollar. Mediante la aplicación de esta técnica se consigue especificar el
comportamiento del sistema. [3]
Los casos de uso pretenden definir qué hará el sistema, con un enfoque desde los
diferentes roles existentes en la aplicación. Su propósito es realizar un seguimiento del
proyecto y poder ofrecer una estructura a la aplicación.
Estas técnicas utilizan los llamados diagramas de caso de uso. En estos diagramas se
encuentran los diferentes actores y las diferentes funciones que pueden realizar en el
sistema.
Un actor especifica el rol del usuario que será una entidad que intercambiará información
con el sistema. A cada actor se le asignarán actividades que son relevantes en la
especificación de sus casos de uso.
31
Desarrollo back-end en .NET de una aplicación para la obtención de opiniones
mediante gamificación.
32
4.2 Descripción casos de uso
A continuación, se describirán los casos de uso para posteriormente realizar la
implementación de cada caso de uso.
33
Desarrollo back-end en .NET de una aplicación para la obtención de opiniones
mediante gamificación.
34
Caso de uso Eliminar juego
Actores Administrador
Propósito Eliminar un juego del sistema
Resumen El administrador puede eliminar un juego
en concreto.
Precondiciones El administrador debe de estar
autentificado en el sistema y el juego debe
de haber sido creado.
35
Desarrollo back-end en .NET de una aplicación para la obtención de opiniones
mediante gamificación.
36
Caso de uso Convertir usuario jugador en
administrador
Actores Super usuario
Propósito Cambiar jugador a rol administrador
Resumen El super usuario convierte a un usuario de
rol administrador en un usuario de rol
jugador
Precondiciones El super usuario debe de estar
autentificado en el sistema y el jugador al
que se le desea cambiar el rol debe existir.
37
Desarrollo back-end en .NET de una aplicación para la obtención de opiniones
mediante gamificación.
En este apartado se van a mostrar dos diagramas de secuencia con la finalidad de mostrar
el flujo de la aplicación en general, tanto en el lado cliente como en el lado servidor.
38
tema. Una vez el jugador ha elegido el tema sobre el cual quiere contestar preguntas, el
sistema muestra una lista de las preguntas disponibles, de nuevo el jugador elige la
pregunta que desea contestar. Al elegir una pregunta el sistema muestra el juego con el
que se obtendrán los datos necesarios para saber la opinión del jugador y la puntuación
obtenida en el juego. El sistema almacena estos datos y finalmente devuelve al jugador a
la pantalla inicial donde se muestra el ranking de los mejores jugadores y su puntuación.
39
Desarrollo back-end en .NET de una aplicación para la obtención de opiniones
mediante gamificación.
los diferentes jugadores elegidos por el administrador. Una vez creada la pregunta el
administrador pulsa la opción de obtener las estadísticas de una pregunta concreta, de esta
manera el administrador selecciona la pregunta de la cual desea obtener las estadísticas,
el cliente al igual que las otras veces, se comunica con el servidor para recuperar dichos
datos. El servidor procesa la petición y devuelve las estadísticas de la pregunta
seleccionada y el cliente es el encargado de mostrar dichos resultados.
40
5. Diseño
Como se ha comentado en la introducción, la aplicación Nitpicky se ha dividido en dos
partes, por un lado, el back-end o API, donde se realizarán todas las funciones de mayor
carga computacional y, por otro lado, el front-end, el cual es el responsable de las
interfaces gráficas de usuario y algunas funcionalidades de poca carga computacional. De
este modo se observa que Nitpicky utiliza el modelo cliente-servidor, donde el cliente se
comunicará mediante peticiones HTTP con el servidor. Cabe desatar que en este TFG
únicamente se va a diseñar e implementar el lado servidor.
Además, para la propia estructura del servidor se va a utilizar una arquitectura por capas.
Cada una de las capas tendrá su propia funcionalidad. Esta arquitectura viene definida por
el framework de la empresa, Devonfw.
En cuanto a la hora de almacenar todos los datos, se va a utilizar una base de datos
relacional, con la cual se gestionará toda la información.
Mediante este modelo se logra que las dos partes, cliente y servidor, trabajen de forma
desacoplada, lo que facilita su desarrollo y mantenimiento. El cliente es el encargado de
realizar las llamadas al servidor con el fin de obtener la información requerida por el
usuario. Además, también es el encargado de gestionar todas las interfaces gráficas de
usuario, ya que el usuario interactuará directamente con dicho cliente.
Por otro lado, el servidor es el encargado de procesar las peticiones del cliente. Este
realizará todas las tareas de mayor carga computacional, ya que la potencia y capacidad
del servidor puede ser establecida e incluso distribuida en múltiples equipos, mientras que
sobre la potencia del cliente sólo se puede indicar, pero no establecer, la potencia mínima
41
Desarrollo back-end en .NET de una aplicación para la obtención de opiniones
mediante gamificación.
requerida. Además, el servidor expondrá unos determinados servicios, los cuales serán
visibles y utilizados por el cliente con el fin de gestionar toda la información necesaria.
42
5.2 Arquitectura por capas
43
Desarrollo back-end en .NET de una aplicación para la obtención de opiniones
mediante gamificación.
Capa de aplicación:
Capa de negocio:
Capa de servicio:
La capa de servicio gestiona los datos obtenidos entre la capa de dominio y la capa de
negocio. También transforma los datos para ser usados más eficientemente entre capas.
Capa de dominio:
En este punto se va a explicar qué tipo de base de datos se va a utilizar en este proyecto
comentando qué ventajas proporcionará a dicho proyecto.
Puesto que la aplicación va a necesitar una base de datos para poder almacenar toda la
información, se diseñará una base de datos siguiendo el modelo relacional.
44
Para diseñar la tabla de datos se utiliza un diagrama de entidad-relación. Mediante este
esquema se definen todas las entidades y las relaciones que van a existir en la aplicación.
De esta manera el desarrollador puede comprender fácilmente el sistema y puede realizar
la implementación, ya que este diagrama muestra la base de toda aplicación, que son los
datos y las relaciones que existen entre ellos.
Como se observa en este diagrama, un usuario puede tener muchas preguntas que
contestar y una pregunta puede tener muchos usuarios asociados. Esta relación entre
usuario y pregunta se lleva a cabo gracias a la tabla User_Question, donde es necesario
que exista tanto el usuario y la pregunta como el juego que se utilizará para responder la
pregunta, en cada entrada de la tabla. Una pregunta solo puede y debe pertenecer a un
tema, pero un tema puede tener o no preguntas.
Para hacer posible las relaciones entre tablas, se han definido como claves primarias todos
los identificadores únicos de cada tabla, y como claves ajenas todos los atributos con
nombre de tablas con terminación de Id. Como ejemplo, el atributo UserId de la tabla
User_Question es clave ajena y está relacionada con la clave primaria de la tabla User
que es el atributo Id.
45
Desarrollo back-end en .NET de una aplicación para la obtención de opiniones
mediante gamificación.
• Topic: esta tabla almacenará todos los temas junto con su identificador propio.
46
6. Implementación
Una vez terminado el diseño de todos los elementos necesarios para el desarrollo de la
aplicación, se va a proceder a la implementación de esta. En primer lugar, se comentarán
las tecnologías y herramientas utilizadas. Posteriormente se describirá la metodología
utilizada para implementar la aplicación entre otros aspectos.
6.1.1 Devonfw
Devonfw [7] es una plataforma estándar con un enfoque industrializado con el fin de
agilizar el proceso de desarrollo de proyectos software. Para ello, se integran diferentes
tecnologías (java, node, typescript, .Net, serverless). Además, esta plataforma está
constituida por productos de código abierto y de estándares definidos (OASP [8]). Para
hacer uso de esta plataforma, el desarrollador parte de los planos de implementación para
desarrollar una correcta aplicación.
Devonfw ha sido desarrollado por la empresa en la cual se ha llevado a cabo este TFG.
6.1.2 .NET y C#
.NET [9] es una plataforma desarrollada por Microsoft que ofrece un conjunto de
herramientas, tecnologías y servicios que facilita el desarrollo de aplicaciones software.
.NET proporciona soporte para diferentes lenguajes, como F#, Visual Basic .Net, C++,
C#, entre otros.
Para concretar, en este proyecto se ha utilizado .NET Core [10], ya que proporciona una
serie de características como son:
Multiplataforma: permite desarrollar una aplicación que podrá ser ejecutada en los
principales sistemas operativos de hoy en día, Windows, Linux y MacOS.
47
Desarrollo back-end en .NET de una aplicación para la obtención de opiniones
mediante gamificación.
Código abierto: al ser código abierto, .NET Core favorece que el proceso de desarrollo
sea más transparente.
Para desarrollar una aplicación en .NET Core es necesario utilizar C#, así que éste es el
principal lenguaje del proyecto.
6.1.3 SQL
6.1.4 Postgres
Se ha elegido este editor porque ha sido impuesto por la propia empresa. Éste editor ofrece
una serie de herramientas muy útiles para el entorno .NET. Se ha trabajado con la última
versión de este editor para poder disponer de todas las funcionalidades que éste ofrece.
48
• JSON es el formato en el que se transporta la información.
• También devuelve códigos de respuesta HTML. Los códigos de respuesta pueden
ser 200(Ok), 403(Forbidden), 404(Not found), entre otros.
• Es necesario una URL y un método HTTP para utilizar esta tecnología. Los métodos
HTTP son GET, para listar y leer; POST, para crear; DELETE, para eliminar;
PATCH, para actualizar y PUT para reemplazar.
6.1.7 Swagger
Swagger [13] es una implementación del estándar OpenAPI [18] que proporciona un gran
número de herramientas que ayudan a los desarrolladores a diseñar, construir, documentar
y consumir servicios web REST proporcionando el contrato de los servicios. Este contrato
se puede compartir entre desarrolladores de distintos equipos permitiendo el desarrollo
en paralelo front-end y back-end. Además, dichas herramientas dan soporte a la
realización de documentación automatizada, generación de código y generación de casos
de prueba.
Json Web Token o JWT [14] es un conjunto de medios de seguridad basado en JSON
donde se crea un token que sirve para enviar datos entre aplicaciones o servicios
garantizando que los datos sean válidos y seguros.
49
Desarrollo back-end en .NET de una aplicación para la obtención de opiniones
mediante gamificación.
6.1.9 Postman
Postman [15] es una herramienta que permite al desarrollador crear peticiones a APIs
internas o de terceros con la finalidad de poder gestionarlas y probarlas.
6.1.10 FIDDLER
Fiddler [16] es un servidor proxy que sirve para depurar código HTTP. Fiddler se encarga
de capturar tráfico HTTP y HTTPS y lo registra para que se pueda revisar por el usuario.
Además, también tiene la capacidad de modificar el tráfico HTTP con el fin de solucionar
problemas mientras se están enviando o recibiendo estas peticiones.
Google Chrome y Mozilla Firefox son dos de los navegadores más utilizados hoy en día.
En este proyecto han sido utilizados para mostrar los contratos generados por la
herramienta Swagger.
La primera parte es el desarrollo del test del requisito o funcionalidad específica que se
desee cumplir. Para esta parte se utilizan test unitarios, esto significa que todos los test
que se realicen tienen que cumplir una serie de aspectos: debe ser automático y repetible,
50
su implementación debe ser simple, fácil y rápida, su ejecución debe ser rápida, debe
devolver siempre el mismo resultado ante la misma entrada, cada test debe de estar aislado
del resto de test y por último cada test debe de ser relevante en el futuro.
Una vez implementados los test, se procede a la implementación del código fuente con el
único objetivo de superar los test desarrollados anteriormente. En esta parte se
implementa la funcionalidad estrictamente definida por el test, de esta forma es muy
importante que los test de la aplicación recojan todas y cada una de las funcionalidades y
requisitos especificados
Por último, se realiza la refactorización, esto es, una revisión del código que ya supera el
test satisfactoriamente, para su optimización o limpieza. Esta parte es muy importante, ya
que aquí es donde se asegura que el código fuente implementado es óptimo y leíble.
También es necesario analizar el código realizado y hacerse unas preguntas como:
¿Dentro de un año o dos se entenderá él código? o ¿Hay alguna función que se pueda
optimizar?
51
Desarrollo back-end en .NET de una aplicación para la obtención de opiniones
mediante gamificación.
El test se divide principalmente en tres partes, una es la creación del objeto que se espera
obtener al realizar el servicio, dicha creación se muestra en el cuadro amarillo. Se utiliza
la nomenclatura nombre del servicio más la terminación Expected con la finalidad de que
el código sea más leíble y quede claro que éste es el objeto esperado de dicho servicio.
Por otra parte, está la sentencia enmarcada en azul, aquí es donde se realiza la llamada al
servicio implementado. El objeto resultante recibe el nombre a partir de dos partes, la
primera el nombre del servicio y la segunda parte Result. Al igual que en la parte anterior
recibe este nombre con el fin de hacer más leíble el código. Por último, la sentencia
enmarcada en rojo comprueba si el objeto resultante es igual que el esperado. Cabe
destacar que el título que recibe el test es muy importante, ya que debe de seguir una
52
buena nomenclatura para facilitar la tarea de comprensión del código a futuros
desarrolladores.
6.3 Seguridad
En este punto se va a detallar la seguridad que se ha implementado en la aplicación. Como
ya se ha comentado en las tecnologías, se ha utilizado JWT. Esta es una herramienta que
se encuentra en una gran variedad de tecnologías dedicadas a comunicaciones y transporte
de datos en la red. Esta herramienta permite la creación de tokens únicos con los cuales
se puede cifrar información sensible de la aplicación.
En el caso de este proyecto se ha utilizado esta herramienta para generar un token que
encapsula el identificador de usuario junto con su rol, con el fin de proteger los datos de
las personas que utilicen la aplicación. Mediante JWT ya no será necesario enviar ningún
dato de usuario en el cuerpo del mensaje, ya que se enviará el token en la cabecera del
mismo. Dicho token se generará al inicio de la sesión del usuario y contendrá toda la
información relevante de éste.
Además, se ha utilizado un sistema de roles para que los usuarios solo puedan realizar las
acciones que su rol les permite.
De esta forma la aplicación es capaz de identificar el rol del usuario, ya que utiliza el
token descifrado para obtener toda la información necesaria.
53
Desarrollo back-end en .NET de una aplicación para la obtención de opiniones
mediante gamificación.
De esta forma se garantiza la autenticidad de los usuarios, ya que cada usuario tendrá su
token único y además se garantiza que cada funcionalidad del sistema es realizada por el
usuario con el rol especificado, denegando así el permiso a aquellos usuarios que no
pertenezcan a dicho rol.
54
Como se observa en la imagen, en la declaración de los métodos es necesario utilizar la
palabra reservada async para poder hacer llamadas asíncronas a otros métodos asíncronos.
También se puede observar en la primera línea del método desplegado que para realizar
una llamada a un método asíncrono es necesaria la palabra reservada await.
La clase Task<TResult> representa una única operación que devuelve un valor y que se
ejecuta asincrónicamente. Esta clase permite utilizar una gran variedad de métodos que
permitirán saber por ejemplo si una tarea esta completada, cancelada, bloqueada, etc.
55
Desarrollo back-end en .NET de una aplicación para la obtención de opiniones
mediante gamificación.
Por otra parte, cabe destacar las carpetas donde se gestionan los dos roles de la aplicación.
Estas carpetas están subdivididas por otras tres carpetas. Una de ellas, Controller, aloja
el controlador del rol, éste será el encargado de recibir o responder las peticiones del
cliente. Además, el controlador se comunicará con la capa de servicio, alojada en otra
subcarpeta que recibe el nombre de Services. Esta carpeta contendrá tanto la interfaz
como la implementación del servicio, que contendrá toda la lógica necesaria para cumplir
todas las funcionalidades del rol y también se comunicará con los servicios de las
entidades con el fin de obtener los datos necesarios de ellos. Por último, la subcarpeta
Dto, contiene los objetos de negocio, los cuales serán recibidos y enviados por parte del
cliente. A continuación, se muestra en la ilustración 14 una imagen con el fin de entender
mejor la organización descrita.
56
contexto donde se establecen las relaciones entre entidades. Cabe destacar que la capa de
dominio está implementada en dos proyectos diferentes, en el proyecto Entities es donde
tenemos las entidades y el contexto, mientras que el otro proyecto, llamado UnitOfWork,
es el encargado de realizar todas las gestiones de la base de datos, siendo una capa
intermedia entre la capa de servicios y la capa de dominio y entidades.
En este apartado se va a hablar de cómo se han organizado las entidades que confeccionan
la aplicación. Como se ha comentado en el capítulo anterior, el diagrama de entidad-
relación es la base de todo el proyecto, así que para la implementación de las entidades
se ha seguido estrictamente dicho esquema.
Se ha generado una clase por cada tabla del diagrama diseñado. Y posteriormente se ha
implementado un contexto donde se establecen todas las relaciones entre entidades,
llamado ModelContext. Esta estructura mencionada se puede observar en la ilustración
15.
57
Desarrollo back-end en .NET de una aplicación para la obtención de opiniones
mediante gamificación.
Como se puede observar en la ilustración 17, los servicios implementados para el rol
jugador son:
• Scores: Este servicio devuelve el ranking de los mejores jugadores, junto con el
nombre del usuario que solicita la información, su puntuación y su posición en el
ranking.
• TopicsAvaliables: Este servicio devuelve todos los temas donde el jugador tiene
preguntas pendientes por contestar.
58
• QuestionsAvaliable: Este servicio devuelve todas las preguntas de un tema
específico que el jugador tiene pendientes de contestar.
• FeedbackInfo: Este servicio recoge los datos obtenidos del jugador con su
puntuación en el juego y su opinión. Estos datos serán guardados en la base de
datos para la obtención de las estadísticas.
59
Desarrollo back-end en .NET de una aplicación para la obtención de opiniones
mediante gamificación.
• UpdateTopic: El sistema modifica el título del tema por el nuevo título que ha
enviado el administrador.
60
Por último, se muestran en la ilustración 19 todos los servicios implementados para el rol
super usuario.
61
Desarrollo back-end en .NET de una aplicación para la obtención de opiniones
mediante gamificación.
62
7. Pruebas
63
Desarrollo back-end en .NET de una aplicación para la obtención de opiniones
mediante gamificación.
En el cuadro verde se encuentra el campo donde se especifica la url del servicio al que se
quiere acceder, y a la derecha el botón de enviar. Justo debajo de estos campos, cuadro
rojo, tenemos diferentes opciones para modificar las autorizaciones, las cabeceras y el
cuerpo de la llamada.
En el campo de color azul encontramos un espacio donde escribir el cuerpo del mensaje,
siempre en formato JSON. Cabe destacar que este campo solo se rellenará en llamadas de
tipo POST. Seguidamente, se encuentra el cuadro negro, en el cual se podrá observar
tanto las cabeceras como el cuerpo de la respuesta de la llamada.
Postman ofrece, en el cuadro amarillo, información del estatus de la respuesta, del tiempo
transcurrido entre que lanza la llamada y recupera el resultado del servidor y el tamaño
de este. Por último, en el campo de color rosa es donde se va a mostrar el resultado de la
llamada.
64
Ilustración 21 Pantalla principal Postman
65
Desarrollo back-end en .NET de una aplicación para la obtención de opiniones
mediante gamificación.
66
8. Conclusiones
Este trabajo tenía como objetivo principal diseñar e implementar la parte servidor de una
aplicación web que permitía obtener la opinión de los usuarios respecto a temas
propuestos por los administradores.
Por otra parte, centrándonos en los requisitos, es necesario comentar que la aplicación
cumple todos y cada uno de los establecidos al inicio del proyecto. Debido a este logro
de objetivos y requisitos, se ha conseguido un elevado grado de satisfacción con la
realización del proyecto.
Respecto al desarrollo de las diferentes fases del proyecto, cabe destacar que, por lo
general, se han llevado a cabo en el tiempo estimado en la planificación previa. El diseño
de la aplicación, más concretamente el modelo de datos, ha sido una gran sorpresa en
cuanto a tiempo porque ha requerido de mucho más tiempo del esperado. En cambio, la
fase de análisis de requisitos ha sido más rápida de lo previsto.
En cuanto a la implementación, se debe comentar que era una de las primeras veces que
trabajaba en un entorno de estas características. Debido a esto, se necesitó un periodo de
adaptación. No obstante, una vez pasado este periodo, el trabajo se llevó a cabo de una
manera ágil y satisfactoria.
A continuación, se hablará de la relación que existe entre este TFG y los estudios cursados
durante el grado. En general han sido muchas las asignaturas las que han ayudado en
algún momento del proyecto, pero se van a destacar las más significativas. Una de las
asignaturas que más útil ha resultado para la realización de este proyecto ha sido la
asignatura de Bases de datos y sistemas de la información. Esta asignatura fue cursada en
67
Desarrollo back-end en .NET de una aplicación para la obtención de opiniones
mediante gamificación.
Para finalizar este TFG se va a hablar del aprendizaje que este ha supuesto. En primer
lugar, destacar que ha sido la primera experiencia profesional la cual ha proporcionado
una visión de la realidad fuera de la facultad. Por otro lado, a nivel de conocimientos
técnicos, se ha experimentado una mejora notable y un gran aprendizaje debido a que se
ha trabajado con diferentes tecnologías. Por último, mirando hacia el futuro, la realización
de este TFG ha permitido ponerse en la piel de nuestro yo del futuro, haciéndonos ver que
ese es el futuro que nos gusta.
68
9. Referencias
[1] Ana Ruiz Caballero. Estudio de la gamificación de una empresa para incentivar la
motivación [En línea] [fecha de consulta: 24 de marzo de 2018]. Disponible en:
https://uvadoc.uva.es/bitstream/10324/18243/1/TFG-I-417.pdf
[2] Especificación de Requisitos según el estándar de IEEE 830 (22 de octubre de 2008)
[En línea] [fecha de consulta: 6 de abril de 2018]. Disponible en
https://www.fdi.ucm.es/profesor/gmendez/docs/is0809/ieee830.pdf
[3] Diagrama de Casos de uso [En línea]. Polimedia, realizado por Penades Gramage,
maría Carmen, 28 de junio de 2016 [fecha consulta 8 de abril de 2018]. Disponible en:
http://hdl.handle.net/10251/66596
[5] Sandeep Singh Shekhawat, Onion Architecture in ASP.NET Core MVC [en línea]
[fecha de consulta: 10 abril 2018]. Disponible en https://www.c-
sharpcorner.com/article/onion-architecture-in-asp-net-core-mvc/
[6] C.J. Date, EDGAR F. ("TED") CODD [en línea] [fecha de consulta: 16 abril 2018].
Disponible en https://amturing.acm.org/award_winners/codd_1000892.cfm
[9] .NET: Free. Cross-platform. Open source. A developer platform for building apps [En
línia] [fecha de consulta 22 de junio de 2018]. Disponible en:
https://www.microsoft.com/net/
69
Desarrollo back-end en .NET de una aplicación para la obtención de opiniones
mediante gamificación.
[10] .NET Core Guide [En línia] [fecha de consulta 22 de junio de 2018] Disponible en:
https://docs.microsoft.com/en-us/dotnet/core/index
[11] The world’s largest web developer site. SQL tutorial [En línea] [fecha de consulta
5 de junio de 2018] Disponible en: https://www.w3schools.com/sql/
[12] Visual Studio 2017 [En línea] [fecha de consulta 20 de abril de 2018]. Disponible
en: https://www.visualstudio.com/
[13] Swagger [En línea] [fecha de consulta 2 de mayo de 2018]. Disponible en:
https://swagger.io/
[14] Json Web Token [En línea] [fecha de consulta 3 de mayo de 2018]. Disponible en:
https://jwt.io/
[15] Postman [En línea] [fecha de consulta 3 de mayo de 2018]. Disponible en:
https://www.getpostman.com/
[16] Fiddler [En línea] [fecha de consulta 4 de mayo de 2018]. Disponible en:
https://www.telerik.com/fiddler
[17] FEATHERS, M. MARTIN, R. The art of Unit Testing. Segunda edición. Shelter
Island: Manning, 2014. ISBN 9781617290893.
[18] OpenAPI [En línea] [fecha de consulta 16 de mayo de 2018]. Disponible en:
https://www.openapis.org/
[19] Postgres [En línea] [fecha de consulta 15 de junio de 2018]. Disponible en:
https://www.postgresql.org/
70
10. Anexos
71
Desarrollo back-end en .NET de una aplicación para la obtención de opiniones
mediante gamificación.
72
Obtener todos los temas disponibles
73
Desarrollo back-end en .NET de una aplicación para la obtención de opiniones
mediante gamificación.
74
Guardar el resultado de una pregunta contestada
75
Desarrollo back-end en .NET de una aplicación para la obtención de opiniones
mediante gamificación.
76
ROL ADMINISTRADOR:
Inicio sesión del administrador
77
Desarrollo back-end en .NET de una aplicación para la obtención de opiniones
mediante gamificación.
Crear tema
78
Crear pregunta
79
Desarrollo back-end en .NET de una aplicación para la obtención de opiniones
mediante gamificación.
Crear juego
80
Modificar enunciado de un tema
81
Desarrollo back-end en .NET de una aplicación para la obtención de opiniones
mediante gamificación.
82
Eliminar un tema
83
Desarrollo back-end en .NET de una aplicación para la obtención de opiniones
mediante gamificación.
84
Eliminar juego
85
Desarrollo back-end en .NET de una aplicación para la obtención de opiniones
mediante gamificación.
86
Obtener todas las preguntas de un tema concreto
87
Desarrollo back-end en .NET de una aplicación para la obtención de opiniones
mediante gamificación.
88
Obtener los resultados de un tema concreto
89
Desarrollo back-end en .NET de una aplicación para la obtención de opiniones
mediante gamificación.
90
Obtener los tres mejores jugadores
91
Desarrollo back-end en .NET de una aplicación para la obtención de opiniones
mediante gamificación.
92
Modificar rol de jugador a administrador
93
Desarrollo back-end en .NET de una aplicación para la obtención de opiniones
mediante gamificación.
94