Algunos peligros del MDD

El MDD (Model Driven Development), o términos similares como MDA (Model-Driven Architecture), es una estrategia de desarrollo software que persigue la generación automática del código desde especificaciones de alto nivel, uno de los objetivos más antiguos de la investigación en ingeniería y desarrollo software. Poder implementar software “automáticamente” desde lenguajes que especifican las funcionalidades (llamados en este contexto domain-specific languages o DSLs).
Aunque al MDD le queda mucho por avanzar, en los últimos años ha evolucionado bastante, y se ha incrementado su popularidad, por lo que se empiezan a escuchar proyectos que se plantean su uso.
Y leyendo sobre las diferencias entre un proyecto MDD y un desarrollo software tradicional, llegue a esta entrada del blog “the Enterprise architect”, que comenta algunos peligros que plantean los proyectos de desarrollo basados en MDD:
– MDD introduce mucha rigidez. El objetivo del MDD es “programar” a un alto nivel de abstracción. Esto implica que tienes que especificar menos y generar más. Lo que implica que no puedes cambiar pequeños detalles.
– Los modelos son solo flexibles donde la flexibilidad ha sido diseñada. Y esta flexibilidad depende de la herramienta utilizada y de las partes que ha cubierto el DSL.
– Los roles de los miembros del proyecto son muy diferentes. El software lo realizan los llamados “ingenieros de negocio”, en vez de los programadores, que necesitan conocer el negocio y saber especificarlo en un modelo formal.
– Los entornos de modelado no siempre soportan control de versiones. Las herramientas de control de versiones trabajan bien con “programas textuales”, pero con modelos gráficos la cosa no está tan clara.
– La herramienta de modelado está “casi” terminada. Si la herramienta no está totalmente terminada y suficientemente probada antes de comenzar el proyecto puedes tener un serio problema.
– El equipo necesita comprender qué está permitido y qué no. Un punto peligroso aparece cuando la gente que habla con el cliente no comprende las limitaciones del MDD y de sus herramientas.
– El equipo no tiene experiencia. Por la poca experiencia de MDD en el mercado, existe el riesgo de lanzar un proyecto de MDD con un equipo sin experiencia, lo que puede meternos en serios problemas.
– Las distracciones de la innovación. La gente tiende a centrarse en las herramientas, y se pasa por alto la gestión del proyecto y otros aspectos más allá de la herramienta.