Está en la página 1de 30

Herramientas y Métodos de

Ingeniería del Software

Gestión de la Configuración
del Software
Integración Contínua

Portada

Escuela Superior de Ingeniería (ESI)


Herramientas y Métodos de Ingeniería del Software
TEMA 3. Gestión de la configuración
• Elementos de la Configuración del Software
• Control de versiones
• Automatización de la construcción
• Integración continua
• Control de cambios / Seguimiento de errores

2 Herramientas y Métodos de Ingeniería del Software


Integración Continua
Definición de Integración
Unir las partes o componentes de un software en un solo producto
de software.

El proceso de introducir un nuevo cambio (código, componente,


estructura) en el código fuente procurando no alterar la salud del
proyecto.

3 Herramientas y Métodos de Ingeniería del Software


La integración es uno de los procesos más difíciles de un proyecto
software.
En un proyecto en cascada (no ágil) se produce al final del desarrollo y
puede tomar bastante tiempo y revelar, tardíamente, muchas
deficiencias del diseño.

Modelo de ciclo de vida clásico o en cascada [Sommerville. Cap. 3]


4 Herramientas y Métodos de Ingeniería del Software
• Gráfica típica del progreso de un proyecto software “convencional”
[Royce, Cap.1]

5 Herramientas y Métodos de Ingeniería del Software


• Los problemas ocasionados por realizar la Integración de forma
convencional son:

– Código inestable, la integración es difícil


– Muchos errores de build
– Hay sólo una persona que puede realizar
build del proyecto
– Hacer demostraciones es muy difícil
– El ciclo para obtener un feedback es muy largo

¿Existe alguna solución?


6 Herramientas y Métodos de Ingeniería del Software
• Modelo iterativo incremental para el ciclo de vida del software

7 Herramientas y Métodos de Ingeniería del Software


8 Herramientas y Métodos de Ingeniería del Software
9 Herramientas y Métodos de Ingeniería del Software
• Las cosas se harían más fáciles si la organización adopta la práctica de
realizar el proceso de integración periódicamente, semanalmente o
diariamente.
Así, cuanto mas frecuente el
sistema se compile, testee y
verifique, más temprano se
detectan los problemas.

Esta intención nos conduce


al concepto de

Errores no detectados
10 Herramientas y Métodos de Ingeniería del Software
Solución:

Programación extrema y desarrollo ágil

• Consiste en hacer integraciones automáticas de un proyecto lo más


a menudo posible para así poder detectar fallos cuanto antes.

11 Herramientas y Métodos de Ingeniería del Software


• Propuesta inicialmente por Martin Fowler

“Es una práctica donde los


miembros de un equipo integran su
trabajo frecuentemente, en general
diariamente, lo que genera varias
integraciones en el día.

Cada integración es verificada por


un build automatizado (incluyendo
testing) para detectar errores de
integración tan rápidamente como
sea posible.”

12 Herramientas y Métodos de Ingeniería del Software


• El proceso se suele ejecutar de forma automatizada cada
cierto tiempo (cada día, cada x horas):
– descargar las fuentes desde el gestor de versiones (CVS,
Subversion, Git, ..)
– Compilación y construcción
– ejecución de tests (unitarios, integración, …)
– generar informes (métricas)
– construir el ejecutable (empaquetado .exe, .jar, .war)
– y cuando sea posible,
• desplegarlo
• y ejecutar las pruebas de aceptación

13 Herramientas y Métodos de Ingeniería del Software


[Continuous Integration. Improving Software Quality and Reducing Risk
Paul M. Duvall. Addison-Wesley. 2007]
14 Herramientas y Métodos de Ingeniería del Software
• Ventajas de Integración continua:

– Reducción del tiempo de integración


– Detección de errores lo más pronto posible
– Pruebas inmediatas tras un cambio en el código
– Disponibilidad continua de la última versión del código.
– Proveer siempre de información sobre el estado del proyecto

15 Herramientas y Métodos de Ingeniería del Software


• Herramientas:
– Continuum, Hudson, Jenkins, CruiseControl (para proyectos Java)
– CruiseControl.Net, Team Foundation Server para .Net..

• Se encargan de controlar las ejecuciones, apoyadas en otras


herramientas como Ant o Maven (también para proyectos Java), o
Nant o MSBUILD (para .Net) que se encargan de realizar las
compilaciones, ejecutar los tests y realizar los informes.

16 Herramientas y Métodos de Ingeniería del Software


[Continuous Integration.
Improving Software
Quality and Reducing
Risk
Paul M. Duvall. Addison-
Wesley. 2007]
17 Herramientas y Métodos de Ingeniería del Software
Database Integration

[Continuous Integration.
Improving Software
Quality and Reducing
Risk
Paul M. Duvall. Addison-
Wesley. 2007]
18 Herramientas y Métodos de Ingeniería del Software
Database Integration

[Continuous Integration.
Improving Software
Quality and Reducing
Risk
Paul M. Duvall. Addison-
Wesley. 2007]
19 Herramientas y Métodos de Ingeniería del Software
[Continuous Integration. Improving Software Quality and Reducing Risk
Paul M. Duvall. Addison-Wesley. 2007]
20 Herramientas y Métodos de Ingeniería del Software
[Continuous Integration.
Improving Software
Quality and Reducing
Risk
Paul M. Duvall. Addison-
Wesley. 2007]
21 Herramientas y Métodos de Ingeniería del Software
• Implementar Integración local automatizada:

Herramientas y Métodos de Ingeniería del Software


• Herramientas necesarias para implementar Integración Continua son:

Herramientas y Métodos de Ingeniería del Software


[Continuous Integration.
Improving Software
Quality and Reducing
Risk
Paul M. Duvall. Addison-
Wesley. 2007]
24 Herramientas y Métodos de Ingeniería del Software
Funcionamiento
de trabajo con IC

Pasos:
1. Los desarrolladores envían sus modificaciones al sistema de control de
versiones (SVN, Git, etc).
2. El Servidor de integración continua monitoriza el repositorio buscando
cambios y ejecuta, cada determinado tiempo, automáticamente el
build.
3. Una vez finalizado el proceso de build (integración, construcción,
pruebas y despliegue) el servidor notifica a los responsables del
resultado del proceso (feedback del proyecto) y/o genera un informe.
4. El servidor realiza el paso 2 y 3 continuamente.

25 Herramientas y Métodos de Ingeniería del Software


[Continuous Integration. Improving Software Quality and Reducing Risk
Paul M. Duvall. Addison-Wesley. 2007]

26 Herramientas y Métodos de Ingeniería del Software


Herramientas IC

• En cuanto a las herramientas IC pueden ser:


– Continuum, Hudson / Jenkins, CruiseControl (para proyectos Java)
– CruiseControl.Net, Team Foundation Server para .Net.
– …

Hudson / Jenkins Anthill PRO


Apache Continuum Atlassian Bamboo
Automated build studio
Apache Gump Cascade
Cruise Control Team city
BuildBot Team Foundation Server

Herramientas y Métodos de Ingeniería del Software


Jenkins/Hudson is de facto standard method for Continuous
Integration. Reasons: free, open source, cross-platform, user-
friendly and easy to install

Developer Productivity Report 2013 – How Engineering


Tools & Practices Impact Software Quality & Delivery

28 Herramientas y Métodos de Ingeniería del Software


• Neutral build: is a software build that reflects the current state of the
source code checked into the source code version control system by the
developers, and done in a neutral environment (an environment not used for
development)

• Nightly build is a neutral build that takes place automatically. These


typically take place when no one is likely to be working in the office so that
there are no changes to the source code during the build

• A developer "broke the build" when a developer checked in code which


might very well have compiled (and hopefully also run properly) in their
account, but does not compile (and therefore, cannot be run) in anyone
else's account.

http://en.wikipedia.org/wiki/Nightly_build

29 Herramientas y Métodos de Ingeniería del Software


Contraportada

30 Herramientas y Métodos de Ingeniería del Software

También podría gustarte