Model Driven Architecture es la idea de que cree modelos que expresen el problema que necesita resolver de una manera que esté libre de cualquier (o al menos la mayoría) de las tecnologías de implementación, y luego genere la implementación para una o más plataformas específicas. La afirmación es que trabajar a un nivel más alto de abstracción es mucho más poderoso y productivo. Además, sus modelos superan las tecnologías (por lo que aún tiene algo cuando su primer idioma/plataforma se vuelve obsoleta y puede usarla para su solución de próxima generación). Otra ventaja clave alegada es que gran parte de la repetición y el "trabajo gruñido" pueden generarse. Una vez que la computadora entiende la semántica de su situación, puede ayudarlo más.¿Estás haciendo MDA (Model Driven Architecture) en este momento? Si es así, ¿qué herramientas usa y cómo funciona?
Algunos afirman que este enfoque es 10 veces más productivo, y que es del modo todos construiremos el software en 10 años.
Sin embargo, esto es solo teoría. Me pregunto cuáles son los resultados cuando la goma se encuentra con la carretera. Además, la versión "oficial" de MDA es del OMG, y parece muy pesada. Se basa en gran medida en UML, que puede considerarse bueno o malo dependiendo de a quién le preguntes (me inclino por "malo").
Pero, a pesar de estas preocupaciones, es difícil discutir la idea de trabajar en un nivel más alto de abstracción y "enseñar" a la computadora a entender la semántica de su problema y solución. Imagínese una serie de modelos ER que simplemente expresan la verdad, y luego imagine usarlos para generar una porción significativa de su solución, primero en un conjunto de tecnologías y luego en otro conjunto de tecnologías.
Entonces, Me encantaría saber de personas que realmente están haciendo MDA en este momento ("oficial" o no). ¿Qué herramientas Estas usando? ¿Cómo está funcionando? ¿Cuánta promesa teórica ha logrado capturar? ¿Ves un verdadero aumento de efectividad de 10 veces?
Gracias. Interesante que el diablo está en los detalles. Los modelos son, por definición, simplificaciones excesivas, y eso es lo que le causó más dolor. +1 –
El desarrollo de software impulsado por modelos se trata de generar el código del modelo. Modifica el metamodelo, el modelo y los generadores para modificar o agregar comportamiento. No se trata de crear y mantener un modelo independiente que se actualice manualmente cuando actualice el código. –
Ese es exactamente mi punto. En algún momento, el código generado ya no es útil. Tan pronto como tenga que comenzar a modificar el código a mano, el proceso se descompone. –