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

Integración

Continua
El camino hacia la
automatización de
versiones Por Jorge A. Jiménez
Agenda

Sueños y realidades
Qué es Integración Continua?
Por qué automatizar versiones?
Beneficios
Características
Reportes en Línea
Extensiones
IC y ALMs
2 IWOKA Source - 2009
Sueños y Realidades

Sueño:
Generar soluciones de software que:
Colmen las expectativas del cliente.
Estén dentro del tiempo estimado.
Estén dentro del presupuesto estimado.
Esté libre de errores.

3 IWOKA Source - 2009


Sueños y Realidades

Realidad:
Generar la mejor solucion de software
posible con:
Las restricciones de tiempo existentes.
Las restricciones de presupuesto existentes.
La mejor calidad posible.
El alcance acordado con el cliente y el usuario
final.

4 IWOKA Source - 2009


Regla de Oro:
Entre MÁS temprano, MEJOR!!!

5 IWOKA Source - 2009


Qué es Integración Continua?

Continuous integration es una práctica que


permite hacer la integración de un proyecto en
forma automática, facilitando entre otras cosas
la administración y generación de versiones
del proyecto, así como mejorar el control de
calidad del mismo. Esta práctica ha sido
incluida como parte fundamental de Procesos
Ágiles como eXtreme Programming, Scrum
entre otras.
Qué es Integración Continua?

Integración “Automática y compilacion de


código de diferentes desarrolladores en
un servidor de versiones central.
Automatización de proceso de pruebas
Una de las principales “Mejores Prácticas”
del desarrollo de software moderno.

7 IWOKA Source - 2009


Qué es Integración Continua?

Componentes:
Proceso de generacion de version automático
(Ant, maven,...)
Proceso de pruebas automático (Junit,...)
Repositorio de código fuente
(CVS,Subversion,...)
Herramienta de integración continua
(Hudson, CruiseControl, Bamboo,...)

8 IWOKA Source - 2009


Qué es Integración Continua?

Qué problema
resuelve?

9 IWOKA Source - 2009


Qué es Integración Continua?

Cómo resuelve
el problema?

10 IWOKA Source - 2009


Qué es Integración Continua?

Como trabaja?

11 IWOKA Source - 2009


Por qué automatizar versiones?

Mejora la calidad del producto


Reduce trabajos repetitivos y aburridos
Elimina dependencias de personal clave
Permite tener un histórico de versiones y
releases para investigar incidencias.
Ahorra tiempo y dinero (por las razones
anteriores).
Beneficios

Beneficios:
Integración silenciosa
Pruebas de regresión automáticas
Versiones tempranas del proyecto
Pruebas funcionales tempranas
Detección rápida y fácil de errores
Mejor visibilidad

13 IWOKA Source - 2009


Beneficios

Resultados de pruebas:

14 IWOKA Source - 2009


Beneficios
Reducción del tiempo de integración.
Detección rápida y temprana de errores.
Pruebas inmediatas tras un cambio en el código.
Pruebas funcionales tempranas y focalizadas.
Versiones tempranas del proyecto.
Disponibilidad continua de la última versión del
código para test, demos, etc.
Mejor visibilidad y calidad del proyecto.
Contribuye a gestionar la calidad del proyecto.
Características
Codificación:
Verificación de estándares de codificación.
Verificación de malas prácticas de codificación.
Code coverage

Ensamble:
Generación automática de versiones
Integración silenciosa.
Detección automática de errores.
Integración continua de versiones.
Características

Pruebas:
Detección rápida y temprana de errores.
Pruebas de regresión automáticas.
Verificación del cubrimiento de las pruebas
unitarias.
Integración con múltiples herramientas de pruebas
(unitarias, de carga, stress, funcionales).
Trazabilidad entre sistemas de Bug Tracking,
Herramientas de desarrollo y depositos.
Características
Control de Calidad:
Monitoreo de estandares de codificación.
Monitoreo de malas practicas.
Monitoreo de métricas de calidad.

Despliegue:
Automatización del despliegue de aplicaciones en
ambientes de desarrollo y pruebas.
Servidor de
Integración Continua

Arquitectura de un Servidor de Integración Continua


Reportes en Línea

Reportes:
Estándares de codificación
Detección de malas prácticas

20 IWOKA Source - 2009


Reportes en Línea
Análisis Estático:
El código tambien puede ser valorado en diferentes
aspectos para determinar el cumplimiento de las
diferentes convenciones y reglas de construcción
sobre el código fuente:
Estadísticas del software
Líneas de código
Número de líneas por método
Complejidad Ciclomática
Cumplimiento de reglas
Violaciones
Reportes en Línea
Análisis Estático:
Extensiones

Integración con múltiples componentes del


proceso de desarrollo:
Integración con sistemas de Bug Tracking.
Integración con SCM
Integración con robots y ambientes de
pruebas.
Notificaciones (e-mail, chat, RSS, IRC,...)
Publicación de Documentación Técnica
automática
23 IWOKA Source - 2009
Extensiones

Integración con múltiples componentes del


proceso de desarrollo:
Reportes (Metricas, Análisis Estático)
Publicación de Versiones (Depositos de
componentes, Ftps,...)

24 IWOKA Source - 2009


Integración Continua y
ALMs

Como involucrar una practica de


Integración Continua en una plataforma de
ALM?
ALM: Application lifecycle management es
la unión entre la administración de negocios y
la ingeniería de software mediante
herramientas que faciliten e integren el manejo
de requerimientos, arquitectura, codificación,
pruebas, seguimiento y generación de
versiones. (Wikipedia)
Integración Continua y
ALMs

Las plataformas de ALM buscan:


Integrar Procesos, Control de calidad,
Trazabilidad y Colaboración.
La Integración Continua se convierte en el
Núcleo de una plataforma de ALM al integrar
todo el entorno y el equipo de desarrollo de
asociado a la producción de software.
Herramientas Open Source

Herramientas Open Source:


IDEs
Bug Tracking Systems
Motores de Integración Continua
Administradores de Proyectos y tareas
Generadores de versiones
Open Application LifeCycle
Management Platform

Que es?
Es una plataforma tecnológica para la
administración de ALMs basada en:
Integración Continua
Ambientes OpenSource + Propietario
Centralización de servicios
Automatización de Versiones
Automatización de Pruebas
Monitoreo de Calidad
Open Application LifeCycle
Management Platform
Admin de Integración Continua
Requerimientos Construcción y
Admin de ensamble
Conocimiento Metricas de Calidad
(Portal/CMS/Wiki) Deposito de Doc
Gestión de Proyectos Técnica
Gestión de Incidencias Javadoc
APIs
DB Doc
UML
Publicación de Archivos
Open Application LifeCycle
Management Platform

Características:
Centrado en Integración Continua
Múltiplataforma (Windows/Linux)
Ambiente Virtualizado
Admin de Usuarios centralizada
Flexibilidad
Integración Continua &
ALM
Open Application Lifecycle Management Platform:
Open ALM Platform
Preguntas?

jorge.jimenez@iwokasource.com
Recursos

Versión extendida:
www.iwokasource.com/web/guest/recursos/ic

Continuous Integration
http://www.martinfowler.com/articles/continuousIntegration.html

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