herramientas para la mejora del proceso de desarrollo de aplicaciones j2ee

56
Iván Ruiz Rube Departamento de Lenguajes y Sistemas Informáticos Universidad de Cádiz Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE.

Upload: ivan-ruiz-rube

Post on 29-Nov-2014

952 views

Category:

Technology


1 download

DESCRIPTION

Jornadas de Conocimiento Libre y Web 2.0 Universidad de Cádiz 12 de Noviembre de 2009 http://softwarelibre.uca.es/jornadasweb

TRANSCRIPT

Page 1: Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE

Iván Ruiz RubeDepartamento de Lenguajes y Sistemas Informáticos

Universidad de Cádiz

Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE.

Page 2: Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE

Agenda

> Introducción > Control del Código Fuente> Gestión del Proyecto> Construcción del Producto> Gestión del Conocimiento> Repositorio de Componentes> Aseguramiento de la Calidad> Integración Continua> Resumen

Page 3: Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE

Agenda

> Introducción > Control del Código Fuente> Gestión del Proyecto> Construcción del Producto> Gestión del Conocimiento> Repositorio de Componentes> Aseguramiento de la Calidad> Integración Continua> Resumen

Page 4: Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE

Introducción (I)

> Complejidad del desarrollo software– Tecnología variable (nuevos frameworks, librerías, etc.)– Requisitos cambiantes (como siempre)– Rotación elevada de personal experto– Naturaleza de las aplicaciones web– Cliente impaciente

> Buenas Prácticas aprendidas de la experiencia– Reutilización del software y del conocimiento– Gestión ágil del proyecto– Automatización de tareas repetitivas– Aplicar reglas y estilos de codificación– Énfasis en las pruebas– Entregas continuas al cliente

Page 5: Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE

Introducción (II)

> Objetivo: Mejorar el proceso y el producto software– Emplear estándares– Aplicar una metodología (ágil o tradicional)– Usar herramientas de soporte (basadas en buenas prácticas)

> ¿Que vamos a ver hoy?– Comentaremos escenarios problemáticos– Describiremos herramientas de ayuda– Breve demostración de las herramientas– Al final, estaremos ante un entorno de desarrollo “maduro”

Page 6: Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE

Agenda

> Introducción > Control del Código Fuente> Gestión del Proyecto> Construcción del Producto> Gestión del Conocimiento> Repositorio de Componentes> Aseguramiento de la Calidad> Integración Continua> Resumen

Page 7: Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE

Control del Código Fuente (I)

> Problemas– ¿Donde almaceno el código fuente?

– ¿Cómo unificar el código de varios programadores?

– ¿Qué ocurre cuando varias personas modifican los mismos ficheros?

– ¿Cómo puedo gestionar diferentes versiones del software?

– Ha ocurrido un desastre... ¿puedo recuperar una versión concreta?

– ¿Puedo evitar accesos no autorizados?

> Solución: Sistema de control de versiones (SCM)– Subversion

– CVS

– Git

– Mercurial

– Monotone

– Source Safe (MS)

– …

Page 8: Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE

Control del Código Fuente (II)

SUBVERSION> Características

– Modelo basado en cliente/servidor– Soporta diferentes protocolos de acceso: SVN, SVN+SSH,

HTTP, HTTPS y FILE– Existen distintos clientes: TortoiseSVN, Subclipse, Subversive

> Utilidades– Descarga del proyecto (checkout)– Actualización del proyecto (update)– Actualización del repositorio (commit)– Comparar versiones (diff)– Fusionar cambios (merge)– Limpiar (cleanup)– ...

Page 9: Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE

Control del Código Fuente (III)

Page 10: Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE

Control del Código Fuente (IV)

Page 11: Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE

Control del Código Fuente (V)

Page 12: Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE

Agenda

> Introducción > Control del Código Fuente> Gestión del Proyecto> Construcción del Producto> Gestión del Conocimiento> Repositorio de Componentes> Aseguramiento de la Calidad> Integración Continua> Resumen

Page 13: Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE

Gestión del Proyecto (I)

> Problemas– ¿Como saber quien es el responsable de cada tarea?

– ¿Como controlar los “incurridos” del proyecto?

– ¿Cómo llevar el seguimiento de las tareas?

– ¿Como controlar las incidencias del proyecto (en producción)?

– ¿Que características y que parches se han incluido en la versión x.y.z del software?

– ¿Como planificar los trabajos?

> Solución: Software de gestión integrada de proyectos– Redmine

– Trac

– DotProject

– Jira

– TFS + Project (MS)

– …

Page 14: Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE

Gestión del Proyecto (II)

REDMINE

> Características– Aplicación web construida con RoR

– Gestión multiproyecto y con múltiples versiones

– Interfaz muy facil e intuitiva

– Páginas de usuarios personalizadas y envío de emails

> Utilidades– Planificación (básica) mediante diagramas de Gantt

– Gestión de tareas: estado, responsable, “target version”, fechas de inicio/fin, porcentaje de avance, incurridos, etc.

– Seguimiento de tareas mediante consultas personalizadas

– Roadmap del proyecto

– Integración con SCM

– Noticias, Foros, Wikis

– ...

Page 15: Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE

Gestión del Proyecto (III)

Page 16: Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE

Gestión del Proyecto (IV)

Page 17: Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE

Gestión del Proyecto (V)

Page 18: Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE

Gestión del Proyecto (VI)

Page 19: Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE

Agenda

> Introducción > Control del Código Fuente> Gestión del Proyecto> Construcción del Producto> Gestión del Conocimiento> Repositorio de Componentes> Aseguramiento de la Calidad> Integración Continua> Resumen

Page 20: Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE

Construcción del Producto (I)

> Problemas– ¿Cómo generar la estructura de directorios del proyecto?– ¿Como gestionar la compilación y el empaquetado?– ¿Cómo gestionar dependencias con librerías de terceros?– ¿Cómo introducir meta-información del proyecto en el código?– ¿Como hacer fácilmente un sitio web del proyecto?

> Solución: Project Management Framework– Maven– Ant + Ivy– …

Page 21: Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE

Construcción del Producto (II)

APACHE MAVEN

> Características

– Estándar de facto en la construcción de proyectos JEE

– Metainformación en Project Object Model (POM.XML)

– Convención sobre configuración (estructura de directorios, versionado,cv)

– Ciclo de vida basado en fases y goals (acciones)

– Extensible mediante plugins

– Herramienta de consola, aunque existen plugins para IDEs (m2Eclipse, IAM, mavenide)

– Inconvenientes: 1. Curva de aprendizaje. 2. Al ser un modelo nuevo, los proyectos anteriores debe “renovarse”

> Utilidades

– Descarga automática de dependencias (evitar el jar-hell)

– Maven Site: Generación de un sitio web con información del proyecto, changelogs, javadocs, fuentes, resultados de las pruebas, etc.

– Empaquetados condicionados al entorno

– Ejecución de tests previos a despliegues

– ...

Page 22: Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE

Construcción del Producto (III)

Page 23: Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE

Construcción del Producto (IV)

Page 24: Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE

Construcción del Producto (V)

Page 25: Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE

Construcción del Producto (VI)

Page 26: Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE

Construcción del Producto (VII)

Page 27: Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE

Agenda

> Introducción > Control del Código Fuente> Gestión del Proyecto> Construcción del Producto> Gestión del Conocimiento> Repositorio de Componentes> Aseguramiento de la Calidad> Integración Continua> Resumen

Page 28: Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE

Gestión del Conocimiento (I)

> Problemas– ¿Cómo redactar de forma colaborativa documentos de

trabajo?– ¿Cómo proporcionar ayudas para la solución de problemas?– ¿Cómo plasmar el conocimiento?– ¿Cómo acceder rápidamente al conocimiento?

> Solución: Sistema de edición colaborativa (WIKI)– MediaWiki– MindTouch Wiki– Confluence– XWiki– …

Page 29: Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE

Gestión del Conocimiento (II)

MEDIAWIKI

> Características– CMS colaborativo construido en PHP– Edición basada en artículos e hiperenlaces– Histórico de versiones y búsquedas “fulltext” sobre los artículos – Soporta multitud de plugins (extensiones) para mejorar el sistema

> Utilidades– Definir modelos de arquitecturas y frameworks de desarrollo. – Catálogo de librerías– Documentación de proyectos (requisitos, análisis) – FAQs y TIPs– ...

Page 30: Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE

Gestión del Conocimiento (III)

Page 31: Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE

Gestión del Conocimiento (IV)

Page 32: Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE

Agenda

> Introducción > Control del Código Fuente> Gestión del Proyecto> Construcción del Producto> Gestión del Conocimiento> Repositorio de Componentes> Aseguramiento de la Calidad> Integración Continua> Resumen

Page 33: Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE

Repositorio de Componentes (I)

> Problemas– ¿Reutilizamos código a nivel de proyecto?– ¿Reutilizamos código entre diferentes proyectos?– ¿Donde almacenamos el activo de componentes (jars) de la

organización?– ¿Donde almacenamos los componentes de terceros?

> Solución: Repositorios de componentes – Artifactory– Nexus– Archiva– …

Page 34: Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE

Repositorio de Componentes (II)

ARTIFACTORY

> Características– Repositorio basado en web y construido en Java

– Compatible 100% Maven

– Admite diferentes motores de bases de datos

– Interfaz de usuario sencilla y agradable

– Seguridad basada en grupos y usuarios, además de integración con LDAP.

– Copias de seguridad

> Utilidades– Permite desplegar artefactos manualmente (via web)

– Admite el despliegue remoto de artefactos

– Funciona como proxy de repositorios en Internet

– Búsqueda de artefactos dentro de los repositorios

– ...

Page 35: Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE

Repositorio de Componentes (III)

Page 36: Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE

Repositorio de Componentes (IV)

Page 37: Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE

Repositorio de Componentes (V)

Page 38: Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE

Repositorio de Componentes (VI)

Page 39: Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE

Agenda

> Introducción > Control del Código Fuente> Gestión del Proyecto> Construcción del Producto> Gestión del Conocimiento> Repositorio de Componentes> Aseguramiento de la Calidad> Integración Continua> Resumen

Page 40: Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE

Aseguramiento de la Calidad (I)

> Problemas– ¿Cómo mejorar la calidad de mi código?– ¿Cómo automatizar las pruebas?– ¿Cómo asegurar que los programadores usen unas mismas

guías de estilos?– ¿Que partes de mi código son mas difíciles de mantener?– Vamos a hacer refactoring... ¿por donde empiezo?

> Solución: – Análisis Estático: PMD, CheckStyle, Findbugs, ... Sonar– Análisis Dinámico: JUnit, HttpUnit, JMeter, ...

Page 41: Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE

Aseguramiento de la Calidad (II)

SONAR

> Características– Aplicación web que integra a varias herramientas de análisis opensource.

– Soporta diferentes métricas clasificadas en: eficiencia, mantenibilidad, portabilidad, fiabilidad y usabilidad.

– Actualización de métricas en cada build de los proyectos

> Utilidades– Analiza el código fuente generando informes, métricas, diagramas, etc.

– Presenta resultados a diversos niveles: proyecto, paquete, clase y método.

– Permite visualizar el código fuente donde se incumplen las normas de codificación

– Muestra tendencias en la calidad del código, cobertura de test unitarios, hotspots, clouds, etc.

– ...

Page 42: Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE

Aseguramiento de la Calidad (III)

Page 43: Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE

Aseguramiento de la Calidad (IV)

Page 44: Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE

Aseguramiento de la Calidad (V)

Page 45: Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE

Aseguramiento de la Calidad (VI)

Page 46: Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE

Agenda

> Introducción > Control del Código Fuente> Gestión del Proyecto> Construcción del Producto> Gestión del Conocimiento> Repositorio de Componentes> Aseguramiento de la Calidad> Integración Continua> Resumen

Page 47: Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE

Integración Continua (I)

> Problemas– ¿Cómo reducir los tiempos de integración?– ¿Como ejecutar pruebas de regresión?– ¿Como detectar los fallos rápidamente? – ¿Como disponer de un entorno de pruebas siempre

actualizado?

> Solución: Herramientas de Integración Continua (CI)– Hudson– Continuum– CruiseControl– …

Page 48: Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE

Integración Continua (II)

HUDSON

> Características– Sistema de CI basado en web

– Gracias a sus plugins, permite adaptarse fácilmente a las necesidades de cada organización

– No está ligado a proyectos Maven (aunque es recomendable)

– Soporte de seguridad completo (conexión con LDAP)

– Integración con sistemas externos: svn, redmine, sonar, etc.

– Construcción distribuida

> Utilidades– Permite crear tareas automáticas (cron) de construcción

– Notificaciones via email

– Posibilidad de despliegue en repositorios de componentes (artifactory)

– Permite desplegar proyectos en servidores de aplicaciones (tomcat)

– ...

Page 49: Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE

Integración Continua (III)

Page 50: Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE

Integración Continua (IV)

Page 51: Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE

Integración Continua (V)

Page 52: Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE

Agenda

> Introducción > Control del Código Fuente> Gestión del Proyecto> Construcción del Producto> Gestión del Conocimiento> Repositorio de Componentes> Aseguramiento de la Calidad> Integración Continua> Resumen

Page 53: Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE

Resumen (I)

> Necesidad de emplear un sistema de control de versiones (como SUBVERSION) para gestionar correctamente el código fuente.

> En entornos grandes o medianos es indispensable el uso de una herramienta de gestión de proyectos (como REDMINE) para llevar el seguimiento del desarrollo.

> Es preciso contar con algún sistema (como MAVEN) que permita automatizar ciertas tareas como la gestión de dependencias, empaquetados y despliegues, así como generar un portal web del proyecto.

> Mantener una base de conocimiento mediante algún sistema WIKI (como MEDIAWIKI) es muy importante de cara a la mejora continua del equipo.

Page 54: Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE

Resumen (II)

> Para gestionar de forma efectiva la reutilización de componentes software, es necesario disponer de un repositorio local de artefactos (como ARTIFACTORY)

> Desarrollar código de calidad es fundamental para asegurar aspectos como la mantenibilidad y la eficiencia del software. Así pues, el disponer de un entorno centralizado de métricas (como SONAR), nos ayudará a mejorar el producto que desarrollemos.

> Los sistemas de integración continua (como HUDSON) son vitales para detectar errores tempranos, y disponer siempre de un software actualizado en algún entorno de pruebas.

Page 55: Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE

Resumen (III)

Page 56: Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE

Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE.

[email protected]