¿Qué es la ingeniería de lanzamiento?
Release engineering, o releng, es el proceso de preparación de software informático completo para su distribución. Esto puede involucrar muchas disciplinas separadas de programación e ingeniería, y no todas las definiciones de ingeniería de lanzamiento son iguales en diferentes compañías. Algunas de las tareas que pueden estar involucradas en la ingeniería de lanzamiento incluyen compilar código fuente, rastrear y mantener herramientas y entornos de desarrollo, mantener una biblioteca de lanzamientos a lo largo de la vida de un programa y, a veces, implementar el despliegue de software en un servidor o sistema en vivo. Algunos de los beneficios de contar con un ingeniero de lanzamiento dedicado en el ciclo de desarrollo de software son una mejor experiencia para los usuarios finales, porque los métodos de lanzamiento se prueban primero, una mejor documentación general del programa durante las actualizaciones y un tipo de control de calidad en situaciones en las que diferentes partes de un programa se originan de fuentes separadas.
Durante el desarrollo del software, llega un punto en el que la aplicación se completa y necesita ser distribuida a los clientes o instalada en un servidor en vivo para que pueda ser utilizada. Sin un ingeniero de lanzamiento, este proceso podría implicar que los desarrolladores compilen un programa a través de herramientas de desarrollo y luego muevan los archivos binarios al medio o servidor de destino. Algunos de los problemas que se pueden encontrar con este proceso son que el programa podría tener dependencias que no están cuantificadas, algunos cambios podrían olvidarse o, en última instancia, el proceso podría no ser necesariamente reproducible en el futuro.
Una de las partes más importantes de la ingeniería de lanzamiento es el seguimiento del progreso de cómo se desarrolla un programa. Esto podría significar usar un sistema de versiones o emplear otro software no solo para rastrear y etiquetar cada paso de un programa durante su desarrollo, sino también para almacenar instantáneas del programa para que puedan recuperarse más tarde. Además de solo manejar el código fuente, la construcción exitosa de un programa requiere que se almacene información sobre las herramientas que se utilizan y las diferentes bibliotecas u otros recursos que se emplean. El objetivo final es poder recompilar un programa en cualquier etapa durante su desarrollo, independientemente de los sistemas de desarrollo utilizados para crearlo.
Otra posible parte de la ingeniería de lanzamiento es preparar una aplicación para su distribución a los clientes. Una vez que el programa se ha compilado en archivos binarios, se desarrollan y exploran métodos para instalar el programa en la computadora de un usuario final. Esto podría implicar escribir un programa de instalación o probar el programa en diferentes situaciones si está en vivo para garantizar que funcione de acuerdo con las especificaciones. La ingeniería de versiones a veces implica la instalación de un programa varias veces en múltiples sistemas para garantizar que las diferentes configuraciones o errores se manejen de la manera adecuada.