Your SlideShare is downloading. ×
0
Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE
Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE
Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE
Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE
Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE
Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE
Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE
Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE
Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE
Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE
Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE
Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE
Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE
Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE
Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE
Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE
Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE
Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE
Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE
Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE
Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE
Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE
Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE
Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE
Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE
Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE
Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE
Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE
Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE
Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE
Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE
Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE
Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE
Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE
Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE
Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE
Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE
Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE
Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE
Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE
Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE
Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE
Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE
Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE
Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE
Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE
Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE
Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE
Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE
Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE
Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE
Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE
Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE
Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE
Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE
Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE

688

Published on

Jornadas de Conocimiento Libre y Web 2.0 …

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

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
688
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
26
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE. Iván Ruiz Rube Departamento de Lenguajes y Sistemas Informáticos Universidad de Cádiz
  • 2. 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
  • 3. 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
  • 4. 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
  • 5. 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”
  • 6. 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
  • 7. 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) – …
  • 8. 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) – ...
  • 9. Control del Código Fuente (III)
  • 10. Control del Código Fuente (IV)
  • 11. Control del Código Fuente (V)
  • 12. 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
  • 13. 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) – …
  • 14. 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 – ...
  • 15. Gestión del Proyecto (III)
  • 16. Gestión del Proyecto (IV)
  • 17. Gestión del Proyecto (V)
  • 18. Gestión del Proyecto (VI)
  • 19. 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
  • 20. 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 – …
  • 21. 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 – ...
  • 22. Construcción del Producto (III)
  • 23. Construcción del Producto (IV)
  • 24. Construcción del Producto (V)
  • 25. Construcción del Producto (VI)
  • 26. Construcción del Producto (VII)
  • 27. 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
  • 28. 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 – …
  • 29. 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 – ...
  • 30. Gestión del Conocimiento (III)
  • 31. Gestión del Conocimiento (IV)
  • 32. 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
  • 33. 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 – …
  • 34. 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 – ...
  • 35. Repositorio de Componentes (III)
  • 36. Repositorio de Componentes (IV)
  • 37. Repositorio de Componentes (V)
  • 38. Repositorio de Componentes (VI)
  • 39. 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
  • 40. 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, ...
  • 41. 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. – ...
  • 42. Aseguramiento de la Calidad (III)
  • 43. Aseguramiento de la Calidad (IV)
  • 44. Aseguramiento de la Calidad (V)
  • 45. Aseguramiento de la Calidad (VI)
  • 46. 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
  • 47. 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 – …
  • 48. 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) – ...
  • 49. Integración Continua (III)
  • 50. Integración Continua (IV)
  • 51. Integración Continua (V)
  • 52. 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
  • 53. 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.
  • 54. 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.
  • 55. Resumen (III)
  • 56. Herramientas para la mejora del proceso de desarrollo de aplicaciones J2EE. ivan.ruiz@uca.es

×