25
Como mejorar el Desarrollo y Calidad Como mejorar el Desarrollo y Calidad de Software mediante el Proceso de de Software mediante el Proceso de Integración Contínua sin morir en el Integración Contínua sin morir en el intento intento PEDRO QUIÑONEZ BERNARDINO PEDRO QUIÑONEZ BERNARDINO #sgvirtual #sgvirtual

Calidad de software

Embed Size (px)

DESCRIPTION

El desarrollo y mantenimiento de aplicaciones empresariales, más que una profesión se ha convertido en todo un arte al darles soporte y mantenimiento, cobra mayor importancia y trascendencia cuando: diferentes desarrolladores modifican la funcionalidad, se utilizan versiones de API´s y frameworks diferentes sobre la misma aplicación sólo porque a "alguien" se le ocurrió, se duplica código por el desconocimiento de la aplicación y por si fuera poco....... existe código muerto en las diferentes capas de la aplicación (si es que se puede identificar alguna) una situación que nunca sucede en nuestro ámbito. Si el panorama no fuera ya de por si complejo, el realizar las pruebas (de todos los módulos de la aplicación) y promover la liberación de una nueva funcionalidad resulta en ocasiones más costoso en tiempo y recursos que la nueva funcionalidad por si misma. La presente sesión demuestra por medio de casos de éxito las ventajas que proporciona el someter aplicaciones existentes y nuevas sobre un proceso de integración contínua estandarizando: el versionado del código, el uso de herramientas de construcción, la automatización de pruebas, la evaluación de código y promoción de nuevas liberaciones de aplicaciones productivas. Todo esto sobre un ciclo iterativo, controlado y auditado para un objetivo final, producir aplicaciones con calidad de código.

Citation preview

Page 1: Calidad de software

Como mejorar el Desarrollo y Calidad Como mejorar el Desarrollo y Calidad de Software mediante el Proceso de de Software mediante el Proceso de Integración Contínua sin morir en el Integración Contínua sin morir en el

intentointento

PEDRO QUIÑONEZ BERNARDINOPEDRO QUIÑONEZ BERNARDINO

#sgvirtual#sgvirtual

Page 2: Calidad de software

AgendaAgenda

Los proyectos heredados.

Por que de la integración contínua (IC).

Los protagonistas de la IC.

Ventajas/DesventajasVentajas/Desventajas.

Los proyectos heredados.

Por qué de la integración contínua (IC).

Los protagonistas de la IC.

Escenario de aplicación.Escenario de aplicación.

ReferenciasReferencias

Page 3: Calidad de software

Los proyectos heredadosLos proyectos heredados

Por lo general en el soporte y mantenimiento de Por lo general en el soporte y mantenimiento de las aplicaciones ”heredadas”, cada uno de los las aplicaciones ”heredadas”, cada uno de los integrantes del equipo de desarrollo se vuelve integrantes del equipo de desarrollo se vuelve

”experto” en una parte específica de la aplicación. ”experto” en una parte específica de la aplicación.

Consecuencias:Consecuencias:●Resolución de problemas aislados.Resolución de problemas aislados.●Aumento de deuda técnica.Aumento de deuda técnica.●Aplicaciones difíciles de mantener.Aplicaciones difíciles de mantener.●Difícil de escalar.Difícil de escalar.●Versiones aisladas del proyecto.Versiones aisladas del proyecto.

”Difícil de mejorar lo que no se puede medir y controlar”

Page 4: Calidad de software

● Malas prácticas Malas prácticas en los ciclos de en los ciclos de desarrollo.desarrollo.

Los proyectos heredadosLos proyectos heredados

● Duplicidad de Duplicidad de funcionalidad funcionalidad por garantía de por garantía de control y/o control y/o estabilidad.estabilidad.

● Generación de Generación de deuda técnica deuda técnica (que funcione, (que funcione, después después optimizamos).optimizamos).

● Nula trazabilidad Nula trazabilidad de quién, cómo, de quién, cómo, por qué y cuando por qué y cuando se generó un se generó un cambio en el cambio en el código. código.

● Revisión y Revisión y auditoría de la auditoría de la calidad del calidad del código sujeta a código sujeta a interpretación.interpretación.

● Control Control deficiente o deficiente o nulo de la nulo de la evolución de evolución de los desarrollos.los desarrollos.

Page 5: Calidad de software

Por qué de la integración contínua (IC)Por qué de la integración contínua (IC)

ObjetivoObjetivo

Dividir el esfuerzo de integración del proyectoen las etapas tempranas de construccióny pruebas.

Generar construcciones del proyecto de formaágil y recurrente.

Garantizar la disponibilidad de versiones establessobre la línea principal de trabajo.

Page 6: Calidad de software

Por qué de la integración contínua (IC)Por qué de la integración contínua (IC)

Integración Contínua: una práctica que permiteasegurar progresivamente y de forma automatizadaque los cambios generados por cada uno de losdesarrolladores no presenten problemas de integración con el resto del equipo.

Componentes

●Metodología de aplicación de Integración Contínua.●Sistema Administración y Control de Versiones de Fuentes.●Herramientas de Construcción y Pruebas Automatizadas.●Herramientas de Control de Dependencias.●Infraestructura de Validación y Construcción Contínua.●Herramientas de Evaluación y Auditoría de Código.●Factor Humano (Equipo de Trabajo).

Page 7: Calidad de software

Los protagonistas de la ICLos protagonistas de la IC

Metodología de aplicación de Metodología de aplicación de Integración ContínuaIntegración Contínua

HerramientaControlVersión

EquipoDesarrollo

HerramientasConstrucción

&Pruebas

InfraestructuraIntegración

Contínua

Herramientasde

ControlDependencia

HerramientasAuditoría

Código

1

2

Trunk

3

4

5

6

branchtag

7

checkout

desarrollo

gestión dependencias

Liberación y pruebas

Posible promoción prod.

Validación.Despliegue y publicación.

Page 8: Calidad de software

Los protagonistas de la ICLos protagonistas de la IC

Sistema de Administración y Control Sistema de Administración y Control de Versiones de Fuentesde Versiones de Fuentes

Herramienta de control de versión que permite almacenar y gestionar cambios sobre archivos.

Permite:

● Controlar accesos de lectura y escritura.

● Generar copias de trabajo (ramas) para

proyectos independientes.

● Sincronizar archivos entre diferentes clientes

(colaboración).

Page 9: Calidad de software

Los protagonistas de la ICLos protagonistas de la IC

Herramientas de Automatización Herramientas de Automatización de Construcciones y Conjuntos de Construcciones y Conjuntos de Pruebasde Pruebas

Maven: Herramienta de construcción automáticausada en proyectos Java, utiliza patrones para montar una infraestructura que cuente con características de visibilidad, reusabilidad, mantenimiento y comprensión.

Junit: Herramienta para escribir pruebas repetibles. Los casos de prueba generados pueden ejecutarse de forma unitaria, manuales y automáticamente.

Page 10: Calidad de software

Los protagonistas de la ICLos protagonistas de la IC

Herramientas de Control de Librerías y Herramientas de Control de Librerías y Dependencias de CódigoDependencias de Código

NEXUS:Repositorio administrador de artefactos de software con las siguientes características:

●Centraliza y comparte componentes de uso común.●Capacidad de enlace con otros repositorios.●Almancenamiento en memoria de componentes y dependencias.

●Restricción sobre componentes y artefactos específicos.

Page 11: Calidad de software

Los protagonistas de la ICLos protagonistas de la IC

Infraestructura de Validación y Infraestructura de Validación y Construcción ContínuaConstrucción Contínua

Servidor con soporte para Integración Contínua.

Características:●Ejecución de tareas automáticas y periodicas de ●construcción de proyectos.●Enlace con sistemas controladores de versiones.●Enlace con sistemas de auditoría de código.●Enlace con sistemas de gestión de dependencias.●Empaquetamiento de aplicaciones.●Etiquetado de versiones.●Promoción de liberaciones productivas.

Page 12: Calidad de software

Los protagonistas de la ICLos protagonistas de la IC

Herramientas de Evaluación y Auditoría Herramientas de Evaluación y Auditoría de Códigode Código

Infraestructura

Arquitectura&

Diseño

Códigos FuentesCódigos Fuentes

ComentariosReglas

deCodificación

BugsPotenciales Complejidad

PruebasUnitárias

Duplicaciónde

Código

Page 13: Calidad de software

Los protagonistas de la ICLos protagonistas de la IC

Lo más importante: El equipo de Lo más importante: El equipo de desarrollo, aún más que las desarrollo, aún más que las herramientas y metodologías utilizadas.herramientas y metodologías utilizadas.

El éxito o fracaso de una nueva implementación y forma de trabajo, depende en granmedida de la aportación que genera cada uno de los integrantes del equipo.

Se debe encontrar el valor que será generado al implantar una nueva forma de trabajar, la mayor parte de las actividades que se deben realizar están fuertemente ligadas

con cada uno de los integrantes del equipo de desarrollo, comenzando con los líderes pasando por arquitectos, analistas y desarrolladores.

Page 14: Calidad de software

Ventajas / DesventajasVentajas / Desventajas

●Contar con una pieza de software estable y contiene los menores defectos.●Desarrolladores comparten código estable y obtienen actualizacionesde código con mínimas actualizaciones (al menos una al día).

●Disminución del tiempo para encontrar errores ya que las integracionesrealizadas son pequeñas y los cambios son mostrados rápidamente.

●Promoción para una forma de trabajo ágil que involucra a todos los integrantes del equipo de desarrollo.

●Certeza en liberaciones y promociones sobre la versión que se probóy validó es la que se toma para su migración.

●Se cuenta con un ambiente de integración ”limpio” sobre el cúalse validan las promociones a liberar.

Contras.................................?

Page 15: Calidad de software

Escenario de AplicaciónEscenario de Aplicación

Page 16: Calidad de software

Escenario de AplicaciónEscenario de Aplicación

Page 17: Calidad de software

Escenario de AplicaciónEscenario de Aplicación

Page 18: Calidad de software

Escenario de AplicaciónEscenario de Aplicación

Page 19: Calidad de software

Escenario de AplicaciónEscenario de Aplicación

Page 20: Calidad de software

Escenario de AplicaciónEscenario de Aplicación

Page 21: Calidad de software

Escenario de AplicaciónEscenario de Aplicación

Page 22: Calidad de software

Escenario de AplicaciónEscenario de Aplicación

Page 23: Calidad de software

Escenario de AplicaciónEscenario de Aplicación

Page 24: Calidad de software

Dudas y/o PreguntasDudas y/o Preguntas

Gracias por su atención!!!Gracias por su atención!!!

Page 25: Calidad de software

ReferenciasReferencias

● http://www.collab.net/products/subversionhttp://www.collab.net/products/subversion

● http://maven.apache.org/http://maven.apache.org/

● http://junit.org/http://junit.org/

● http://www.sonatype.org/nexus/http://www.sonatype.org/nexus/

● http://www.sonarqube.org/http://www.sonarqube.org/

● http://jenkins-ci.org/http://jenkins-ci.org/

Pedro Quiñonez BernardinoPedro Quiñonez Bernardino

#sgvirtual#sgvirtual

http://www.facebook.com/pedro.quinonez.b

@quinonezbp

http://mx.linkedin.com/in/pquinonez

[email protected]