- ¿Qué es una base de datos? - noviembre 7, 2020
- ¿Es la programación una profesión para ti? - septiembre 3, 2020
- Temporada 2020-2021 - julio 15, 2020
Proceso MDA
Introducción
En el artículo anterior te he hecho una introducción al metamodelado, mi consejo es que revises los conceptos que te presenté en ese artículo antes de empezar con éste: Introducción al Metamodelado.
En este artículo voy a explicarte en más detalle el proceso completo de MDA, adentrándome en los diferentes niveles de modelado que define la OMG, las transformaciones entre modelos, la representación de cada uno de los modelos, los roles en el proceso MDA y voy a indicarte los beneficios que tiene la utilización de MDA.
¡Estoy seguro de que te va a encantar este artículo! ¡Empecemos!
Diferentes niveles de modelo
Tal y como te expliqué en el artículo anterior, la OMG define 4 niveles de modelado en el que cada uno representa un nivel de abstracción diferente en el diseño del sistema.
CIM
Computation Independent Model / Modelo independiente de la computación / M3
El CIM se corresponde con el metametamodelado y se le conoce como el modelo del dominio o del negocio, ya que está modelado en términos familiares a los expertos del negocio. Representa lo que se espera del sistema, sin abordar temas referentes a las tecnologías del mismo.
PIM
Platform Independent Model / Modelo independiente de la plataforma / M2
El PIM se corresponde con el metamodelado y permite mapear el sistema a diferentes plataformas. Esto lo consigue abstrayendo los detalles técnicos para que otros modelos especifiquen como será la implementación.
PSM
Platform Specific Model / Modelo específico de la plataforma / M1
El PSM se corresponde con el modelo del sistema y combina un modelo PIM con las tecnologías específicas de una plataforma particular.
Concreción del modelo
Es la implementación del PSM en un lenguaje de programación específico / M0
La concreción del modelo se corresponde con el propio sistema que se está modelando, es el nivel más bajo de abstracción que existe dentro del conjunto de niveles definidos por la OMG.
Transformaciones entre modelos
Las transformaciones son necesarias para la conversión entre modelos de un mismo sistema. El modelo origen expresado en el lenguaje origen es transformado en el modelo destino expresado en el lenguaje destino, esto se hace mediante la definición de un conjunto de reglas para llevar a cabo dicha transformación.
Todas las transformaciones entre modelos que pueden realizarse se agrupan en dos categorías principales:
- Mappings verticales o refinamientos: Relacionan modelos situados en diferentes niveles de abstracción y pueden realizarse de manera bidireccional, es decir, de forma descendente o de forma ascendente. Las transformaciones ascendentes son el resultado de aplicar el proceso de ingeniería inversa.
- Mappings horizontales: Relacionan modelos dentro de un mismo nivel de abstracción.
Existen diferentes lenguajes de transformación para la representación de las reglas de transformación entre diferentes modelos. La OMG ha propuesto un lenguaje estándar para la especificación de transformaciones que es QVT.
Representación de los modelos
Los diferentes niveles de modelado que te he explicado en el primer punto son representados con diferentes lenguajes.
MOF
MOF (Meta-Object Facility) es un estándar del OMG que proporciona un sistema de tipos para una arquitectura y un conjunto de interfaces a través de las cuales esos objetos se pueden crear y manipular.
MOF se desarrollo como un conjunto de esquemas mediante los cuales se podrían definir la estructura, significado y comportamiento de los objetos junto a interfaces para crearlos y manipularlos.
MOF utiliza cinco construcciones básicas para definir un lenguaje de modelado:
- Clases: Define tipos de elementos en un lenguaje de modelado.
- Generalización: Define herencia entre clases.
- Atributos: Define propiedades de elementos del modelo.
- Asociaciones: Define relaciones entre clases. La asociación tiene dos extremos, cada uno de ellos puede tener definidos un nombre de rol, navegabilidad y multiplicidad.
- Operaciones: Define operaciones dentro del ámbito de una clase, junto con una lista de parámetros.
En pocas palabras, MOF es un lenguaje específico del dominio (DSL) utilizado para definir modelos.
UML
Lenguaje de modelado que utiliza las facilidades que MOF proporciona para declarar lenguajes orientados a objetos.
UML incluye los siguientes diagramas para representar modelos:
- Diagrama de casos de uso
- Diagrama de clases
- Diagrama de secuencia
- Diagrama de colaboración
- Diagrama de estado
- Diagrama de actividad
- Diagrama de componentes
- Diagrama de implementación
- Diagrama de relación de entidad
Cada uno de ellos define diferentes aspectos en el modelo.
Ejemplo
A continuación te expongo un ejemplo íntegro de transformación desde un MOF a un PIM y posteriormente a un PSM. El ejemplo consiste en la definición de clases para un videoclub.
El último nivel no voy a incluirlo, ya que es únicamente la instanciación del PSM en un ejemplo en concreto.
MOF
En la capa de meta-metamodelado (M3) están las definiciones que pueden instanciarse desde la capa de metamodelado.
En este caso tendremos la definición de Clase MOF, Atributo MOF y Operación MOF.
PIM
En la capa de metamodelado (M2) instanciaremos las clases de meta-metamodelo (M3) para hacer la definición del metamodelo.
En este caso, UML se define utilizando MOF. Gracias al metamodelo en UML podremos definir la capa de modelo (M1) instanciando las clases del metamodelo (M2).
PSM
En la capa de modelado (M1) instanciaremos las clases del metamodelo (M2) para hacer la definición del modelo. En esta capa están definidas todas las clases del modelo completamente.
Roles
En el mundo del desarrollo de software existen diferentes roles dentro de cada equipo y la elaboración de cada uno de los modelos que te he expuesto en los puntos anteriores recae en un rol diferente.
Los roles má relevantes dentro de un equipo de desarrollo de software son:
- Analistas de negocio.
- Arquitectos
- Diseñadores
- Desarrolladores
- Testers
La responsabilidad de elaboración de cada uno de los modelos recae en los siguientes roles:
Beneficios del proceso MDA
La utilización del proceso de MDA en el desarrollo de software proporciona los siguientes beneficios.
- Productividad: Una vez realizada la transformación del PIM al PSM puede usarse en múltiples desarrollos. Además, aísla de problemas específicos de cada plataforma.
- Portabilidad: Al realizar las definiciones en modelos independientes de la plataforma será totalmente portable por la propia definición.
- Interoperabilidad: Los PSMs generados a partir de un mismo PIM se pueden comunicar a través de puentes (relaciones), por lo cual, pueden pertenecer a diferentes tecnologías.
- Documentación: El PIM desempeña el papel de la documentación de alto nivel que se necesita en cualquier sistema software.
- Mantenimiento: Los cambios realizados en el sistema se reflejarán en todos los niveles, mediante la regeneración de los PSMs y del propio código.
Además de los beneficios anteriores, el proceso de MDA aporta otros beneficios, que, aunque no son tan importantes y críticos como los anteriores, son muy relevantes:
- Dinamiza el proceso de integración.
- Soporte completo para el ciclo de vida de la aplicación.
- Escalabilidad y robustez.
- Está predestinado a ser un estándar.
- Disminución de costes.
- Mejoras de calidad de los modelos y procesos.
Resumen y conclusiones
En este artículo te he explicado todo el proceso al completo de MDA, estoy seguro que ahora mismo tienes un montón de conceptos nuevos en tu cabeza. El consejo que te doy es que, con el artículo delante, hagas un ejemplo al completo de como sería aplicar el proceso MDA.
¡Si tienes alguna duda, no dudes en ponerte en contacto con nosotros y te ayudaremos!