stringtranslate.com

Ingeniería de lanzamiento

La ingeniería de lanzamiento , abreviada frecuentemente como RE o como el compuesto recortado Releng , es una subdisciplina de la ingeniería de software que se ocupa de la compilación , el ensamblaje y la entrega del código fuente en productos terminados u otros componentes de software. Asociada con el ciclo de vida de lanzamiento de software , Boris Debic de Google Inc. [1] [2] dijo que la ingeniería de lanzamiento es a la ingeniería de software lo que la fabricación es a un proceso industrial:

La ingeniería de lanzamiento es la diferencia entre fabricar software en equipos pequeños o empresas emergentes y fabricar software de manera industrial que sea repetible, dé resultados predecibles y se adapte bien a las necesidades. Estas prácticas de estilo industrial no solo contribuyen al crecimiento de una empresa, sino que también son factores clave para posibilitar el crecimiento.

John O'Duinn [3] y Bram Adams [4] han defendido repetidamente la importancia de la ingeniería de lanzamiento para permitir el crecimiento de una empresa tecnológica . Si bien el objetivo de la ingeniería de lanzamiento no es sobrecargar el desarrollo de software con una superposición de procesos, a menudo se la considera un signo de madurez organizacional y de desarrollo.

La ingeniería de lanzamiento moderna se ocupa de varios aspectos de la producción de software:

Identificabilidad
Ser capaz de identificar todas las fuentes, herramientas, entornos y otros componentes que conforman una versión particular.
Reproducibilidad
La capacidad de integrar fuentes, componentes de terceros, datos y elementos externos de implementación de un sistema de software para garantizar la estabilidad operativa.
Consistencia
La misión de proporcionar un marco estable para el desarrollo, la implementación, la auditoría y la responsabilidad de los componentes de software.
Agilidad
La investigación en curso sobre cuáles son las repercusiones de las prácticas modernas de ingeniería de software en la productividad en el ciclo del software, por ejemplo, la integración continua y el impulso de iniciativas ecológicas [ aclaración necesaria ] .

La ingeniería de lanzamiento es a menudo el centro de integración de los equipos de desarrollo de software más complejos, y se encuentra en el cruce entre el desarrollo, la gestión de productos, el control de calidad y otros esfuerzos de ingeniería, también conocidos como DevOps . Los equipos de ingeniería de lanzamiento suelen desempeñar el papel de guardianes (por ejemplo, en Facebook, Google, Microsoft) de ciertos productos críticos donde su criterio forma una línea paralela de responsabilidad y autoridad en relación con los lanzamientos de producción (pushes).

Con frecuencia, el seguimiento de los cambios en un sistema de gestión de configuración o un sistema de control de revisión es parte del dominio del ingeniero de versiones. La responsabilidad de crear y aplicar un esquema de numeración de versiones en el software (y rastrear ese número hasta los archivos fuente específicos a los que se aplica) suele recaer sobre el ingeniero de versiones. Producir o mejorar la automatización en la producción de software suele ser un objetivo del ingeniero de versiones. Recopilar, rastrear y proporcionar todas las herramientas necesarias para desarrollar y crear un software en particular puede ser una tarea de ingeniería de versiones, con el fin de reproducir o mantener de manera confiable el software años después de su lanzamiento inicial a los clientes.

Si bien la mayoría de los ingenieros de software o desarrolladores de software realizan muchas o todas las tareas mencionadas anteriormente como parte de su trabajo, en organizaciones más grandes la especialidad del ingeniero de lanzamiento se puede aplicar para coordinar árboles de código fuente, proyectos, equipos y componentes dispares. Esto libera a los desarrolladores para implementar funciones en el software y también libera a los ingenieros de control de calidad para probar de manera más amplia y profunda el software producido.

El ingeniero de versiones puede proporcionar software, servicios o ambos a los equipos de ingeniería de software y de control de calidad de software. El software proporcionado puede generar herramientas, ensamblajes u otros scripts de reorganización que toman los resultados de la compilación y los colocan en una estructura de árbol predefinida, e incluso la creación de instaladores para que los utilicen los equipos de prueba o el consumidor final del software. Los servicios proporcionados pueden incluir la automatización de la compilación de software , la integración automatizada de pruebas , la generación de informes de resultados y la producción o preparación de sistemas de entrega de software, por ejemplo, en forma de medios electrónicos (CD, DVD) o mecanismos electrónicos de distribución de software.

Disciplinas relacionadas

Referencias

  1. ^ Adams, Bellomo, Bird, Marshall-Keim, Khomh, Moir (marzo de 2015). "La práctica y el futuro de la ingeniería de versiones". IEEE Software . 32 (2). IEEE Computer Society: 46. doi : 10.1109/ms.2015.52 .
  2. ^ "Detrás de escena: la producción avanza".
  3. ^ John O'Duinn. 2015. La ingeniería de versiones como multiplicador de fuerza. En Actas del Tercer Taller Internacional sobre Ingeniería de Versiones (RELENG '15). IEEE Press, Piscataway, NJ, EE. UU., 1-1.
  4. ^ 2013. Actas del 1er Taller Internacional sobre Ingeniería de Liberación. IEEE Press, Piscataway, NJ, EE. UU.

Lectura adicional