sábado, 12 de febrero de 2005
Publicado por Tecnonucleo @ 19:54
Comentarios (1)  | Enviar

Como desarrollador, en un par de ocasiones en el ámbito profesional me
tocó trabajar con frameworks basados en metadatos. La experiencia no fue
buena en ninguno de los dos casos, y esto me llevó a meditar sobre las
causas de los problemas que fueron apareciendo.


Cabe aclarar en este punto las características de los dos tipos de
frameworks que van a ser mencionados en este artículo.


Por un lado, la forma más común y conocida de framework existente es la
basadas en programación. Estos frameworks basados en programación están
compuestos (dependiendo del lenguaje en el cual son implementados) por
clases, funciones y templates. En general, el programador tiene a su
disposición una serie de herramientas que amplían el lenguaje en el que
están desarrollando, enfocándose en el dominio del problema particular al
cual están abocados.


La otra clase de framework es la basada en metadatos. Esta es menos
común, pero se pueden encontrar unos cuantos ejemplos, sobre todo en
ambientes en los cuales el manejo de bases de datos relacionales es
preponderante. Estos frameworks construyen funcionalidades a partir de datos
almacenados en tablas que describen qué es lo que la computadora debe hacer.
Como ejemplo, un típico framework basado en metadatos puede poseer tablas
tales como "Funciones", "Campos", "Relaciones", etc.


Una vez aclarada la distinción entre ambos tipos de frameworks, podemos
continuar con el análisis de los basados en metadatos. Por supuesto, sus
seguidores argumentan las ventajas que los mismos poseen. Y en el otro
rincón los detractores (entre los cuales este autor se encuentra) las
refutan y además elaboran las desventajas. Lo que sigue es un resumen muy
sintético de las principales ventajas y desventajas.


Ventajas


Los sistemas son más fáciles de desarrollar


Este argumento se basa en que solo es necesario
modificar las tablas de metadatos para dejar el sistema funcionando.


La falacia de esta aseveración radica en que se
presupone que agregar registros en una tabla es más fácil que programar en
un lenguaje. Muy por el contrario, los lenguajes de programación han evolucionado a lo largo de
los años desde el críptico código máquina hasta los actuales orientados a
objetos. Están pensados para fomentar la reutilización y para hacer los
programas lo más legibles y libres de errores posible. Los lenguajes de
programación son el medio más optimizado y sobre todo flexible del
cual disponemos para hacer que una computadora se comporte de la forma que
deseamos.


Programar a través de tablas de metadatos no es ni por
asomo más fácil que hacerlo mediante un buen lenguaje de programación.
Puede dar esa impresión cuando la lógica es muy sencilla y se ajusta a la
perfección a lo previsto dentro del framework, pero se torna una tortura
cuando aparecen las excepciones y las funcionalidades demasiado a medida.


 


Los sistemas son más fáciles de mantener


Creo que esta segunda aseveración puede
ser rebatida con los mismos argumentos del punto anterior. Cabe agregar que
seguir la lógica de una aplicación analizando los metadatos se hace
prácticamente imposible. Además, muchas veces los metadatos son tan
dependientes unos de otros que los efectos colaterales de una modificación
son difíciles de prever.


 


No se necesita recompilar para realizar un cambio en el Sistema


Esto es cierto. Lo único que se necesitaría es cambiar
los metadatos. Pero hay que tener en cuenta que la mayoría de las bases de
datos en los ambientes de producción permanecen inaccesibles para los
desarrolladores. Y por más que esto no fuera así, la ventaja de no tener que
realizar una compilación no está del todo clara. Por el contrario,
personalmente prefiero compilar una sola DLL que llevar el control de múltiples modificaciones,
agregados y borrados en un sinnúmero  de tablas.


 


Desventajas


Luego de haber trabajado con estos framework manejados
por metadatos, he adquirido la suficiente experiencia como para poder
enumerar todo lo negativo que acarrea el uso de los mismos.


 


Programación antinatural


Sin dudas, puedo afirmar que ésta es la principal
desventaja. La forma más ergonómica de decirle a una computadora qué es lo
que debe hacer es usando un lenguaje de programación. El manejo de metadatos
no facilita en nada el pensamiento lógico de algoritmos de índole compleja.


 


Flexibilidad


En su forma más extrema, un
framework basado en metadatos consistiría en una estructura estática
(ejecutables, componentes DLL, páginas Web, etc.) idéntica para cualquier
implementación, y por supuesto las tablas de metadatos, en donde radicarían las
verdaderas diferencias. Esta configuración impone restricciones muy severas a la
hora de manejar situaciones que no se ajustan muy bien a formas estándares.
Y cualquier arquitecto sabe que este tipo de situaciones abundan en los
sistemas hechos a medida. Solo basta encontrarse con un solo usuario
obstinado...


 


Entornos de Desarrollo


La mayor parte de (sino
toda) la programación del sistema se realizará en aplicaciones que están
optimizadas para el manejo de datos, pero NO para el desarrollo de sistemas.
Todas las ventajas que poseen los actuales "Integrated Development
Environments"
se permanecerán desaprovechadas con esta forma de trabajo.


 


Desmotivación Profesional


Por último, nunca hay que olvidar que a los programadores les gusta programar. Con el enfoque
orientado a los metadatos indefectiblemente los programadores terminan por
convertirse en desorientados y sobre todo disconformesdata
entries”
.


 


Conclusión


Con la ayuda de
templates
y un buen framework basado en programación se consigue la
mayor flexibilidad posible. Las únicas limitaciones son las impuestas por el
lenguaje en sí mismo. Y si consideramos los lenguajes más modernos es
difícil encontrarse con algo que no se pueda hacer de una forma u otra.
Además estos lenguajes suelen poseer buenas herramientas destinadas a la
confección de rutinas genéricas que facilitan la reutilización.


Comentarios
Publicado por Invitado
miércoles, 24 de diciembre de 2008 | 13:28
Estaría muy bien que pusieras ejemplos.