Este documento describe el metamodelo UML 2. Explica la relación entre instancias, modelos, metamodelos y la jerarquía MOF. Presenta ejemplos simplificados de los metamodelos de los diagramas de caso de uso y clases UML. Finalmente, discute diferentes notaciones para el metamodelo UML y la adición de nuevos elementos mediante perfiles.
2. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 2
Resumen de la Sesión
• De instancias de modelos a metamodelos
• Jerarquía del metamodelo MOF
• Cómo se relacionan UML y MOF
• Ejemplo: Metamodelo del diagrama de caso
de uso
• Ejemplo: Metamodelo del diagrama de clases
• Diferentes notaciones del metamodelo UML
describen el mismo lenguaje
• Perfiles UML (UML Profiles): Agregando nuevos
miembros a la familia
3. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 3
De Instancias de Modelos a Metamodelos
• Relación canónica modelo-instancia:
• aPerson es una instancia de la clase Person.
• Así que la clase Person es un modelo para aPerson.
• ¿Podemos generalizar esta relación?
• ¿Cuál es el modelo para la clase Person?
PersonaPerson <<instanceOf>>
4. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 4
De Instancias de Modelos a Metamodelos
• Relación canónica modelo-instancia:
– La instancia aPerson y la clase Person están en
diferentes niveles de abstracción
– La clase Person especifica rasgos que caracterizan la
estructura y comportamiento de las personas
El modelo para la clase Person debe caracterizar la
estructura y comportamiento de las clases
PersonaPerson <<instanceOf>>
5. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 5
Person <<instanceOf>> <<metaclass>>
Class
De Instancias de Modelos a Metamodelos
• Relación entre modelo y metamodelo:
• La metaclase Class es un modelo para la clase Person
• Dado que Person es un modelo (para la instancia
aPerson), Class es un metamodelo (un modelo de
modelos)
PersonaPerson <<instanceOf>>
6. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 6
De Instancias de Modelos a Metamodelos
Al principio puede ser confuso, así que:
• Pensemos acerca de los diferentes niveles de
abstracción:
• Las instancias son concretas
• Los modelos son descripciones abstractas de las
instancias
• Los metamodelos son una descripción abstracta de
los modelos
• …
7. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 7
Metamodelos
¿Para qué los necesitamos?
Los metamodelos se pueden utilizar, por ejemplo,
para la formalización de las notaciones UML:
• Como UML es un Lenguaje, los metamodelos se usan
para describir su gramática
• El metamodelo UML describe todos los modelos que se
pueden crear usando UML
• El metamodelo permite hablar acerca de la semántica
8. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 8
Metamodelos
Está bien, los metamodelos son buenos, pero
¿cómo se crea un metamodelo?
Para abordar este problema, primero revisaremos
la historia del metamodelo de UML
9. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 9
La historia del Metamodelo de UML
• UML 1.0 tuvo muchos problemas semánticos
• OMG trató de lidiar con esos problemas
formalizando el lenguaje
• Idea: ¡Usar metamodelado!
• OMG se dio cuenta que todo lo que se
necesitaba para describir metamodelos era usar
un subconjunto de los elementos del diagrama
de clases UML
• Idea: Para describir cualquier metamodelo, ¡puede
emplearse la propia notación de los diagramas de clase
UML!
10. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 10
Meta Object Facility (MOF)
• En UML 2, OMG introdujo MOF para crear un
enfoque común al metamodelado
• Un metamodelo definido usando MOF se dice
que cumple con MOF.
10
11. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 11
Ventajas de los Metamodelos que
cumplen con MOF
• Pueden compararse fácilmente
• Los modelos que cumplen con MOF pueden
intercambiarse de forma estandarizada
• Intercambio de metadatos XML
• Las instancias que cumplen con MOF pueden
vivir en un mismo repositorio de metadatos
(data warehousing)
12. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 12
Meta Object Facility (MOF)
Hemos visto el uso de la secuencia de modelado
instancia modelo metamodelo meta-metamodelo
• Esta secuencia puede continuarse indefinidamente, pero
cuatro modelos son suficientes para la mayoría de los
propósitos de modelado.
• MOF define una jerarquía de metamodelado de
cuatro capas
• Capa M3: Capa de meta-metamodelado (El modelo MOF)
• Capa M2: Capa de metamodelado (El meta modelo UML)
• Capa M1: Capa de modelado (El modelo UML)
• Capa M0: Capa de información (La Aplicación)
• MOF y UML están alineados
• La infraestructura UML contiene todos los conceptos
necesarios para la especificación de UML y MOF.
13. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 13
Jerarquía del Metamodelo de MOF
(específico para UML)
14. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 14
Jerarquía del Metamodelo de MOF
(específico para UML)
15. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 15
Jerarquía del Metamodelo de MOF
(específico para UML)
Capa M2: meta modelo UML
• Modela el lenguaje UML, i.e., define conceptos como
clases, atributos, asociaciones
La capa M2 contiene descripciones de elementos que
pueden usarse para describir los modelos de la capa de
modelo
Capa M2: meta modelo UML
• Modela el lenguaje UML, i.e., define conceptos como
clases, atributos, asociaciones
La capa M2 contiene descripciones de elementos que
pueden usarse para describir los modelos de la capa de
modelo
16. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 16
Jerarquía del Metamodelo de MOF
(específico para UML)
17. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 17
Jerarquía del Metamodelo de MOF
(específico para UML)
Capa M1: modelo UML
Al usar cualquier diagrama UML, instanciamos el
metamodelo UML y obtenemos un modelo UML
La capa M1 contiene modelos específicos para cada
aplicación
Capa M1: modelo UML
Al usar cualquier diagrama UML, instanciamos el
metamodelo UML y obtenemos un modelo UML
La capa M1 contiene modelos específicos para cada
aplicación
18. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 18
Jerarquía del Metamodelo de MOF
(específico para UML)
19. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 19
Jerarquía del Metamodelo de MOF
(específico para UML)
Capa M0: Instancias a tiempo de ejecución
• Instancias reales de los modelos
La capa M0 contiene instancias concretas a tiempo de
ejecución
• ¡Note la diferencia entre especificación de instancia
e instancia real!
Capa M0: Instancias a tiempo de ejecución
• Instancias reales de los modelos
La capa M0 contiene instancias concretas a tiempo de
ejecución
• ¡Note la diferencia entre especificación de instancia
e instancia real!
20. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 20
Jerarquía del Metamodelo de MOF
(específico para UML)
21. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 21
Jerarquía del Metamodelo de MOF
(específico para UML)
Capa M3: modelo MOF
• El metamodelo UML es una instancia de un modelo
aún más abstracto, llamado el modelo MOF
• M3 : M2 ≈ M2 : M1
La capa M3 contiene meta-metamodelos
Capa M3: modelo MOF
• El metamodelo UML es una instancia de un modelo
aún más abstracto, llamado el modelo MOF
• M3 : M2 ≈ M2 : M1
La capa M3 contiene meta-metamodelos
22. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 22
Jerarquía del Metamodelo de MOF
(específico para UML)
23. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 23
Jerarquía del Metamodelo de MOF
(específico para UML)
Recuerde que UML sólo es una
posibilidad de modelar con MOF
• Observamos una jerarquía específica de
UML
• MOF describe metamodelos en general
Recuerde que UML sólo es una
posibilidad de modelar con MOF
• Observamos una jerarquía específica de
UML
• MOF describe metamodelos en general
24. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 24
¿Dónde estamos?
De instancias de modelos a metamodelos
Jerarquía del metamodelo MOF
Cómo se relaciona UML con MOF
• Ejemplo: Metamodelo del diagrama de caso
de uso
• Ejemplo: Metamodelo del diagrama de clases
• Diferentes notaciones para el metamodelo UML
describen el mismo lenguaje
• Perfiles UML: Agregar nuevos miembros a la
familia
25. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 25
Cómo se relaciona UML con MOF
• UML cumple con MOF:
El metamodelo de UML es una instancia del modelo MOF
• ¡Veamos el metamodelo de UML en acción!
26. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 26
Metamodelo del Diagrama de Caso de Uso
(simplificado)
*
*
*
1
*
11 1
* *
1
*
*
1..*
0..10..1
27. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 27
Metamodelo del Diagrama de Caso de Uso
(simplificado)
*
*
*
1
*
11 1
* *
1
*
*
1..*
0..10..1
28. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 28
Metamodelo del Diagrama de Caso de Uso
(simplificado)
*
<<instanceOf>>
*
*
1
*
11 1
* *
1
*
*
1..*
0..10..1
29. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 29
Metamodelo del Diagrama de Caso de Uso
(simplificado)
*
*
*
1
*
11 1
* *
1
*
*
1..*
0..10..1
30. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 30
Metamodelo del Diagrama de Caso de Uso
(simplificado)
*<<instanceOf>>
*
*
1
*
11 1
* *
1
*
*
1..*
0..10..1
31. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 31
Metamodelo del Diagrama de Caso de Uso
(simplificado)
*
*
*
1
*
11 1
* *
1
*
*
1..*
0..10..1
32. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 32
Metamodelo del Diagrama de Caso de Uso
(simplificado)
*
<<instanceOf>>
*
*
1
*
11 1
* *
1
*
*
1..*
0..10..1
33. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 33
Metamodelo del Diagrama de Caso de Uso
(simplificado)
*
<<Extend>>
*
*
1
*
11 1
* *
1
*
*
1..*
0..10..1
34. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 34
Metamodelo del Diagrama de Caso de Uso
(simplificado)
*
<<Extend>>
<<instanceOf>>
*
*
1
*
11 1
* *
1
*
*
1..*
0..10..1
35. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 35
Metamodelo del Diagrama de Caso de Uso
(simplificado)
*
<<Extend>>
<<Include>>
*
*
1
*
11 1
* *
1
*
*
1..*
0..10..1
36. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 36
Metamodelo del Diagrama de Caso de Uso
(simplificado)
*
<<Extend>>
<<Include>>
<<instanceOf>>
*
*
1
*
11 1
* *
1
*
*
1..*
0..10..1
37. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 37
Metamodelo del Diagrama de Clases
(simplificado)
0..1
*
0..1
*
0..1
*
0..12..*
38. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 38
Metamodelo del Diagrama de Clases
(simplificado)
0..1
*
0..1
*
0..1
*
0..12..*
39. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 39
Metamodelo del Diagrama de Clases
(simplificado)
0..1
*
0..1
*
0..1
*
0..12..*
<<instanceOf>>
40. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 40
Metamodelo del Diagrama de Clases
(simplificado)
0..1
*
0..1
*
0..1
*
0..12..*
41. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 41
Metamodelo del Diagrama de Clases
(simplificado)
0..1
*
0..1
*
0..1
*
0..12..*
<<instanceOf>>
42. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 42
Metamodelo del Diagrama de Clases
(simplificado)
0..1
*
0..1
*
0..1
*
0..12..*
43. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 43
Metamodelo del Diagrama de Clases
(simplificado)
<<instanceOf>>
0..1
*
0..1
*
0..1
*
0..12..*
44. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 44
Metamodelo del Diagrama de Clases
(simplificado)
0..1
*
0..1
*
0..1
*
0..12..*
45. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 45
Metamodelo del Diagrama de Clases
(simplificado)
<<instanceOf>>
0..1
*
0..1
*
0..1
*
0..12..*
46. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 46
Notaciones para el Metamodelo UML
• El metamodelo UML define un lenguaje para
especificar modelos UML
• La notación usada para diagramar modelos UML
proporciona constructos gráficos para representar
instancias de los elementos del metamodelo
(La figura sticky man representa a un Actor)
• La notación es una función que transforma los
elementos del metamodelo en elementos del
modelo
(“umlnotation(Actor) = “)
47. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 47
Perfiles UML
• Consisten en estereotipos, valores etiquetados y
restricciones
• Personalizan los modelos UML para plataformas
y dominios particulares
• ¡Se le aplican a los elementos del metamodelo
UML (M2)!
• Los desarrollan fabricantes u organizaciones de
estandarización (CORBA, .NET)
48. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 48
Aplicando los perfiles UML
• Al aplicar un perfil UML, nosotros
• Aplicamos estereotipos a metaclases
• Obtenemos una comprensión más profunda del modelo
• Reducimos la cantidad de modelos válidos (véase la
siguiente diapositiva).
49. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 49
Perfiles UML
Todos los modelos (MOF)
Modelos UML
Modelos
CORBA
(perfil)
Modelos
SysML
Modelos
.NET
(perfil)
50. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 50
Lecturas Adicionales
• La especificación MOF actual
• http://www.omg.org/technology/documents/modeling_spec_
• RSS Feed:
• feed://www.omg.org/mof/rss/index.xml
Notas del editor
Object model: What is the structure of the system? What are the objects and how are they related?
Functional model: What are the functions of the system? How is data flowing through the system?
Dynamic model: How does the system react to external events? How is the event flow in the system ?
Note for instructors: Do not change this slide. The blue box is out of the viewing area, but when animated it will appear correctly.
(no abstraction)
In practice there exist different meta models
Object model: What is the structure of the system? What are the objects and how are they related?
Functional model: What are the functions of the system? How is data flowing through the system?
Dynamic model: How does the system react to external events? How is the event flow in the system ?