8. Estrategias de integración: incremental, big bang, top-down y bottom-up

8.1 Introducción

Integrar componentes no es solo una actividad técnica. También requiere una estrategia. La estrategia define en qué orden conectaremos las partes del sistema, qué verificaremos primero y cómo reduciremos el riesgo de descubrir demasiados problemas al mismo tiempo.

En este tema estudiaremos cuatro enfoques habituales: integración incremental, big bang, top-down y bottom-up.

Cada estrategia tiene ventajas y desventajas. Elegir una u otra depende del tipo de sistema, del estado del desarrollo, de los riesgos principales y de los componentes disponibles.

8.2 Qué es una estrategia de integración

Una estrategia de integración es una forma planificada de conectar componentes y probar sus colaboraciones. Su objetivo es evitar que la integración sea un momento caótico donde se juntan todas las partes y se espera que todo funcione.

Una buena estrategia responde preguntas como:

  • ¿Qué componentes se integrarán primero?
  • ¿Qué dependencias todavía no están listas?
  • ¿Qué flujos son más críticos?
  • ¿Qué errores queremos detectar temprano?
  • ¿Qué datos y ambientes necesitamos?
  • ¿Cómo sabremos si una integración está lista para avanzar?
La estrategia de integración ordena el trabajo para descubrir problemas de colaboración lo antes posible y con la menor confusión posible.

8.3 Integración incremental

La integración incremental consiste en conectar componentes de a poco. Se integra una parte, se prueba, se corrige lo necesario y luego se agrega otra parte.

Por ejemplo, en una funcionalidad de compras podríamos integrar primero servicio de compras con base de datos, luego agregar stock, después pagos y finalmente notificaciones.

Ventajas principales:

  • Permite detectar errores temprano.
  • Facilita diagnosticar fallas porque se agregan pocas piezas por vez.
  • Reduce el riesgo de acumular problemas hasta el final.
  • Se adapta bien a desarrollos iterativos.

La integración incremental suele ser una de las estrategias más prácticas para equipos que entregan software de forma frecuente.

8.4 Riesgos de la integración incremental

Aunque es una estrategia muy útil, también tiene cuidados:

  • Requiere decidir un orden de integración razonable.
  • Puede necesitar dobles de prueba para componentes que aún no están disponibles.
  • Puede generar pruebas temporales que luego deben ajustarse.
  • Si no se planifica, algunas integraciones importantes pueden quedar para demasiado tarde.

Para que funcione bien, conviene priorizar integraciones críticas y mantener una visión clara del flujo completo que se quiere construir.

8.5 Integración big bang

La estrategia big bang consiste en integrar todos o casi todos los componentes al mismo tiempo, generalmente cuando ya fueron desarrollados por separado.

En este enfoque, el equipo espera a tener muchas partes listas y luego intenta conectarlas para probar el sistema integrado.

Ventajas posibles:

  • Puede parecer simple de coordinar al comienzo.
  • No exige diseñar un orden detallado de integración.
  • Puede ser aceptable en sistemas pequeños con pocos componentes y bajo riesgo.

Sin embargo, en sistemas medianos o grandes, esta estrategia suele generar muchos problemas porque las fallas aparecen juntas y son difíciles de aislar.

8.6 Riesgos de la integración big bang

El principal problema del big bang es que retrasa el descubrimiento de errores de integración. Cuando finalmente se conectan las partes, pueden fallar muchas cosas al mismo tiempo.

Riesgos típicos:

  • Errores acumulados durante mucho tiempo.
  • Dificultad para saber qué componente causó la falla.
  • Contratos incompatibles entre módulos.
  • Configuraciones no verificadas hasta el final.
  • Ambientes de prueba preparados tarde.
  • Retrasos importantes cerca de la entrega.

Por estas razones, big bang suele ser una estrategia riesgosa cuando el sistema tiene muchas dependencias o flujos críticos.

8.7 Integración top-down

La integración top-down comienza desde los componentes de nivel superior y luego incorpora componentes de niveles inferiores. Es común pensarla desde la entrada principal del sistema hacia las dependencias internas.

Por ejemplo, podríamos empezar integrando la capa de controladores con servicios simulados, luego reemplazar esos servicios simulados por servicios reales y más adelante conectar repositorios y base de datos.

Ventajas principales:

  • Permite validar temprano el flujo general desde las entradas principales.
  • Ayuda a revisar contratos visibles para consumidores o usuarios.
  • Puede mostrar rápidamente si la estructura general de la funcionalidad es correcta.
  • Facilita trabajar aunque algunos componentes internos todavía no estén terminados.

8.8 Riesgos de la integración top-down

El enfoque top-down suele requerir componentes simulados para reemplazar partes inferiores que todavía no existen o no están listas. Esos reemplazos deben diseñarse con cuidado.

Riesgos posibles:

  • Los componentes simulados pueden no comportarse como los reales.
  • Puede dar una sensación falsa de avance si las dependencias reales se integran tarde.
  • Los problemas de persistencia o infraestructura pueden descubrirse después.
  • Puede quedar demasiado foco en la entrada del sistema y poco en recursos internos críticos.

Para reducir estos riesgos, conviene reemplazar simulaciones por componentes reales apenas sea razonable y tener pruebas específicas para las dependencias importantes.

8.9 Integración bottom-up

La integración bottom-up comienza por componentes de nivel inferior y luego va incorporando capas superiores. Primero se prueban dependencias internas importantes, como repositorios, acceso a datos, servicios base o clientes de infraestructura.

Por ejemplo, podríamos validar primero repositorios contra una base de datos de prueba, luego servicios de negocio usando esos repositorios y finalmente controladores.

Ventajas principales:

  • Detecta temprano problemas de datos, persistencia e infraestructura.
  • Construye una base confiable para capas superiores.
  • Facilita probar componentes internos críticos antes de exponerlos a flujos más amplios.
  • Reduce el riesgo de que errores profundos aparezcan recién al final.

8.10 Riesgos de la integración bottom-up

El enfoque bottom-up también tiene limitaciones. Si se concentra demasiado en componentes internos, puede retrasar la validación de flujos visibles para el usuario o para otros sistemas.

Riesgos posibles:

  • Las capas superiores se integran tarde.
  • Puede probarse mucho acceso a datos sin validar el flujo de negocio completo.
  • Puede requerir herramientas o código auxiliar para invocar componentes internos.
  • Algunos problemas de coordinación entre capas aparecen recién al subir en la integración.

Para equilibrarlo, conviene combinar pruebas de componentes internos con escenarios que vayan acercándose al uso real de la funcionalidad.

8.11 Comparación de estrategias

La siguiente tabla resume las diferencias principales:

Estrategia Idea central Ventaja Riesgo
Incremental Integrar de a poco. Detecta problemas temprano y facilita diagnóstico. Requiere planificar el orden.
Big bang Integrar todo al final. Puede parecer simple en sistemas pequeños. Acumula fallas y dificulta encontrar causas.
Top-down Empezar por componentes superiores. Valida temprano entradas y flujo general. Puede depender demasiado de simulaciones.
Bottom-up Empezar por componentes inferiores. Verifica pronto datos e infraestructura. Puede retrasar flujos visibles.

8.12 Estrategias combinadas

En proyectos reales no siempre se usa una estrategia pura. Es común combinar enfoques según el riesgo y la disponibilidad de componentes.

Por ejemplo:

  • Usar bottom-up para validar repositorios y base de datos.
  • Usar top-down para revisar entradas principales y contratos externos.
  • Usar integración incremental para agregar dependencias de forma progresiva.
  • Evitar big bang salvo en casos pequeños o muy controlados.

La estrategia más práctica suele ser incremental con decisiones top-down o bottom-up según el flujo y los riesgos principales.

8.13 Cómo elegir una estrategia

Para elegir una estrategia, conviene analizar el contexto del proyecto:

  • ¿Qué componentes ya están disponibles?
  • ¿Qué integraciones tienen mayor riesgo?
  • ¿Qué partes dependen de proveedores externos?
  • ¿Dónde hubo más errores en versiones anteriores?
  • ¿Qué flujos son más críticos para el negocio?
  • ¿Qué ambientes y datos de prueba existen?
  • ¿Qué tan fácil es diagnosticar una falla en cada nivel?

No se elige una estrategia por costumbre. Se elige por el riesgo que necesitamos reducir.

8.14 Ejemplo: sistema de reservas

Supongamos un sistema de reservas de hotel con módulos de habitaciones, clientes, pagos y notificaciones.

Una estrategia incremental podría ser:

  • Integrar servicio de habitaciones con base de datos para consultar disponibilidad.
  • Agregar servicio de reservas para crear reservas válidas.
  • Agregar reglas de clientes registrados.
  • Integrar pagos con un servicio simulado.
  • Agregar notificaciones simuladas.
  • Más adelante probar integración con proveedores externos reales en un ambiente controlado.

Así se reducen riesgos paso a paso en lugar de esperar a que todos los módulos estén terminados.

8.15 Señales de una mala estrategia

Algunas señales indican que la estrategia de integración necesita ajustes:

  • Los errores de integración aparecen todos cerca del final.
  • Las pruebas fallan y nadie sabe qué componente causó el problema.
  • Se depende de servicios reales que no están disponibles.
  • Los componentes fueron desarrollados con contratos incompatibles.
  • La preparación del ambiente se descubre demasiado tarde.
  • Las pruebas son tan amplias que se vuelven difíciles de mantener.

Estas señales no siempre indican un problema de código. Muchas veces indican un problema de planificación de la integración.

8.16 Qué debes recordar de este tema

  • Una estrategia de integración define el orden y el alcance de la conexión entre componentes.
  • La integración incremental agrega componentes de a poco y facilita el diagnóstico.
  • Big bang integra todo al final y suele ser riesgosa en sistemas medianos o grandes.
  • Top-down empieza por componentes superiores y puede requerir simulaciones.
  • Bottom-up empieza por componentes inferiores y ayuda a validar datos e infraestructura.
  • En la práctica, muchas estrategias se combinan según riesgo y disponibilidad.

8.17 Conclusión

Las estrategias de integración ayudan a transformar una actividad riesgosa en un proceso ordenado. Integrar sin estrategia suele llevar a errores acumulados, diagnósticos lentos y sorpresas cerca de la entrega.

Una buena estrategia conecta componentes en el momento adecuado, prioriza riesgos importantes y permite detectar fallas de colaboración cuando todavía son manejables.

En el próximo tema veremos cómo seleccionar los escenarios críticos para integrar primero.