| Nuestro entorno de trabajo J2EE |
|
|
| Escrito por juanignacio.sanchez |
| Viernes, 26 de Junio de 2009 12:20 |
|
Cualquiera que haya trabajado desarrollando aplicaciones es consciente de que la Ingeniería del Software tiene un gran componente de artesanía y, como tal, las herramientas son fundamentales. En el Centro Experimental del Conocimiento hemos diseñado el entorno de desarrollo teniendo esto en mente. Al escoger las herramientas y la forma de trabajar con ellas nos planteamos los siguientes objetivos:
Los dos primeros objetivos surgen temprano en las primeras reuniones. Tenemos muchas líneas de trabajo diferentes, con dispares tecnologías (J2EE para aplicaciones de gestión, .NET para Sistemas de Información Geográfica, PHP para publicación de contenido web, SOA...). ¿Debíamos estandarizar totalmente las herramientas? Claramente se determinó que no. El choque entre Java y .NET fue el determinante. Tanto uno como otro tienen entornos de desarrollo contrastados, estables, muy productivos. No tiene sentido imponerse una limitación tal como tener que usar herramientas de Microsoft para Java, o viceversa. Esto conlleva un efecto colateral: las herramientas que se integran bien con Eclipse no tienen porqué integrarse con Visual Studio. Por tanto, renunciamos a estandarizar no sólo el entorno de desarrollo sino también otras cosas, como la gestión de proyectos. ¿Supone esto un problema? Para nada. Determinado esto, mi trabajo fue seleccionar las herramientas para el desarrollo con J2EE, de las que paso a contar la experiencia hasta la fecha. Eclipse Es un entorno de trabajo contrastado, potente y flexible gracias a los plugins. Lo usamos satisfactoriamente gracias a esto incluso para proyectos sobre PHP. JBoss Tools Es un conjunto de plugins para facilitar el trabajo con las tecnologías de JBoss, compañía de la que somos partners. Facilita trabajar con Seam (en nuestra opinión, el mejor framework J2EE en el momento), con el servidor de aplicaciones, con el Enterprise Server Bus... Implementa la creación de CRUDs de entidades tanto de forma directa, generando desde cero la entidad y las páginas de alta, edición y consulta, como inversa, tomando una tabla existente y generando con ella el código Java de entidades y control y las páginas JSF. Una de las grandes ventajas de usar Seam es este conjunto de plugins. En SpringSource se han dado cuenta de ello y hace unos meses publicaron también su propia versión de Eclipse y servidores de aplicaciones, pero en mi opinión JBoss está ya mejor posicionado para ello. No hemos tenido un solo problema serio con JBoss Tools, y el valor que nos proporciona no tiene precio. Trac Utilizamos Scrum como metodología de desarrollo, y Trac con unos cuantos plugins (Timing and Estimation, notablemente) nos permite gestionar el sprint backlog. Lo que es más, mediante Mylyn, el sistema de trabajo orientado a tareas que tiene Eclipse integrado, se conecta con Trac, permitiendo que un desarrollador gestione su trabajo (asignaciones, tiempos, requisitos...) directamente desde el IDE, sin tener que recurrir ni siquiera a un navegador web. Además, le proporciona valor añadido con la gestión de contextos. Si bien todavía no es una solución tan estable y completa como alguna otra alternativa como Jira, su sistema de extensión mediante plugins y su integración con Mylyn le hace ser una alternativa perfectamente viable (y más barata). Hudson Es nuestro sistema de integración contínua. Preferimos centrarnos en la calidad del producto sobre la del proceso, así que ejecutar tareas automatizadas de compilación, análisis estático de código, pruebas, etc., nos es muy importante. Si bien exige algo de trabajo inicialmente (especialmente para configurar un buen script Ant), lo que aporta una vez lo has echado a andar es muy interesante. Además, hay plugins para integrar Eclipse con él, y él con el Subversion y el Trac.
A grandes rasgos, éste es nuestro poquer para el desarrollo. Realmente conseguimos que el desarrollador se pueda centrar en el código, minimizando la carga adicional de comunicación (asignación y finalización de tareas o bugs, por ejemplo), y maximizando la productividad y la calidad, todo ello sin renunciar a la información necesaria para monitorizar el proyecto tanto por dentro (calidad de código) como por fuera (estimaciones, planificación...). |