
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
Contexto educativo, motivación del proyecto y objetivos generales y específicos.
Resumen de la solución, metodología ágil, planificación temporal y patrón MVVM.
Stack tecnológico, análisis de requisitos, diseño estático y dinámico, gamificación.
Gestión de datos con Room, plan de pruebas, resultados y demostración del programa
Principales aportaciones técnicas y pedagógicas, conclusiones y líneas de mejora.
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?
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.
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.
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.
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.
Entidades Room, EduDao, AppDatabase y EduRepository. Gestiona todos los datos persistentes.
GameViewModel con GameState. Controla volteo de cartas, parejas, preguntas, puntuación y temporizador.
LevelScreen, HomeScreen, GameScreen, ResultScreen y componentes reutilizables como MemoryCard.
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.
Compose está pensado para modelos de estado inmutables y observables, encajando perfectamente con la gestión de estado del ViewModel.
Testear el ViewModel sin depender de la interfaz resultó muy útil para validar la detección de parejas y la validación de respuestas.
El repositorio intermedio permitirá sustituir Room por Firestore sin reescribir la lógica del juego ni la interfaz.
Lenguaje oficial de Google para Android. Sintaxis expresiva, seguridad frente a nulos e integración natural con corutinas para el temporizador.
Framework declarativo de UI. Actualiza la interfaz automáticamente al cambiar el estado. Facilita componentes reutilizables como las cartas del juego.
Base de datos local oficial de Android. Consultas seguras con SQL, inicialización con datos predefinidos y soporte para Flow reactivo.
Gestión del flujo entre pantallas: nivel → categoría → partida → resultados. Flujo claro y estructurado.
IDE con simuladores, inspector de Room y herramientas Compose. Control de versiones con repositorio privado en GitHub.
Generación de imágenes para las cartas del juego mediante IA, asegurando coherencia estética entre todas las temáticas.
Seleccionar nivel educativo y categoría temática, adaptando dificultad y preguntas.
Mostrar tablero de cartas ocultas adaptado al tamaño del dispositivo.
Voltear cartas y comprobar parejas, impidiendo más de dos volteos simultáneos.
Presentar pregunta tipo test al emparejar correctamente.
Validar respuestas: acierto mantiene cartas; fallo mezcla el tablero.
Gestionar temporizador, mostrar estadísticas finales y permitir reiniciar partida.
Compatibilidad con Android 8.0 (API 26) o superior.
Rendimiento fluido: respuesta inferior a 100 ms en acciones clave.
Interfaz intuitiva y accesible para estudiantes de distintas edades.
Escalabilidad para integrar Firestore u otros servicios en la nube.
Estabilidad ante interacciones rápidas o minimización de la app.
Fiabilidad, robustez e integridad del sistema ante cualquier fallo.



Para "disfrazar" el esfuerzo educativo de entretenimiento, se integraron elementos de gamificación seleccionados por su impacto directo en la conducta del alumnado.
Recompensa inmediata que genera motivación extrínseca y fomenta la rejugabilidad para batir la propia marca.
Mensajes de "¡Correcto!" o "Respuesta incorrecta" que reducen la frustración y anclan el conocimiento correcto en la memoria.
Indican visualmente la complejidad de cada categoría, fomentando la autonomía y manteniendo al usuario en estado de "flujo".
La "Mejor racha" activa la aversión a la pérdida, promoviendo atención sostenida y reflexión deliberada en lugar de pulsaciones impulsivas.
Estados claros de "Juego Completado" o "Tiempo Agotado" que proporcionan cierre psicológico y activan el efecto "solo un intento más".

Niveles educativos disponibles.
Categorías temáticas con tiempo y número de parejas.
Cartas asociadas a cada categoría con su imageKey.
Preguntas tipo test vinculadas a cada carta y nivel.
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.
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.
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.
Se diseñó un plan de pruebas combinando diferentes enfoques para garantizar estabilidad técnica y experiencia de usuario adecuada. Dedicación total: ~25 horas.
Lógica del GameViewModel y consultas a Room.
Cooperación entre Base de datos, Repositorio y ViewModel.
Pruebas manuales en emuladores y dispositivo físico Samsung Galaxy A52 (Android 14).
100% de RF y RNF cubiertos con casos de prueba específicos.


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