En el desarrollo de software , una compilación es el proceso de convertir archivos de código fuente en artefactos de software independientes que se pueden ejecutar en una computadora, o el resultado de hacerlo. [1]
La creación de software es un proceso de un extremo a otro que implica muchas funciones distintas. Algunas de estas funciones se describen a continuación.
La función de control de versiones lleva a cabo actividades como la creación y actualización del espacio de trabajo, la creación de líneas de base y la generación de informes. Crea un entorno para que se ejecute el proceso de construcción y captura metadatos sobre las entradas y salidas del proceso de construcción para garantizar la repetibilidad y confiabilidad.
Herramientas como Git , AccuRev o StarTeam ayudan con estas tareas al ofrecer herramientas para etiquetar puntos específicos del historial como importantes, y más.
También conocida como análisis de programa estático/análisis de código estático, esta función es responsable de verificar que los desarrolladores se hayan adherido a los siete ejes de la calidad del código: comentarios, pruebas unitarias, duplicación, complejidad, reglas de codificación, errores potenciales y arquitectura y diseño. [2]
Garantizar que un proyecto tenga un código de alta calidad genera menos errores e influye en los requisitos no funcionales como la mantenibilidad, la extensibilidad y la legibilidad; que tienen un impacto directo en el ROI de una empresa. [3]
Esta es sólo una pequeña característica de la gestión del proceso de construcción. La función de compilación convierte los archivos fuente en objetos intermedios o directamente ejecutables. No todos los proyectos requerirán esta función.
Mientras que para los programas simples el proceso consiste en la compilación de un solo archivo , para el software complejo el código fuente puede consistir en muchos archivos y puede combinarse de diferentes maneras para producir muchas versiones diferentes.
En informática , un enlazador o editor de enlaces es un programa de sistema informático que toma uno o más archivos objeto (generados por un compilador o ensamblador ) y los combina en un único archivo ejecutable , archivo de biblioteca u otro archivo "objeto".
Una versión más simple que escribe su salida directamente en la memoria se llama cargador , aunque la carga generalmente se considera un proceso separado. [4] [5]El proceso de creación de un programa informático suele estar gestionado por una herramienta de construcción , un programa que coordina y controla otros programas. Ejemplos de programas de este tipo son make , Gradle , Ant , Maven , Rake , SCons y Phing. La utilidad de compilación normalmente necesita compilar los distintos archivos en el orden correcto. Si el código fuente de un archivo en particular no ha cambiado, es posible que no sea necesario volver a compilarlo ("puede que no" en lugar de "no es necesario" porque puede depender de otros archivos que hayan cambiado). Los enlazadores y utilidades de compilación sofisticados intentan abstenerse de recompilar código que no lo necesita, para acortar el tiempo necesario para completar la compilación. Un proceso más complejo puede implicar que otros programas produzcan código o datos como parte del proceso de construcción y del software.