Perfil de UML 2.0 para servicios de software

Por Simon Johnston, arquitecto, IBM Corporation.

Resumen

Este documento describe un perfil de UML para servicios de software, un perfil para UML 2.0 que permite la modelación de los servicios, SOA y soluciones orientadas a servicios. El objetivo del perfil es proporcionar un lenguaje común para describir servicios que cubra un gran número de actividades a través del ciclo vital de desarrollo y también proporcione vistas a los distintos interesados. Así, por ejemplo, el perfil proporciona funciones para que el arquitecto correlacione los servicios pronto en el ciclo vital usando particiones lógicas para describir toda la cartera de servicios de la empresa. Esta vista es detallada posteriormente por los diseñadores que desarrollan especificaciones de servicio, tanto estructurales como de comportamiento, que actúen como los contrastes entre los clientes de servicio y los implementadores. La vista de mensaje ofrece la posibilidad de que los diseñadores reutilicen los modelos de información para definiciones de datos de servicios comunes.

El perfil se ha implementado en Rational Software Architect y se utiliza correctamente en modelos de desarrollo de escenarios de cliente complejos y también en educar a las personas en los problemas relevantes del desarrollo de soluciones orientadas a servicios.

Visión general del perfil de UML para servicios de software

Modelo conceptual

El siguiente diagrama es un modelo que muestra los conceptos importantes en el modelado de servicios. Como puede observarse, el número de conceptos es relativamente pequeño y debería resultar relativamente familiar a cualquiera que haya trabajado con soluciones orientadas a servicios. Observe, no obstante, que aunque el perfil es una realización de este modelo, un determinado número de los conceptos no son estereotipos explícitos del perfil. Por ejemplo, no existe ningún estereotipo para operación o para protocolo ya que existen nociones en UML 2.0 que el perfil reutiliza sin ninguna ambigüedad ni restricción.

El diagrama se describe en el contenido textual.

Subconjunto identificado de UML 2.0

En la siguiente tabla se enumeran los elementos del metamodelo de UML 2.0 que se usan como metaclases para estereotipos del perfil de UML.

Metaclase de UML 2.0 Estereotipos
Clase Mensaje, Partición de servicio, Proveedor de servicio
Clasificador Cliente del servicio
Colaboración Colaboración de servicio
Conector Canal de servicio
Interfaz Especificación de servicio
Puerto Servicio, Pasarela de servicio
Propiedad Accesorio de mensaje

El propio perfil

El siguiente diagrama (pulsable) es un diagrama de perfil de UML 2.0, demuestra los detalles reales del perfil con cada estereotipo, sus metaclases usando la notación de extensión (cabeza de flecha llena). También puede ver algunas restricciones de este modelo, en especial aquellas correstricciones entre elementos de perfil.

El diagrama se describe en el contenido textual.

Mensaje Partición de servicio Proveedor de servicios Servicio Pasarela de servicio Accesorio de mensaje Cliente de servicio Colaboración de servicio Canal de servicio Especificación de servicio

Las siguientes secciones describen los elementos del perfil de UML 2.0 tal como está definido actualmente. Cada sección describe un estereotipo individual; los detalles de cada uno de ellos especifica sus metaclases, propiedades y las restricciones que deberían aplicarse cuando se usa el perfil.

Mensaje de estereotipo

Ampliaciones

Clase

Semántica

Un mensaje representa el concepto tal como se definió en la especificación WSDL, por ejemplo, un contenedor para datos reales que tiene significado para el servicio y el cliente. Un mensaje puede no tener operaciones, puede tener propiedades y asociaciones con otras clases (uno asume clases de algún modelo de dominio). Un estereotipo de mensaje tiene una propiedad para denotar su formato de codificación (por ejemplo, SOAP-literal, SOAP-rpc, ASN.1, etc.).

El uso de este elemento puede ser opcional en una herramienta por dos razones. En primer lugar, el modelador puede simplemente desear usar elementos de un modelo de dominio directamente como los parámetros de una operación en lugar de especificar un mensaje. En segundo lugar, el modelador puede desear utilizar la convención de especificar un conjunto de mensajes de entrada y de salida en una operación, en cuyo caso la herramienta de modelado debería construir un mensaje de entrada y salida que coincidiese con los parámetros al generar descripciones de servicios en WSDL.

Propiedades

Tipo Nombre Tipo Descripción
Propiedad codificación Serie Indica el mecanismo de codificación de la plataforma que debe utilizarse a la hora de generar el esquema para el mensaje; los ejemplos podrían ser SOAP-RPC, Doc-Literal, ASN.1, etc.

Notación

Notación del mensaje

Restricciones

estereotipo Accesorio de mensaje

Ampliaciones

Propiedad

Semántica

Este estereotipo se usa para indicar que algún componente de un mensaje es un accesorio del mismo (lo contrario de una parte directa del propio mensaje). En general, éste probablemente no se utilice mucho en las actividades de diseño de nivel superior, pero en muchos procesos es importante diferenciar los datos adjuntados de los datos del mensaje incrustados. Por ejemplo, un servicio de catálogo puede devolver detalles generales de producto como parte del mensaje estructurado pero las imágenes como accesorios del mensaje; esto también nos permite indicar que la codificación de las imágenes es binaria (al contrario que la codificación textual del mensaje principal).

Propiedades

Tipo Nombre Tipo Descripción
Propiedad codificación Serie Indica el mecanismo de codificación de la plataforma que debe utilizarse a la hora de generar el esquema para el mensaje; los ejemplos podrían ser SOAP-RPC, Doc-Literal, ASN.1, etc.

Notación

Notación de accesorio de mensaje

Restricciones

estereotipo Servicio

Ampliaciones

Puerto

Semántica

El elemento de modelo de servicio proporciona el punto final de interacción de servicio (en terminología de servicio web) ya que la definición de estas interacciones forman parte de la especificación de servicio. En el modelo, un servicio no sólo identifica la interfaz proporcionada sino también las interfaces necesarias (caso de las interfaces de devolución de llamadas). Un servicio tiene una propiedad adicional que indica el vínculo que vaya a usarse, caso de SOAP-HTTP, SOAP-JMS, etc.

Propiedades

Ninguna.

Notación

Notación de servicio

Restricciones

estereotipo Canal de servicio

Ampliaciones

Conector

Semántica

Un canal representa la vía de acceso de comunicación entre dos servicios. Es importante observar que la interacción se puede producir a través de un canal, pero el canal no representará ninguna interacción particular. En el mundo de los servicios web, cada servicio indica los vínculos asociados con él (para que un cliente pueda tener acceso a él). En un perfil de modelado, se indica el vínculo en la comunicación entre servicios o entre un servicio y los clientes. De esta forma, puede ser flexible en la comprensión de los requisitos de vinculación.

Propiedades

Tipo Nombre Tipo Descripción
Propiedad vinculación Serie Indica el mecanismo de vinculación de plataformas que se vaya a usar en la generación de vínculos de servicio en WSDL; los ejemplos pueden ser SOAP-RPC, SOAP-Doc, HTTP-Get, etc.

Notación

Notación de canal de servicio

Restricciones

estereotipo Colaboración de servicio

Colaboración

Ampliaciones

Semántica

Una colaboración de servicio es una forma de especificar la implementación de un servicio como colaboración de otros servicios. Desde el punto de vista de los servicios web esto corresponde al uso de BPEL4WS en la especificación de la implementación de servicios. De ahí que esto signifique que una colaboración de servicio se use como comportamiento de un servicio y, si con ello se pretende generar un lenguaje como BPEL, puede tener otras restricciones específicas de la implementación.

Propiedades

Tipo Nombre Tipo Descripción
Propiedad Vínculo Serie Indica el mecanismo de vinculación de plataformas que se vaya a utilizar en la generación de la colaboración como coreografía de procesos; ejemplos pueden ser "BPEL", "WSFL", etc.

Notación

Notación de colaboración de servicios

Restricciones

estereotipo Cliente de servicio

Clasificador

Ampliaciones

Semántica

Cualquier clasificador (clase, componente, ...) puede actuar como cliente de un servicio, e incluir otro servicio. Aunque este estereotipo sea definitivamente más opcional puede ser útil en la identificación de elementos de un modelo (que no sean ellos mismos servicios) como los clientes de servicios. Por otro lado puede ser una carga y no usarse.

Propiedades

Ninguna.

Notación

Notación de cliente de servicio

Restricciones

Ninguna.

estereotipo Pasarela de servicio

Ampliaciones

Puerto

Semántica

Una pasarela de servicio se parece a un servicio pero sólo está disponible para uso en particiones y no en proveedores de servicios. Una pasarela actúa como un servicio proxy y se puede usar para mediar protocolos o indicar la interfaz disponible para una partición. Por ejemplo, podríamos indicar que aunque un determinado número de servicios se implementan dentro de una partición, sólo algunos están disponibles para uso fuera de la partición y por lo tanto se proporcionan pasarelas para estos servicios. Esto impide que otros servicios o particiones se comuniquen con los servicios que no estén expuestos a través de pasarelas.

Propiedades

Ninguna.

Notación

Notación de pasarela de servicio

Restricciones

estereotipo Partición de servicio

Ampliaciones

Clase

Semántica

Una partición representa un límite lógico o físico del sistema. Es opcional modelar particiones pero es útil. Por ejemplo, las particiones podrían usarse para representar niveles web, empresariales o de datos de una aplicación de nivel n tradicional. Las particiones podrían también usarse para indicar más fronteras físicas (como, por ejemplo, mi centro de datos principal, mi sitio secundario, mi sitio de clientes, socios, etc.) en cuyo caso el cruce de particiones podría tener restricciones especiales de seguridad, protocolos permitidos, ancho de banda, etc.

Una partición sólo puede tener propiedades que representen a las partes anidadas, sean servicios u otras particiones. Observe que ésta es una restricción (ningún otro elemento puede actualmente representarse en una partición).

Una partición también tiene la noción de ser "estricta", si una partición indica que toda la comunicación entre ella y las demás particiones debe dirigirse a través de pasarelas clasificadas entonces se dirá que es una partición estricta.

Propiedades

Tipo Nombre Tipo Descripción
Propiedad Clasificador Serie Un nombre de clasificación, para indicar el ámbito de espacio de nombres de esta partición.

Notación

Notación de particiones de servicio

Restricciones

estereotipo Proveedor de servicios

Ampliaciones

Clase

Semántica

El proveedor de servicios es un elemento de software que proporciona uno o más servicios. En términos de modelado uno debería esperar ver un componente UML aquí, sin embargo tal restricción parece arbitraria y por lo tanto la metaclase se anota como clase, para mayor flexibilidad. Un proveedor de servicios tiene una propiedad que captura información acerca de su ubicación aunque el significado de esto sea dependiente de implementación. La clase que actúa como proveedor de servicios puede no exponer atributos u operaciones directamente, sólo se pueden proporcionar puertos públicos (estereotipados como servicio) y éstos se clasifican mediante especificaciones de servicios.

La propiedad de la ubicación, aunque la implementación/plataforma sea útil a la hora de generar nombres de punto final de servicios. Por ejemplo, con WSDL la ubicación puede ser http://svc.myco.com/ y un servicio puede llamarse CustInfo, en cuyo caso el nombre de punto final para el servicio podría generarse como http://svc.myco.com/CustInfo.

Propiedades

Tipo Nombre Tipo Descripción
Propiedad Vínculos permitidos Serie Indica el mecanismo de vinculación de plataformas permitido que un canal puede utilizar en la conexión con el servicio; ejemplos podrían ser SOAP-RPC, SOAP-Doc, HTTP-Get, etc.
Propiedad ubicación Serie La ubicación del proveedor puede ser usada por los generadores para crear nombres de punto final.

Notación

Notación de proveedor de servicios

Restricciones

estereotipo Especificación de servicio

Ampliaciones

Interfaz

Semántica

El uso de una interfaz indica un conjunto de operaciones proporcionadas por un servicio. Observe que un servicio puede implementar más de una interfaz. Mediante convención se puede adjuntar una máquina de estado de protocolo o de colaboración UML 2.0 a dicha especificación para indicar el orden de invocación de operaciones en una especificación de servicio. Con tal especificación de comportamiento cualquier servicio de implementación puede validarse no sólo frente a una especificación estática sino también frente a una dinámica de su estructura y comportamiento. Observe que la especificación de servicio sólo puede proporcionar operaciones públicas.

Propiedades

Tipo Nombre Tipo Descripción
Propiedad publicadas Booleana Esta propiedad indica si el servicio se presupone que va a publicarse en un repositorio de servicio; se trata de una noción diferente de la propiedad pública/privada proporcionada por UML.

Notación

Notación de especificación de servicio

Restricciones

© Copyright IBM Corp. 2005. Reservados todos los derechos.