Durante los últimos 4 años, he estado programando con Eclipse (para Java) y Visual Studio Express (para C #). Los IDE mencionados siempre parecían proporcionar todas las facilidades que un programador podría solicitar (relacionadas con la programación, por supuesto).
Últimamente he estado escuchando sobre algo llamado "herramientas de construcción". Escuché que se usan casi en todo tipo de desarrollo del mundo real. ¿Qué son exactamente? ¿Qué problemas están diseñados para resolver? ¿Cómo es que nunca los necesité en los últimos cuatro años? ¿Son una especie de línea de comando despojado de IDEs?
Las herramientas de compilación generalmente son para transformar el código fuente en binarios: organiza el código fuente, establece indicadores de compilación, administra dependencias ... algunos de ellos también se integran con la prueba de unidad en ejecución, haciendo análisis estático, generando documentación.
Eclipse o Visual Studio también son sistemas de compilación (pero más de un IDE), y para Visual Studio es el msbuild subyacente para analizar los archivos de proyectos de Visual Studio bajo el capó.
El origen de todos los sistemas de compilación parece el famoso 'make'.
Existen sistemas de compilación para diferentes idiomas:
Por lo general, los sistemas de compilación utilizan un lenguaje específico de dominio propio (make, cmake) o xml (ant, maven, msbuild) para especificar una compilación. La tendencia actual es utilizar un lenguaje de secuencias de comandos real para escribir secuencias de comandos de compilación, como lua para premake y groovy para gradle, la ventaja de usar una secuencia de comandos es mucho más flexible y también le permite obtener un conjunto de estándares API (como compilación DSL).
fuente
El Proceso de compilación es un proceso de compilación de su código fuente para cualquier error utilizando algunas herramientas de compilación y creando compilaciones (que son versiones ejecutables del proyecto). Nosotros (principalmente desarrolladores) hacemos algunas modificaciones en el código fuente y registramos ese código para que ocurra el proceso de compilación. Después del proceso de compilación, se obtienen dos resultados: 1. Compila PASSES y obtienes una versión ejecutable de tu proyecto (Build está listo). 2. Falla y obtiene ciertos errores y no se crea la compilación.
Existen diferentes tipos de procesos de compilación como: 1. Compilación nocturna 2. Compilación cerrada 3. Compilación de integración continua, etc.
Las herramientas de compilación ayudan y automatizan el proceso de creación de compilaciones.
* Entonces, en Short Build es una versión de software en formato de prelanzamiento utilizada por el equipo de desarrollo o desarrollo para ganar confianza en el resultado final de su producto al monitorear continuamente su producto y resolver cualquier problema temprano durante el proceso de desarrollo. * *
fuente
Estos son diferentes tipos de procesos mediante los cuales puede realizar sus compilaciones.
1. Integración continua de construcción:En este caso, los desarrolladores registran su código y, justo después de su registro, se inicia una compilación para la compilación de los cambios recientes, por lo que debemos saber si los cambios realizados por el desarrollador han funcionado o no justo después de que se haya realizado el registro. Esto se prefiere para proyectos más pequeños o componentes de los proyectos. En caso de que varios equipos estén asociados con el proyecto o haya un gran no. de los desarrolladores que trabajan en el mismo proyecto, este escenario se vuelve difícil de manejar como si hubiera 'n' no. de check-in y la compilación falla en ciertos puntos, es muy difícil rastrear si toda la rotura se ha producido debido a un problema o con múltiples problemas, por lo que si los problemas anteriores no se abordan correctamente, es muy difícil rastrearlos más tarde defectos que ocurrieron después de ese cambio.
2. Compilaciones de check-in cerradas: en este tipo de check-in, una compilación se inicia justo después de que se realiza el check-in manteniendo los cambios en un conjunto de estanterías. En este caso, si la compilación tiene éxito, se confirma el check-in de conjunto de estanterías; de lo contrario, no se comprometerá con Team Foundation Server. Esto proporciona una imagen ligeramente mejor de la construcción de integración continua, ya que solo los registros exitosos pueden comprometerse.
3. Compilaciones nocturnas: Esto también se conoce como compilaciones programadas. En este caso, programamos las compilaciones para que se ejecuten durante un tiempo específico con el fin de generar los cambios. Todos los cambios no confirmados anteriores de la última compilación se crean durante este proceso de compilación. Esto se practica cuando queremos registrarnos varias veces, pero no queremos una compilación cada vez que registramos nuestro código para que podamos tener un tiempo o período fijo en el que podamos iniciar la compilación para la compilación del código registrado.
Los detalles sobre estas compilaciones se pueden encontrar en la ubicación a continuación.
Verificación cerrada en Builds
Construcciones de integración continua
Construcciones nocturnas
fuente
Los ha estado usando: IDE es una herramienta de compilación. Para la línea de comando puedes usar cosas como
make
.La gente usa herramientas de línea de comandos para cosas como una compilación nocturna, por lo que por la mañana con una resaca el programador se da cuenta de que el código con el que ha estado jugando con las últimas compilaciones de las bibliotecas no funciona.
fuente
"... es muy difícil hacer un seguimiento de lo que se necesita construir" - Las herramientas de construcción no ayudan con todo eso. Necesita saber lo que quiere construir. (Citado de la respuesta de Ritesh Gun)
"Escuché que se usan casi en todo tipo de desarrollo del mundo real". Por alguna razón, a los desarrolladores de software les gusta trabajar en grandes empresas. Parecen tener directivas de trabajo más poco claras para cada individuo que trabaja allí.
"Cómo es que nunca los necesité en los últimos cuatro años". Probablemente porque eres un programador experto.
Pseudo, meta. Creo que las herramientas de compilación no proporcionan ningún beneficio real en absoluto. Simplemente está ahí para agregar una sensación de seguridad derivada de las malas prácticas de la compañía, la falta de dirección: un mal liderazgo arquitectónico del software que conduce a un mal conocimiento real del proyecto. Nunca debería tener que usar herramientas de compilación (para pruebas) en su proyecto. Hacer pruebas aleatorias sin conocimiento del proyecto de software no ofrece ningún tipo de ayuda.
Nunca debe agregar algo a un proyecto sin saber su propósito y cómo funcionará con los otros componentes. Los componentes pueden ser funcionales por separado, pero no funcionan juntos. (Asumo, es responsabilidad del arquitecto de software).
¿Qué pasa si se agregan 4-5 componentes al proyecto? Agrega un sexto componente. Junto con el primer componente agregado, podría arruinar todo. Ninguna automática ayudaría a detectar eso.
No hay otro atajo que pensar pensar pensar.
Luego está la descarga automática de los repositorios. ¿Por qué querrías hacer eso? Necesita saber qué descarga, qué agrega al proyecto. ¿Cómo se detectan cambios en las versiones de los repositorios? Necesitas saber. No puedes "auto" nada.
¿Qué pasaría si tuviéramos que probar bicicletas y transportes de bebés con los ojos vendados con un palo y simplemente golpearlos al azar? Esa parece ser la idea de probar las herramientas de compilación.
Lo siento, no hay atajos https://en.wikipedia.org/wiki/Scientific_method y https://en.wikipedia.org/wiki/Analysis
fuente