A medida que un sistema de software evoluciona, aparecen múltiples archivos, versiones, ambientes, configuraciones, dependencias, datos, scripts y decisiones que deben mantenerse bajo control. Si no existe una gestión ordenada, el equipo puede perder trazabilidad, desplegar una versión incorrecta o no poder reconstruir el estado de un producto.
La gestión de configuración, ambientes y versiones ayuda a controlar qué cambia, cuándo cambia, quién lo cambia, dónde se ejecuta y qué versión del software está disponible en cada contexto.
La gestión de configuración es el conjunto de prácticas que permite identificar, organizar, controlar y auditar los elementos que forman parte de un sistema de software. Su objetivo es que el producto pueda construirse, desplegarse, mantenerse y recuperarse de manera confiable.
No se limita al código fuente. También incluye configuraciones, documentación, scripts de base de datos, dependencias, archivos de despliegue, parámetros de ambiente, plantillas y otros artefactos necesarios para que el sistema funcione.
Idea central: gestionar la configuración significa saber con precisión qué elementos componen el sistema y cómo se relacionan con cada versión entregada.
Un elemento de configuración es cualquier componente relevante que debe ser identificado, versionado o controlado para mantener la integridad del producto.
Sin control de configuración, el equipo puede enfrentar problemas difíciles de diagnosticar: una función funciona en una computadora pero falla en producción, una dependencia cambia sin aviso, un archivo se modifica sin registro o no se sabe qué versión está usando un cliente.
La gestión de configuración reduce incertidumbre y permite trabajar de forma más ordenada, especialmente cuando participan varias personas, existen varios ambientes o se entregan versiones frecuentes.
El control de versiones permite registrar la evolución de los archivos del proyecto. Cada cambio puede asociarse a una fecha, una persona, una descripción y un conjunto concreto de modificaciones.
Herramientas como Git permiten recuperar versiones anteriores, comparar cambios, trabajar en ramas, integrar aportes de varias personas y mantener una historia del desarrollo.
Una versión del producto representa un estado identificable del sistema que puede ser probado, entregado, desplegado o mantenido. Nombrar correctamente las versiones facilita la comunicación entre desarrollo, pruebas, soporte, operaciones, clientes y usuarios.
Por ejemplo, decir "se corrigió en la versión 2.4.1" es más claro que decir "se corrigió en la última versión", porque la palabra "última" cambia con el tiempo y puede generar confusión.
| Tipo | Descripción | Ejemplo |
|---|---|---|
| Secuencial | Usa números simples y consecutivos. | Versión 1, versión 2, versión 3. |
| Por fecha | Identifica la entrega con una fecha. | 2026.05.18. |
| Semántico | Diferencia cambios mayores, menores y correcciones. | 2.4.1. |
| Por compilación | Asocia la versión a un número de construcción o integración. | Build 1847. |
Un ambiente es un contexto donde el sistema se ejecuta con determinada configuración, datos, servicios y propósito. Separar ambientes permite desarrollar, probar y operar sin mezclar trabajos en curso con sistemas usados por usuarios reales.
| Ambiente | Propósito |
|---|---|
| Desarrollo | Construir y probar cambios de manera local o interna. |
| Pruebas | Verificar funcionalidades, correcciones e integraciones. |
| Homologación | Validar una versión antes de pasarla a producción. |
| Producción | Ejecutar el sistema usado por usuarios reales. |
Una misma aplicación puede necesitar valores distintos según el ambiente: direcciones de servicios, credenciales, bases de datos, niveles de registro, límites, claves, rutas de archivos o parámetros de integración.
Es importante separar la configuración del código. De esa manera, el mismo código puede ejecutarse en distintos ambientes sin modificar archivos fuente para cada caso.
Las dependencias son bibliotecas, frameworks, servicios o componentes externos que el sistema necesita para funcionar. Deben controlarse porque un cambio en una dependencia puede afectar seguridad, rendimiento, compatibilidad o comportamiento.
La gestión de cambios permite evaluar, aprobar, construir, probar y desplegar modificaciones de manera controlada. No todo cambio tiene el mismo impacto: corregir un texto no tiene el mismo riesgo que modificar una regla de facturación o una estructura de base de datos.
Un proceso de cambio debe dejar claro qué se solicita, por qué, qué componentes afecta, cómo se probará, cuándo se entregará y cómo se revertirá si aparece un problema.
Una línea base es un estado aprobado y controlado de un conjunto de artefactos. Sirve como punto de referencia para continuar el trabajo, realizar pruebas, entregar una versión o comparar cambios posteriores.
Por ejemplo, una versión homologada puede convertirse en línea base para producción. A partir de allí, cualquier modificación debería estar registrada y controlada.
La trazabilidad permite relacionar una versión con los cambios que contiene, los requerimientos que implementa, los defectos que corrige, las pruebas realizadas y los ambientes donde fue desplegada.
Esta información es valiosa para soporte, auditoría, diagnóstico de problemas y planificación de nuevas entregas.
Una construcción repetible permite generar el mismo resultado a partir del mismo código, configuración y dependencias. Un despliegue repetible permite instalar o actualizar el sistema de manera previsible.
Automatizar pasos reduce errores manuales, mejora la velocidad de entrega y permite reconstruir una versión con mayor confianza.
Algunas configuraciones contienen información sensible, como contraseñas, claves de API, tokens, certificados o datos de conexión. Estos valores no deben quedar expuestos en repositorios públicos, mensajes de error, registros innecesarios o documentación visible para personas no autorizadas.
La protección de configuraciones sensibles forma parte de la seguridad del software y debe gestionarse con mecanismos adecuados de acceso, almacenamiento y rotación.
Supongamos un sistema de turnos médicos. Para gestionarlo correctamente, el equipo necesita saber qué versión está en producción, qué versión se está probando, qué base de datos usa cada ambiente y qué cambios incluye cada entrega.
La gestión de configuración, ambientes y versiones aporta orden y trazabilidad al desarrollo de software. Permite saber qué se entregó, cómo se construyó, dónde se ejecuta y qué cambios contiene cada versión.
En el próximo tema veremos estimación, riesgos y seguimiento del proyecto, aspectos esenciales para planificar el trabajo, anticipar problemas y tomar decisiones informadas durante el desarrollo.