You are on page 1of 28

Desarrollo de Software Dirigido por

Modelos (DSM)
Prcticas
Tema 2: Metamodelado

Contenido

MOF y Metamodelado

Eclipse Modeling Tools

Tareas a realizar para la prctica


Bibliografa

Ejemplo de metamodelado
Crear proyecto
Crear metamodelo
Editor de metamodelos
Crear elementos: metaclases, relaciones, enumerados
Vista de diagrama y de rbol
Validar metamodels
Crear instancias dinmicas

-2

MOF y Metamodelado

M3: Meta-Metamodelo

MOF

Tema 2
M2: Metamodelo

Metamodelo de UML

M1: Modelo
Tema 1

Diagrama de clases
(Tienda Online)

M0: Instancias

Objetos (Tienda
online Amazon)

-3

Elementos de un metamodelo

Antes de comenzar a crear un metamodelo debemos analizar el dominio


y detectar cuales son las metaclases y las relaciones entre ellas.

Imaginemos que queremos crear un metamodelo cuyas instancias


vayan a ser modelos que representan aplicaciones software basadas en
ventanas o pginas (en el caso de aplicaciones Web).

Aplicacin
Principal

Un MetaModelo se especifica de forma que existe


una clase contenedora que incluye el resto de
clases.
Por lo tanto, la metaclase raz podra llamarse
Aplicacin.

Presentacin
de la
aplicacin

Muestrario de
productos

Carrito de la
compra

La aplicacin est
compuesta por ventanas
que se muestran en un
cierto orden
-4

Ejemplo (M2) de un metamodelo

-5

Ejemplo (M2) de un metamodelo

Sin embargo, la notacin grfica del


metamodelo no tiene la expresividad
suficiente para realizar una
especificacin completa.

Es por ello que necesitamos indicar


restricciones sobre el modelo

Ejemplos de restricciones:

No puede haber dos o ms


ventanas con el mismo
nombre (identificador).
No puede haber dos o ms
mens con el mismo nombre
(identificador).
No puede haber dos o ms
mens en la misma posicin.
No puede haber dos o ms
marcos en la misma posicin
para la misma ventana.

-6

Elementos de un metamodelo

Ejemplo (M0): en una ventana o pgina Web


Mens

Marcos

Elemento de
men

-7

MOF y Metamodelado

M3: MetaMetamodelo

MOF

Metamodelo de
UML

M2: MetamodeloPrctica 2

Diagrama de
(Tienda
M1: Modelo Prcticaclases
1
Online)

Aplicacin
Principal
Presentacin
de la
aplicacin

Carrito de
la compra
Muestrario de
productos

M0: Instancias

Objetos (Tienda
Online Amazon)
-8

EMF Eclipse Modeling Framework

-9

EMF Eclipse Modeling Framework

El proyecto EMF es un framework de modelado y generacin de

cdigo para construir herramientas y otras aplicaciones basadas


en un modelo de datos estructurado.

Los modelos pueden especificarse desde diferentes fuentes:


Java anotado
Documentos XML
Herramientas de modelado (por ejemplo: Rational Rose)

- 10

Crear un proyecto

Para empezar creamos


un proyecto nuevo de
modelado

File/New/Project
Crear un Proyecto
Ecore Modeling
Project

- 11

Crear un proyecto

Adems de asignar el nombre al proyecto es recomendable que la

propiedad Ns Uri y Ns Prefix tengan el mismo nombre (este no es el


valor por defecto)

- 12

Crear un proyecto

Por ltimo es necesario escoger la vista de Diseo para generar un


diagrama con el metamodelo

- 13

Editor de metamodelos:
Pestaa de propiedades
Si no aparece ir a Window del
men superior y seleccionar:
Show view -> Other ->
General -> Properties

Valores recomendados

- 14

Editor de metamodelos: elementos

Introducir elementos

Despus de
introducir un
elemento indicar
sus propiedades

- 15

Editor de metamodelos: relaciones (EReference)

Nombre: nombre de la clase relacionada (es importante poner un


nombre intuitivo y no dejar el nombre que viene por defecto). Si la
multiplicidad es > 1 usar nombres en plural.
Lower/Upper Bound: 0,1,-1 * (para infinito)

- 16

Editor de metamodelos: relaciones (clase contenedora)

Por defecto las relaciones son simples y unidireccionales.


Una relacin puede indicar si una metaclase es contenedora de otra.
Cuando se marca Is Containment se est indicando que el elemento del
que sale la relacin es contenedor del elemento al que llega.
Debe haber una clase que contenga a todas las dems clases del
modelo.

- 17

Editor de metamodelos: relaciones (relaciones opuestas)

En MOF las relaciones son unidireccionales, por eso slo se puede poner el
nombre del rol en un extremo (no como en UML que se pone en los dos).

Si queremos navegar en la dos direcciones se deben crear dos relaciones, una del

elemento A al B, y otra del elemento B a A.


Seguidamente, en las propiedades de una de las relaciones (por ejemplo de A a B) se
debe indicar que tiene una relacin opuesta (la relacin B a A).

No es obligatorio que todas las relaciones se indiquen en ambos sentidos, pero si

recomendable para poder navegar mejor por el metamodelo, lo cual ser necesario
para futuras prcticas.
- 18

Editor de metamodelos: Enumerados

Podemos crear nuevos tipos en el Metamodelo que aparecern como tipos de


datos en el Modelo.
Por ejemplo, queremos establecer las posiciones de un men como arriba,
abajo, izquierda, o derecha.

Introducir un elemento Eenum y dentro las opciones con EEnumLiteral

- 19

Editor de metamodelos: Enumerados

Posteriormente, se selecciona
el elemente al que se le quiere
indicar que su tipo de datos
ser Posicion_Menu.

En sus propiedades, se seleccin


Etype y entras las opciones
aparecer Posicion_Menu.

- 20

Editor de metamodelos: Vista en rbol

Hasta el momento estamos creando el Metamodelo con el editor grfico


(diagrama). Simultneamente se ha creado y se est actualizando de
forma automtica otra vista del Metamodelo en forma de rbol.

Al cambiar de vista aseguraros de guardar los cambios de la vista actual.


Podemos crear los Metamodelos con la vista en rbol o en diagrama.

Con la vista de rbol: para introducir un elemento nuevo debemos


posicionar el puntero del ratn sobre un elemento, y al hacer clic derecho
aparecer una ventana emergente que permitir aadir elementos hijos
y hermanos.

- 21

Editor de metamodelos: Validacin del Modelo

Para validar todo el modelo debemos seleccionar el paquete en que se


encuentra el metamodelo en la vista de rbol y hacer clic derecho para
que aparezca la ventana emergente donde esta la opcin de validar.
Recomendamos que el modelo vaya siendo validado durante su creacin
para detectar los errores en fases tempranas.

Si aparecen muchos errores en el

modelo completo y no entendis la


explicacin que muestra Eclipse,
podis acotar el error validando
cada elemento de forma individual
haciendo clic derecho sobre un
elemento y eligiendo la opcin
Validate.
- 22

Creacin de instancias dinmicas

Crear instancias del metamodelo creado:


El elemento del metamodelo desde el que se crea la instancia ser el
elemento raz en la instancia.
En la instancia podrn crearse elementos a partir del elemento raz (es
decir, podrn crearse elementos hijo pero no padres ni hermanos).

Se recomienda ir comprobando el

metamodelo mientras se esta


creando.
Validando el modelo.
Creando instancias dinmicas y
probando los nuevos elementos
que se han introducido.
Para ello puedes crear la
instancia desde el elemento que
quieres probar (no es necesario
crear un modelo completo para
probar una funcionalidad
aislada).

- 23

Creacin de instancias dinmicas

Una vez creado el objeto contenedor

Para introducir nuevos elementos (hijos): clic derecho sobre el elemento y

seleccionar el hijo a crear.


Para cada hijo, ya es posible crear nuevos hijos (un nivel inferior) o hermanos (al
mismo nivel).

Recordad que si modificis el metamodelo, la prxima vez que abris la

instancia dinmica puede dar error debido a que los cambios en el


metamodelo pueden haber creado inconsistencias en el modelo instanciado.

- 24

Errores comunes

En la vista de rbol de la instancia dinmica no aparecen los


elementos hijos:

La razn es porque no se ha marcado la clase padre como elemento


contenedor. Debis ir a la relacin que las une y marcar el checkbox
que indica que Is Containment si estis usando el editor grfico. En
el editor en forma de rbol, debis indicar en la relacin que
Containment es True.

Aparece la ventana emergente con los hijos, pero al crearlos da error.

Es posible que no hayis indicado el tipo de datos de los atributos de


ese elemento (por ejemplo, que el nombre es EString).

- 25

Tareas a realizar

Construir un metamodelo UML para representar el modelo creado en


la Prctica 1 utilizando EMF.

Identificar y especificar las principales restricciones (en lenguaje


natural) asociadas a las clases del metamodelo UML.
(En la prxima sesin escribiremos estas restricciones en OCL)

Crear un modelo de instancia igual al modelo creado en la prctica 1.

- 26

Bibliografa

Ms informacin sobre eclipse, plugins, etc.:

Especificacin UML

Eclipse Modeling Framework Project (EMF)

http://www.eclipse.org/
http://www.uml.org/

http://www.eclipse.org/modeling/emf/
Metamodelo Ecore:

http://download.eclipse.org/modeling/emf/emf/javadoc/2.5.0/org/eclipse/
emf/ecore/package-summary.html#details

- 27

Bibliografa

Ms informacin en el help on-line de Eclipse.

Help -> Help Contents

- 28