Una nueva forma de desarrollar software basado en modelos y transformaciones.
Actualmente, la propuesta Model Driven Architecture (MDA) del Object Management Group (OMG) está tomando cada vez más fuerza en el ámbito del desarrollo de software. Puede verse como un conjunto de estándares con una aplicación concreta: el desarrollo dirigido por modelos (MDD). Siendo MDD un paradigma que básicamente separa la lógica de la funcionalidad esencial del sistema, esto es del negocio, y la implementación de dicha funcionalidad usando plataformas tecnológicas específicas.
¿Cuál es la novedad que aporta MDD?, no sería nada nuevo decir que se basa en la utilización de modelos en el desarrollo de software; en todo caso, lo interesante está en que los modelos dejan de ser utilizados únicamente para la documentación o como guía para la implementación, convirtiéndose en el artefacto principal del proceso de desarrollo, ya que de ellos dependerá en gran parte el éxito del proyecto. Además la clave para que sea posible llevar a cabo esta filosofía de desarrollo, es la transformación entre modelos, lo que se pone de manifiesto concretamente en la Guía de MDA como en la abundante literatura disponible, donde se hace especial hincapié en este tema. Por tanto MDA agrupa varios lenguajes con los qué definir métodos que sigan MDD. Sin embargo, MDA no es por sí mismo un método que define técnicas, etapas, entregables, etc., solamente proporciona la infraestructura tecnológica y conceptual con la qué construir estos métodos MDD.
El objetivo de MDA es brindar un marco de trabajo que permita que el esfuerzo y recursos invertidos en el proyecto, se justifiquen al obtenerse un software de calidad, más flexible, mantenible y portable, generando un valor adicional a las empresas que la implementen. Nos queda una incógnita en el aire, ¿Cómo funciona?, el primer modelo es hecho por un analista de negocios, en él se describe el sistema en base a sus requerimientos (modelo del proceso de negocio), es decir, desde una perspectiva independiente de la computación; el segundo modelo, derivado a partir del anterior, no es más que una descripción de la funcionalidad del mismo, independiente de las características de plataformas de implementación específicas; el tercer modelo generado a su vez por el segundo, es una descripción del sistema en términos de una plataforma específica, por ejemplo .NET, J2EE, CORBA, etc.; por último obtenemos el código del sistema. Lo citado anteriormente no quiere decir que usando MDA “eliminaremos” la creatividad de los desarrolladores, mucho menos que ya no los necesitaremos, sino más bien que la creatividad de éstos, será elevada a un nivel superior, en el que el quebradero de cabeza no sea por resolver problemas que ya hayan sido resueltos y su labor se centre mas bien en realizar los ajustes a los modelos, como al código final, debido a la experiencia y conocimientos que ellos manejan.
LOL — I had to read it a couple times, but it finally made sense :O