- Resumen
- El primer paso es encontrar
cuál es el problema - Profundizando en los problemas
de los generadores - Lo que más se utiliza en la
esfera - El
Sistema Experto más adecuado para la Generación
inteligente - ¿Qué
es lo que más nos interesa en la entrada del
generador? - Veamos entonces
el funcionamiento de este poderoso Sistema
Experto - Una
manera de hacer bien las cosas - Usando
plantillas - Buscando una
arquitectura que soporte los
propósitos - No es
el fin del pensamiento informático - Conclusiones
- Bibliografía
Resumen
La generación de código
ha devenido en una necesidad casi obligatoria para la
mayoría de los programadores durante el desarrollo de
software.
Numerosas herramientas
conocidas como CASE permiten la generación
automática de código a partir de diagramas o
modelos.
Ninguna de las herramientas existentes hasta ahora permiten
generar código mediante sistemas
expertos, la plataforma de programación Visual estudio .NET provee un
conjunto de librerías que permiten la generación de
código mediante la conformación de un sistema experto
capaz de hacer más inteligente el problema de la
generación automática de código
fuente.
Un programador es considerado un experto en el domino de
la escritura de
programas, un
sistema que proporcione un resultado igual al del programador en
una parte de la programación del proyecto, debe
ser llamado entonces Sistema Experto.
Este artículo muestra una vista
al panorama actual de la generación de código y
propone la vía eficaz de lograr el propósito de los
programadores: la búsqueda de un nuevo paradigma
universal e inteligente para construir códigos de manera
automática.
La capacidad de abstracción nos permite trabajar
en el mundo de las ideas y conocer en terminos de clases y
relaciones lo que en el mundo real consideramos y aceeptamos ocmo
objetos y las relacione s entre ellos . Los programadores han
logrado interpertar los modelos para construir herramientas
adecuadas, automatizar este trabajo
aumenta de modo apreciable la productividad
El
primer paso es encontrar cuál es el
problema
En la actualidad existen numerosas alternativas para
disminuir la carga laboral de los
programadores, sobre todo la generación automática
de código permite este propósito. Sin embargo, la
dificultad de aprendizaje
inmediato de las herramientas de generación de
código, la sobrecarga de funcionalidades y la diversidad
de plataformas de desarrollo; impiden que el nivel de
abstracción del programador sea una técnica
universal.
Una gran cantidad de herramientas soportan UML, muchas de
ellas tienen las características que reducen
significativamente el trabajo de
los programadores, lo que las hace ser consideradas Herramientas
CASE. Ninguna de estas herramientas trata la
generación de código desde la esfera de la inteligencia
artificial, por lo que las decisiones y cambios
específicos entre un componente u otro muchas veces tienen
que rectificarse por el desarrollador luego de ser generado por
alguna herramienta.
Profundizando en los problemas de
los generadores
El generador sólo genera lo que él quiere.
Típico de generadores "profesionales", que sólo
producen lo que los creadores del generador imaginaron. Es
difícil, y en algunos casos, imposible, extenderlo
más allá de lo que hacen actualmente. Variante de
esto: sólo genera código para entidades.
Hay colecciones inmensas de artefactos que tenemos que
generar en cualquier sistema no trivial. Y seguirán
apareciendo, por lo menos, en el futuro cercano. Si el generador
sólo está pensado para partir de un modelo
determinado, nos limita en lo que podemos pedirle. La historia nos ha mostrado,
que siempre necesitamos algo más.
Lo que
más se utiliza en la esfera
CodeDOM (Code Document Object Model) permite
generar código a través de una abstracción
completa de los lenguajes de programación. Cuando se
escribe código a través de estas abstracciones, un
provider de .Net para un lenguaje como
VB .Net ó C#, ó cualquier otro provider de terceros
permite generar código para cualquiera de los lenguajes
soportados por el provider.
En la raíz del modelo de objetos se encuentra el
graph CodeDOM. Esto es un árbol de objetos que describe
los elementos del código en términos abstractos. El
árbol es llamado también CodeCompileUnit, el cual
describe el código en partes elementales. Cada
árbol o grafo CodeDOM da como resultado un archivo, pero
podría contener múltiples clases. Como se
mencionaba, usando diferentes providers se podría generar
código para múltiples lenguajes.
En fin ,con CodeDOM podemos crear generadores de
clase en base
a una Arquitectura. Una
ventaja de CodeDOM es su capacidad de generar código para
múltiples lenguajes como ya comentaba . El uso de los
generadores de código debe ser parte importante en el
desarrollo y diseño
de una Arquitectura de Aplicaciones y que tiende a acelerar el
desarrollo de aplicaciones.
¿Qué es lo que más
deseamos?
El generador de código que adoptemos, debe
poder
adaptarse a lo que queramos hoy y mañana y pasado
mañana. La estrategia es: no
importa la tecnología, el
patrón o el framework que aparezca, nuestro generador
deberá aprovecharse de lo que surja.
¿Existe solución a esto?
Podemos considerar a un programador, desde un punto de
vista teórico, como un experto en el dominio de la
escritura de programas. Un programador sabe como implementar un
modelo, porque cuenta con convenciones para representar en
código fuente elementos de un modelo. Por ejemplo, podemos
darle a un programador un modelo de clases, y pedirle que escriba
un formulario para alguna de las clases. El programador
seguramente programará, para cada atributo de la clase,
una etiqueta con su nombre, un control
gráfico apropiado para el ingreso de datos, cuadro de
texto si el
tipo de dato es cadena de caracteres, selector de fecha si es una
fecha, un checkbox si el tipo de dato es booleano,
etc.
El objetivo
entonces, es intentar volcar el
conocimiento del experto en el dominio de la
programación en un sistema experto, de tal forma que el
ordenador sea capaz de producir, a partir de un modelo dado, un
programa lo
más parecido posible a lo que hubiera hecho un humano en
su lugar.
Pero las novedosas técnicas
para generar código están a la vuelta de la esquina
como quien dice, solo que muchos programadores prefieren teclear
antes de decidirse a crear pequeñas aplicaciones que hagan
eficiente su trabajo.
Página siguiente |