24 junio, 2012

MDA - Arquitectura Dirigida por Modelos


Al hilo de lo hablado en el post anterior sobre Jet y para ir ampliando conocimientos ahora voy a hablar de MDA. MDA es un marco de trabajo que fue definido en 2001 por el ObjectManagement Group (OMG)  organización creada en 1990 con el fin de potenciar el desarrollo de aplicaciones orientadas a objetos distribuidas. Esta organización, también ha definido estándares importantes como UML, CORBA, MOF, etc… 

La clave del MDA es la importancia de los modelos, en el proceso de desarrollo de software. MDA propone la definición y uso de modelos a diferente nivel de abstracción, así como la posibilidad de la generación automática de código a partir de los modelos definidos y de las reglas de transformación entre dichos modelos (aquí es donde entrarían los motores de transformación de código como Jet).

Permite el despliegue de aplicaciones, diseñadas sin dependencias de plataforma, diseñadas mediante el uso de estándares como pueda ser UML y sobre cualquier plataforma existente, como J2EE, Servicios Web, etc..

Resuelve los retos de los sistemas actuales, están altamente conectados y en constante cambio, tanto en reglas de negocio como en tecnología. MDA propone un marco de trabajo para una arquitectura que asegura:
  • Portabilidad, aumentando el re-uso de las aplicaciones y reduciendo el coste y complejidad del desarrollo y administración de las aplicaciones.
  • Interoperabilidad entre plataformas, usando métodos rigurosos para garantizar que los estándares basados en implementaciones de tecnologías múltiples tengan todos idénticas reglas de negocio.
  • Independencia de plataforma, reduciendo el tiempo, costo y complejidad asociada con aplicaciones desplegadas en diferentes tecnologías.
  • Especificidad del dominio, a través de modelos específicos del dominio, que permiten implementaciones rápidas de aplicaciones nuevas, en una industria específica sobre diversas plataformas.
  • Productividad, permitiendo a los desarrolladores, diseñadores y administradores de sistemas usar lenguajes y conceptos con los que se sienten cómodos, facilitando la comunicación e integración transparente entre los equipos de trabajo.

Qué no es MDA

Se tiende a malinterpretar este acrónimo y por ello se debe tener claro qué no es MDA:
  • MDA no es un proceso de desarrollo
  • MDA no es una especificación
  • MDA no es una implementación
  • MDA no es una implementación de referencia de ningún estándar particular.
  • MDA no es simplemente generar código

Plantillas Jet

En el post anterior, he hablado del editor Jet-Editor, ahora voy a hablar un poco de qué es Jet. Jet es un motor de transformación que suele utilizarse para la generación de código automático (Java, XML, ...) a partir de plantillas.

Un generador de código, es una parte fundamental en el desarrollo dirigido por modelos (MDD). El objetivo de MDD es describir un sistema de software utilizando modelos abstractos, ya sean EMF, modelos UML o ECORE, posteriormente se refinan y se transforman estos modelos en código. Lo que ayuda a la automatización de los procesos, a la calidad del código, etc.

A través de Jet, se pueden crear los artefactos o plantillas que permiten definir las implementaciones que se han de aplicar en las transformaciones.

Para aquellos que quieran saber cómo empezar a utilizar Jet os recomiendo estos tutoriales:





Jet Editor - Plugin Eclipse

Para aquellos que hayáis tenido que trabajar con plantillas Jet, sabréis que puede llegar a ser horrible trabajar con ellas, sobre todo si no se dispone de alguna herramienta o editor que facilite el trabajo, de lo contrario, se trabajaría directamente con texto plano.

Existen varios editores, pero hoy os voy a hablar de Jet-Editor, es un plugin que se puede integrar en Eclipse fácilmente a través del update-site. Editor que permite trabajar con plantillas Jet, las plantillas utilizadas en EMF.

Si no tenemos ningún editor,

Plantilla jet sin editor

Con el editor Jet-Editor para eclipse, lo vemos así:

Plantilla Jet con Editor Jet-Editor

Como veis, ahora se resaltan partes de nuestro código, se diferencia entre la parte que contiene algo de lógica, de la parte que se mostrará tal cual.

Cierto es, que tampoco ayuda muchísimo..pero algo de ayuda siempre viene bien ¿conocéis algún editor mejor? :)

JET-Editor Eclipse Plugin