Transformação de Serviços Sensíveis ao Contexto para ... · contexto físico e computacional de...

13
 Transformação de Serviços Sensíveis ao Contexto para Serviços Web Usando o Padrão MOF QVT Cléver Ricardo Guareis de Farias  Departamento de Física e Matemática – Faculdade de Filosofia Ciências e Letras de Ribeirão Preto (FFCLRP) – Universidade de São Paulo (USP) Av. Bandeirantes, 3900 CEP 14040-901  Ribeirão Preto (SP) [email protected] Abstract� Model driven engineering is increasingly attracting interest in the research community, due to its applicability in different application domains. This paper discusses how MDA technology (metamodelling and the QVT standard) can support the transformation of high-level models of context- aware services onto the implementation of these services using web services.  Resumo� O desenvolvimento baseado em modelos tem se apresentado como uma abordagem promissora para o desenvolvimento de sistemas em diferentes domínios de aplicação. Neste sentido, este artigo discute a transformação de modelos de aplicações móveis sensíveis ao contexto independentes de plataforma em modelos de serviços web usando o padrão MOF QVT.  1. Introdução Aplicações sensíveis ao contexto caracterizam-se pelo uso de informações sobre o contexto físico e computacional de seus usuários nas tomadas de decisões, de modo a produzir serviços mais flexíveis, adaptáveis, ricos em funcionalidade e centrados no usuário. Neste sentido, as aplicações sensíveis ao contexto são programadas para reagir e explorar as mudanças de contexto dentro de um domínio dinâmico.  O desenvolvimento dessas aplicações implica a superação de vários desafios teóricos e tecnológicos, e requer a existência de uma infra-estrutura de suporte adequada ao seu projeto e execução, particularmente para apoio à manipulação de modelos de contextos diversos, provenientes de ambientes altamente distribuídos, heterogêneos e em constantes mudanças. Nesse sentido, tem-se presenciado um grande esforço e o surgimento de várias pesquisas relacionadas à construção de plataformas de serviços com suporte à execução dessas aplicações [Dockhorn Costa et al. 2005]. Com o intuito de acelerar o desenvolvimento de aplicações sensíveis ao contexto, devemos prover um suporte adequado à transformação de modelos de contexto e o conjunto de serviços que fazem uso destes modelos. De forma específica, queremos prover suporte à transformação de modelos de serviços móveis sensíveis ao contexto na implementação destes serviços através de serviços web, usando a abordagem Model- Driven Architecture (MDA) [OMG 2003]. Third Workshop on Ontologies and Metamodeling in Software and Data Engineering - WOMSDE 2008 119

Transcript of Transformação de Serviços Sensíveis ao Contexto para ... · contexto físico e computacional de...

  

Transformação de Serviços Sensíveis ao Contexto para 

Serviços Web Usando o Padrão MOF QVT 

Cléver Ricardo Guareis de Farias  

Departamento de Física e Matemática – Faculdade de Filosofia Ciências e Letras de 

Ribeirão Preto (FFCLRP) – Universidade de São Paulo (USP) 

Av. Bandeirantes, 3900 

CEP 14040-901 − Ribeirão Preto (SP) 

[email protected]

Abstract� Model  driven  engineering  is  increasingly  attracting  interest  in  the 

research community, due to its applicability in different application domains. 

This  paper  discusses  how  MDA  technology  (metamodelling  and  the  QVT 

standard)  can  support  the  transformation  of  high-level  models  of  context-

aware services onto the implementation of these services using web services.  

Resumo� O  desenvolvimento  baseado  em modelos  tem  se  apresentado  como 

uma abordagem promissora para o desenvolvimento de sistemas em diferentes 

domínios de aplicação. Neste sentido, este artigo discute a transformação de 

modelos  de  aplicações  móveis  sensíveis  ao  contexto  independentes  de 

plataforma em modelos de serviços web usando o padrão MOF QVT. 

 

1.  Introdução 

Aplicações  sensíveis  ao  contexto  caracterizam-se  pelo  uso  de  informações  sobre  o 

contexto  físico e computacional de seus usuários nas  tomadas de decisões, de modo a 

produzir  serviços  mais  flexíveis,  adaptáveis,  ricos  em  funcionalidade  e  centrados  no 

usuário. Neste sentido, as aplicações sensíveis ao contexto são programadas para reagir 

e explorar as mudanças de contexto dentro de um domínio dinâmico.  

O desenvolvimento dessas aplicações implica a superação de vários desafios teóricos e 

tecnológicos,  e  requer  a  existência de uma  infra-estrutura de  suporte adequada  ao  seu 

projeto e execução, particularmente para apoio à manipulação de modelos de contextos 

diversos,  provenientes  de  ambientes  altamente  distribuídos,  heterogêneos  e  em 

constantes  mudanças.  Nesse  sentido,  tem-se  presenciado  um  grande  esforço  e  o 

surgimento  de  várias  pesquisas  relacionadas  à  construção  de  plataformas  de  serviços 

com suporte à execução dessas aplicações [Dockhorn Costa et al. 2005]. 

Com  o  intuito  de  acelerar  o  desenvolvimento  de  aplicações  sensíveis  ao  contexto, 

devemos  prover  um  suporte  adequado  à  transformação  de  modelos  de  contexto  e  o 

conjunto  de  serviços  que  fazem  uso  destes  modelos.  De  forma  específica,  queremos 

prover suporte à transformação de modelos de serviços móveis sensíveis ao contexto na 

implementação  destes  serviços  através  de  serviços  web,  usando  a  abordagem Model-

Driven Architecture (MDA) [OMG 2003]. 

Third Workshop on Ontologies and Metamodeling in Software and Data Engineering - WOMSDE 2008

119

   

Atualmente,  o  ciclo  de  vida  de  um  sistema  informatizado  ainda  é  profundamente 

condicionado ao ciclo de vida da plataforma tecnológica que o sustenta. A proposta da 

MDA  de  promover  um  aumento  do  grau  de  abstração  usado  na  especificação  e  no 

desenvolvimento  de  um  sistema  está  diretamente  associada  à  busca  de  maior 

independência quanto à plataforma tecnológica utilizada, com efeitos positivos sobre a 

longevidade da aplicação. 

A efetivação do conceito de independência de plataforma impõe mudanças no processo 

de  software:  faz-se  necessário  o  uso  de  metamodelos  que  suportem  a  definição  dos 

modelos  independentes  de  plataforma  (PIMs),  bem  como  de  metamodelos  que 

propiciem a representação de conceitos próprios às plataformas tecnológicas escolhidas 

(PSMs).  A  elaboração  de  um  PIM  denota  a  ênfase  sobre  o  domínio  do  problema, 

enquanto que a obtenção de um PSM pode ser visto como o resultado de um processo 

de transformação aplicável ao PIM. 

No contexto de MDA, a transformação de modelos toma proporções mais significativas. 

A transformação de modelos sustenta a premissa de níveis de abstração e contribui para 

as  expectativas de  aumento de  produtividade  e  de  qualidade na produção de  software 

[Patrascoiu  2004].  A  transformação  de  modelos  é,  portanto,  recurso  primordial  para 

viabilizar a abordagem de MDA [Sendall and Kozaczynski 2003]. 

Neste  sentido,  este  trabalho  investiga  o  uso  de  metamodelos  e  o  padrão 

Query/View/Transformation  (QVT)  [OMG  2005a]  para  realizar  a  transformação  de 

modelos  de  serviços  móveis  sensíveis  ao  contexto  em  modelos  de  serviços  web.  O 

restante do artigo está organizado da seguinte forma: a seção 2 discute alguns aspectos 

relacionados à transformação de modelos em MDA; a seção 3 apresenta uma visão geral 

do metamodelo de serviços sensíveis ao contexto (PIM); a seção 4  apresenta uma visão 

geral do metamodelo de serviços web (PSM); a seção 5 discute a transformação destes 

modelos usando o padrão QVT; finalmente, a seção 6 apresenta algumas considerações 

finais e perspectivas de trabalhos futuros. 

2.  Transformação de modelos em MDA 

Uma  transformação  de  modelos  pode  ser  concebida  como  um  conjunto  de  regras, 

condições e ações que se aplicam a um modelo origem com o objetivo de produzir um 

modelo  destino. Em MDA, os modelos podem corresponder  ao mesmo ou  a distintos 

níveis de abstração MOF, e o sentido da transformação pode variar [OMG 2001], como, 

por exemplo, PIM � PSM, PIM� PIM, PSM� PIM e PSM� código. 

A especificação MDA indica alguns caminhos válidos para o esforço de transformação, 

que  vão  desde  a  definição  e  aplicação  manual  das  regras  de  mapeamento,  até  a 

construção de algoritmos que utilizem modelos de transformação, sejam parametrizados 

e utilizem patterns para orientar sobre a definição do elemento de modelagem resultante 

[OMG 2001].  

Miller  e  Mukerji  [OMG  2003]  apresentam  uma  série  de  considerações  acerca  do 

processo de  transformação em MDA, com grande ênfase nos marcadores (marks) para 

direcionar  a  transformação.  Os  marcadores  têm  por  finalidade  indicar  características 

relevantes e úteis para orientar a transformação de uma dada estrutura do modelo origem 

em  estruturas  do  modelo  destino.  Os  marcadores  podem  ter  diferentes  origens: 

Third Workshop on Ontologies and Metamodeling in Software and Data Engineering - WOMSDE 2008

120

  

estereótipos,  quando  do  uso  de  um  Perfil  UML,  tipos,  quando  em  uso  num  modelo 

genérico, elementos de modelagem,  quando no contexto de um metamodelo,  etc. Para 

Miller  e  Mukerji,  uma  transformação  tem  como  argumentos  o  PIM  marcado  e  as 

definições  de  mapeamento,  e  necessariamente  deve  registrar  todos  os  seus  passos, 

através de um mapa de equivalências, com informe dos elementos utilizados.  

Em  [OMG  2003]  são  propostas  duas  categorias  básicas  como  modalidades  de 

transformação:  aquelas  baseadas  em  modelos  e  aquelas  baseadas  em  metamodelos. 

Modalidades de transformação baseadas em modelos subtendem a utilização do mesmo 

metamodelo  para  a  especificação  dos  modelos  de  origem  e  de  destino,  havendo 

identificação  dos  elementos  de modelagem  suportados  especificamente  para  cada  um 

dos  modelos.  Assim,  distinguem-se  os  elementos  de  modelagem  independentes  de 

plataforma, daqueles que são dependentes de uma plataforma tecnológica específica. A 

especificação  da  transformação,  nesse  caso,  requer  o mapeamento  entre  elementos  do 

mesmo metamodelo. 

As modalidades de  transformação baseadas em metamodelos  são aplicadas quando os 

modelos de origem e de destino podem ser originados de metamodelos distintos, caso 

em que a especificação da transformação mapeia conceitos de uma linguagem a outra, e 

pode se basear num terceiro metamodelo. Em ambas as modalidades, há a possibilidade 

do emprego de patterns e de templates, além de informações adicionais acrescidas por 

configuração ou de forma interativa ao longo do processo de transformação. 

Em vista da proliferação de  iniciativas de projetos para  transformação de modelos, no 

rastro  da  especificação MDA  [OMG  2001],  a  OMG  lançou  uma  RFP  [OMG  2002], 

iniciando  um  processo  formal  para  o  desenvolvimento  de  uma  especificação  que 

padronizasse o modo como que se alcança um mapeamento entre modelos para fins de 

transformação.  Complementarmente,  a  RFP  requisitava  propostas  de  mecanismos 

padronizados  para  a  realização  de  ações  de  pesquisa  e  de  criação  de  visões  sobre 

modelos MOF. Uma das preocupações centrais da OMG foi a definição dos esforços de 

transformação sobre um metamodelo específico, aderente às especificações MOF. 

A  partir  das  propostas  recebidas,  consolidou-se  a  especificação  MOF  2.0 

Query/View/Transformation  (QVT)  [OMG  2005a].  A  especificação  QVT  define 

linguagens próprias para a especificação e o desenvolvimento de transformações entre 

modelos.  A  especificação  também  prevê  níveis  de  conformidade  aos  quais  uma 

ferramenta que dê suporte às transformações podem aderir. 

A especificação QVT propõe um metamodelo, estruturado como uma extensão do MOF 

Model,  mais  especificamente  do  pacote  EMOF,  para  a  definição  dos  modelos  de 

transformação. QVT possui uma natureza híbrida que contempla aspectos declarativos 

com possíveis módulos imperativos em uma extensão de OCL [OMG 2005b]. 

3.  Modelos Independentes de Plataforma 

O  desenvolvimento  de modelos  adequados  à  representação  de  domínios  de  aplicação 

específicos  é  uma  preocupação  freqüente  na  engenharia  de  software.  O  uso  de 

metamodelos apropriados assegura precisão à sintaxe abstrata do modelo desenvolvido e 

possibilita sua reutilização em distintas aplicações do mesmo domínio. Os metamodelos 

Third Workshop on Ontologies and Metamodeling in Software and Data Engineering - WOMSDE 2008

121

   

encerram  uma  semântica muito  particular  a  um  domínio  de  aplicação,  o  que  implica 

forte especificidade na sua construção.  

Para formular modelos específicos para o domínio das aplicações sensíveis ao contexto 

foi  definido um metamodelo de  contexto usando  a MOF. O  uso do MOF não  apenas 

provê formalismo às informações de contexto, mas também possibilita explorar o amplo 

suporte  de  ferramentas  padronizadas  para  auxílio  à  confecção  dos modelos  e  alcança 

portabilidade entre diferentes ambientes de modelagem.  

Os conceitos presentes no metamodelo de serviços sensíveis ao contexto  (PIM) foram 

identificados e agrupados em seis pacotes MOF, viz: core, services, services hierarchy, 

subscription,  context-services  e  quality. A Figura  1  ilustra  a  pacote  services  do nosso 

metamodelo de contexto. Este pacote reúne os conceitos utilizados para caracterizar os 

serviços  envolvidos  na  geração,  no  tratamento  e  no  uso  das  informações  de  contexto 

modeladas.  

cd MCW - serv ices

Message

+  name:  string

Serv iceOperation

+  name:  string

+  interaction:  InteractionType

MessagePart

+  name:  string

+  type:  string

«enumeration»

InteractionType

+  one-way:  

+  request-response:  

Quality�tem

Service

+  name:  string

Prov ider

+  name:  string

+  host:  string

+  port:  integer

com��dbmware��

cwmetamodel��core��

CWClassifier

+  name:  string

SimpleServ ice CompositeServ ice

1

façades

0..*

1..*

+component

0..*

0..*

refers to

0..1+classifier0..*+fault

1

1..*

+service provides

0..1

+output

1

0..1

+input

1

1..*+service_operation

publishes

1

0..*

{ordered}

+parthas1..*

0..*

instantiates

0..*

0..*

uses

0..*

 

Figura 1. Pacote Services do Metamodelo de Contexto 

A  metaclasse  abstrata  Service  representa  um  serviço.  Os  serviços  atuam  sobre  as 

entidades  e  atributos  (heranças  da  metaclasse  abstrata  core::CWClassifier)  para  mera 

consulta  (metaassociação  uses)  ou  com  a  finalidade  de  instanciar  ou  modificar 

informações  de  contexto  (metaassociação  instantiates).  A  metaclasse  abstrata  Service 

possui um vínculo de composição com a metaclasse Provider, indicando o provedor que 

oferece  o  citado  serviço.  Provider  define  três  metaatributos  pelos  quais  podemos 

estruturar os parâmetros de conectividade: name, host e port. 

Os  serviços  podem  ser  compostos  por  outros  serviços,  perfazendo  uma  seqüência 

específica  de  acionamento,  a  partir  de  uma  lógica  própria.  Para  a  representação  do 

vínculo de composição entre serviços utilizou-se de um composite pattern. 

Third Workshop on Ontologies and Metamodeling in Software and Data Engineering - WOMSDE 2008

122

  

Um serviço pode ser simples (metaclasse SimpleService), o que implica a inexistência de  

outros  serviços  a  compor  sua  funcionalidade,  ou  composto  (metaclasse 

CompositeService), quando um serviço se componente de outros serviços (caracterizados 

pelo  role  component).  SimpleService  e  CompositeService  são  heranças  de  Service  e 

estabelecem vínculos de façade: todo serviço composto deve possuir um serviço simples 

e único, mediante o qual se dá o acesso às funcionalidades do conjunto de um serviço 

composto. 

Um serviço é constituído por operações, representadas pela metaclasse ServiceOperation. 

Através do atributo  interaction  é  possível qualificar o mecanismo de  interação previsto 

para  o  serviço.  Os  tipos  de  interação  possíveis  estão  enumerados  em  InteractionType. 

InteractionType  prevê  duas  formas  de  interação:  request-response,  com  acionamento 

explícito  pelo  demandante  e  com  resposta  sincronizada;  e  one-way,  com  interação 

estimulada por um evento,  caracterizado pela ocorrência de uma situação  logicamente 

descrita  e  que  envolve  os  atores  do  contexto,  como,  por  exemplo,  o  alcance  de  um 

determinado  estado  por  uma  certa  entidade  no  contexto modelado  ou  uma  ocorrência 

temporal. 

As  operações  são  compostas  por  mensagens  de  entrada,  de  saída  ou  de  falha.  As 

mensagens são representadas pela metaclasse Message. As mensagens são constituídas 

por  partes,  representadas  no  metamodelo  através  da  metaclasse  MessagePart. 

MessagePart  pode  referenciar  uma    entidade  ou  atributo  de  contexto,  heranças  da 

metaclasse abstrata core::CWClassifier. 

Maiores informações sobre o metamodelo de serviços sensíveis ao contexto podem ser 

encontradas em [Leite et al. 2006], [de Farias et al. 2007c] e [Leite 2007]. 

4.  Modelos Específicos de Plataforma 

O metamodelo específico de plataforma selecionado foi o metamodelo de Web Service 

Description  Language  (WSDL)  1.1  [W3C  2001].  A  representação  do  metamodelo  de 

WSDL  também  foi  capturado  usando  MOF  e  foi  baseada  no  próprio  padrão  e  na 

proposta apresentada em [Pavão Lopes 2005]. 

Os  conceitos  presentes  no  metamodelo  WSDL  foram  identificados  e  agrupados 

utilizando  três  pacotes  MOF:  WSDLCore,  BindingExtension  e  XSD.  O  pacote 

BindingExtension  contém  os  conceitos  associados  ao  protocolo  SOAP  [W3C  2000]. 

Associações do WSDL com os protocolos HTTP e MIME não foram consideradas. O 

pacote XSD contém os principais conceitos associados à definição de esquemas XML.  

O pacote WSDLCore  contém a maior  parte dos  conceitos presentes no metamodelo de 

WSDL, sendo o pacote mais relevante no contexto deste trabalho. A Figura 2 mostra os 

conceitos presentes no pacote WSDLCore. 

Este  metamodelo  está  organizado  em  torno  da  metaclasse  WSDLElement.  Esta 

metaclasse  abstrata  generaliza  a  maior  parte  dos  conceitos  presente  em  uma 

especificação  WSDL.  WSDLElement  possui  um  meta-atributo  chamado  documentation 

que pode ser utilizado para representar informações legíveis para usuários humanos.  

Third Workshop on Ontologies and Metamodeling in Software and Data Engineering - WOMSDE 2008

123

   

 

Figura 2. Pacote WSDLCore 

A  metaclasse  Definition  representa  um  documento  WSDL.  Um  documento  WSDL 

basicamente funciona como um contêiner para a descrição de um service, consistindo de 

um conjunto de definições de elementos WSDL,  tais como  tipos, mensagens, portas e 

associações.  Esta  metaclasse  possui  dois  meta-atributos  opcionais,  viz.,  name  e 

targetNameSpace, os quais podem ser utilizados para criar um espaço para a definição de 

nomes, i.e., um apelido que pode ser utilizado neste documento.  

A metaclasse Import representa a importação de elementos definidos de um determinado 

espaço de nomes. Este elemento pode ser utilizado para incluir e agregar elementos de 

uma definição de serviços descritos em um conjunto de documentos independentes. Esta 

metaclasse  tem  dois  meta-atributos,  viz.,  namespace,  o  qual  representa  o  espaço  de 

nomes  sendo  importado,  e  location,  o  qual  representa  a  localização  (Unified Resource 

Identifier - URI) do espaço de nomes sendo importado. 

A metaclasse Type  representa uma definição de  tipo de dados. Este elemento pode ser 

utilizado  nas  definições  de  serviço  para  definir  os  tipos  de  dados  utilizados  nas 

Third Workshop on Ontologies and Metamodeling in Software and Data Engineering - WOMSDE 2008

124

  

mensagens trocadas. Uma definição de tipo de dados normalmente contém zero ou mais 

definições XSD, representadas pela metaclasse XSD::XSDElement.  

A metaclasse Message  representa  uma  definição  abstrata  dos  dados  trocados  em uma 

definição de serviço. Esta metaclasse possui um único meta-atributo chamado name, o 

qual representa o identificador da mensagem. Uma mensagem consiste de zero ou mais 

partes  lógicas.  A metaclasse Part  representa  um  pedaço  dos  dados  e  está  associado  a 

uma  definição  de  tipos.  Esta  metaclasse  tem  os  seguintes  meta-atributos:  name,  que 

representa  o  identificador  da  parte,  e  type,  que  é  um  meta-atributo  derivado 

representando a definição do elemento XSD associado. 

A metaclasse PortType representa uma definição de porta, i.e., um conjunto de operações 

abstratas  implementadas  por  uma  entidade  associada  ao  serviço.  Esta  metaclasse  é 

similar  a  uma  definição  de  interface  em CORBA  IDL. PortType  tem  um  único meta-

atributo  chamado  name,  o  qual  representa  o  identificador  da  metaclasse  e  provê  um 

identificador único entre todas as definições de porta no documento WSDL.  

A metaclasse abstrata Operation representa uma definição abstrata de uma ação que pode 

ser  executada  em  um  ponto  de  (acesso  a  um)  serviço  em  termos  de  mensagens  de 

entrada, saída e falhas. Esta metaclasse possui um único meta-atributo chamado name, o 

qual  representa o  identificador da metaclasse. WSDL define quarto diferentes  tipos de 

operações, os quais correspondem aos diferentes padrões de troca de mensagens.  

A metaclasse RequestResponse representa uma operação de requisição-resposta, na qual 

um  ponto  de  serviço  recebe  uma  mensagem  de  requisição  e  envia  para  o  cliente 

requisitante  uma  mensagem  de  resposta  associada.  A  metaclasse  SolicitResponse 

representa uma operação de solicitação-resposta, na qual um ponto de serviço envia uma 

mensagem  de  solicitação  para  um  cliente  requisitante  e  posteriormente  recebe  uma 

mensagem de resposta relacionada deste cliente. Tanto a metaclasse ResquestResponse 

quanto  a  metaclasse  SolicitResponse  possuem  um  meta-atributo  opcional  chamado 

parameterOrder,  o qual pode ser utilizado para capturar a ordem original dos parâmetros 

em associações RPC. A metaclasse OneWay representa uma operação de sentido único, 

na  qual  um  ponto  de  serviço  simplesmente  recebe  uma  mensagem  de  um  cliente 

requisitante.  Finalmente,  a  metaclasse  Notification  representa  uma  operação  de 

notificação,  na  qual  um  ponto  de  serviço  simplesmente  envia  uma  mensagem  de 

notificação para um cliente. 

A  metaclasse  abstrata OperationElement  representa  os  elementos  de  uma  operação  em 

termos  das mensagens  de  entrada,  saída  e  falhas  trocadas. Esta metaclasse  possui  um 

único meta-atributo chamado name, o  qual  representa o parâmetro de  identificação da 

operação. OperationElement  é  especializada  em  três  sub-metaclasses, viz.,  InputElement, 

OutputElement  e  FaultElement,  representando  mensagens  de  entrada,  saída  e  falha, 

respectivamente.  A  metaclasse  OneWay  contém  somente  elementos  de  entrada.  A 

metaclasse  Notification  contém  somente  elementos  de  saída.  A  metaclasse 

RequestResponse contém um elemento de entrada, um elemento de saída e zero ou mais 

elementos  de  falha.  A  metaclasse  SolicitResponse  contém  um  elemento  de  saída,  um 

elemento de entrada e zero ou mais elementos de falha.  

A  metaclasse  Binding  representa  a  especificação  de  um  protocolo  concreto  e  de  um 

formato  de  dados  para  um  determinado  tipo  de  porta. Uma  associação  de mensagem 

Third Workshop on Ontologies and Metamodeling in Software and Data Engineering - WOMSDE 2008

125

   

descreve  como  uma  definição  de  mensagem  abstrata  é  mapeada  em  um  formato 

concreto. Esta metaclasse  tem um único meta-atributo chamado name, o qual define o 

identificador da associação. A metaclasse Binding deve ser especializada através de um 

conjunto de elementos de extensão de modo a especificar a gramática concreta para as 

mensagens de entrada, saída e falha associadas ao conjunto de operações da porta. 

A  metaclasse  Port  representa  um  ponto  de  comunicação  único  obtido  através  da 

associação de um único endereço com uma definição de associação. Esta metaclasse tem 

um  único  meta-atributo  chamado  name,  o  qual  representa  o  identificador  da  porta. A 

metaclasse Port deve ser especializada através de um elemento de extensão de modo a 

especificar o endereço associado à porta. 

A  metaclasse  Service  representa  um  conjunto  de  pontos  de  serviço  relacionados.  Esta 

metaclasse  possui  um  único  meta-atributo  chamado  name,  o  qual  representa  o 

identificador do serviço. 

5.  Mapeamento PIM-PSM 

O mapeamento do metamodelo de contexto para o metamodelo de serviços web envolve 

os  seguintes  aspectos:  1)  mapeamento  dos  tipos  de  dados  utilizados  como  entrada  e 

saída nas operações de serviço, os quais podem ser traduzidos para esquemas XML; e 2) 

mapeamento de assinaturas de serviço, as quais podem ser traduzidas para definições de 

WSDL.  Para  obtermos  um  mapeamento  completo  deveríamos  também  englobar  o 

mapeamento de comportamentos de serviço, os quais podem ser utilizados para gerar as 

implementações de serviços web correspondentes. Contudo, o metamodelo de contexto 

não considerou a especificação de comportamentos de serviço e, portanto, este aspecto 

não será considerado no contexto deste trabalho. 

De acordo com a especificação QVT [OMG 2005a], não há uma separação clara entre 

os conceitos de mapeamento  transformação. Uma  transformação é definida em termos 

de  especificações  de  mapeamento,  as  quais  podem  ser  especificadas  utilizando-se 

diferentes  linguagens  definidas  a  partir  da  arquitetura  de  metamodelos  do  QVT: 

relacional,  mapeamento  operacional  e  core.  Contudo,  alguns  autores  fazem  uma 

distinção entre mapeamento e  transformação (veja, e.g.,  [Lopes et al. 2005], [Lopes et 

al. 2006]). De acordo com [Lopes et al. 2005], um mapeamento pode ser visto como a 

correspondência  entre  os  elementos  de  dois  metamodelos,  enquanto  que  uma 

transformação pode ser definida como a atividade de transformar um modelo de origem 

em  um  modelo  destino  de  acordo  com  um  conjunto  de  regras  de  transformação.  A 

vantagem  desta  abordagem  reside  na  separação  da  definição  do  mapeamento  da 

especificação  da  transformação.  Desta  forma,  várias  definições  (alternativas)  de 

transformação podem ser criadas para um mesmo mapeamento. 

Neste  trabalho  adotamos  a  abordagem  proposta  em  [Lopes  et  al.  2005],  na  qual  o 

mapeamento  e  a  transformação  são  explicitamente  separados.  Desta  forma,  a 

especificação  da  transformação  dos  tipos  de  dados  foi  realizada  em  duas  etapas:  1) 

definição  do  mapeamento  de  cada  tipo  de  dado  sensível  a  contexto  para  um ou mais 

elementos de esquema XML utilizando a notação proposta em [Lopes et al. 2005]; e 2) 

especificação da  transformação propriamente dita utilizando o QVT. Dado que o foco 

deste  trabalho  é  a  transformação  das  assinaturas  de  serviço,  não  discutiremos  o 

mapeamento dos  tipos de dados no restante deste artigo. Maiores informações sobre o 

Third Workshop on Ontologies and Metamodeling in Software and Data Engineering - WOMSDE 2008

126

  

mapeamento dos tipos de dados podem ser encontradas em [de Farias et al. 2007b, de 

Farias 2007]. 

A  especificação  da  transformação  das  assinaturas  de  serviço  também  foi  realizada 

utilizando-se  a  mesma  abordagem  da  transformação  dos  tipos  de  dados,  ao  longo  de 

duas  etapas:  1)  definição  do mapeamento  de  um  serviço  sensível  a  contexto  para  um 

serviço  WSDL  equivalente;  e  2)  especificação  da  transformação  propriamente  dita 

utilizando o QVT. 

A definição do mapeamento de um serviço sensível a contexto para um serviço WSDL 

equivalente  foi  realizada  em  duas  etapas.  Primeiramente,  um  serviço  sensível  ao 

contexto,  representado pela metaclasse SimpleService,  foi mapeado para uma definição 

de serviço WSDL, representado pela metaclasse Definition. Este mapeamento envolveu a 

criação de elementos de definição de serviço WSDL básicos, bem como o mapeamento 

das operações definidas por este serviço, suas mensagens e as partes que compõem estas 

mensagens  em  seus  equivalentes  na  definição WSDL. O mapeamento  de  um  serviço 

composto,  representado pela metaclasse CompositeService, para um serviço equivalente 

WSDL  equivalente  não  é  necessário,  dado  que  todo  serviço  composto  pode  ser 

representado por um serviço simples equivalente (metaassociação façades).  

A  Figura  3  ilustra  o mapeamento  de  um  serviço  sensível  a  contexto  para  um  serviço 

WSDL utilizando a notação proposta em [Lopes et al. 2005]. Nesta figura, um círculo 

representa  uma  correspondência,  i.e.,  um  elemento  de  modelagem  utilizado  para 

especificar  os  relacionamentos  entre  dois  ou mais  elementos  (à  esquerda  e  à  direita). 

Cada  relacionamento  possui  um  elemento  à  esquerda  (representado  por  uma  seta 

simples) e um ou mais elementos à direita  (representado(s) por uma seta dupla). Uma 

definição de mapeamento contém todas as correspondências entre os dois metamodelos. 

Na  seqüência,  um  provedor  de  serviço,  representado  pela  metaclasse  Provider,  e  sua 

associação com um conjunto de serviços providos pelo mesmo são mapeados para uma 

associação  concreta  das  definições  de  serviço  para  o  protocolo  SOAP,  incluindo  a 

definição concreta de um endereço (porta) a ser utilizado pelo protocolo SOAP para a 

invocação  do  serviço. Este mapeamento  complementa  o mapeamento  anterior,  e  deve 

ser  realizado  separadamente  para  cada  serviço  provido  pelo  servidor. A  especificação 

completa deste mapeamento pode ser encontrada em [de Farias 2007].  

A  Figura  4  apresenta  os  principais  pontos  da  especificação  da  transformação  das 

assinaturas de  serviço  sensível a contexto para definições de serviço WSDL usando o 

padrão QVT. A especificação da transformação foi realizada utilizando-se a linguagem 

de  mapeamento  operacional  do  QVT.  Escolhemos  esta  linguagem  porque  a  mesma 

oferece  um mecanismo  poderoso  para  a  especificação  de  transformações  usando  uma 

abordagem imperativa. 

Third Workshop on Ontologies and Metamodeling in Software and Data Engineering - WOMSDE 2008

127

   

 

S2WSDL 

Definition 

Message 

ServiceOperation 

SimpleService 

MessagePart 

Type 

Message 

Part 

PortType 

RequestResponse 

OneWay 

Operation 

OperationElement 

InputElement 

OutputElement 

FaultElement 

M2M 

MP2P 

SO2O 

 

Figura 3. Mapeamento de serviço sensível a contexto para WSDL 

Esta especificação utiliza, via a cláusula access, a especificação das transformações dos 

tipos de dados definidos na transformação CSW2WSDL [de Farias et al. 2007b] e incorpora 

as  definições  das  transformações  das  assinaturas  de  serviço.  De  acordo  com  esta 

especificação,  primeiramente  são  realizadas  as  transformações dos  tipos de dados. Na 

seqüência,  cada  serviço  simples  é  mapeado  para  uma  definição  de  serviço  WSDL 

equivalente através da definição de mapeamento Service to WSDL (S2WSDL). Por fim, 

cada  serviço  provido  por  um  servidor  é  transformado para uma definição  concreta do 

formato  deste  serviço  utilizando-se  o  protocolo  SOAP  através  da  definição  de 

mapeamento  Provider  to  Binding  (P2B).  A  especificação  completa  desta 

transformação pode ser encontrada em [de Farias 2007]. 

Third Workshop on Ontologies and Metamodeling in Software and Data Engineering - WOMSDE 2008

128

  

 modeltype CWS uses ContextAwareMetamodel; modeltype WSDL uses WSDLMetamodel; 

transformation CompleteCSW2WSDL (in cwsModel: CWS out, wsdlModel: WSDL) 

 access transformation CSW2WSDL (in cwsModel: CWS out, wsdlModel: WSDL); 

main(){ 

  -- first process CSW2WSDL transformation 

  -- for each CWEntity create a corresponding XSDElement 

  cwsModel.objectsOfType(CWEntity)->map E2XSD();      

 

  -- for each CWAttribute create a corresponding XSDElement 

  cwsModel.objectsOfType(CWAttribute)->map A2XSD();   

 

  -- then process service transformation 

  -- for each SimpleService create a corresponding WSDL definition element 

  cwsModel.objectsOfType(SimpleService)->map S2WSDL();   

 

  -- for each provided service create a corresponding binding  

  cwsModel.objectsOfType(Provider)->map P2B();   

-- S2WSDL - Service to WSDL mapping  

mapping SimpleService::S2WSDL(): result:Definition{ 

  object result:Definition{ 

    name := self.name; 

    -- create a type element 

    type := new Type(); 

    type.element := resolve(#XSDElement); 

    -- create message elements 

    message := cwsModel.objectsOfType(Message)->map M2M(); 

    -- create a (single) port type element 

    portType := new PortType(); 

    portType.name := self.name+'_PortType'; 

    portType.operation := self.service_operation->map SO2O(message); 

    -- create a null service 

    service := null; 

    -- create a null binding 

    binding := null; 

  } 

-- P2B - Provider to Binding mapping  

mapping Provider::P2B(): result:SOAPBindingExtension{ 

  -- select provided service(s) 

  var wsdl_serv: Set(Definition) := self.service.resolve(#Definition); 

  -- for each provided service creates a corresponding binding 

  wsdl_serv->forEach(s){ 

    -- update service definition 

    s.service := new Service(); 

    s.service.name := s.name+'_Service'; 

    s.service.port := new SOAPPortBinding(s.name, self.host, self.port); 

    -- update binding definition     

    s.binding := new SOAPBindingExtension(s.portType); 

  } } 

 

Figura 4. Especificação da transformação das assinaturas de serviço 

6.  Conclusão 

O processo de transformação está subjacente aos esforços empreendidos pela  indústria 

de  software  para  elevar  o  nível  de  abstração  e  produtividade  no  desenvolvimento  de 

sistemas  computacionais.  Desde  a  criação  dos  montadores  e  o  surgimento  dos 

compiladores,  até  o  desenvolvimento  de  plataformas  distribuídas,  o  que  se  obteve  de 

ganho  na  esfera  de  abstração  no  desenvolvimento  de  software  foi  basicamente 

sustentado por sucessivas ações de interpretação e de transformação. 

Third Workshop on Ontologies and Metamodeling in Software and Data Engineering - WOMSDE 2008

129

   

A transformação de modelos é um dos aspectos principais no desenvolvimento baseado 

em  modelos  de  sistemas  computacionais.  De  maneira  geral,  as  transformações 

favorecem  o  desenvolvimento  de  abordagens  nas  quais  modelos  de  alto  nível  são 

(automaticamente)  transformados  em modelos  concretos  de  um  dado  domínio.  Neste 

sentido, o padrão QVT desempenha um papel fundamental na abordagem MDA, dado 

que  este  padrão  define  como  transformações  podem  ser  especificadas  em  uma 

arquitetura declarativa. 

Este  artigo  apresenta  um  estudo  de  caso  envolvendo  a  definição  de  metamodelos 

independentes  de  plataforma  (metamodelo  de  serviços  sensíveis  ao  contexto)  e 

específicos de plataforma (metamodelo de serviços web), bem como o uso do QVT para 

especificar  as  transformações  entre  estes  metamodelos.  A  especificação  de  uma 

transformação é uma tarefa complexa que envolve o conhecimento dos domínios origem 

e destino. Neste sentido, este  trabalho reforça trabalhos anteriores [Lopes et al. 2005], 

[Lopes et al. 2006], [de Farias et al. 2007b] nos quais a separação entre o mapeamento 

entre metamodelos  e a especificação de uma  transformação auxilia na  resolução desta 

complexidade. 

O  trabalho apresentado neste artigo é parte de um esforço maior que visa prover uma 

abordagem  baseada  em  modelos  para  o  desenvolvimento  de  aplicações  sensíveis  ao 

contexto [Leite et al. 2006, de Farias et al. 2007a, de Farias et al. 2007b, de Farias et al. 

2007c]. Neste sentido, investigações adicionais ainda são necessárias para incorporar ao 

metamodelo  de  contexto  a  especificação  de  comportamento  de  serviços,  antes  de 

definirmos  como  este  metamodelo  de  comportamento  de  serviço  poderá  ser 

transformado em um metamodelo da implementação de serviço. 

Agradecimentos 

Agradecemos  o  apoio  do  CNPq  para  a  realização  deste  trabalho  (processo  número 

50.6284/2004-2) e o apoio da FAPESP para a apresentação do mesmo. 

Referências 

de Farias, C. R. G.  (2007). Especificação  de  transformações de modelos  sensíveis  ao 

contexto para serviços web. Documento de projeto, DBMWare/CNPq/D2.2, v.1.0. 

de Farias, C. R. G., Barbosa, C. B., Leite, M. M., Pessoa, R. M., Calvi, C. Z., Pereira 

Filho,  J.  G.  (2007a).  Suporte  ao  Desenvolvimento  Baseado  em  Modelos  de 

Aplicações Móveis Sensíveis ao Contexto. Proceedings of the Second Workshop on 

Ontologies and Metamodeling in Software and Data Engineering (WOMSDE 2007), 

pp. 21-31. 

de Farias, C. R. G., Ferreira Pires, L. and van Sinderen, M. (2007b): A Case Study on 

the  Transformation  of  Context-Aware  Domain  Data  onto  XML  Schemas.  In 

Proceedings  of  the  3rd  International  Workshop  on  Model-Driven  Enterprise 

Information Systems (MDEIS 2007), pp. 63-72. 

de  Farias,  C.  R.  G.,  Leite,  Marcos  Medina,  Calvi,  Camilo  Zardo,  Pessoa,  Rodrigo 

Mantovaneli,  Pereira  Filho,  José  Gonçalves  (2007c):  A  MOF  Metamodel  for  the 

Development  of  Context-Aware Mobile  Applications.  In Proceedings  of  the  2007 

ACM Symposium on Applied Computing (SAC 2007), pp. 947-952. 

Third Workshop on Ontologies and Metamodeling in Software and Data Engineering - WOMSDE 2008

130

  

Dockhorn  Costa,  P.,  Ferreira  Pires,  L.,  van  Sinderen,  M.J.  (2005).  Designing  a 

Configurable  Ser-vices  Platform  for  Mobile  Context-Aware  Applications. 

International Journal of Pervasive Computing and Communications, 1(1), pp. 13-25. 

Leite,  M.  M.  (2007):  Um  Metamodelo  MOF  e  um  Perfil  UML  para  o  Suporte  ao Desenvolvimento Baseado em Modelos de Aplicações Móveis Sensíveis ao Contexto. Dissertação de mestrado, Universidade Católica de Santos, 2007. 

Leite, M. M., de Farias, C. R. G., Pessoa, R. M., Calvi, C. Z., Pereira Filho, J. G. Um 

Metamodelo  MOF  para  o  Desenvolvimento  de  Aplicações  Móveis  Sensíveis  ao 

Contexto. Anais  do  First Workshop  on Ontologies  and Metamodeling  in  Software and Data Engineering (WOMSDE 2006), Florianópolis (SC), p. 21-31, 2006. 

Lopes,  D., Hammoudi,  S.,  Bézivin,  J.,  Jouault,  F.  (2005): Generating Transformation 

Definition  from  Mapping  Specification:  Application  to  Web  Service  Platform.  In 

Proceedings of  the 17th Conference on Advanced  Information Systems Engineering (CAiSE'05), LNCS 3520, pp. 309-325. 

Lopes,  D.,  Hammoudi,  S.,  Bézivin,  J.,  Jouault,  F.  (2006): Mapping  Specification  in MDA: From Theory  to Practice.  In: Konstantas, D., Bourrières,  J.-P., Léonard, M., 

Boudjlida,  N.  (Eds).  Interoperability  of  Enterprise  Software  and  Applications  - 

INTEROP-ESA. Springer, pp. 253-264. 

OMG (2001). Model Driven Architecture (MDA). Object Management Group. 

OMG  (2002). MOF  2.0  Query/Views/Transformations  Request  For  Proposal.  Object Management Group. 

OMG (2003). MDA Guide, Version 1.0. Object Management Group. 

OMG  (2005a).  Meta  Object  Facility  (MOF)  2.0  Query/View/Transformation Specification, OMG Adopted Specification. Object Management Group. 

OMG  (2005b).  OCL  2.0  Specification,  OMG  Specification,  version  2.0.  Object Management Group. 

Patrascoiu, O. (2004).YATL: Yet Another Transformation Language. In Proceedings of the 1st European MDA Workshop, MDA-IA. University of Twente,  the Netherlands, January, pp. 83-90.  

Pavão Lopes, D. C. (2005). Étude et application de l’approache MDA pour des plates-formes de Service Web. Thèse de Doctorat, Université de Nates. 

Sendall,  S.  and  Kozaczynski,  W.  (2003).  Model  Transformation:  heart  and  soul  of 

Model-driven software development. IEEE Software, September/October, pp. 42-5. 

W3C  (2000).  Simple  Object  Access  Protocol  (SOAP)  1.1.  Available  at 

http://www.w3.org/TR/2000/NOTE-SOAP-20000508/. 

W3C  (2001).  Web  Services  Description  Language  (WSDL)  1.1.  Available  at 

http://www.w3c.org/tr/wsdl. 

 

Third Workshop on Ontologies and Metamodeling in Software and Data Engineering - WOMSDE 2008

131