scieee AI-readable full text Open interactive document viewer

Interfaz web para MAUDE

Pedro José Pérez Vasco

Abstract

Este proyecto desarrolla una aplicación web con el objetivo de simplificar el uso de la biblioteca Maude, una herramienta poderosa pero compleja que se ejecuta exclusivamente en sistemas basados en Linux. Mediante el uso del framework Django y una biblioteca de bindings de Maude en Python, se ha creado una interfaz accesible para interactuar con esta tecnología, facilitando su uso en un entorno educativo. La aplicación permite analizar y adaptar los comandos de Maude para que puedan ser utilizados de forma intuitiva, apoyando la docencia del lenguaje. El sistema utiliza SQLite3 como base de datos para almacenar la información y se despliega en la plataforma PythonAnywhere, aprovechando su facilidad de configuración para ofrecer una solución práctica y eficiente. Este enfoque mejora la usabilidad para los usuarios, además de mejorar la accesibilidad y utilidad de Maude en el ámbito educativo.

Full text

INTERFAZ WEB PARA MAUDE WEB INTERFACE FOR MAUDE TRABAJO FIN DE GRADO CURSO 2023-2024 AUTOR PEDRO JOSÉ PÉREZ VASCO DIRECTOR ADRIÁN RIESCO RODRÍGUEZ GRADO EN INGENIERÍA DEL SOFTWARE FACULTAD DE INFORMÁTICA UNIVERSIDAD COMPLUTENSE DE MADRID III INTERFAZ WEB PARA MAUDE WEB INTERFACE FOR MAUDE TRABAJO DE FIN DE GRADO EN INGENIERÍA DEL SOFTWARE AUTOR PEDRO JOSÉ PÉREZ VASCO DIRECTOR ADRIÁN RIESCO RODRÍGUEZ CONVOCATORIA: SEPTIEMBRE 2024 GRADO EN INGENIERÍA DEL SOFTWARE FACULTAD DE INFORMÁTICA UNIVERSIDAD COMPLUTENSE DE MADRID 3 DE SEPTIEMBRE DE 2024 V VII RESUMEN Interfaz web para Maude Este proyecto desarrolla una aplicación web con el objetivo de simplificar el uso de la biblioteca Maude, una herramienta poderosa pero compleja que se ejecuta exclusivamente en sistemas basados en Linux. Mediante el uso del framework Django y una biblioteca de bindings de Maude en Python, se ha creado una interfaz accesible para interactuar con esta tecnología, facilitando su uso en un entorno educativo. La aplicación permite analizar y adaptar los comandos de Maude para que puedan ser utilizados de forma intuitiva, apoyando la docencia del lenguaje. El sistema utiliza SQLite3 como base de datos para almacenar la información y se despliega en la plataforma PythonAnywhere, aprovechando su facilidad de configuración para ofrecer una solución práctica y eficiente. Este enfoque mejora la usabilidad para los usuarios, además de mejorar la accesibilidad y utilidad de Maude en el ámbito educativo. Palabras sugeridas: Aplicación Web, Maude, Django, Python, Bindings de Maude, SQLite3, PythonAnywhere, Interfaz Educativa, Accesibilidad, Linux. IX ABSTRACT Web interface for Maude This project develops a web application aimed at simplifying the use of the Maude library, a powerful but complex tool that runs exclusively on Linux-based systems. By utilizing the Django framework and a Maude bindings library in Python, an accessible interface has been created to interact with this technology, facilitating its use in an educational environment. The application allows for parsing and adapting Maude commands to be used intuitively, supporting the teaching of the language. The system uses SQLite3 as a database to store information and is deployed on the PythonAnywhere platform, taking advantage of its ease of configuration to offer a practical and efficient solution. This approach enhances usability for users, as well as improving the accessibility and usefulness of Maude in the educational field. Suggested Keywords: Web Application, Maude, Django, Python, Maude Bindings, SQLite3, PythonAnywhere, Educational Interface, Accessibility, Linux 4 9. Funcionalidades avanzadas de búsqueda y filtrado: Implementar buscadores y filtros en las vistas del market, tareas de alumnos, y entregas, permitiendo buscar por nombre, fecha de creación, y otros criterios relevantes. 1.3 Plan de trabajo Una planificación cuidadosa es esencial para el éxito de cualquier proyecto de desarrollo de software. A continuación, se detalla la planificación seguida durante el desarrollo del proyecto, como podemos ver en la figura 1, desde la fase inicial de investigación hasta la implementación final y las pruebas. 1.3.1 Fase de Investigación Preliminar La fase inicial del proyecto consistió en una investigación exhaustiva para entender los fundamentos y el contexto técnico del mismo. Dado que Maude es un lenguaje formal especializado, fue esencial adquirir un conocimiento sólido sobre sus características y comandos antes de proceder con la implementación. • Investigación sobre Maude: Se comenzó por explorar qué es Maude, cuál es su propósito, y qué tipos de comandos son los más relevantes para implementar en este proyecto. Esta investigación incluyó la revisión de la documentación oficial, así como la consulta de recursos académicos y ejemplos de uso práctico. • Exploración de los bindings de Maude en Python: Una vez comprendido el entorno de Maude, se pasó a investigar cómo este se puede integrar con Python. Se evaluaron los bindings disponibles para Python, identificando cómo traducir los comandos de Maude a un formato compatible que pueda ser ejecutado desde Python. Figura 1 - Cronograma de la planificación 5 • Estudio de Django: Dado que el desarrollo del proyecto se realizaría utilizando Django, fue necesario adquirir conocimientos básicos y avanzados sobre este framework. A pesar de no haber trabajado previamente con Django, se invirtió tiempo en comprender su estructura, patrones de diseño y componentes clave, lo que sentó las bases para una implementación eficiente. Duración estimada: 2 semanas. 1.3.2 Implementación Inicial Con una base teórica sólida, la siguiente etapa fue iniciar el desarrollo del proyecto. Esta fase se centró en crear las primeras vistas y funcionalidades básicas de la aplicación. • Desarrollo de la Vista de Home: La vista principal de la aplicación, que permite la ejecución de comandos de Maude y la visualización de sus resultados, fue la primera en ser implementada. Se diseñó y desarrolló esta vista para que los usuarios pudieran interactuar directamente con el sistema desde el inicio. • Pruebas de la Vista de Home: Una vez completada la implementación inicial, se realizaron pruebas para asegurar que la funcionalidad básica estuviera operativa. Las pruebas consistieron en verificar que los comandos de Maude se ejecutaran correctamente y que los resultados se mostraran como se esperaba. Duración estimada: 1.5 semanas. 1.3.3 Desarrollo de Funcionalidades Adicionales Con la vista principal en funcionamiento, la atención se centró en expandir la funcionalidad de la aplicación mediante el desarrollo de otras vistas esenciales y características adicionales. 6 • Desarrollo de la Vista de Registro y Login: Se implementaron las funcionalidades de autenticación de usuarios, incluyendo el registro y el inicio de sesión. Esta fase fue crucial para gestionar la seguridad y personalización del acceso a la plataforma. • Desarrollo de la Vista de Recuperación de Contraseña: Se añadió la funcionalidad que permite a los usuarios recuperar sus contraseñas en caso de olvido, mejorando la experiencia de usuario y la seguridad de la plataforma. • Desarrollo de la Vista de Market de Módulos: Esta vista permite a los usuarios gestionar módulos de Maude. Se incluyó la capacidad de crear, modificar, activar/desactivar y eliminar módulos, ofreciendo un control detallado sobre los recursos disponibles en la plataforma. • Desarrollo de la Vista de Mis Tareas: Se creó una interfaz donde los usuarios pueden visualizar y gestionar sus entregas de tareas, accediendo a detalles específicos de cada una. • Desarrollo de la Vista de Entregas Pendientes e Historial de Entregas Corregidas: Estas vistas se diseñaron para facilitar el proceso de corrección de tareas por parte de los administradores, permitiéndoles gestionar entregas pendientes y revisar el historial de entregas corregidas. Duración estimada: 4 semanas. 1.3.4 Pruebas y Validación Una vez completada la implementación de las vistas y funcionalidades, se procedió a una fase exhaustiva de pruebas y validación para garantizar la calidad del software. • Pruebas Unitarias y de Integración: Se ejecutaron pruebas unitarias en cada componente desarrollado, así como pruebas de integración para asegurar que todos los elementos de la aplicación funcionaran de manera conjunta y sin conflictos. 7 • Corrección de Bugs: Durante la fase de pruebas, se identificaron y corrigieron varios errores, asegurando la estabilidad y fiabilidad del sistema antes de su despliegue. • Ajustes Finales: Basándose en los resultados de las pruebas y el feedback recibido, se realizaron ajustes finales en la aplicación para optimizar su funcionamiento y mejorar la experiencia de usuario. Duración estimada: 2 semanas. 1.3.5 Gestión de Cambios e Imprevistos Durante el desarrollo del proyecto, surgieron imprevistos que requirieron ajustes en la planificación original. Esta fase se centró en gestionar estos cambios de manera efectiva para minimizar su impacto en el cronograma general. • Implementación de la Funcionalidad de Modificación de Módulos: Una de las modificaciones significativas fue la implementación de una nueva estructura de módulos con tres modos, como se detalló previamente. Esta funcionalidad se incorporó tras identificar la necesidad de ofrecer mayor flexibilidad en la gestión de los módulos. • Gestión de Cambios: Se documentaron todos los cambios realizados, ajustando el cronograma y el alcance del proyecto según las nuevas necesidades o descubrimientos realizados durante el desarrollo. Duración estimada: 1 semana. 1.4 Repositorio del Proyecto Con el fin de asegurar la accesibilidad y transparencia del código fuente desarrollado en este proyecto, se ha utilizado GitHub para alojar el repositorio de código. En este repositorio 1 se encuentran todas las versiones del software, documentadas de manera sistemática a través de commits que reflejan cada etapa 1 Repositorio de github del proyecto: https://github.com/Tarusito/web_maude 8 del desarrollo. El repositorio está disponible públicamente y contiene instrucciones para la instalación y uso de la aplicación, facilitando así su adopción y futura extensión por parte de otros desarrolladores e investigadores. Además, la aplicación se puede encontrar desplegada en esta página 2 . 2 Página web de la aplicación: https://maudeweb.pythonanywhere.com 9 Introduction The project planning was structured around three key aspects: the motivation behind its development, the objectives that guided each implementation phase, and the work plan that was followed to achieve these objectives. These aspects are detailed below, providing a clear and comprehensive framework to understand how the project was approached from its conception to execution. Motivation Maude is a tool based on rewrite logic, widely used for modeling complex systems and performing formal verifications. However, its use is predominantly restricted to Linux environments, which represents a significant barrier to its adoption in educational contexts. Students who are not familiar with Linux face considerable challenges in installing, configuring, and using Maude, limiting its accessibility and usefulness in academic settings where platform diversity is common. In addition to being limited to a specific operating system, Maude presents a steep learning curve due to the complexity of its command-line interface. This complexity requires an advanced level of technical knowledge, both in handling terminals and in understanding the fundamentals of rewrite logic and algebraic programming. As a result, many potential users, especially those with less experience in these fields, feel demotivated. This situation not only hinders self-directed learning but also complicates the integration of Maude into formal curricula, where more accessible tools are preferred. Given the relevance of Maude and the aforementioned barriers, the need arises to develop a solution that makes this tool more accessible and easier to use. A webbased approach, utilizing an application that operates on multiple platforms, would considerably simplify interaction with Maude. By offering an intuitive and user-friendly graphical interface, this solution would allow users to interact with Maude without needing to master the command line or worry about operating system limitations. Thus, the technical barriers that currently limit its adoption would be removed, and its use would be expanded to a broader audience. 10 Implementing a tool that facilitates access to and use of Maude in an educational environment would have a significant impact. By allowing students and teachers to interact more directly and easily with the tool, greater interest could be fostered in the advanced concepts that Maude enables them to explore. This new approach would not only facilitate the teaching and learning of formal logic and rewriting but also integrate Maude into a wider range of academic disciplines. This, in turn, could increase understanding and mastery of these concepts among students, better preparing them to face complex challenges in their future careers. This project reflects my interest in teaching and technology, as well as my commitment to improving the educational tools available in the field of formal languages and logic. By developing a solution that makes Maude more accessible and usable, I am not only contributing to the academic community but also advancing my goal of simplifying the learning of complex concepts through the use of innovative technologies. This project represents a significant step towards creating educational resources that are both effective and inclusive, facilitating learning for a new generation of students. Objectives The main objective of this project is to develop an accessible and user-friendly web interface that facilitates interaction with Maude. This application is designed to significantly simplify the use of Maude in educational environments, allowing users to execute commands and manage modules intuitively, without the need for advanced command-line knowledge or the installation of the library in a Linux environment. By providing a complete web solution, this project aims to make the Maude language more accessible to both students and teachers, reducing technical barriers and promoting its adoption in teaching and learning. To achieve the main objective, the following sub-objectives have been outlined: 1Syntactic analysis of Maude commands: Implement a system that translates Maude commands into a format compatible with the Python bindings library, thus facilitating the execution of commands from the web interface. 11 2Creation of chats for modular interaction: Develop a chat system that allows users to save Maude modules, modify them, and test commands, while keeping a record of interactions and received responses. 3Authentication and user management system: Implement a registration and login system that requires a UCM email and link confirmation. Additionally, include a password recovery process through a link sent via email. 4Module marketplace: Create a marketplace where administrators can manage (create, modify, delete, and activate) available modules for users to download or select as active in their chats. 5Advanced module management in chats: Introduce the functionality of version control for modules within chats, allowing users to save, select, and compare different versions of a module, similar to version control systems like GitHub. 6Command and module submission system: Add functionality that allows users to select the commands they have used and submit them along with the corresponding module. This will facilitate the evaluation of work by administrators. 7User submission management: Develop a view where users can see their submitted work, filter it by status (corrected or not), and view the administrators' comments on the corrected submissions. 8Administrator correction system: Create an interface where administrators can view and correct user submissions, send grades and comments, and manage already corrected submissions with the option to edit corrections. 9Advanced search and filtering functionalities: Implement search and filtering tools in the views for the marketplace, student tasks, and submissions, allowing searches by name, creation date, and other relevant criteria. 12 Work Plan Careful planning is essential for the success of any software development project. Below, the planning followed throughout the project development is detailed, as seen in Figure 1, from the initial research phase to the final implementation and testing stages. Preliminary Research Phase The initial phase of the project consisted of extensive research to understand its foundations and technical context. Given that Maude is a specialized formal language, it was essential to acquire a solid understanding of its characteristics and commands before proceeding with the implementation. • Research on Maude: The first step was to explore what Maude is, its purpose, and the types of commands most relevant for this project. This research included reviewing the official documentation, as well as consulting academic resources and practical usage examples. • Exploration of Maude bindings in Python: Once familiar with Maude's environment, the next step was to investigate how it could be integrated with Python. Available bindings for Python were evaluated, identifying how to translate Maude commands into a compatible format that could be executed from Python. • Study of Django: Since the project development was to be carried out using Django, it was necessary to acquire both basic and advanced knowledge of this framework. Despite not having worked with Django before, time was invested in understanding its structure, design patterns, and key components, which laid the groundwork for efficient implementation. Estimated duration: 2 weeks. Figure 1 - Planning Schedule. 13 Initial Implementation The initial phase of the project consisted of extensive research to understand its foundations and technical context. Given that Maude is a specialized formal language, it was essential to acquire a solid understanding of its characteristics and commands before proceeding with the implementation. • Research on Maude: The first step was to explore what Maude is, its purpose, and the types of commands most relevant for this project. This research included reviewing the official documentation, as well as consulting academic resources and practical usage examples. • Exploration of Maude bindings in Python: Once familiar with Maude's environment, the next step was to investigate how it could be integrated with Python. Available bindings for Python were evaluated, identifying how to translate Maude commands into a compatible format that could be executed from Python. • Study of Django: Since the project development was to be carried out using Django, it was necessary to acquire both basic and advanced knowledge of this framework. Despite not having worked with Django before, time was invested in understanding its structure, design patterns, and key components, which laid the groundwork for efficient implementation. Estimated duration: 2 weeks. Development of Additional Features With the main view functioning, the focus shifted to expanding the application's functionality by developing other essential views and additional features. • Development of the Registration and Login View: User authentication functionalities, including registration and login, were implemented. This phase was crucial for managing security and personalizing access to the platform. 20 2.1.7 Git y Github Git 11 es una herramienta que permite a los desarrolladores llevar un control de las versiones del código. Esto significa que pueden realizar cambios, revertir errores y colaborar de manera segura en un proyecto sin perder el historial de lo que se ha modificado. GitHub es una plataforma que facilita la colaboración usando Git, permitiendo a los desarrolladores compartir su código, revisar los cambios y trabajar juntos de manera organizada. En este proyecto, se usaron Git y GitHub para gestionar todo el código desarrollado, permitiendo realizar un seguimiento de los avances, corregir errores y trabajar de forma colaborativa. 2.2 Aplicaciones parecidas Al analizar las aplicaciones relacionadas con Maude, podemos agruparlas en función de su funcionalidad principal, enfocándonos en la detección de errores, la corrección y optimización de programas, y las herramientas para desarrolladores avanzados. 2.2.1 Herramientas de Detección de Errores y Análisis Dinámico Estas aplicaciones se centran en la detección y diagnóstico de errores durante la ejecución de programas en Maude. • ABET 12 : Combina la comprobación en tiempo de ejecución y la segmentación de trazas para mejorar el diagnóstico de errores en programas de Maude. Proporciona un análisis dinámico que simplifica las trazas para ayudar a los usuarios a identificar la causa de los errores. 11 Git y Github: https://docs.github.com/en/get-started/start-your-journey/about-githuband-git 12 Abet: https://safe-tools.dsic.upv.es/abets/ 21 • Atame 13 : Se centra en la corrección automática de programas en Maude al diagnosticar y corregir cálculos que no satisfacen las aserciones establecidas por el sistema. Aunque no requiere una ejecución fallida, Atame asegura que todas las computaciones futuras cumplan con las aserciones definidas. Ambas herramientas comparten un enfoque en la detección de errores y la corrección automática o asistida de programas. ABET es más útil para la depuración dinámica en tiempo de ejecución, mientras que Atame es más adecuada para la corrección estática. 2.2.2 Optimización de Programas Mediante Evaluación Parcial y Especialización Estas herramientas buscan mejorar la eficiencia y precisión de los análisis a través de la evaluación parcial y la especialización de programas en Maude. • Presto 14 : Un evaluador parcial simbólico para las teorías de reescritura de Maude que optimiza la teoría equacional subyacente para mejorar el análisis de protocolos y sistemas complejos. Ofrece un aumento significativo en el rendimiento al eliminar axiomas algebraicos costosos. • Victoria: Similar a Presto, esta herramienta se enfoca en la evaluación parcial de programas de reescritura en Maude. Victoria aplica técnicas de evaluación parcial para optimizar los programas, lo que resulta en mejoras de rendimiento significativas. Ambas herramientas buscan optimizar programas mediante la evaluación parcial, especializando teorías equacionales complejas para mejorar la eficiencia de los análisis en sistemas concurrentes. 13 Atame: https://safe-tools.dsic.upv.es/atame/ 14 Presto: https://safe-tools.dsic.upv.es/iPresto/ 22 2.2.3 Herramientas para Desarrolladores Avanzados y Extensiones de Maude Estas aplicaciones están diseñadas para mejorar la experiencia de los desarrolladores que utilizan Maude, añadiendo capacidades avanzadas de desarrollo y análisis. • Mau-Dev 15 : Una extensión para desarrolladores que añade nuevas operaciones de meta-nivel a Maude. Proporciona operaciones nativas de alto rendimiento que son útiles para gestionar representaciones complejas de términos y trazas de reescritura. • Meta-Maudest 16 : Un marco de transformación basado en el plegado y desplegado (fold/unfold) de teorías de reescritura. Es útil para optimizar y transformar programas utilizando técnicas simbólicas avanzadas. Estas herramientas están más orientadas a desarrolladores que trabajan a un nivel avanzado en la creación y modificación de teorías de reescritura y desean optimizar o transformar sus programas de manera eficiente. 2.2.4 Análisis de Protocolos Criptográficos Este grupo de aplicaciones está especializado en el análisis de protocolos criptográficos dentro de Maude. • Maude-NPA 17 : Una herramienta avanzada para el análisis de protocolos criptográficos que toma en cuenta propiedades algebraicas complejas como la cancelación de la encriptación y la desencriptación. Utiliza técnicas de 15 Mau-Dev: https://safe-tools.dsic.upv.es/maudev/ 16 Meta-Maudest: https://elp.webs.upv.es/soft/maudest/ 17 Maude-NPA: https://maude.cs.illinois.edu/w/index.php?title=Maude_Tools:_MaudeNPA 23 búsqueda hacia atrás y unificación para determinar si un estado final es alcanzable. Esta herramienta es única en su enfoque en la seguridad criptográfica, proporcionando capacidades de análisis que no están presentes en otras aplicaciones de Maude. 25 Capítulo 3 - Arquitectura e implementación 3.1 Arquitectura En este apartado se indagará en la arquitectura del proyecto diviéndolo en dos subsecciones, backend y frontend. 3.1.1 Frontend El frontend de la aplicación web está diseñado siguiendo principios de modularidad y reutilización de componentes, con un fuerte énfasis en la organización y la claridad del código. Utiliza tecnologías estándar como HTML, CSS, JavaScript, y está apoyado en Bootstrap para la estilización y el manejo de la interfaz de usuario. 3.1.1.1 Estructura de carpetas y archivos La estructura del proyecto se organiza en dos carpetas principales: templates y static: • Templates: Contiene todas las plantillas HTML, que están organizadas en carpetas según su funcionalidad. Cada página tiene su propia plantilla HTML que se encarga de la estructura básica y el contenido estático. Esta organización facilita la localización y mantenimiento de las plantillas. • Static: Agrupa todos los archivos estáticos, incluyendo CSS y JavaScript, organizados en carpetas específicas para cada tipo de archivo: o Archivos CSS: Los estilos están divididos en archivos específicos para cada página o sección, lo que permite una mayor modularidad y evita la sobrecarga de un único archivo de estilos. Bootstrap se utiliza como base para la estilización, lo que reduce el tiempo de desarrollo y asegura una apariencia coherente en toda la aplicación. o Archivos JavaScript: La lógica de interacción del frontend está separada en archivos JavaScript por funcionalidad. Cada archivo maneja una parte específica de la aplicación, como la gestión de tareas o la manipulación de entregas. Esto permite una mayor claridad 26 y facilita la localización de funcionalidades específicas para su desarrollo o depuración. Esta separación clara entre las plantillas HTML y los archivos estáticos en carpetas dedicadas mejora la organización del proyecto, facilitando el desarrollo, mantenimiento y escalabilidad de la aplicación. 3.1.1.2 Uso de Componentes Reutilizables Se emplean componentes reutilizables para elementos comunes de la interfaz, como la barra de navegación (navbar) y los modales. Estos componentes se definen una vez y se incluyen en las páginas que los necesitan, lo que reduce la duplicación de código y facilita su mantenimiento. 3.1.1.3 Estilización con Bootstrap Bootstrap se utiliza como el framework CSS principal, proporcionando una base sólida para la creación de una interfaz de usuario moderna y responsiva. Los estilos personalizados se aplican a través de archivos CSS específicos que sobreescriben o complementan las clases de Bootstrap, permitiendo ajustar la apariencia de la aplicación a las necesidades específicas del proyecto. 3.1.1.4 Interactividad y Peticiones AJAX La interactividad en la aplicación se maneja principalmente mediante JavaScript, haciendo un uso intensivo de peticiones AJAX (Asynchronous JavaScript and XML). Estas peticiones permiten la comunicación asincrónica con el backend, lo que facilita la actualización de partes específicas de la página sin necesidad de recargarla completamente. Las peticiones AJAX se utilizan para: • Cargar y actualizar listas de tareas y entregas: Se emplean peticiones AJAX para cargar dinámicamente las tareas y entregas en la página, así como para filtrar, ordenar y paginar los resultados en tiempo real. • Manipulación de datos: Acciones como eliminar entregas seleccionadas o corregir tareas se realizan mediante peticiones AJAX, lo que mejora la 27 velocidad de respuesta de la aplicación y ofrece una mejor experiencia de usuario. • Visualización de detalles en modales: Al hacer clic en elementos específicos, se realizan peticiones AJAX para obtener detalles adicionales desde el servidor y mostrarlos en modales, permitiendo a los usuarios interactuar con la aplicación de manera fluida. Estas peticiones son manejadas mediante el uso de fetch, que es el método estándar en JavaScript moderno para realizar solicitudes HTTP asincrónicas. El uso de AJAX asegura que la aplicación sea más reactiva y eficiente en el manejo de datos, proporcionando una experiencia de usuario más dinámica. 3.1.1.5 Validación y UX Mejorada Se ha implementado la validación en tiempo real en formularios críticos, como los de registro y recuperación de contraseñas, para mejorar la experiencia del usuario y reducir la probabilidad de errores. Además, se utilizan modales y alertas para proporcionar feedback inmediato a los usuarios sobre las acciones que realizan, lo que contribuye a una experiencia de usuario más intuitiva y agradable. 3.1.2 Backend El backend de esta aplicación web está construido utilizando el framework Django, reconocido por su capacidad para desarrollar aplicaciones web escalables y seguras de manera eficiente. Django sigue el patrón de diseño Modelo-VistaControlador (MVC), aunque dentro de su ecosistema es común referirse a este patrón como Modelo-Plantilla-Vista (MTV). 3.1.2.1 Estructura General • Modelos: Los modelos definen la estructura de la base de datos mediante clases en Python. En Django, cada modelo representa una tabla en la base de datos, y cada atributo de una clase se traduce en un campo dentro de esa tabla. 28 • Vistas: Las vistas manejan la lógica de negocio, respondiendo a las solicitudes HTTP y devolviendo las respuestas correspondientes. Las vistas en Django pueden implementarse como funciones o clases. • URLs: El sistema de enrutamiento de Django asigna las solicitudes entrantes a las vistas adecuadas utilizando patrones basados en expresiones regulares. Esto permite dirigir el tráfico de manera precisa a la lógica de negocio correspondiente. • Formularios: Los formularios en Django se emplean para validar los datos y facilitar la interacción entre las vistas y los modelos, asegurando que los datos enviados por los usuarios sean correctos antes de ser procesados. 3.1.2.2 Modelos y Base de Datos La aplicación utiliza una base de datos relacional SQL, la cual es compatible con múltiples motores de bases de datos soportados por Django, como PostgreSQL, MySQL, SQLite y Oracle. Dado que no se especifica explícitamente el motor de la base de datos en el código, es probable que se esté utilizando SQLite, que es la opción por defecto en Django, o PostgreSQL, dado que son comunes en proyectos Django. Estos son los modelos principales: • Usuario: Este modelo personalizado extiende de AbstractBaseUser y gestiona la autenticación y la información de los usuarios. Incluye campos como nombre, correo electrónico, verificación de correo, entre otros. • Chat: Representa un chat asociado a un usuario específico mediante una relación de ForeignKey con el modelo Usuario. • Mensaje: Almacena los mensajes enviados dentro de un chat, incluyendo los comandos ejecutados, las respuestas obtenidas y el estado del mensaje. • Modulo: Define un módulo Maude, almacenando información como el nombre, descripción, código Maude, y una imagen opcional que puede ser asociada al módulo. • ModuloVersion: Guarda las diferentes versiones de un módulo específico, vinculadas a un chat. 29 • Entrega: Gestiona las entregas realizadas por los usuarios a los administradores, permitiendo la asociación de múltiples mensajes a través de una relación ManyToMany. 3.1.2.3 Diagrama El diagrama de la base de datos, como se puede ver en la figura 2, ilustra las principales entidades y las relaciones que se gestionan en la aplicación web. Este diagrama muestra la estructura de los modelos utilizados en el backend, destacando las siguientes entidades clave: 1. Usuario: Este modelo, que extiende AbstractBaseUser, representa a los usuarios de la plataforma, tanto normales como administradores. Los campos principales incluyen nombre, email, email_verificado, y is_admin, lo que permite distinguir entre usuarios estándar y administradores. Cada usuario tiene una relación de uno a muchos con los modelos Chat, Modulo, y Entrega. 2. Chat: Un chat está vinculado a un usuario mediante una relación de clave foránea (usuario). En cada chat, los usuarios pueden ejecutar comandos que están vinculados a un módulo Maude (modulo). Los chats también contienen una colección de mensajes asociados. 3. Mensaje: Los mensajes dentro de un chat incluyen información sobre el comando ejecutado, la respuesta devuelta por el sistema, y un estado (bien, mal, ninguno). Los mensajes están relacionados con un chat y pueden asociarse a entregas realizadas por los usuarios. 4. Modulo: Representa los módulos Maude que los usuarios pueden crear y gestionar. Este modelo incluye campos como nombre, descripcion, codigo_maude, e imagen, y está vinculado a un creador (usuario). Los módulos pueden estar activos o inactivos, y también pueden tener múltiples versiones asociadas. 5. ModuloVersion: Este modelo guarda las diferentes versiones de un módulo, cada una vinculada a un chat específico. De esta manera, los usuarios pueden trabajar con versiones anteriores de un módulo según sea necesario. 36 • Correo UCM: Este campo solicita un correo electrónico institucional, validando que el dominio sea "@ucm.es". Esta validación es fundamental para asegurar que solo miembros de la UCM puedan registrarse. • Contraseña y Confirmar Contraseña: Para garantizar la seguridad, la contraseña debe cumplir con varios criterios: o Al menos 8 caracteres. o Incluir una letra mayúscula. o Incluir una letra minúscula. o Incluir al menos un número. Estos requisitos se validan en tiempo real conforme el usuario va ingresando la contraseña, y se proporciona retroalimentación visual para ayudar al usuario a crear una contraseña segura. 3.2.2.2 Lógica de Validación La lógica de validación se implementa utilizando JavaScript y se realiza en dos niveles: 1. Validación del Correo: Asegura que el correo proporcionado por el usuario termina con "@ucm.es". Esta validación es crítica para restringir el acceso a la plataforma a los miembros de la UCM. 2. Validación de la Contraseña: Mientras el usuario escribe, el sistema valida si la contraseña cumple con los requisitos mínimos. Además, verifica que la confirmación de la contraseña coincida con la original. Solo cuando todos los requisitos están cumplidos, el botón de registro se habilita. 3.2.2.3 Confirmación y Modal de Verificación Una vez que el formulario se envía, se muestra un modal que informa al usuario que se ha enviado un correo electrónico para la verificación de su cuenta. Este correo contiene un enlace que, al ser accedido, activará la cuenta del usuario, permitiéndole iniciar sesión en la plataforma. 37 Este enfoque asegura que solo usuarios con correos electrónicos válidos y cuentas verificadas puedan acceder a las funcionalidades de la aplicación, añadiendo una capa extra de seguridad y control sobre los usuarios registrados. 3.2.3 Vista del login La vista de login en la aplicación está diseñada para permitir a los usuarios acceder a su cuenta utilizando las credenciales registradas. Esta funcionalidad es crucial para garantizar que solo usuarios autenticados y verificados puedan acceder a las funcionalidades internas de la plataforma. 3.2.3.1 Estructura del Formulario El formulario de login es sencillo y consta de los siguientes elementos: • Correo Electrónico: Un campo donde el usuario debe ingresar el correo electrónico registrado durante el proceso de registro. • Contraseña: Un campo de entrada de tipo "password" donde el usuario ingresa la contraseña correspondiente a su correo electrónico. Ambos campos son obligatorios para proceder con el inicio de sesión. 3.2.3.2 Validación y Manejo de Errores La validación del formulario se realiza de la siguiente manera: 1. Coincidencia de Credenciales: Al enviar el formulario, el sistema verifica si el correo electrónico y la contraseña coinciden con los datos registrados en la base de datos. Si alguno de los campos no es correcto, se muestra un mensaje de error indicando que las credenciales son incorrectas. 2. Verificación del Correo Electrónico: Incluso si las credenciales son correctas, el sistema también verifica si el correo electrónico ha sido verificado. Si el usuario no ha completado el proceso de verificación de correo electrónico, se muestra un mensaje de advertencia indicando que el usuario debe verificar su correo antes de poder iniciar sesión. 38 Estos mensajes de error se muestran directamente debajo del formulario, proporcionando retroalimentación inmediata al usuario. 3.2.3.3 Funcionalidades Adicionales Además del formulario de identificación, la vista también incluye enlaces para registrar una nueva cuenta y para recuperar la contraseña en caso de que el usuario la haya olvidado. Estos enlaces dirigen al usuario a las vistas correspondientes de registro y recuperación de contraseña, facilitando la navegación y el manejo de situaciones comunes relacionadas con el acceso. 3.2.4 Vistas de recuperar contraseña La funcionalidad de recuperación de contraseña es un componente esencial en cualquier aplicación que gestione cuentas de usuario, ya que permite a los usuarios restablecer su contraseña en caso de que la olviden. Este proceso se divide en dos vistas principales: la solicitud de recuperación y el formulario para establecer una nueva contraseña. 3.2.4.1 Solicitud de Recuperación de Contraseña La primera parte del proceso de recuperación de contraseña es la solicitud de restablecimiento. En esta vista: • Formulario de Correo Electrónico: Se presenta un formulario simple en el que el usuario debe ingresar el correo electrónico con el que se registró. Este es un campo obligatorio, ya que es necesario para identificar la cuenta asociada y enviar el enlace de recuperación. • Envío del Enlace de Recuperación: Una vez que el usuario introduce su correo electrónico y envía el formulario, el sistema genera un enlace único de recuperación y lo envía al correo proporcionado. Este enlace contiene un token de seguridad que asegura que solo el propietario del correo puede restablecer la contraseña. 39 3.2.4.2 Establecimiento de la Nueva Contraseña Tras recibir el enlace de recuperación en su correo, el usuario es dirigido a una segunda vista donde puede establecer una nueva contraseña. En esta vista: • Formulario de Nueva Contraseña: Se presentan dos campos de entrada: uno para la nueva contraseña y otro para confirmar la nueva contraseña. Ambos campos son obligatorios. • Validación de la Contraseña: La nueva contraseña debe cumplir con ciertos criterios de seguridad previamente establecidos: o Debe tener al menos 8 caracteres. o Debe incluir al menos una letra mayúscula, una letra minúscula y un número. o Ambas contraseñas deben coincidir para poder enviar el formulario. • Habilitación del Botón de Envío: El botón para cambiar la contraseña permanece deshabilitado hasta que todos los criterios de la contraseña se cumplen y las contraseñas coinciden. Esto ayuda a prevenir errores y asegura que la nueva contraseña sea segura. 3.2.4.3 Flujo Completo El flujo completo de recuperación de contraseña garantiza que los usuarios puedan restablecer su acceso de manera segura y eficiente. Desde la solicitud inicial hasta la actualización de la contraseña, el proceso está diseñado para ser intuitivo y seguro, protegiendo la integridad de las cuentas de los usuarios. 3.2.5 Vista del market modulos La vista de Market Módulos es una parte crucial del sistema que permite a los administradores gestionar los módulos disponibles en la plataforma. En esta vista, los módulos pueden ser creados, editados, activados/desactivados, y eliminados, proporcionando un control total sobre los recursos que se ofrecen a los usuarios. 40 3.2.5.1 Interfaz de Usuario La vista se presenta con una interfaz intuitiva y funcional que incluye los siguientes componentes: • Lista de Módulos: Los módulos se muestran en tarjetas individuales que incluyen el nombre, una descripción breve, y una imagen (si está disponible). Cada tarjeta tiene opciones para: o Ver y Editar: Un botón que abre un modal con información detallada del módulo. Desde este modal, se puede modificar la imagen, la descripción y el código del módulo. o Activar/Desactivar: Un botón que permite activar o desactivar el módulo. Los módulos desactivados no estarán disponibles para los usuarios en la vista de Home. • Selección y Eliminación: Cada módulo tiene un checkbox que permite seleccionarlo. Una vez seleccionado, aparece un botón de eliminación masiva, que permite eliminar varios módulos a la vez. 3.2.5.2 Búsqueda y Filtros Para facilitar la gestión de un gran número de módulos, la vista incluye herramientas de búsqueda y filtrado: • Barra de Búsqueda: Permite buscar módulos por nombre o descripción, haciendo más fácil encontrar un módulo específico. • Filtros de Ordenación: Los módulos pueden ser ordenados por nombre o fecha de creación, en orden ascendente o descendente. También se puede filtrar la lista para mostrar solo los módulos activos, inactivos, o ambos. • Paginación: La lista de módulos está paginada para mejorar la navegación cuando se manejan muchos módulos. 41 3.2.5.3 Modales de Interacción La vista incluye dos modales clave para la interacción con los módulos: • Modal de Detalle: Al hacer clic en "Más información", se abre un modal donde se pueden ver y editar los detalles del módulo seleccionado, incluyendo la imagen, la descripción y el código Maude. Los cambios se pueden guardar desde este modal. • Modal de Creación: Permite a los administradores crear nuevos módulos. El formulario incluye campos para el nombre del módulo, descripción, código Maude, y una imagen opcional. 3.2.5.4 Funcionalidad AJAX La vista utiliza AJAX para mejorar la experiencia del usuario: • Búsqueda Dinámica: La búsqueda y los filtros se aplican dinámicamente sin necesidad de recargar la página, lo que permite una interacción más fluida. • Activación/Desactivación y Eliminación: Las acciones de activar, desactivar y eliminar módulos también se realizan mediante AJAX, proporcionando feedback inmediato y manteniendo la vista actualizada sin recargar la página completa. 3.2.6 Vista de mis tareas La vista de "Mis Tareas" es una herramienta esencial para los usuarios, permitiéndoles gestionar y revisar las tareas que han entregado. Esta vista ofrece un acceso detallado a la información relacionada con cada tarea, así como opciones de filtrado y eliminación para facilitar la gestión de múltiples entregas. 3.2.6.1 Interfaz de Usuario La vista está diseñada para ser intuitiva y eficiente, con los siguientes componentes clave: 42 • Lista de Entregas: Las tareas entregadas se presentan en tarjetas individuales, cada una mostrando la siguiente información: o Título: El nombre de la tarea. o Fecha de Entrega: La fecha en la que se entregó la tarea. o Estado: Indicador de si la tarea ha sido corregida o no. o Nota del Administrador: Si la tarea ha sido corregida, se muestra la nota asignada por el administrador. Cada tarjeta incluye un botón para ver detalles, que abre un modal con información adicional sobre la entrega. • Modal de Detalles de la Entrega: Al hacer clic en "Ver Detalles", se abre un modal que muestra información detallada de la entrega seleccionada: o Título y Administrador: Nombre de la tarea y del administrador que la recibió. o Fecha de Entrega y Estado: La fecha en que se entregó y si la tarea ha sido corregida. o Comandos y Respuestas: Lista de comandos enviados, sus respuestas, y el código del módulo utilizado. o Nota: Si la tarea ha sido corregida, se muestra la nota. 3.2.6.2 Funcionalidades Adicionales • Eliminación de Entregas: Los usuarios pueden seleccionar varias entregas usando checkboxes y eliminarlas simultáneamente. La eliminación es confirmada a través de un diálogo para evitar acciones accidentales. • Búsqueda y Filtros: o Barra de Búsqueda: Permite buscar entregas por título. 43 o Filtros: Los usuarios pueden ordenar las tareas por título o fecha de entrega, en orden ascendente o descendente. También pueden filtrar las entregas por estado (corregidas, no corregidas, o todas). • Paginación: La lista de tareas está paginada para manejar eficientemente un gran número de entregas. Los usuarios pueden navegar entre páginas para encontrar tareas específicas. 3.2.6.3 Funcionalidad AJAX La vista utiliza AJAX para mejorar la experiencia del usuario al interactuar con la lista de tareas: • Cargas Dinámicas: La lista de tareas, los filtros, la búsqueda, y la paginación se gestionan dinámicamente sin recargar la página completa. Esto permite una interacción más rápida y fluida. • Detalles en Tiempo Real: Los detalles de las entregas se cargan en tiempo real cuando el usuario los solicita, manteniendo la información actualizada y accesible de manera eficiente. 3.2.7 Vistas de entregas En esta sección, abordamos la implementación de las vistas de "Entregas Pendientes" y "Historial de Entregas Corregidas". Estas vistas están diseñadas para que los administradores puedan gestionar de manera eficiente las entregas realizadas por los usuarios, proporcionando una interfaz clara tanto para la corrección de tareas pendientes como para la revisión del historial de tareas ya corregidas. 3.2.7.1 Interfaz de Usuario Ambas vistas comparten una estructura similar para facilitar la consistencia y la facilidad de uso: 44 • Lista de Entregas: En cada vista, las entregas se presentan en tarjetas individuales con la siguiente información clave: o Título: El nombre de la tarea. o Remitente: El usuario que ha enviado la tarea. o Fecha de Entrega: La fecha en que la tarea fue entregada. o Nota: Solo visible en la vista de "Historial de Entregas Corregidas", muestra la calificación o comentario asignado durante la corrección. Cada tarjeta en ambas vistas incluye un botón para ver detalles o corregir la entrega. En la vista de "Historial de Entregas Corregidas", este botón permite revisar la corrección realizada y, si es necesario, modificar la nota asignada. 3.2.7.2 Funcionalidades Específicas • Corrección de Entregas (Vista de Entregas Pendientes): o Modal de Corrección: Al seleccionar una entrega pendiente, se abre un modal donde el administrador puede ver los detalles de la entrega, incluyendo los comandos ejecutados, sus respuestas, y el código del módulo utilizado. El administrador puede entonces asignar una nota a la entrega, que se guardará y hará que la entrega se mueva al historial de entregas corregidas. • Revisión del Historial (Vista de Historial de Entregas Corregidas): o Modal de Revisión: Similar al modal de corrección, pero en este caso permite al administrador revisar y, si es necesario, editar la nota asignada previamente a una entrega corregida. 3.2.7.3 Funcionalidades Comunes • Búsqueda y Filtros: o Barra de Búsqueda: Permite buscar entregas por título. 45 o Filtros de Ordenación: Los administradores pueden ordenar las entregas por título o fecha de entrega, en orden ascendente o descendente. • Paginación: Ambas vistas están paginadas, permitiendo a los administradores navegar fácilmente a través de grandes volúmenes de entregas. 3.2.7.4 Funcionalidad AJAX La implementación de AJAX en ambas vistas mejora la experiencia del usuario al permitir una interacción rápida y fluida: • Carga Dinámica: Las entregas, la búsqueda, los filtros, y la paginación se gestionan sin recargar toda la página. Esto permite a los administradores trabajar de manera más eficiente y sin interrupciones. • Actualización en Tiempo Real: Cualquier cambio realizado en la nota de una entrega se refleja inmediatamente, manteniendo la base de datos y la interfaz sincronizadas. 3.3 Ejemplos de uso En este apartado se presentarán ejemplos prácticos de uso de la plataforma desarrollada, ilustrando cómo los diferentes tipos de usuarios pueden interactuar con las funcionalidades clave del sistema. A través de escenarios detallados, se mostrará el flujo completo de operaciones desde la perspectiva de un usuario normal y un administrador, cubriendo desde la creación de chats y módulos hasta la gestión de entregas y la corrección de tareas. Cada ejemplo estará acompañado de capturas de pantalla y descripciones detalladas, permitiendo una comprensión clara y visual de cómo utilizar la plataforma de manera efectiva. 3.3.1 Escenario 1Usuario En este escenario, exploraremos el flujo completo de un usuario normal interactuando con la plataforma, desde el registro inicial hasta la gestión de tareas y módulos. 52 3.3.1.6 Realización de una Entrega Una vez que el usuario ha probado y marcado los comandos de su interés, puede proceder a realizar una entrega como en la figura 15. La plataforma le permite seleccionar los comandos marcados y empaquetarlos como una entrega formal. El usuario puede elegir a qué profesor enviar la entrega y asignarle un nombre, facilitando así la organización y el seguimiento de las tareas enviadas. Figura 15 - Modal de la entrega de los comandos Figura 14 - Chat con comandos creados 53 3.3.1.7 Exploración del Market de Módulos Además de crear sus propios módulos, el usuario tiene acceso al Market de módulos, donde puede explorar y añadir módulos preexistentes a su cuenta, se puede ver en la figura 16. Navegando por el Market, el usuario selecciona un módulo que le interesa y lo incorpora a su espacio de trabajo personal. 3.3.1.8 Selección y Comparación de Módulos Una vez añadido un nuevo módulo desde el Market, el usuario puede acceder a la función de selección de módulos y activar el nuevo módulo para su uso en el chat como se puede ver en la figura 17. Posteriormente, la plataforma permite comparar diferentes versiones de los módulos, lo que es invaluable para identificar cambios y asegurarse de que se está trabajando con la versión adecuada. Esta funcionalidad se puede ver en la figura 18. Figura 16 - Modal de los módulos activos en el market 54 3.3.1.9 Gestión de Tareas Finalmente, el usuario puede acceder a la sección de "Mis Tareas", donde puede revisar las entregas que ha realizado, como se puede ver en la figura 19. Al seleccionar una tarea, puede visualizar sus detalles en un modal, lo que incluye los comandos ejecutados, el código del módulo, y cualquier comentario o nota del administrador. Si ya no necesita la tarea en su lista, puede optar por eliminarla para mantener su espacio de trabajo ordenado. Se puede visualizar el modal con los detalles de una tarea en la figura 20. Figura 17 - Modal de selección de la versión de los módulos creados en un chat Figura 18 - Modal de comparación de versiones de los módulos de un solo chat 55 3.3.2 Escenario del administrador La sección dedicada al administrador describe las funcionalidades exclusivas para gestionar el Market de Módulos y las entregas de los usuarios. El administrador puede crear, modificar y eliminar módulos, además de revisar, corregir y gestionar las entregas pendientes y corregidas. Estas herramientas aseguran un control eficiente sobre los recursos disponibles y un seguimiento preciso del progreso de los usuarios. 3.3.2.1 Gestión del Market de Módulos El administrador tiene acceso a una funcionalidad exclusiva: la gestión del Market de Módulos. Esta sección permite a los administradores crear, modificar y gestionar los módulos disponibles para los usuarios normales. Al acceder al Market, el administrador se encuentra con una lista de todos los módulos disponibles en el sistema, donde puede Figura 19 - Vista de mis tareas Figura 20 - Modal de mostrar detalles de una entrega 56 ver información básica como el nombre y la descripción de cada módulo, así como opciones para activar, desactivar o eliminar módulos según sea necesario (como se puede ver en la Figura 21). Para crear un nuevo módulo, el administrador selecciona la opción de "Crear módulo", lo que despliega un modal donde se pueden especificar todos los detalles necesarios, como el nombre, la descripción, el código Maude y una imagen representativa del módulo (como se observa en la Figura 22). Este proceso asegura que los módulos estén correctamente configurados antes de ser puestos a disposición de los usuarios. Figura 21 - Vista del market de los módulos Figura 22 - Modal de creación de un módulo del market 57 Una vez creado un módulo, el administrador puede revisar y modificar sus detalles en cualquier momento. Al seleccionar la opción "Más información" en la lista de módulos, se abre un modal detallado donde se muestran todos los datos del módulo. Desde este modal, es posible realizar cambios en el código, la descripción, o incluso la imagen del módulo, permitiendo una gestión flexible y eficaz de los recursos disponibles en el sistema (como se ilustra en la Figura 23). 3.3.2.2 Gestión de Entregas Pendientes y Corregidas Además de la gestión de módulos, el administrador también tiene la responsabilidad de corregir las entregas realizadas por los usuarios. En la vista de "Entregas Pendientes", el administrador puede ver una lista de todas las entregas que aún no han sido revisadas. Cada entrega está asociada con un título, el nombre del remitente (usuario que realizó la entrega), y la fecha de entrega, lo que facilita la organización y priorización del trabajo (como se muestra en la Figura 24). Figura 23 - Modal con los detalles de un módulo del market 58 Al seleccionar una entrega pendiente, se abre un modal que muestra todos los detalles de la entrega, incluyendo los comandos utilizados por el usuario y las respuestas generadas por el sistema. Este modal también permite al administrador asignar una nota a la entrega, evaluando su precisión y completitud. Una vez corregida, la entrega se mueve automáticamente al historial de entregas corregidas (como se observa en la Figura 25). Figura 24 - Vista de las entregas pendientes de corregir por el administrador Figura 25 - Modal para ver los detalles y corregir una entrega de un usuario 59 En la vista de "Entregas Corregidas", el administrador puede revisar todas las entregas que ya han sido evaluadas. Cada entrada en esta lista muestra la nota asignada previamente, pero el administrador aún tiene la posibilidad de editar la nota si es necesario, por ejemplo, si se detecta un error en la corrección original. Este proceso asegura que todas las entregas se evalúan con precisión y se mantienen registros claros y actualizados (como se puede ver en la Figura 26). Figura 26 - Vista del historial de las entregas corregidas 60 Capítulo 4 - Conclusiones y trabajo futuro 4.1 Conclusiones Al comenzar este proyecto, se establecieron una serie de objetivos que guiaron el desarrollo y aseguraron que la plataforma final cumpliera con las expectativas planteadas. A continuación, se detalla cómo se cumplieron estos objetivos: 1. Integrar Maude con Python: El primer y más crucial objetivo fue lograr la integración de Maude con Python a través de bindings. Este paso fue esencial para permitir la ejecución de comandos de Maude desde una interfaz web, facilitando su uso en un entorno más accesible y moderno. Después de una investigación exhaustiva sobre cómo funcionan los bindings de Maude en Python, se desarrolló una funcionalidad que permite traducir comandos de Maude a un formato entendible por Python y ejecutar estos comandos dentro de la plataforma. Esta integración se probó rigurosamente para asegurar que la comunicación entre Maude y la interfaz web fuera fluida y sin errores, cumpliendo así con este objetivo fundamental. 2. Desarrollar una plataforma web robusta y funcional utilizando Django: Dado que Django era un framework nuevo para el equipo de desarrollo, se invirtió tiempo en comprender su arquitectura y mejores prácticas. Django fue elegido por su capacidad para manejar aplicaciones web complejas de manera eficiente. La plataforma desarrollada permite a los usuarios interactuar con Maude de manera intuitiva, ejecutar comandos, gestionar módulos y realizar entregas de ejercicios. Además, la interfaz fue diseñada para ser accesible y fácil de usar, incluso para aquellos que no están familiarizados con Maude o con el desarrollo web en general. El resultado es una plataforma robusta, donde todas las funcionalidades clave funcionan como se esperaba, y el rendimiento es consistente bajo diversas cargas de trabajo. 3. Implementar un sistema de gestión de módulos y versiones: Uno de los objetivos más ambiciosos del proyecto fue crear un sistema que no solo permitiera a los usuarios gestionar sus propios módulos de Maude, sino también versionarlos, 61 modificarlos y compararlos de manera similar a un sistema de control de versiones como Git. Esta funcionalidad es crucial para usuarios avanzados que requieren un control granular sobre el desarrollo y evolución de sus módulos. Se implementó una interfaz que permite a los usuarios crear nuevas versiones de sus módulos, realizar cambios y comparar versiones anteriores con las actuales, todo de manera visual y accesible. Esta característica no solo facilita la gestión del código, sino que también promueve mejores prácticas en el desarrollo con Maude. 4. Crear un sistema de entregas y correcciones: El sistema de entregas y correcciones fue diseñado para que los usuarios pudieran enviar ejercicios y recibir retroalimentación detallada por parte de los administradores. Este sistema incluye la funcionalidad de marcar comandos como correctos o incorrectos durante las sesiones de chat, y de generar informes que se pueden enviar para revisión. Los administradores, por su parte, tienen la capacidad de revisar estas entregas, añadir notas y devolver correcciones. Este flujo de trabajo garantiza una experiencia educativa completa, donde los usuarios pueden aprender y mejorar a través de un proceso estructurado de entrega y corrección de tareas. 5. Asegurar una experiencia de usuario fluida: Desde el inicio, se priorizó la creación de una experiencia de usuario que fuera no solo funcional, sino también intuitiva y agradable. Esto se logró mediante la implementación de un sistema de chat, que permite a los usuarios seguir sus interacciones con Maude en un formato conversacional. Además, se desarrollaron funcionalidades de búsqueda y filtros que permiten a los usuarios localizar rápidamente los comandos y módulos que necesitan, mejorando así la eficiencia de uso de la plataforma. Las pruebas de usuario confirmaron que la plataforma es fácil de navegar y que las funcionalidades son accesibles incluso para aquellos con poca experiencia técnica. En resumen, los objetivos planteados al inicio del proyecto se han cumplido satisfactoriamente. La plataforma desarrollada no solo logra una integración efectiva entre Maude y Python, sino que también ofrece una interfaz completa y funcional para la gestión de módulos, la entrega de ejercicios, y la corrección de los mismos. Las 68 would make the platform even more useful for a wider range of users, particularly those using Maude for advanced or specialized applications. 5. Improving documentation and tutorials: Lastly, to ensure that new users can make the most of the platform, it would be beneficial to develop more comprehensive documentation and interactive tutorials. These resources could guide users through the platform's functionalities, from basic concepts to more advanced features. Additionally, interactive tutorials would allow users to learn by doing, with practical exercises to reinforce acquired knowledge. This approach would not only help users become familiar with the platform quickly but could also reduce customer support demands, as users would have access to self-learning resources. These improvements and expansions would not only increase the platform's functionality and usability but also open new possibilities for its use in different contexts, whether in educational settings, research, or industrial applications. Continuing to develop these areas will ensure that the platform remains relevant and useful to its users in the future. 69 BIBLIOGRAFÍA [1] Rubio, D. (2017). Beginning Django : web application development and deployment with Python. Apress. https://doi.org/10.1007/978-1-4842-2787-9 [2] Rubio, R. (2022). Maude as a Library: An Efficient All-Purpose Programming Interface. Proceedings of the International Workshop on Rewriting Logic and Its Applications (WRLA), 274-294. [3] Baker, M. (2022). Secure web application development : a hands-on guide with Python and Django ([First edition]). Apress. https://doi.org/10.1007/978-1-4842-8596-1 71