SlideShare una empresa de Scribd logo
 
Los Perfiles UML son una herramienta para extender el Lenguaje UML, los cuales permiten construir modelos de UML para dominios particulares. Ellos se basan en estereotipos y valores etiquetados adicionales que son aplicados a Elementos, Atributos, Métodos, Vínculos, Finales de Vínculo,etc. Un perfil es una colección de extensiones que juntas describen algún problema de modelado en particular y facilitan la construcción de modelos en ese dominio.
Un perfil se define en un paquete UML, estereotipado como «profile», y su objetivo es extender un metamodelo u otro perfil.  Los perfiles UML constituyen el mecanismo que proporciona el propio UML para extender su sintaxis y su semántica para expresar los conceptos específicos de un determinado dominio de apli- cación.
El metamodelo UML define la notación de un modo riguroso, a través de diagramas de la propia notación y con OCL  (Object Constraint Language). Es en el metamodelo donde se define el lenguaje que sirve para especificar los modelos que vamos a crear los usuarios de UML. En otras palabras, el metamodelo sirve para describir los elementos que van a componer nuestros diagramas. Ejemplo de un metamodelo:
UML utiliza los estereotipos para un par de propósitos. En primer lugar, es para indicar qué elemento del metamodelo está describiendo un elemento del modelo en un diagrama. Por ejemplo, una clase Caja muestra las operaciones dentro de la interfaz, y el estereotipo que identifica a esta interfaz es una interfaz y no una clase. El segundo uso principal de un estereotipo es para indicar un tipo especializado de un elemento de un metamodelo dentro de un perfil definido. No  se le permite añadir nuevos elementos al metamodelo de un perfil-deben ser de especialidades existentes en las metaclases del metamodelo.
Los estereotipos se muestran de dos maneras. Ya sea una anotación de texto que se adjunta a la MetaClase que va a ser estereotipada, como una clase, relación, o nodo, o el icono por defecto para la MetaClase se sustituye por un icono especial. La Figura1. muestra dos enfoques que se están utilizando. Se utilizan varios estereotipos. La primera es  una clase «activa». Un clase «activa» propietaria de la raíz de un hilo y es la forma en que la concurrencia de un modelo de un sistema se construye con UML, instancias contenidas en la relación de composición (por ejemplo, las instancias de la clase MQueue en la figura) se ejecutan en el contexto del hilo de la instancia de la clase activa. UML 1.x utiliza una clase con un tablero grueso como en el icono de este tipo de clase, mientras que en UML 2.0 en el icono es una clase con un cuadro de doble línea de frontera a la izquierda y la derecha. Ambas formas se muestran en la Figura1.
La clase MQueue es estereotipada - se trata de un tipo "especial" de una clase llamada «MessageQueue». La clase MQueue también contiene, a través de la composición, una clase de bloqueo, que también es estereotipada como un «Semáforo». Los mismos Estereotipos, utilizando la opción de notación textual, también se muestran en la figura1. La clase MotorController es también estereotipadas como un «motor». Por último, cualquier MetaClase puede ser estereotipada - el nodo que se muestra en la figura es estereotipado como un «procesador», éstos pueden aplicarse a cualquier tipo de MetaClase en UML. Existen estereotipos para que los usuarios (y la construcción de perfiles de personas) puedan añadir su dominio de conceptos específicos a su lenguaje de modelado de forma fácil y ligera.   Figura1. Estereotipos UML
Hasta cierto punto, los estereotipos pueden ser usados para indicar que algo está en una clase de entidad en su dominio conceptual del entorno. El uso de estos estereotipos puede aclarar el modelo de dominio a los expertos que tratan de construir o entender su sistema. Sin embargo, los estereotipos son más útiles cuando contienen valores especiales que se aplican (sólo) para ese tipo de estereotipo. La primera forma en que los estereotipos son personalizados es mediante la adición de lo que se denomina una etiqueta o valor de propiedad. Una etiqueta es un valor de propiedad par nombre-valor. Es común para identificar los tipos de valores especiales que se aplican a este estereotipo y no a otros, y para capturalos en el modelo.  
El valor de la etiqueta muestra la definición del tipo de información añadida al estereotipo. Los valores reales de las instancias de todo el estereotipo (por ejemplo, usar clases basadas en el estereotipo) se añaden mediante la asignación o el uso de las restricciones marcadas en los valores anclados en el estereotipo.   Una restricción es una norma definida por el usuario o regla de la corrección. UML tiene muchas limitaciones en la definición del metamodelo, del uso legal de las clases, las asociaciones, y otros elementos del modelo. Sin embargo, estos son necesariamente generalizadas para que UML se puede utilizar para modelar sistemas en múltiples ámbitos. Una restricción es una forma en la que un usuario puede expresar una limitación que tiene sentido en el dominio de un elemento del modelo que se dibuja. La Figura2. muestra un uso típico de las restricciones y la combinación de valores etiquetados que se definen para el estereotipo.
Por ejemplo, un estereotipo «Semáforo» podría tener un valor etiquetado llamado "capacidad", que indica el número de usuarios activos de un recurso. En la figura, el valor de la etiqueta está explícitamente establecido en 1. Del mismo modo, un «MessageQueue» podría tener un valor etiquetado maxsize, una clase «activa» puede tener etiquetas como IsPeriodic, período, etc. Un nodo «processor» puede tener valores etiquetados como el tamaño de la memoria, la velocidad de la CPU, etc. Una restricción es la forma clásica para especificar valores concretos para las etiquetas que son válidos para un estereotipo. Las restricciones, como puede verse en la figura, normalmente se muestran en el interior de la nota y dentro de cajas de llaves para establecer fuera de ellos semántica sin comentarios. Figura2. Valores etiquetados y restricciones
Teniendo en cuenta qué podemos utilizar para especificar las restricciones de los valores relacionados con las etiquetas, ¿cómo podemos definir las etiquetas? Hay dos maneras. La primera, se muestra en la Figura3., es utilizar una hoja de propiedades que muestra de una manera sensible al contexto, las etiquetas que están disponibles para un determinado estereotipo. La segunda, se muestra en la Figura4., es mostrar las etiquetas en un compartimento de la etiqueta «etiquetas». Cualquiera se puede utilizar, dependiendo de su herramienta de diseño UML y las preferencias personales.
Un perfil es un metamodelo de dominio de interés particular, a través de un conjunto coherente de estereotipos  UML, asociados con los valores etiquetados que se utilizan a través de restricciones, posiblemente acompañado de un modelo específico para la biblioteca de dominio (s) de interés. La limitación de esta definición es que todos los elementos de este metamodelo de dominio debe ser expresado en las MetaClases predefinidas de los estereotipos UML, tales como clase, de asociación, de nodo, componente, y así sucesivamente. A un perfil no se le permite "romper" la semántica de UML normal, no obstante, se permitirá subconjuntos de ella, éstos se especializan, y amplían, así como también se pueden añadir anotaciones, según sea necesario.  
Figura3. Representación de Valores Etiquetados en hojas de propiedades Figura4. Representación de Valores Etiquetados con compartimientos especializados .
La versión 2.0 de UML incluye varios mecanismos para extender y adaptar las metaclases de UML a las necesidades concretas de una plataforma como puede ser .NET o J2EE o de un dominio de aplicación Tiempo Real, modelado de procesos de negocio, etc. Actualmente ya hay definidos varios Perfiles UML, algunos de los cuales han sido incluso estandarizados por la OMG: los Perfiles UML para CORBA y para CCM (CORBA Component Model), el Perfil UML para EDOC (Enterprise Distributed Object Computing), el Perfil UML para EAI (Enterprise Application Integration), y el Perfil UML para Planificación, Prestaciones, y Tiempo (Scheduling, Performance, and Time). Muchos otros Perfiles UML se encuentran actualmente en proceso de definición y estandarización por parte de la OMG, y se espera que vean la luz muy pronto.
UML 2.0 señala varias razones por las que un diseñador puede querer extender y adaptar un metamodelo existente, sea el del propio UML, el de CWM, o incluso el de otro Perfil: Disponer de una terminología y vocabulario propio de un dominio de aplicación o de una plataforma de implementación concreta. Definir una sintaxis para construcciones que no cuentan con una notación propia (como sucede con las acciones). Definir una nueva notación para símbolos ya existentes, más acorde con el dominio de la aplicación objetivo. Añadir cierta semántica que no aparece determinada de forma precisa en el metamodelo. Añadir restricciones a las existentes en el metamodelo, restringiendo su forma de utilización. Añadir información que puede ser útil a la hora de transformar el modelo a otros modelos, o a código.
Un Perfil se define en un paquete UML, estereotipado «profile», que extiende a un metamodelo o a otro Perfil. Tres son los mecanismos que se utilizan para definir Perfiles: estereotipos ( stereotypes), restricciones (constraints), y valores etiquetados (tagged values). Para ilustrar estos conceptos utilizaremos un pequeño ejemplo de Perfil UML, que va a definir dos nuevos elementos que pueden ser añadidos a cualquier modelo UML: colores y pesos .
En primer lugar, un estereotipo viene definido por un nombre, y por una serie de elementos del metamodelo sobre los que puede asociarse. Gráficamente, los estereotipos se definen dentro de cajas, estereotipadas «stereotype». Se puede observar cómo el Perfil especifica los elementos del metamodelo de UML sobre los que se pueden asociar los estereotipos estereotipados «metaclass», mediante flechas continuas de punta triangular en negrita. A los estereotipos es posible asociarles restricciones, que imponen condiciones sobre los elementos del metamodelo que han sido estereotipados. De esta forma pueden describirse, entre otras, las condiciones que ha de verificar un modelo “bien formado” de un sistema en un dominio de aplicación. Por ejemplo, supongamos que el metamodelo de el dominio de aplicación impone la restricción de que si dos o más clases están unidas por una asociación coloreada, el color de las clases debe coincidir con el de la asociación.   context  UML::InfrastructureLibrary::Core::Constructs::Association   inv  :  self.isStereotyped(“Colored”)  implies self.connection-> forAll (isStereotyped(“Colored”)  implies  color=self.color)
Finalmente, un valor etiquetado es un meta-atributo adicional que se asocia a una metaclase del metamodelo extendido por un Perfil. Todo valor etiquetado ha de contar con un nombre y un tipo, y se asocia un determinado estereotipo. De esta forma, el estereotipo «Weighed» puede contar con un valor etiquetado denominado “weight”, de tipo Integer, y que indicará el peso de cada asociación que haya sido estereotipada como «Weighed». Los valores etiquetados se representan de forma gráfica como atributos de la clase que define el estereotipo. Es importante señalar que estos tres mecanismos de extensión no son de primer nivel, es decir, no permiten modificar metamodelos existentes, sólo añadirles elementos y restricciones, pero respetando su sintaxis y semántica original. Sin embargo, sí que son muy adecuados para particularizar un metamodelo para uno o varios dominios o plataformas existentes. Cada una de estas particularizaciones o adaptaciones viene definida por un Perfil, que agrupa los estereotipos, restricciones, y valores etiquetados propios de tal adaptación.
También hay Perfiles UML definidos por otras organizaciones y empresas fabricantes de lenguajes de programación y herramientas que, aun no siendo estándares oficiales, están disponibles de forma pública y son comúnmente utilizados (convirtiéndose por tanto en estándares “de facto”). Un ejemplo de tales Perfiles es el “UML/EJB Mapping Specification”, que ha sido definido por JCP (Java Community Process). También se dispone de Perfiles UML para determinados lenguajes de programación, como pueden ser Java o C#. Cada uno de estos Perfiles define una forma concreta de usar UML en un entorno particular. Así por ejemplo, el Perfil UML para CORBA define una forma de usar UML para modelar interfaces y artefactos de CORBA, mientras que el Perfil UML para Java define una forma concreta de modelar código Java usando UML.
La especificación de UML 2.0 [7] sólo se limita a definir el concepto de Perfil y sus contenidos. A la hora de definir un Perfil UML se deben seguir los siguientes pasos: Antes de comenzar, es preciso disponer de la correspondiente definición del metamodelo de la plataforma o dominio de aplicación a modelar con un Perfil. Si no existiese, entonces se debe definir dicho metamodelo utilizando los mecanismos del propio UML (clases, relaciones de herencia, asociaciones, etc.), de la forma usual como se haría si el objetivo no fuese definir un perfil UML.  Si ya se dispone del metamodelo del dominio, se pasa a definir el Perfil. Dentro del paquete «profile» se incluye un estereotipo por cada uno de los elementos del metamodelo que se desea incluir en el Perfil. Estos estereotipos tendrán el mismo nombre que los elementos del metamodelo, estableciéndose de esta forma una relación entre el metamodelo y el Perfil.
Es importante tener claro cuáles son los elementos del metamodelo de UML que se va a extender, sobre los que es posible aplicar un estereotipo. Ejemplo de tales elementos son las clases, sus asociaciones, sus atributos, las operaciones, las transiciones, los paquetes, etc. Definir como valores etiquetados de los elementos del Perfil los atributos que aparezcan en el metamodelo. Incluir la definición de sus tipos, y sus posibles valores iniciales. Definir las restricciones que forman parte del Perfil, a partir de las restricciones del dominio.  Ejemplo:  En primer lugar, se quiere modelar las conexiones entre los elementos de ciertos sistemas de información según la topología en estrella, donde los nodos centrales de cada estrella pueden estar conectados entre sí. En este dominio se definen nodos (Node), conectados a través de arcos que pueden ser: locales (LocalEdge) si conectan nodos de una misma estrella con su nodo central (MainNode), o bien remotos (Edge) si conectan nodos centrales entre sí. Cada nodo identifica su posición mediante una cadena de caracteres (location). Como restricción, se impone que todos los nodos de una misma estrella compartan una misma posición geográfica. El metamodelo que describe tal dominio de aplicación puede ser descrito en UML  como sigue:
A partir de este metamodelo, el Perfil UML que va a representar va a estar descrito como un paquete UML, estereotipado «profile»:
Como puede observarse, dicho Perfil define cuatro estereotipos, correspondientes a las clases y asociaciones definidas en el metamodelo, así como las metaclases de UML sobre las que pueden aplicarse tales estereotipos. Las metaclases corresponden al metamodelo a ser extendido, en este caso al metamodelo de UML. El estereotipo Node tiene asociado además un valor etiquetado (location), de tipo String. Además de los estereotipos y los valores etiquetados, el tercer elemento de un Perfil lo constituyen las restricciones. En este caso, las restricciones del metamodelo se traducen en las siguientes restricciones del Perfil: context  UML::InfrastructureLibrary::Core::Constructs::Class inv  : -- Nodes should be locally connected to exactly one MainNode   self.isStereotyped(“Node”)  implies self.connection->select(isStereotyped(“LocalEdge”))-> size  = 1  and self.connection-> select (isStereotyped(“Edge”))-> isEmpty context  UML::InfrastructureLibrary::Core::Constructs::Association inv  : self.isStereotyped(“LocalEdge”)  implies self.connection-> select (participant.isStereotyped(“Node”) or   participant.isStereotyped(“MainNode”) ) ->   forAll (n1, n2 | n1.location = n2.location) inv  : self.isStereotyped(“LocalEdge”)  implies   self.connection->  exists (participant.isStereotyped(“MainNode”)  and  multiplicity.min=1 and multiplicity.max=1) inv  : self.isStereotyped(“Edge”)  implies   self.connection->select(participant.isStereotyped(“Node”))-> isEmpty and   self.connection->select(participant.isStereotyped(“MainNode”) ) ->   forAll(n1, n2 | n1.location <> n2.location)
Es importante observar los contextos para los que se definen dichas restricciones, que son elementos del metamodelo de UML que estamos adaptando a nuestro modelo. De esta forma, estamos añadiendo restricciones semánticas sobre ellos. La gran ventaja del uso de Perfiles es que estas restricciones van a poder comprobarse en el modelo de un sistema final conforme a un Perfil, sobre aquellas asociaciones que han sido estereotipadas con los estereotipos de dicho Perfil.  Una vez se ha definido un Perfil UML, la forma de utilizarlo en una aplicación concreta se representa mediante una relación de dependencia (estereotipada «apply») entre el paquete UML que contiene la aplicación, y los paquetes que definen los Perfiles UML que se desean utilizar.  Ejemplo:  el siguiente diagrama muestra una aplicación que hace uso de los dos Perfiles UML que se han definido con anterioridad.
La versión de UML actualmente estandarizada y soportada por herramientas comerciales es la 1.5. Sin embargo, la nueva versión 2.0 está definida y en proceso de adopción como estándar de OMG. Esta nueva versión es mucho más completa y ofrece numerosas ventajas respecto a la 1.5, mejorando muchas de sus limitaciones. las herramientas actuales permiten definir y usar Perfiles UML únicamente de forma gráfica sin que aún soporten de forma adecuada la verificación de restricciones asociadas a estereotipos. Por lo tanto, un usuario que especifique un sistema a partir de un Perfil UML creado con una herramienta dada, no podrá estar completamente seguro de si su sistema es consistente con dicho perfil. Nos toca esperar que surjan herramientas que permitan definir Perfiles UML de acuerdo a la versión 2.0 y que permitan verificar las restricciones asociadas a los perfiles, gestionando de forma adecuada la definición de nuevos estereotipos y etiquetas. Igualmente estas herramientas deberían promover la definición y uso de perfiles UML como una buena práctica para la especificación e implementación de sistemas.

Más contenido relacionado

PDF
Sql developer. manual de usuario v1.2
PPTX
Patrón de diseño Modelo-Vista-Controlador (MVC)
PPT
Manual de Erwin
PDF
Clase 6 excepciones
PPTX
Pilas en Java
PDF
METODOS Y MODELOS POO
PDF
Árboles N-arios
PPT
Modelado del análisis
Sql developer. manual de usuario v1.2
Patrón de diseño Modelo-Vista-Controlador (MVC)
Manual de Erwin
Clase 6 excepciones
Pilas en Java
METODOS Y MODELOS POO
Árboles N-arios
Modelado del análisis

La actualidad más candente (20)

PPTX
Estructura jerarquica de un sistema operativo
PPTX
Ingenieria de requerimientos
PPTX
Arquitecturas de pizarra o repositório
PDF
Modelos de desarrollo del software
PDF
Análisis y diseño de sistemas sesion 11 - modelo de analisis
PPTX
Procesamiento segmentado
PPT
Poo 3 herencia
DOCX
Diagramas de contexto para blog
PDF
DOCX
Caso de uso de biblioteca
PDF
Montar servidor ftp con filezilla server
PDF
Sesion12-componentes Visuales java
PDF
POO Unidad 2: Programación Orientada a Objetos
PDF
TABLA DE SÍMBOLOS
PPTX
Algebra relacional
PDF
Uml clase 02_uml_casos_de_uso
PDF
Requisitos no Funcionales
PDF
Ejercicios resueltos diagramas de claseaula (1)
PDF
CSS по БЕМ
PPTX
Normalización de Base de Datos
Estructura jerarquica de un sistema operativo
Ingenieria de requerimientos
Arquitecturas de pizarra o repositório
Modelos de desarrollo del software
Análisis y diseño de sistemas sesion 11 - modelo de analisis
Procesamiento segmentado
Poo 3 herencia
Diagramas de contexto para blog
Caso de uso de biblioteca
Montar servidor ftp con filezilla server
Sesion12-componentes Visuales java
POO Unidad 2: Programación Orientada a Objetos
TABLA DE SÍMBOLOS
Algebra relacional
Uml clase 02_uml_casos_de_uso
Requisitos no Funcionales
Ejercicios resueltos diagramas de claseaula (1)
CSS по БЕМ
Normalización de Base de Datos
Publicidad

Destacado (17)

PPT
Extensiones UML para aplicaciones web - Rocío Santiago
PPT
UML para dispositivos móviles - Milena Cabrera
PPTX
Diagramas de objetos
PPTX
Diagrama de paquete
PPTX
Diagramas de paquetes
PDF
Diagramas De Interaccion
PPTX
Diagrama de clases
PDF
Modelado conceptual de app web
PPTX
Projeto de sistemas com UML - Parte 1
PPTX
Modelado conceptual de aplicaciones web
PPT
Clase 3 Modelo Entidad Relacion
PPTX
Los 13 diagramas UML y sus componentes
PDF
Diagrama de Flujo de Datos
PPT
MODELAMIENTO VISUAL Y UML
PPT
Modelo APA Bibliografia
DOCX
Modelado Orientado a Objetos
Extensiones UML para aplicaciones web - Rocío Santiago
UML para dispositivos móviles - Milena Cabrera
Diagramas de objetos
Diagrama de paquete
Diagramas de paquetes
Diagramas De Interaccion
Diagrama de clases
Modelado conceptual de app web
Projeto de sistemas com UML - Parte 1
Modelado conceptual de aplicaciones web
Clase 3 Modelo Entidad Relacion
Los 13 diagramas UML y sus componentes
Diagrama de Flujo de Datos
MODELAMIENTO VISUAL Y UML
Modelo APA Bibliografia
Modelado Orientado a Objetos
Publicidad

Similar a Perfiles UML - Eliana Concha (20)

PPT
Perfiles UML - Paola Morales
PPT
Perfiles UML - Jénifer Quintero
PDF
Crítica A UML - Based Pattern
PPTX
PPT
Objeto de Aprendizaje : Introducción a UML
PPTX
Modulos de vista
PPTX
Uml juan pablo cueto galindo
PPTX
_Concepto de interfaz_interfaz_interfaz_interfaz_interfaz_.pptx
DOCX
PDF
Atix17
PPT
Ingenieria de software
PPT
Introduccion a UML
PPT
DOC
D clase
PPTX
Diagrama de dominio armando
PPT
Modelado de sistemas software
PDF
31096724 diagrama-de-clases-en-uml
PPTX
Uml mateo henao
PPT
Introducción a UML
Perfiles UML - Paola Morales
Perfiles UML - Jénifer Quintero
Crítica A UML - Based Pattern
Objeto de Aprendizaje : Introducción a UML
Modulos de vista
Uml juan pablo cueto galindo
_Concepto de interfaz_interfaz_interfaz_interfaz_interfaz_.pptx
Atix17
Ingenieria de software
Introduccion a UML
D clase
Diagrama de dominio armando
Modelado de sistemas software
31096724 diagrama-de-clases-en-uml
Uml mateo henao
Introducción a UML

Más de 2008PA2Info3 (20)

PPT
Programación Orientada a Aspectos - Fernando Córdoba
PPT
JUnit - Germán Domínguez
PPT
JUnit - Pablo Calvache
PPT
SCRUM - César Ortiz
PPT
Java Fx - Santiago Vejarano
PPT
Programación rientada a Aspectos - David Burbano
PPT
Modelado de redes de telecomunicaciones con UML - Leonardo Nieto
PPT
SCRUM - Osiris López
PPT
Formalización en UML - Ingrid Muñoz
PPT
Java Fx - Alejandro Sotelo
PPT
Scripting Integration en Java 6 - Daniel E. Jaramillo
PPT
SCRUM - Víctor Orobio
PPT
Estándares calidad del software - Cristina Ortega
PPT
Programación orientada a eventos - Alejandro Solano
PPT
UML para sistemas de tiempo real - Marcela Folleco
PPT
Patrones de diseño - Andrés Dorado
PPT
MDD - Andrés Goyes
PPT
Aplicaciones web - Gonzalo Acte
PPT
Estándares de calidad del software - Andrés Mera
PPT
UML para sistemas tiempo real - Carlos Restrepo
Programación Orientada a Aspectos - Fernando Córdoba
JUnit - Germán Domínguez
JUnit - Pablo Calvache
SCRUM - César Ortiz
Java Fx - Santiago Vejarano
Programación rientada a Aspectos - David Burbano
Modelado de redes de telecomunicaciones con UML - Leonardo Nieto
SCRUM - Osiris López
Formalización en UML - Ingrid Muñoz
Java Fx - Alejandro Sotelo
Scripting Integration en Java 6 - Daniel E. Jaramillo
SCRUM - Víctor Orobio
Estándares calidad del software - Cristina Ortega
Programación orientada a eventos - Alejandro Solano
UML para sistemas de tiempo real - Marcela Folleco
Patrones de diseño - Andrés Dorado
MDD - Andrés Goyes
Aplicaciones web - Gonzalo Acte
Estándares de calidad del software - Andrés Mera
UML para sistemas tiempo real - Carlos Restrepo

Perfiles UML - Eliana Concha

  • 1.  
  • 2. Los Perfiles UML son una herramienta para extender el Lenguaje UML, los cuales permiten construir modelos de UML para dominios particulares. Ellos se basan en estereotipos y valores etiquetados adicionales que son aplicados a Elementos, Atributos, Métodos, Vínculos, Finales de Vínculo,etc. Un perfil es una colección de extensiones que juntas describen algún problema de modelado en particular y facilitan la construcción de modelos en ese dominio.
  • 3. Un perfil se define en un paquete UML, estereotipado como «profile», y su objetivo es extender un metamodelo u otro perfil. Los perfiles UML constituyen el mecanismo que proporciona el propio UML para extender su sintaxis y su semántica para expresar los conceptos específicos de un determinado dominio de apli- cación.
  • 4. El metamodelo UML define la notación de un modo riguroso, a través de diagramas de la propia notación y con OCL (Object Constraint Language). Es en el metamodelo donde se define el lenguaje que sirve para especificar los modelos que vamos a crear los usuarios de UML. En otras palabras, el metamodelo sirve para describir los elementos que van a componer nuestros diagramas. Ejemplo de un metamodelo:
  • 5. UML utiliza los estereotipos para un par de propósitos. En primer lugar, es para indicar qué elemento del metamodelo está describiendo un elemento del modelo en un diagrama. Por ejemplo, una clase Caja muestra las operaciones dentro de la interfaz, y el estereotipo que identifica a esta interfaz es una interfaz y no una clase. El segundo uso principal de un estereotipo es para indicar un tipo especializado de un elemento de un metamodelo dentro de un perfil definido. No se le permite añadir nuevos elementos al metamodelo de un perfil-deben ser de especialidades existentes en las metaclases del metamodelo.
  • 6. Los estereotipos se muestran de dos maneras. Ya sea una anotación de texto que se adjunta a la MetaClase que va a ser estereotipada, como una clase, relación, o nodo, o el icono por defecto para la MetaClase se sustituye por un icono especial. La Figura1. muestra dos enfoques que se están utilizando. Se utilizan varios estereotipos. La primera es una clase «activa». Un clase «activa» propietaria de la raíz de un hilo y es la forma en que la concurrencia de un modelo de un sistema se construye con UML, instancias contenidas en la relación de composición (por ejemplo, las instancias de la clase MQueue en la figura) se ejecutan en el contexto del hilo de la instancia de la clase activa. UML 1.x utiliza una clase con un tablero grueso como en el icono de este tipo de clase, mientras que en UML 2.0 en el icono es una clase con un cuadro de doble línea de frontera a la izquierda y la derecha. Ambas formas se muestran en la Figura1.
  • 7. La clase MQueue es estereotipada - se trata de un tipo &quot;especial&quot; de una clase llamada «MessageQueue». La clase MQueue también contiene, a través de la composición, una clase de bloqueo, que también es estereotipada como un «Semáforo». Los mismos Estereotipos, utilizando la opción de notación textual, también se muestran en la figura1. La clase MotorController es también estereotipadas como un «motor». Por último, cualquier MetaClase puede ser estereotipada - el nodo que se muestra en la figura es estereotipado como un «procesador», éstos pueden aplicarse a cualquier tipo de MetaClase en UML. Existen estereotipos para que los usuarios (y la construcción de perfiles de personas) puedan añadir su dominio de conceptos específicos a su lenguaje de modelado de forma fácil y ligera.   Figura1. Estereotipos UML
  • 8. Hasta cierto punto, los estereotipos pueden ser usados para indicar que algo está en una clase de entidad en su dominio conceptual del entorno. El uso de estos estereotipos puede aclarar el modelo de dominio a los expertos que tratan de construir o entender su sistema. Sin embargo, los estereotipos son más útiles cuando contienen valores especiales que se aplican (sólo) para ese tipo de estereotipo. La primera forma en que los estereotipos son personalizados es mediante la adición de lo que se denomina una etiqueta o valor de propiedad. Una etiqueta es un valor de propiedad par nombre-valor. Es común para identificar los tipos de valores especiales que se aplican a este estereotipo y no a otros, y para capturalos en el modelo.  
  • 9. El valor de la etiqueta muestra la definición del tipo de información añadida al estereotipo. Los valores reales de las instancias de todo el estereotipo (por ejemplo, usar clases basadas en el estereotipo) se añaden mediante la asignación o el uso de las restricciones marcadas en los valores anclados en el estereotipo.   Una restricción es una norma definida por el usuario o regla de la corrección. UML tiene muchas limitaciones en la definición del metamodelo, del uso legal de las clases, las asociaciones, y otros elementos del modelo. Sin embargo, estos son necesariamente generalizadas para que UML se puede utilizar para modelar sistemas en múltiples ámbitos. Una restricción es una forma en la que un usuario puede expresar una limitación que tiene sentido en el dominio de un elemento del modelo que se dibuja. La Figura2. muestra un uso típico de las restricciones y la combinación de valores etiquetados que se definen para el estereotipo.
  • 10. Por ejemplo, un estereotipo «Semáforo» podría tener un valor etiquetado llamado &quot;capacidad&quot;, que indica el número de usuarios activos de un recurso. En la figura, el valor de la etiqueta está explícitamente establecido en 1. Del mismo modo, un «MessageQueue» podría tener un valor etiquetado maxsize, una clase «activa» puede tener etiquetas como IsPeriodic, período, etc. Un nodo «processor» puede tener valores etiquetados como el tamaño de la memoria, la velocidad de la CPU, etc. Una restricción es la forma clásica para especificar valores concretos para las etiquetas que son válidos para un estereotipo. Las restricciones, como puede verse en la figura, normalmente se muestran en el interior de la nota y dentro de cajas de llaves para establecer fuera de ellos semántica sin comentarios. Figura2. Valores etiquetados y restricciones
  • 11. Teniendo en cuenta qué podemos utilizar para especificar las restricciones de los valores relacionados con las etiquetas, ¿cómo podemos definir las etiquetas? Hay dos maneras. La primera, se muestra en la Figura3., es utilizar una hoja de propiedades que muestra de una manera sensible al contexto, las etiquetas que están disponibles para un determinado estereotipo. La segunda, se muestra en la Figura4., es mostrar las etiquetas en un compartimento de la etiqueta «etiquetas». Cualquiera se puede utilizar, dependiendo de su herramienta de diseño UML y las preferencias personales.
  • 12. Un perfil es un metamodelo de dominio de interés particular, a través de un conjunto coherente de estereotipos UML, asociados con los valores etiquetados que se utilizan a través de restricciones, posiblemente acompañado de un modelo específico para la biblioteca de dominio (s) de interés. La limitación de esta definición es que todos los elementos de este metamodelo de dominio debe ser expresado en las MetaClases predefinidas de los estereotipos UML, tales como clase, de asociación, de nodo, componente, y así sucesivamente. A un perfil no se le permite &quot;romper&quot; la semántica de UML normal, no obstante, se permitirá subconjuntos de ella, éstos se especializan, y amplían, así como también se pueden añadir anotaciones, según sea necesario.  
  • 13. Figura3. Representación de Valores Etiquetados en hojas de propiedades Figura4. Representación de Valores Etiquetados con compartimientos especializados .
  • 14. La versión 2.0 de UML incluye varios mecanismos para extender y adaptar las metaclases de UML a las necesidades concretas de una plataforma como puede ser .NET o J2EE o de un dominio de aplicación Tiempo Real, modelado de procesos de negocio, etc. Actualmente ya hay definidos varios Perfiles UML, algunos de los cuales han sido incluso estandarizados por la OMG: los Perfiles UML para CORBA y para CCM (CORBA Component Model), el Perfil UML para EDOC (Enterprise Distributed Object Computing), el Perfil UML para EAI (Enterprise Application Integration), y el Perfil UML para Planificación, Prestaciones, y Tiempo (Scheduling, Performance, and Time). Muchos otros Perfiles UML se encuentran actualmente en proceso de definición y estandarización por parte de la OMG, y se espera que vean la luz muy pronto.
  • 15. UML 2.0 señala varias razones por las que un diseñador puede querer extender y adaptar un metamodelo existente, sea el del propio UML, el de CWM, o incluso el de otro Perfil: Disponer de una terminología y vocabulario propio de un dominio de aplicación o de una plataforma de implementación concreta. Definir una sintaxis para construcciones que no cuentan con una notación propia (como sucede con las acciones). Definir una nueva notación para símbolos ya existentes, más acorde con el dominio de la aplicación objetivo. Añadir cierta semántica que no aparece determinada de forma precisa en el metamodelo. Añadir restricciones a las existentes en el metamodelo, restringiendo su forma de utilización. Añadir información que puede ser útil a la hora de transformar el modelo a otros modelos, o a código.
  • 16. Un Perfil se define en un paquete UML, estereotipado «profile», que extiende a un metamodelo o a otro Perfil. Tres son los mecanismos que se utilizan para definir Perfiles: estereotipos ( stereotypes), restricciones (constraints), y valores etiquetados (tagged values). Para ilustrar estos conceptos utilizaremos un pequeño ejemplo de Perfil UML, que va a definir dos nuevos elementos que pueden ser añadidos a cualquier modelo UML: colores y pesos .
  • 17. En primer lugar, un estereotipo viene definido por un nombre, y por una serie de elementos del metamodelo sobre los que puede asociarse. Gráficamente, los estereotipos se definen dentro de cajas, estereotipadas «stereotype». Se puede observar cómo el Perfil especifica los elementos del metamodelo de UML sobre los que se pueden asociar los estereotipos estereotipados «metaclass», mediante flechas continuas de punta triangular en negrita. A los estereotipos es posible asociarles restricciones, que imponen condiciones sobre los elementos del metamodelo que han sido estereotipados. De esta forma pueden describirse, entre otras, las condiciones que ha de verificar un modelo “bien formado” de un sistema en un dominio de aplicación. Por ejemplo, supongamos que el metamodelo de el dominio de aplicación impone la restricción de que si dos o más clases están unidas por una asociación coloreada, el color de las clases debe coincidir con el de la asociación. context UML::InfrastructureLibrary::Core::Constructs::Association inv : self.isStereotyped(“Colored”) implies self.connection-> forAll (isStereotyped(“Colored”) implies color=self.color)
  • 18. Finalmente, un valor etiquetado es un meta-atributo adicional que se asocia a una metaclase del metamodelo extendido por un Perfil. Todo valor etiquetado ha de contar con un nombre y un tipo, y se asocia un determinado estereotipo. De esta forma, el estereotipo «Weighed» puede contar con un valor etiquetado denominado “weight”, de tipo Integer, y que indicará el peso de cada asociación que haya sido estereotipada como «Weighed». Los valores etiquetados se representan de forma gráfica como atributos de la clase que define el estereotipo. Es importante señalar que estos tres mecanismos de extensión no son de primer nivel, es decir, no permiten modificar metamodelos existentes, sólo añadirles elementos y restricciones, pero respetando su sintaxis y semántica original. Sin embargo, sí que son muy adecuados para particularizar un metamodelo para uno o varios dominios o plataformas existentes. Cada una de estas particularizaciones o adaptaciones viene definida por un Perfil, que agrupa los estereotipos, restricciones, y valores etiquetados propios de tal adaptación.
  • 19. También hay Perfiles UML definidos por otras organizaciones y empresas fabricantes de lenguajes de programación y herramientas que, aun no siendo estándares oficiales, están disponibles de forma pública y son comúnmente utilizados (convirtiéndose por tanto en estándares “de facto”). Un ejemplo de tales Perfiles es el “UML/EJB Mapping Specification”, que ha sido definido por JCP (Java Community Process). También se dispone de Perfiles UML para determinados lenguajes de programación, como pueden ser Java o C#. Cada uno de estos Perfiles define una forma concreta de usar UML en un entorno particular. Así por ejemplo, el Perfil UML para CORBA define una forma de usar UML para modelar interfaces y artefactos de CORBA, mientras que el Perfil UML para Java define una forma concreta de modelar código Java usando UML.
  • 20. La especificación de UML 2.0 [7] sólo se limita a definir el concepto de Perfil y sus contenidos. A la hora de definir un Perfil UML se deben seguir los siguientes pasos: Antes de comenzar, es preciso disponer de la correspondiente definición del metamodelo de la plataforma o dominio de aplicación a modelar con un Perfil. Si no existiese, entonces se debe definir dicho metamodelo utilizando los mecanismos del propio UML (clases, relaciones de herencia, asociaciones, etc.), de la forma usual como se haría si el objetivo no fuese definir un perfil UML. Si ya se dispone del metamodelo del dominio, se pasa a definir el Perfil. Dentro del paquete «profile» se incluye un estereotipo por cada uno de los elementos del metamodelo que se desea incluir en el Perfil. Estos estereotipos tendrán el mismo nombre que los elementos del metamodelo, estableciéndose de esta forma una relación entre el metamodelo y el Perfil.
  • 21. Es importante tener claro cuáles son los elementos del metamodelo de UML que se va a extender, sobre los que es posible aplicar un estereotipo. Ejemplo de tales elementos son las clases, sus asociaciones, sus atributos, las operaciones, las transiciones, los paquetes, etc. Definir como valores etiquetados de los elementos del Perfil los atributos que aparezcan en el metamodelo. Incluir la definición de sus tipos, y sus posibles valores iniciales. Definir las restricciones que forman parte del Perfil, a partir de las restricciones del dominio. Ejemplo: En primer lugar, se quiere modelar las conexiones entre los elementos de ciertos sistemas de información según la topología en estrella, donde los nodos centrales de cada estrella pueden estar conectados entre sí. En este dominio se definen nodos (Node), conectados a través de arcos que pueden ser: locales (LocalEdge) si conectan nodos de una misma estrella con su nodo central (MainNode), o bien remotos (Edge) si conectan nodos centrales entre sí. Cada nodo identifica su posición mediante una cadena de caracteres (location). Como restricción, se impone que todos los nodos de una misma estrella compartan una misma posición geográfica. El metamodelo que describe tal dominio de aplicación puede ser descrito en UML como sigue:
  • 22. A partir de este metamodelo, el Perfil UML que va a representar va a estar descrito como un paquete UML, estereotipado «profile»:
  • 23. Como puede observarse, dicho Perfil define cuatro estereotipos, correspondientes a las clases y asociaciones definidas en el metamodelo, así como las metaclases de UML sobre las que pueden aplicarse tales estereotipos. Las metaclases corresponden al metamodelo a ser extendido, en este caso al metamodelo de UML. El estereotipo Node tiene asociado además un valor etiquetado (location), de tipo String. Además de los estereotipos y los valores etiquetados, el tercer elemento de un Perfil lo constituyen las restricciones. En este caso, las restricciones del metamodelo se traducen en las siguientes restricciones del Perfil: context UML::InfrastructureLibrary::Core::Constructs::Class inv : -- Nodes should be locally connected to exactly one MainNode self.isStereotyped(“Node”) implies self.connection->select(isStereotyped(“LocalEdge”))-> size = 1 and self.connection-> select (isStereotyped(“Edge”))-> isEmpty context UML::InfrastructureLibrary::Core::Constructs::Association inv : self.isStereotyped(“LocalEdge”) implies self.connection-> select (participant.isStereotyped(“Node”) or participant.isStereotyped(“MainNode”) ) -> forAll (n1, n2 | n1.location = n2.location) inv : self.isStereotyped(“LocalEdge”) implies self.connection-> exists (participant.isStereotyped(“MainNode”) and multiplicity.min=1 and multiplicity.max=1) inv : self.isStereotyped(“Edge”) implies self.connection->select(participant.isStereotyped(“Node”))-> isEmpty and self.connection->select(participant.isStereotyped(“MainNode”) ) -> forAll(n1, n2 | n1.location <> n2.location)
  • 24. Es importante observar los contextos para los que se definen dichas restricciones, que son elementos del metamodelo de UML que estamos adaptando a nuestro modelo. De esta forma, estamos añadiendo restricciones semánticas sobre ellos. La gran ventaja del uso de Perfiles es que estas restricciones van a poder comprobarse en el modelo de un sistema final conforme a un Perfil, sobre aquellas asociaciones que han sido estereotipadas con los estereotipos de dicho Perfil. Una vez se ha definido un Perfil UML, la forma de utilizarlo en una aplicación concreta se representa mediante una relación de dependencia (estereotipada «apply») entre el paquete UML que contiene la aplicación, y los paquetes que definen los Perfiles UML que se desean utilizar. Ejemplo: el siguiente diagrama muestra una aplicación que hace uso de los dos Perfiles UML que se han definido con anterioridad.
  • 25. La versión de UML actualmente estandarizada y soportada por herramientas comerciales es la 1.5. Sin embargo, la nueva versión 2.0 está definida y en proceso de adopción como estándar de OMG. Esta nueva versión es mucho más completa y ofrece numerosas ventajas respecto a la 1.5, mejorando muchas de sus limitaciones. las herramientas actuales permiten definir y usar Perfiles UML únicamente de forma gráfica sin que aún soporten de forma adecuada la verificación de restricciones asociadas a estereotipos. Por lo tanto, un usuario que especifique un sistema a partir de un Perfil UML creado con una herramienta dada, no podrá estar completamente seguro de si su sistema es consistente con dicho perfil. Nos toca esperar que surjan herramientas que permitan definir Perfiles UML de acuerdo a la versión 2.0 y que permitan verificar las restricciones asociadas a los perfiles, gestionando de forma adecuada la definición de nuevos estereotipos y etiquetas. Igualmente estas herramientas deberían promover la definición y uso de perfiles UML como una buena práctica para la especificación e implementación de sistemas.