• Nenhum resultado encontrado

1. Introdução

2.5. Middleware para RSSF

Devido a sua forte integração com o mundo físico e as características únicas mencionadas na Seção 2.1, RSSFs apresentam dificuldades consideráveis que tornam o desenvolvimento de aplicações uma tarefa não trivial. Segundo (HADIM; MOHAMED, 2006a) a inclusão de uma camada de middleware é uma possível abordagem para atender plenamente os desafios de projeto e implementação de tecnologias de RSSF.

O uso de plataformas de middleware no contexto da computação distribuída é um tema de pesquisa bastante consolidado possuindo benefícios como, por exemplo, permitir integração de sistemas e facilitar a construção de aplicações. No entanto, as abordagens de middleware tradicionais não podem ser aplicadas diretamente para RSSFs devido às características intrínsecas dos dispositivos presentes nessas redes, sendo os maiores limitadores as capacidade de memória e processamento dos nós. Portanto, faz-se necessário especificar e projetar middleware especificamente voltado para essas redes e seus requisitos.

É possível considerar um middleware para RSSF como uma infraestrutura de

software capaz de conectar: (i) os diferentes hardwares presentes na RSSF; (ii) os sistemas operacionais distintos, (iii) as diversas pilhas de protocolo existentes em cada plataforma para RSSF; (iv) e todas as aplicações utilizadas pelo usuário final.

Segundo (HADIM; MOHAMED, 2006a), uma solução de middleware completa deve conter um ambiente de execução que apoia e coordena múltiplas aplicações e serviços do sistema, tais como a agregação de dados, controle e políticas de gestão de adaptação. Dessa forma, o middleware permite que aplicações e mecanismos de controle usem recursos do sistema de forma adaptável e eficiente o suficiente para prolongar a vida da rede (i.e. economizar energia). Além disso, segundo (DELICATO, 2005), um middleware para RSSFs deve atuar nos planos de gerenciamento de energia, mobilidade, e execução de tarefas, existentes nos nós sensores.

Diversos serviços de middleware são especificados na literatura (DELICATO, 2005; HADIM; MOHAMED, 2006a; MOHAMED; AL-JAROODI, 2011; WANG et al., 2008). Tais serviços implementam as funcionalidades que são providas pelo

middleware. São exemplos de serviços típicos de middleware para RSSF: comunicação assíncrona, configuração de rede, descoberta, segurança e agregação de dados (Figura 20).

Figura 20. Localização dos serviços na organização em camadas.

O serviço de comunicação assíncrona permite que mensagens possam ser trocadas entre os fornecedores de dados (Publisher) e os assinantes (Subscriber). Nesse modelo, os assinantes recebem mensagens apenas sobre os assuntos, ou tópicos, nos quais possuem interesse. O serviço de descoberta interna é de fundamental importância para RSSFs, pois permite que os nós divulguem para a rede informações como: suas capacidades de hardware (processamento, RAM,

placas de sensores), os tópicos de fornecimentos de dados no caso de uma comunicação do tipo publish-subscrible e até seu nível de energia restante. Dessa forma, é possível gerenciar de maneira mais eficiente os recursos disponíveis, além de possibilitar a entrada de novos nós na rede durante a execução da aplicação. O serviço de configuração trata das decisões que o middleware pode tomar para realizar escolhas como protocolos de comunicação ou topologias que devem ser adotados para satisfazer algum requisito da aplicação. O serviço de segurança engloba funcionalidades como criptografia, confidencialidade, integridade e autenticação, mas também adiciona mecanismos específicos da área de RSASF como a atualidade dos dados (DELICATO, 2005). Por fim, o serviço de agregação consiste em combinar dados oriundos de múltiplos sensores objetivando principalmente a diminuição do número de mensagens que trafegam na rede, reduzindo assim, de forma indireta, o consumo de energia com transmissões redundantes de dados.

Atualmente existem diversas plataformas de middleware para RSSF como apresentado em (MOHAMED; AL-JAROODI, 2011), (HADIM; MOHAMED, 2006a), e (WANG et al., 2008) além de outros. No entanto, nesta Tese apenas um

middleware para RSSF é utilizado como alvo das implementações. O middleware MARINE (Middleware for Resource and mIssion oriented sensor Networks) (DELICATO et al., 2012).

O MARINE é uma plataforma de middleware projetada especificamente para RSSF, com base em um modelo de componentes e construído nos padrões de arquitetura de microkernel e REST (do inglês Representational State Transfer) (FIELDING; TAYLOR, 2000). A adoção de um modelo de componentes, juntamente com o padrão microkernel promove a dissociação e modularização das funcionalidades do sistema em componentes bem definidos que facilitam o gerenciamento das funcionalidades do middleware e proporcionam a separação das responsabilidades e recursos do sistema em unidades discretas. Ao utilizar uma abordagem baseada em REST os dados da rede podem ser acessados como recursos da Web, proporcionando uma camada de abstração que esconde de usuários e/ou aplicações as peculiaridades dos dispositivos de hardware e das

plataformas de software, além de permitir a integração de dados coletados com outros sistemas da Web. Além disso, o MARINE promove a interoperabilidade de redes de diferentes tecnologias, sendo alinhando com a tendência atual de construção de sistemas heterogêneos envolvendo múltiplas redes e aplicações.

As principais contribuições do MARINE para a área de RSASF são (ARAÚJO, 2011): (i) prover fácil acesso via Web aos dados gerados pela RSASF, tratando tais dados como recursos Web, e (ii) prover aos desenvolvedores de aplicações para RSASF capacidades para a instanciação apenas dos serviços específicos exigidos pela aplicação. Utilizando esta plataforma de middleware (ARAÚJO, 2011), os desenvolvedores podem configurar apenas os serviços necessários para a aplicação e as implementações de cada serviço eles desejam utilizar. O MARINE é responsável por gerenciar os serviços solicitados e suas implementações, realizando a instanciação e conexão dos componentes necessários para atender os requisitos das aplicações. Dos serviços definidos em (DELICATO, 2005), o MARINE implementa os serviços comuns de: configuração; inspeção e adaptação; e comunicação.

Figura 21. Arquitetura do MARINE. FONTE: ARAÚJO, 2011.

A Figura 21 apresenta a arquitetura do MARINE. O microkernel consiste no núcleo do middleware. Essa camada é responsável por inicializar o middleware e os serviços básicos que precisam ser carregados durante a inicialização e que permanecerão ativos durante todo o seu ciclo de vida. O MARINE define os seguintes repositórios: (i) componentes, (ii) perfis de componentes, (iii) políticas de adaptação, (iv) aplicação, (v) tarefas e (vi) eventos complexos. Os repositórios

de tarefas, de eventos complexos e de políticas de adaptação têm por objetivo unicamente armazenar as entidades associadas a eles. No topo da arquitetura estão os elementos de interface para a comunicação assíncrona (REST).