martes, 3 de mayo de 2011

MDA vs. MDD vs. SPL vs. DSL

Ayer, escribiendo un artículo se planteo una duda formal en la frase

"En el diseño del DSL se ha evitado la inclusión de elementos de asociados a la tecnología intentando  aumentar al máximo el nivel de expresividad del mismo acerdándolo al dominio del problema."
Algunos opinan que era incorrecta otros (sólo yo) opinan que es correcta.
En la conversación aperecieron otras discrepancias con la frases, "MDA no está alineado con SPL".



Bueno, intentaré expresar mejor mi opinión  en este post.

Lo primero que quiero decir es que el mundo de Model-Driven y  generación de código los conceptos, ideas y paradigmas se enlazan entre sí de una manera confusa y a veces peligrosa. He buscado en la bibligrafía una comparación entre MDA y MDD que incluyo al final del post.

Brevemente:

  • MDA es una iniciativa de OMG interesada en la interoperabilidad entre herramientas,  portabilidad y estandarización. Y no en la productividad y la calidad
  • MDA juega con los conceptos UML, MOF, PIM, PSM, XMI, Metamodelos
  • MDA no excluye la idea de round-tripping (sincronización de código y modelo). MDD sí
  • MDA no usa el concepto de DSL . 
En cambio MDD busca otros objetivos diferentes que son las productividad y calidad en el código.

  • MDD usa el concepto de DSL
  • Con los DSL hablamos de DSL técnicos o funcionales con mayor o menor grado de expresividad. 
  • Si nos vemos forzados a meter detalles tecnológicos  lo que hay que pensar es "no estoy logrando en nivel de abstracción adecuado, ¿es necesario introducir esta semántica en el DSL?" y no "tengo 2 DSLs un PIM y otro PSM". Y mucho menos creer en los mundo de Jupi de MDA y decir "puedo crear otro DSL PSM para otra arquitectura.¡NO!". Si quieres otra arquitectura nos montamos otro generador. E intentaremos mantener el DSL lo más intacto posible de la nueva tecnolgía (si no tendremos otro DSL). El conocimiento de la arquitectura está en el generador y no en los DSL. ¡En algo sustancial se tiene que diferenciar MDD de MDA.!
  • Mezclar la idea de DSL PIM y DSL PSM creo que no es buena idea. Pensemos en SQL (un DSL) que intenta abstraerse lo más posible de la integración del sistema gestor de base de datos pero aún así existen diferentes versiones de SQL para diferentes SGDB. No hay un SQL independiente del dominio y otro dependiente.

Sobre la discusión de SPL y MDA, dos detalles:

  • La idea de SPL viene SEI y no de OMG
  • SPL piensa en productividad y calidad. OMG en interoperabilidad y portabilidad


    No hay comentarios:

    Publicar un comentario