Вы находитесь на странице: 1из 42

UNIVERSIDAD MAYOR DE SAN SIMON

FACULTAD DE CIENCIAS Y TECNOLOGIA


DIRECCIÓN DE POSGRADO

“ANALISIS DE HERRAMIENTAS DE
INTEGRACION CONTINUA PARA PROYECTOS
DE SOFTWARE”

TRABAJO FINAL PRESENTADO PARA OBTENER EL


CERTIFICADO DE DIPLOMADO EXPERTO EN DESARROLLO DE
APLICACIONES EMPRESARIALES VERSIÓN I.

POSTULANTE : MARCELO MARCOS VARGAS CHAVEZ


TUTOR : MSC. LIC. VALENTIN LAIME ZAPATA

Cochabamba – Bolivia
2018
Agradecimiento
El inmenso agradecimiento a ti divino Dios, pues nos dirigiste por el mejor
camino de nuestras vidas, nos da salud y sabiduría para alcanzar nuestras
metas. A mis padres quienes me dieron la oportunidad de estudiar y
culminar los estudios. A mi familia quienes con su comprensión y paciencia
me apoyaron y animaron en el desarrollo de este diplomado.
A nuestros docentes por su comprensión y experiencias compartidas que
enriquecieron las clases y su aplicación y un sincero agradecimiento al
licenciado Valentín Laime, el cual contribuyo y gestiono para que este
diplomado se realice.

2
Índice de Contenido
Resumen 5

Introducción 6

1. Antecedentes 8

2. Metodología 8

3. La Integración Continua 11

3.1. Elementos del Sistema de Integración Continua 15

3.3. Ventajas de la Integración Continua 21

3.4. Aspectos negativos de la Integración Continua 22

4. Resultado de los Datos Obtenidos 23

4.1. Criterios de selección para una herramienta óptima de Integración Continua 24

4.2.1. TFS (TEAM FOUNDATION SERVER) 28

4.2.2. JENKINS 29

4.2.3. BAMBOO 31

4.2.3. CIRCLECI 34

5. Conclusión 39

Bibliografia 42

3
Indice de Figuras y Tablas

Figura 1: Correlación de las solicitudes de búsqueda de "Integración continua" 15

Figura 2: Popularidad de la Integración Continua 15

Figura 3: El ciclo de trabajo del servidor Integración Continua 18

Figura 4: Integración de la base de datos 22

Figura 5: Cuadrante de Gartner, distribución de las herramientas de integración continua 29

Figura 6:Interfaz de TEAM FOUNDATION SERVER 31

Figura 7: Tendencia de información de la herramienta TFS 30

Figura 8: Tendencia de información de la herramienta TFS 31

Figura 9: Tendencia de información de la herramienta Jenkins. 32

Figura 10: Tendencia de información de la herramienta TFS 33

Figura 11: Tendencia de información de la herramienta Bamboo. 34

Figura 12: Tendencia de información de la herramienta TFS 35

Figura 13: Tendencia de información de la herramienta CircleCIe 36

Figura 14: Tendencia de información de herramientas Jenkins, Bamboo, CircleCI y TFS 37

Tabla 1: Relación de cuestionario con las técnicas de recolección de información. 10

Tabla 2:Tabla de preguntas Fuente: G2crow 10

Tabla 3: Ventajas y desventajas del uso de la integración continua. 22

Tabla 4: Matriz de decisiones para marcos de integración continua. 35

4
Resumen

Hoy en día, muchas empresas desarrollan software desde un enfoque de conservación en sus
procesos e intentan adaptarse a los nuevos tiempos intentando introducir las nuevas
metodologías en sus proyectos, en especial las metodologías ágiles. En este sentido en el
enfoque que utilizan las empresas, el desarrollador una que vez termina sus implementaciones
ejecuta sus test unitarios al software, después lo envían al área de control de calidad donde se
realizan todas las configuraciones y ambientes necesarios para realizar este trabajo, muchas
empresas aún no conocen la importancia de separar el trabajo y sobre todo el ahorro de costes
y tiempo que supone hacer esto.

Las empresas que aplican su propia metodología, sus propios procesos y gestiones de ciclo de
vida de desarrollo, donde los desarrolladores o los encargados de IT actúan tanto como
desarrolladores como encargados de configuraciones y ambientes por lo que es necesario
introducir una nueva práctica en sus metodologías. En concreto la integración continúa creada
por Martin Fowler, surge con el objetivo de facilitar este trabajo en equipos de desarrollo y
automatización de tareas de integración. La integración continua se basa en la construcción
automática de proyectos con alta frecuencia, promoviendo la detección de errores en un
momento temprano para dar prioridad a corregir dichos errores.

Por tanto, se hace necesaria la implantación de un sistema de integración continua con la


herramienta que mejor se adecue a sus tareas, esto contribuirá a que la empresa pueda
alcanzar el mayor grado de automatización posible en pruebas de proyectos, permitiendo así a
los desarrolladores ahorrar tiempo en estas tareas para centrarse en su trabajo de
desarrollar/implementar código.

5
Introducción

Hoy en día gran cantidad de los proyectos de software que se desarrollan continúan usando
metodologías y procedimientos propios y/o antiguos que dan como resultado productos y
servicios que se entregan con retrasos y/o fallos, dentro del ciclo de vida del software, éste
pasa por diferentes entornos (desarrollo, el entorno de pruebas y producción) y un error común
suele ser el desarrollar el producto dependiente del entorno de trabajo, una vez que el producto
de software es desplegado en otro entorno diferente al de desarrollo, es ahí cuando surgen los
problemas, debido a que no se tienen ambientes homogéneos. Por esto surge la necesidad
de un paso intermedio entre ambos entornos, que es el de pruebas.

Dentro la gran variedad de proyectos y lenguajes de programación con los que se trabaja,
realizar manualmente todos los procesos para que el software llegue a producción se convierte
en una tarea tediosa y poco fiable, lo cual implica un alto coste, no sólo económico sino de
oportunidades debido al tiempo que requiere el proceso hasta lograr desplegarlo en
producción, por estas razones, las empresas necesitan implementar procesos para mejorar la
calidad final del producto reduciendo costes, tiempos y aportando calidad. De aquí surge la
necesidad del uso de la Integración Continua, que es en la actualidad uno de los pilares del
desarrollo de software.

Una vez que la Integración Continua se implementa en una organización cambia


completamente el modo de pensar del equipo acerca del proceso completo de desarrollo de
software, su potencial reside en habilitar y lanzar una serie de procesos de mejora en escala.

La Integración Continua es una práctica de desarrollo de software mediante el cual los


desarrolladores combinan los cambios del código en un repositorio central de forma periódica.
Los objetivos clave de la integración continua consisten en encontrar y arreglar errores con
mayor rapidez, mejorar la calidad del software y reducir el tiempo que se tarda en validar y
publicar nuevas actualizaciones de software.

La naturaleza de esta monografía inicia con una descripción de la Integración Continua como
parte del proceso de desarrollo de software. Mientras que el principal problema es explorar las
herramientas de Integración Continua y hacer una comparación entre ellas mediante criterios
definidos y responder a la pregunta de qué herramienta se adecua a nuestros requisitos.

6
Además de realizar un estudio de la metodología del software donde se aplica la Integración
Continua, el estudio del proceso de Integración Continua no puede llevarse a cabo sin
investigar el campo del proceso de desarrollo de software, esto, incluye un estudio de la
literatura y de las fuentes basadas en la web, con el fin de encontrar criterios y requisitos para
examinar los servidores de Integración Continua.

Finalmente, el objetivo principal de la monografía es mostrar el análisis y la comparación de las


herramientas seleccionadas y elección de una herramienta para la implementación de
Integración Continua que cumpla con nuestros criterios. Por lo tanto, las preguntas de
investigación que se quiere plantear en esta monografía incluyen:

¿Qué criterios son apropiados para examinar las herramientas de IC?


¿Qué herramienta es buena como herramienta básica precisa y sencilla de usar?
¿Qué herramienta se ajusta mejor a las necesidades del proyecto?

7
1. Antecedentes

1.1. Antecedentes Generales


Debido al gran avance tecnológico, el surgimiento de las metodologías ágiles y las distintas
herramientas para el proceso de integración continua que actualmente existen, se presentan
muchas dudas sobre cómo iniciar el proceso de integración continua y fundamentalmente las
herramientas que deben ser tomadas en cuenta durante este proceso sin dejar de darle
importancia al tiempo esfuerzo y coste necesarios, así como a la atención temprana de los
posibles problemas que se presenten durante la integración del proyecto, surgen numerosas
herramientas para la integración continua estos pueden ser usados de acuerdo a los recursos y
entornos que se tengan disponibles, estas herramientas se encuentran disponibles como
software libre o de pago.

1.2. Antecedentes específicos.


El problema de investigación busca guiar el proceso de elección de la herramienta de
integración continua idónea para las necesidades que presenta un determinado proyecto
aplicando las mejores características de la misma para así obtener un producto de calidad en
el menor tiempo posible. Muchas empresas tienen distintas necesidades de un producto de
software, para ayudar a solucionar sus distintos conflictos de integración de código, pruebas,
despliegue,, procesamiento de datos o simplemente reducir el tiempo y costo. La monografía
trata de minimizar estos problemas dando a conocer algunas de las mejores herramientas de
integración continua existentes para el proceso de desarrollo de software.

2. Metodología

El principal problema de investigación de este estudio es mostrar la comparación de las


herramientas de integración continua, el cual se basa en las siguientes preguntas de
investigación:

¿Qué criterios son apropiados para examinar las herramientas de IC?

¿Qué herramienta es buena como elemento básico, preciso y sencillo de usar?

¿Qué herramienta se ajusta mejor a las necesidades del proyecto?

8
Según el libro "Conducting online surveys" de Valerie M. Sue 1, el proceso de investigación
puede dividirse en tres tipos: investigación exploratoria, descriptiva y explicativa, mientras que
los estudios individuales pueden consistir en diferentes propósitos e incluir dos o las tres
categorías de tipos de investigación2.

2.1 La investigación exploratoria tiene como objetivo explorar un tema o un problema,


necesario para identificar un problema, aclarar conceptos, definir los temas involucrados o
llegar a una mayor comprensión de un tema. La exploración puede comenzar con una
búsqueda de literatura, artículos, una discusión de enfoque grupal o casos de estudio, los datos
de los estudios exploratorios tienden a ser cualitativos, la investigación exploratoria es una
primera etapa importante en el proceso de diseño de la investigación.

2.2. La investigación descriptiva se utiliza para describir cosas, acontecimientos o


situaciones, la diferencia entre la investigación exploratoria y la descriptiva es que, cuando se
utiliza la técnica descriptiva, se tiene una idea más clara de lo que se necesita y se buscan
respuestas a preguntas más claramente definidas.

Los estudios descriptivos pueden indicar, por ejemplo, el tamaño de un mercado, la estructura
del mercado, la evolución a lo largo del tiempo, las actitudes de determinados grupos de
personas, etc. Un estudio de este tipo podría comenzar con preguntas como: "¿Qué similitudes
o contrastes existen entre A y B?" Cuando A y B son herramientas diferentes que se utilizan
para los mismos fines.

2.3. La investigación explicativa es buscar explicaciones sobre la naturaleza de ciertas


relaciones, los datos son cuantitativos y casi siempre requieren el uso de una prueba
estadística para establecer la validez de las relaciones, la investigación explicativa aborda las
preguntas de por qué: ¿Por qué la gente elige la marca A y no la marca B? ¿Qué podría

1
"Conducting Online Surveys - Valerie M. Sue, Lois A. Ritter - Google ...."
https://books.google.com.pr/books?id=Nc0gAQAAQBAJ&printsec=copyright&hl=es. Se consultó el 9 dic.. 2018.
2
"Tipos de investigación: Descriptiva, Exploratoria y Explicativa - Noticias." 4 sept.. 2017,
http://noticias.universia.cr/educacion/noticia/2017/09/04/1155475/tipos-investigacion-descriptiva-exploratoria-
explicativa.html. Se consultó el 9 dic.. 2018.

9
explicar esto? Las respuestas de esta investigación a este tipo de preguntas permiten descartar
explicaciones rivales, llegar a una conclusión y ayudar a desarrollar explicaciones causales.

Aplicación de técnicas:

¿Qué criterios son apropiados para examinar las Técnica de Exploración


herramientas de Integración Continua? Técnica de Investigación basado en
datos cuantitativos

¿Qué herramienta es buena como elemento básico,


Técnica Descriptiva y Explicativa
preciso y sencillo de usar?

¿Qué herramienta se ajusta mejor a las necesidades


Técnica Descriptiva y Explicativa
del proyecto?

Tabla 1: Relación de cuestionario con las técnicas de recolección de información.

Fuente: Elaboración Propia

Este estudio puede considerarse como exploratorio, descriptivo y explicativo con datos
cualitativos y cuantitativos recopilados por la investigación documental. Antes de hacer la
comparación y evaluación de las herramientas de Integración.
3
Al final, se recoge datos cualitativos de la plataforma G2 Crowd este es un sitio web que ofrece
“Real Reviews. Real People. Real Time” de revisión de herramientas de Integración Continua
más populares con una audiencia de más de 500.000 usuarios y se utilizará tipos de
investigación exploratoria y descriptiva. El cuestionario consiste en las siguientes preguntas:

3
"Tipos de investigación: Descriptiva, Exploratoria y Explicativa - Noticias." 4 sept.. 2017,
http://noticias.universia.cr/educacion/noticia/2017/09/04/1155475/tipos-investigacion-descriptiva-exploratoria-
explicativa.html. Se consultó el 9 dic.. 2018.

10
Cuestionario de G2crowd

1. ¿Qué es lo que más te gusta?


2. ¿Qué es lo que no te gusta?
3. ¿Qué problemas de negocios estás resolviendo?
4. ¿Para qué fines utiliza esta herramienta en particular?

Tabla 2:Tabla de preguntas


Fuente: G2crow

Según el análisis de la información, nuestro principio básico consiste en los siguientes pasos.

1. Lectura de la información recopilada


2. Identificar patrones, asociaciones y relaciones en las categorías de cada herramienta de
Integración Continua
3. Resumen de los resultados o tabla de comparación.

3. La Integración Continua

El concepto de Integración Continua comenzó a aparecer comúnmente a principios de los años


2000, después de la publicación del artículo Continuous Integration4 por Martin Fowler y
Matthew Foemmel. Sin embargo, esta frase ha sido utilizada por primera vez en "Object-
Oriented Analysis and Design with Applications" (B. Grady, 1994).

Beck realizó una publicación donde puso énfasis en la importancia de Integración Continua
1998 (K. Beck,1998 pp. 1–6). después, Beck describió con precisión la Integración Continua en
su primer libro completo sobre Programación Extrema (1999, K. Beck and C. Anders).

Finalmente, Paul Duvall, Steve Matyas y Andrew Glover continuaron el trabajo relacionado con
la Integración Continua y han anunciado un libro completo sobre el mismo, el cual continúa
siendo uno de los principales recursos sobre la Integración Continua. Actualmente la
Integración Continua se ha convertido en una técnica popular para el desarrollo de software, se

4
"Continuous Integration - Martin Fowler." 1 may.. 2006,
https://martinfowler.com/articles/continuousIntegration.html. Se consultó el 9 dic.. 2018.

11
puede ver el incremento de la tendencia de popularidad basada en el servicio Google trends en
la figura 1.

Figura 1: Correlación de las solicitudes de búsqueda de "Integración continua"

Fuente: Google Trends5 (2104 – noviembre 2018)

También se puede ver el incremento de la tendencia de popularidad basada en el servicio


KWFinder en la siguiente figura 2.

5
"Google Trends." https://trends.google.com/trends/. Se consultó el 9 dic.. 2018.

12
Figura 2: Popularidad de la Integración Continua

Fuente: www.kwfinder.com

Uno de los mayores problemas en el desarrollo de software es la integración 6. En un proyecto


pequeño con un desarrollador no se tiene muchos problemas, pero si se tiene un proyecto de
software en el que varios programadores están haciendo código individualmente y después de
un tiempo necesitan integrarse e implementar sus códigos, este proceso puede causar muchos
errores, conflictos y problemas de calidad, la parte de integración es un proceso impredecible,
puede ser muy costoso y causar retraso al proyecto (2007, P. M. Duvall, S. Matyas, and A.
Glover).
La Integración Continua trata estos riesgos mucho más rápido debido a los pequeños
incrementos diarios en un proyecto, Fowler y Foemmel en su popular artículo
“Continuous integration”7 dan la definición de Integración Continua como:

“La integración continua es una práctica de desarrollo de software en la que los miembros de
un equipo integran su trabajo frecuentemente, por lo general, cada persona íntegra al menos
una vez al día, lo que conduce a múltiples integraciones por día. Cada integración es verificada
por un build automatizado (incluyendo pruebas) para detectar errores de integración lo más

6
"Continuous integration | ThoughtWorks." https://www.thoughtworks.com/continuous-integration. Se consultó el 9
dic.. 2018.
7
"Continuous Integration - Martin Fowler." 1 may.. 2006,
https://martinfowler.com/articles/continuousIntegration.html. Se consultó el 9 dic.. 2018.

13
rápido posible, muchos equipos encuentran que este proceso conduce a una reducción
significativa de los problemas de integración y permite a un equipo desarrollar software
cohesivo más rápidamente."

Según el libro de Duvall (2007, P. M. Duvall, S. Matyas, and A. Glover), esta definición implica
que:

● Para estar seguros de que cualquier cambio en el proyecto no romperá la integración,


los desarrolladores tienen que construir software en sus propias máquinas de trabajo
antes de enviar el código al repositorio de control de versiones.

● Todos los desarrolladores tienen que enviar su código a un control de revisión más de
una vez al día o al menos una vez.

● Una máquina de construcción se utiliza como servidor de Integración Continua, donde la


integración se realiza varias veces al día.

● Cada construcción tiene que pasar el cien por cien de las pruebas para ser reconocida
como elegible.

● La corrección de errores tiene la máxima prioridad.

● Los resultados de la construcción y las pruebas unitarias se publican automáticamente


en un sitio web, como el servidor web de Hudson, donde todos los miembros del equipo
pueden ser informados del estado actual del software.

● Todos los desarrolladores del proyecto pueden ver los resultados actuales de la
integración a través de un sitio web, que se utiliza para notificar a los miembros del
equipo por el software de Integración Continua, como The Jenkins o The Cruise Control.

● Integración Continua reduce la responsabilidad colectiva del grupo y reduce la


complejidad del proyecto, debido a la reducción de la cantidad de trabajo manual
realizado en cada cambio en el software desarrollado.

Cuanto más frecuente se integre, menos trabajo es para todos, e incluye allí dos grandes
objetivos de cualquier esfuerzo de Integración Continua:

1. Para asegurarse de que siempre haya una versión comprobable y estable de su


software que refleje el código más reciente.

14
2. Alertar a los desarrolladores de los problemas de integración lo antes posible.

3.1. Elementos del Sistema de Integración Continua


El proceso de Integración Continua comienza desde que se envía código al repositorio,
cualquier miembro del equipo de un proyecto promedio puede activar el flujo de trabajo, pueden
ser desarrolladores, analistas de bases de datos u otros miembros del equipo, quienes cambian
el código o realizan cualquier cambio en un proyecto. El esquema del ciclo de trabajo del
servidor de Integración Continua general se ilustra en la figura 3 a continuación.

Figura 3: El ciclo de trabajo del servidor Integración Continua

Fuente: Code-maze8

Un sistema Integración Continua promedio tiene los siguientes pasos típicos:

8
"What Is Continuous Integration and Why Do You Need It? - Code Maze." 3 feb.. 2016, https://code-
maze.com/what-is-continuous-integration/. Se consultó el 9 dic.. 2018.

15
1. El desarrollador envía el código al repositorio de control de versiones.

2. El servidor de Integración Continua después de un intervalo de tiempo está


comprobando el repositorio de control de versiones para ver si hay cambios.

3. Cuando el servidor Integración Continua detecta cualquier cambio en el repositorio de


control de versiones, obtiene la última versión de código para luego realiza la
construcción. Se crea un Script, responsable de integrar el software.

4. Después el servidor de Integración Continua envía la retroalimentación con el resultado


del Build a los miembros del equipo de este proyecto. La retroalimentación puede ser
enviada por diferentes métodos, tales como SMS, correo electrónico, etc.

5. Luego, el servidor de Integración Continua regresa al paso 2 y continúa este


comportamiento antes de que ocurra cualquier cambio en el repositorio.

Las siguientes anotaciones aclaran elementos del flujo de trabajo de Integración Continua (2007,
P. M. Duvall, S. Matyas, and A. Glover).

a. La regla de los desarrolladores es ejecutar construcciones privadas. Cada desarrollador


tiene que ejecutar builds locales después de terminar sus tareas, si esta nueva
implementación con el resto del código del equipo tiene éxito, se envía el código al
repositorio de control de versiones, esto evita el envío de un código roto.
b. El repositorio de control de versiones es una parte esencial del sistema Integración
Continua entre los más populares git, svn, mercurial. Todos los proyectos de software tienen
un repositorio de control de versiones, el objetivo principal de este repositorio es controlar los
cambios en el código fuente y otros elementos de software.
c. El Servidor de Integración Continua es la parte más importante de todo el sistema, crea
un Build de integración cuando se realiza cualquier cambio en el repositorio. Normalmente el
servidor está configurado para seguir cualquier cambio en el repositorio de control de
versiones en pocos minutos. Por otro lado, se puede reducir el retraso configurando un nexo
de confirmación de mensajes. Por lo tanto, el Repositorio de control de versiones puede
notificar al servidor Integración Continúa indicando que es necesario crear una compilación,
que obtenga archivos de código fuente y ejecute scripts de construcción.
d. El Build Script puede ser uno solo o un conjunto de scripts, que se utilizan para compilar,
inspeccionar e implementar software. El script de construcción puede ser utilizado incluso sin

16
el sistema Integración Continúa implementado. Las herramientas de script de construcción
más famosas se llaman Ant, NAnt, MSbuild, Rake y Make. Estas herramientas hacen que el
ciclo de construcción del software sea automático, por lo que ahorra mucho tiempo a los
desarrolladores.
e. El mecanismo de retroalimentación se considera como una de las tareas más
importantes, porque proporciona resultados inmediatos después de la creación del Build de
integración. Si la retroalimentación muestra que la compilación falló, los desarrolladores
pueden empezar a arreglar el problema inmediatamente. La retroalimentación se puede dar
al usuario de diferentes maneras. Por ejemplo, la forma simple es un SMS o correo
electrónico, etc.
f. La máquina de Build de integración es una máquina que se utiliza sólo para una tarea
asignada: ser responsable de la integración de software. La máquina de Build de integración
contiene el servidor de Integración Continua, que rastrea cualquier cambio en el repositorio
de control de versiones.

3.2 Proceso de Integración

De acuerdo con "Continuous Integration: improving software quality and reducing risk" de
Duvall (2007, P. M. Duvall, S. Matyas, and A. Glover), hay cuatro características obligadas que
se utilizan para implementar Integración Continua.

En primer lugar, es una conexión a un repositorio.

En segundo lugar, se necesita construir un script, por tanto, es importante tener algún
mecanismo de retroalimentación, también se necesita un servidor Integración Continua para la
integración de los cambios en el código fuente. Estas características obligatorias son
consideradas como el comportamiento básico para un sistema de Integración
Continua exitoso. A continuación se explican los componentes del proceso de integración.

1. La compilación es un proceso de creación de código , la compilación del código fuente


depende del tipo de lenguaje de programación de un proyecto, el proceso de
compilación puede variar si utiliza un lenguaje dinámico en su desarrollo de software,
por ejemplo Python, PHP y Ruby, cuando se utiliza estos lenguajes, no crea código

17
binario, sino que realiza una comprobación estricta, que puede considerarse como
compilación en este caso, los lenguajes dinámicos tienen algunos beneficios en otras
acciones durante una compilación.

2. La integración de bases de datos es uno de los detalles más esenciales de la


aplicación de software, debe participar en la fase de integración, la implementación del
sistema de Integración Continua puede garantizar la integración de la base de datos por
medio de un repositorio de control de versiones en un proyecto. En este caso, el
repositorio sirve como fuente donde se une todo.

La integración continua en bases de datos incluye tres principios fundamentales de


funcionamiento:

● Verifica el estado de la base de datos después de realizar los cambios.


● Siempre realiza pruebas después de que se han aplicado los cambios.
● Se actualiza cuando se realizan cambios en una base de datos de destino.

La combinación de estas técnicas muestra que la integración continua puede detectar cualquier
problema que no haya sido detectado por el administrador de la base de datos desde la
implementación hasta la producción, en la figura 4, se puede ver el proceso de trabajo de
Integración Continua, donde proporciona la integración de la base de datos durante el build.

18
Figura 4: Integración de la base de datos

Fuente: https://en.ppt-online.org

3. Las pruebas automatizadas los desarrolladores evalúan los cambios, estas pruebas
detectan la mayoría de los problemas graves en el proyecto, las herramientas tales
como JUnit, NUnit, TestNG y xUnit se consideran las herramientas más comunes de las
prueba de unidad, además, la mayoría de estas herramientas producen informes
completos a los usuarios y vienen en forma de gráficos o páginas web.
La prueba unitaria comprueba la fiabilidad del código, además de eso, hay otros tipos
de prueba, como pruebas de componentes que comprueba la funcionalidad y los
defectos de búsqueda en una aplicación, también existe pruebas de sistema que
comprueba los requisitos funcionales y no funcionales de todo el sistema.

19
4. La inspección es el análisis del código basado en un conjunto de reglas
predefinidas. La inspección automática de códigos puede utilizarse para mejorar la
calidad del software utilizando reglas específicas por ejemplo una regla para el tamaño
de la clase no puede exceder más de 5000 líneas de código no comentado en un
proyecto. La inspección se utiliza para comprobar la corrección del código escrito y su
duplicación, además se utiliza para mantener intactas las capas arquitectónicas. La
inspección continua reduce el período de tiempo entre la detección y la resolución del
problema.
5. El proceso de despliegue típico se divide en seis pasos. El primer paso son los
elementos del repositorio por ejemplo las etiquetas (tag en git), que normalmente se
realiza al final de la fase de proyecto.
El segundo paso es mantener el ambiente (server) limpio. Esto significa que es
necesario mantener buenas condiciones para lograr una integración exitosa mediante la
eliminación de todos los archivos, servidores, cambios de figuración de la máquina de
integración.
El tercer paso es hacer y marcar una compilación desde el repositorio de control de
versiones e instalarla en el equipo de destino.
El cuarto paso es lograr pruebas automatizadas exitosas las cuales son: prueba
unitaria, prueba funcional, prueba de sistema y prueba de componentes, estas son
ejecutados por desarrolladores para asegurarse de que el software está listo y puede
ser utilizado en la siguiente etapa de desarrollo o puede ser proporcionado al cliente.
El quinto paso es generar informes de retroalimentación de construcción automatizados.
En el sexto paso se revisa la posibilidad de retroceder la construcción. Esto significa
que si algo fuera de lo normal, se debe entregar la última versión viable al usuario. Si
todos estos pasos han sido superados, obtendrá una implementación exitosa.

El mejor tipo de documentación para el código fuente es la capacidad de escribir un código


simple y corto con clases apropiadas, variables y métodos, la integración Continua simplifica el
proceso de creación de documentación, las herramientas tales Maven, JavaDoc y NDoc se
utilizan a menudo para escribir la documentación, además, estas herramientas también
pueden proporcionar diagramas de clases y otra información relacionada con el desarrollo de
software basándose en el código fuente comprometido en el repositorio de control de

20
versiones, usando todas estas herramientas, puede obtener importantes beneficios como
recibir documentación de código fuente y estado del proyecto en tiempo real.

3.3. Ventajas de la Integración Continua


En general, el uso de la Integración Continua trae muchos beneficios al desarrollo de software.
Mark Duvall en su libro (2007, P. M. Duvall, S. Matyas, and A. Glover) distingue cinco
propiedades principales de CI.

Una de las mayores propiedades de la Integración Continua es la reducción del riesgo, esto
se logra gracias a las frecuentes Interacciones durante el día, facilita la detección de problemas
en el proyecto y la monitorización del estado del software. También reduce los riesgos de
software de baja calidad, la falta de visibilidad del proyecto y el riesgo de detección tardía de
defectos. Algunos defectos o errores se detectan antes; debido a inspecciones, integraciones y
realización de pruebas varias veces al día.

La integración continua reduce los procesos manuales repetitivos y automatiza los


procesos repetitivos, estos procesos incluyen compilación de código, pruebas, integración de
bases de datos, inspección, implementación y retroalimentación.

Generación de software desplegable en cualquier momento, la importancia del software


desplegable es muy alta, ya que es una de las características más importantes para los
clientes.

Permite una mejor visibilidad del proyecto y hace que el proyecto sea más transparente
para el equipo durante el desarrollo, gracias a la información actualizada, es cada vez más fácil
dirigir un proyecto de forma más eficaz, aporta efectos positivos como decisiones efectivas y
revela tendencias, dado que la integración es un proceso muy frecuente, es más fácil notar
todas las tendencias, que se basan en Builds exitosas o fallidas, la calidad general también
mejora gracias a la Integración Continua.

Establece una mayor confianza en el producto y da gran confianza en el proceso de creación


de software, el conocimiento del cambio de código hace que todos los miembros del equipo
tengan más confianza en sus acciones.

21
3.4. Aspectos negativos de la Integración Continua
Algo que es una cierta desventaja, es que el servidor Integración Continua necesita
mantenimiento, requiere ser actualizado para nuevas características, los discos se llenan o el
usuario que ejecuta el servidor necesita autorizaciones, cuanto más servidores y software se
tengan significan más mantenimiento. Otra aspecto negativo es que se convierte en un "punto
de fallo" es decir si el servidor de Integración Continua deja de funcionar, todo se detiene.

Puede seguir trabajando en una PC local, pero no se puede realizar la integración. Si se


requiere arreglar algo urgente en producción o tiene un problema, puede que no sea sólo el
servidor de integración Continua, sino una de sus dependencias que falla. Por ejemplo, no se
puede acceder a la distribución de archivos en la que se encuentra la compilación, o no puede
extraer el último incremento (por alguna razón).

Hay algunos aspectos negativos, Duvall presenta en su libro una combinación de diferentes
circunstancias (2007, P. M. Duvall, S. Matyas, and A. Glover).

A menudo se considera que el sistema de Integración Continua está aumentando el costo total
del proyecto. Sin embargo, los proyectos actuales tienen fases como la integración, pruebas,
inspección y despliegue a pesar de la ausencia del sistema de Integración Continua. Es mucho
más fácil controlar un sistema de Integración Continua fiable que intentar gestionar procesos
manuales.

La aplicación incorrecta de la práctica de integración continua puede conducir a muchas


construcciones fallidas, generalmente, sucede cuando los desarrolladores no crean
compilaciones locales antes de enviar su código al repositorio. Por ejemplo, el desarrollador
puede enviar archivos dañados que conducen al fracaso de las pruebas.

Se ha revisado diferentes fuentes y generado este cuadro resumen de ventajas y desventajas de la


integración continua:

22
Desventajas
Ventajas

● Permite identificar fallos en el ● Sobrecarga por el mantenimiento del


entorno de producción en sistema. (Los problemas de integración son
etapas tempranas. detectados inmediatamente)
● El repositorio deja de ser ● Necesidad potencial de un servidor
estático dentro del proyecto, dedicado a compilar
para convertirse dinámico ● El impacto inmediato al subir código
● Los problemas de integración erróneo provoca que los desarrolladores no
son detectados inmediatamente suban código frecuentemente como sería
● Disminuye el tiempo de conveniente como copia de seguridad
retroalimentación de errores ● Implica introducir una nueva filosofía de
con el cliente. desarrollo
● Aumenta la confianza de los ● No todos utilizan correctamente los
desarrolladores al subir el repositorios.
código al control de versiones
● Constante disponibilidad de las
compilaciones realizadas

Tabla 3: Ventajas y desventajas del uso de la integración continua.

Fuente: Elaboración Propia

4. Resultado de los Datos Obtenidos

Debido al rápido crecimiento y a la gran variedad de opciones en el mercado de la tecnología


de la información, la selección de las herramientas adecuadas se está convirtiendo en una
tarea muy difícil.

A principio del proceso de elección de la herramienta para la implementación de la Integración


Continua no son claros y definidos, es importante averiguar qué cualidades que se requieren al
seleccionar las herramientas. Debido a este problema, se tratará de determinar qué criterios,
requisitos y características de las herramientas de Integración Continua son comunes, óptimos
e importantes a pesar de las diferencias entre proyectos.

23
El análisis se inicia describiendo los principales requisitos para evaluar las herramientas de
Integración Continua basadas en la selección de literatura, incluyendo el libro de Duval’s (2007,
P. M. Duvall, S. Matyas, and A. Glover), los foros web y algunas plataformas de Internet, donde
la gente comparte opiniones, luego se presentará una descripción de las herramientas de
Integración Continua a partir de la información recopilada, al final teniendo los dos pasos
anteriores presenta una tabla comparativa.

4.1. Criterios de selección para una herramienta óptima de Integración


Continua
Paul Duvall, en su libro "Continuous Integration: Improving Software Quality and Reducing Risk"
(2007, P. M. Duvall, S. Matyas, and A. Glover), afirma que la mejor herramienta de Integración
Continua debe ahorrar tiempo y costes de un proyecto, también una buena herramienta debe
servir al equipo de desarrolladores en muchos proyectos, aunque no siempre es así, afirma que
la elección de la herramienta no es un contrato de por vida, sino que sólo significa que la
herramienta debe ajustarse a sus necesidades y que se debe saber cómo trabajar con ella.

La funcionalidad es uno de los factores más importantes a la hora de elegir una herramienta
de Integración Continua.

Estas son sus características.

● La ejecución del Build es la característica de funcionalidad básica de la herramienta


Integración Continua. Duvall afirma que el verdadero sistema de Integración Continua
debe ser del tipo de ejecución de build impulsada por eventos. Esto significa que la
compilación se realiza después de realizar cualquier cambio en el repositorio, puede ser
una buena opción, pero puede requerir tiempo adicional configurando el repositorio de
control de versiones, mientras que en un sistema impulsado por sondeo no es
necesario.

● El mantenimiento del sistema de control de versiones, que se utiliza en un desarrollo,


es un factor importante. Debemos prestar atención a factores como la forma en que la
herramienta de Integración Continua interactúa con los métodos de uso de los
repositorios. Al menos, el servidor Integración Continua tiene que reconocer los archivos
modificados y sus versiones.

24
● La retroalimentación es un factor clave de la Integración Continua, soporta diferentes
tipos de retroalimentación; sólo tiene que considerar el sistema con las opciones
apropiadas que encajan en un proyecto.

● La interfaz de usuario no es un criterio esencial para la herramienta, aunque debe


tenerse en cuenta en gran medida, ya que una interfaz bien diseñada puede ahorrarle
tiempo en los primeros períodos mientras trabaja con la herramienta de Integración
Continua, la interfaz de usuario puede ser una interfaz de aplicación web u otra interfaz.

● Las características de seguridad son incorporadas en las diferentes herramientas


dentro su sistema, lo que significa que estas herramientas incluyen autenticación y
autorización, que permiten el acceso de control a la revisión de resultados y la
modificación de la configuración.

● Extensibilidad, esto significa la posibilidad de ampliar la funcionalidad que puede ser


un factor significativo a la hora de elegir una herramienta de Integración Continua.

● Construya la integración de herramientas.

● Construya el etiquetado (tags en git).

La compatibilidad es un criterio que define qué tan bien se integra la herramienta de


Integración Continua con otros elementos del proceso de desarrollo.

La fiabilidad es importante, porque una herramienta de Integración Continua con un largo


periodo de existencia en el mercado y una buena reputación sería una opción más fiable que
una herramienta que todavía está en estado de versión beta y que acaba de aparecer en el
mercado.

La longevidad es un factor que afecta al futuro de la herramienta, mientras que la fiabilidad


hace que la atención se centre en el pasado y el presente de la vida útil de la herramienta.

La usabilidad. Si la herramienta es fácil de configurar y usar, significa mucho para el usuario a


momento de usar la herramienta.

El dinero es siempre relevante puede ser libre, de código abierto o comercial, hoy en día,
hay un montón de software libre y comercial disponible en el mercado, una herramienta
comercial no siempre es mejor que la gratuita es necesario compararlos para elegir.

25
4.2. Herramientas de integración continua

En este punto, se ha explorado diferentes fuentes web. Principalmente, se estudia las


tendencias de Google, Guru999, Code-Maze10, TestingHelp y plataformas Stackshare11 y G2
Crowd. Se ha seleccionado cuatro herramientas más populares.

La plataforma G2 Crowd que presenta el cuadro de Gartner con sus cuadrantes:

Líderes: aquí se encuentran los proveedores que mayor puntuación han obtenido como
resultado de combinar su gran capacidad de visión del mercado y la habilidad para ejecutar.
Estas empresas ofrecen una solución de productos amplia y completa, que además son capaz
de evolucionar según la demanda en el mercado.

Retadores o aspirantes: estos proveedores ofrecen buenas funcionalidades pero tienen menor
variedad de productos al estar centrados en un único aspecto de la demanda del mercado.

Visionarios: estos se pueden asemejar a los líderes en su capacidad para anticiparse a las
necesidades del mercado, pero no disponen de medios suficientes para realizar implantaciones
globales.

Jugadores de nicho: en último lugar, se encuentran estos stakeholders que no llegan a puntuar
lo suficiente en ninguna de las dos categorías.

9
"20 Best Continuous Integration(CI) Tools in 2018 - Guru99." 31 oct.. 2018, https://www.guru99.com/top-20-
continuous-integration-tools.html. Se consultó el 9 dic.. 2018.
10
"Top 8 Continuous Integration Tools - Code Maze." 20 feb.. 2016, https://code-maze.com/top-8-continuous-
integration-tools/. Se consultó el 9 dic.. 2018.
11
"Top 8 Continuous Integration Tools - Code Maze." 20 feb.. 2016, https://code-maze.com/top-8-continuous-
integration-tools/. Se consultó el 9 dic.. 2018.

26
Figura 5: Cuadrante de Gartner, distribución de las herramientas de integración continua

Fuente: https://www.g2crowd.com

27
4.2.1. TFS (TEAM FOUNDATION SERVER)

Figura 6:Interfaz de TEAM FOUNDATION SERVER

Fuente: Elaboracion Propia

Se abrevia a TFS es un producto de Microsoft. Es una herramienta colaborativa que consiste


en los repositorios de código, la integración continua y el seguimiento de errores o tareas.
TFS12 trabaja en entornos como Eclipse, Xcode, Visual Studio o en Git Client. También es
compatible con lenguajes como Python, C#, HTML, Java y varios otros también.

Está disponible para descargar gratuitamente, pero bajo licencia de prueba.


Soporta muchos lenguajes de programación como Python, C#, HTML, Java y varios otros,
trabaja en cualquier entorno como Visual Studio, Xcode, Eclipse, o cualquier cliente git, puede
trabajar con eficacia.

La figura 6 muestra la tendencia de la TFS en el mundo desde 2014 hasta noviembre del 2018,
según google trends.

12
"Continuous Integration and Continuous Deployment ... - SAP Blogs." 19 jun.. 2018,
https://blogs.sap.com/2018/06/19/continuous-integration-and-continuous-deployment-using-tfs-part-1/. Se consultó
el 9 dic.. 2018.

28
Figura 7: Tendencia de información de la herramienta TFS

Fuente: Google Trends

4.2.2. JENKINS

Figura 8: Interfaz Jenkins


Fuente: Elaboración Propia

29
Jenkins es el servidor de Integración Continua de código abierto basado en la plataforma Java
más usado, cuyos principales objetivos son construir y probar software de forma continua y
monitorizar las ejecuciones de trabajos ejecutados externamente13.

La herramienta simplifica el proceso de integración de cambios en el proyecto y entrega de


nuevas construcciones a los usuarios, Hay más de 1200 plugins disponibles, que amplían la
funcionalidad de Jenkins14, la comunidad de Jenkins está formada por más de 100.000
usuarios.

Jenkins ocupa el primer y segundo lugar entre las herramientas más populares en los portales
G2 Crowd y Stackshare de hoy, y según el estudio de ZeroTurnAround, Jenkins tiene una
posición de 70% entre otras herramientas en el mercado, las compañías más notables como:
Facebook, Sony, Yahoo, Ebay, Netflix, Tumblr, Linkedin, Vine, Hootsuite, Etsy usan jenkins .

Según el sitio web oficial, Jenkins ofrece las siguientes características:

1. Fácil instalación.

2. Fácil configuración: Jenkins puede ser configurado completamente desde su interfaz


gráfica de usuario web.

3. Abundantes herramientas de plugin: Jenkins se integra con prácticamente todos los


controles de servicio o construir la herramienta que existe.

4. Extensibilidad: La mayoría de las partes de Jenkins pueden ser extendidas y modificadas, y


es fácil crear nuevos plugin, Jenkins permite personalizar acorde para las necesidades.

5. Construcciones distribuidas: Jenkins puede distribuir cargas de construcción/prueba a


múltiples computadoras que se ejecutan bajo diferentes sistemas operativos (OS X, Linux y
Windows).

Según G2 Crowd, la mayoría de los usuarios de Jenkins afirman que están muy contentos con
este producto, afirman que Jenkins es una herramienta muy poderosa con una configuración
inicial fácil y sencilla.

La figura 7 muestra la tendencia de Jenkins en el mundo desde 2014 hasta hoy, según google
trends.

13
"Jenkins User Documentation." https://jenkins.io/doc/. Se consultó el 9 dic.. 2018.
14
"Jenkins Plugins." https://plugins.jenkins.io/. Se consultó el 9 dic.. 2018.

30
Figura 9: Tendencia de información de la herramienta Jenkins.

Fuente: Google Trends

4.2.3. BAMBOO

Figura 10: Interfaz Bamboo

Fuente: Elaboración Propia

31
Bamboo es una herramienta comercial de integración continúa desarrollada por Atlassian, pero
es gratuita para proyectos de código abierto. Conecta los Builds, pruebas y liberaciones
automatizadas en un solo flujo de trabajo, Bamboo es compatible con cualquier lenguaje y otras
tecnologías como AWS CodeDeply, Docker, Amazon S3, Maven, Ant, Git, Mercurial, y SVN.

Bamboo15 una vez que encuentra nuevas ramas en los repositorios Git, Mercurial y SVN, aplica
automáticamente el esquema Integración Continua de la rama principal, proporciona a los
despliegues un tratamiento de primera clase, la integración con Amazon S3, los agentes
Docker listos para usar y las tareas de AWS CodeDeploy y Docker hacen que el proceso de
implementación sea más rápido y sencillo.

Bamboo proporciona una buena integración con Jira con la capacidad de extenderse aún más,
se puede ampliar con plugins en el directorio de la misma manera que Jenkins, Las
notificaciones de compilación pueden modificarse en función del tipo de evento y enviarse por
correo electrónico, mensajes instantáneos, RSS o ventanas emergentes, Bamboo facilita la
migración desde Jenkins

Las siguientes empresas usan Bamboo: National Public Radio, LeapFrog, Williams Sonoma,
Cisco, BMW, Kaiser Permanente, NASA].

Según G2 Crow, los usuarios de Bamboo dan buenas referencias, que es una herramienta muy
flexible con una buena integración de productos Atlassian, como Jira y Fisheye. La
documentación sobre Bamboo es buena y detallada, proporciona un apoyo y soporte excelente.

Es fácil de configurar, soporta muchos lenguajes de programación populares y proporciona


múltiples métodos de notificación, Bamboo trabaja rápida y eficientemente cuando la
configuración y el entorno están correctamente configurados, por otro lado, tiene momentos
negativos cuando el proyecto no es de código abierto, Bamboo sólo estará libre durante los
primeros siete días, la interfaz de usuario no es buena y esperan que Atlassian se centre más
en las aplicaciones móviles.

La primera experiencia laboral con Bamboo puede ser complicada, para algunos de los
usuarios el proceso de configuración fue difícil y no lo suficientemente claro como para

15
"Continuous Integration and Deployment (CI/CD) with Bamboo & API" https://apifortress.com/continuous-
integration-and-deployment-cicd-with-bamboo-api-fortress/. Se consultó el 9 dic.. 2018.

32
entenderlo.
La siguiente figura muestra la tendencia de la Bamboo en el mundo desde 2014 hasta hoy,
según google trends.

Figura 11: Tendencia de información de la herramienta Bamboo.

Fuente: Google Trends

33
4.2.3. CIRCLECI

Figura 12: Interfaz de CircleCI.


Fuente: Elaboración Propia

CircleCI facilita la configuración y el mantenimiento sin problemas, facilita el desarrollo para los
equipos de software en términos de construcción, pruebas y despliegue rápido y sistemático a
través de diferentes plataformas, soporta todo tipo de pruebas de software, incluyendo entornos
web, móviles y de contenedores, CircleCI16 hace que el proceso de Integración Continua sea
simple y fácil para cualquier empresa.

Las siguientes compañías utilizan CircleCI: RedBull, Kickstarter, Stripe, Percolate, Teespring,
BOOTH, Couchsurfing, Harvest, Vusay y Gazelle.

16
"Continuous Integration with Circle-CI - Tooling - JuliaLang." 13 jun.. 2018,
https://discourse.julialang.org/t/continuous-integration-with-circle-ci/11642. Se consultó el 9 dic.. 2018.

34
CircleCI se integra con GitHub, Heroku, Amazon EC2, Rackspace Cloud Servers, Joyent Cloud,
Engine Yard Cloud, Nodejitsu, AppFog, dotCloud, en base del cuestionario de Stackshare, las
siguientes caracteristicas de CirleCI son las más destacadas:

● Integración con Github, construcciones rápidas, fácil configuración, precios


competitivos, integración lenta, excelente soporte al cliente, soporte para dockers.

Características de CircleC:

● Configuración rápida. El proceso de configuración es de unos 20 segundos. CircleCI


detecta probar la configuración de una amplia gama de aplicaciones web con un solo
clic y, a continuación, la configuración en los servidores CircleCI se instalan
automáticamente.

● Personalización profunda. Los ajustes de CircleCI son muy flexibles, lo que permite un
ajuste fácil casi todo lo necesario.

● La depuración se hace con facilidad. Cuando las pruebas se corrompen, CircleCI ayuda
a repararlos. Detecta automáticamente los errores y proporciona una gran ayuda.

● Notificaciones inteligentes. Puede notificar de forma inteligente a través de correo


electrónico, Hipchat, Campfire y otras fuentes, las notificaciones sólo contienen
información relevante.

● Soporte rápido. CircleCI responde a las peticiones de soporte muy rápido, los usuarios
no necesitan esperar más de 12 horas para recibir una respuesta.

● Paralelización automática. CircleCI puede paralelizar automáticamente las pruebas con


hasta 4 flujos paralelos a través de varias máquinas.

● Despliegue continuo, construcción de artefactos, entornos de construcción limpios,


GitHub integración, pruebas rápidas, soporte gratuito de código abierto.

Según las revisiones de G2 Crowd, CircleCI17 es una herramienta intuitiva y extremadamente


útil, incluso para algunas personas es más rápido que Travis y más simple que Jenkins, se
caracterizan por ser rápidos, fáciles de poner en marcha y beneficiosos para los procesos de
desarrollo, también, su documentación es buena y cuando se tiene preguntas, el apoyo de

17
"Continuous Integration with Circle-CI - Tooling - JuliaLang." 13 jun.. 2018,
https://discourse.julialang.org/t/continuous-integration-with-circle-ci/11642. Se consultó el 9 dic.. 2018.

35
CircleCI es muy rápida. Tiene un período de prueba gratuito de 14 días para probarlo. La
interfaz de usuario es muy limpia y fácil de entender, con un aumento de la velocidad de las
pruebas paralelas, posee configuraciones prefabricadas con buena integración a GitHub, con
notificaciones oportunas y útiles, que pueden ser enviadas por correo electrónico, chat y
notificaciones de webhook.

Por otro lado, hay algunas desventajas. Por ejemplo, hubo algunos casos en los que las
pruebas se interrumpieron debido a las actualizaciones de CircleCI. Aunque, es una pequeña
queja, pero sería mejor si fuera posible definir una variable de entorno para todos los proyectos.
Algunas veces no se pueden pasar las pruebas porque se requiere alguna configuración extra,
CircleCI18 envía notificaciones a muchos correos electrónicos cada vez que se realiza una
pulsación, algunas experiencias señalan que no era tan cómoda y que podía mejorarse,
además no siempre se actualiza con las últimas versiones del kit de desarrollo de java.
La siguiente figura muestra la tendencia de la CircleC en el mundo desde 2014 hasta octubre
de 2018, según google trends.

Figura 13: Tendencia de información de la herramienta CircleCI

Fuente: Google Trends

18
"CircleCI Careers, Funding, and Management Team | AngelList." https://angel.co/circleci. Se consultó el 10 dic..
2018.

36
En la figura 10 muestra la tendencia de búsqueda de información sobre las herramientas de
integración continua dese 2014 a octubre del 2018, donde se observa que Jenkins es la opción
más buscada en cuanto a información se refiere.

Figura 14: Tendencia de información de herramientas Jenkins, Bamboo, CircleCI y TFS

Fuente: Google Trends (2014 – octubre 2018)

37
4.3. Matriz de decisiones para Entornos de trabajo para de integración continua

Además de los criterios de presencia, se trató de mostrar la relación de unas herramientas con
otra funcionalidad limitada en este tipo de criterios.
La tabla utiliza varios criterios para mostrar la relación y comparación de cuatro herramientas
de Integración Continúa seleccionadas, se puede ver claramente que el Jenkins tiene la mayor
cantidad de puntos que otros tres instrumentos, además, se puede ver que no hay diferencias 19
significativas en los criterios, mientras que la comparación se puede realizar en función de la
relación entre ellos. Por ejemplo, Jenkins proporciona la mayor extensibilidad en comparación a
otras herramientas, debido a este hecho, se le asignaron más puntos.
Esta sección presenta la tabla comparativa con las herramientas de integración continúa
investigadas.

Herramientas Seleccionadas Otras herramientas

Criterio Jenkins Bamboo CircleCI TFS Travis Codeship

GitHub ✓ ✓ ✓ ✓ ✓ ✓

Otros repositorios ✓ ✓ ✓ ✓ ✓ ✓

Multi-lenguage ✓ ✓ ✓ ✓ ✓ ✗

Retroalimentación ✓ ✓ ✓ ✓ ✓ ✓

Usabilidad ✗ ✓ ✓ ✓ ✓ ✓

Seguridad ✓ ✓ ✓ ✓ ✓ ✓

Extensibilidad ✓✓✓ ✓ ✓ ✓ ✓ ✓

Compatibilidad ✓✓✓ ✓✓ ✓ ✓ ✓ ✓

Confiabilidad ✓✓✓ ✓ ✓ ✓ ✓ ✓

Longevidad ✓✓✓ ✓ ✓ ✓ ✓ ✓
(durabilidad)

Comercial ✗ ✓ ✓ ✓ ✓ ✓

19
"Continuous everything in DevOps…what is the difference ... - Accenture." 23 sept.. 2015,
https://www.accenture.com/us-en/blogs/blogs-continuous-everything-devops. Se consultó el 10 dic.. 2018.

38
Totalmente gratis ✓ ✓ ✓ ✓ ✓ ✓

De Prueba (Trial) ✗ ✗ ✓ ✓ ✓ ✗

Código abierto y ✓ ✓ ✓ ✗ ✗ ✗
gratuito

Soporte ✗ ✓ ✗ ✓ ✓ ✓

Periodo de inicio ✗ ✓ ✓ ✗ ✗ ✗
fácil

flexibilidad ✓ ✗ ✓ ✓ ✗ ✗

Comunidad ✓✓✓ ✗ ✗ ✗ ✗ ✗

Tabla 4: Matriz de decisiones para marcos de integración continua.

Fuente: Elaboración Propia

5. CONCLUSIÓN

Este análisis se basa en las principales cualidades y criterios para considerar las herramientas
existentes. Además, se ha explorado las páginas oficiales de las herramientas de Integración
Continua, un gran número de revisiones de las cuales se ha resumido la información recopilada
en una sola descripción, se ha llegado al punto en el que se comenzará a presentar la solución
y elección entre las alternativas seleccionadas.

En consecuencia, la elección no fue tan fácil, ya que Jenkins, CircleCI, TFS y Bamboo
proporciona una gran cantidad de valiosos servicios y características importantes. Aunque,
Bamboo no tiene tantas desventajas, la decisión final fue de Jenkins.

Jenkins fue preferido sobre las otras herramientas seleccionadas y analizadas, este genera un
presupuesto seguro y proporciona un conjunto de herramientas de Integración Continua para
principiantes.

Entre las características principales que tiene Jenkins, es un proyecto de código abierto
gratuito, este es el factor más común e importante entre las personas que hacen uso o buscan

39
una herramienta de integración continua, otra virtud de Jenkins es que proporciona gran
flexibilidad a varias metodologías de desarrollo diferentes y tiene todas las características que
un desarrollador podría necesitar, posee más de 1200 plug-ins que permiten al usuario montar
la configuración deseada.

Jenkins también tiene una comunidad grande y muy activa con tendencia a mejorar
constantemente, es una buena herramienta para comenzar a entender qué criterios son los
más apropiados e importantes, y luego cambiar o elegir una nueva herramienta de Integración
Continua, Bamboo y CircleCI en comparación con Jenkins tienen mejor interfaz de usuario y
funcionan mejor, en caso de que se instale una gran cantidad de plugins, esto en Jenkins se
vuelve lento, Bambo y CircleCI cuenta con un mejor servicio de apoyo, el soporte es inmediato.
Otro factor para que Jenkins sea elegido es el hecho de encontrar respuesta a la mayoría
de los problemas de integración que se encuentren en su proyecto. Dentro el área de
integración continua la vida útil de Jenkins es mayor en comparación a las herramientas
relativamente antiguas, como el travis, se desvaneció.

Basándonos en la investigación, se puede afirmar que Jenkins, además de que es la opción


perfecta como herramienta de inicio, se puede afirmar que es una buena herramienta y que es
funcional. Jenkins definitivamente se ajusta a los requisitos y criterios.

Se espera que después de leer, los resultados de la encuesta ayuden a tomar una decisión
sobre la herramienta a algún desarrollador o al menos a conseguir algo de comprensión.
Se tomaron las herramientas de Integración Continua más recientes y actuales en el mercado
y en algunas fuentes de investigaciones disponibles.

Después de responder a las preguntas de la monografía, es posible proporcionar una opinión


sobre la elección de la herramienta ideal de Integración Continua, como la más efectiva y
universal, antes de probar al menos una de ellas, ya que cada caso considerable tiene sus
propias condiciones y requisitos. Jenkins sería una gran elección como mejor entrada y
herramienta flexible en el conocimiento del área de Integración Continua y para un largo
trabajo, también es bueno para definir requerimientos específicos.

Esta monografía ha demostrado que el trabajo futuro sobre este tema tiene un gran potencial,
este trabajo de monografía nos dio muchas ideas. Por ejemplo, después de desplegar el
servidor Integración Continua, se puede realizar una investigación basada en la configuración
ideal y qué tipo de otras herramientas alternativas son las más adecuadas en un trabajo,

40
también se observó que es posible desarrollar algunos plugins específicos para Jenkins, para
algún caso específico y/o particular.

En conclusión, Jenkins puede ser útil para aquellos que buscan una guía corta, en la que
serían adecuados los conocimientos básicos para comenzar a trabajar con Integración
Continua, este trabajo de monografía permite iniciar en el proceso de Integración Continua y
aprender paralelamente de donde proviene y como resultado, esta investigación da a
conocer nuevas herramientas y populares aún no conocidas, además dar a conocer
herramientas de consulta de datos sobre herramientas de trabajo más usadas y que lideran en
el mercado.

41
Bibliografia

(2014, Grady Booch) B. Grady, “Object-oriented analysis and design with applications,”.

(K. Beck,1998 pp. 1–6) “Extreme programming: A humanistic discipline of software develop-
ment,” in Fundamental Approaches to Software Engineering. Springer.

(1999, K. Beck and C. Anders) “extreme programming explained: embrace change addison-
wesley,” Reading, Ma.

(2007, P. M. Duvall, S. Matyas, and A. Glover) Continuous integration: improving software


quality and reducing risk. Pearson Education.

(2012 V. M. Sue and L. A. Ritter) Conducting online surveys. Sage.


(2016 Denis Polkhovskiy) Continuous Integration Tools

42

Вам также может понравиться