Está en la página 1de 56

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

Ivn Ruiz Rube Departamento de Lenguajes y Sistemas Informticos Universidad de Cdiz

Agenda
> > > > > > > > > Introduccin Control del Cdigo Fuente Gestin del Proyecto Construccin del Producto Gestin del Conocimiento Repositorio de Componentes Aseguramiento de la Calidad Integracin Continua Resumen

Agenda
> > > > > > > > > Introduccin Control del Cdigo Fuente Gestin del Proyecto Construccin del Producto Gestin del Conocimiento Repositorio de Componentes Aseguramiento de la Calidad Integracin Continua Resumen

Introduccin (I)
> Complejidad del desarrollo software
Tecnologa variable (nuevos frameworks, libreras, etc.) Requisitos cambiantes (como siempre) Rotacin elevada de personal experto Naturaleza de las aplicaciones web Cliente impaciente

> Buenas Prcticas aprendidas de la experiencia


Reutilizacin del software y del conocimiento Gestin gil del proyecto Automatizacin de tareas repetitivas Aplicar reglas y estilos de codificacin nfasis en las pruebas Entregas continuas al cliente

Introduccin (II)
> Objetivo: Mejorar el proceso y el producto software
Emplear estndares Aplicar una metodologa (gil o tradicional) Usar herramientas de soporte (basadas en buenas prcticas)

> Que vamos a ver hoy?


Comentaremos escenarios problemticos Describiremos herramientas de ayuda Breve demostracin de las herramientas Al final, estaremos ante un entorno de desarrollo maduro

Agenda
> > > > > > > > > Introduccin Control del Cdigo Fuente Gestin del Proyecto Construccin del Producto Gestin del Conocimiento Repositorio de Componentes Aseguramiento de la Calidad Integracin Continua Resumen

Control del Cdigo Fuente (I)


> Problemas
Donde almaceno el cdigo fuente? Cmo unificar el cdigo de varios programadores? Qu ocurre cuando varias personas modifican los mismos ficheros? Cmo puedo gestionar diferentes versiones del software? Ha ocurrido un desastre... puedo recuperar una versin concreta? Puedo evitar accesos no autorizados?

> Solucin: Sistema de control de versiones (SCM)


Subversion CVS Git Mercurial Monotone Source Safe (MS)

Control del Cdigo Fuente (II)


SUBVERSION > Caractersticas
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) Actualizacin del proyecto (update) Actualizacin del repositorio (commit) Comparar versiones (diff) Fusionar cambios (merge) Limpiar (cleanup) ...

Control del Cdigo Fuente (III)

Control del Cdigo Fuente (IV)

Control del Cdigo Fuente (V)

Agenda
> > > > > > > > > Introduccin Control del Cdigo Fuente Gestin del Proyecto Construccin del Producto Gestin del Conocimiento Repositorio de Componentes Aseguramiento de la Calidad Integracin Continua Resumen

Gestin del Proyecto (I)


> Problemas
Como saber quien es el responsable de cada tarea? Como controlar los incurridos del proyecto? Cmo llevar el seguimiento de las tareas? Como controlar las incidencias del proyecto (en produccin)? Que caractersticas y que parches se han incluido en la versin x.y.z del software? Como planificar los trabajos?

> Solucin: Software de gestin integrada de proyectos


Redmine Trac DotProject Jira TFS + Project (MS)

Gestin del Proyecto (II)


REDMINE > Caractersticas
Aplicacin web construida con RoR Gestin multiproyecto y con mltiples versiones Interfaz muy facil e intuitiva Pginas de usuarios personalizadas y envo de emails

> Utilidades
Planificacin (bsica) mediante diagramas de Gantt Gestin de tareas: estado, responsable, target version, fechas de inicio/fin, porcentaje de avance, incurridos, etc. Seguimiento de tareas mediante consultas personalizadas Roadmap del proyecto Integracin con SCM Noticias, Foros, Wikis ...

Gestin del Proyecto (III)

Gestin del Proyecto (IV)

Gestin del Proyecto (V)

Gestin del Proyecto (VI)

Agenda
> > > > > > > > > Introduccin Control del Cdigo Fuente Gestin del Proyecto Construccin del Producto Gestin del Conocimiento Repositorio de Componentes Aseguramiento de la Calidad Integracin Continua Resumen

Construccin del Producto (I)


> Problemas
Cmo Como Cmo Cmo Como generar la estructura de directorios del proyecto? gestionar la compilacin y el empaquetado? gestionar dependencias con libreras de terceros? introducir meta-informacin del proyecto en el cdigo? hacer fcilmente un sitio web del proyecto?

> Solucin: Project Management Framework


Maven Ant + Ivy

Construccin del Producto (II)


APACHE MAVEN > Caractersticas Estndar de facto en la construccin de proyectos JEE Metainformacin en Project Object Model (POM.XML) Convencin sobre configuracin (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 automtica de dependencias (evitar el jar-hell) Maven Site: Generacin de un sitio web con informacin del proyecto, changelogs, javadocs, fuentes, resultados de las pruebas, etc. Empaquetados condicionados al entorno Ejecucin de tests previos a despliegues ...

Construccin del Producto (III)

Construccin del Producto (IV)

Construccin del Producto (V)

Construccin del Producto (VI)

Construccin del Producto (VII)

Agenda
> > > > > > > > > Introduccin Control del Cdigo Fuente Gestin del Proyecto Construccin del Producto Gestin del Conocimiento Repositorio de Componentes Aseguramiento de la Calidad Integracin Continua Resumen

Gestin del Conocimiento (I)


> Problemas
Cmo redactar de forma colaborativa documentos de trabajo? Cmo proporcionar ayudas para la solucin de problemas? Cmo plasmar el conocimiento? Cmo acceder rpidamente al conocimiento?

> Solucin: Sistema de edicin colaborativa (WIKI)


MediaWiki MindTouch Wiki Confluence XWiki

Gestin del Conocimiento (II)


MEDIAWIKI > Caractersticas
CMS colaborativo construido en PHP Edicin basada en artculos e hiperenlaces Histrico de versiones y bsquedas fulltext sobre los artculos Soporta multitud de plugins (extensiones) para mejorar el sistema

> Utilidades
Definir modelos de arquitecturas y frameworks de desarrollo. Catlogo de libreras Documentacin de proyectos (requisitos, anlisis) FAQs y TIPs ...

Gestin del Conocimiento (III)

Gestin del Conocimiento (IV)

Agenda
> > > > > > > > > Introduccin Control del Cdigo Fuente Gestin del Proyecto Construccin del Producto Gestin del Conocimiento Repositorio de Componentes Aseguramiento de la Calidad Integracin Continua Resumen

Repositorio de Componentes (I)


> Problemas
Reutilizamos cdigo a nivel de proyecto? Reutilizamos cdigo entre diferentes proyectos? Donde almacenamos el activo de componentes (jars) de la organizacin? Donde almacenamos los componentes de terceros?

> Solucin: Repositorios de componentes


Artifactory Nexus Archiva

Repositorio de Componentes (II)


ARTIFACTORY > Caractersticas
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, adems de integracin 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 Bsqueda de artefactos dentro de los repositorios ...

Repositorio de Componentes (III)

Repositorio de Componentes (IV)

Repositorio de Componentes (V)

Repositorio de Componentes (VI)

Agenda
> > > > > > > > > Introduccin Control del Cdigo Fuente Gestin del Proyecto Construccin del Producto Gestin del Conocimiento Repositorio de Componentes Aseguramiento de la Calidad Integracin Continua Resumen

Aseguramiento de la Calidad (I)


> Problemas
Cmo mejorar la calidad de mi cdigo? Cmo automatizar las pruebas? Cmo asegurar que los programadores usen unas mismas guas de estilos? Que partes de mi cdigo son mas difciles de mantener? Vamos a hacer refactoring... por donde empiezo?

> Solucin:
Anlisis Esttico: PMD, CheckStyle, Findbugs, ... Sonar Anlisis Dinmico: JUnit, HttpUnit, JMeter, ...

Aseguramiento de la Calidad (II)


SONAR > Caractersticas
Aplicacin web que integra a varias herramientas de anlisis opensource. Soporta diferentes mtricas clasificadas en: eficiencia, mantenibilidad, portabilidad, fiabilidad y usabilidad. Actualizacin de mtricas en cada build de los proyectos

> Utilidades
Analiza el cdigo fuente generando informes, mtricas, diagramas, etc. Presenta resultados a diversos niveles: proyecto, paquete, clase y mtodo. Permite visualizar el cdigo fuente donde se incumplen las normas de codificacin Muestra tendencias en la calidad del cdigo, cobertura de test unitarios, hotspots, clouds, etc. ...

Aseguramiento de la Calidad (III)

Aseguramiento de la Calidad (IV)

Aseguramiento de la Calidad (V)

Aseguramiento de la Calidad (VI)

Agenda
> > > > > > > > > Introduccin Control del Cdigo Fuente Gestin del Proyecto Construccin del Producto Gestin del Conocimiento Repositorio de Componentes Aseguramiento de la Calidad Integracin Continua Resumen

Integracin Continua (I)


> Problemas
Cmo reducir los tiempos de integracin? Como ejecutar pruebas de regresin? Como detectar los fallos rpidamente? Como disponer de un entorno de actualizado?

pruebas

siempre

> Solucin: Herramientas de Integracin Continua (CI)


Hudson Continuum CruiseControl

Integracin Continua (II)


HUDSON > Caractersticas
Sistema de CI basado en web Gracias a sus plugins, permite adaptarse fcilmente a las necesidades de cada organizacin No est ligado a proyectos Maven (aunque es recomendable) Soporte de seguridad completo (conexin con LDAP) Integracin con sistemas externos: svn, redmine, sonar, etc. Construccin distribuida

> Utilidades
Permite crear tareas automticas (cron) de construccin Notificaciones via email Posibilidad de despliegue en repositorios de componentes (artifactory) Permite desplegar proyectos en servidores de aplicaciones (tomcat) ...

Integracin Continua (III)

Integracin Continua (IV)

Integracin Continua (V)

Agenda
> > > > > > > > > Introduccin Control del Cdigo Fuente Gestin del Proyecto Construccin del Producto Gestin del Conocimiento Repositorio de Componentes Aseguramiento de la Calidad Integracin Continua Resumen

Resumen (I)
> Necesidad de emplear un sistema de control de versiones (como SUBVERSION) para gestionar correctamente el cdigo fuente. > En entornos grandes o medianos es indispensable el uso de una herramienta de gestin de proyectos (como REDMINE) para llevar el seguimiento del desarrollo. > Es preciso contar con algn sistema (como MAVEN) que permita automatizar ciertas tareas como la gestin de dependencias, empaquetados y despliegues, as como generar un portal web del proyecto. > Mantener una base de conocimiento mediante algn sistema WIKI (como MEDIAWIKI) es muy importante de cara a la mejora continua del equipo.

Resumen (II)
> Para gestionar de forma efectiva la reutilizacin de componentes software, es necesario disponer de un repositorio local de artefactos (como ARTIFACTORY) > Desarrollar cdigo de calidad es fundamental para asegurar aspectos como la mantenibilidad y la eficiencia del software. As pues, el disponer de un entorno centralizado de mtricas (como SONAR), nos ayudar a mejorar el producto que desarrollemos. > Los sistemas de integracin continua (como HUDSON) son vitales para detectar errores tempranos, y disponer siempre de un software actualizado en algn entorno de pruebas.

Resumen (III)

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

ivan.ruiz@uca.es

También podría gustarte