20 de enero de 2005

¿Que es un Framework?

Navegando en el historial de Google.Groups me encontré con este mensaje que nos dá una excelente cátedra sobre lo que es un framework. Centrándose principalmente en CodeBook y COMCodebook. Aunque lo aquí tratado aplica a cualquier Framework de cualquier lenguaje (es decir, suele ser universal el concepto).

***************************************
*Autor:Claudio Campos (infox@ciudad.com.ar)
*Asunto:Re: Proyecto de FrameWork en Español
*Grupos de noticias:microsoft.public.es.vfoxpro
*Fecha:2000-10-10 17:49:37 PST
***************************************

Un framework es una abstraccion de una maquina/artefacto (de construccion basada en ciclos de experiencia) para resolver un problema en UN contexto (ojo no confundir con pattern que es para resolver un problema en CUALQUIER contexto).

Y es por eso que en realidad no deberias pensar mucho en sus detalles, un framework condensa experiencia. Vos debes limitarte a instanciar esa maquina (framework) pero no tienes necesidad inmediata de conocer cada detalle de ella (estudiar cada clase por ejemplo).

El lado bueno es que (ademas de obtener un feedback de alimentacion de conocimientos, es decir 'ver' una arquitectura o poder 'copiar' o aprender como funciona una maquina), son los tiempos de desarrollo. Alguien que tiene que sacar un proyecto 'rapidamente' y quizas en un lenguaje que no conoce, podria facilmente aprender un framework (mas economico que armarse uno) ademas del lenguaje por supuesto y focalizarce en la solucion del problema del dominio (ojo no confundir usar un frameworks con usar wizards, builders o generadores).

Eso NO significa que NO podes hacer 'adaptaciones' o 'extensiones' a esa maquina, o de repente cambiar sus partes. Pero para eso hay tiempo y es cuando ya tenes TU 'maquina' funcionando y has hecho tus ciclos de experiencia con el framework, es ahi donde podes empezar a descubrir sus intestinos.

No obstante una salvedad con respecto a los frameworks: el costo/riezgo de instanciar algo muy abstracto es mucho mas grande a medida que subis en grados de abstraccion. (clonar es mucho mas economico que instanciar, instanciar un objeto de una clase concreta es mas economico que uno de una clase mas abstracta, instanciar un objeto a partir de una clase es mucho mas economico que instanciar un framework... y asi sucesivamente... arriba de todos estan los patterns). Es por eso que usar una 'maquina' construida por otro nos obliga a jugar con ciertas reglas.

Mi consejo: Cuando alguien esta 'jugado' para sacar una aplicacion en 3 o 4 meses y encima no conoce la herramienta/ambiente, lo mejor es usar un framework junto con una base de capacitacion en el lenguaje que esta construido. Si vos optas por armarte un framework vas a estar minimo 1 año tratando de estabilizar algo que ya esta 'hecho' y quizas mejor.

Riesgos: Cuando identificas los riesgos de tu proyecto puede ser que entre otros te encuentres con que la tecnologia es demasiado compleja, esto te impacta en los costos y te genera retrasos, la solucion: centrarte en la arquitectura de tu aplicacion (no los detalles del lenguaje o frameworks por ejemplo) y comprar competencias externas para asesoramiento.

Finalmente la respuesta a tu pregunta: Con guia podes aprender un framework con la complejidad de codebook en una semana (full gas), sin guia quiza te lleve algunos meses (si encontrar el camino correcto, es decir la forma de 'aprender' a usar esa abstraccion), o quizas desistas.

COM Codebook es algo totalmente diferente a Codebook, aunque la arquitectura de COM Codebook se puede usar perfectamente para 'reemplazar' al Codebook anterior.

Cuando vos comenzas un desarrollo tenes dos tipos de complejidades: la accidental y la esencial. El problema del Codebook (original) creo yo es no
haber pensado mucho en la complejidad accidental que tienen los proyectos cuyas tools no se adecuan muy bien a un determinado paradigma (por ejemplo object-ORIENTED).

El esquema de las bases de datos relacionales no tiene la 'expresividad' suficiente para describir de manera directa la compleja relacion entre datos
y conducta en el mundo de la orientacion a objetos, este es el caso mas extendido de complejidad 'accidental': impedance mismatch.

Entonces podriamos decir que COM Codebook es un framework de persistencia para base de datos relacionales.

Saludos !

Claudio Campos
Rafaela, Santa Fe

No hay comentarios. :

Publicar un comentario