Atributos basados en dominios y variables basadas en atributos

Hace unos dias, me preguntaron el motivo por el cual KBDoctor chequeaba que los todos los atributos estuvieran basados en dominios y también sugiere que todas las variables estén basadas en atributos (o dominios)

El motivo es bastante sencillo, para hacer que la KB sea mas fácil de mantener en el futuro. 

Pongo un ejemplo bien sencillo, con el cual, puede quedar un poco mas claro.


Tengo tres atributos, que son N(8) y guardo en ellos números telefónicos.  Ninguno de estos atributos tiene dominio. Luego tengo 4 programas que usan estos atributos y tienen variables que tambien contienen numeros telefonicos, tambien definidas como N(8).

Por el aumento de la cantidad de teléfonos, las compañías telefónicas se ponen de acuerdo y deciden pasar sus números de 8 a 10 dígitos. 

Para adaptar mi aplicacion, tengo que cambiar, 3 atributos, mas 4 programas los cuales tengo que detectar  y cambiar manualmente. Estas tareas (sobre todo la de encontrar donde se tienen atributos y variables Telefono) pueden insumir muchas horas y se pueden escapar algunos, sobre todo en KB grandes. 

Una opción mejor, que si se hace desde el principio, da muy poco trabajo adicional, es el tener un dominio Telefono y basar todos los atributos en el. Y también basar las variables usadas en los programas en los atributos o directamente en el dominio. 

De esa forma, cuando tengamos el requerimiento de agrandar la cantidad de digitos de los teléfonos en toda la aplicación, cambiando únicamente el dominio, se van a cambiar los atributos en la base de datos y se van a ajustar las variables al nuevo largo (con sus pictures y tamaños de pantalla adecuado). 
En vez de hacer 7 cambios, tengo que realizar solo uno, bajando el riesgo del cambio también. 

Resumiendo, es bueno tener todos los atributos basados en dominios (con significado semántico correcto) pues de esta forma, la KB estará mejor preparada para los cambios que vendrán. 





Comentarios

Entradas más populares de este blog

Aplicación monolítica o distribuida?

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

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