pág. 2462
APLICACIÓN DE ESCRITORIO PARA LA
GESTIÓN DE PLANES Y HORARIOS
ACADÉMICOS EN LA COORDINACIÓN DE
POSGRADOS EN LA MAESTRÍA EN
INGENIERÍA PARA LA INNOVACIÓN Y
DESARROLLO TECNOLÓGICO

DESKTOP APPLICATION FOR THE MANAGEMENT OF

ACADEMIC PLANS AND SCHEDULES IN GRADUATE

STUDIES COORDINATION IN THE MASTER'S DEGREE IN

ENGINEERING FOR INNOVATION AND TECHNOLOGICAL

DEVELOPMENT

Marcos David Chino Cuamacateco

Universidad Autónoma de Guerrero

Lucia Flores Ibañez

Universidad Autónoma de Guerrero

Ing. Cristian Omar Torres Chegue

Universidad Autónoma de Guerrero

Dr. Angelino Feliciano Morales

Universidad Autónoma de Guerrero

Dr. Rene Edmundo Cuevas Valencia

Universidad Autónoma de Guerrero
pág. 2463
DOI:
https://doi.org/10.37811/cl_rcm.v10i4.25274
Aplicación de escritorio para la gestión de planes y horarios académicos en
la coordinación de posgrados en la Maestría en Ingeniería para la
Innovación y Desarrollo Tecnológico

Marcos David Chino Cuamacateco
1
chinocuamacatecomarcosdavid@gmail.com

https://orcid.org/0009-0007-1637-3900

Universidad Autónoma de Guerrero

México

Lucia Flores Ibañez

luciafloresibanez234@gmail.com

https://orcid.org/0009-0006-9623-0450

Universidad Autónoma de Guerrero

México

Ing. Cristian Omar Torres Chegue

13005354@uagro.mx

https://orcid.org/0009-0000-1798-0912

Universidad Autónoma de Guerrero

México

Dr. Angelino Feliciano Morales

afmorales@uagro.mx

http://orcid.org/0000-0002-7707-7319

Universidad Autónoma de Guerrero

México

Dr. Rene Edmundo Cuevas Valencia

reneecuevas@uagro.mx

http://orcid.org/0000-0001-9528-7603

Universidad Autónoma de Guerrero

México

RESUMEN

La administración de horarios en posgrados de ingeniería implica resolver simultáneamente
restricciones de disponibilidad docente, asignación de aulas, distribución semestral de materias,
distinción entre tronco común y optativas, y coordinación entre Líneas de Investigación e Incidencia
Social (LIES). Este artículo describe la implementación de una aplicación de escritorio en Python con
Flet, que automatiza la gestión de planes de estudio y horarios en la Coordinación de Posgrado de la
Maestría en Ingeniería para la Innovación y Desarrollo Tecnológico (MIIDT) de la Universidad
Autónoma de Guerrero. El sistema adopta una arquitectura en capas y aplica Domain-Driven Design
(DDD): entidades con reglas explícitas, objetos de valor inmutables, especificaciones componibles y
reglas de validación encapsuladas. La persistencia se realiza con SQLAlchemy en MySQL, y la
exportación de horarios con ReportLab en PDF. La metodología siguió un enfoque iterativo-
incremental, con un backlog de ocho épicas ejecutado en seis sprints. Se espera que el sistema reduzca
un 90 % el tiempo requerido para la elaboración de horarios y elimine los conflictos de traslape mediante
validación automática en tiempo real. La validación técnica del software se realizó mediante 77 pruebas
automatizadas desarrolladas con Pytest, incluyendo pruebas unitarias, de integración y de fuerza bruta,
todas ejecutadas exitosamente.

Palabras clave: aplicación; gestión; administración; MIIDT; DDD.

1Autor principal.

Correspondencia:
reneecuevas@uagro.mx
pág. 2464
Desktop Application for the Management of Academic Plans and Schedules

in Graduate Studies Coordination in the Master's Degree in Engineering

for Innovation and Technological Development

ABSTRACT

Managing schedules in engineering graduate programs requires simultaneously solving constraints of

faculty availability, classroom allocation, semester
-based course distribution, distinction between core
and elective courses, and coordination among Researc
h and Social Impact Lines (LIES). This article
describes the implementation of a desktop application built in Python with Flet, which automates the

management of study plans and schedules at the Graduate Studies Coordination of the MIIDT at the

Universidad
Autónoma de Guerrero. The system adopts a layered architecture and applies Domain-
Driven Design (DDD): entities with explicit invariants, immutable value objects, composable

specifications, and encapsulated validation rules. Persistence is handled with SQ
LAlchemy over
MySQL, and schedule exports are produced with ReportLab in PDF. The methodology followed an

iterative
-incremental approach, with a backlog of eight epics executed across six sprints. The system is
expected to reduce the time required for sche
dule preparation by 90% and eliminate overlap conflicts
through real
-time automatic validation. The software's technical validation was carried out through 77
automated tests developed with Pytest, including unit, integration, and brute
-force tests, all executed
successfully.

Keywords:
implementation; management; administration; MIIDT; DDD.
Artículo recibido
13 mayo 2026
Aceptado para publicación: 2
1 junio 2026
pág. 2465
INTRODUCCIÓN

La programación de horarios en las universidades es, sin duda, una de las tareas administrativas más
complicadas de resolver: se trata esencialmente de un problema de satisfacción de restricciones
(Constraint Satisfaction Problem, CSP), definido por Russell y Norvig (2020) como aquel en el que un
conjunto de variables debe tomar valores dentro de un dominio finito sujetos a restricciones que limitan
las combinaciones válidas entre ellas, ya que exige coordinar al mismo tiempo distintos recursos
(docentes, aulas, periodos escolares y planes de estudio) cada uno sujeto a sus propias condiciones de
disponibilidad, compatibilidad y orden de precedencia. Según Bashab et al. (2023), este problema se
vuelve difícil en el nivel posgrado, donde influyen factores como la variedad de líneas de
especialización, las cargas de trabajo distintas entre docentes de tiempo completo y de asignatura, y la
necesidad de encajar las materias obligatorias del tronco común junto con las optativas.

La coordinación de posgrado de la Maestría en Ingeniería para la Innovación y Desarrollo Tecnológico
(MIIDT) de la Universidad Autónoma de Guerrero (UAGro) desde su creación en 2014 a operado
mediante procedimientos manuales en hojas de cálculo sin validación automática de restricciones (
traslape de horarios, asignación de aulas a varios docentes al mismo tiempo ,etc.), lo que generaba
errores frecuentes de traslape, inconsistencias entre planes de estudio y horarios publicados, y un alto
costo en tiempo administrativo.

Este trabajo describe la implementación de una solución que automatiza el ciclo completo: creación de
planes de estudio con sus líneas de especialización, asignación de materias a semestres, registro de
horarios con validación automática de restricciones en tiempo real, historial de horarios por periodo
escolar, consulta de carga horaria por docente y exportación de documentos PDF institucionales.
Después de analizar las diferentes propuestas de solución se llegó a la conclusión que la opción más
adecuada es una aplicación de escritorio para Windows construida con Python y Flet (motor de
renderizado de Flutter), con persistencia en MySQL a través de SQLAlchemy y una arquitectura en
capas cuyos principios de Domain-Driven Design siguen Özkan et al. (2025).

Antecedentes. Los sistemas de gestión de horarios universitarios se remontan a los años 1960, cuando
los primeros algoritmos de backtracking se aplicaron a la planificación de exámenes (citados en Bashab
et al., 2023). En las décadas de 1980 y 1990 surgieron los primeros Sistemas de Información de
pág. 2466
Estudiantes (SIS). Akour y Alenezi (2022) documentan la tendencia más amplia de transformación
digital de la educación superior a nivel mundial.

En la primera década del siglo XXI emergieron plataformas de segunda generación: Banner (Ellucian),
PeopleSoft Campus Solutions (Oracle) y SAP Student Lifecycle Management. Akour y Alenezi (2022)
señalan que la adopción de este tipo de sistemas institucionales de gran escala en la educación superior
está condicionada por su alto costo de licenciamiento y por la complejidad de su configuración, lo que
las vuelve poco accesibles para coordinaciones de posgrado con recursos limitados, como es el caso de
la MIIDT.

En el software libre, el proyecto FET (Free Timetabling Software) (Lalescu, 2024) resuelve el UCTP
mediante algoritmos heurísticos de asignación automática, pero está orientado principalmente a
educación básica y media, y carece de gestión de LIES, distinción tronco común/optativa, integración
con planes de estudio formales y generación de PDF con membrete personalizable.

Useche et al. (2022) observan que la adopción de sistemas de programación especializados en América
del Sur sigue siendo limitada en comparación con las plataformas generales, y algunos problemas en la
especialización no están claros. Por ejemplo, en México, el Sistema Integral de Información del TecNM
incluye horarios de licenciatura, pero no las particularidades de posgrado de SECIHTI, y en Guerrero el
Sistema Integral de Administración Escolar (SIAE) de la UAGro tampoco incluye LIES, categorización
de materias por tipo, o múltiples cohortes en el mismo plan de posgrado, lo cual es el tipo de brecha
funcional que motivó este proyecto.

Desde la ingeniería de software, Sangabriel-Alarcón et al. (2024) establecen el Diseño Guiado por el
Dominio (DDD): la lógica de negocio debe residir en el núcleo del dominio (en entidades con su propia
identidad y reglas, objetos de valor inmutables y especificaciones claras).

Santiago-Salazar y Rico-Bautista (2024) complementan este enfoque con evidencia empírica sobre la
Arquitectura Limpia: las capas están diseñadas de tal manera que sus dependencias siempre apuntan
hacia adentro (hacia el dominio) para aumentar la mantenibilidad en comparación con arquitecturas sin
esta separación. Este proyecto hace esto tal como se establece en el código fuente: los comentarios de
prohibición al inicio de cada módulo de dominio ('PROHIBIDO: importar Flet aquí', 'PROHIBIDO:
acceder a la base de datos aquí') son la manifestación concreta de la inversión de dependencias.
pág. 2467
Estado del arte. Bashab et al. (2023) revisaron 47 algoritmos de solución para el problema de
asignación de horarios universitarios conocido como University Course Timetabling Problem (UCTP,
por sus siglas en inglés) y concluyeron que los enfoques metaheurísticos (algoritmos de búsqueda
inteligente que exploran muchas combinaciones posibles sin garantizar la mejor solución, pero que la
encuentran en tiempos razonables), en el que se aborda los algoritmos genéticos, la búsqueda tabú
(algoritmos de optimización) y las colonias de hormigas (técnicas inspiradas en la naturaleza), superan
a los métodos exactos en instancias de tamaño real; el 62 % de los sistemas revisados aplican
restricciones duras y blandas.

De estos hallazgos se retoma únicamente la clasificación de restricciones: el sistema aquí desarrollado
valida solo restricciones duras, en tiempo real y mediante reglas de dominio explícitas; la incorporación
de metaheurísticas para la generación automática de horarios queda fuera de alcance y se plantea como
trabajo futuro.

Ceschia et al. (2023) realizan una revisión sistemática de las formulaciones estándar y los bancos de
pruebas (benchmarks) del problema de asignación de horarios educativos, identificando seis
formulaciones de referencia y reportando resultados del estado del arte en calidad de solución, técnicas
de búsqueda y tiempos de ejecución, este trabajo se retoma como referencia de los formatos y
restricciones típicas del problema de horarios que el sistema debe representar.

Zhong et al. (2024) encuentran que los sistemas con arquitectura en capas y patrón Repository son fáciles

de mantener que los sistemas sin esta separación. Con base en ese hallazgo, la arquitectura implementada
separa explícitamente las capas de Aplicación e Infraestructura, con el patrón Repository cubriendo todo
el acceso a datos. Sangabriel-Alarcón et al. (2024), en su revisión sistemática, documentan que el Diseño
Guiado por el Dominio (DDD) mejora la capacidad de mantenimiento cuando las reglas de negocio son
complejas y evolutivas, hallazgo aplicable a coordinaciones con múltiples LIES.

Percival y Gregory (2020), en su obra de referencia sobre patrones arquitectónicos en Python, muestran
que el patrón de Repositorio (Repository) junto con SQLAlchemy mantiene el dominio libre de
dependencia de infraestructura, lo que facilita las pruebas al reemplazar la base de datos real con
simulaciones en pruebas unitarias. Ese principio es el que permite, en la implementación descrita en el
pág. 2468
apartado de la metodología, que las clases HorarioRepository y PlanesRepository encapsulen el acceso
a MySQL sin que el dominio dependa de SQLAlchemy.

Useche et al. (2022) consideran que la llegada de la pandemia permitió la aceleración de la
transformación digital en instituciones latinoamericanas. Bajo ese panorama es en el que se ubica la
necesidad de la MIIDT de modernizar un proceso administrativo que seguía dependiendo de hojas de
cálculo sin automatización. García Yáñez et al. (2024) informan sobre una plataforma de programación
web para una universidad en Tampico, México, que reduce los errores de superposición. Romaguera et
al. (2024) describen un sistema web basado en un algoritmo genético mejorado cuya separación entre la
lógica de asignación y la interfaz facilita la iteración.

Ambos antecedentes comparten el objetivo de reducir errores de traslape mediante software, pero
ninguno modela las particularidades de un posgrado con Líneas de Investigación e Incidencia Social
(LIES) ni la distinción entre tronco común y optativas. Esa brecha funcional, no cubierta por ninguno
de los dos, es la que se atiende de forma específica en el sistema desarrollado (la comparación se retoma
con detalle más adelante).

Flet (2024) encuentra tiempos de renderizado de menos de 16 ms gracias al motor Flutter con un modelo
de componentes reactivo que prefiere separar la presentación de la lógica de negocio. Por ese motivo se
seleccionó Flet frente a Tkinter, PyQt5 o wxPython (otras bibliotecas para construir interfaces de
escritorio en Python) para construir la capa de presentación. Wahyudi et al. (2022) destacaron las
ventajas de MySQL para instituciones con recursos limitados, debido a que no requiere costos de
licenciamiento, soporta grandes volúmenes de información y ofrece compatibilidad multiplataforma,
características que justifican su selección en este proyecto.

Lukasczyk et al. (2023) demostraron que combinar técnicas de generación de pruebas en Python mejora
la cobertura (el porcentaje del código que efectivamente se ejecuta y verifica durante las pruebas) y
ayuda a detectar errores antes de la integración, lo que respalda la estrategia de pruebas unitarias, de
integración y de fuerza bruta adoptada en el desarrollo.

Özkan et al. (2025) concluyeron que, para organizaciones medianas, los sistemas monolíticos
(aplicaciones construidas como un solo programa unificado, más simples de instalar y mantener) con
buena separación de capas y DDD son más prácticos que las arquitecturas de microservicios, en términos
pág. 2469
de despliegue, costo e infraestructura. Sobre esa base se decidió construir el sistema como una aplicación
monolítica de escritorio en lugar de una arquitectura distribuida o de microservicios, dado el tamaño de
la coordinación y sus recursos institucionales.

Resumen del Estado del Arte. La Tabla 1 resume los antecedentes y trabajos del estado del arte
revisados, y para cada uno el autor, el nombre del trabajo, una breve descripción de cómo se
realizó este trabajo, las herramientas utilizadas y la relevancia del trabajo dentro del campo.

Tabla 1. Resumen de antecedentes y estado del arte.

Autor
Nombre del
trabajo
Descripción del trabajo Herramientas
utilizadas
Vigencia
Akour y
Alenezi
(2022)

Higher education
future in the era of
digital
transformation

Estudian la tendencia global
de transformación digital en
la educación superior y el
costo/complejidad de los SIS
de gran escala

Revisión
documental

2022
vigente,
referencia
general de
contexto

Bashab et al.
(2023)

Optimization

techniques in

university

timetabling problem

Revisión de 47 algoritmos
metaheurísticos para el
UCTP; clasifica restricciones
duras y blandas

Revisión
sistemática de
literatura

2023
vigente, área
de
investigación
activa

Ceschia et al.
(2023)

Educational

timetabling:

Problems,

benchmarks, and

state
-of-the-art
results

Revisión de las
formulaciones actuales y
evaluación comparativa del
problema de programación
educativa en su conjunto.

Revisión
sistemática de
literatura

2023
vigente

Flet (2024)

Flet: Build multi
-
platform apps in

Python powered by

Flutter

Documentación oficial del
framework de interfaz gráfica
utilizado para la capa de
presentación

Flet / Flutter
(Python)

2024
vigente,
versión activa
(0.28)

García Yáñez
et al. (2024)

Development of a
web-based
timetabling software

Plataforma de programación
web para una universidad
mexicana que reduce errores
de superposición

Desarrollo web
(working
paper)

2024
vigente
pág. 2470
Autor
Nombre del
trabajo
Descripción del trabajo Herramientas
utilizadas
Vigencia
for a Mexican
university

Lukasczyk et
al. (2023)

An empirical study
of automated unit
test generation for
Python

Estudio empírico sobre la
generación automatizada de
pruebas unitarias en Python y
su impacto en la cobertura

Herramientas
de generación
de pruebas en
Python

2023
vigente

Özkan et al.
(2025)

Domain
-Driven
Design in software

development: A

systematic literature

review

Revisión sistemática sobre
implementación, desafíos y
efectividad del DDD,
incluyendo su aplicabilidad a
sistemas monolíticos

Revisión
sistemática de
literatura

2025
vigente, la
más reciente
del corpus

Percival y
Gregory
(2020)

Architecture
patterns with Python

Trabajo de referencia sobre
patrones arquitectónicos
(Repositorio, Capa de
servicio) en Python con TDD
y DDD

Python,
SQLAlchemy

2020
vigente como
referencia
arquitectónica

Romaguera et
al. (2024)

Development of a

web
-based course
timetabling system

based on an

enhanced genetic

algorithm

Sistema de programación
web basado en un algoritmo
genético mejorado, con
separación entre lógica de
asignación e interfaz

Algoritmo
genético,
desarrollo web

2024
vigente

Sangabriel-
Alarcón et al.
(2024)

Domain
-Driven
Design in

microservices
-based
systems

development

Revisión sistemática y
análisis temático sobre DDD
y su efecto en la
mantenibilidad de reglas de
negocio complejas

Revisión
sistemática de
literatura

2024
vigente

Santiago-
Salazar y
Rico-Bautista
(2024)

Clean Architecture:

Impact on

Performance and

Maintainability of

Evidencia empírica sobre
Arquitectura Limpia y el
cambio de dependencias
hacia el dominio

Estudio
empírico de
caso

2024
vigente
pág. 2471
Autor
Nombre del
trabajo
Descripción del trabajo Herramientas
utilizadas
Vigencia
Native Android

Projects

Useche et al.
(2022)

Reflexive pedagogy
at the heart of
educational digital
transformation in
Latin American
higher education
institutions

Examinan la aceleración de la
transformación digital
educativa en Latinoamérica y
la adopción limitada de
software especializado

Revisión
documental

2022
vigente

Wahyudi et al.
(2022)

Database

Management

Education in

MYSQL

Muestran las ventajas de
MySQL (sin costo de
licencia, escalabilidad,
multiplataforma) con
requisitos mínimos y un bajo
costo para pequeñas
organizaciones

MySQL
2022
vigente

Zhong et al.
(2024)

Domain-Driven
Design for
microservices: An
evidence-based
investigation

Evidencia que las
arquitecturas en capas con el
patrón Repository
(Repositorio) son más fáciles
de mantener

Investigación
basada en
evidencia

2024
vigente

Después de la revisión y considerados en conjunto, estos antecedentes y trabajos del estado del arte
determinaron de manera directa las decisiones de diseño del sistema desarrollado. La revisión de
plataformas comerciales de gran escala y del proyecto FET (Antecedentes) evidenció una brecha
funcional específica de posgrado que ninguna solución existente, incluidas las de García Yáñez et al.
(2024) y Romaguera et al. (2024), cubre por completo, lo que justificó construir una aplicación propia
orientada a la MIIDT. De Bashab et al. (2023) y Ceschia et al. (2023) se retomó la clasificación de
restricciones duras y las formulaciones típicas del problema de horarios, sin adoptar metaheurísticas de
generación automática.
pág. 2472
De Zhong et al. (2024), Sangabriel
-Alarcón et al. (2024) y Santiago-Salazar y Rico-Bautista (2024) se
tomaron los principios de arquitectura en capas, DDD y Arquitectura Limpia que estructuran el sistema
(Dominio, Aplicación, Infraestructura, Presentación). Percival y Gregory (2020) fundamentaron el uso
del patrón Repository sobre SQLAlchemy, mientras que Flet (2024) y Wahyudi et al. (2022) sustentaron
la selección tecnológica de la capa de presentación y de la base de datos, respectivamente. Finalmente,
Lukasczyk et al. (2023) y Özkan et al. (2025) orientaron, en conjunto, la estrategia de pruebas
automatizadas y la decisión de construir una aplicación monolítica de escritorio en vez de una
arquitectura distribuida.

Problemática. La problemática de la coordinación de posgrado en la MIIDT incluía cinco dimensiones:
(1) construcción manual de horarios en hojas de cálculo sin validación automática, con traslapes
frecuentes de docentes y aulas; (2) desvinculación entre el plan de estudios formal y los horarios
operativos, construidos de forma independiente; (3) ausencia de historial estructurado de horarios por
periodo escolar; (4) tiempo de elaboración de tres a cinco días hábiles por periodo; y (5) generación
manual de documentos PDF de difusión sin membrete institucional estandarizado.

Objetivos. El objetivo principal de este trabajo es crear una aplicación de escritorio para la gestión de
planes de estudio y horarios académicos en la Coordinación de Posgrado de la Maestría en Ingeniería
para la Innovación y el Desarrollo Tecnológico (MIIDT) en la Universidad Autónoma de Guerrero
(UAGro) para la validación en tiempo real de restricciones y la exportación de documentos
estandarizados. Para lograr esto, proponemos modelar el sistema académico definiendo los elementos,
relaciones y reglas de negocio; construir una estructura en capas que favorezca la organización del
software; desarrollar un mecanismo de validación que encuentre automáticamente superposiciones entre
las materias de tronco común y optativas considerando diferentes Líneas de Investigación e Incidencia
Social (LIES); integrar un módulo para la generación de documentos en formato PDF con diseño
institucional; y validar el funcionamiento del sistema utilizando pruebas de software para asegurar la
calidad y fiabilidad de la aplicación.

METODOLOGÍA
pág. 2473
El proyecto se desarrolló bajo un enfoque iterativo e incremental cuyas cinco fases (Planificación;
Análisis y Diseño de Requisitos; Implementación; Pruebas y Validación; e Integración y Entrega) se
ejecutaron de forma cíclica en cada sprint (Figura 1).

Figura 1: Fases generales de la metodología iterativa e incremental aplicada al proyecto. Fuente
de elaboración propia

A continuación, se describen las fases generales de la metodología iterativa-incremental aplicada al
proyecto y mencionando la administración bajo la metodología scrum.

Fase 1: Planificación. El desarrollo se llevó a cabo mediante trabajo cercano y continuo con la
Coordinación de Posgrado de la MIIDT durante aproximadamente tres meses, en bloques de trabajo
cuyo incremento era revisado y priorizado por la coordinación al cierre de cada uno. En esta fase se
definió el alcance, se identificaron las líneas de trabajo (planes de estudio, catálogos, motor de
validación, generación de PDF) y se organizó el trabajo en épicas e historias de usuario. Todo el
desarrollo se realizó en Python, Liu et al. (2024) describen esta adopción generalizada y la gran cantidad
de bibliotecas y pruebas (incluyendo Pytest) disponible en Python 3.13; también proporcionan soporte
completo de types hints (sugerencias de tipo), que aparecen en las firmas de los métodos públicos en el
sistema.

Enfoque metodológico global. Lima et al. (2023) describen la filosofía general de desarrollo como
iterativa e incremental: cada sprint producía software funcional, probado y posiblemente entregable.
Esta filosofía fue implementada por Scrum (Schwaber y Sutherland, 2020): un backlog de ocho épicas
en seis sprint de 10 días desde el 9 de marzo hasta el 5 de junio de 2026 en un tablero Kanban de ocho
columnas en Trello (Backlog, Feature, Commits, Code/Design, Writing, Review, Testing, Done),
ilustrado en la Figura 2. Un miembro asumió el rol de Product Owner y el resto del equipo compartió
pág. 2474
los roles de Scrum Master y equipo de desarrollo, con ceremonias ligeras: planificación al inicio de un
sprint, seguimiento continuo en el tablero, revisión con el Product Owner al final de cada bloque, y
algunas retrospectivas.

Figura 2: Ciclo de metodología incremental e iterativa. Fuente de elaboración propia

El backlog agrupó 23 historias de usuario (HU1HU23) en ocho épicas (Tabla 2), derivadas de los
módulos funcionales identificados en la recolección de requisitos.

Tabla 2. Épicas del backlog de producto (8 épicas, 23 historias de usuario).

Épica
Nombre Alcance Historias de
usuario

EC1
Definición Técnica Selección justificada del stack tecnológico y
configuración del entorno de desarrollo compartido
HU1, HU2
EC2
Diseño y UX Diseño de las cuatro pantallas principales: Planes de
Estudio, Crear Plan, Horario Docente e Historial
HU3HU6
EC3
Base de Datos Diagramas ER/DR, script SQL, pruebas de integridad en
local y migración al servidor
HU7HU10
EC4
Gestión de Planes Creación, consulta, edición y validación de horarios HU11HU13,
HU16
pág. 2475
Épica
Nombre Alcance Historias de
usuario

EC5
Documentación Manual de usuario por pantalla y documentación técnica HU14, HU15
EC6
Gestión de Horarios Generación, visualización y exportación del horario por
docente
HU17, HU18
EC7
Historial de
Horarios
Consulta con filtros, gestión y exportación del historial HU19HU21
EC8
Pruebas y Calidad Validación funcional del sistema en producción y
corrección de errores
HU22, HU23
Fuente de elaboración propia.

La Tabla 3 detalla la distribución por sprint. El repositorio Git registra 20 ramas de tarea (task) en el
mismo periodo, cada una anidada dentro de una rama sprint; la diferencia frente a las 23 historias es
esperable, ya que algunas se resolvieron dentro de una misma rama.

Tabla 3. Distribución real del backlog en seis sprint de 10 días hábiles.

Sprint
Fechas Objetivo principal
Sprint 1
920 mar. 2026 Stack tecnológico, diseño de las primeras pantallas y
modelo de base de datos

Sprint 2
23 mar.3 abr. 2026 Entorno de desarrollo, diseño restante, migración de BD y
primer módulo funcional

Sprint 3
617 abr. 2026 Gestión de planes y horarios; arranque de la
documentación

Sprint 4
20 abr.2 may. 2026 Edición de planes, horario docente y cierre del manual de
usuario

Sprint 5
422 may. 2026 Exportaciones y módulo completo de historial de horarios
Sprint 6
25 may.5 jun. 2026 Validación funcional en producción y corrección de
errores

Fuente de elaboración propia
pág. 2476
Pressman y Maxim (2021) consideran este enfoque especialmente coherente en contextos académicos,
donde los requisitos evolucionan conforme los usuarios validan incrementos funcionales en sesiones
presenciales.

Fase 2: Análisis y Diseño de Requisitos. La recolección de requisitos empleó entrevistas
semiestructuradas con la coordinación, análisis de documentos (planes de estudio vigentes, horarios
históricos de cuatro periodos y formatos de membrete) y observación directa del proceso manual. Los
requisitos funcionales se agruparon en cinco módulos: (1) gestión de planes de estudio con niveles,
semestres, LIES y asignaciones materia-semestre; (2) gestión de recursos (docentes, aulas, periodos);
(3) generación y validación de horarios con detección automática de conflictos; (4) historial de planes
por periodo; y (5) exportación de PDF con timeline visual, tabla resumen y membrete personalizable.
Los requisitos no funcionales incluyeron un tiempo de respuesta de menos de dos segundos,
compatibilidad con Windows, instalación de aplicación sin servidor y código comprobable con
cobertura automatizada.

Figura 3: Diagrama de secuencia de la recolección de requisitos en la Fase 2. Fuente de elaboración
propia.

El diagrama (Figura 3) muestra cuatro actores (Equipo, Coordinación, Documentos y Proceso manual)
con la siguiente secuencia, transcrita tal como aparece en el diagrama fuente: "Entrevista
semiestructurada: Necesidades y proceso actual"; "Solicita documentos: Planes, horarios, membretes";
"Observación directa: Proceso manual registrado"; "Consolida hallazgos, Salida: documento de
requisitos, 5 módulos funcionales + requisitos no funcionales".

Fase 3: Implementación Arquitectura en Capas con DDD. Santiago-Salazar y Rico-Bautista (2024)
y Sangabriel-Alarcón et al. (2024) describen los principios de una arquitectura en capas con flujo de
dependencia unidireccional que se utilizan en el sistema (UI Aplicación Dominio
pág. 2477
Infraestructura): la capa de Infraestructura implementa las interfaces definidas por Aplicación. (Tabla
4).

Tabla 4. Distribución de responsabilidades por capa arquitectónica.

Capa
Directorio raíz Responsabilidades principales
Presentación
/ui
Vistas Flet, componentes reutilizables, navegador, builders
de filas, generadores de PDF

Aplicación
/application
Servicios, casos de uso, DTOs, interfaces de repositorio,
mapeadores, presentadores, contenedor DI

Dominio
/domain
Entidades, objetos de valor, especificaciones, reglas de
validación, excepciones. Sin dependencias externas.

Infraestructura
/infrastructure
Repositorios SQLAlchemy, modelos ORM (15 tablas),
conexión MySQL con python-dotenv

Fuente de elaboración propia.

Una regla explícita, documentada en los comentarios de cada módulo de dominio, prohíbe que cualquier
archivo de Dominio importe Flet o acceda directamente a la base de datos; se verificó en cada revisión
de código durante los seis sprint.

Implementación del Núcleo de Dominio: Constructos DDD. • Entidades. Özkan et al. (2025) señalan
que, en DDD, las entidades deben encapsular sus propias invariantes en el constructor en lugar de
delegar la validación a capas externas. Siguiendo ese principio, la entidad central es Horario, con
id_horario como identidad (nulo hasta persistir). Sus reglas, validadas en el constructor, garantizan
hora_inicio < hora_fin e id_asignacion > 0. Implementa traslape(otro), mismo_rango_que(otro),
calcular_duracion() y es_tronco_comun(). Docente y Aula son entidades secundarias representadas
como DTOs (Objectos de transferencia de datos) en la capa de aplicación.

• Objetos de Valor. Conforme al principio de objetos de valor inmutables descrito por Sangabriel-
Alarcón et al. (2024), estos elementos del sistema no tienen identidad propia. DiaSemana encapsula los
días válidos mediante un tipo enumerado; Hora representa HH:MM (24 h) con validación de rango y
pág. 2478
comparación completa, con en_minutos() para comparaciones de eficiencia. Periodo, Salón y Grupo
siguen el mismo patrón.

• Especificaciones. Sangabriel-Alarcón et al. (2024) describen el patrón de Especificación con una clase
base (Especificación) y las clases compuestas AndSpecification, OrSpecification y NotSpecification.
Las especificaciones concretas son HorarioDisponibleSpecification (sin superposiciones) y
TroncoConsistenteEntreLiesSpecification (asignaturas de tronco común con el mismo día, rango, aula
y profesor entre LIES).

• Reglas de Validación (HorarioValidator). Siguiendo el hallazgo de Zhong et al. (2024) sobre la
facilidad de modificación en las reglas de negocio cuando se encapsulan explícitamente fuera de las
capas de presentación e infraestructura, el HorarioValidator concentra cuatro reglas de negocio con un
enfoque equivalente al patrón Strategy: (1) cross-LIES de tronco, que exige coincidencia exacta en día,
hora, aula y docente; (2) tronco versus tronco, sin traslape en el mismo día y semestre; (3) optativa
versus tronco; y (4) optativa versus optativa dentro de la misma LIES. Toda divergencia lanza
HorarioConflictException. Las validaciones operan en memoria con una latencia inferior a 500 ms por
operación.

Implementación de la Capa de Aplicación. • Casos de Uso. De acuerdo con el patrón Service Layer
descrito por Percival y Gregory (2020), los casos de uso encapsulan cada operación:
CrearHorarioUseCase, EditarHorarioUseCase, EliminarHorarioUseCase y GuardarPlanUseCase. El
flujo de creación construye la entidad Horario desde el DTO, consulta los horarios conflictivos, aplica
las cuatro reglas del HorarioValidator, obtiene o crea el plan_generado y persiste con commit; las
excepciones de dominio se propagan sin capturarse en esta capa.

• Contenedor de Inyección de Dependencias. Conforme al argumento de Özkan et al. (2025) sobre la
conveniencia de soluciones simples frente a herramientas externas en organizaciones medianas, la clase
Container implementa un Service Locator minimalista sin frameworks externos, con dos ámbitos:
singleton de sesión para HorarioService y prototype para validadores sin estado. El adaptador
_HorarioServiceRepoAdapter permite que los casos de uso operen contra IHorarioRepository mientras
el repositorio MySQL migra progresivamente hacia dicha interfaz.
pág. 2479
• Estado de Sesión. En línea con el principio de inversión de dependencias hacia el dominio de Santiago-
Salazar y Rico-Bautista (2024), DetallePlanState centraliza el estado mutable de edición, incluido
ids_sesion_por_contexto (indexado por LIES y semestre), y almacena catálogos en memoria de aulas,
docentes y unidades de aprendizaje. Toda validación de reglas de negocio se realiza en el backend,
nunca en el estado de sesión.

Implementación de la Capa de Infraestructura. • Modelo de Base de Datos. Retomando las ventajas
de MySQL para instituciones con recursos limitados descritas por Wahyudi et al. (2022), la base de
datos contiene 15 tablas normalizadas hasta 3FN, en tres grupos: (1) estructura curricular:
nivel_academico, plan_estudios, semestres, detalle_semestre, tipo_materia, lies_horarios y la tabla
puente plan_lies; (2) catálogo de recursos: materias_tronco, optativas, asignacion_materia, docentes y
aulas; y (3) planificación operativa: periodo_escolar, plan_generado, horarios y detalle_horario. Una
restricción CHECK en asignacion_materia garantiza que cada asignación referencie exactamente una
materia de tronco común o una optativa, nunca ambas ni ninguna; los índices de detalle_horario están
optimizados para las consultas de traslape sobre (id_plan_generado, dia, hora_inicio, hora_fin). Thirtoft
(2024) desarrolla python-dotenv, biblioteca mediante la cual las credenciales de MySQL se reciben
exclusivamente por variables de entorno.

• Conexión y ORM. SQLAlchemy (2024) fue seleccionado por su madurez como toolkit SQL y Object
Relational Mapper(ORM), su soporte del patrón Repository mediante sesiones controladas y su
compatibilidad con MySQL vía PyMySQL sin dependencias de compiladores; Percival y Gregory
(2020) sostienen que el patrón Repository mantiene el dominio independiente de la tecnología de
persistencia; el sistema encapsula todas las consultas dentro de HorarioRepository, PlanesRepository y
PlanEstudiosRepository. MySQL se prefirió sobre PostgreSQL y SQLite por su disponibilidad
institucional. DatabaseConnection implementa Singleton con pool_pre_ping=True, y el driver
PyMySQL simplifica la instalación en Windows sin compiladores.

Implementación de la Capa de Presentación (Flet). La interfaz se construyó con Flet, que expone los
widgets de Flutter como clases Python. Su elección se apoya en tres ventajas: un modelo de componentes
reactivo que facilita separar presentación de lógica de negocio; ejecución como aplicación nativa de
escritorio sin servidor HTTP ni navegador; y tiempos de renderizado inferiores a 16 ms (Flet, 2024).
pág. 2480
Siguiendo la separación de capas con dependencias unidireccionales que describen Santiago-Salazar y
Rico-Bautista (2024), el sistema es Modelo-Vista-Controlador (MVC); las vistas solo renderizan y
capturan eventos; los controladores son responsables de la presentación. El sistema tiene componentes
reutilizables como TablaHorarios, SelectorDocente, BuscadorUnidad, ScrollTimePicker,
DialogConflictos, DropdownConNuevo, FilaHorario y ToolbarPlan, además de tokens de diseño
centralizados (Colores, Fuentes).

Implementación de la Generación de PDF. El módulo PDFGenerator utiliza la biblioteca de código
abierto ReportLab (2024) para generar documentos en formato carta, mediante primitivas gráficas de
bajo nivel que permiten construir un horario continuo con celdas de altura proporcional a la duración de
la sesión y una paleta de ocho colores pastel. El GestorMembrete gestiona la imagen institucional
personalizada sin almacenarla en la base de datos y la proporciona como un fondo de página completa.
La clase GeneradorPDFDocente genera una versión para cada profesor basada en su horario semanal.

Fase 4: Pruebas y Validación. Percival y Gregory (2020) sugieren la pirámide de pruebas que se siguen
en el proyecto: pruebas unitarias del dominio en aislamiento con mocks de repositorio, pruebas de
integración entre repositorios de SQLAlchemy y base de datos de prueba MySQL (fixtures en
conftest.py), y pruebas de fuerza bruta que toman todo el proceso desde la creación del plan hasta la
exportación del PDF. Conforme al hallazgo de Lukasczyk et al. (2023) sobre la mejora de cobertura al
ampliar deliberadamente los escenarios de prueba, un archivo dedicado contiene más de 20 escenarios
adicionales para las reglas cross-LIES desarrollados con Pytest (Krekel et al., 2024), incluyendo casos
de borde: asignación de la misma materia de tronco común en múltiples LIES con docente diferente
(debe rechazarse), asignación idéntica en todas las LIES (debe aceptarse) y traslape de optativas en LIES
distintas (debe aceptarse).

Fase 5: Integración y Entrega Estrategia de Ramificación GitFlow. Cortés Ríos et al. (2022), en
su marco unificador para el análisis sistemático de flujos de trabajo de Git, describen GitFlow como un
modelo de ramificación que aísla el trabajo de nuevas funcionalidades del código en producción
mediante ramas con propósitos específicos y reglas claras de fusión; el control de versiones del proyecto
se gestionó bajo este modelo. La jerarquía de ramas fue: main ← release ← qa ← dev ← sprint ←
feature ← task, tal y como se enlista en la tabla 5 y se visualiza en la figura 4.
pág. 2481
Tabla 5. Jerarquía de ramas de la estrategia GitFlow.

Rama
Propósito Origen Destino de fusión
main

Versión estable en producción; solo recibe
fusiones desde release

N/A
N/A
release

Preparación de versión; pruebas finales antes
de producción

dev
main + dev
qa

Entorno de pruebas de calidad; valida
funcionalidades integradas

dev
release
dev

Rama principal de desarrollo; integra las
features completadas

main
qa / release
sprint

Agrupa las features desarrolladas durante un
sprint de Scrum

dev
dev
feature/*

Desarrollo de una historia de usuario
derivada de una épica

sprint
sprint
task/*

Tarea atómica dentro de una feature (ajustes,
correcciones)

feature
feature
Fuente de elaboración propia
pág. 2482
Figura 4: Diagrama GitFlow: jerarquía de ramas del proyecto. Fuente de elaboración propia

Siguiendo la práctica de gestión segura de credenciales mediante variables de entorno que describe
Thirtoft (2024), el repositorio excluye del control de versiones los entornos virtuales, las credenciales
del archivo .env, la caché de pruebas y los PDF generados en tiempo de ejecución.

RESULTADOS Y DISCUSIÓN

Esta sección presenta los resultados de la implementación y validación del sistema en cuatro apartados:
primero, las funcionalidades implementadas y su recorrido por las pantallas principales; luego, se
reportan los resultados de las pruebas automatizadas que validan el correcto funcionamiento del motor
de reglas y los flujos completos; en tercer lugar, se compara el impacto operativo esperado con el proceso
manual anterior; y por último, se presentan las métricas generales del proyecto en términos de tamaño
y organización del código. Se comienza con las funcionalidades implementadas, ya que son la
manifestación visible de las decisiones arquitectónicas y de dominio descritas en la sección de
metodología.

Funcionalidades Implementadas. El sistema implementado cubre el ciclo de gestión académica del
posgrado a través de cuatro pestañas principales accesibles desde la vista de Planes.
pág. 2483
La pestaña Planes de estudios (figura 5) presenta el catálogo de planes activos e inactivos, con selector
de nivel académico y selector de plan. La animación de puerta señaliza la navegación hacia la vista de
detalle del plan seleccionado.

Figura 5: Pantalla principal, punto de acceso a los módulos. Fuente de elaboración propia

La figura 6 presenta la pestaña Crear plan, donde el usuario registra un nuevo plan de estudios indicando
el grado, el nombre del plan, la fecha de inicio, el membrete institucional y las materias, especificando
para cada una su tipo y semestre correspondiente.

Figura 6: Crear plan: registro de nuevo plan de estudios. Fuente de elaboración propia

La vista Detalle de plan que se muestra en la figura 7 es la más compleja del sistema. Presenta una tabla
editable de horarios para la LIES y el semestre activo, con selectores de docente, aula, día, hora de inicio
y hora de fin (mediante el componente ScrollTimePicker). Al confirmar una fila, el controlador invoca
pág. 2484
el caso de uso correspondiente (crear, editar o eliminar) y, si se detecta un conflicto, se activa el
DialogConflictos el cual despliega la descripción completa del tipo de restricción violada.

Figura 7: Generador de horarios: permite crear un horario correspondiente. Fuente de
elaboración propia

La pestaña Horario por docente (figura 8) muestra la carga horaria semanal de cualquier docente filtrada
según grado, período, semestre y plan, y permite exportar el comprobante individual en PDF.

Figura 8: Horario por docente: generación automática del horario de un docente. Fuente de
elaboración propia.

La pestaña Historial expuesta en la figura 9, presenta los planes generados por período con cascada de
filtros Grado → Período → Plan de estudios → Semestre, y permite acceder al horario de cualquier
período anterior para su eliminación o reexportación.
pág. 2485
Figura 9: Historial: consulta de horarios ya generados. Fuente de elaboración propia.

Antes de exportar, en la figura 10 el sistema muestra una vista previa del documento final con el
membrete institucional, la distribución semanal del horario y el listado de asignaturas.

Figura 10: Vista previa antes de exportar el documento. Fuente de elaboración propia.

Resultados de las Pruebas Automatizadas. Según la pirámide de pruebas descrita por Percival y
Gregory (2020) y aplicada en la fase de Pruebas y Validación, la Tabla 6 muestra los resultados de
menor a mayor nivel de detalle: primero pruebas unitarias solo en el dominio, luego pruebas de
integración entre los repositorios y la base de datos, seguidas de pruebas de extremo a extremo en todo
pág. 2486
el flujo del sistema y finalmente escenarios de validación cruzada LIES que utilizan específicamente la
Regla 1 del HoarioValidator. Para cada nivel, se informa el número de casos implementados, las
proporciones de casos exitosos y el alcance funcional cubierto para que se pueda verificar que la
cobertura de pruebas escala con la complejidad de la lógica de negocio validada.

Tabla 6. Resumen de pruebas automatizadas con Pytest.

Nivel de prueba

Casos
impl.

Exitosos
Ámbito cubierto
Unitarias (Dominio)
47 47 (100 %)
Entidades, Value Objects, Validator (4 reglas),
Caso de Uso Crear

Integración
(Repositorios)

18
18 (100 %)
HorarioRepository, PlanesRepository con BD
MySQL de prueba

Extremo a extremo
12 12 (100 %)
Flujo completo: crear plan → asignar horario →
detectar conflicto → exportar PDF

Validación cross-LIES
(tronco)

> 20
100 %
Casos de borde Regla 1: coincidencia exacta,
docente diferente, aula diferente

TOTAL
≥ 97 100 %
Cobertura de todos los escenarios críticos de
negocio

Fuente de elaboración propia.

Impacto Operativo (esperado). El sistema aún no se ha puesto en operación durante un ciclo escolar
completo. Los valores presentados en la Tabla 7 corresponden a la mejora esperada, calculada a partir
de la comparación entre el proceso manual actual y el tiempo observado del sistema en pruebas
controladas; la validación en un ciclo real será parte del trabajo futuro.
pág. 2487
Tabla 7. Comparación entre el proceso manual actual y el desempeño esperado del sistema.

Indicador
Proceso manual (antes)
Sistema automatizado
(esperado)

Tiempo elaboración
horario completo

35 días hábiles

24 horas (reducción esperada 90
%)

Detección de traslapes

Manual, revisión por 2 personas (1
día)

Automática, tiempo real (< 500
ms)

Generación de PDF de
horario

Manual, diseño en procesador de
textos

< 3 segundos, automático

Consistencia planhorario

Sin garantía (proceso
independiente)

Garantizada por la arquitectura

Historial de períodos
anteriores

Archivos dispersos, sin estructura

Centralizado, consultable por
cascada de filtros

Fuente de elaboración propia.

El proyecto consta de 113 archivos Python propios del sistema (excluyendo el entorno virtual),
distribuidos en 4 capas y 22 módulos (figura 11). Los módulos de mayor complejidad son
horario_service.py, detalle_plan_view.py y horario_repository.py. El repositorio Git registra 20 ramas
de tarea con nombres Task-DD-MM-AAAA, integrando ramas Feature y QA en paralelo, y mantiene cero
warnings de importación cruzada entre capas a lo largo de los seis sprint.
pág. 2488
Figura 11: Estructura de directorios del proyecto, organizada por capas (Presentación,
Aplicación, Dominio, Infraestructura). Fuente de elaboración propia.

Comparación con Sistemas Similares. Frente al proceso manual previo, el sistema está diseñado para
eliminar los errores de traslape mediante validación automática en cuatro capas de restricción, con una
reducción esperada del tiempo administrativo cercana al 90%. A diferencia de soluciones genéricas
como FET (Lalescu, 2024), el sistema fue diseñado específicamente para satisfacer las especificidades
del programa de posgrado MIIDT (gestión de LIES, distinción entre tronco común/optativa, lógica
cruzada de LIES (cross-LIES) y membrete institucional) sin configuración compleja.

En contraste con los sistemas reportados por García Yáñez et al. (2024) y Romaguera et al. (2024), el
sistema se basa en una lógica única y universal. En el sistema la implementación de DDD
(especificaciones combinables, reglas de entidad documentadas, excepciones de dominio con semántica
precisa) es más clara y robusta para reglas de negocio complicadas. A diferencia de los sistemas web,
la solución es una aplicación de escritorio, por lo que el acceso está restringido al control remoto sin
necesidad de utilizar ninguna red o entorno adicional.

Limitaciones Actuales. El sistema tiene cuatro limitaciones según se evaluó esto, a saber: (1) la base
de datos se ejecuta en localhost y se necesita usar un servidor MySQL compartido para acceder a ella
desde diferentes dispositivos al mismo tiempo, (2) no implementa autenticación basada en roles donde
pág. 2489
cualquier usuario tiene acceso a la base de datos y puede cambiar los horarios, (3) el motor de validación
solo funciona con las reglas en el código y no se agregan más restricciones desde la interfaz, y (4) el
sistema permite la generación manual de los horarios validados pero no genera automáticamente el
horario basado en metaheurísticas.

Trabajo Futuro. Las mejoras incluyen la migración del sistema a una arquitectura web basada en
FastAPI y React o Next.js utilizando la interfaz IHorarioRepository ya definida; la adición de un módulo
de autenticación con JWT para coordinadores, personal administrativo y docentes; la integración de
algoritmos genéticos y búsqueda tabú para la generación automática de horarios, como lo propuesto por
Bashab et al. (2023), con el SIAE de UAGro a través de APIs REST; y el desarrollo de un módulo de
informes estadísticos para monitorear la carga docente y el uso de aulas utilizando la estructura de las
quince tablas normalizadas. Dado que esta integración expondría datos académicos sensibles a través
de una API REST, dicho desarrollo debe tener en cuenta los riesgos de seguridad y la herramienta de
monitoreo basada en el enfoque orientado a datos propuesto por Valencia (2025) para la misma
coordinación. Específicamente, detecta el riesgo API4:2023 - Consumo de Recursos Sin Restricciones
del top 10 de OWASP y genera alertas en caso de fugas de datos.

CONCLUSIONES

El sistema de gestión de planes académicos y horarios para la Coordinación de Posgrado en Ingeniería
de la MIIDT cumple con los objetivos. La aplicación construida en Python y Flet muestra cómo se puede
construir software académico con rigor arquitectónico (cuatro capas, Diseño Orientado al Dominio,
inyección de dependencias, patrón de Repositorio) en código abierto y sin costos de licencia.

La separación entre el núcleo del dominio y la infraestructura se verifica en cada revisión de sprint y las
cuatro reglas de validación de horarios pueden cambiarse o ampliarse sin afectar las capas de
presentación e infraestructura, lo cual es importante en un contexto donde las reglas de negocio cambian
con cada actualización de plan de estudios o la estructura del LIES.

Se estima una reducción de casi el 90% en el tiempo de preparación de horarios, una latencia de
validación de menos de 500 ms y una lista de 77 pruebas automatizadas exitosas. El proyecto está
disponible bajo la licencia MIT (Open Source Initiative, s.f.), una de las licencias permisivas más
populares en el software académico y de código abierto, debido a sus requisitos mínimos de
pág. 2490
cumplimiento (mantener el aviso de derechos de autor y permiso), el uso, copia, modificación y
redistribución del código sin restricciones adicionales; esto facilita que otras coordinaciones de posgrado
en universidades públicas adopten, adapten y reutilicen el sistema como un estudio de caso sin incurrir
en costos de licencias.

REFERENCIAS BIBLIOGRÁFICAS

Akour, M., & Alenezi, M. (2022). Higher education future in the era of digital transformation. Education
Sciences, 12(11), 784.
https://doi.org/10.3390/educsci12110784
Bashab, A., Ibrahim, A. O., Hashem, I. A. T., Aggarwal, K., Mukhlif, F., Ghaleb, F. A., &
Abdelmaboud, A. (2023).
Optimization techniques in university timetabling problem:
Constraints, methodologies, benchmarks, and open issues. Computers, Materials & Continua,

74(3), 6461
6484. https://doi.org/10.32604/cmc.2023.034051
Ceschia, S., Di Gaspero, L., & Schaerf, A. (2023). Educational timetabling: Problems, benchmarks, and

state
-of-the-art results. European Journal of Operational Research, 308(1), 118.
https://doi.org/10.1016/j.ejor.2022.07.011

Cortés Ríos, J. C., Embury, S. M., & Eraslan, S. (2022).
A unifying framework for the systematic
analysis of Git workflows. Information and Software Technology, 145, 106811.

https://doi.org/10.1016/j.infsof.2021.106811

Flet. (2024). Flet: Build multi
-platform apps in Python powered by Flutter (Version 0.28) [Software].
https://flet.dev

García Yáñez, J. A., Ramírez Sáenz, F. D. J., Ríos Saldaña, E. L., Rubio Aguilar, M. A., Barrios Flores,
I. E., García Flores, C. L., Hernández Cerda, R. E., & Zacarías Ortiz, J. J. (2024).
Development
of a web
-based timetabling software for a Mexican university. Working Paper WP-2024-006,
Center for the Study of Western Hemispheric Trade, Texas A&M International University.

https://www.tamiu.edu/cswht/documents/wp-2024-006-garcia-yanez.pdf

Krekel, H., Oliveira, B., Pfannschmidt, R., Bruynooghe, F., Laugher, B., & Bruhin, F. (2024).
Pytest:
Helps you write better programs (Version 8.x) [Software].
https://docs.pytest.org
Lalescu, L. (2024). FET: Free Timetabling Software [Software].
https://lalescu.ro/liviu/fet/
pág. 2491
Lima, C. R. C., Carr, C. N., Margarido, J. J. P., & Silva, R. D. (2023). O modelo incremental no
desenvolvimento de software: Uma maneira estruturada e interativa de entregar produtos de
qualidade. Research, Society and Development, 12(4), e7512440934.

https://doi.org/10.33448/rsd-v12i4.40934

Liu, M., Huang, X., He, W., Xie, Y., Zhang, J. M., Jing, X., Chen, Z., & Ma, Y. (2024). Research

artifacts in software engineering publications: Status and trends. Journal of Systems and

Software, 213, 112032.
https://doi.org/10.1016/j.jss.2024.112032
Lukasczyk, S., Kroiß, F., & Fraser, G. (2023). An empirical study of automated unit test generation for
Python. Empirical Software Engineering, 28(2), 36.
https://doi.org/10.1007/s10664-022-10248-
w

Open Source Initiative.
(s.f.). The MIT License. https://opensource.org/license/mit
Özkan, O., Babur, Ö., & van den Brand, M. (2025). Domain
-Driven Design in software development:
A systematic literature review on implementation, challenges, and effectiveness. Journal of

Systems and Software, 230, 112537.
https://doi.org/10.1016/j.jss.2025.112537
Percival, H., & Gregory, B. (2020). Architecture patterns with Python: Enabling test
-driven
development, domain
-driven design, and event-driven microservices. O'Reilly Media.
Pressman, R. S., & Maxim, B. R. (2021). Ingeniería del software: Un enfoque práctico (9.ª ed.).
McGraw-Hill Education.

Python Software Foundation. (2024). What's new in Python 3.13.

https://docs.python.org/3/whatsnew/3.13.html

ReportLab. (2024). ReportLab open-source PDF library (Version 4.x) [Software].

https://www.reportlab.com/opensource/

Romaguera, D., Plender-Nabas, J., Matias, J., & Austero, L. (2024).
Development of a web-based course
timetabling system based on an enhanced genetic algorithm.
Procedia Computer Science, 234,
17141721.
https://doi.org/10.1016/j.procs.2024.03.177
Russell, S. J., & Norvig, P. (2020). Artificial Intelligence: A Modern Approach (4.ª ed.). Pearson.

Sangabriel-Alarcón, J., Ocharán-Hernández, J. O., Cortés-Verdín, K., & Limón, X. (2024).
Domain-
Driven Design in microservices
-based systems development: A systematic literature review and
pág. 2492
thematic analysis. Programming and Computer Software, 50(8), 742
770.
https://doi.org/10.1134/S0361768824700749

Santiago
-Salazar, J. A., & Rico-Bautista, D. (2024). Clean Architecture: Impact on Performance and
Maintainability of Native Android Projects. In Advances in Computing (CCC 2023),

Communications in Computer and Information Science, vol. 1924. Springer, Cha
m.
https://doi.org/10.1007/978
-3-031-47372-2_8
Schwaber, K., & Sutherland, J. (2020). The Scrum Guide: The definitive guide to Scrum: The rules of

the game. Scrum.org.
https://scrumguides.org/docs/scrumguide/v2020/2020-Scrum-Guide-
US.pdf

SQLAlchemy. (2024). SQLAlchemy 2.0: The Python SQL toolkit and Object Relational Mapper

[Software].
https://docs.sqlalchemy.org/en/20/
Thirtoft, J. (2024). python
-dotenv: Read key-value pairs from a .env file (Version 1.0) [Software].
https://github.com/theskumar/python-dotenv

Useche, A. C., Galvis, Á. H., Díaz-Barriga Arceo, F., Patiño Rivera, A. E., & Muñoz-Reyes, C. (2022).

Reflexive pedagogy at the heart of educational digital transformation in Latin American higher

education institutions. International Journal of Educational Technology in Higher Education,

19, 62.
https://doi.org/10.1186/s41239-022-00365-3
Valencia, R. E. C., Villegas, A. C., Morales, A. F., & Carmona, C. Á. (2025). Monitoring Software Tool
to Prevent Data Leaks in a RESTful API. In R. Valencia-García, T. Borodulina, J. Del Cioppo-
Morstadt, C. E. Moran-Castro, & N. Vera-Lucio (Eds.), Technologies and Innovation.
CITI
2024, Communications in Computer and Information Science, vol. 2276. Springer, Cham.

https://doi.org/10.1007/978-3-031-75702-0_14

Wahyudi, J., Asbari, M., Sasono, I., Pramono, T., & Novitasari, D. (2022).
Database Management
Education in MYSQL. Edumaspul: Jurnal Pendidikan, 6(2), 2413
2417.
https://doi.org/10.33487/edumaspul.v6i2.4570

Zhong, C., Li, S., Huang, H., Liu, X., Chen, Z., Zhang, Y., & Zhang, H. (2024). Domain
-Driven Design
for microservices: An evidence
-based investigation. IEEE Transactions on Software
Engineering, 50(6), 1425
1449. https://doi.org/10.1109/TSE.2024.3385835