Cómo justificar la inversión en análisis estático

El análisis estático es una técnica muy extendida para evaluar la calidad técnica del código. Pero muchas veces es los beneficios de implantar estos sistemas de calidad se ven como algo futuro, poco tangible y difícilmente cuantificables.

Que los sistemas de calidad son beneficiosos es algo que no admite lugar a dudas, pero para justificar una inversión es necesario estar seguros de que existe beneficio monetario predecible. Es decir, que el coste de implantación y mantenimiento del sistema (bien sea herramienta, equipo o todo junto) es menor que el beneficio obtenido por su implantación.

El cálculo del ROI del análisis estático se realiza, fundamentalmente, con argumentos predictivos basados en estadísticas. Estas estadísticas son verdades empíricas, no teóricas, del impacto que va a tener en producción un defecto, y qué un porcentaje de dichos errores se podrían haber detectado con un análisis estático.

Cuando se hace un cálculo de ROI basado en estadística (argumento muy válido) siempre pueden surgir detractores que no crean las estadísticas mostradas o la validez de aplicarlas a su caso. Como dice el famoso dicho de Benjamin Disraeli:

“Hay tres tipos de mentiras: mentiras pequeñas, mentiras grandes y estadísticas”

Como se puede apreciar a veces es necesario utilizar otras aproximaciones para justificar la inversión en un sistema de análisis estático que inspeccione el código y genere una predicción de un beneficio que se monetice fácilmente. Además sería conveniente depender menos de la estadística para calcular ese beneficio.

Justificar la inversión en análisis estático

Para aplicar otra aproximación que justifique la inversión es necesario entender el concepto de “esfuerzo de corrección” de un incumplimiento de análisis estático.

El esfuerzo de corrección, reparación o deuda técnica de un incumplimiento es el esfuerzo en unidades de tiempo/persona (horas/persona, por ejemplo)

Este concepto será muy útil para el cálculo del beneficio. El cálculo del beneficio se puede hacer en distintos momentos.

Cálculo del beneficio antes de la implantación

Para realizar este cálculo es conveniente analizar, de un muestreo de aplicaciones, una versión del software y su siguiente versión evolutiva.

Cada análisis tendrá como resultado una serie de incumplimientos de normativa. Además existirán incumplimientos en la versión más actual de la aplicación que no se encontrarán en la versión anterior. Con un sistema de análisis estático se puede analizar la nueva versión y rechazar su entrega en caso de tener más violaciones. Como cada incumplimiento tiene un esfuerzo asociado se puede usar ese “diferencial” de esfuerzo como la “cuantificación” de todo lo que costaría arreglar los defectos que se están intentado introducir al código. Es decir, de lo que habría que invertir para arreglar esos defectos. Por tanto, al tener un sistema de análisis estático, éste ahorra la inversión para resolver esos defectos: ese es el ahorro.

Cálculo del beneficio de un sistema ya implantado

En el caso en que el sistema esté ya implantado la justificación es parecida pero no igual. Al tener ya un análisis estático que evita subidas a producción con nuevos incumplimientos lo que hay que hacer es registrar todos los intentos de entrega y las nuevas violaciones que tienen cada uno de ellos. Es decir, registrar cada intento de entrega rechazado y sumar los nuevos incumplimientos que se intentan “colar” en la entrega y que, gracias al análisis estático, se están detectando y rechazando. El beneficio del análisis estático es: gracias a que existe el sistema se han evitado entregas software que hubieran introducido X nuevos incumplimientos, lo cual hubiera supuesto la inversión de un esfuerzo de Z para solventarlos. El sistema es rentable al evitar que se hagan inversiones para remediar nuevos incumplimientos.

Deja un comentario

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

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>