Framework tecnológico para el desarrollo de aplicaciones en la Universitat Jaume I

download Framework tecnológico para el desarrollo de aplicaciones en la Universitat Jaume I

of 20

description

El presente documento tiene como objetivo examinar qué metodologías serían más adecuadas, cómo deberíamos configurar el entorno sobre el cual poder trabajar y qué tecnologías se deberían adoptar dentro del marco de trabajo de la Universitat Jaume I.

Transcript of Framework tecnológico para el desarrollo de aplicaciones en la Universitat Jaume I

Framework tecnolgico para el desarrollo de aplicaciones en la Universitat Jaume IRicardo Borillo [email protected]

ndice de contenidoFramework tecnolgico para el desarrollo de aplicaciones en la Universitat Jaume I.....................................1 Introduccin y objetivos...................................................................................................................................3 Metodologa.....................................................................................................................................................3 Desarrollo gil en la Universitat Jaume I....................................................................................................5 Arquitectura bsica del sistema.......................................................................................................................6 Capa de servidor........................................................................................................................................7 Frameworks bsicos:.............................................................................................................................7 Tests unitarios:......................................................................................................................................8 Documentacin adicional:......................................................................................................................9 Capa de cliente o interfaz grfico de usuario............................................................................................11 Frameworks bsicos:...........................................................................................................................11 Tests unitarios.....................................................................................................................................12 Documentacin adicional:....................................................................................................................12 Entorno de desarrollo.....................................................................................................................................13 Gestin de proyectos e incidencias..........................................................................................................13 Requisitos iniciales:.............................................................................................................................13 Herramientas disponibles:...................................................................................................................13 Documentacin adicional:....................................................................................................................14 Herramientas de documentacin y gestin del conocimiento...................................................................15 Requisitos iniciales:.............................................................................................................................15 Herramientas disponibles:...................................................................................................................15 Sistema de control de versiones...............................................................................................................16 Requisitos iniciales:.............................................................................................................................16 Herramientas disponibles:...................................................................................................................16 Documentacin adicional:....................................................................................................................16 Herramientas de construccin..................................................................................................................17 Requisitos iniciales:.............................................................................................................................17 Herramientas disponibles:...................................................................................................................17 Documentacin adicional:....................................................................................................................17 Integracin contnua.................................................................................................................................18 Requisitos iniciales:.............................................................................................................................18 Herramientas disponibles:...................................................................................................................18 Documentacin adicional:....................................................................................................................20 Pruebas unitarias......................................................................................................................................20 Requisitos iniciales:.............................................................................................................................20 Herramientas disponibles:...................................................................................................................20 Documentacin adicional:....................................................................................................................21 Repositorio de artefactos..........................................................................................................................21 Requisitos iniciales:.............................................................................................................................22 Herramientas disponibles:...................................................................................................................22 Documentacin adicional:....................................................................................................................22 Herramientas de anlisis esttico del cdigo............................................................................................23 Requisitos iniciales:.............................................................................................................................23 Herramientas disponibles:...................................................................................................................23 Documentacin adicional:....................................................................................................................23 IDE para el desarrollo...............................................................................................................................23 Requisitos iniciales:.............................................................................................................................23 Herramientas disponibles:...................................................................................................................24

Generadores de cdigo............................................................................................................................24 Requisitos iniciales:.............................................................................................................................24 Herramientas disponibles:...................................................................................................................24 Documentacin adicional:....................................................................................................................25 Resumen de herramientas seleccionadas................................................................................................25

Introduccin y objetivosA la hora de desarrollar aplicaciones, es tan importante considerar el conjunto de herramientas que componen el entorno de desarrollo, como el de las tecnologas empleadas, las metodologas adoptadas para la gestin de los equipos o la definicin del posterior proceso de explotacin. Con las metodologas giles como aspecto clave y diferenciador, se han definido toda una serie de herramientas y tecnologas que permitan alcanzar los objetivos de flexibilidad, facilidad de adaptacin al cambio y posicionamiento a futuro de los desarrollos realizados. As pues, el presente documento tiene como objetivo examinar qu metodologas seran ms adecuadas, cmo deberamos configurar el entorno sobre el cual poder trabajar y qu tecnologas se deberan adoptar dentro del marco de trabajo de la Universitat Jaume I. Con todo esto, la organizacin pretende: A nivel interno: Alineamiento con los objetivos estratgicos de la institucin, de forma que este nuevo modelo sea una herramienta ms de gestin del cambio en el camino hacia el Gobierno IT. Mejorar el nivel de satisfaccin de la comunidad universitaria con respecto a los aplicativos disponibles. Posicionarse en nuevas tecnologas de desarrollo, ms concretamente en metodologas giles. Conseguir para el rea una metodologa de trabajo gil, eficiente y efectiva. Minimizar, en la medida de lo posible, en nmero de errores que llegan al usuario, anticipando estos.

A nivel externo: Ser un referente, al menos a nivel universitario, en el desarrollo de aplicaciones. Sentar las bases para el desarrollo de un ERP universitario modular y abierto.

MetodologaUno de los objetivos principales de las organizaciones es la mejora continua. Cuando hablamos de equipos tcnicos dedicados al desarrollo de software, esta visin de mejora continua se traduce en la necesidad de obtener unos niveles de satisfaccin ms altos en cuanto a la experiencia de los usuarios finales se refiere (estudiantes, profesores y trabajadores) y en conseguir reducir el tiempo final de puesta en explotacin de los nuevos servicios (time to market). La mejora continua aplicada a cmo se desarrolla software, pasa por cuestionarse todos y cada uno de los aspectos implicados en el ciclo de vida del software. Desde la arquitectura de las aplicaciones, pasando por el conjunto de tecnologas empleadas, hasta cmo trabaja y qu herramientas utiliza el propio equipo de

desarrollo. Hasta ahora, las metodologas clsicas como RUP, Mtrica v3 o CMMI han impuesto ciclos de desarrollo muy estrictos y pesados en los que las pruebas en los sistemas se realizaban en fases muy avanzadas del desarrollo, provocando que los errores fueran detectados muy tarde o incluso no hubiera tiempo para realizar unas pruebas exhaustivas. Esto provoca que se tenga poca reaccin ante cualquier cambio en la definicin del sistema. Por otra parte, en este tipo de metodologas, la intervencin del usuario se limitaba a la fase de toma de requisitos del sistema, no teniendo un feedback real del mismos hasta la entrega del producto final. Esto provoca que el desarrollo muchas veces no coincida con la visin que el usuario final del mismo tena inicialmente. Si no podemos realizar unos controles de calidad en el software mediante pruebas de distintos tipos y el usuario no nos da feedback hasta el final del proyecto, estamos incumpliendo el primer principio que buscamos para la mejora continua: Calidad del software y satisfaccin de los usuario. Igualmente, si tenemos que seguir una metodologa estricta y pesada con muchas fases y en la que no se tiene una versin operativa del producto hasta el final del desarrollo, estamos incumpliendo el segundo principio que buscamos para la mejora continua: Acelerar el ciclo de desarrollo y puesta en explotacin de las aplicaciones

En definitiva, podemos concluir que esta forma de desarrollo en cascada no va alineada con los objetivos propuestos, por lo que se impone un cambio de paradigma a la hora de gestionar los ciclos de desarrollo y la interaccin con el usuario final que es al fin y al cabo el dueo del producto. En contraposicin con las metodologas clsicas, las metodologas giles se centran en conseguir versiones operativas del producto que estamos desarrollando al final de cada ciclo de desarrollo propuesto y en conseguir que el usuario final se integre en el proyecto como parte del equipo de desarrollo. De esta forma, se va aadiendo valor al producto de forma constante en cada iteracin y no se espera al final del desarrollo para realizar pruebas a todos los niveles, aumentando la calidad del producto y garantizando el feedback de los usuarios involucrados en el desarrollo.

Desarrollo gil en la Universitat Jaume IHay que tener en cuenta que un cambio metodolgico de estas caractersticas, y ms en una universidad, impone tambin un cambio interno muy fuerte en los equipos de desarrollo en los que se implanta. Es por ello que para la implantacin de una metodologa gil de trabajo como Scrum1 o Kanban2, o el seguimiento de un conjunto de buenas prcticas como las definidas por eXtreme Programming3, necesitaremos una formacin exhaustiva del equipo de desarrollo y ciertas herramientas de apoyo que ayuden a tener estos ciclos iterativos bajo control y que saquen el mximo rendimiento de nuestro entorno y de nuestro equipo.

1 http://en.wikipedia.org/wiki/Scrum_%28development%29 2 http://en.wikipedia.org/wiki/Kanban 3 http://en.wikipedia.org/wiki/Extreme_Programming

En cuanto a la formacin, se debe tener en cuenta de que estamos planteando un entorno muy dinmico y con mucha interaccin entre todos los miembros del equipo, por lo que al margen de la formacin en metodologas giles, ser necesaria una formacin tcnica adicional en conceptos como comparticin del cdigo, integracin continua o pruebas unitarias. Hay que tener en mente que la formacin no es algo puntual que se tenga que realizar nicamente al principio de la creacin de un equipo gil. Este tipo de equipos necesitan estar formados y motivados continuamente, por lo que el papel de un facilitador o un coach dentro de la organizacin, ser de vital importancia. En cuanto a las herramientas de apoyo, el objetivo es conseguir un ecosistema de herramientas que nos ayude a garantizar la correcta interaccin del equipo para producir software de mayor calidad y en el menor tiempo posible. Para ello, en el presente artculo analizaremos varias reas de accin como la gestin compartida del cdigo, la integracin continua, el desarrollo dirigido por tests a todos los niveles (unitario, de integracin, funcional, de aceptacin o de carga), el anlisis esttico del cdigo para la deteccin temprana de posibles bugs o malos diseos y la definicin y gestin de los artefactos generados y de sus versiones.

Arquitectura bsica del sistemaLas nuevas aplicaciones se disearn en base a una serie de capas que permitan una correcta gestin de los modelos de datos y de las reglas de negocio en las aplicaciones.

Para ello se estructurarn en base a cuatro capas lgicas: Capa del modelo: Encargada de mantener la coherencia de la aplicacin mediante la implementacin de las reglas de negocio necesarias. Esta capa ser la encargada de interactuar con la de persistencias cuando sea necesario.

Capa de persistencia: Encargada de "mapear" los modelos relaciones y de proporcionar una serie de clases de acceso a las entidades gestionadas. En ella se deber dar soporte a todas las necesidades del negocio en cuanto insercin, consulta y procesamiento de informacin de cada uno de los mbitos universitarios. Capa de servicios: Encargada de proporcionar acceso a la capa del modelo de una forma abierta e interoperable. Deber permitir la comunicacin va HTTP y en base a formatos estndar de intercambio de informacin como XML (ATOM, RSS, RDF, OData u otros) o JSON. Esta capa de servicios permitir: Un acceso flexible de cualquier tipo de tecnologa cliente a la informacin y los procesos de negocio. Un separacin de conceptos que permita mantener una base coherente, testeable y altamente estable.

Capa de interfaz grfico de usuario: Proporcionar un acceso de calidad a los servicios expuestos y estar basada en tecnologas de cliente rico. Deber ser diseada para cumplir con los requisitos impuestos de eficiencia, usabilidad y accesibilidad.

Con esta divisin entre un interfaz de usuario rico y una capa de servicios, se pretende que el equipo de desarrollo se centre en el diseo de una API consistente, estndar e interoperable que permita la integracin o implementacin de cualquier interfaz en cualquier plataforma. Esta arquitectura permite alcanzar dos objetivos principales: Diseo de un API de servicios que exponga los recursos clave de la organizacin, gracias al conocimiento del negocio de los desarrolladores de la universidad que lo han diseado, eliminando inicialmente la carga adicional de desarrollar aplicaciones grficas para su explotacin (aunque se ofrezca un interfaz rico de referencia para su uso). Desacoplamiento de la capa grfica con el fin de que terceros puedan desarrollar interfaces alternativos de cara a su explotacin en entornos tanto de escritorio, como web o mviles.

Capa de servidorEl anlisis actual se basa en la eleccin de Java como lenguaje base de desarrollo en la parte del sevidor y JavaScript en la parte cliente. Motivaciones para el uso de Java: Actualmente ya se cuenta con una base de aplicaciones desarrolladas en Java (portal corporativo, publicacin de contenidos con Apache Cocoon4, Web Services, pasarelas de envo SMS, etc). Recientemente, el equipo de desarrollo ha completado una formacin bsica en Java. Ya existen varios desarrolladores que tienen experiencia en este tipo de entornos y tecnologas. Las APIs proporcionadas por muchas de las aplicaciones que se utilizan en la actualidad estn basadas en Java (DSpace, Bonita Workflow, firma digital con CryptoApplet, etc).

4 http://cocoon.apache.org/

Frameworks bsicos:Para el desarrollo en la capa del servidor, se utilizarn frameworks que ayuden a reducir la complejidad en el desarrollo y aporten flexibilidad y simplicidad de uso. Una de las bases de este tipos de desarrollo es la utilizacin de frameworks como Spring Framework5, el cual permite: Gestin integral de la configuracin. Toda la configuracin e interaccin de los distintos componentes se gestiona en un mismo lugar. Integracin con las APIs estndar que proporciona Java: JPA, JAXB, JXM, JMS, etc. Integracin con las APIs de uso ms comn en el mercado. Soporte para la inyeccin de dependencias.

Otro de los frameworks bsicos a utlizar en la implementacin de la capa de servicios basada en REST, ser Jersey6. Este framework implementa el estndar JAX-RS para poder exponer esta serie de servicios, integrndose perfectamente con Spring Framework, JAXB y otras tecnologas relacionadas (JSON, ATOM, OData, etc).

Tests unitarios:La presencia de unidades de testeo a todos los niveles debe ser bsica para el xito de este nuevo sistema de desarrollo. En prximos apartados, se analizarn soluciones de testeo enfocadas a las distintas capas del desarrollo, cubriendo desde los aspectos funcionales de los interfaces grficos, hasta los unitarios de las reglas de negocio codificadas.

5 http://www.springsource.org 6 http://wikis.sun.com/display/Jersey/Main

Documentacin adicional: Spring in Action third edition:

Documentacin oficial de Spring Framework 3.X: http://static.springsource.org/spring/docs/3.1.0.M2/spring-framework-reference/html/ RESTful Web Services:

Tutorial: REST with Java (JAX-RS) using Jersey http://www.vogella.de/articles/REST/article.html

Capa de cliente o interfaz grfico de usuarioSe realizar un diseo de las aplicaciones en base a tecnologas de cliente rico, cuyo objetivo ser: Buscar una mejor experiencia de usuario. Reducir la heterogeneidad actual de interfaces, siguiendo unas pautas bsicas de diseo y usabilidad, obteniendo un diseo uniforme. Generar aplicaciones ms dinmicas y flexibles.

Frameworks bsicos:Para el diseo de la capa cliente, se utilizarn frameworks como ExtJS7. Estos frameworks son especialmente interesantes, ya que ofrecen: Gran cantidad de componentes grficos de gran potencia y fciles de extender. Soporte independiente del navegador. Integracin con tecnologas REST.

7 http://www.sencha.com/products/extjs/

Disponibilidad de herramientas de diseo visual (como ExtJS Designer). Soporte para internacionalizacin de interfaces, aspecto grficos configurable en base a temas y layouts flexibles.Tests unitarios

La implementacin de tests unitarios ser una constante en todas las capas del desarrollo. En la capa de interfaz de usuario se contar con herramientas de automatizacin de las pruebas como Selenium8 o phatomJS9, las cuales permiten la reproduccin de los flujos de navegacin que realizar el usuario y su testeo en distintos navegadores de forma automatizada.

8 http://seleniumhq.org/ 9 http://code.google.com/p/phantomjs/

Documentacin adicional: ExtJS in Action:

Documentacin oficial de Sencha ExtJS: http://www.sencha.com/learn/legacy/Tutorials Videos canal vimeo ExtJS: http://vimeo.com/tdgi/videos

Entorno de desarrolloGestin de proyectos e incidenciasRequisitos iniciales: Gestin integrada de bugs, tareas y mejoras. Definicin de los productos, mdulos y componentes de las aplicaciones desarrolladas. Versionado de los distintos productos. Planificacin de iteraciones y soporte a las metodologas empleadas.

Herramientas disponibles: Atlassian JIRA: http://www.atlassian.com/software/jira/ RedMine: http://www.redmine.org/ Bugzilla: http://www.bugzilla.org/ Trac: http://trac.edgewall.org/ Se recomienda el uso de JIRA por su potencia, flexibilidad y capacidad de integracin con las herramientas existentes. Se puede complementar su uso con el mdulo de gestin gil de proyectos GreenHopper.

Documentacin adicional: JIRA Essentials:

Practical JIRA Administration:

Documentacin oficial de JIRA: http://confluence.atlassian.com/display/JIRA/Home

Herramientas de documentacin y gestin del conocimientoRequisitos iniciales: Formato estndar de representacin. Documentacin accesible online, estructurada y buscable (base de datos de conocimiento). Facilidad de modificacin y mantenimiento. Posibilidad de exportacin a otros formatos de presentacin como PDF o ODT.

Herramientas disponibles: Confluence: http://www.atlassian.com/software/confluence/ MediaWiki: http://www.mediawiki.org/wiki/MediaWiki/es xWiki: http://www.xwiki.org/xwiki/bin/view/Main/ Se recomienda el uso de Confluence por su integracin con JIRA y por la potencia que ofrecen sus herramientas de exportacin de la documentacin en un formato PDF enriquecido.

Sistema de control de versionesRequisitos iniciales: Repositorio unificado para todo el cdigo desarrollado que permita su comparticin. Soporte para el versionado de los proyectos. Disponibilidad de herramientas que permitan el acceso, gestin, revisin, comparacin y trazabilidad de cambios.

Herramientas disponibles: Subversion: http://subversion.tigris.org/ Mercurial: http://subversion.tigris.org/

Git: http://git-scm.com/

Se recomienda el uso inicial de un sistema de control de versiones centralizado como Subversion para facilitar la adaptacin del equipo de desarrollo, plantendose en un futuro prximo el paso a un sistema distribuido basado en Git o Mercurial. En el caso de optar por JIRA en el apartado de gestin de proyectos, se recomienda la adopcin de los mdulos de acceso al cdigo del Subversion Fisheye10 y de revisin del cdigo Crucible11.

Documentacin adicional: Control de versiones con Subversion: http://svnbook.red-bean.com/ Pragmatic Version Control Using Git:

Mercurial: The Definitive Guide: http://hgbook.red-bean.com/read/

Herramientas de construccinRequisitos iniciales: Evitar la compilacin, construccin y despliegue manual del cdigo. De esta forma se intenta evitar errores a la hora de ejecutar este proceso. Facilitar el despliegue de cualquier aplicacin por parte de cualquier persona. Mantener la independencia del IDE. Gestionar de forma automtica las dependencias. Integracin de herramientas auxiliares en el proceso de construccin (despliegue, documentacin, anlisis esttico del cdigo, tests unitarios, etc).

Herramientas disponibles: Maven: http://maven.apache.org/ Ant: http://ant.apache.org/ Gradle: http://www.gradle.org/ Se propone el uso de Maven por su integracin con las herramientas de gestin de artefactos y de integracin contnua, por la gestin integrada de dependencias y por ser uno de los ms utilizados en proyectos multimdulo. 10 http://www.atlassian.com/software/fisheye/ 11 http://www.atlassian.com/software/crucible/

Documentacin adicional: Maven: The Complete Reference: http://www.sonatype.com/books/mvnref-book/reference/ Ant in Action:

Integracin contnuaRequisitos iniciales: Construccin, revisin e integracin contnua de los mdulos desarrollados. Independiente del lenguaje de programacin. Existencia de plugins que permitan adaptarse a cualquier requisito de despliegue. Punto nico de generacin de artefactos, documentacin, informes de test, despliegues de preproduccin, etc.

Herramientas disponibles: Jenkins: http://jenkins-ci.org/ Bamboo: http://www.atlassian.com/software/bamboo/ CruiseControl: http://cruisecontrol.sourceforge.net/ Se propone el uso de Jenkins por su gran adopcin y por su extenssima coleccin de plugins.

Documentacin adicional: Jenkins: The Definitive Guide:

Pruebas unitariasRequisitos iniciales: Comprobar la integridad del software desarrollado y favorecer la deteccin de bugs en fases tempranas del desarrollo. Facilitar el refactoring y la realizacin de cambios que puedan afectar a otros mdulos (tests de regresin). Favorecer el diseo modular. Documentar las funcionalidades y bugs.

Herramientas disponibles: jUnit: http://www.junit.org/ TestNG: http://testng.org/doc/index.html Se propone el uso de jUnit como base para el desarrollo de tests unitarios. Esta herramienta se completar con otras posibles para cubrir los distintos mbitos de testeo: Selenium. Test de interfaz de usuario: http://seleniumhq.org/ Hamcrest. Matchers especficos para jUnit: http://code.google.com/p/hamcrest/ DbUnit. Test de base de datos: http://www.dbunit.org/ jMeter. Test de rendimiento y carga: http://jakarta.apache.org/jmeter/ Mockito. Implementacin de mock objects y stubs: http://mockito.org/ Cobertura. Anlisis del conjunto de cdigo del proyecto que est respaldado por tests unitarios. Suele expresarse en % y su valor mnimo depender del tipo de proyecto y de la cantidad de cdigo autogenerado con que cuente nuestro proyecto: http://cobertura.sourceforge.net/

Documentacin adicional: XUnit Test Patterns:

JUnit in Action:

JUnit Recipes:

Growing Object-Oriented Software Guided by Tests:

Repositorio de artefactosRequisitos iniciales: Contar con un repositorio centralizado de cualquier librera utilizada en el desarrollo. Controlar las libreras utilizadas y sus versiones. Tener un punto nico de publicacin de las distintas versiones de nuestros desarrollos que vayamos generando. Control del acceso a los artefactos generados, gestin sencilla web y backup centralizado.

Herramientas disponibles: Nexus: http://nexus.sonatype.org/ Artifactory: http://www.jfrog.com/products.php Archiva: http://archiva.apache.org/ Se propone el uso de Nexus por su simplicidad de instalacin y uso, y su gran rendimiento.

Documentacin adicional: Repository Management with Nexus: http://www.sonatype.com/books/nexus-book/reference/

Herramientas de anlisis esttico del cdigoRequisitos iniciales:Estas herramientas nos permitirn el anlisis centrado en el cdigo fuente del proyecto para la deteccin de potenciales bugs, porciones de cdigo ineficientes, procedimientos con excesiva complejidad (complejidad ciclomtica), problemas de seguridad, etc.

Herramientas disponibles: Sonar. Integra PMD, CPD, CheckStyle, Cobertura, FindBugs y otras: http://www.sonarsource.org/ Se propone el uso de Sonar como herramienta integradora en lugar del uso de herramientas individuales desde el proyecto. Maven ser el responsable de la exportacin de las mtricas y de su registro en Sonar (este proceso se puede realizar desde el servidor de integracin contnua).

Documentacin adicional: Documentacin oficial de Sonar: http://docs.codehaus.org/display/SONAR/Documentation

IDE para el desarrolloRequisitos iniciales:Entorno integrado de desarrollo que permita el acceso al resto de componentes del entorno y facilite el trabajo con los mismos sin tener que abandonar el propio IDE.

Herramientas disponibles: Eclipse: http://www.eclipse.org/ Netbeans: http://netbeans.org/ IntelliJ: http://www.jetbrains.com/idea/ Se propone Eclipse como herramienta bsica debido a la gran integracin que permite de todas las herramientas del entorno. Se recomienda el uso de alguna de las distribuciones de Eclipse existentes como SpringSource Tool Suite12, la cual dispone en su configuracin bsica de todos los plugins necesarios para iniciar el desarrollo tanto a nivel de construccin con Maven, como de complementos para el trabajo con Spring Framework.

12 http://www.springsource.com/developer/sts

Generadores de cdigoRequisitos iniciales:Generacin automtica de cdigo para mejorar la eficiencia en el desarrollo, prevenir errores en la codificacin y facilitar el mantenimiento en las distintas capas.

Herramientas disponibles: JPA. Generacin de cdigo de persistencia con Hibernate+Maven. Spring Roo. Creacin y mantenimiento de proyectos de forma automatizada: http://www.springsource.org/roo ExtJS Designer. Creacin de interfaces de forma visual: http://www.sencha.com/products/designer/

Documentacin adicional: Java Persistence with Hibernate:

Spring Roo in Action:

Resumen de herramientas seleccionadas JIRA: Gestin de proyectos e incidencias. Confluence: Documentacin y gestin del conocimiento. Subversion: Control de versiones. Maven: Herramienta de construccin. Jenkins: Herramienta de integracin continua. jUnit: Pruebas unitarias. Nexus: Repositorio de artefactos. Sonar: Anlisis esttico del cdigo. ExtJS Designer: Creacin de interfaces de forma visual. Eclipse (SpringSource Tool Suite): Herramienta integradora del resto de herramientas.