You are on page 1of 28

Desarrollo de Software Dirigido por

Modelos (DSM)
Prácticas
Tema 2: Metamodelado

Contenido

• 

MOF y Metamodelado

• 

Eclipse Modeling Tools

• 
• 

Tareas a realizar para la práctica
Bibliografía

•  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 dinámicas

-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 - .

Presentación de la aplicación Muestrario de productos Carrito de la compra La aplicación está compuesta por ventanas que se muestran en un cierto orden -4 - . la metaclase “raíz” podría llamarse “Aplicación”. • Por lo tanto.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. Aplicación Principal Un MetaModelo se especifica de forma que existe una clase “contenedora” que incluye el resto de clases. •  Imaginemos que queremos crear un metamodelo cuyas instancias vayan a ser modelos que representan aplicaciones software basadas en ventanas o páginas (en el caso de aplicaciones Web).

Ejemplo (M2) de un metamodelo -5 - .

-6 - . la notación gráfica del metamodelo no tiene la expresividad suficiente para realizar una especificación completa. •  Es por ello que necesitamos indicar restricciones sobre el modelo •  Ejemplos de restricciones: •  No puede haber dos o más ventanas con el mismo nombre (identificador). •  No puede haber dos o más menús con el mismo nombre (identificador).Ejemplo (M2) de un metamodelo •  Sin embargo. •  No puede haber dos o más marcos en la misma posición para la misma ventana. •  No puede haber dos o más menús en la misma posición.

Elementos de un metamodelo •  Ejemplo (M0): en una ventana o página Web… Menús Marcos Elemento de menú -7 - .

MOF y Metamodelado M3: MetaMetamodelo MOF Metamodelo de UML M2: MetamodeloPráctica 2 Diagrama de (Tienda M1: Modelo Prácticaclases 1 Online) Aplicación Principal Presentación de la aplicación Carrito de la compra Muestrario de productos M0: Instancias Objetos (Tienda Online Amazon) -8 - .

EMF – Eclipse Modeling Framework -9 - .

•  Los modelos pueden especificarse desde diferentes fuentes: •  Java anotado •  Documentos XML •  Herramientas de modelado (por ejemplo: Rational Rose) .EMF – Eclipse Modeling Framework •  El proyecto EMF es un framework de modelado y generación de código para construir herramientas y otras aplicaciones basadas en un modelo de datos estructurado.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 •  Además 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 - .

13 - .Crear un proyecto •  Por último es necesario escoger la vista de Diseño para generar un diagrama con el metamodelo .

14 - .Editor de metamodelos: Pestaña de propiedades Si no aparece ir a Window del menú superior y seleccionar: Show view -> Other… -> General -> Properties Valores recomendados .

Editor de metamodelos: elementos Introducir elementos Después 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.16 - .1. Lower/Upper Bound: 0.-1 ó * (para infinito) .

Editor de metamodelos: relaciones (clase contenedora) •  •  •  •  Por defecto las relaciones son simples y unidireccionales. . Cuando se marca “Is Containment” se está indicando que el elemento del que “sale” la relación es contenedor del elemento al que llega.17 - . Una relación puede indicar si una metaclase es contenedora de otra. Debe haber una clase que “contenga” a todas las demás clases del modelo.

•  No es obligatorio que todas las relaciones se indiquen en ambos sentidos. y otra del elemento B a A. pero si recomendable para poder navegar mejor por el metamodelo. •  Si queremos navegar en la dos direcciones se deben crear dos relaciones. . lo cual será necesario para futuras prácticas.Editor de metamodelos: relaciones (relaciones opuestas) •  En MOF las relaciones son unidireccionales. una del elemento A al B. •  Seguidamente. en las propiedades de una de las relaciones (por ejemplo de A a B) se debe indicar que tiene una relación opuesta (la relación B a A).18 - . por eso sólo se puede poner el nombre del rol en un extremo (no como en UML que se pone en los dos).

“abajo”. o “derecha”. •  Introducir un elemento Eenum y dentro las opciones con EEnumLiteral . Por ejemplo. “izquierda”.19 - . queremos establecer las posiciones de un menú como “arriba”.Editor de metamodelos: Enumerados •  •  Podemos crear nuevos tipos en el Metamodelo que aparecerán como tipos de datos en el Modelo.

20 - . se selección Etype y entras las opciones aparecerá “Posicion_Menu”. se selecciona el elemente al que se le quiere indicar que su tipo de datos será Posicion_Menu. En sus propiedades.Editor de metamodelos: Enumerados •  •  Posteriormente. .

21 - . Con la vista de árbol: para introducir un elemento nuevo debemos posicionar el puntero del ratón sobre un elemento.Editor de metamodelos: Vista en árbol •  •  Hasta el momento estamos creando el Metamodelo con el editor gráfico (diagrama). Simultáneamente se ha creado y se está actualizando de forma automática otra vista del Metamodelo en forma de árbol. . •  Podemos crear los Metamodelos con la vista en árbol o en diagrama. •  Al cambiar de vista aseguraros de guardar los cambios de la vista actual. y al hacer clic derecho aparecerá una ventana emergente que permitirá añadir elementos “hijos” y “hermanos”.

22 - . podéis acotar el error validando cada elemento de forma individual haciendo clic derecho sobre un elemento y eligiendo la opción “Validate”. . Recomendamos que el modelo vaya siendo validado durante su creación para detectar los errores en fases tempranas. •  Si aparecen muchos errores en el modelo completo y no entendéis la explicación que muestra Eclipse.Editor de metamodelos: Validación 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 opción de validar.

23 - . . •  En la instancia podrán crearse elementos a partir del elemento raíz (es decir. podrán crearse elementos “hijo” pero no “padres” ni “hermanos”). •  Para ello puedes crear la instancia desde el elemento que quieres probar (no es necesario crear un modelo completo para probar una funcionalidad aislada). ü  Creando instancias dinámicas y probando los nuevos elementos que se han introducido.Creación de instancias dinámicas •  Crear instancias del metamodelo creado: •  El elemento del metamodelo desde el que se crea la instancia será el elemento raíz en la instancia. ü  Validando el modelo. •  Se recomienda ir comprobando el metamodelo mientras se esta creando.

Para cada hijo.Creación de instancias dinámicas •  Una vez creado el objeto contenedor •  Para introducir nuevos elementos (hijos): clic derecho sobre el elemento y •  seleccionar el hijo a crear. la próxima vez que abráis la instancia dinámica puede dar error debido a que los cambios en el metamodelo pueden haber creado inconsistencias en el modelo instanciado. •  Recordad que si modificáis el metamodelo.24 - . . ya es posible crear nuevos hijos (un nivel inferior) o hermanos (al mismo nivel).

que el nombre es EString). . En el editor en forma de árbol. debéis indicar en la relación que “Containment“ es True.Errores comunes •  En la vista de árbol de la instancia dinámica no aparecen los elementos hijos: •  •  La razón es porque no se ha marcado la clase padre como elemento “contenedor“. Aparece la ventana emergente con los hijos. Debéis ir a la relación que las une y marcar el checkbox que indica que “Is Containment“ si estáis usando el editor gráfico.25 - . •  Es posible que no hayáis indicado el tipo de datos de los atributos de ese elemento (por ejemplo. pero al crearlos da error.

26 - . . •  Identificar y especificar las principales restricciones (en lenguaje natural) asociadas a las clases del metamodelo UML.Tareas a realizar •  Construir un metamodelo UML para representar el modelo creado en la Práctica 1 utilizando EMF. (En la próxima sesión escribiremos estas restricciones en OCL) •  Crear un modelo de instancia igual al modelo creado en la práctica 1.

org/ •  http://www.: •  Especificación UML •  Eclipse Modeling Framework Project (EMF) •  http://www.org/ •  http://www.eclipse. etc.html#details .Bibliografía •  Más información sobre eclipse.0/org/eclipse/ emf/ecore/package-summary.eclipse.5.27 - .org/modeling/emf/ •  Metamodelo Ecore: •  http://download.org/modeling/emf/emf/javadoc/2. plugins.eclipse.uml.

28 - .Bibliografía •  Más información en el help on-line de Eclipse. •  Help -> Help Contents .