# Arquitectura dirigida por modelos

La arquitectura dirigida por modelos (Model-Driven Architecture o MDA) es un acercamiento al diseño de software, propuesto y patrocinado por el Object Management Group (OMG).
MDA se ha concebido para dar soporte a la ingeniería dirigida a modelos de los sistemas de software.
MDA es una arquitectura que proporciona un conjunto de guías para estructurar especificaciones expresadas como modelos.

## Introducción

Usando la metodología MDA, la funcionalidad del sistema será definida en primer lugar como un modelo independiente de la plataforma (Platform-Independent Model o PIM) a través de un lenguaje específico para el dominio del que se trate. Dado un modelo de definición de la plataforma (Platform Definition Model o PDM) correspondiente a CORBA, .NET, web, etcétera, el modelo PIM puede traducirse entonces a uno o más modelos específicos de la plataforma (Platform-Specific Models o PSM) para la implementación correspondiente, usando diferentes lenguajes específicos del dominio, o lenguajes de propósito general como Java, C#, Python, etc. La traducción entre el PIM y los PSM se realizan normalmente utilizando herramientas automatizadas, como herramientas de transformación de modelos (por ejemplo aquellas herramientas que cumplen con el nuevo estándar de OMG denominado Query/View/Transformation o QVT). El proceso completo se encuentra documentado en un documento que actualiza y mantiene OMG denominado "MDA guide".
Los principios de MDA pueden aplicarse a otras áreas como el modelado de procesos de negocios donde el PIM, independiente de la tecnología y de la arquitectura es adaptado tanto a los sistemas como a los procesos manuales. También puede aplicarse el MDA como soporte para diseñar componentes funcionales del software, en especial cuando los cambios representan una alta volatilidad. El modelo MDA está relacionado con múltiples normas, incluyendo el lenguaje de modelado unificado (Unified Modeling Language o UML), Meta-Object Facility (MOF), XML Metadata Interchange (XMI), Enterprise Distributed Object Computing (EDOC), el Software Process Engineering Metamodel (SPEM) y el Common Warehouse Metamodel (CWM). El término "arquitectura" en los metamodelos no se refiere a la arquitectura del sistema modelizado sino más bien a la arquitectura de los distintos estándares y formas del modelo que sirven de base tecnológica al MDA.
El OMG mantiene la marca registrada sobre MDA, así como sobre varios términos similares incluyendo MDD (Model Driven Development), Model Driven Application Development, Model Based Application Development, Model Based Programming y otros similares. El acrónimo principal que aún no ha sido depositado por OMG hasta ahora es MDE. A consecuencia de esto, el acrónimo MDE es usado actualmente por la comunidad investigadora internacional cuando se refieren a ideas relacionadas con la ingeniería de modelos sin centrarse exclusivamente en los estándares OMG.

## Enfoque MDA

Uno de los principales objetivos de MDA es separar el diseño de la arquitectura y de las tecnologías de construcción, facilitando que el diseño y la arquitectura puedan ser alterados independientemente. El diseño alberga los requerimientos funcionales (casos de uso) mientras que la arquitectura proporciona la infraestructura a través de la cual se hacen efectivos requerimientos no funcionales como la escalabilidad, fiabilidad o rendimiento. MDA se asegura de que el modelo independiente de la plataforma (PIM), el cual representa un diseño conceptual que concreta los requerimientos funcionales, sobrevive a los cambios que se produzcan en las tecnologías de fabricación y en las arquitecturas software. De particular importancia en MDA es la noción de transformación de modelos. Uno de los estándares definidos para la transformación de modelos se denomina QVT.

## Herramientas MDA

Un amplio conjunto de herramientas con soporte para MDA se están desarrollando por los principales fabricantes y proyectos Open Source. Estas herramientas permiten comúnmente la especificación rudimentaria de arquitecturas. Algunos ejemplos simples de estas especificaciones de arquitecturas incluyen:
* seleccionar una de las arquitecturas de referencia tales como Java EE o Microsoft .NET.
* especificar la arquitectura a un nivel de mayor detalle incluyendo tecnologías de la capa de presentación, de la capa de negocio, de persistencia o tecnología de mapeo de persistencia (como p. e. mapeo relacional a objeto).

## Conferencias

Entre las distintas conferencias sobre el tema podemos citar la Conferencia Europea sobre MDA (ECMDA), o incluso MoDELS, anteriormente llamadas conferencias «UML». También hay distintas conferencias y seminarios de trabajo (en OOPSLA, ECOOP y demás) orientadas en aspectos más específicos de MDA como la transformación de modelos, la composición o su generación.