viernes, 29 de agosto de 2008

Revisión del libro: J2EE Architect's Handbook

Recientemente he terminado de leer un libro sobre arquitectura The J2EE Architect's Handbook de Derek Ashmore, te lo puedes descargar de forma gratuita de theserverside , el libro es un poco antiguo, del 2004, y eso se nota al abordar ciertos temas como por ejemplo las tecnologías que sugiere para las distintas capas de una aplicación J2EE, en muchos casos ya han quedado un poco obsoletas, pero tampoco entra en detalles de bajo nivel con lo que no importa mucho y hace un completo repaso del ciclo de vida del desarrollo software desde un punto de vista de las tecnologías J2EE, me pareció buena idea echarle una lectura saltando algunas partes.

El libro está dividido en cuatro secciones:

  • Planificando aplicaciones J2EE.
  • Diseñando aplicaciones J2EE.
  • Construyendo aplicaciones J2EE.
  • Testeando y manteniendo aplicaciones J2EE.


En algunas fases da buenos consejos, coincido con el autor en el empleo de varias “Best Practices”, pero no estoy de acuerdo en varios aspectos, como por ejemplo creo que le da demasiadas atribuciones a la figura del Arquitecto que creo que deberían pertenecer al Jefe de proyecto, que desde mi punto de vista debe tener también un importante background técnico en el desarrollo de aplicaciones, pero como conclusión creo que si que merece la pena echarle un vistazo porque siempre aportará alguna idea nueva o aunque sólo sea por hacer un repaso de como se desarrolla una aplicación.

Al dar consejos para hacer un buen desarrollo de software me recordo a "The Pragmatic Programmer" de Andrew Hunt, que es un verdadero clásico al respecto, y que fue considerado en su día por javalobby como el 9º de los libros técnicos imprescindibles , donde también aparecen un par de libros relacionados con arquitectura J2EE de Rod Jonson que a mi me resultaron muy interesantes: “J2EE Design and Development” y “J2EE Development without EJB” aunque este último es anterior a que saliese la especificación de EJB 3.0.


delicious | digg | technorati | yahoo | meneame

jueves, 28 de agosto de 2008

Análizador Estático de Código para Java.

Le estoy echando un vistazo a los Analizadores estáticos de código que existen para java, La definición de un AEC podría ser la siguiente: Es una herramienta software que realiza Análisis estático de Código, es decir examina el código fuente de una aplicación, en contraposición al análisis dinámico que lo que hace es examinar el resultado de este código en ejecución, la intención de este tipo de herramientas es encontrar posibles errores o incorrecciones, antipatrones o malas practicas de programación de una forma automática, suelen ofrecer informes con métricas del tipo complejidad ciclomática, longitud de línea, el número de líneas sin comentarios, el tamaño de métodos, clases, etc.

Para tener una idea del estado de madurez y del empleo de estas herramientas en el mundo real y antes de decidirme a probar una en profundidad he decidido realizar el típico estudio utilizando las herramientas de google para comparar el impacto que tiene cada una de las distintas alternativas en la red, en este caso he usado la nueva herramienta de google, google insights compañera de google trends, utilizando la lista de que propone la wikipedia para java y oponsource:

  1. Bandera
  2. Checkstyle
  3. Classycle
  4. FindBugs
  5. Jlint
  6. PMD
  7. SCL
  8. Soot
  9. Hammurapi
  10. UCDetector

Y añadiendo a cada término de búsqueda “java” para delimitar el contexto he realizado las siguientes comparaciones:

1 - cinco primeros

Es necesario dividir las búsquedas en grupos de cinco ya que google insights no permite introducir más términos de una sola vez.

2 - cinco siguientes


Si nos quedamos con los que más movimiento tienen ( menos en el caso de jlint y bandera que he decidido quedarme con jlint ya que bandera es un término muy común y seguro que se cuelan más resultados indeseados):


3 - cinco más exitosos

Como podéis ver históricamente Checkstyle se sitúa en cabeza pero a día de hoy está por delante PMD (aunque es un poco sospechoso ya que si buscamos en google sólo por PMD obtenemos casi 6 millones de ocurrencias, eso si el proyecto en sourceforge es la primera) y seguido muy de cerca por
FindBugs.

También se puede apreciar que estas herramientas están tenido mucho más éxito en países como la India o Japón que en los países hispanohablantes de los cuales no aparece ninguno en las 10 primeras posiciones, aunque me imagino que esto será debido al volumen de software desarrollado en cada zona.

Cuando saque un rato me gustaría echarle un vistazo a estas tres, ver si se pueden integrar en alguna de las IDEs más populares, evaluar usabilidad, rapidez, calidad de los informes, etc.

¿Tenéis experiencia en el uso de alguna de estas herramientas?, ¿Cuál de ellas o que combinación de ellas usáis?

Otros artículos relacionados:

javaHispano Persiguiendo la calidad del código
javaHispano PMD v4 publicado
javaHispano Checkstyle 4.2 publicado

También existen voces críticas en lo que a este tipo de herramientas se refiere.

delicious | digg | technorati | yahoo | meneame