03_Unidad3_DisenioArquitectonico - vhcontre/inventario-2025 GitHub Wiki

🧱 Diseño Arquitectónico y Patrones de Software

🎯 Objetivos

  • Comprender los conceptos fundamentales del diseño arquitectónico en software.
  • Conocer patrones de diseño aplicables a la ingeniería de software moderna.
  • Aplicar buenas prácticas de arquitectura y diseño en proyectos académicos.

🏗️ ¿Qué es la arquitectura de software?

La arquitectura de software define la estructura general del sistema: sus componentes principales, cómo se comunican entre sí y cómo se organizan.

Permite tomar decisiones estratégicas que impactan en la escalabilidad, mantenibilidad, seguridad y reutilización del software.

Principios arquitectónicos clave:

  • Separación de responsabilidades (SoC)
  • Bajo acoplamiento y alta cohesión
  • Modularidad
  • Abstracción e interfaces claras

🧭 Estilos arquitectónicos comunes

Estilo Descripción Ejemplo común
Monolítico Una sola unidad desplegable Aplicaciones simples
Cliente–Servidor Interacción entre frontend y backend Web apps modernas
Microservicios Componentes independientes que se comunican vía API Sistemas distribuidos
En capas (Layered) Separación por funciones: presentación, lógica, datos MVC, Clean Architecture
Event-driven Basado en eventos que disparan acciones Sistemas reactivos

🧱 Aplicación al proyecto

Tu proyecto utiliza una arquitectura en capas, con separación entre:

  • Modelo de dominio: lógica de negocio (en domain/models/)
  • Persistencia: modelos ORM (en app/db/models/)
  • Interfaz y APIs: controladores, endpoints y vistas web

🔄 Se promueve una arquitectura limpia y desacoplada, basada en principios SOLID y separación de responsabilidades.


🧰 Patrones de diseño útiles

Patrón Utilidad en el proyecto
Repository Aisla el acceso a datos del modelo de dominio
Mapper Traduce entre ORM ↔ modelo de dominio ↔ Pydantic
Factory / Builder Facilita la creación de objetos complejos
Singleton (controlado) Gestión de configuraciones o recursos únicos
Dependency Injection Facilita pruebas y desacoplamiento

🔗 Relación con la planificación

Semana Aplicación concreta
2–3 Diseño del modelo de dominio y estructura inicial en capas
3–4 Aplicación del patrón CRUD y separación lógica
5–6 Introducción de servicios, middlewares y autenticación modular
7–10 Integración de plantillas y separación de vistas/controladores

📘 Recursos para profundizar

  • Martin Fowler — Patterns of Enterprise Application Architecture
  • Robert C. Martin — Clean Architecture
  • Eric Evans — Domain-Driven Design
  • Catálogo de patrones de diseño de GoF (Gang of Four)

📝 Actividades sugeridas

  • Dibujar el diagrama de arquitectura de tu sistema.
  • Implementar un patrón Repository para separar lógica y datos.
  • Reflexionar: ¿qué ventajas trae la separación entre dominio y persistencia?

💡 Cierre

Una buena arquitectura no es la que resuelve todos los problemas, sino la que facilita el cambio, reduce riesgos y favorece la comprensión del sistema.