Benchmark de aplicaciones

Yo pensaba que el post anterior respecto a la evaluación de la calidad de una aplicación era el último de nuestra serie en el análisis de código Cobol con Sonar. Pero he descubierto esta semana un nuevo plugin eXcentia, muy útil: el Sonar Benchmark Plugin.

Este plugin permite una evaluación comparativa – un benchmark – de una aplicación con todo el código en tu repositorio de Sónar.

¿Te acuerdas de que hemos analizado diferentes aplicaciones Cobol, con las que he creado una View Sonar. Con esta View, hemos realizado una evaluación de la calidad de una aplicación, no la más voluminosa, pero que tenía un número importante de violaciónes.

Luego, hemos visto los valores que nos permiten realizar nuestra evaluación y proponer recomendaciones. Pero ¿como se mide nuestro proyecto con otras aplicaciones?

Esto es lo que vamos a hacer con este Benchmark Sonar plugin.

Instalación

La instalación, como con cualquier plugin de Sonar es muy simple:

  1. Descargar el plugin desde la pestaña ‘Descargar’ del sitio eXcentia, en el directorio ../extensions/plugins/ del entorno Sonar.
  2. Reiniciar Sonar… et voilà.

Utilización

El plugin viene con su propio cuadro de mando (con la versión 3.1.1 de Sonar que yo uso): elije la aplicación que deseas y seleccione ‘Benchmark’ en la barra de menú.

Tenemos dos widgets. El primero (Benchmark global) categoriza las applicaciones con valores de clase baja, media y máxima.

Podemos ver que:

  • El tamaño medio de los proyectos es de 424.000 líneas de código.
  • La aplicación más pequeña tiene 482 líneas: es el archivo que puedes descargar desde el sitio de Sonar para probar un análisis inicial.
  • La aplicación más voluminosa tiene más de 1,6 millones líneas de código.

Podemos ver de inmediato que tenemos 6 proyectos pequeños, 2 de tamaño muy grande, y ninguno de tamaño intermedio.

¿Cómo se encuentro nuestra aplicación en el portafolio de aplicaciones? Esto es lo que nos muestra el segundo widget.

La forma de esta curva refleja el gráfico anterior: la mayoría de las aplicaciones tiene menos de 200.000 LOC, y con 185.000 líneas de código, la nuestra está en los primeros (6/8) de los seis pequeños proyectos.

Hemos visto en nuestra evaluación anterior que esta aplicación tenía un nivel de documentación bastante bajo. Pero este es el caso de la mayoría de los proyectos con seis aplicaciones bajo 17% de comentarios.

Ves cómo esta tabla es el inverso exacto del anterior gráfico. Bueno, la curva correspondiente también será la imagen inversa de la anterior:

Con una tasa del 14,7% de los comentarios, nuestra aplicación está en el medio (5/8): es el conjunto entero de las aplicaciones que sufre de una falta de documentación.

¿Te acuerdas de que nuestra aplicación presentaba una alta tasa de código duplicado?

De hecho, este es el caso con la mayoría de los proyectos: 2 con menos de 20% de líneas duplicadas y 4 con una tasa de entre 20% y 40%.

Con el 50% de Copiado-Pegado, nuestro proyecto esta en la cabecera, pero no muy lejos del pelotón.

Por último, vimos que nuestra aplicación no es complicada.

Este es el caso, con menos de 20 puntos de Complejidad Ciclomática por programa, mientras que la mitad de las aplicaciones se acerca o está por encima de los 100 puntos. Esto refleja la distribución de las aplicaciones, con un predominio de pequeñas aplicaciones y dos otras muy importantes.

La calidad es bastante correcta, con un promedio de 75% de cumplimiento de las buenas prácticas Cobol …

… y 5 aplicaciones por encima del 80%. 3 proyectos son más bajos de este promedio, con nuestro …

… de nuevo en los ultimos.

Personalizar un dashboard

Puedes crear tus propios widgets con las métricas que encuentras interesante.

En el ejemplo siguiente, tengo un cuadro de mando personalizado para el management, con dos widgets que muestran el coste de remediación de los defectos ‘Blockers’ y ‘Crítical’, centrados en nuestro Modelo de Calidad en rendimiento y fiabilidad, pues en los defectos que presentan los más de riesgo para los usuarios.

El coste promedio de resolución de estos defectos es de 135 días por aplicación.

Con 56 días, nuestro proyecto es uno de los primeros candidatos para una refactorización.

Ya dije en el post anterior que el management te agradecerá si puedes proporcionar la información para facilitar la toma de decisiones. Por ejemplo:

  • ¿Representa este proyecto una excepción en el portafolio de aplicaciones?
  • ¿Podemos distinguir tendencias especificas de esta aplicación que podrían necesitar la adopción de ciertas medidas?
  • ¿O al contrario, una particularidad de este código se puede encontrar en todas las otras aplicaciones?

Por ejemplo, esta aplicación tiene un resultado mediocre en términos de documentación, pero se encuentra en la media de todas las aplicaciones que, además, poseen tambien un promedio de 40% de código duplicado. Si el management está considerando una externalización completa de su portafolio de aplicaciones, puedes explicarle que el coste de tal estrategia puede ser mayor que los beneficios esperados.

Otra situación: el management debe hacer frente a usuarios descontentos por el número de errores en esas aplicaciones o su bajo rendimiento, y te pide que propongas un plan de refactorización. Esta aplicación es un buen candidato para tal operación: aunque no es grande, sin embargo hay aplicaciones más pequeñas pero más complejas y con un coste superior de remediación.

Proponga una refactorización en dos fases: limpieza de los programas duplicados y un nuevo análisis para identificar los defectos bloqueantes y críticos que corregir.

Vender el valor de tus análisis se basa en ofrecer una información objetiva para facilitar la decisión. El plugin de eXcentia plugin puede mejorar tu evaluación de la calidad de las aplicaciones y proponer soluciones basadas en una información objetiva y exacta.

Una herramienta esencial para cualquier auditoria.

 

Esta entrada está también disponible en Lire cet article en français y Read that post in english.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *