Skip to content

Registro de decisiones arquitectonicas

Miguel edited this page Feb 18, 2025 · 26 revisions

Introducción

Este documento recoge las decisiones arquitectónicas clave tomadas durante el desarrollo del proyecto, clasificadas por importancia y documentadas según la plantilla de Arq42. Se incluyen justificaciones, impactos y alternativas evaluadas.

Participantes activos en la toma de decisiones

  • Alfredo Jirout Cid -- UO288443
  • Nicolas Guerbartchouk Pérez -- UO293912
  • Miguel Olamendi de Yaxte Alonso -- UO285022
  • Manuel García Baldó -- UO295497

Tabla de decisiones - Indice

ID Título Fecha Importancia Enlace
001 Herencia del proyecto del año anterior 11-02-2025 Muy Alta ADR-001
002 Estrategia de ramificación Git Flow 04-02-2025 Media ADR-002
003 Sistema de Gestión de Base de Datos a usar 18-02-2025 Media ADR-003

Registro de decisiones

ADR-001: Herencia del proyecto del año anterior

  • Fecha: 11-02-2025
  • Estado: Aprobada
  • Contexto: Se consideraron varias opciones para iniciar el desarrollo del proyecto, incluyendo comenzar desde cero o reutilizar una base existente desarrollada por alumnos del año anterior.
  • Decisión: Se decidió heredar el proyecto del año anterior disponible en GitHub como base para el desarrollo.
  • Justificación: El equipo tiene mayor familiaridad con un sistema basado en Java, lo que facilita el desarrollo inicial. Además, se aprovecha código ya desarrollado y probado, reduciendo el tiempo de implementación.
  • Consecuencias: Se parte de una base funcional, pero se debe realizar una evaluación y refactorización del código existente para adaptarlo a los nuevos requerimientos.
  • Alternativas consideradas: Desarrollo desde cero, uso de otro proyecto base distinto.

ADR-002: Estrategia de ramificación Git Flow

  • Fecha: 04-02-2025
  • Estado: Aprobada
  • Contexto: Se necesita una estrategia de gestión de ramas eficiente y conocida para el desarrollo colaborativo.
  • Decisión: Se adopta Git Flow como estrategia de ramificación, con una rama principal develop que contiene las últimas características de la siguiente release.
  • Justificación: Git Flow es un enfoque ampliamente reconocido que facilita el control de versiones y la integración continua.
  • Consecuencias: Se mejora la organización del código, pero requiere disciplina en la gestión de ramas.
  • Alternativas consideradas: Trunk-based development, GitHub Flow.

ADR-003: Sistema de Gestión de Base de Datos a usar

  • Fecha: 18-02-2025
  • Estado: Aprobada
  • Contexto: Tenemos la necesidad de concretar qué sistema de gestión de bases de datos vamos a usar en el proyecto. La base de datos debe ser capaz de manejar eficientemente la información relacionada con los usuarios, su historial de participación, la generación de preguntas y respuestas, y la integración con los servicios de la aplicación.
  • Decisión: Se adopta MySQL como sistema de gestión de bases de datos del proyecto. En el entorno de desarrollo local, se usará HSQLDB para facilitar las pruebas sin necesidad de configurar un sistema gestor de bases de datos.
  • Justificación: Se debe configurar correctamente la conexión a MySQL en producción y pruebas. Queda pendiente la implementación de estrategias de backup y recuperación.
  • Consecuencias: Se debe configurar correctamente la conexión a MySQL en producción y pruebas. Se debe implementar la estrategia de backup y recuperación.
  • Alternativas consideradas: MongoDb, MariaDB, PostgreSQL, etc

Según la plantilla:

ADR-XXX: Ejemplo

  • Fecha: XX-XX-2025
  • Estado: Aprobada | Propuesto | Reemplazado
  • Contexto: Se requiere una base de datos que permita manejar grandes volúmenes de datos y consultas flexibles.
  • Decisión: Se elige MongoDB por su capacidad de escalar horizontalmente y su compatibilidad con el modelo de datos del proyecto.
  • Justificación: MongoDB ofrece flexibilidad en el esquema y un buen soporte para consultas complejas.
  • Consecuencias: Mayor facilidad de desarrollo, pero requiere una estrategia de indexación eficiente.
  • Alternativas consideradas: PostgreSQL, MariaDB, MongoDB.

Anotaciones