Principios Fundamentales de Arquitectura de Software – Integración de Sistemas y Legados
Este artículo es una explicación de conceptos sobre los principios fundamentales de arquitectura de software, incluyendo preguntas de examen y etiquetas.
En Resumen
La arquitectura de software consiste en estructurar aplicaciones de manera que permanezcan mantenibles, extensibles y compatibles con los entornos IT existentes, especialmente al integrar sistemas legados y gestionar migraciones entre plataformas.
Descripción Técnica Completa
La arquitectura de software define la estructura fundamental de un sistema: componentes, relaciones entre ellos y tecnologías empleadas. En la práctica empresarial, raramente nos encontramos con desarrollo Greenfield. Lo más común es trabajar con sistemas existentes que necesitan considerarse o expandirse. Integrar sistemas legados presenta desafíos especiales en interfaces, formatos de datos y protocolos. Las arquitecturas modernas frecuentemente deben interactuar con aplicaciones monolíticas o difíciles de mantener. Durante una migración de entorno (por ejemplo, de on-premise a Cloud), la portabilidad es crucial. La deuda técnica, la descomposición modular, los modelos de capas y las definiciones claras de interfaces son aspectos clave.
Puntos Relevantes para Examen
- Arquitectura define estructura, comunicación y dependencias
- Considerar sistemas legados es obligatorio en proyectos de expansión
- Capacidad de interfaz = requisito central de diseño
- Refactoring en lugar de redevelopment para sistemas legados estables (relevante para certificaciones)
- Práctica: integración frecuente mediante REST, middleware y patrón adaptador
- Aspectos de seguridad: formatos de datos, seguridad de API, acceso a bases de datos legadas
- Viabilidad económica: reutilización versus nuevo desarrollo
- Documentación con diagramas, especificaciones de interfaces y estrategia de migración
Componentes Clave
- Análisis de arquitectura de sistemas existentes
- Identificación de deuda técnica
- Reconciliación de requisitos con el sistema actual
- Concepto de interfaz
- Selección de estrategias de integración (wrapper, proxy, adaptador)
- Definición del entorno destino (sistema operativo, cloud)
- Estrategia de migración (big bang o incremental)
- Refactoring de componentes heredados
- Conceptos de prueba para compatibilidad
- Documentación de decisiones arquitectónicas
Ejemplo Práctico
// Expansión de un sistema de gestión de inventario con REST API para frontend web
1. Sistema legado (monolítico, solo accesos locales a BD)
2. Objetivo: interfaz web moderna → REST API como middleware
3. Adaptador entre estructura de datos antigua y respuesta JSON
4. API documentada con OpenAPI/Swagger
5. Reutilización de lógica existente, sin duplicación
Explicación: La lógica existente se mantiene intacta, los nuevos clientes se comunican con un nivel API intermedio mediante REST.
Ventajas e Inconvenientes
Ventajas
- Reutilizar sistemas existentes ahorra tiempo y costos
- Integración prolonga la vida útil de sistemas legados
- Conciencia arquitectónica reduce costos de migración futuros
Inconvenientes
- Sistemas antiguos frecuentemente carecen de documentación
- Implementar interfaces retroactivamente es difícil
- Las migraciones de entorno pueden introducir riesgos de seguridad
Preguntas Típicas de Examen (con Respuesta Breve)
- ¿Cómo considerar sistemas existentes? La nueva solución debe ser compatible con el entorno IT actual.
- ¿Qué es un sistema legado? Sistema antiguo que sigue en uso, frecuentemente sin soporte actual ni documentación.
- ¿Cómo conectar sistemas legados? A través de interfaces, adaptadores, wrappers o replicación de datos.
- ¿Qué es middleware? Software que actúa como intermediario entre sistemas antiguos y nuevos.
- ¿Riesgos al cambiar de entorno? Incompatibilidad, pérdida de datos, brechas de seguridad.
- ¿Cómo documentar decisiones arquitectónicas? Con diagramas de componentes, capas, interfaces y justificación textual.
- ¿Refactoring versus reimplementación? Refactoring tiene sentido cuando la lógica central es estable pero necesita modernización.
- ¿Qué significa “acoplamiento débil”? Los componentes son independientes, permitiendo cambios locales sin efectos globales.
Fuentes Principales
- https://arc42.org/
- https://www.heise.de/thema/Legacy-Systeme
- https://refactoring.guru/de
- https://martinfowler.com/eaaCatalog/
- https://c4model.com/



