Procedimiento de implantación de un entorno de Integración Continua

Implantación de un entorno de Integración Continua
Información sobre la plantilla
Proceso de Integracion Continua2.png
Concepto:El procedimiento destinado a la implantación del proceso de Integración Continua propone cuatro elementos fundamentales como parte del proceso de Integración Continua: Repositorio de código: subversion (SVN), Servidor de Integración Continua: hudson, Herramienta de construcción: ant e IDE: netbeans 6.5.

El procedimiento destinado a la implantación del proceso de Integración Continua propone cuatro elementos fundamentales como parte del proceso de Integración Continua: Repositorio de código: subversion (SVN), Servidor de Integración Continua: hudson, Herramienta de construcción: ant e IDE: netbeans 6.5.


1.1. Procedimientos

Un procedimiento es el modo de ejecutar determinadas acciones que suelen realizarse de la misma forma, con una serie común de pasos definidos que permiten realizar un trabajo de forma correcta. Estos pasos son aprendidos para alcanzar las etapas finales de un proceso o producto determinado. Los procedimientos se crean para cada institución, acorde a las características propias de cada una de ellas y deben en todo momento estar en correspondencia con las regulaciones establecidas por organismos superiores. Las acciones que conforman los procedimientos, se dirigen a la obtención de una meta, son realizadas para llegar a un resultado. En muchos casos, se expresan en documentos que contienen el objeto y el campo de acción de una actividad; delimitando qué debe hacer y quién lo debe hacer, cuándo, dónde y cómo se debe llevar a cabo. Qué recursos debe utilizar y cómo debe inspeccionarse y registrarse. Denota la importancia de los procedimientos, su existencia en todos los sistemas y subsistemas de una organización, por la necesidad de un control riguroso para detallar acciones.

1.1.1. Conceptos fundamentales

Se ofrecen algunos conceptos de vital importancia sobre procedimientos para el mejor entendimiento y comprensión del trabajo. Varios autores han establecido valoraciones sobre los procedimientos: “Los procedimientos consisten en describir detalladamente cada una de las actividades a seguir en un proceso laboral, por medio del cual se garantiza la disminución de errores”. “El principal objetivo del procedimiento es el de obtener la mejor forma de llevar a cabo una actividad, considerando los factores del tiempo, esfuerzo y dinero”. “Los procedimientos incluyen las indicaciones y métodos, así como proporcionan orientaciones sobre el principal producto resultante”. El procedimiento es la secuencia lógica y cronológica de cada una de las actividades u operaciones que realizan las diferentes personas que intervienen en la realización de un producto o prestación de un trámite o servicio, se debe precisar de manera sistemática el cómo realizar una función o un aspecto de ella, asegurando su realización de forma satisfactoria; de tal manera que permita al personal comprenderlas, seguirlas y aplicarlas aun cuando sea de recién ingreso al área. El nombre del procedimiento debe dar idea clara de su contenido. Las actividades deberán redactarse en forma sencilla, clara y en orden lógico, evitando párrafos extensos y, en lo posible, se evitará utilizar gerundios y adjetivos calificativos, además deben estar implícitas las respuestas de las siguientes preguntas: a) ¿Qué actividades u operaciones se realizan? Con relación a la naturaleza y los fines de la función de la cual se desprenden las actividades de la operación que se realiza en el área. b) ¿Para qué? Finalidad de las actividades, operaciones y de los resultados de la ejecución. c) ¿Quiénes? Descripción de los órganos o puestos responsables del desarrollo de las actividades. d) ¿Cómo se realiza? Explicación del método de trabajo y del uso de los instrumentos, equipos, espacios y materiales, para lograr los objetivos de una actividad. e) ¿Cuándo se realiza? Relativo al señalamiento de los tiempos de ejecución y obtención de los resultados, según las normas, políticas y lineamientos del procedimiento, la metodología de trabajo y los requerimientos de los usuarios, demandantes o beneficiarios. f) ¿Dónde se realiza? Referencia de la ubicación de la unidad administrativa, los puestos de trabajo y de sus usuarios. g) ¿Con qué se realiza? Señalamiento de los insumos, equipo, registros a utilizar y demás medios utilizados para la ejecución y logro de los resultados. h) ¿En qué tiempo se realiza? Tiempo de ejecución de la actividad, estando éste en horas o días. La existencia de un procedimiento destinado a la implantación del proceso de Integración Continua propone cuatro elementos fundamentales como parte del proceso de Integración Continua: 1. Repositorio de código: subversion (SVN) 2. Servidor de Integración Continua: hudson 3. Herramienta de construcción: ant 4. IDE: netbeans 6.5 Para montar el proceso de Integración Continua, el mismo, consta de las siguientes fases: · Configuración del repositorio de código: subversion · Configuración del IDE de desarrollo: netbeans · Configuración de la herramienta de construcción: ant · Configuración del servidor de integración continua: hudson

Fase 1. Configuración del repositorio de código: subversion

En esta fase se recogen dos actividades fundamentales: · Se crea el repositorio del SVN que almacenará el proyecto · Se establece la seguridad del repositorio

Fase 2. Configuración del IDE de desarrollo: netbeans

En esta fase se tiene las siguientes actividades: · Se establece la conexión con el Subversion · Se realiza un test unitario con JUnit Para trabajar con el framework de test unitarios JUnit se instala la herramienta en tres lugares: 1. Como plugin del IDE, lo que permite un uso integrado en el entorno de desarrollo del programador, con todas las ventajas de uso. 2. Como target en el build.xml del ant. Este target nos permitirá ejecutar las mismas tareas desde la línea de comandos sin ayuda del IDE, pero además, permitirá al servidor de integración continuar lanzando la tarea y generar los diferentes informes (en el caso de JUnit serán ficheros XML) especificando qué test han sido superados, cuáles han fallado. 3. Como plugin del servidor de Integración Continua, de manera que pueda utilizar los informes generados en el target del ant, para mostrar información útil y determinar si la construcción ha fallado o no.

Fase 3: Configuración de la herramienta de construcción: ant

Se configura el ant, permitiendo realizar tareas como la construcción de la aplicación, la ejecución de pruebas y otras.

Fase 4: Configuración del servidor de integración continua: hudson

Las actividades presentes en esta fase son: · Automatización de la construcción de trabajos · Añadir dependencias externas al Subversion Las mismas se realizan a partir de la configuración realizada a través de la interfaz propuesta por hudson. Dentro de las ventajas que brinda hudson está poder gestionar todo el proceso de administración del servidor desde la propia interfaz web. Una vez ejecutado el estudio del estado del arte, referente a los procedimientos existentes para la implantación de un entorno de integración continua, fue posible llegar a conclusiones sobre los aspectos siguientes: 1. Existe un vacío teórico en cuanto a procedimientos de implantación de entorno de integración continua, específicamente para tecnologías que tienen como raíz el lenguaje PHP. 2. El procedimiento presentado se rigen por fases relacionadas a los procesos de Integración Continua, por esta razón se sintetizan algunos de sus pasos para la construcción de la propuesta. 3. El procedimiento presentado no especifica responsables por cada uno de las fases planteadas. El éxito de un proceso de Integración Continua depende en gran medida del conjunto de pasos que se usen para su desarrollo. Para ello lo más recomendable es la creación de un procedimiento, a partir de las experiencias, fases y actividades estudiadas con anterioridad. Dicho procedimiento garantizará un correcto flujo de trabajo en la implantación del entorno. Una vez realizado el estudio del procedimiento descrito anteriormente, no fue posible la obtención de procedimientos de Implantación en Cuba, ya que no se cuenta con una guía, ni metodología que contengan un conjunto de pasos para la implantación de un proceso de Integración Continua.

1.2. Integración Continua

Las metodologías ágiles o “ligeras” establecen un nuevo enfoque en el desarrollo de software. Extreme Programming (XP, por sus siglas en inglés) es una metodología de desarrollo de software clasificada dentro de las metodologías ágiles más conocidas, centrada en potenciar las relaciones interpersonales como clave para el éxito en desarrollo de software. Una de las prácticas que propone XP es la Integración Continua, que pone énfasis en el hecho de tener un proceso de construcción y prueba completamente automático, este proceso permite comprobar continuamente que los cambios realizados al código fuente por los desarrolladores no producen problemas de integración con el resto del equipo. La aplicación de la misma no corrige errores de integración sino permite detectar los mismos en etapas tempranas del desarrollo. La idea principal de utilizar Integración Continua, surge para agilizar procesos de integración de diversos proyectos y aplicaciones. Además para que los desarrolladores trabajando en un proyecto puedan integrar los cambios en sus códigos al menos una vez al día. Con un potente conjunto de pruebas y un sistema que permita asegurar estas pruebas de forma continua y automática, se puede asegurar que cualquier problema introducido en el sistema puede ser identificado en la próxima construcción. Según Martin Fowler, escritor del libro “Integración Continua - Mejora de la calidad del software y la reducción de riesgo”, el concepto de Integración Continua se define como sigue: “una práctica de desarrollo de software donde los miembros de un equipo integran su trabajo con frecuencia, usualmente cada persona hace integraciones diariamente, habiendo múltiples integraciones por día. Cada integración es verificada para detectar errores de integración tan rápido como es posible.” Paul Duvall la define como: “es la personificación de estrategias que nos dan, como desarrolladores de software, la habilidad para hacer cambios en nuestro código, sabiendo que si rompemos el software, recibiremos información retroactiva inmediata […] es la pieza central del desarrollo de software, como aseguramiento de la calidad a través de la construcción del software en cada cambio.”

1.3. Reducción de riesgos mediante la Integración Continua

En todo proyecto existen riesgos y algunos pueden ser reducidos mediante la Integración Continua, la cual posibilitaría identificarlos y mitigarlos cuando ocurren. - Falta de visibilidad del proyecto Los mecanismos de comunicación manual requieren una gran coordinación para asegurar la difusión de la información, con estos no se puede garantizar que la información se comunica a las personas adecuadas en el momento adecuado, accidentalmente puede dejar de lado las partes interesadas, mientras que la Integración Continua es posible implementar un mecanismo de retroalimentación que informe inmediatamente a determinados miembros del equipo acerca del estado de la integración mediante correos electrónicos, telefonía móvil, Jabber y otros. · Baja calidad del software Se puede tener defectos potenciales cuando el software no está bien diseñado o no está siguiendo los estándares del proyecto. A veces las personas creen que una baja calidad del software es únicamente diferido del costo de un proyecto, sin conocer que también conduce a otros problemas antes de entregar el software a los usuarios. La Integración Continua ejecuta las pruebas e inspecciones en cada cambio de lo que pueden descubrir los posibles defectos que pueden ser introducidos en el código fuente.

1.4. Ventajas y desventajas de Integración Continua

La Integración Continua tiene como ventajas: 1) Aumenta la confianza en el código entregado al repositorio. El repositorio deja de ser estático dentro del proyecto, para convertirse dinámico. Esto permite que los desarrolladores tengan la seguridad que el código que se obtiene del repositorio esté correcto porque ha pasado por una prueba de validación 2) Permite identificar errores en etapas tempranas, impidiendo largos períodos de integración final 3) Los problemas de integración son detectados inmediatamente 4) Una vez realizado un cambio en el código del software se procede a la construcción de un nuevo build que puede y debe incluir la realización de pruebas, lo que permite conocer el estado actual del proyecto Muchos equipos con Integración Continua informan que las ventajas superan los inconvenientes. El efecto de encontrar y corregir errores de integración en etapas tempranas del proceso de desarrollo permite ahorrar tiempo y dinero durante la vida útil de un proyecto. Las desventajas que se pueden observar con el uso de esta práctica son las siguientes: (9) a) Sobrecarga en el mantenimiento del sistema. Si el servidor de CI es detenido durante un tiempo considerable, se acumula código en el control de versiones, el cual podría tener errores que no serían detectados durante este período de tiempo. Además al iniciarse, el servidor de integración podría sobrecargarse por existir un gran número de cambios b) El impacto inmediato al subir código erróneo provoca que los desarrolladores no suban su código frecuentemente como sería conveniente como copia de seguridad

1.5. Buenas prácticas de la Integración Continua

La IC, hace que el desarrollo del proyecto sea incremental, pero para que esto ocurra es muy importante poner en marcha algunas prácticas, como son: (10) Mantener un repositorio de código Esta práctica recomienda el uso de un sistema de control de versiones para el código fuente del proyecto. a) Mantener la construcción rápida La construcción ha de ser rápida, de tal manera que si hay un problema con la integración, se identifica rápidamente. · Integrar pruebas automatizadas dentro del proceso de construcción Una buena forma de capturar errores, con rapidez, consiste en incluir pruebas automáticas en el proceso de construcción. Las pruebas necesitan poder ser lanzadas desde un único comando y chequeadas. El resultado de la ejecución de esta serie de pruebas debe indicar si alguna de ellas. · Actualizar el repositorio de código frecuentemente La Integración Continua permite comunicar a los desarrolladores el resultado de los cambios realizados en el código y así conocerlos rápidamente. Es muy importante que cada desarrollador envíe su código al Control de Versiones diariamente, de esta forma es más útil para los desarrolladores mientras lo hagan con más frecuencia, ya que habrá menos lugares en los cuales se tienen que buscar errores. · Con cada cambio en el código, ejecutar el proceso de Integración Continua La Integración Continua implica que por cada cambio que realice el desarrollador en el Control de Versiones, se realicen las pruebas, de esta forma los errores serán detectados tan rápido como sea posible.

2.1. Descripción teórica del procedimiento

Se realiza la descripción del proceso que se quiere implantar de Integración Continua que será estándar para todas las posibles soluciones. Se procede a la definición y estructuración del procedimiento.

2.2.1. Fases

  • Inicio: en la fase de inicio se realizan reuniones preliminares con los miembros del proyecto, para determinar el contexto sobre el que se desarrollarán las actividades, de tal manera que se puedan identificar los factores que influyen en la necesidad de implantar un entorno de Integración Continua. Se realizan talleres para que los miembros del proyecto adquieran los conocimientos necesarios sobre la Integración Continua, cuáles son las herramientas que utiliza y otras. Se tiene en cuenta si es factible o no implantar un entorno de Integración Continua y además de los casos de éxitos que han tenido otras entidades con la Integración Continua
  • Análisis: esta fase se realiza con el objetivo de identificar todos los elementos que intervienen en el entorno de Integración Continua que se propone. Esta fase contribuye a una mejor comprensión por parte de los miembros del proyecto acerca de la Integración Continua. Se realiza un estudio del ambiente de desarrollo con el propósito de seleccionar las herramientas adecuadas que forman parte en un entorno de Integración Continua
  • Configuración: esta fase tiene como objetivo la configuración de las distintas herramientas utilizadas durante el proceso de Integración Continua y la configuración del mecanismo de retroalimentación para la notificación de resultados. Además se realizan las pruebas que van a ser ejecutadas en el proceso de Integración Continua para detectar errores
  • Implantación: en la fase de implantación se especifican los elementos que se tienen en cuenta para implantar un entorno de Integración Continua que sirven como base para llevar a cabo todo el proceso que realiza la misma

2.2.2. Actividades de las fases del procedimiento

En este sub-epígrafe quedan definidas las actividades, roles y sus responsabilidades.

2.2.2.1. Fase de inicio

Entrada:

  1. Solicitud para implantar el entorno de Integración Continua

Las actividades correspondientes a esta fase son:

  • Reunión preliminar: en esta reunión participa el jefe de proyecto y todos los miembros del proyecto especializado en el tema para debatir la solicitud de implantar la Integración Continua, se identifican los factores que influyen en la necesidad de su implantación y la disponibilidad del personal
  • Realizar talleres: esta actividad es el espacio empleado para que los participantes adquieran los conocimientos necesarios sobre la Integración Continua. Cuáles son los principales elementos que se tienen en cuenta para conformar la misma y qué se logra a través de su implantación
  • Análisis de factibilidad: esta actividad tiene como objetivo determinar si es factible aplicar el proceso de Integración Continua. Se compara la solución que se presenta con el problema que existe actualmente en el proyecto, con el objetivo de definir si se puede llevar a cabo o no la implantación. Es el análisis comprensivo que sirve para recopilar datos relevantes sobre el desarrollo de un proyecto
  • Estudio de casos de éxitos: esta actividad tiene como objetivo identificar entidades que han tenido experiencias en el proceso de Integración Continua y se pueda tomar como referencia algunas de las buenas prácticas empleadas por estas entidades

Salida:

  1. Informe de desarrollo. Contiene todos los elementos que afectan el ciclo de vida del proyecto y la planificación de las actividades a llevar a cabo para dar solución a las deficiencias del proyecto
  2. Informe de factibilidad

2.2.2.2. Fase de análisis

Entrada:

  1. Informe de desarrollo

Las actividades correspondientes a esta fase son:

  • Estudio del proceso de Integración Continua: se realiza un análisis de las distintas herramientas que hacen posible automatizar el proceso de Integración Continua, teniendo en cuenta las características que brindan
  • Estudio del ambiente de desarrollo: en esta actividad se realiza un estudio del ambiente de desarrollo donde será implantado la Integración Continua con el objetivo de conocer el lenguaje, modelo de desarrollo y cómo se relacionan los componentes
  • Selección de las herramientas: esta actividad se realiza con el objetivo de seleccionar las herramientas de Integración Continua, teniendo en cuenta el modelo de desarrollo utilizado en el proyecto. Se comparan cada una de las herramientas partiendo de las características que brindan para ser empleadas, permitiendo su selección

Salida: 1) Documento con herramientas a utilizar

2.2.2.3. Fase de configuración

Entrada:

  1. Documento con las herramientas a utilizar. En este documento se refleja la justificación de todas las herramientas a utilizar durante el proceso de Integración Continua
  2. Documento del ambiente de desarrollo. Este documento contiene el estudio del ambiente de desarrollo donde será implantado la Integración Continua

Las actividades correspondientes a esta fase son:

  • Implementación de las pruebas: esta actividad tiene como objetivo la implementación de las pruebas en el entorno de Integración Continua, puesto que son las encargadas de comprobar que los cambios realizados en el código fuente está libre de no conformidades. El proceso de Integración Continua requiere de estas pruebas para que sean capaces de encontrar errores
  • Configuración de las herramientas utilizadas por la Integración Continua: esta actividad se presenta con el objetivo de mostrar la configuración del entorno de ejecución del servidor de Integración Continua, configurando la herramienta para abarcar todos los procesos exitosamente

Las dos actividades descritas anteriormente se realizan en conjunto, puesto que es necesario introducir paulatinamente las pruebas para la ejecución del servidor de Integración Continua, permitiendo identificar las principales áreas donde existen mayores errores y a través de las mismas exponer estos fallos. Salida:

  1. Entorno configurado

2.2.2.4. Fase de implantación

Entrada:

  1. Entorno configurado
  • Implantación: en esta actividad se define como se llevará a cabo la implantación del proceso de Integración Continua. Para dar cumplimiento a esta actividad se realiza una figura con las herramientas necesarias para usar en el mismo. Se define la secuencia de pasos a realizar durante el proceso de integración

Salida:

  1. Plan de implantación. Documento que contiene la secuencia de pasos para implantar la Integración Continua, así como las herramientas y recursos necesarios para usar en la implantación de la Integración Continua

2.2.3. Roles y responsabilidades

  • Personas especializadas:

Participan en las reuniones preliminares, a fin de identificar y recomendar ideas relacionadas con el entorno de Integración Continua.

  1. Jefe de proyecto:

Participa en la reunión preliminar (visión general del proyecto, análisis de factibilidad). Define la organización del proyecto. Es el responsable de aprobar las tecnologías a usar en el desarrollo del proyecto. Administra y asigna recursos, tiene habilidades para el análisis y la toma de decisiones.

  1. Arquitecto:

Tiene conocimiento avanzado en el lenguaje utilizado en el proyecto y estilos arquitectónicos. Es responsable de facilitar la comunicación entre el cliente y el programador. Realiza las solicitudes de servicios a otros proyectos y atiende los servicios solicitados.

  1. Programador:

Es el encargado de realizar la implementación de las pruebas. La calidad de su trabajo y empeño es el que define la calidad del proceso de integración.

  1. Planificador:

Se encarga de planificar el cronograma de actividades que deben cumplirse en el proyecto. Planifica y gestiona los recursos y tareas.

Bibliografía

  1. Gómez, Francisco. Sistemas y procedimientos administrativos. s.l. :s.l Mc Graw Gil, 2000.
  2. Codina, Lluís. Revista española de documentación científica.Evaluación de recursos digitales en línea: conceptos, indicadores y métodos. 2000.
  3. Duvall, Paul M. Continuous Integration. Improving Software Quality and Reducing Risk. s.l. : Addison Wesley, 2007.
  4. Martin Flower [En línea] mayo de 2006.
  5. Pérez, Jesús. Java Hispano. [En línea] 2007. [Citado el: 14 de octubre de 2012.]