- ¿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
Metamodelado
Introducción
En la historia del Desarrollo de Software, la aparición constante de nuevas tecnologías de software y su evolución, junto con la creciente complejidad de los sistemas software, han hecho que, durante años, hayan ido apareciendo numerosos paradigmas en mundo del desarrollo.
Estos nuevos paradigmas aumentaban el nivel de abstracción en la definición de los sistemas software. Frente a las propuestas tradicionales, aparece el Desarrollo Software Dirigido por Modelos, DSDM o MDD, que atribuye el papel principal de todo el proceso de desarrollo software a los modelos.
Los lenguajes de programación a lo largo de la historia han ido evolucionando hacia un enfoque de más alto nivel, con ello, intentan ocultar la complejidad tecnológica del software sobre el que se desarrollan.
DSDM
DSDM (Desarrollo Software Dirigido por Modelos) surge a partir de la aparición de UML (Unified Modeling Language) a finales de los años 90. Mediante sus herramientas, los desarrolladores son capaces de generar el esqueleto de las implementaciones a partir del modelo diseñado.
El DSDM define el sistema como un modelo de dominio, que no es más que representaciones abstractas de los conocimientos y actividades utilizados en un sistema en concreto. Sobre el modelo pueden definirse aspectos conceptuales y aspectos concretos.
El uso de DSDM tiene muchas ventajas, entre las cuales destacan:
- Mejora de productividad
- Mejora la calidad
- Mejor comprensión del sistema a desarrolla
- Mejor evolución y mantenimiento
- Facilita la reimplementación en otras tecnologías
La iniciativa más relevante de DSDM es la MDA (Model-Driven Architecture) de la OMG (Object Management Group).
MDA
MDA (Model-Driven Architecture) es una arquitectura que proporciona un conjunto de guías para estructurar especificaciones expresadas como modelos, es la aproximación más cercana al diseño de software que promueve el OMG (Object Management Group).
MDA define cuatro niveles de abstracción diferentes para la representación de los diseños:
- Modelo independiente de la computación
- Modelo independiente de la plataforma
- Modelo específico de la plataforma
- Implementación / Concreción final
La tendencia actual en el desarrollo de software es que los modelos representen el problema software con un alto nivel de abstracción, tanto los elementos del sistema como las relaciones entre ellos.
OMG
OMG (Object Management Group) es una organización sin ánimo de lucro que promueve tecnologías de desarrollo software orientadas a objetos, estableciendo estándares para ello.
UML
UML (Unified Modeling Language) supuso un antes y un después en la ingeniería de software. Actualmente, es el lenguaje de modelado de sistemas software respaldado por la OMG.
Mediante UML se pueden definir aspectos concretos y aspectos conceptuales de los sistemas software; se puede decir que UML es el lenguaje en el que se escriben los modelos.
UML puede usarse en todas las metodologías de desarrollo de software existentes, pero en ningún caso, especificará la metodología en sí.
Objetivos MDA
El objetivo principal de MDA es la creación de modelos para flexibilizar los desarrollos a largo plazo en términos de:
- Obsolescencia tecnológica: Desarrollo de nuevas aplicaciones con tecnologías modernas utilizando como base los modelos definidos anteriormente.
- Portabilidad: Las funcionalidades existentes se puede migrar más fácilmente a nuevos entornos y plataformas según las características del negocio existente.
- Productividad: Mediante la automatización de tareas, los arquitectos y los desarrolladores tienen más tiempo para centrarse en el desarrollo del propio producto.
- Calidad: La separación en modelos permite un nivel de abstracción que aumenta la calidad del sistema desarrollado, al poseer una mejor definición del mismo.
- Integración: La integración con elementos externos al sistema se realiza de forma más sencilla al disponer de todas las definiciones relativas al modelo del dominio.
- Mantenimiento: El disponer de documentación accesible a arquitectos, desarrolladores y analistas hace que las labores de mantenimiento se realicen de forma más óptima y eficiente.
- Pruebas: Los modelos pueden ser directamente probados contra los requisitos y contra diversas infraestructuras. Además, pueden ser usados para simular el funcionamiento en fase de diseño.
- Retorno de inversión: Las empresas son capaces de obtener más valor de la inversión en herramientas de desarrollo.
Modelos
El concepto principal de la filosofía de MDD es el concepto de modelo. Básicamente, un modelo puede definirse como una abstracción simplificada de un sistema o concepto del mundo real.
Existe diferentes acepciones para el concepto del modelo, basándonos en todas ellas podemos definir un modelo de la siguiente forma:
Un modelo de un cierto sistema es la especificación o descripción de ese sistema desde un determinado punto de vista, expresado en un lenguaje bien definido y con un propósito determinado.
Para considerar un modelo útil y efectivo, debe de cumplir una serie de características:
- Comprensible: Debe ser entendible por todas las personas involucradas que lo utilizarán.
- Preciso: Representen fielmente el objeto o sistema modelado.
- Consistente: Construidos con un propósito concreto, desde un punto de vista determinado y dirigidos a un conjunto de usuarios determinados.
- Completo: Debe contemplar todos los aspectos del sistema u objeto.
- Flexible: Modificable fácilmente.
- Reusable: Pueda utilizarse en diferentes entornos.
- Correcto: Debe representar el sistema u objeto de forma correcta.
Las funciones del modelo en ingeniería de software serán:
- Ayudar a comprender el sistema: Describir todos los aspectos desde un nivel conceptual adecuado, junto con todas las características relevantes del mismo.
- Servir de mecanismo de comunicación: El modelo será utilizado como mecanismo de comunicación entre los diferentes roles involucrados en el desarrollo y otras organizaciones.
- Validar el sistema y su diseño: El modelo permitirá detectar errores, carencias y anomalías en el diseño.
- Guiar la implementación: Serán los planos que guíen a los desarrolladores en la construcción del sistema.
El lenguaje que se utiliza para describir el modelo debe estar bien definido y dotarle de un nivel de abstracción suficiente para expresarlo y razonar sobre él.
Metamodelado
Un metamodelo es un modelo que especifica los conceptos de un lenguaje, las relaciones entre ellos y las reglas estructurales que restringen los posibles elementos de los modelos válidos, así como el cumplimiento de las reglas semánticas del dominio.
Esto quiere decir que, cada modelo, se escribe en el lenguaje que indica su metamodelo; en otras palabras, podría decirse que un modelo es una instancia de su metamodelo.
La OMG define 4 niveles para los modelos:
Los metamodelos son modelos, y al igual que estos, están escritos en el lenguaje definido por su metametamodelo.
El proceso de definición de modelos a partir de modelos de mayor grado de abstracción acaba cuando se alcanza el nivel de metametamodelo, ya que, los metametamodelos son conformes a ellos mismos.
Futuros artículos
Mediante este artículo te he introducido las nociones básicas sobre metamodelado, en futuros artículos te explicaré otros aspectos, entre ellos:
- Transformaciones entre modelos.
- Lenguajes de modelado.
- Proceso MDA
¡Estate atento!