EduMemory

App educativa de memoria y aprendizaje

Trabajo de Fin de Grado · Grado en Ingeniería Informática

Inés Araújo Gómez

Tutora: Lorena Otero Cerdeira

Co-Tutora: Encarnación González Rufino

Universidade de VigoESEI · ABRIL 2026TFG Nº 25/26-17

Índice de contenidos

01

Introducción y objetivos

Contexto educativo, motivación del proyecto y objetivos generales y específicos.

02

Solución, planificación y arquitectura

Resumen de la solución, metodología ágil, planificación temporal y patrón MVVM.

03

Tecnologías, requisitos y diseño

Stack tecnológico, análisis de requisitos, diseño estático y dinámico, gamificación.

04

Datos, pruebas y demostración

Gestión de datos con Room, plan de pruebas, resultados y demostración del programa

05

Conclusiones y trabajo futuro

Principales aportaciones técnicas y pedagógicas, conclusiones y líneas de mejora.

Introducción

La transformación digital ha cambiado profundamente la manera en que aprendemos. El alumnado actual convive con dispositivos móviles y videojuegos, lo que supone una oportunidad y un reto: captar su atención requiere actividades cercanas y motivadoras.

EduMemory nace de una pregunta clave: ¿cómo integrar la mecánica del juego de memoria con contenidos educativos para que el estudiante aprenda mientras juega y no solo repita un patrón mecánico?

Objetivos del proyecto

Objetivo general

Diseñar y desarrollar una aplicación móvil educativa para Android que combine el juego de memoria con preguntas de opción múltiple, fomentando el aprendizaje activo y la motivación mediante la gamificación.

Objetivos específicos

  • Interfaz intuitiva y accesible: usable por estudiantes de diferentes edades y niveles, sin sobrecargar la pantalla.
  • Lógica de juego: sistema de cartas emparejadas con barajado aleatorio y control de estado (volteadas/no volteadas).
  • Sistema de preguntas educativas: preguntas de opción múltiple asociadas a cada pareja, validando respuestas y condicionando el avance.

Resumen de la solución propuesta

EduMemory es una aplicación nativa para Android programada íntegramente en Kotlin, con arquitectura MVVM, interfaz construida con Jetpack Compose y persistencia de datos mediante Room.

Kotlin + MVVM

Separación clara entre lógica del juego, gestión de datos e interfaz de usuario.

Jetpack Compose

Diseño fluido y reactivo que se adapta automáticamente a los cambios de estado del tablero.

Room

Persistencia local de preguntas, categorías y puntuaciones. Sin dependencia de internet.

Metodología ágil

Desarrollo iterativo-incremental en 5 fases: análisis, capacitación, diseño, desarrollo y pruebas.

Planificación y seguimiento

El proyecto se estructuró en cinco fases con una dedicación total estimada de 300 horas. La ejecución real fue de 305 horas, con una desviación mínima de +5 h.

El diseño requirió +5 h para lograr una estética coherente y accesible; el desarrollo necesitó +10 h por las iteraciones con Jetpack Compose. Las pruebas se completaron antes al haberse documentado en paralelo.

Arquitectura

Patrón MVVM en EduMemory

La arquitectura de EduMemory se basa en MVVM (Model-View-ViewModel), siguiendo las recomendaciones de Android Jetpack. Compose funciona de forma natural con este patrón: la interfaz se reconstruye automáticamente cada vez que el ViewModel notifica un cambio de estado.

1

Model

Entidades Room, EduDao, AppDatabase y EduRepository. Gestiona todos los datos persistentes.

2

ViewModel

GameViewModel con GameState. Controla volteo de cartas, parejas, preguntas, puntuación y temporizador.

3

View

LevelScreen, HomeScreen, GameScreen, ResultScreen y componentes reutilizables como MemoryCard.

Justificación arquitectónica

Separación de responsabilidades

La lógica del juego es independiente de la interfaz. Añadir un modo multijugador o estadísticas avanzadas no requeriría modificar las pantallas existentes.

Compatibilidad natural con Compose

Compose está pensado para modelos de estado inmutables y observables, encajando perfectamente con la gestión de estado del ViewModel.

Facilidad para pruebas

Testear el ViewModel sin depender de la interfaz resultó muy útil para validar la detección de parejas y la validación de respuestas.

Escalabilidad futura

El repositorio intermedio permitirá sustituir Room por Firestore sin reescribir la lógica del juego ni la interfaz.

Tecnologías utilizadas

Kotlin

Lenguaje oficial de Google para Android. Sintaxis expresiva, seguridad frente a nulos e integración natural con corutinas para el temporizador.

Jetpack Compose

Framework declarativo de UI. Actualiza la interfaz automáticamente al cambiar el estado. Facilita componentes reutilizables como las cartas del juego.

Room

Base de datos local oficial de Android. Consultas seguras con SQL, inicialización con datos predefinidos y soporte para Flow reactivo.

Navigation Compose

Gestión del flujo entre pantallas: nivel → categoría → partida → resultados. Flujo claro y estructurado.

Android Studio + Git

IDE con simuladores, inspector de Room y herramientas Compose. Control de versiones con repositorio privado en GitHub.

DALL-E 3

Generación de imágenes para las cartas del juego mediante IA, asegurando coherencia estética entre todas las temáticas.

Requisitos

Especificación de requisitos

Requisitos funcionales

RF1

Seleccionar nivel educativo y categoría temática, adaptando dificultad y preguntas.

RF2

Mostrar tablero de cartas ocultas adaptado al tamaño del dispositivo.

RF3

Voltear cartas y comprobar parejas, impidiendo más de dos volteos simultáneos.

RF4

Presentar pregunta tipo test al emparejar correctamente.

RF5

Validar respuestas: acierto mantiene cartas; fallo mezcla el tablero.

RF6–RF8

Gestionar temporizador, mostrar estadísticas finales y permitir reiniciar partida.

Requisitos no funcionales

RNF1

Compatibilidad con Android 8.0 (API 26) o superior.

RNF2

Rendimiento fluido: respuesta inferior a 100 ms en acciones clave.

RNF3

Interfaz intuitiva y accesible para estudiantes de distintas edades.

RNF4

Escalabilidad para integrar Firestore u otros servicios en la nube.

RNF5

Estabilidad ante interacciones rápidas o minimización de la app.

RNF6

Fiabilidad, robustez e integridad del sistema ante cualquier fallo.

Diseño del software

Diagrama de clases


Pantallas del juego


Navegación del juego


Diseño UX y gamificación

Para "disfrazar" el esfuerzo educativo de entretenimiento, se integraron elementos de gamificación seleccionados por su impacto directo en la conducta del alumnado.

Puntos

Recompensa inmediata que genera motivación extrínseca y fomenta la rejugabilidad para batir la propia marca.

Feedback inmediato

Mensajes de "¡Correcto!" o "Respuesta incorrecta" que reducen la frustración y anclan el conocimiento correcto en la memoria.

Estrellas de dificultad

Indican visualmente la complejidad de cada categoría, fomentando la autonomía y manteniendo al usuario en estado de "flujo".

Rachas

La "Mejor racha" activa la aversión a la pérdida, promoviendo atención sostenida y reflexión deliberada en lugar de pulsaciones impulsivas.

Victoria / Derrota

Estados claros de "Juego Completado" o "Tiempo Agotado" que proporcionan cierre psicológico y activan el efecto "solo un intento más".

Gestión de datos

Base de datos: estructura y persistencia

Entidades Room

LevelEntity

Niveles educativos disponibles.

CategoryEntity

Categorías temáticas con tiempo y número de parejas.

CardEntity

Cartas asociadas a cada categoría con su imageKey.

QuestionEntity

Preguntas tipo test vinculadas a cada carta y nivel.

Gestión del estado del juego

GameState inmutable

Toda la información dinámica (cartas volteadas, parejas, puntuación, temporizador, pregunta activa) se gestiona en un único objeto inmutable.

Cada actualización genera una nueva versión del estado, evitando inconsistencias en las recomposiciones de Compose.

EduRepository como puente

Transforma entidades Room en modelos de dominio listos para el ViewModel. Concentra la construcción del mazo, selección de imágenes y resolución de recursos.

Facilita la futura integración con Firestore sin alterar la lógica del juego.

Protección y estabilidad

No se permiten dos procesos simultáneos sobre el mismo estado. Las operaciones críticas (barajar, validar) se ejecutan en el hilo adecuado con corutinas.

El ViewModel preserva el estado ante cambios de orientación o pausas.

Pruebas

Plan de pruebas

Se diseñó un plan de pruebas combinando diferentes enfoques para garantizar estabilidad técnica y experiencia de usuario adecuada. Dedicación total: ~25 horas.

Unitarias

Lógica del GameViewModel y consultas a Room.

Integración

Cooperación entre Base de datos, Repositorio y ViewModel.

Interfaz (UI)

Pruebas manuales en emuladores y dispositivo físico Samsung Galaxy A52 (Android 14).

Trazabilidad

100% de RF y RNF cubiertos con casos de prueba específicos.

Ejemplo de uso de la aplicación

Loading...
Aportaciones

Principales aportaciones

Aportaciones técnicas

  • Aplicación nativa funcional desde cero con Kotlin, MVVM, Compose, Room y Navigation.
  • Arquitectura escalable: preparada para integrar Firestore sin reescribir la lógica.

Aportaciones pedagógicas

  • Gamificación del aprendizaje
  • Flexible y adaptable a cualquier materia o nivel educativo.
  • Demuestra que el juego puede ser una herramienta eficaz para aprender.

Aportaciones personales

  • Aprendizaje intensivo de Kotlin, Jetpack Compose y programación funcional.
  • Demostración de que la programación puede tener impacto educativo y social.
Trabajo futuro

Vías de trabajo futuro

La arquitectura modular de EduMemory facilita todas estas ampliaciones sin necesidad de reescribir la lógica central del juego ni la interfaz de usuario.

¡Gracias!

EduMemory demuestra que la programación y la educación pueden unirse para crear herramientas con impacto real en el aula.

Inés Araújo Gómez

Graduado en Ingeniería Informática · Universidade de Vigo · ESEI · Abril 2026

TFG Nº 25/26-17

Tutora: Lorena Otero Cerdeira · Co-Tutora: Encarnación González Rufino · Área: Lenguajes y Sistemas Informáticos

"Con EduMemory busco no solo el desarrollo de una aplicación funcional, sino también la capacidad de integrar diseño educativo, programación y una metodología de trabajo que dé lugar a un recurso con utilidad real en entornos de aprendizaje."

Made with