Metamodelado

Metamodelado
Información sobre la plantilla
Concepto:Constituye una técnica dentro de este paradigma que juega un papel importante y aporta un gran beneficio al equipo de implementadores. Es un tema fundamental en el campo de las bases de datos y desarrollo de Software.

Metamodelado. Este término nace con la misma filosofía que en su tiempo motivó a desarrollar computadores de propósito general en lugar de seguir con el esquema de construir un ordenador para cada aplicación en particular. Al aplicarlo en el desarrollo de aplicaciones informáticas permite diseñar un modelo de datos (el metamodelo) con la capacidad de almacenar otros modelos de información.

Modelo

Puede considerarse que los campos de la ingeniería desarrollan sus aplicaciones basados en modelos, al igual que muchas acciones de la vida diaria. Los modelos se usan para explicar y controlar fenómenos y pueden predecir eventos que están por ocurrir. Se define un modelo como "un ente que representa de forma precisa algo que será realizado o que ya existe". (Sánchez, 2008)

En general el modelo debe expresar de manera clara y correcta lo que se quiere obtener, sin sobrecargar de información al mismo, éste debe ser completo. Los modelos son utilizados en la ingeniería para varios propósitos, dentro de ellos se puede mencionar que son utilizados para captar y enumerar exhaustivamente los requisitos y el dominio de conocimiento, de forma que todos los implicados puedan entenderlos y estar de acuerdo con ellos, ayudar a pensar el diseño de un sistema, para capturar decisiones del diseño de manera tal que puedan ser cambiados a partir de los requisitos. Otros de sus usos es el de generar productos aprovechables para el trabajo y facilitar el manejo de los sistemas complejos. (Isla y Llanes, 2008)

El modelo es una instancia del metamodelo. Cuando se crea un modelo se está definiendo un lenguaje para describir el área que se está analizando o el sistema que se está diseñando. (González, 1998)

Uno de los elementos más utilizados en el desarrollo de software es el modelo, pues es necesaria una visión diferente del sistema a desarrollar. La construcción de un sistema se realiza a través de éstos, utilizándolos para describir todas las perspectivas del sistema. Este proceso se conoce como modelado.

El modelado es un ejercicio de abstracción, entendida esta como una simplificación y generalización de la realidad. El uso de la abstracción permite describir, representar, manejar y resolver problemas complejos, pudiendo después aplicar los resultados a casos concretos. Normalmente, se construyen jerarquías de abstracción, en las que cada nivel de abstracción se apoya en los inferiores.

Niveles de abstracción en el modelado

Niveles de abstracción en el modelado (Isla y Llanes., 2008):

0. Nivel de Información: agregación informal de datos a manejar en un entorno concreto (aplicación). Se separa un subconjunto de datos con características comunes o interesantes desde un determinado punto de vista.

1. Nivel de Modelo: agregación informal de metadatos (datos sobre los datos) que describen una información concreta. Se describen las características comunes de los datos dando lugar a metadatos que se agrupan, describiéndose las relaciones entre ellos, para formar un modelo.

2. Nivel de Metamodelo: agregación de modelos o meta-metadatos (descripción de metadatos). Descripciones que definen la estructura y la semántica de los metadatos. Se describen las características comunes de subconjuntos de metadatos dando lugar a meta-metadatos o modelos que se agrupan, describiéndose las relaciones entre ellos, para formar un metamodelo.

3. Nivel de Meta-metamodelo: definición de la estructura y la semántica de los meta-metadatos. Se capturan las características comunes de subconjuntos de modelos dando lugar a metamodelos que se agrupan, describiéndose las relaciones entre ellos, para formar un meta-metamodelo.

Metamodelo

Según (Quasar Tecnología, 2007), "el metamodelo es un modelo con la capacidad de almacenar diferentes modelos". Partiendo de esta definición se puede pensar en la posibilidad de construir un producto de software con la capacidad para registrar información en el metamodelo y otro producto con la capacidad de realizar consultas sobre el mismo.

El metamodelo está dividido en dos áreas:

- Área de Metadatos Esta área almacena el metamodelo en sí y en un conjunto de tablas relacionales se guarda una descripción detallada del modelo de los datos a ser almacenados en el área de datos. Este modelo parte del principio que toda información para ser registrada en un sistema de información debe ser estructurada en uno o varios formatos.

- Área de Datos Esta área almacena la información acorde a la estructura definida en el área de metadatos. Es aquí donde se registra la información proveniente del mundo real, estructurada de acuerdo a los formatos que forman parte del modelo almacenado en el área de metadatos.

El metamodelo es la capa donde se define el lenguaje que sirve para especificar los modelos que serán creados. En otras palabras, sirve para describir los elementos que van a componer los diagramas. (González, 1998)

Se puede considerar que un metamodelo es una definición precisa de las reglas necesarias para definir la semántica de los modelos. Otra definición a tener en cuenta es la que se plantea en (Reina, Torres y Toro, 2006) en la que se considera que el metamodelado puede verse como una actividad que está tomando auge en los últimos años y que sirve para organizar los modelos en diferentes niveles, de tal modo que un modelo se describe por otro modelo que está situado en un nivel superior, su metamodelo.

Finalmente las autoras definen un metamodelo como un modelo que almacena información referente a otros modelos, describiendo los elementos que conforman los mismos.

Metamodelado

Metamodelado

En (De Lara, Vangheluwe y Alfonseca, 2003) se define el metamodelado como el “proceso de modelado de formalismos”, el cual se suele realizar para determinar si una instancia de un modelo particular es consistente con su especificación en forma de metamodelo.

La técnica de metamodelado permite definir lenguajes de modelado, a través de un metamodelo. De acuerdo con lo antes planteado se puede resumir que el metamodelado no es más que una técnica que permite la creación de lenguajes de modelado, mediante la realización de metamodelos, ya que éstos como bien se dice anteriormente, no son más que un modelo de un lenguaje de modelado.

El metamodelado se comprende a partir de una estructura de cuatro niveles M0, M1, M2, M3 (Isla y Llanes, 2008), los cuales se describen en la Tabla 1 que se explica a continuación. En esta estructura, el nivel M3 establece las primitivas de metamodelado, esto es, el lenguaje de metamodelado.

En el nivel M2, se definen los metamodelos en sí con las primitivas de M3. En M1 se aplican los metamodelos para generar instancias, que se denominan modelos. Por último, en M0 se realiza la instanciación de los modelos donde se tiene la información que se manejará en el sistema.

Meta-metamodelo

Un meta-metamodelo está definido como una especificación de la estructura de un lenguaje que sirve para crear lenguajes de modelado.

La idea detrás de esto es bastante simple: proveer de un lenguaje que permita a cada grupo de desarrolladores definir sus propios lenguajes de modelado.

Teniendo en cuenta la estructura de cuatro niveles M0, M1, M2, M3 en la cual está comprendido el metamodelado, se plantea que el meta-metamodelo, definido en la capa del metamodelo M3, es un metamodelo que describe el contenido de los metamodelos, es decir, los tipos de entidades que son compartidas a través de los diferentes sistemas deinformación. Como jemplo de meta-metamodelo se tiene Meta Object Facility (MOF), estándar creado por la Object Management Group (OMG) que extiende UML (Unified Modeling Language) para que éste sea aplicado en el modelado de diferentes sistemas de información.

El mismo conceptualiza diversos metamodelos, esencialmente abstrayendo la forma y la estructura que describen estos. Define los elementos esenciales, sintaxis y estructuras de metamodelos que son utilizados para construir modelos orientados a objetos de sistemas.

Fuente