KBDoctor Complexity Index.

Agregué al KBDoctor un reporte que mide la complejidad de los objetos GeneXus de una KB.

No es fácil definir que objeto es complejo y cual es simple, por lo que definí un KBDoctor Complexity Index, que mide algunas de las cosas que me interesa simplificar.

El mismo esta definido de la forma

KBDoctor Complexity Index =
+100 por tener algún parametro sin IN: OUT: INOUT
+(MaximoNivelAnidacion * MaximoNivelAnidacion)
+ NumeroCiclomatico * 10 // Cuenta IF, Do While, For, Do Case
+ MaximoBloqueCodigo * 2



El indice intenta, que todos los objetos tengan reglas parm con IN y OUT, tener un nivel de anidacion bajo, bloques de codigo chico y un numero ciclomatico tambien chico.
En nuestros sistemas, si un objeto tiene un índice mayor que 500 es considerado muy complejo y debe cambiarse.

Estuve evaluando otros criterios para medir la complejidad como 
  • Cantidad de Rules
  • Cantidad de tablas accedidas
  • Cantidad de atributos accedidos

pero preferí una primer versión del indice que fuera mas sencilla y fácil de usar. 

El reporte también saca una suma del total de la KB (puede ayudar a medir que tan compleja es la KB) y la complejidad promedio. 

El tener un indicador, ayuda a realizar trabajos de mejoras en el código existente. 

Si alguien mas está trabajando en el tema, me gustaría intercambiar experiencias para avanzar mas rápido. 



Comentarios

Entradas más populares de este blog

La nefasta influencia del golero de Cacho Bochinche en el fútbol uruguayo

Aplicación monolítica o distribuida?

Funcionalidades de GeneXus que vale la pena conocer: DATE Constants.