Perfil UML 2.0 para Serviços de Software

Por Simon Johnston, Arquiteto, IBM Corporation.

Resumo

Esse documento descreve o Perfil UML para Serviços de Software, um perfil para UML 2.0 que permite a modelagem de serviços, SOA e soluções orientadas ao serviço. O objetivo do perfil e fornecer uma linguagem comum para descrever serviços que cobrem muitas atividades por meio do desenvolvimento de ciclo de vida e também fornece visualizações para diferentes. Assim, por exemplo, o portfolio fornece capacidades para o arquiteto mapear os serviços antecipadamente no ciclo de vida utilizando partições lógicas para descrever todo o portfolio de serviço corporativo. Essa visualização é mais detalhada pelos designers que desenvolvem as especificações estruturais e de serviço de comportamento que atuam como contratos entre os clientes do serviço e os implementadores. A visualização da mensagem oferece a capacidade aos designers de reutilizarem os modelos de informações para definições de dados de serviços comuns.

O perfil foi implementado na RSA (Rational Software Architect) e utilizado com sucesso no desenvolvimento de modelos para cenários de clientes complexos e também na educação de pessoas sobre as preocupações relevantes no desenvolvimento de soluções orientadas a serviços.

Visão Geral do Perfil UML para Serviços de Software

Modelo Conceitual

O diagrama seguir é um modelo mostrando os conceitos importantes nos serviços de modelagem. Como você pode ver, o número de conceitos é relativamente pequeno e deve ser familiar a qualquer pessoa que tenha trabalhado em soluções orientadas a serviços. Observe, entretanto, que embora o perfil seja uma realização deste modelo, vários conceitos não são estereótipos explícitos no perfil Por exemplo, não há estereótipo para operação ou para protocolo como essas noções existentes no UML 2.0 que o perfil reutiliza sem nenhuma ambigüidade ou maiores restrições.

O diagrama está descrito no conteúdo textual.

Subconjunto Identificado de UML 2.0

A tabela a seguir relaciona os elementos do modelo de meta UML 2.0 que são utilizados como classes de meta para estereótipos no perfil UML.

Classe de Meta UML 2.0 Estereótipos
Classe Mensagem, Partição de Serviço, Fornecedor de Serviço
Classificador Consumidor de Serviço
Colaboração Colaboração de Serviço
Conector Canal de Serviço
Interface Especificação de Serviço
Porta Serviço, Gateway de Serviço
Propriedade Conexão da Mensagem

O Perfil Em Si

O diagrama a seguir (clicável) é um diagrama de perfil do UML 2.0, ele demonstra os detalhes reais do perfil com cada estereótipo, sua classe meta utilizando a notação de extensão (preenchida com ponta de seta). Você também pode ver algumas restrições no modelo, particularmente aquelas co-restrições entre os elementos do perfil.

Diagrama está descrito no conteúdo textual.

Mensagem Partição de Serviço Fornecedor de Serviço Serviço Gateway de Serviço Conexão da Mensagem Consumidor do Serviço Colaboração do Serviço Canal do Serviço Especificação do Serviço

As seções a seguir destacam os elementos no perfil UML 2.0 como está atualmente definido. Cada seção destaca um estereótipo individual; os detalhes de cada um especificam sua classe meta, propriedades e algumas restrições que devem ser aplicadas ao usar o perfil.

Mensagem do estereótipo

Extensões

Classe

Semântica

Uma mensagem representa o conceito como definido na especificação WSDL, isto é, um contêiner para dados reais que tem sentido para o serviço e para o consumidor. Uma mensagem não pode ter operações, ela precisa ter propriedades e associações a outras classes (supõe-se classes de algum modelo de domínio). Um estereótipo de mensagem possui uma propriedade para indicar seu formulário de codificação assumida (isto é, SOAP-literal, SOAP-rpc, ASN.1, etc.).

O uso deste elemento pode ser opcional em uma ferramenta por dois motivos. Primeiro, o modelador pode simplesmente desejar usar elementos de um modelo de domínio diretamente como os parâmetros para uma operação em vez de especificar uma mensagem. Segundo, o modelador pode desejar usar a conversão de especificar um conjunto de mensagens de entrada e saída em uma operação, nesse caso a ferramenta de modelagem precisa construir uma mensagem de entrada e saída que combine os parâmetros quando gerar as descrições do serviço em WSDL.

Propriedades

Tipo Nome Tipo Descrição
Propriedade codificação Cadeia Representa o mecanismo de codificação da plataforma para usar ao gerar o esquema das mensagens; exemplos podem ser SOAP-RPC, Doc-Literal, ASN.1, e assim por diante.

Notação

Notação da mensagem

Restrições

Conexão da Mensagem de estereótipo

Extensões

Propriedade

Semântica

Este estereótipo é utilizado para indicar que algum componente de uma mensagem é uma conexão para ele (em oposição a a uma parte direta da própria mensagem). Em geral isso não é provável em atividades de design de níveis mais altos, mas para muitos dados conectados em processos é importante diferenciar dos dados embutidos na mensagem. Por exemplo, um serviço de catálogo pode retornar detalhes de produto em geral como uma parte da mensagem estruturada mas imagens como conexões à mensagem; isso também nos permite indicar que a codificação das imagens é binária (em oposição à codificação textual da mensagem principal).

Propriedades

Tipo Nome Tipo Descrição
Propriedade Codificação Cadeia Representa o mecanismo de codificação da plataforma para usar ao gerar o esquema das mensagens; exemplos podem ser SOAP-RPC, Doc-Literal, ASN.1, e assim por diante.

Notação

Notação de Conexão de Mensagem

Restrições

Serviço de estereótipo

Extensões

Porta

Semântica

O elemento do modelo de serviço fornece o nó de extremidade para interação do serviço (na terminologia de serviços da Web), enquanto que a definição dessas iterações é parte da especificação do serviço. No modelo um serviço não apenas identifica a interface fornecida, mas também pode identificar as interfaces requeridas (como as interfaces de retorno de chamada). Um serviço possui uma propriedade adicional que indica a ligação a ser utilizada, como SOAP-HTTP, SOAP-JMS, e assim por diante.

Propriedades

Nenhuma.

Notação

Notação de Serviço

Restrições

Canal de Serviço de estereótipo

Extensões

Conector

Semântica

Um canal representa o caminho de comunicação entre dois serviços. É importante observar que a interação pode ocorrer sobre um canal, mas o canal não representa nenhuma interação em particular. No mundo de serviços da Web, cada serviço representa a(s) ligação(ões) associada(s) a ele (de forma que um cliente pode acessá-lo). Em um perfil de modelagem, você indica a ligação tanto na comunicação entre serviços como entre um serviço e um consumidor. Dessa forma, é possível ser flexível ao compreender os requisitos de ligação.

Propriedades

Tipo Nome Tipo Descrição
Propriedade ligação Cadeia Representa o mecanismo de ligação da plataforma a ser utilizado para gerar a ligação de serviço em WSDL; exemplo podem ser SOAP-RPC, SOAP-Doc, HTTP-Get, e assim por diante.

Notação

Notação de Canal de Serviço

Restrições

Colaboração de Serviço de estereótipo

Colaboração

Extensões

Semântica

Uma colaboração de serviço é uma forma de especificar a implementação de um serviço como uma colaboração de outros serviços. A partir do ponto de vista de um serviço da Web isso corresponde ao uso de BPEL4WS ao especificar a implementação do serviço. Assim, isso significa que uma colaboração de serviço é utilizada como o comportamento de um serviço e, se for intenção gerar para uma linguagem como BPEL -- deve ter outras restrições específicas à implementação.

Propriedades

Tipo Nome Tipo Descrição
Propriedade Ligação Cadeia Representa o mecanismo de ligação da plataforma a ser utilizado para gerar a colaboração como uma coreografia de processo; exemplo podem ser "BPEL", "WSFL", etc.

Notação

Notação de Colaboração de Serviço

Restrições

Consumidor de Serviço de estereótipo

Classificador

Extensões

Semântica

Qualquer classificador (classe, componente, ...) pode atuar como o consumidor de um serviço, e que inclui outro serviço. Enquanto esse estereótipo é quanto muito definitivamente opcional, ele pode ser útil para identificar elementos de um modelo -- que não são serviços em si -- como clientes de serviços. Por outro lado ele pode ter código extra e não ser utilizado.

Propriedades

Nenhum.

Notação

Notação de Consumidor de Serviço

Restrições

Nenhum.

Gateway de Serviço de estereótipo

Extensões

Porta

Semântica

Um gateway de serviço se parece com um serviço mas é apenas disponível para uso em partições e não em fornecedores de serviços. Um gateway atua como um serviço de proxy e pode ser utilizado para mediar protocolos ou indicar a interface disponível para uma partição. Por exemplo, podemos indicar que embora alguns serviços estejam implementados dentro de uma partição -- apenas alguns são disponíveis para uso fora da partição, e portanto gateways são fornecidos para esses serviços. Isso impede que outros serviços ou partições comuniquem aos serviços que não são expostos gateways.

Propriedades

Nenhum.

Notação

Notação de Gateway de Serviço

Restrições

Partição de Serviços de estereótipo

Extensões

Classe

Semântica

Uma partição representa algum limite lógico ou físico do sistema. É opcional modelar partições mas é útil. Por exemplo, as partições podem ser utilizadas para representar a Web, negócios e camadas de negócios de um aplicativo n-tier tradicional. As parições também pode ser utilizadas para indicar limites mais físicos (como meu centro de dados primários, local secundário, local do cliente, parceiros e assim por diante), nesse caso a passagem pelas partições pode ter algumas restrições de segurança, protocolos permitidos, largura da banda e assim por diante.

Uma partição só pode ter propriedades que representam partes aninhadas, sendo serviços ou outras partições. Observe que essa é uma restrição - nenhum outro elemento pode atualmente ser representado em uma partição.

Uma partição também possui a noção de ser "restrita", se uma partição indica que toda a comunicação entre ela e outras partições deve ser direcionada através de gateways digitados, então ela é uma partição restrita.

Propriedades

Tipo Nome Tipo Descrição
Propriedade Classificador Cadeia Um nome de classificação, para indicar o escopo de espaço de nomes dessa partição.

Notação

Notação de Partição de Serviço

Restrições

Fornecedor de Serviços de estereótipo

Extensões

Classe

Semântica

O Fornecedor de Serviços é um elemento de software que fornece um ou mais serviços. Em termos de modelagem pode-se esperar ver um componente UML aqui, entretanto como uma restrição parece ser arbitrária e portanto a metaclasse é indicada como Classe para dar maior flexibilidade. Um fornecedor de serviços possui uma propriedade que captura informações sobre seu local, embora o significado disso depende da implementação. A Classe que atua como o fornecedor de serviços não pode expor nenhum atributo ou operação diretamente, apenas portas públicas podem ser fornecidas (estereótipo como serviço) e são digitados pelas especificações de serviço.

A propriedade do local, enquanto implementação/plataforma específica é útil para gerar nomes de nó de extremidade de serviço de serviços. Por exemplo, com WSDL o local pode ser http://svc.myco.com/ e um serviço pode ser chamado de CustInfo, nesse caso o nome do nó de extremidade para o serviço pode ser gerado como http://svc.myco.com/CustInfo.

Propriedades

Tipo Nome Tipo Descrição
Propriedade allowedBindings Cadeia Representa o mecanismo de ligação da plataforma permitido que um canal pode usar na conexão ao serviço; exemplos podem ser SOAP-RPC, SOAP-Doc, HTTP-Get, e assim por diante.
Propriedade local Cadeia O local do provedor, pode ser utilizado por geradores para criar nomes de nó de extremidade.

Notação

Notação de fornecedor de serviços

Restrições

Especificação de Serviço de estereótipo

Extensões

Interface

Semântica

O uso de uma interface indica um conjunto de operações fornecidas por um serviço. Observe que um serviço pode implementar mais de uma interface. Por convenção, é possível conectar uma máquina de estado de protocolo ou UML 2.0 Collaboration para esse tipo de especificar indicar a ordem de chamada das operações em uma especificação de serviço. Com esse tipo de especificação de comportamento, qualquer serviço implementado pode ser validado contra não apenas uma especificação estática mas também dinâmica de sua estrutura e comportamento. Observe que a especificação de serviço só pode fornecer operações públicas.

Propriedades

Tipo Nome Tipo Descrição
Propriedade publicado Booleano Essa propriedade indica se o serviço é assumido para ser publicado em um repositório de serviço; essa é uma noção diferente da propriedade pública/privada fornecida pelo UML.

Notação

Notação de Especificação de Serviço

Restrições

©Copyright da IBM Corp. 2005. Todos os Direitos Reservados.