
1. **Estilos y Patrones de Arquitectura de Software:** Son enfoques estructurados para diseñar y organizar sistemas de software. Los estilos arquitectónicos describen estructuras generales (como Cliente-Servidor o Capas), mientras que los patrones ofrecen soluciones específicas a problemas recurrentes (como MVC). Ambos ayudan a garantizar escalabilidad, mantenibilidad y eficiencia en el desarrollo de software.
2. **Cliente-Servidor**
2.1. **Descripción:** - Arquitectura que divide las funciones entre clientes (solicitan servicios) y servidores (proporcionan servicios).
2.1.1. **Ventajas:** - Escalabilidad. - Centralización de recursos. - Facilita el mantenimiento y actualizaciones del servidor.
2.1.1.1. **Desventajas:** - Dependencia del servidor. - Vulnerabilidad ante fallos del servidor.
2.1.1.1.1. **Ejemplos:** - Aplicaciones web como Gmail. - Juegos en línea como World of Warcraft.
3. **Modelo-Vista-Controlador (MVC)**
3.1. **Descripción:** Patrón que separa la lógica de la aplicación en tres componentes: **Modelo: ** Maneja datos y lógica de negocios. **Vista:** Interfaz de usuario. **Controlador:** Gestiona la comunicación entre modelo y vista.
3.1.1. **Ventajas:** - Separación de responsabilidades. - Reutilización de componentes. - Fácil mantenimiento.
3.1.1.1. **Desventajas:** - Puede ser complejo para desarrolladores novatos. - Sobrecarga en pequeñas aplicaciones.
3.1.1.1.1. **Ejemplos:** Frameworks como Angular, React, y Django.
4. **Microservicios**
4.1. **Descripción:** - Divide una aplicación en servicios independientes que se comunican mediante APIs.
4.1.1. **Ventajas:** - Escalabilidad independiente. - Facilidad para integrar nuevas tecnologías.
4.1.1.1. **Desventajas:** - Mayor complejidad en la comunicación. - Requiere un sistema de monitoreo robusto.
4.1.1.1.1. **Ejemplos:** - Aplicaciones de Netflix. - Plataformas como Amazon.
5. **Arquitectura Orientada a Servicios (SOA)**
5.1. **Descripción:** - Estilo que organiza servicios como componentes independientes que interactúan mediante interfaces.
5.1.1. **Ventajas:** - Reutilización de servicios. - Flexibilidad en la integración de sistemas.
5.1.1.1. **Desventajas:** - Complejidad en la gestión de servicios. - Latencia en la comunicación entre servicios.
5.1.1.1.1. **Ejemplos:** - Sistemas de gobierno. - Servicios en la nube como AWS.
6. **Capas**
6.1. **Descripción:** - Divide el sistema en capas jerárquicas, cada una con responsabilidades específicas.
6.1.1. **Ventajas:** - Modularidad. - Cambios fáciles en capas individuales. - Mejor organización.
6.1.1.1. **Desventajas:** - Sobrecarga en la comunicación entre capas. - Puede aumentar la complejidad en sistemas grandes.
6.1.1.1.1. **Ejemplos:** - Sistemas ERP. - Sistemas de gestión bancaria.