GeneXus Modularity Maturity Model

El tema de modularización de bases de conocimiento me parecen uno de los mas importantes para los próximos años. El definir módulos en las KB (nuevas y existentes) es un trabajo interesante, con grandes ventajas para la evolución de los sistemas. 

Para ordenar el proceso de modularizacion y poder saber cuanto me falta,  se me ocurre una escala de madurez, en el manejo de los módulos.

Nivel 1 - La nada absoluta - Solo tengo el modulo Root  - Todos los objetos son públicos.
Puede servir para KB de menos de 200 objetos.  Es como quedan todas las KB migradas desde versiones anteriores a Evolution 3. 

Nivel 2 - Defino algunos módulos. - Empiezo a definir algunos módulos - Algunos objetos son públicos sin necesidad. 

Nivel 3 - Modularizo - Todo objeto esta en un modulo - Minimizo cantidad de objetos públicos - Hay tablas marcadas como publicas. No permito update/insert/delete a tablas fuera del modulo al que pertenecen. 

Nivel 4 - Minimizo acoplamiento, maximizo cohesion y evito ciclos - Se trabaja para minimizar el acoplamiento entre módulos de la KB. Se maximiza cohesion entre los objetos dentro de un modulo, dividiendo módulos que lo ameriten. Los módulos de mi KB no tienen dependencias cíclicas. 
Pocas tablas publicas. API bien definida por modulo. 

Nivel 5 - Desarrollo Modular - La KB puede desarrollarse en forma modular y distribuir los binarios en forma independiente, compartiendo una base de datos. 

Estos niveles son solo una de la divisiones posibles, pero creo que reflejan el trabajo y la madurez que pueda tener una KB con respecto a los módulos. 

En una misma KB puede tener diferentes niveles en diferentes módulos. Y mi idea es medir por el peor de los niveles. 

Puedo tener algo muy bien modularizado y otras cosas no tanto. Por ejemplo, si logre un modulo con una api bien definida, poco acoplamiento, sin tablas publicas, y sin ciclos, puedo decir que ese modulo esta en nivel 4, pero si en la misma KB tengo algún objeto que no tiene modulo, se puede decir que la KB esta en el Nivel 1. 

Nos faltan algunas herramientas y mucha metodología para poder facilitar el avance de nuestras KB y hacerlas madurar mas rapido. 

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.