Cuando se habla de calidad el tamaño es muy importante. Se suele afirmar que el tamaño condiciona el resto de características.
La experiencia adquirida analizando proyectos con Sonar para determinar la calidad hace que se pueda afirmar que el tamaño de un proyecto es una característica muy importante a la hora de evaluar la calidad de dicho proyecto.
Actualmente se suele medir el tamaño de un proyecto contando el número de líneas físicas y el número de líneas de código.El problema que conlleva este manera de medir el tamaño es el estilo a la hora de programar de cada programador.
En estos dos ejemplos la funcionalidad coincide pero el número de líneas difiere bastante. Entonces, ¿podemos afirmar que el tamaño importa si medimos el tamaño de una manera tan poco rigurosa?
Lo ideal sería calcular la funcionalidad de un código con la intención de conocer el tamaño de dicho código. Para ello, existe la métrica ABC detallada en un artículo publicado en 1997 por Jerry Fitzpatrick.
Métrica ABC
La métrica ABC calcula un vector con tres componentes: El valor de la métrica ABC se obtiene calculando la norma del vector ABC:
En la página del proyecto GMetricsy en el blog personal de Jake Scruggs se puede encontrar una clasificación de como interpretar la métrica. Después de llevar a cabo una investigación exhaustiva con proyectos muy grandes y reales hemos elaborado nuestra propia clasificación de la métrica. Dicha clasificación tiene realmente sentido cuando hablamos de la métrica ABC de una clase o un método. La métrica de un proyecto total nos aporta la misma información que el número de líneas de código de un proyecto pero no nos aporta información sobre si es necesario refactorizar. En el caso del valor de la métrica obtenida para una clase o un método podemos afirmar si es necesario refactorizar o por el contrario el número de métodos y clases es el correcto.
Clasificación de la métrica ABC para saber si es necesario refactorizar las clases:
- 0-30 = Correcto
- 30-60 = Es necesario refactorizar
- 60-90 = Es MUY necesario refactorizar
- >=90 = Es OBLIGATORIO refactorizar
Clasificación de la métrica ABC para saber si es necesario refactorizar los métodos:
- 0-15 = Correcto
- 15-30 = Es necesario refactorizar
- 30-45 = Es MUY necesario refactorizar
- >=45 = Es OBLIGATORIO refactorizar
Sonar ABC Metric Plugin En excentia dentro del marco de QAlitaX hemos desarrollado una extensión para Sonar (herramienta para medir la calidad del software), basado en la métrica ABC, que determina si es necesario llevar a cabo una refactorización. En el widget se puede ver el valor de la métrica media de las clases y los métodos junto a un icono que representa si se ha de refactorizar o no.
Además, para cada clase se muestra el valor de la métrica junto con otra información interesante como los valores de A, B y C del vector.
En conclusión, ya que el tamaño es importante a la hora de evaluar la calidad de un proyecto, es necesario medir el tamaño de una manera precisa y rigurosa para todos los proyectos, siendo ese el objetivo de la métrica ABC.