4.1 Informes Desarrollo - UExGPSASEE/proyecto24-gc02 GitHub Wiki

Informe general

Para comenzar la practica 3, se comenzó subiendo un proyecto base al repositorio de github el cual contenía las Apis generadas en la asignatura de ASEE, estas Apis son API_Contenidos, API_Usuario, API_Visualizaciones, ademas junto con esto se subió una carpeta templates que almacenara los archivos html del proyecto con dos archivos base, a su vez otra carpeta llamada static que contendrá los ficheros css y las imágenes. Finalmente en esta primer commit también tendrá el fichero app.py que será el fichero de ejecución de la aplicación.

Antes de comenzar con el proceso de trabajo de la practica 3 se realizo la creacion de un fichero gitflow, para realizar la integracion continua que contendrá lo siguiente: image

Durante todo el proyecto se trabajo por iteraciones de 1 semana de duración, durante cada iteración se desempeñaron las tareas planificadas. Como forma de trabajo decidimos no asignar tiempo ni descripción a las subtareas pero si en la tarea principal. Además ciertas tareas de cada caso de uso tienen un desarrollo teórico el cual no puede quedar reflejado en Jira, por tanto estas tareas no tendrán asociado ningún commit, pero si habrán sido realizadas, puesto que sin ellas no podría realizar las posteriores tareas. Algunas de estas tareas son por ejemplo las subtareas de la fase de requisitos de cada caso de uso. Estas tareas deben hacerse para poder desarrollar el código de cada caso de uso correspondiente.

El proceso de trabajo seguido se adapta al modelo del Proceso Unificado el cual esta descrito como se utilizar en la pestaña correspondiente del menú de contenidos de esta wiki.

Iteracion 1

image

Iteracion 2

image

Iteracion 3

image

Iteracion 4

image

Iteracion 5

image

Iteracion 6

image

Iteracion 7

image

Desviaciones en la Planificación

Durante el proyecto, se identificaron algunas desviaciones respecto a la planificación original. Estas desviaciones fueron consecuencia de factores imprevistos que afectaron tanto la asignación de recursos como los plazos establecidos haciendo que algunas tareas esten completadas pero no esten imputadas en Jira.

Informe Victor Tellez

Este apartado de la pagina de informes de Desarrollo podrás observar el trabajo realizado por iteraciones por parte de Victor Tellez Barroso. En este apartado se intentar comentar y abordar todos los aspectos seguidos para el trabajo de cada una de las iteraciones así como las tareas asociadas a esta persona en cada una de ellas.

Iteración 1

  • Project Management: Durante esta tarea se realizaron todas las subtareas asociadas en el tiempo descrito, aunque todas estas subtareas solo estaban asociadas a un miembro del equipo, la realidad fue que todo el equipo trabajo durante esta iteración en este apartada puesto que había que elaborar también el proceso de desarrollo, así como planificar el proyecto, el alcance y la iteración.

  • Environment: Durante esta tarea aunque esta asignada a mi como persona , cada miembro tuvo que establecer su equipo personal y adaptarlo a las necesidades de la iteración.

  • Configuration & Change Management: Esta fase nos encargamos de que todos los miembro del equipo tuvieran en entorno , la configuración y necesidades adecuadas durante la iteración.

  • Bussiness Modeling(BM): Primera fase de UP donde evalué el estado del proyecto, se identificaron los procesos de negocio y se diseñaron

  • Requirements(RE): Fase 2 de UP Se analizo el caso de uso 1 y 4 donde se entendió el problema y definieron los requisitos que necesitaba este caso de uso.

  • Análisis y Diseño(A&D): En esta fase nos encargamos de de analizar como se comportaría el caso de uso asi como el diseño de la base de datos y los componentes, en este caso, se usara la api usuario donde el controlador ya tendría generados los módulos necesarios

Iteración 2

Todas las tareas asignadas a Project Management,Environment Configuration & Change Management, se realizaron durante la iteración con el tiempo adecuado y correspondiente alo documentadio en Jira

  • Bussiness Modeling: Se realizaron estas tareas de acuerdo a lo que se especifica en su nombre.

  • Requirements(RE): Fase 2 de UP Se analizo el caso de uso 3 donde se entendió el problema y definieron los requisitos que necesitaba este caso de uso.

  • Análisis y Diseño(A&D): En esta fase nos encargamos de de analizar como se comportaría el caso de uso así como el diseño de la base de datos y los componentes, en este caso, se usara la api usuario donde el controlador ya tendría generados los módulos necesarios.

  • Implementación: En esta iteración se realizo el proceso de implementación de los casos de uso 1 y 4.

Iteración 3

Todas las tareas asignadas a Project Management,Environment Configuration & Change Management, se realizaron durante la iteración con el tiempo adecuado y correspondiente a la documentación en Jira

  • Bussiness Modeling(BM): Se realizaron estas tareas de acuerdo a lo que se especifica en su nombre.

  • Requirements(RE): Fase 2 de UP Se analizo el caso de uso 2 donde se entendió el problema y definieron los requisitos que necesitaba este caso de uso.

  • Análisis y Diseño(A&D): En esta fase nos encargamos de de analizar como se comportaría el caso de uso así como el diseño de la base de datos y los componentes, en este caso, se usara la api usuario donde el controlador ya tendría generados los módulos necesarios

Iteración 4

Todas las tareas asignadas a Project Management,Environment Configuration & Change Management, se realizaron durante la iteración con el tiempo adecuado y correspondiente a la documentación en Jira

  • Bussiness Modeling(BM): Se realizaron estas tareas de acuerdo a lo que se especifica en su nombre.

Iteración 5

Todas las tareas asignadas a Project Management,Environment Configuration & Change Management, se realizaron durante la iteración con el tiempo adecuado y correspondiente a la documentación en Jira

  • Bussiness Modeling(BM): Se realizaron estas tareas de acuerdo a lo que se especifica en su nombre.

Iteración 6

Todas las tareas asignadas a Project Management,Environment Configuration & Change Management, se realizaron durante la iteración con el tiempo adecuado y correspondiente a la documentación en Jira

  • Bussiness Modeling(BM): Se realizaron estas tareas de acuerdo a lo que se especifica en su nombre.

Iteración 7

Todas las tareas asignadas a Project Management,Environment Configuration & Change Management, se realizaron durante la iteración con el tiempo adecuado y correspondiente a la documentación en Jira

  • Bussiness Modeling(BM): Se realizaron estas tareas de acuerdo a lo que se especifica en su nombre.

Informe Mario Sequedo

Junto con mi compañero Javier Jiménez, trabajé en la implementación del archivo dbConnection.py, el cual desempeña un papel esencial al permitir la conexión de la aplicación a la base de datos. Esta base de datos fue diseñada y gestionada utilizando Oracle SQL Developer. El archivo dbConnection.py actúa como un intermediario entre la aplicación y la base de datos, proporcionando las funciones necesarias para ejecutar consultas y operaciones de manera eficiente y estructurada.

En cuanto al desarrollo funcional del proyecto, participé activamente en la implementación de los siguientes casos de uso:

CU5-Cerrar sesión

Este caso de uso resultó ser uno de los más breves y sencillos de implementar. Para este, era necesario gestionar el cierre de la sesión del usuario de manera segura y redirigirlo a la página de inicio. Esto se logró añadiendo el siguiente código al archivo principal app.py, ubicado en la raíz del proyecto.

image

Este fragmento de código cumple con dos tareas clave:

  • Limpieza de la sesión: La función session.clear() elimina todos los datos almacenados en la sesión actual, asegurando que no queden rastros de información del usuario tras el cierre de sesión.
  • Redirección: La función redirect(url_for('index')) redirige al usuario a la página de inicio (index), mejorando la experiencia del usuario tras cerrar sesión.

CU6-Buscar contenido y CU7-Visualizar contenido

Una vez generado el código base de “API_Contenidos” mediante Swagger Editor, el siguiente paso fue completar y adaptar el código de los controladores para garantizar su correcto funcionamiento. Los controladores son responsables de gestionar las solicitudes entrantes, procesarlas y realizar llamadas a las funciones adecuadas dentro del archivo encargado de manejar la conexión a la base de datos.

Inicialmente, el proyecto contaba con un único archivo denominado dbconnection, ubicado en la raíz del proyecto. Sin embargo, para mejorar la organización y la claridad del código, se optó por una reestructuración. Este cambio implicó dividir las responsabilidades de dbconnection en módulos específicos para cada API. En el caso de API_Contenidos, se creó un archivo dedicado llamado dbconnection_contenidos.py, ubicado dentro del directorio correspondiente a esta API.

El archivo dbconnection_contenidos.py contiene las funciones responsables de realizar consultas a la base de datos y devolver la información necesaria. Por su parte, los controladores utilizan estas funciones y procesan los resultados aplicando métodos como “to_dict”, que permiten estructurar los datos en un formato adecuado para ser utilizados o enviados al cliente.

Además, me encargué de verificar y configurar las dependencias necesarias para los archivos dentro de API_Contenidos. Esto incluyó identificar las bibliotecas y recursos requeridos por cada archivo y asegurarme de que estuvieran correctamente incluidos y funcionales dentro del entorno del proyecto.

En cuanto a la parte de diseño del proyecto, la creación de los archivos HTML y CSS fue realizada por mis compañeros, quienes se encargaron de desarrollar la interfaz de usuario.

CU8-Reproducción de contenido

En este caso de uso no se pudo trabajar debido a limitaciones de tiempo. Esto se debió a la carga de tareas adicionales de otras asignaturas, junto con algunos exámenes. Aunque este caso quedó pendiente, se tiene previsto retomarlo en cuanto sea posible para completar la funcionalidad planificada del proyecto.

Las tareas de testeo de cada caso no han quedado reflejadas en el Jira debido a que no se implementaron pruebas formales, se realizó una verificación exhaustiva del funcionamiento de los controladores y del archivo dbConnection. Esto se llevó a cabo ejecutando el proyecto completo y probando las búsquedas y otras funcionalidades directamente dentro de la web. Este enfoque permitió confirmar que los componentes clave del sistema operan de manera correcta y cumplen con los objetivos planteados.

API_Visualizaciones

También trabajé en la API_Visualizaciones, aplicando el mismo enfoque utilizado para la API_Contenidos. Esto incluyó la creación de las funciones necesarias dentro del archivo dbConnection.py, que posteriormente, debido a la reestructuración, cambió a dbConnection_visualizaciones.py y se ubicó dentro del directorio api_visualizaciones.

En este archivo, desarrollé las funciones necesarias para gestionar las visualizaciones de una película o serie dentro de la base de datos, asegurando que los controladores puedan operar eficientemente con los datos. Además, verifiqué las dependencias requeridas para que no hubiera ningún fallo.

Jira

En Jira, realicé el seguimiento de las tareas y marqué como "Finalizadas" todas aquellas correspondientes a los casos de uso 5, 6 y 7 que me fueron asignadas. Estas tareas abarcan las fases de Requisitos, Análisis y Diseño, Implementación e Integración. Sin embargo, las tareas relacionadas con la fase de Test no fueron implementadas, por lo que quedaron registradas como "Tareas por Hacer". De manera similar, las tareas asociadas al caso de uso 8, que no se pudieron realizar debido a la falta de tiempo, como he comentado anteriormente, también se mantienen como "Tareas por Hacer".

Informe Javier Jiménez

En este informe se trata con más detalle el tema del Back-End (controladores y base de datos) ya que varios de los casos de uso pertenecientes a mi parte de desarrollo no son tan prioritarios como el acceso a los datos.

Base de Datos (Oracle)

En la base de datos se han creado distintas tablas que nos permiten gestionar los datos de una manera rápida y eficiente. Esas tablas son las siguientes:

  • asee_users: Almacena los usuarios y la información personal de estos, tales como el nombre y apellidos, correo electrónico, contraseña y género favorito.
  • asee_actors: Almacena los actores y la información de estos, tales como el nombre y la fecha de nacimiento.
  • asee_directors: Almacena los directores y la información de estos, tales como el nombre y la fecha de nacimiento.
  • asee_movies: Almacena las películas y la información de estas, tales como el título, género, descripción, director y duración.
  • asee_series: Almacena las series y la información de estas, tales como el título, género y descripción.
  • asee_seasons: Almacena las temporadas y la información de estas, tales como la serie a la que pertenece, descripción y número de temporada.
  • asee_episodes: Almacena los capítulos y la información de estas, tales como el título, la temporada y serie a la que pertenecen, descripción, número de episodio, duración y director.
  • asee_actor_movie: Almacena si los actores han aparecido en las películas junto al rol/papel que tienen en esta.
  • asee_actor_serie: Almacena si los actores han aparecido en las series junto al rol/papel que tienen en esta.
  • asee_user_movie: Almacena si un usuario ha visto una película junto al número de veces que ha visto esta.
  • asee_user_serie: Almacena si un usuario ha visto una serie junto al número de veces que ha visto esta.

Todas las funciones para interactuar con las tablas están implementadas en el archivo 'dbconnection.py', el cual establece una conexión a la base de datos en la que se encuentran las tablas mencionadas anteriormente. Es el único archivo que puede interactuar directamente con la base de datos.

Los controladores tienen la función de utilizar las funciones implementadas en el archivo 'dbconnection.py' para compartir los datos entre el servidor y la aplicación (en este caso, realizado en HTML). Cada controlador se encarga de manipular un tipo de modelo en concreto, obteniendo así los datos requeridos para una correcta utilización de estos.