Pages Menu
Categories Menu

Posted by on Sep 24, 2013 in General | 0 comments

Invertir en mejorar la clase con peores métricas de calidad puede ser un error

Pongamos un ejemplo. Supongamos, haciendo números redondos, que una aplicación tiene 1000 clases y que medimos la complejidad ciclomática de cada una de ellas, el código duplicado u otra métrica (te dejo este post sobre métricas que deberías medir).

Después, hacemos un listado que ordena las 1000 clases según los valores obtenidos en la métrica, siendo la primera la que peor valor obtiene en la métrica elegida. Ahora supongamos que solo tenemos presupuesto para refactorizar 50 de las 1000 clases (para simplificar, supongamos que cuesta lo mismo refactorizar cada una de ellas) ¿qué 50 clases elegirías? Elegir las 50 primeras de la lista, las 50 con peores valores de calidad, puede ser un gran error.

Métricas como la complejidad ciclomática, el código duplicado, etc., miden “mantenibilidad”, es decir, si el código es más, o menos, fácil de cambiar, evolucionar, mantener. Asi que, si se nos plantea la anterior pregunta, una de las cosas que primero tendríamos que tener en cuenta es la probabilidad de que las clases cambien.

Refactorizar la clase que peor valor tiene en una métrica de mantenibilidad… podría no servir para nada, si esa clase, aun estando muy mal programada, ya nunca va a cambiar, invertir esfuerzos en mejorar su mantenibilidad no tendrá mucho retorno de inversión.

Lo complejo estará ahora en obtener la probabilidad de que ocurra un cambio en la clase. Una manera de acercarnos a esa probabilidad es mirar hacía atrás en el tiempo, y ver cuánto ha cambiado la clase en el pasado, lo cual podrás verlo en tu herramienta de control de versiones.

Si obtenemos las modificaciones que se han hecho a cada una de las 1000 clases, por ejemplo, los últimos 12 meses, durante el último año, podríamos sacar la media de cambios por mes, teniendo así una estimación de la probabilidad de cambio de cada clase.

Véase a modo de ejemplo la siguiente tabla:

 

Modificaciones por mes (últimos 12 meses)

Mes 1

Mes 2

Mes 3

Mes 4

Mes 5

Mes 12

Media de cambios por mes

(probabilidad de cambio)

Clase 1 1 2 0 0 1 1 0,714
Clase 2 0 0 1 1 0 2 0,571
Clase 3 2 2 1 1 0 0 0,857
Clase 4 1 1 0 0 1 1 0,571
Clase 5 2 0 2 3 1 1 1,286
2 0,286
Clase 1337 0 0 1 1 1 0 0,429

 

Una vez hecho esto, si multiplicamos la probabilidad de cambio de cada clase por su valor de la métrica, podremos obtener una nueva lista, con las mismas clases pero teniendo en cuenta el valor de la métrica de calidad y su probabilidad de cambio. Si nuevamente la ordenamos la lista, en este caso, ya sabemos las 50 clases que con mayor probabilidad tienen mayor retorno de inversión en su mejora.

Javier Garzás

Javier Garzás

Ph.D. en informática, Postdoctorado en la Carnegie Mellon (EE.UU) e Ingeniero en Informática.

Primera vez que me tocó hacer una gestión Ágil en una empresa... año 2001. Desde entonces he trabajado en, o para, más de 90. Y he formado a más de 2000 alumnos.

También soy profe de la Universidad Rey Juan Carlos.
Javier Garzás

Post a Reply

Tu dirección de correo electrónico no será publicada.

Share This