martes, 5 de agosto de 2008

Evaluando la calidad del código

Recientemente participé junto a mi compañero de IN2 José Luís Carrasco en la auditoría de la aplicación NEO de Abertis Telecom. El objetivo de la auditoría era determinar la calidad del código desarrollado, centrándonos en evaluar el diseño y la mantenibilidad.

La código a estudiar correspondía a una aplicación Java EE, construida sobre el bastidor OpenFrame. La aplicación está compuesta por diversos módulos web y servicios de integración con otros sistemas.

Con esta premisa, enfocamos la revisión del código en dos fases sucesivas :
  • La adecuación a la arquitectura propuesta y el diseño de la apliación, comparado con los requerimientos iniciales del proyecto. De esta forma podríamos medir el cumplimiento de estándares Java EE y best practices del framework utilizado.
  • Identificación del código problemático y gestión del código fuente con el objetivo de evaluar su mantenibilidad, flexibilidad y reutilización.
Una vez fijados los objetivos, el siguiente paso era escoger las herramientas adecuadas para realizar la tarea. Como este proyecto se distanciaba un poco de las auditorías que habitualmente hacemos en IN2, más centradas en el rendimiento, decidimos incorporar dos herramientas de análisis nuevas : JBuilder de CodeGear y Swat4j de CodeSwat.

La validación de la arquitectura y el diseño la realizamos revisando el código manualmente ,con el apoyo de los diagramas de secuencias automáticos generados con JBuilder a partir del código fuente.

En la revisión del código iba a ser una tarea bastante ardúa ya que teníamos que tratar casi 800 ficheros repartidos en más de 40 packages. Gracias a las nuevas herramientas de análisis este trabajo fue más sencillo.

Usamos el analizador de JBuilder para obtener un buen conjunto de métricas. Estás métricas se basan en reglas y cubren más de 200 variables del código.



Swat4j lo usamos para estudiar la aplicación de best practices de Java EE y analizar el código agrupando los resultados por objetos, packages y proyectos.

Estas dos herramientas están pensadas para trabajar bien integradas con Eclipse, es más, JBuilder es un Eclipse extendido y Swat4j es un plugin de Eclipse.

El resultado de la revisión fue bastante favorable, ya que el código tenía un nivel de calidad aceptable teniendo en cuenta el grado de madurez del proyecto. Apareció algún problema con la serialización de la sesión, algo bastante frecuente, y poca cosa más.

En definitiva, este fué un proyecto interesante que nos permitió experimentar con nuevas herramientas que seguro nos serán muy útiles en próximos proyectos.

No hay comentarios: