• No results found

1 INNLEDNING

1.2 Kunnskap på feltet

O SoaML (em inglês Service Oriented Architecture Modeling Language) (OMG, 2009b) é um perfil da UML (OMG, 2005) para modelagem de serviços e arquiteturas orientadas a serviço. Esse perfil possui um padrão independente de tecnologia para criação, comunicação, manutenção e aperfeiçoamento de uma arquitetura orientada a serviços, sendo esse um dos seus pontos fortes juntamente com a capacidade de modelagem de arquiteturas orientadas a serviços em diferentes níveis, desde o de negócios, passando pelo de sistemas e até o de subsistemas.

Serviço é definido pelo SoaML como fornecido ou consumido por uma entidade denominada participante e é especificado por meio de interfaces de serviço que definem protocolos de interação e comunicação (OMG, 2009b).

O meta-modelo do perfil SoaML estende o meta-modelo da UML 2.0 com o objetivo de apoiar a modelagem de serviços sob perspectivas como descrição de

serviço, modelagem de arquitetura orientada a serviços e definição de contrato de serviço. Quatro novas áreas são adicionadas: participantes, interface de serviços, contrato de serviço e dados de serviço. Participantes permitem definir provedores e consumidores de serviço, representando componentes, sistemas, pessoas ou empresas. Interfaces de serviço permitem especificar a forma de interação com um serviço, por meio da definição da interface, e estabelecer responsabilidades de um participante ao fornecer ou consumir um serviço. Contratos de serviço especificam o acordo entre provedores e consumidores de um serviço em relação aos termos, condições, interfaces e interações para que o serviço possa ser fornecido ou utilizado. Dados de serviços permitem modelar mensagens e anexos de mensagens envolvidas na interação entre provedor e consumidor de serviços.

Na Figura 2.9 estão representados os elementos do perfil SoaML utilizados para modelagem de participantes e interfaces de serviço. Um elemento <<Participant>> pode representar um provedor de serviços, um consumidor de serviços ou ambos. Um participante atuando como provedor de serviços possui um elemento port da UML 2.0 com o estereótipo <<ServicePoint>> que define o ponto de interação pelo qual um serviço é fornecido. Se o participante é um consumidor de serviços, possui um elemento port com o estereótipo <<RequestPoint>> para representar a necessidade de “consumir” um serviço fornecido por outro participante. Os estereótipos <<ServicePoint>> e <<RequestPoint>> associam uma interface UML (<<Interface>>) ou uma interface de serviço (<<ServiceInterface>>) que define todas as informações necessárias para interagir com o serviço.

Um exemplo de modelagem de um serviço de empréstimos de exemplares em uma biblioteca é apresentado na Figura 2.10. Nesse exemplo, as funções do serviço são fornecidas pelo participante “Setor de empréstimos” por meio da interface de serviço “EmprestimoServices”. Um elemento port com o estereótipo <<ServicePoint>> ligado ao participante especifica a interface pela qual as funcionalidades devem ser invocadas.

Figura 2.9: Elementos básicos do perfil SoaML (OMG, 2009b).

Figura 2.10: Exemplo de modelagem de participante e interface.

No perfil SoaML, um contrato de serviço é modelado utilizando-se o elemento <<ServiceContract>>, que posteriormente pode ser realizado por elementos como participantes, interfaces de serviço, <<RequestPoint>> e <<ServicePoint>>. A definição do meta-modelo desse elemento é apresentada na Figura 2.11.

Figura 2.11: Definição do elemento ServiceContract (OMG, 2009b).

SoaML possui dois estereótipos para modelagem de dados: <<Attachment>> e <<MessageType>>, mostrados na Figura 2.12. O estereótipo <<MessageType>> é usado para identificar dados (mensagens) que trafegam em interações com um serviço, enquanto o estereótipo <<Attachment>> é usado para representar elementos de dados que possuem significado fora do contexto da interação com um serviço (por exemplo, documentos de texto, imagens).

Figura 2.12: Elementos <<Attachment>> e <<MessageType>> (OMG, 2009b).

O meta-modelo do perfil SoaML também contempla modelagem em nível de negócios, por meio da utilização do elemento <<ServicesArchitecture>> para representar arquiteturas orientadas a serviços compostas por vários participantes que fornecem e utilizam serviços para atingir os objetivos de negócio ou executar processos. A definição do elemento <<ServicesArchitecture>> é mostrada na Figura 2.13.

Figura 2.13: Definição do elemento <<ServicesArchitecture>> (OMG, 2009b).

Um serviço pode ser modelado com SoaML por meio da representação de suas funções utilizando o elemento <<Capability>>. Uma rede de funções com suas respectivas dependências pode ser construída para representar as necessidades e interações requeridas para o fornecimento da funcionalidade do serviço. Na Figura 2.14 observa-se a capability “Realizar novo empréstimo” que utiliza outras quatro capabilities: “Cadastro de usuários”, “Reservas”, “Políticas de empréstimos” e “Empréstimos”. Nesse exemplo o participante “Setor de empréstimos” realiza a capability “Realizar novo empréstimo”, indicando que as funções dessa capability serão realizadas por este participante.

Na Tabela 2.4 são listados os estereótipos pertencentes ao perfil SoaML juntamente com uma breve descrição para cada um deles.

Tabela 2.4: Estereótipos do perfil SoaML (OMG, 2009b). Estereótipo Descrição

<<Participant>> Representa uma entidade ou componente que fornece e/ou consome serviços.

<<Agent>> Representa entidades autônomas que possuem necessidades e capability que podem mudar ao longo do tempo.

<<MessageType>> Especifica informações trocadas entre consumidores e provedores de serviço.

<<Attachment>> Representa um elemento de dados anexado a uma mensagem (um documento de texto, arquivo de imagem).

<<Capability>> Representa um conjunto coeso de funções fornecidas por um serviço.

<<Port>> Representa pontos de interação com o serviço podendo indicar fornecimento ou consumo de funções.

<<Milestone>> Informações complementares que permitem detalhar o comportamento ou fluxo de atividades.

<<ParticipantArchitecture>> Descreve as interações dos participantes envolvidos no fornecimento de um serviço.

<<Property>> Permite identificar instâncias de um tipo.

<<RequestPoint>> Representa a utilização de um serviço por um participante. Define o ponto de conexão entre consumidor e provedor de serviços.

<<ServicePoint>> Representa o ponto de conexão pelo qual um provedor de serviços oferece suas funções.

<<ServiceChannel>> Utilizado para conectar requisições de um consumidor ao serviço fornecido por um provedor.

<<ServiceContract>> Especifica o acordo de serviço entre provedores e consumidores de serviço quanto ao fluxo de informações, produtos, recursos, custos e obrigações.

<<ServiceInterface>> Define a interface e responsabilidades de um participante ao consumir ou fornecer um serviço.

<<ServicesArchitecture>> Permite representar uma visão geral da arquitetura orientada a serviços, com a descrição dos participantes que colaboram para fornecer uma funcionalidade de negócio.