Módulo 1: Fundamentos de Ingeniería de Software

Tema 1.3: Arquitectura de Software

La arquitectura de software define la estructura fundamental de un sistema, estableciendo los componentes, sus relaciones y los principios que guían su diseño y evolución. Una arquitectura bien diseñada es crucial para la escalabilidad, mantenibilidad y rendimiento del software.

En este tema exploraremos los diferentes estilos arquitectónicos, desde las arquitecturas tradicionales en capas hasta los enfoques modernos como microservicios, analizando sus ventajas, desventajas y casos de uso apropiados.

Videos de Aprendizaje

1.3.1 Introducción a la arquitectura de software (Parte 1)

Primera parte de la introducción a la arquitectura de software, cubriendo conceptos fundamentales y la importancia de la arquitectura en el desarrollo de sistemas.

1.3.2 Introducción a la arquitectura de software (Parte 2)

Segunda parte de la introducción a la arquitectura de software, profundizando en patrones arquitectónicos y consideraciones de diseño.

1.3.3 Introducción Arquitectura de Software

Video introductorio que presenta los conceptos esenciales de arquitectura de software y su papel en el desarrollo de sistemas complejos.

1.3.4 Arquitectura del software

Explicación detallada sobre arquitectura del software, abordando diferentes enfoques y consideraciones prácticas para el diseño de sistemas.

Investigación Detallada

Arquitectura en Capas

También conocida como arquitectura n-tier, organiza el sistema en capas con responsabilidades específicas (presentación, lógica de negocio, persistencia). Favorece la separación de concerns y la mantenibilidad, pero puede introducir overhead de rendimiento.

Cliente-Servidor

Divide la aplicación entre clientes que solicitan servicios y servidores que los proveen. Es escalable y permite la centralización de recursos, pero el servidor puede convertirse en un cuello de botella y punto único de falla.

Orientada a Servicios (SOA)

Organiza la funcionalidad como servicios reutilizables que se comunican mediante protocolos estandarizados. Promueve la reutilización y interoperabilidad, pero puede ser compleja de implementar y gestionar.

Microservicios

Arquitectura moderna que descompone la aplicación en servicios pequeños, independientes y altamente cohesionados. Ofrece escalabilidad independiente y resiliencia, pero introduce complejidad en la operación y coordinación.

Arquitectura Event-Driven

Basada en la producción, detección y consumo de eventos. Es altamente desacoplada y escalable, ideal para sistemas asíncronos, pero puede ser compleja de debuggear y requiere gestión cuidadosa de la consistencia.

Arquitectura Hexagonal

También conocida como puertos y adaptadores, aísla el núcleo de la aplicación de tecnologías externas. Facilita el testing y el cambio de infraestructura, pero requiere disciplina en la implementación.

Atributos de Calidad en Arquitectura

  • Escalabilidad: Capacidad de manejar crecimiento en carga de trabajo
  • Disponibilidad: Porcentaje de tiempo que el sistema está operativo
  • Mantenibilidad: Facilidad para realizar cambios y correcciones
  • Seguridad: Protección contra accesos no autorizados y ataques
  • Rendimiento: Tiempo de respuesta y throughput del sistema
  • Testabilidad: Facilidad para verificar el correcto funcionamiento

Material de Lectura

Presentación Tema 1.3: Arquitectura de Software

Documento oficial con teoría detallada, patrones arquitectónicos, diagramas de referencia y mejores prácticas para el diseño de arquitecturas de software.

Tema Anterior: 1.2 Requerimientos