Por Simon Johnston, Arquiteto, IBM Corporation.
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.
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.
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 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.
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.
Classe
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.
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.
|
Propriedade
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).
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.
|
Porta
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.
Nenhuma.
Conector
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.
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. |
Colaboração
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.
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. |
Classificador
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.
Nenhum.
Nenhum.
Porta
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.
Nenhum.
Classe
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.
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. |
Classe
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
.
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. |
Interface
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.
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. |