componente, respectivamente. O componente deve implementar a interface LifeCy- cleController para fornecer reconfigurações dinâmicas.
No modelo Fractal os componentes são classificados e definidos de acordo com sua es- trutura (OW2, 2004):
• Componente base - um componente simples sem nenhuma interface de controle; • Componente primitivo - um componente com interfaces de controle, mas que não
expõe o seu conteúdo;
• Componente composto - um componente que expõe seu conteúdo;
• Subcomponente - um componente que está contido em outro componente;
• Supercomponente - um componente que contém subcomponente(s). Devido ao com- partilhamento de componentes, um componente pode ter vários supercomponentes;
• Componente de ligação - um componente que permite à comunicação entre outros componentes.
2.6 Soluções de Middleware para Interoperabilidade
De acordo com (WEGNER, 1996), interoperabilidade é a capacidade de dois ou mais compo-
nentes de software cooperarem apesar das diferenças de linguagem, interface e plataforma de execução. Em outra definição, interoperabilidade é a capacidade que um ou mais sistemas possuem para: conectar-se, compreender e trocar dados com o outro para um determinado propósito (BLAIR et al., 2011). Tradicionalmente, existe uma separação de interoperabilidade
sintática (assinatura de operações) e semântica (o "significado" das operações) (VALLECILLO; HERNANDEZ; TROYA, 2000). A primeira trata das questões em nível de ligação, enquanto a
segunda abrange os aspectos comportamentais em nível semântico da interoperabilidade de componentes.
No estudo introdutório do estado da arte da pesquisa sobre soluções para interoperabi- lidade de middleware por (BLAIR et al., 2011), algumas abordagens foram organizadas de
2.6 Soluções de Middleware para Interoperabilidade 17
• Middleware Tradicional - não permite interoperabilidade entre os diferentes estilos middleware e implementações específicas. Buscam um padrão comum / plataforma para todo o sistema distribuído. Estas tecnologias resolvem desafios de interopera- bilidade para a maioria das diferentes extensões focando a interoperabilidade entre sistemas e máquinas com hardware e linguagens de programação heterogêneos. A fi- gura 2.4 ilustra o padrão de interoperabilidade utilizado pela abordagem de middleware tradicional que fornece uma infraestrutura de software bem integrada e em rede para simplificar o desenvolvimento de aplicações distribuídas. Esta abordagem é inviável para ambientes pervasivos e dinâmico, onde os sistemas interagem espontaneamente, porque todas aplicações seriam obrigadas a serem implementadas usando o mesmo middleware;
Figura 2.4: Padrão de interoperabilidade utilizado pelo middleware tradicional (BLAIR et al.,
2011).
• Plataformas de Interoperabilidade - reconhecem que a heterogeneidade de mid- dleware é inevitável e, portanto, permite que clientes se comuniquem com um mid- dleware encontrado dinamicamente. A figura 2.5 mostra o padrão de interoperabi- lidade utilizado por plataformas de interoperabilidade que fornecem uma tecnologia de middleware independente para o cliente, servidor ou peer a ser implementado, a fim de garantir que a aplicação pode interoperar com todos os serviços, independen- temente das tecnologias de middleware que empregam. Essas soluções dependem de uma escolha em tempo de projeto para desenvolver aplicações que visem o uso de plataformas de interoperabilidade e, portanto, são inadequadas para outros casos de interoperabilidade, por exemplo, quando duas aplicações desenvolvidas sobre os di- ferentes middleware legado precisam de interoperabilidade espontânea em tempo de execução;
2.6 Soluções de Middleware para Interoperabilidade 18
Figura 2.5: Padrão de interoperabilidade utilizado por plataformas de interoperabilidade (BLAIR et al., 2011).
• Pontes - suportam a tradução bidirecional (comunicação) entre diferentes plataformas de middleware. Assim, os clientes em um domínio middleware podem interoperar com servidores em outro domínio middleware. A figura 2.6 ilustra o padrão de interoperabi- lidade utilizado por pontes de software que atuam como um mapeamento um-para-um entre os domínios; elas levam mensagens de um cliente em um formato e, em seguida, esta é empacotada para o formato do middleware servidor; a resposta é então mape- ada para o formato da mensagem original. Esta abordagem tem como desvantagem o esforço necessário para estabelecer pontes entre todos os diferentes protocolos de middleware;
Figura 2.6: Padrão de interoperabilidade utilizado por pontes de software (BLAIR et al., 2011).
• Soluções de Interoperabilidade Transparentes - permitem que duas aplicações le- gadas se comuniquem de forma transparente, sem qualquer alteração para estas apli- cações. A figura 2.7 apresenta o padrão de interoperabilidade utilizado por soluções de interoperabilidade transparentes. Nessa abordagem, as mensagens de protocolo específico, o comportamento e os dados são capturados pelo framework de interopera- bilidade e traduzido para uma representação intermediária. Em seguida, um mapeador subsequente traduz a representação intermediária para a representação do middleware legado específico. A utilização desta solução permite que um middleware possa ser mapeado para qualquer outro através do desenvolvimento destes dois elementos tradu-
2.6 Soluções de Middleware para Interoperabilidade 19 tores, ou seja, não é necessário o mapeamento direto para outro protocolo. O desafio com esta abordagem é o problema do maior divisor comum, que pode ocorrer devido à necessidade de identificar entre todos os protocolos um subconjunto de funcionali- dades similares a serem suportadas pela solução. Desta forma, quando o número de protocolos aumenta este subconjunto torna-se menor, restringindo o que é possível ser suportado pela abordagem.
Figura 2.7: Padrão de interoperabilidade utilizado por soluções de interoperabilidade trans- parentes (BLAIR et al., 2011).
• Mobilidade Lógica - supera heterogeneidade pela migração de aplicativos e serviços para o ambiente local de execução, assumindo que o ambiente tem os mecanismos para interpretar este código. A mobilidade lógica é caracterizada pelo uso de código móvel a ser transferido de um dispositivo e executado em outro. A figura 2.8 ilustra o padrão de interoperabilidade utilizado por soluções de mobilidade lógica. A abordagem para resolver interoperabilidade é, por conseguinte, simples; um serviço divulga o seu com- portamento e também o código para interagir com ele. Quando um cliente descobre o serviço desejado ele baixa e usa o código que é dinamicamente disponível para ele em tempo de execução. Os padrões de interoperabilidade utilizados por soluções de mobilidade lógica necessitam que todos os aplicativos estejam em conformidade com a mesma plataforma para que o software implantado possa ser executado.