Justificación

Basado en el análisis de negocio y buenas prácticas, la arquitectura está basada en Arquitectura por Servicios ya que la intención es crear un sistema estable, escalable y que nos permita crear servicios que encapsulen lógica volátil permitiendo un bajo o nulo acoplamientos entre los servicios a crear.

Arquitectura de Datos (Data Architecture)

Para este sistema, la relación más crítica es la de Usuarios y Tareas. El requerimiento especifica que una tarea puede tener más de un usuario asignado, lo que nos obliga a implementar una relación de muchos a muchos (M:N) mediante una tabla asociativa.

Diccionario de Datos

Tabla: users

Columna Descripción
id Identificador único del usuario
name Nombre completo del usuario
email Correo electrónico para login y filtros
role Rol para control de acceso y filtros
created_at Fecha de creación
updated_at Fecha de última actualización

Tabla: tasks

Columna Descripción
id Identificador único de la tarea
title Título descriptivo de la tarea
description Detalle extenso de los requerimientos
estimated_hours Horas estimadas de esfuerzo
due_date Fecha límite de entrega
status Estado actual de la tarea
cost Costo monetario
created_at Fecha de creación
updated_at Fecha de última actualización

Tabla: task_assignments

Columna Descripcion
task_id Relacion con la tarea
user_id Relación con el usuario

Diagrama Entidad Relación de la base de datos

Este ERD representa la estructura actual de la base de datos del proyecto. Es un modelo relacional clásico con normalización alcanzando específicamente la Tercera Forma Normal (3NF).

image.png

Arquitectura de Sistema (System Decomposition)

Para evitar un acoplamiento en el sistema, se dividirá según su volatilidad (qué tanto cambia) para proceder a descomponerlo en servicios antes de desarrollar una arquitectura para el backend y frontend.