Descargar

El nuevo mundo de la generación de código


Partes: 1, 2

    1. Resumen
    2. El primer paso es encontrar cuál es el problema
    3. Profundizando en los problemas de los generadores
    4. Lo que más se utiliza en la esfera
    5. El Sistema Experto más adecuado para la Generación inteligente
    6. ¿Qué es lo que más nos interesa en la entrada del generador?
    7. Veamos entonces el funcionamiento de este poderoso Sistema Experto
    8. Una manera de hacer bien las cosas
    9. Usando plantillas
    10. Buscando una arquitectura que soporte los propósitos
    11. No es el fin del pensamiento informático
    12. Conclusiones
    13. 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.

    Partes: 1, 2
    Página siguiente