Upload
software-guru
View
871
Download
0
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
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
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
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”
● 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.
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.
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).
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.
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).
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.
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.
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.
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
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.
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.................................?
Escenario de AplicaciónEscenario de Aplicación
Escenario de AplicaciónEscenario de Aplicación
Escenario de AplicaciónEscenario de Aplicación
Escenario de AplicaciónEscenario de Aplicación
Escenario de AplicaciónEscenario de Aplicación
Escenario de AplicaciónEscenario de Aplicación
Escenario de AplicaciónEscenario de Aplicación
Escenario de AplicaciónEscenario de Aplicación
Escenario de AplicaciónEscenario de Aplicación
Dudas y/o PreguntasDudas y/o Preguntas
Gracias por su atención!!!Gracias por su atención!!!
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