Por Jorge Valenzuela Escariz

La productividad es uno de los puntos más importantes y delicados en el desarrollo de soluciones. Si bien cada vez hay más herramientas que permiten agilizar el proceso de codificación, muy pocas son las utilidades capaces de dar una solución completa y de calidad.
De igual modo que en una fábrica se mejoran las máquinas para crear productos en serie con unos mínimos de calidad y seguridad, se debe evolucionar en el nivel de abstracción de los programadores, optimizando su trabajo y mejorando sus resultados. De esta forma, a partir de documentación de análisis y diseño se puede generar código de forma automática que cumpla unos mínimos de calidad de acuerdo a los estándares existentes.
Conseguir un código automático y fiable, a parte de agilizar el desarrollo, tiene una consecuencia mucho más importante: elimina el tiempo de resolución de errores. Obviamente, el propio automatismo puede generar errores, pero no se trata de un problema de la aplicación resultado, sino del refinado del propio generador. Comenzar a pensar en aplicaciones con garantía, más allá del actual tiempo de resolución de errores en producción, conformaría una base que se hecha en falta en toda solución informática.
Existen en el mercado una gran cantidad de soluciones, incluso algunas de código abierto, pero parece que no consiguen cumplir las espectativas (tal vez por el fallido intento de las herramientas CASE clásicas). En muchos casos se debe a los frameworks cerrados de las grandes empresas, en otros, a las factorías software no interesadas en incrementar su rendimiento y reducir costes. Muchas, no son capaces de generar el 100% del código fuente.
Aunque la implementación de un generador de código puede enfocarse de formas muy diversas, la opción de MDA (Model Driven Architecture) se muestra como la más natural al actual sistema de análisis y diseño de aplicaciones.
Nuevos lenguajes de programación surgen para cubrir un punto intermedio: son fáciles de aprender, utilizar y mantener, sin la necesidad de una formación a nivel de análisis y diseño.