U NIVERSIDADE F EDERAL DE G OIÁS
I NSTITUTO DE I NFORMÁTICA
PAULO C ÉSAR F ERREIRA M ELO
CSVM: Uma Plataforma para
CrowdSensing Móvel Dirigida por
Modelos em Tempo de Execução
Goiânia
2014
U NIVERSIDADE F EDERAL DE G OIÁS
I NSTITUTO DE I NFORMÁTICA
AUTORIZAÇÃO PARA P UBLICAÇÃO DE D ISSERTAÇÃO
EM
F ORMATO E LETRÔNICO
Na qualidade de titular dos direitos de autor, AUTORIZO o Instituto de Informática da Universidade Federal de Goiás – UFG a reproduzir, inclusive em outro formato
ou mídia e através de armazenamento permanente ou temporário, bem como a publicar na
rede mundial de computadores (Internet) e na biblioteca virtual da UFG, entendendo-se
os termos “reproduzir” e “publicar” conforme definições dos incisos VI e I, respectivamente, do artigo 5o da Lei no 9610/98 de 10/02/1998, a obra abaixo especificada, sem que
me seja devido pagamento a título de direitos autorais, desde que a reprodução e/ou publicação tenham a finalidade exclusiva de uso por quem a consulta, e a título de divulgação
da produção acadêmica gerada pela Universidade, a partir desta data.
Título: CSVM: Uma Plataforma para CrowdSensing Móvel Dirigida por Modelos em
Tempo de Execução
Autor(a): Paulo César Ferreira Melo
Goiânia, 15 de Outubro de 2014.
Paulo César Ferreira Melo – Autor
Dr. Fábio Moreira Costa – Orientador
PAULO C ÉSAR F ERREIRA M ELO
CSVM: Uma Plataforma para
CrowdSensing Móvel Dirigida por
Modelos em Tempo de Execução
Dissertação apresentada ao Programa de Pós–Graduação do
Instituto de Informática da Universidade Federal de Goiás,
como requisito parcial para obtenção do título de Mestre em
Computação.
Área de concentração: Sistemas Distribuídos..
Orientador: Prof. Dr. Fábio Moreira Costa
Goiânia
2014
PAULO C ÉSAR F ERREIRA M ELO
CSVM: Uma Plataforma para
CrowdSensing Móvel Dirigida por
Modelos em Tempo de Execução
Dissertação defendida no Programa de Pós–Graduação do Instituto de
Informática da Universidade Federal de Goiás como requisito parcial
para obtenção do título de Mestre em Computação, aprovada em 15 de
Outubro de 2014, pela Banca Examinadora constituída pelos professores:
Prof. Dr. Fábio Moreira Costa
Instituto de Informática – UFG
Presidente da Banca
Prof. Dr. Carlos André Guimarães Ferraz
Centro de Informática – UFPE
Prof. Dr. Sérgio Teixeira de Carvalho
Instituto de Informática – UFG
Todos os direitos reservados. É proibida a reprodução total ou parcial do
trabalho sem autorização da universidade, do autor e do orientador(a).
Paulo César Ferreira Melo
Graduou–se em Ciência da Computação na UFG - Universidade Federal de
Goiás. Durante sua graduação, foi monitor no Instituto de Informática da
UFG e bolsista do CNPq em um trabalho de iniciação científica. Durante o
Mestrado, foi bolsista e colaborou no projeto M@TURE, desenvolvido em
parceria com INRIA Paris-Rocquencourt.
Dedico a todos que de forma direta ou indireta fizeram parte desta caminhada e
de diferentes maneiras, contribuiram no desenvolvimento deste trabalho.
Agradecimentos
Agradeço a Deus por me amparar nos momentos mais difíceis, me dando força
para encarar e superar as dificuldades, mostrar o caminho nas horas mais incertas e sempre
atender as minhas preces.
À minha família, a qual amo muito, pelo apoio, carinho e por serem o alicerce
que me manteve de pé durante esta importante etapa na minha vida.
À minha noiva e companheira Lanna Marla Andrade por sua paciência e compreensão durante minhas ausências, o seu amor sempre incondicional, os seus conselhos
me mantendo sempre lúcido em minhas decisões e por sempre acreditar em mim e se
esforçar para me manter motivado durante está longa jornada.
Aos amigos e colegas do grupo M@ture e do LABORA, que no pouco convívio
que tivemos, contribuiram com este trabalho.
À PRPPG da Universidade Federal de Goiás, pelo apoio financeiro durante a
elaboração deste trabalho.
Aos servidores do Instituto de Informática, em especial as servidoras Mirian e
Patrícia que em suas atribuições sempre se mostraram dispostas e prontas à esclarecer
minhas duvidas e me orientar nas questões relacionadas ao programa de pós-graduação.
Aos amigos que fizeram parte desse momento sempre me ajudando e incentivando.
Agradeço de forma especial ao meu orientador Fábio Moreira Costa pela atenção
e paciência durante estes últimos 5 anos e por ter sido um grande mestre e um exemplo
de profissional. Seus concelhos me guiaram pela vida acadêmica e sem o seu apoio e
motivação este trabalho certamente não seria possível.
Por fim, agradeço á todos pelo apoio.
“Que os vossos esforços desafiem as impossibilidades, lembrai-vos de
que as grandes coisas do homem foram conquistadas do que parecia impossível.”
Charles Chaplin,
referência desconhecida.
Resumo
Melo, Paulo César F.. CSVM: Uma Plataforma para CrowdSensing Móvel Dirigida por Modelos em Tempo de Execução. Goiânia, 2014. 140p. Dissertação
de Mestrado. Instituto de Informática, Universidade Federal de Goiás.
Recentes avanços na computação ubíqua tem colaborado para a ascensão de uma categoria emergente de dispositivos móveis que apresentam capacidades computacionais e
de sensoriamento, tais como smartphones e dispositivos vestíveis. A proliferação destes
dispositivos em uma rede de comunicação integram e contribuem para a evolução da Internet das Coisas. A presença desses dispositivos móveis aumenta a oportunidade para o
desenvolvimento de aplicações que utilizam da capacidade de sensoriamento desses dispositivos a fim de medir, inferir e entender os indicadores do ambiente. Uma vez que, os
dados sensoreados por essas aplicações são compartilhados entre diferentes dispositivos
móveis, surge o paradigma denominado CrowdSensing móvel. A complexidade de aplicações pertencentes ao domínio de CrowdSensing móvel está associada a fatores como
interoperabilidade entre diferentes dispositivos móveis, identificação e captação de dados provenientes desses dispositivos e adaptação de seu uso em ambientes heterogêneos
e dinâmicos. Com base nesse problema associado ao paradigma de CrowdSensing móvel, abordagens de engenharia de software dirigida por modelos (MDE) e de modelos em
tempo de execução constituem uma forma de lidar com aplicações complexas por meio
do uso de modelos. Neste trabalho propomos a utilização de uma abordagem dirigida por
modelos em tempo de execução para criação e processamento de consultas de crowdsensing móvel. Mostramos como essa abordagem pode ser empregada por meio da definição
de uma linguagem de modelagem específica para o domínio de crowdsensing móvel, denominada CSML. Neste sentido, construímos e validamos o metamodelo da CSML que
captura os principais aspectos do domínio e seu ambiente de execução, que envolve uma
máquina de execução de modelos descritos em CSML, denominada CSVM . Essa abordagem dirigida por modelos facilita a especificação de consultas de crowdsensing móvel,
além de possibilitar sua alteração durante seu processamento.
Palavras–chave
Crowdsensing Móvel, Internet das Coisas, Modelos em Tempo de Execução
Abstract
Melo, Paulo César F.. CSVM: A Model Driven Platform for Mobile CrowdSensing. Goiânia, 2014. 140p. MSc. Dissertation. Instituto de Informática, Universidade Federal de Goiás.
Recent advances in ubiquitous computing has contributed to the rise of an emerging
category of mobile devices that have computational capabilities and sensing, such as
smartphones and wearable devices. The proliferation of these devices in a communications network contribute to the evolution of the Internet of Things. The presence of these
mobile devices increases the chance for the development of applications using the sensing
ability of these devices to measure, and understand the environmental indicators. Once the
data sensoreados by these applications are shared between different mobile devices, arise
the paradigm called mobile CrowdSensing. The complexity of applications belonging
to the mobile CrowdSensing domain is associated with factors such as interoperability
between different mobile devices, data identification and capture from these devices and
adapting their use in heterogeneous and dynamic environments. Based on this problem
associated with the paradigm of mobile CrowdSensing, software engineering approaches
directed by models (MDE) and runtime models are a way of dealing with complex applications by using models. We propose the use of an approach run by runtime models for
creating and processing mobile crowdsensing queries. We show how this approach can be
used by defining a specific modeling language for mobile crowdsensing domain, called
CSML. In this sense, we constructed and validated the metamodel CSML that captures
the main aspects of the domain and its execution environment, which involves a execution engine models described in CSML called CSVM. This approach driven by models
facilitates the specification of mobile crowdsensing queries, and enable it changes during
processing.
Keywords
Mobile Crowdsensing, Internet of Things, Models at RunTime
Sumário
Lista de Figuras
12
Lista de Tabelas
14
1
15
17
17
18
20
20
Introdução
1.1
1.2
Objetivos
Motivação
1.2.1
1.3
1.4
2
Cenário
Contribuições
Organização da dissertação
Referencial Teórico
2.1
CrowdSensing
2.1.1
Internet das Coisas
2.1.2
Computação Móvel e Sensoriamento Móvel
2.1.3
Sensoriamento Participativo
2.1.4
CrowdSensing Móvel
Aplicações de Crowdsensing Móvel
Características de Crowdsensing Móvel
2.1.5
2.2
Considerações Gerais
Abordagem Dirigida por Modelos em Tempo de Execução
2.2.1
Engenharia Dirigida por Modelos
Modelos e Metamodelos
Linguagens de Modelagem Específicas de Domínio
2.2.2
2.2.3
Modelos em Tempo de Execução
Máquina de Execução de Modelos
User Interface - UI
Synthesis Engine - SE
Middleware - M
Service Broker - SB
2.2.4
2.3
3
Considerações Gerais
Conclusão
A Linguagem CSML
3.1
3.2
Terminologia
CSML
3.2.1
3.2.2
Metamodelo: Visão Geral
Metamodelo: Detalhamento
Esquema de Controle do Ambiente
22
22
23
25
25
26
26
27
27
28
28
29
31
32
33
35
36
36
37
37
37
38
39
40
42
44
45
Esquema de Controle da Consulta
Esquema de Dados
3.2.3
3.3
3.4
4
Exemplo de Uso
Modelo Geral de Execução
Considerações Finais
Arquitetura da CSVM
4.1
4.2
4.3
4.4
Visão Geral da Arquitetura
Arquitetura da CSVMProvider
4.2.1
Camada de Síntese
4.2.2
Camada de Middleware
4.2.3
Camada de Broker
Arquitetura da CSVM4Dev
4.3.1
Camada de Aplicação
4.3.2
Camada de Síntese
4.3.3
Camada de Middleware
4.3.4
Camada de Broker
Processo de Registro de Dispositivos
Registro na plataforma
4.5
4.6
5
4.5.1
Subscrição
4.5.2
Notificação
Considerações Finais
Implementação da CSVM
5.1
5.2
5.3
5.4
5.5
5.6
5.7
6
Processo de Consulta
Visão Geral
Tecnologias Utilizadas
5.2.1
Model-View-Controller
5.2.2
RESTFul
5.2.3
GCM
CSVMProvider
CSVM4Dev
Registro de dispositivos
5.5.1
Registro do dispositivo na CSVM4Dev
5.5.2
Registro de dispositivos na CSVMProvider
Processamento de consultas
5.6.1
Especificação de consultas na CSVM4Dev
5.6.2
Processamento de consultas na CSVMProvider
5.6.3
Processamento de consultas na CSVM4Dev
Considerações Finais
Estudo de Caso e Avaliação
6.1
Estudo de Caso
6.1.1
6.1.2
Descrição Geral
Modelagem do Cenário
1a etapa: Especificação e Modelagem
2a etapa: Processamento
3a etapa: Resposta
48
49
51
53
54
56
57
60
60
62
63
65
66
68
69
70
72
73
74
75
76
78
79
79
80
81
82
83
84
86
87
88
89
91
91
92
95
96
97
97
97
98
99
100
104
6.1.3
6.2
Considerações Gerais
Avaliação de Desempenho
6.2.1
6.2.2
Metodologia
Processamento do esquema de controle da consulta com variação da quantidade de dispositivos
6.2.3
7
7.2
7.3
8
Considerações Gerais
Trabalhos Relacionados
7.1
CrowdSensing Móvel
7.1.1
Medusa
7.1.2
Vita
7.1.3
MobIoT
Modelos em Tempo de Execução
7.2.1
CVM
7.2.2
MGridVM
Conclusão
Conclusão
8.1
110
Processamento e agregação do esquema de dados com variação na quantidade de tipos de sensores
6.3
108
Processamento e agregação do esquema de dados com variação na quantidade de dispositivos
6.2.5
107
Processamento do esquema de controle da consulta com variação na quantidade de tipos de sensores
6.2.4
105
105
105
Trabalhos futuros
111
112
113
113
114
116
118
120
120
121
123
124
125
Referências Bibliográficas
127
A
Esquemas do Cenário
133
B
Modelos do Estudo de Caso
136
Lista de Figuras
2.1
2.2
2.3
2.4
2.5
3.1
3.2
3.3
3.4
3.5
3.6
Iniciativas englobadas pela Internet das Coisas e relacionadas à CrowdSensing Móvel.
Internet das Coisas como resultado da convergência de diferentes visões
[5].
Iniciativas englobadas pela MDE
Arquitetura de metamodelagem - MOF [43].
Arquitetura em camadas de uma máquina de execução genérica
Representação Geral da G-CSML
Definição e uso da CSML usando a arquitetura de metamolagem da OMG.
Visão Geral do Metamodelo da CSML
Metamodelo que descreve o Esquema de Controle do Ambiente.
Pacote de enumerações mantidas pelo Esquema de Controle do Ambiente.
(a) e (b) representam respectivamente os tipos de sensores e operações
mantidos pelo metamodelo do ECS.
(b)
Tipos de operação.
Diagrama do metamodelo que descreve o Esquema de Controle da Consulta.
3.8 Diagrama do Metamodelo que descreve o Esquema de Dados.
3.9 Representação em X-CSML do esquema de controle para registro do
dispositivo.
3.10 Representação em X-CSML do esquema de controle da consulta (a) e
sua instância (b).
3.11 Representação em X-CSML do esquema de dados (a) e sua instância (b).
23
24
29
30
35
41
43
45
46
47
47
47
3.7
(b)
(b)
Instância do esquema de controle da consulta.
Instância do esquema dados.
3.12 Modelo de execução da CSVM.
4.1
4.2
4.3
Visão Geral da Plataforma CSVM
Arquitetura Geral da Plataforma CSVM
Arquitetura geral em camadas da CSVM, representado sua configuração
da CSVMProvider (a) e da CSVM4Dev (b).
(b)
4.4
4.5
4.6
4.7
4.8
4.9
Arquitetura em camadas da CSVM4Dev.
Modelo da Camada de Síntese da CSVMProvider.
Modelo da Camada de Middleware da CSVMProvider.
Modelo da Camada de Broker da CSVMProvider.
Camada de Aplicação da CSVM4Dev.
Modelo da Camada de Aplicação da CSVM4Dev.
Modelo da Camada de Síntese da CSVM4Dev.
48
50
52
52
53
53
53
54
57
58
59
59
61
62
64
66
67
69
4.10
4.11
4.12
4.13
Modelo da Camada de Middleware da CSVM4Dev.
Modelo da Camada de Broker CSVM4Dev.
Arquitetura de um registro.
Arquitetura de uma consulta.
5.1
Mapeamento da arquitetura em camadas da plataforma de acordo com o
padrão MVC.
Diagrama de classes da CSVMProvider.
Diagrama de classe da CSVM4Dev.
(a) e (b) representam layouts utilizados para configurar o registro do
dispositivo.
5.2
5.3
5.4
(a)
(b)
Tela de Registro do Dispositivo.
Tela de Seleção de Sensores.
5.5
5.6
5.7
5.8
Diagrama de sequência do registro do dispositivo na CSVM4Dev.
Diagrama de sequência do registro do dispositivo na CSVMProvider.
Diagrama de sequência da especificação de uma consutla na CSVM4Dev.
Diagrama de sequência do processamento de uma consulta na CSVMProvider.
5.9 Máquina de estados para seleção de recursos na CSVMProvider.
5.10 Máquina de estados para o processamento dos dados retornados pelos
dispositivos.
5.11 Diagrama de sequência do processamento de uma consutla na CSVM4Dev.
Diagrama de camadas da CSVM com as principais etapas na processamento de consultas.
6.2 Esquema de controle para registro do dispositivo descrito em X-CSML.
6.3 Esquema de controle da consulta descrito em X-CSML para o problema 3.
6.4 Instância do esquema de controle da consulta descrita em X-CSML para
o problema 3.
6.5 Esquema de dados descrito em X-CSML para o problema 3.
6.6 Instância do esquema de dados descrita em X-CSML para o problema 3.
6.7 Tempo de Processamento de Consultas com variação da Quantidades de
Dispositivos.
6.8 Tempo de Processamento de Consultas com 25, 50 e 100 Dispositivos.
6.9 Tempo de Processamento de Consultas com Variação da Quantidades de
Tipos de Sensores.
6.10 Tempo de Processamento e Agregação de Dados com Variação da Quantidade de Dispositivos.
6.11 Tempo de Processamento e Agregação de Dados com Variação a Quantidade de Tipos de Sensores.
70
71
72
74
81
85
87
88
88
88
89
90
92
93
94
95
96
6.1
7.1
7.2
7.3
Medusa - Arquitetura do Sistema [50].
Vita - Arquitetura [28].
Arquitetura do MobIoT [26].
99
100
101
102
102
104
108
109
110
111
112
115
116
119
Lista de Tabelas
6.1
6.2
Sensores utilizados por aplicações de crowdsensing conforme o problema
a ser modelado
Representação de campo e valor de uma consulta especificada a partir
do problema 3.
100
101
CAPÍTULO 1
Introdução
Em uma de suas definições, a Internet pode ser descrita como sendo um conglomerado de redes de comunicação, à qual vários computadores e dispositivos estão
conectados em escala mundial, usufruindo de serviços e recursos dela provenientes. A
Internet e a comunicação sem fio evoluíram de uma infraestrutura onipresente onde se conectava apenas computadores para um modelo onde é possível conectar também objetos e
aparelhos do dia-a-dia (coisas). Este avanço contribuiu para o surgimento de um novo paradigma, denominado Internet das Coisas, o qual vem ganhando cada vez mais espaço. A
ideia principal deste conceito é a presença pervasiva de uma variedade de coisas ou objetos – tais como sensores, atuadores, telefones móveis, etiquetas RFID (Radio-Frequency
IDentification) e outros – os quais possuem uma representação única na Internet e são
capazes de interagir entre si para alcançar objetivos comuns [13]. A unificação de todas
as coisas conectadas sobre uma infraestrutura comum enseja novas formas de interação,
dentre as quais pode-se destacar tanto a possibilidade de controlar remotamente as coisas
ao nosso redor, quanto de obter informações sobre seu estado.
A Internet das Coisas terá um alto impacto em vários aspectos do dia-a-dia
e comportamento de seus usuários. Partindo desta abordagem e considerando os atuais smartphones como um dos itens de competência da Internet das Coisas, podemos
classificá-los como um tipo complexo de coisa, pois apresenta um alto poder computacional e uma variedade de funções. Essas características inerentes a estes dispositivos são
provenientes do progresso em pesquisa e desenvolvimento na área de computação móvel.
Esse progresso possibilitou a execução de funções computacionais avançadas, de modo
que aplicações direcionadas a dispositivos móveis tornaram-se abundantes, complexas e
presentes nos mais diversos domínios como: entretenimento, saúde e negócios.
Atualmente, os smartphones são equipados com uma quantidade cada vez maior
de sensores embarcados, tais como acelerômetro, giroscópio, GPS, luminosidade, microfone, proximidade, câmera e outros, os quais possibilitam o sensoriamento de dados do
ambiente para que possam ser interpretados e processados por diversas aplicações. Este
cenário cria e aumenta a oportunidade para o desenvolvimento de aplicações que fazem
uso da capacidade de sensoriamento dos dispositivos móveis, transformando os dados
16
coletados em informação útil e de fácil acesso para o usuário.
Essas aplicações podem ser classificadas em duas categorias baseadas no tipo
de fenômeno a ser monitorado, caracterizando-as ou como pessoais, onde o fenômeno
monitorado diz respeito a um único indivíduo (por exemplo, o padrão de movimento
relacionado a um exercício do indivíduo), ou como coletivas, quando o fenômeno é
monitorado em larga escala, fazendo-se necessária a análise de dados provenientes de
vários indivíduos (por exemplo, para monitoramento do congestionamento no tráfego de
veículos). Deste último, surge o conceito de crowdsensing móvel, que a partir dos dados
coletados, visa medir e mapear fenômenos de interesse comum [23].
Dentre os problemas inerentes a este tipo de cenário destaca-se a dificuldade no
desenvolvimento de aplicações de crowdsensing móvel, devido a fatores como interoperabilidade entre diferentes dispositivos móveis, identificação e captação de dados provenientes desses dispositivos e adaptação de seu uso em ambientes heterogêneos e dinâmicos.
Assim sendo, a utilização de métodos tradicionais para transpor esses problemas, requer
um grande esforço. Buscando solucioná-los, este trabalho propõe uma abordagem dirigida
por modelos baseada nos princípios estabelecidos pela Engenharia Dirigida por Modelos
(Model-Driven Engineering, MDE), a qual descreve o comportamento da aplicação por
meio de uma linguagem de modelagem específica para o domínio de crowdsensing móvel.
Optamos por utilizar tal abordagem com o objetivo de reduzir de forma substancial a distância semântica entre o problema a ser resolvido e a plataforma utilizada,
promovendo o uso de abstrações mais próximas do domínio do problema. Dentre as iniciativas englobadas pela Engenharia Dirigida por Modelos, destaca-se a de Modelos em
Tempo de Execução ([email protected] ou m@rt), a qual será aplicada neste trabalho,
uma vez que possibilita a representação causalmente conectada do ambiente e das consultas de crowdsensing móvel que estão sendo processadas. Desta forma, o uso de m@rt
permite a adaptação a ambientes dinâmicos de crowdsensing, caracterizados pela entrada
e saída de dispositivos do espaço monitorado e/ou modificação da consulta, mantendo
uma representação atualizada do ambiente e das consultas em execução. De acordo com
essa abordagem, os modelos são o meio pelo qual usuários e/ou aplicações de terceiros
especifiquem e modifiquem consultas durante o seu processamento.
Com o intuito de demonstrar a viabilidade desta abordagem, construímos uma
plataforma dirigida por modelos em tempo de execução denominada CSVM, que permite
criar e executar aplicações de crowdsensing móvel por meio da interpretação de modelos
descritos em uma linguagem de modelagem específica para o domínio de crowdsensing,
denominada CSML.
Baseado na abordagem proposta, e com o intuito de demonstrar as capacidades
da plataforma, apresentamos um cenário de uma casa noturna que compreende um
conjunto de aplicações de crowdsensing móvel. Isso nos permitiu avaliar a abrangência
1.1 Objetivos
17
da CSML e o comportamento da CSVM. Foi realizado uma avaliação do desempenho
da plataforma, por meio da análise de quatro experimentos que refletem etapas críticas
do processamento de modelos realizado pela CSVM. Os resultados obtidos nos permitiu
avaliar além do desempenho também a escalabilidade da CSVM diante do aumento do
número de dispositivos e sensores envolvidos no processamento de uma consulta.
1.1
Objetivos
O objetivo geral deste trabalho é propor o uso de uma abordagem dirigida
por modelos para crowdsensing móvel por meio da construção de uma máquina de
execução de modelos capaz de prover serviços sensoriamento remoto participativo a
partir de um conjunto heterogêneo de recursos (dispositivos e sensores). A máquina
construída a partir desta abordagem foram projetadas para processarem modelos descritos
em uma linguagem de modelagem interpretada e específica de domínio, e que podem ser
modificados em tempo de execução. A modificação de modelos em tempo de execução
tem como finalidade manter uma auto-representação causalmente conectada do ambiente
e das consultas de crowdsensing especificadas.
Dentre os objetivos específicos, destacam-se:
• Descrever aplicações de crowdsensing móvel, por meio da abordagem descrita por
Modelos em Tempo de Execução;
• Projetar um metamodelo, que sustente a criação de modelos de crowdsensing,
retratados neste trabalho por esquemas de controle e de dados para, modelar e
interpretar aplicações de crowdsensing móvel construídas para diferentes cenários;
• Propor uma arquitetura para ambientes de crowdsensing que compreende uma máquina de execução de modelos projetada para execução de aplicações de crowdsensing e para fornecer serviços descritos por modelos de alto nível.
• Facilitar o desenvolvimento de aplicações de crowdsensing móvel;
• Implementar um protótipo da CSVM que permite a criação de cenários qualquer
dentro do domínio de aplicação de crowdsensing móvel;
• Realizar um avaliação de desempenho da plataforma por meio de quarto diferentes
experimentos que representam momentos críticos do processamento de modelos de
crowdsensing.
1.2
Motivação
As aplicações em dispositivos móveis são utilizadas constantemente para auxiliar as pessoas na realização de diversas atividades. Esses dispositivos apresentam re-
1.2 Motivação
18
cursos, como a presença de sensores embarcados, que estimulam o desenvolvimento de
aplicações complexas que fazem uso desses recursos de forma colaborativa visando, por
exemplo, ao bem-estar e segurança de seus usuários. Neste contexto aplica-se o conceito
de crowdsensing móvel, segundo o qual os dados gerados pelo sensoriamento feito por
um conjunto de dispositivos móveis distribuídos são transformados em informações utilizadas por diferentes aplicações.
A essência de crowdsensing móvel, bem como os principais desafios, está
na diversidade e quantidade de dispositivos associados, nas condições dinâmicas dos
cenários e no processo de identificação de dispositivos para atenderem a uma determinada
requisição [23].
Para demonstrar a abrangência das aplicações de crowdsensing e os principais
desafios enunciados, apresentamos um cenário que compreende as diferentes formas
como essas aplicações podem ser construídas e modificadas para atender a diferentes
necessidades dos usuários.
O cenário corresponde à utilização de aplicações de crowdsensing móvel para
realizar medições em uma casa noturna, visando manter e melhorar a qualidade do
ambiente, detectar riscos e auxiliar na correção de falhas.
Uma infraestrutura física de redes de sensores sem fio claramente atenderia o
propósito apresentado, porém com algumas restrições: o custo da instalação e manutenção
da estrutura; a dificuldade de ampliação da infraestrutura quando necessário; e a precisão
dos dados coletados, pois, apesar de serem instalados em pontos estratégicos e cobrirem
uma vasta área, as leituras dos sensores podem não corresponder com exatidão às informações do contexto real, podendo haver distorção entre esses dados. Uma aplicação de
crowdsensing móvel pode substituir essa infraestrutura e transpor as limitações apresentadas através do uso colaborativo de sensores embarcados em dispositivos móveis presentes
no ambiente. Desta forma, não há custo de instalação de uma estrutura de sensores físicos, a infraestrutura poderá ser ampliada por meio da alteração da consulta inicial quando
necessário, especificando uma quantidade maior de dispositivos a serem monitorados e
por fim, a precisão dos dados é maior pois a leitura é realizada por meio do dispositivo do
usuário o que representa com exatidão a informação no contexto real.
Por meio deste cenário, pretendemos demonstrar a flexibilidade da abordagem
proposta aplicada em diferentes contextos de crowdsensing, desde aplicações simples até
aplicações mais complexas. A subseção 1.2.1 descreve o cenário enunciado acima.
1.2.1
Cenário
Uma casa noturna, para obter o alvará de funcionamento deve seguir algumas
normas de segurança definidas pela ABNT. Essas normas regem condutas de prevenção e
1.2 Motivação
19
reação frente a possíveis acidentes e determinam um conjunto de problemas que podem
ser modelados por aplicações de crowdsensing.
Outra característica deste cenário, é a preocupação com o bem-estar de seus
usuários, exigindo controle do alto fluxo de pessoas e dos serviços fornecidos. Em suma,
para o conforto e segurança dos usuários algumas regras devem ser satisfeitas:
1. Possuir um sistema de detecção de incêndio - caso detectado aumento na temperatura e queda na umidade de forma drástica, um alerta deve ser disparado.
2. Manter o nível de ruído do ambiente em padrões aceitáveis; caso os níveis sonoros
estejam superiores àqueles considerados normais pela ABNT, o volume deve ser
diminuído;
3. Manter a temperatura do ambiente controlada em 22◦ C; caso a temperatura esteja
superior a 22◦ , deve ser mantido o sistema de refrigeração; caso a temperatura esteja
inferior a 22◦ , o sistema deve ser desligado;
4. Controlar a luminosidade do ambiente; caso a incidência de luz esteja abaixo do
determinado, algumas lâmpadas devem ser acesas; caso a incidência de luz esteja
acima do determinado, algumas lâmpadas devem ser apagadas;
5. Controlar a quantidade de pessoas no interior do ambiente; caso a quantidade
máxima de pessoas tenha sido atingida, deve ser interrompida a entrada de novas
pessoas.
O ambiente deve possuir sistemas automatizados que processam dados obtidos
pelo sensoriamento realizado pelos dispositivos móveis presentes no ambiente. Além dos
sistemas automatizados, os dados monitorados por aplicações de crowdsensing podem ser
utilizados por usuários com finalidades dependendo do tipo de usuário:
• Proprietário: a fim de auxiliar na gestão da casa noturna, como por exemplo para
obter o dia em que o ambiente é mais frequentado, e consequentemente poder lançar
promoções.
• Funcionário: a fim de prevenir doenças ocupacionais causadas, por exemplo, pela
exposição constante a altos níveis sonoros.
• Cliente: a fim de auxiliar na tomada de decisão, através de informações obtidas
referentes à agitação do ambiente (movimentação das pessoas presentes).
A importância das aplicações de crowdsensing neste cenário (ou em cenários semelhantes) pode ser evidenciada pela tragédia ocorrida em 27 de janeiro de 2013 em uma
boate localizada na cidade de Santa Maria no Rio Grande do Sul, onde laudos realizados
pelo Instituto Geral de Perícias (IGP) apontam que durante o incêndio, a temperatura no
interior da boate ultrapassou 100◦ C. Neste exemplo, mesmo não possuindo uma infraestrutura de sensores sem fio, a temperatura poderia ser medida através dos dispositivos
1.3 Contribuições
20
móveis das pessoas no interior da boate e as informações obtidas através dessa medição seriam enviadas a uma aplicação de gerenciamento da temperatura do ambiente que
acionaria um alarme antes de atingir proporções maiores ou poderia soar um alarme na
brigada de incêndio.
1.3
Contribuições
Este trabalho apresenta como contribuição, a aplicação de uma abordagem
dirigida por modelos para criação e processamento de consultas de crowdsensing móvel.
Associado a essa abordagem tem-se a definição de uma linguagem de modelagem
interpretada e específica para o domínio de crowdsensing móvel, denominada CSML
(CrowdSensing Modeling Language) que permite modelar o ambiente e as consultas
desse domínio. Nesse sentindo, foi construído e validado o metamodelo da CSML e seu
ambiente de execução.
Uma contribuição relacionada à CSML e seu ambiente de execução, é a demonstração de sua expressividade e aplicabilidade para construção e processamento de aplicações de crowdsensing móvel pertencentes a domínios altamente dinâmicos. Em nosso
trabalho, demonstramos como essa característica de dinamicidade é capturada e tratada
por meio do uso de modelos em tempo de execução, uma vez que, a abordagem proposta
permite que as consultas sejam modificadas durante sua execução, seja por intervenção
do usuário, ou por alteração no ambiente monitorado.
Outra contribuição deste trabalho está relacionada a construção do ambiente de
execução, o qual define a forma de associar o usuário com a plataforma para criação
e execução de modelos em tempo de execução descritos em CSML. O ambiente de
execução envolve uma máquina de execução de modelos específica para o domínio
de crowdsensing móvel denominada CSVM capaz de processar modelos em tempo de
execução descritos em CSML. Além de sua importância no emprego de técnicas de
processamento de modelos, a CSVM demonstra a flexibilidade na criação de consultas
a partir de modelos de alto nível que podem ser modificados em tempo de execução.
1.4
Organização da dissertação
O Capítulo 2 introduz o estado da arte associado à abordagem proposta, envolvendo o problema-alvo e a técnica empregada. O Capítulo 3 detalha o metamodelo para
construção da linguagem de modelagem específica de domínio (DSML) proposta, e descreve a execução de aplicações de crowdsensing utilizando uma abordagem dirigida por
modelos em tempo de execução apresentada na forma de uma arquitetura genérica para
construção do ambiente de execução. O Capítulo 4 descreve a arquitetura da plataforma
1.4 Organização da dissertação
21
proposta (CSVM), detalhando seus elementos, seguido do Capítulo 5 que apresenta detalhes da implementação da plataforma e o protótipo de uma aplicação de crowdsensing.
O Capítulo 6 demonstra como a abordagem proposta pode ser aplicada ao cenário descrito neste capítulo, apresentando um estudo de caso e analisando os resultados obtidos.
O Capítulo 7 discute outros trabalhos existentes que estão relacionados à execução de
aplicações de crowdsensing. Por fim, o Capítulo 8 apresenta as conclusões do trabalho,
discutindo suas contribuições, limitações e possíveis trabalhos futuros.
CAPÍTULO 2
Referencial Teórico
Este capítulo apresenta os conceitos sobre os quais o presente trabalho foi
desenvolvido. Desta forma, este capítulo foi dividido em duas seções que retratam as
principais áreas investigadas: referente à área fim, a Seção 2.1 apresenta os principais
conceitos do problema-alvo deste trabalho ou o domínio de aplicação que é CrowdSensing
móvel partindo de conceitos mais abrangentes até as principais características e aplicações
do domínio; e referente à área meio, a Seção 2.2 apresenta a técnica de modelos em
tempo de execução empregada neste trabalho para construção e execução das aplicações
de CrowdSensing móvel.
2.1
CrowdSensing
Nesta seção apresentamos os conceitos referentes ao problema alvo deste trabalho, partindo dos conceitos mais abrangentes que o englobam. Desta forma, a Figura
2.1 apresenta as iniciativas associadas à Internet das Coisas e relacionadas ao domínio
explorado neste trabalho, crowdsensing móvel. Assim, o domínio de crowdsensing móvel
pode ser dividido em sensoriamento participativo, ou seja, compartilhamento de sensores que requer o envolvimento ativo do indivíduo, e sensoriamento oportunista, ou seja,
compartilhamento de sensores de forma mais autônoma, onde o envolvimento do usuário é mínimo. Parte dos dispositivos associados a crowdsensing móvel são representados
por smartphones (presentes no contexto de Mobile Phone Sensing), embora este domínio
possa ser estendido a outros dispositivos/objetos móveis, tais como, dispositivos vestíveis
e veículos equipados com sensores. Todos essas iniciativas estão inseridas no contexto de
sensoriamento móvel, que compreende parte da Internet das Coisas.
Seguindo os conceitos apresentados, na Seção 2.1.1 apresentamos a definição e
as principais características da Internet das Coisas. A Seção 2.1.2 descreve o conceito
de sensoriamento móvel com base nos princípios da computação móvel. A Seção 2.1.3
aborda a definição de sensoriamento participativo e os seus principais desafios. Por fim,
a Seção 2.1.4 discute o conceito de CrowdSensing móvel, descrevendo suas principais
características e aplicações.
2.1 CrowdSensing
23
Figura 2.1: Iniciativas englobadas pela Internet das Coisas e relacionadas à CrowdSensing Móvel.
2.1.1
Internet das Coisas
A Internet das Coisas pode ser definida como sendo a presença pervasiva de uma
variedade de coisas ou objetos em torno de nós – tais como etiquetas RFID, sensores,
atuadores, smartphones, etc – os quais possuem representação única na Internet e são
capazes de interagir entre si para alcançar objetivos comuns. Essas “coisas” podem ainda
ser definidas como objetos que possuem identidades e personalidades virtuais que operam
em espaços inteligentes, utilizando interfaces inteligentes para se conectar e comunicar no
contexto social, ambiental e do usuário [5].
A partir dos conceitos apresentados, é possível vislumbrar algumas características de nível de sistema, e dentre as principais, estão a heterogeneidade dos dispositivos (coisas), escalabilidade, troca de dados por meio de redes sem fio, uso de soluções
para otimizar o uso de energia (bateria), capacidades de rastreamento e localização, autoorganização (capacidade de reagir de forma autônoma a alterações do ambiente), interoperabilidade semântica, gerenciamento de dados, segurança e privacidade [41].
A Figura 2.2 apresenta o paradigma de Internet das Coisas como resultado da
convergência de três diferentes visões. A primeira visão é derivada de uma perspectiva
orientada às "Coisas", compreendendo desde itens mais simples, como etiquetas RFID
(Radio-Frequency IDentification), até itens inteligentes, como smartphones. A tecnologia
Near Field Communication (NFC), juntamente com redes de sensores e atuadores sem fio
e RFID, são os principais responsáveis por conectar o mundo real com o mundo digital.
Visando melhorar aspectos de rastreabilidade e comunicação, muitos esforços vêm sendo
empreendidos a fim de criar protocolos e padrões globais de comunicação. Com este
objetivo, foi proposta uma arquitetura baseada em identificador único/universal/ubíquo
(uID), cuja ideia principal é o desenvolvimento de soluções para prover visibilidade única
e global dos objetos. Assim, a visão orientada às “coisas”, pressupõe que os objetos
(coisas) serão cada vez mais inteligentes, apresentando capacidades como comportamento
2.1 CrowdSensing
24
autônomo e proativo, sensibilidade ao contexto e comunicação colaborativa.
Figura 2.2: Internet das Coisas como resultado da convergência
de diferentes visões [5].
Passando para a visão orientada à Internet, temos como destaque uma iniciativa
para promover o Protocolo de Internet (IP) como a tecnologia de rede utilizada para a
conexão de objetos inteligentes ao redor do mundo, a qual foi inicialmente proposta pela
IPSO (IP for Smart Objects) Alliance [29]. É importante ressaltar que esta proposta só foi
possível devido à evolução do protocolo IP para a versão 6 (IPv6), permitindo representar
uma quantidade maior de endereços IP (o que será necessário para representar a ampla
gama de objetos conectados à Internet). Ainda nesta perspectiva, o termo web of things
(web de coisas) refere-se à reutilização dos padrões da Web para conectar e integrar os
objetos (coisas) na Web [24].
Por fim, têm-se a visão orientada a Semântica, que apresenta como principais
desafios interconectar e organizar a informação gerada pela Internet das Coisas [65].
Diante desses desafios, o uso de tecnologias semânticas oferece uma solução elegante.
Dentre os desafios relacionados à Internet das Coisas, o escopo deste trabalho envolve: a capacidade de interconectar diferentes dispositivos móveis de maneira uniforme,
o rastreamento e localização dos dispositivos, a capacidade de reagir de forma autônoma
a alterações no ambiente e o gerenciamento de dados gerados por esses dispositivos. A
Seção 2.1.2 apresenta os conceitos relacionados à computação móvel e sensoriamento
móvel que compreendem parte da Internet das Coisas.
2.1 CrowdSensing
2.1.2
25
Computação Móvel e Sensoriamento Móvel
A evolução dos dispositivos móveis tem feito com que eles apresentem cada vez
mais funcionalidades e recursos. Uma importante característica referentes a esses dispositivos, refere-se à sua mobilidade e sua capacidade de sensoriamento. Esta última, por
sua vez, dar-se-á devido aos smartphones atuais possuírem sensores embarcados, possibilitando a detecção e captação de dados do ambiente externo. Dentre os sensores mais
comuns a esses dispositivos, podemos encontrar: acelerômetro, giroscópio, GPS, luminosidade, bússola digital, captação de áudio (microfone), proximidade e detecção de imagem (câmera). Coletivamente, esses sensores estão proporcionando aos desenvolvedores
a possibilidade de investir em novas aplicações que fazem uso destas informações e geram
conteúdo significante para o usuário.
Este cenário contribuiu para o surgimento de novas aplicações pertencentes
a uma ampla variedade de domínios, tais como saúde, redes sociais, monitoramento
ambiental, segurança e transporte, originando uma área de pesquisa denominada Mobile
Phone Sensing [38].
A combinação destes avanços tem aberto portas para pesquisas inovadoras e
conduzido o desenvolvimento de aplicações de sensoriamento para um patamar que tem
revolucionado tanto setores de negócios quanto nossas vidas cotidianas.
Entretanto, um dos grandes impasses desta abordagem refere-se à arquitetura,
onde há pouco ou nenhum consenso, sobre quais componentes da arquitetura devem ser
executados nos smartphones e quais devem ser executados em servidores externos (por
exemplo, na nuvem). Alguns pesquisadores propõem, por exemplo, que os dados brutos
dos sensores não devem ser enviados para a nuvem, respeitando questões de privacidade
[38] [34].
Por outro lado, um dos principais benefícios do uso de computação em nuvem é a
capacidade de calcular e extrair grandes volumes de dados de vários de usuários, podendo
também compartilhar uma versão agregada desses dados com a população em geral, ao
mesmo tempo em que preserva a identidade dos usuários.
2.1.3
Sensoriamento Participativo
O avanço em pesquisas relacionadas ao sensoriamento móvel contribui para o
surgimento de um novo paradigma, denominado Sensoriamento Participativo. O sensoriamento participativo é o processo pelo qual indivíduos e comunidades usam cada vez
mais as capacidades de um conjunto de dispositivos móveis e serviços em nuvem para
coletar e analisar dados [19].
Em outra definição, o sensoriamento participativo compreende tarefas implantadas nos dispositivos móveis para formar redes de sensores participativas (RSPs) interati-
2.1 CrowdSensing
26
vas que permitem aos usuários públicos e profissionais coletarem, analisarem e compartilharem o conhecimento local [10]. Desta forma, um dos principais benefícios do sensoriamento participativo móvel é o aumento do conhecimento que será adquirido sobre o
mundo real, devido ao grande número de dispositivos móveis.
Várias aplicações podem ser desenvolvidas segundo este paradigma e em diferentes áreas, como: planejamento urbano, gestão de recursos naturais e saúde pública.
Um dos desafios enfrentados por esta abordagem é que dado o número crescente
de dispositivos móveis capazes integrar este cenário, as abordagens de detecção participativa devem ser escaláveis [25].
2.1.4
CrowdSensing Móvel
Com a evolução da computação móvel, crowdsensing móvel surge como um
novo termo referindo-se ao compartilhamento de informações coletadas a partir de diferentes dispositivos móveis, a fim de medir e mapear fenômenos de interesse comum. Para
realizar esta coleta, há duas possíveis maneiras: de forma participativa, onde os usuários
exercem uma ação por meio do smartphone e disponibilizam os dados sensoriados; e de
forma oportunista, onde o usuário inicialmente libera o acesso da aplicação aos dados sensoriados e esta, por sua vez, quase de forma autônoma, envia os dados para um servidor
backend para processamento [23].
Aplicações de Crowdsensing Móvel
As aplicações de crowdsensing móvel (Mobile Crowdsensing, MCS) podem ser
classificadas em três categorias diferentes baseadas no tipo de fenômeno a ser monitorado,
que pode ser: ambiental, de infraestrutura e social [23].
Aplicações MCS ambientais monitoram fenômenos naturais, como por exemplo
os níveis de poluição em uma determinada cidade. Essas aplicações permitem realizar o
monitoramento de vários fenômenos ambientais de grande escala.
Aplicações de infraestrutura englobam fenômenos de grande escala relacionados
com a infraestrutura pública. Exemplos deste tipo de aplicação incluem a disponibilidade
de estacionamento, condições das estradas, medição de congestionamento de tráfego em
tempo real, entre outras.
Por último, tem-se as aplicações sociais, onde os usuários compartilham informações “monitoradas” entre si a fim de colaborarem para uma causa comum. Partindo
desta definição, as pessoas podem, por exemplo, compartilhar seus hábitos alimentares e
comparar com os de outras pessoas. Uma aplicação desse tipo poderia ser utilizada por
uma comunidade de diabéticos por exemplo.
2.1 CrowdSensing
27
Características de Crowdsensing Móvel
Partindo do princípio de que milhões de pessoas possuem pelo menos um
dispositivo móvel (tais como os smartphones), as aplicações de crowdsensing surgem
como uma alternativa de baixo custo e tempo, reduzindo esforços para o desenvolvimento
de infraestruturas especializadas de sensores.
Ambientes de crowdsensing móvel são característicos por apresentarem alta
dinamicidade, de modo que os dispositivos móveis, o tipo de dado de cada sensor e a
qualidade (em termos de precisão, latência e confiança) podem mudar aleatoriamente.
Isto ocorre devido a fatores como a mobilidade dos dispositivos, autonomia de bateria,
canais de comunicação e preferências do proprietário. Com base neste pressuposto, a
literatura cita como um problema complexo a garantia da qualidade dos dados desejados
e a dificuldade na identificação do conjunto certo de dispositivos que podem fornecer tais
informações [23].
Uma outra característica importante, intrínseca a este cenário, é a possibilidade
de reutilização dos dados monitorados e captados pelos sensores. Assim sendo, para o
provimento de um serviço eficiente que suporte aplicações concorrentes, é fundamental
primeiramente identificar as necessidades de dados comuns e consequentemente suportar
o reuso dos dados. Por fim, para garantir a colaboração e participação massiva dos
usuários deve-se atentar às formas de incentivo, visando recrutar, engajar e reter os
participantes envolvidos. [62]
2.1.5
Considerações Gerais
Nesse capítulo apresentamos o conceito de crowdsensing móvel e suas principais
características. Os conceitos apresentados nesta seção são fundamentais para compreensão deste trabalho, uma vez que este trabalho se propõe a apresentar uma plataforma
dirigida por modelos a fim de diminuir a complexidade existente no desenvolvimento e
execução de aplicações de crowdsensing móvel. Com intuito de facilitar a compreensão
da técnica empregada, a Seção 2.2 apresenta os principais conceitos relacionados à abordagem dirigida por modelos, mais especificamente à engenharia dirigida por modelos,
explorando principalmente as características de modelos em tempo de execução e máquinas de execução de modelos.
2.2 Abordagem Dirigida por Modelos em Tempo de Execução
2.2
28
Abordagem Dirigida por Modelos em Tempo de Execução
Nesta seção discutiremos a abordagem dirigida por modelos em tempo de
execução a qual foi adotada neste trabalho. Com esta abordagem, os modelos são tratados
como artefatos tanto para o desenvolvimento quanto para a execução de aplicações,
deixando de representar apenas esboços de ideias e documentação [54]. A Seção 2.2.1
apresenta os princípios da engenharia dirigida por modelos. A Seção 2.2.2 e apresenta os
principais conceitos de modelos em tempo de execução. Por fim, a Seção 2.2.3 discute a
construção de máquinas de execução de modelos utilizadas para realizar a abordagem de
modelos em tempo de execução empregada neste trabalho.
2.2.1
Engenharia Dirigida por Modelos
Model-Driven Engineering (MDE) refere-se a um conjunto de técnicas para
permitir o uso de modelos como os principais artefatos de desenvolvimento no processo
de engenharia de software [22]. Para este propósito, a utilização de modelos pode abranger
as diversas áreas da engenharia de software (desde o desenvolvimento até a manutenção),
não se restringindo à compreensão ou documentação de um sistema de software.
A necessidade de lidar com a complexidade evolutiva encontrada no desenvolvimento de sistemas de software é um dos fatores que contribuem para o emprego de
abordagem dirigidas por modelo. O progresso vivido em diversas áreas da Computação,
mais incisivamente em termos de capacidade de processamento e ubiquidade, contribuiu
para a construção de aplicações cada vez mais complexas, as quais utilizam técnicas e tecnologias capazes de sustentá-las em ambientes heterogêneos e dinâmicos (em constante
mudança).
Assim sendo, a utilização de métodos tradicionais de desenvolvimento para
concepção dessas aplicações requer um grande esforço. Um dos principais fatores que
dificultam o desenvolvimento dessas aplicações é a distância semântica entre o problema
a ser resolvido e a plataforma utilizada na sua implantação. Diante desta dificuldade,
abordagens de MDE propõem, por meio da utilização de abstrações mais próximas do
domínio do problema, reduzir essa distância.
O termo Engenharia Dirigida por Modelos engloba recentemente várias iniciativas, como Model-Driven Development (MDD), Model-Driven Architecture (MDA) e
Modelos em Tempo de Execução (Figura 2.3).
A primeira iniciativa a propor um conjunto de padrões e princípios para o uso sistematizado de modelos foi a MDA, que foi concebida com o objetivo de permitir a descri-
2.2 Abordagem Dirigida por Modelos em Tempo de Execução
29
Figura 2.3: Iniciativas englobadas pela MDE.1
ção funcionalidades de um sistema independentemente de plataforma de implementação,
promovendo a interoperabilidade e portabilidade do sistema [57].
Como objetivos das abordagens de MDD, têm-se a construção de linguagens de
modelagem e transformações capazes de gerar artefatos da plataforma de implementação
mediante a transformação dos modelos descritos por meio dessas linguagens [55]. Outros
objetivos da MDE compreendem: aumentar a velocidade de desenvolvimento, melhorar a
qualidade do software, tornar os componentes de software reusáveis, gerir a complexidade
através da abstração, propiciar um ambiente produtivo e sustentar a interoperabilidade e
portabilidade.
Modelos e Metamodelos
Partindo dos princípios da MDE, o uso de modelos é proposto não apenas como
representação visual, mas como definição formal dos elementos de um software em construção [54]. Desta forma, um modelo é uma abstração ou representação reduzida de um
sistema, que abstrai a complexidade de seus elementos. Um modelo pode ser representado de forma gráfica ou textual e é formalizado por uma linguagem de modelagem cujas
construções são definidas por um metamodelo.
A linguagem de modelagem é definida por sua sintaxe e semântica, da mesma
forma que outras linguagens formais. De modo geral, a sintaxe de uma linguagem de
modelagem pode ser dividia em duas partes: sintaxe concreta que representa sua notação
textual ou gráfica, e sintaxe abstrata, que representa os conceitos da linguagem e os
relacionamentos entre eles. A semântica também pode ser dividida em duas partes: a
1 Figura
extraída do material da disciplina Tópicos em Engenharia Dirigida por Modelos, ministrada
pelo professor Fábio Moreira Costa no ano 2011.
2.2 Abordagem Dirigida por Modelos em Tempo de Execução
30
semântica estática, que define critérios de validação dos modelos, e a semântica dinâmica,
que define o significado dos modelos em sua execução.
Existem diferentes abordagens para descrever a semântica dinâmica de linguagens de modelagem as quais podem ser agrupadas em categorias [9]: por tradução, onde a
semântica da linguagem é definida pela tradução de seus conceitos em conceitos de outra
linguagem que possui uma semântica precisa; operacional, que permite modelar o comportamento operacional dos elementos descritos pela linguagem. A semântica operacional
é incorporada ao interpretador ou mecanismo que processa e executa os modelos; por extensão, que permite a descrição da semântica como uma extensão de outra linguagem; e
denotacional, que é definida pelo mapeamento entre as construções da linguagem e o domínio semântico que envolve elementos matemáticos representando elementos primitivos
da semântica.
Um metamodelo define o que pode ser expresso em um modelo em termos
de construções para representação das entidades do domínio e seus relacionamentos. O
metamodelo expressa as características de um domínio e pode ser utilizado para instanciar
diferentes modelos para um mesmo domínio. Desta forma pode-se dizer que um modelo é
uma instância de um metamodelo. Neste trabalho, demonstramos essa característica pela
definição de um metamodelo para o domínio de crowdsensing móvel, o qual é utilizado
para construir um modelo para especificação de consultas de crowdsensing móvel.
Figura 2.4: Arquitetura de metamodelagem - MOF [43].
Com a popularização da abordagem dirigida por modelos, fez-se necessária a padronização da construção de modelos e metamodelos, sendo que uma das iniciativas mais
importantes nesse sentido foi conduzida pelo OMG (Object Management Group), por
meio de uma arquitetura de metamodelagem denominada MOF (Meta-Object Facility),
ilustrada na Figura 2.4 [43]. A arquitetura apresentada descreve a especificação da MOF
2.2 Abordagem Dirigida por Modelos em Tempo de Execução
31
em quatro camadas, onde cada elemento de uma camada inferior é uma instância de algum elemento da camada superior. A distribuição em camadas é especificada da seguinte
forma [54]:
• Camada M3: representa o meta-metamodelo utilizado para construção de metamodelos. Esta camada integra a especificação da MOF que, possui um modelo formalizado por meio de suas próprias abstrações (modelo MOF), o que elimina a
necessidade de um nível superior. A partir deste modelo, é possível construir metamodelos que descrevem a sintaxe abstrata e semântica estática de linguagens de
modelagem para diversos domínios. Essas linguagens integram o nível M2.
• Camada M2: possui metamodelos que descrevem a sintaxe abstrata e semântica
estática. A UML (Unified Modeling Language) é um exemplo de linguagem de
modelagem definida a partir do modelo MOF. Esses metamodelos são utilizados
para construir os modelos que integram o nível M1.
• Camada M1: composta por modelos que descrevem aplicações e sistemas usando
as definições presentes em M2. Esses modelos representam os objetos existentes no
nível M0. Desta forma, essa camada contém por exemplo, as classes de um sistema
orientado à objetos ou as definições de tabelas de um banco de dados relacional.
• Camada M0: integrada por objetos que representam entidades do mundo real.
Outra definição proveniente da especificação da MOF, é o padrão para representação de modelos no formato XMI (XML Metada Interchange), utilizado para o intercâmbio de modelos usando XML.
Linguagens de Modelagem Específicas de Domínio
Uma linguagem de modelagem específica de domínio (Domain Specific Modeling Language - DSML) é uma linguagem de modelagem, que por meio das definições
descritas no metamodelo, associada a uma sintaxe concreta e uma semântica operacional, permite a construção de modelos para um determinado domínio da aplicação. Assim
sendo, as DSMLs representam aspectos estruturais e comportamentais do domínio da
aplicação.
Grande parte do sucesso no emprego de abordagens dirigidas por modelos está
associada à utilização de DSMLs [21]. O uso dessa abordagem aplicada a um domínio
específico permite atingir um alto grau de automatização no processamento de modelos.
Uma DSML captura os conceitos, relacionamentos, restrições e semânticas do
domínio da aplicação e permite que os usuários programem de forma declarativa por
meio da construção de modelos [11]. As DSMLs possuem duas finalidades distintas:
automatizar a geração de código-fonte com base em um modelo específico de domínio
ou interpretar em tempo de execução modelos específicos de domínios para identificar
2.2 Abordagem Dirigida por Modelos em Tempo de Execução
32
as necessidades dos usuários. Neste trabalho, foi proposta uma i-DSML para o domínio
de crowdsensing. Uma i-DSML (Interpreted-DSMLs) segue a definição tradicional de
DSML proposta pela MDE, tendo como diferença o fato que ela requer uma máquina de
execução que interpreta modelos em tempo de execução.
2.2.2
Modelos em Tempo de Execução
Um problema inerente do gerenciamento de sistemas e principalmente de aplicações móveis é a constante variação dos ambientes nos quais eles estão imersos, fazendo-se
necessária uma adaptação do sistema ao ambiente. Modelos têm sido empregados como
meio para lidar com este tipo de complexidade que envolve o gerenciamento de sistemas em tempo de execução. Para esta finalidade, deve-se implantar modelos em tempo
de execução ([email protected] ou m@rt) que proveem representações apropriadas dos
elementos de um sistema em execução, proporcionando sua adaptação e evolução sem a
necessidade de interromper seu ciclo [8].
Modelos em tempo de execução retomam a ampla visão de MDE, onde considera
que os modelos não são apenas artefatos primários de desenvolvimento, mas também são
o principal meio pelo qual os desenvolvedores compreendem, interagem, configuram e
modificam o comportamento do software em tempo de execução [22].
Outra importante característica desses modelos é que eles estão diretamente
relacionados à reflexão computacional, visto que ambos buscam definir representações
que refletem o sistema em execução, possuindo ainda uma relação de causalidade entre o
modelo e o sistema.
Em uma abordagem mais visionária, pode-se imaginar modelos de tempo de
execução sendo utilizados para corrigir erros de projeto ou para implantar novas decisões
de projeto em um sistema em execução. Da perspectiva de evolução do software durante
sua execução, um modelo em tempo de execução pode ser visto como modelo de
desenvolvimento ao vivo, que permite a evolução dinâmica do mesmo.
Desde a concepção de modelos em tempo de execução, várias técnicas vêm
sendo investigadas e as principais dimensões incluem [8]:
• Estrutura versus Comportamento: Os modelos estruturais tendem a enfatizar a
forma como um software é construído atualmente. Já os modelos comportamentais
partem de uma ótica de como o sistema executa, podendo ser representados em
termos de fluxos de eventos.
• Procedural versus Declarativa: O modelo pode ser procedural, que reflete a
estrutura e o comportamento do sistema detalhando os procedimentos/passos a
serem executados, ou o modelo pode ser mais declarativo, por exemplo, em termos
de objetivos do sistema, descrevendo a tarefa a ser executada sem se preocupar
2.2 Abordagem Dirigida por Modelos em Tempo de Execução
33
com detalhes de como o modelo será executado pelo mecanismo de execução de
modelos.
• Funcional versus Não-funcional: A maioria dos modelos baseia-se nas funcionalidades do sistema, mas há também a necessidade de modelos que capturem e
representem características não funcionais (por exemplo, aspectos de segurança).
• Formal versus Informal: Os modelos formais possuem a vantagem de apoiar o
“raciocínio” automático sobre o estado e o comportamento do sistema, mas podem
não capturar ou expressar adequadamente os conceitos do domínio requerido de
uma forma simples e acessível, por exemplo, aos usuários finais. Modelos informais
são mais acessíveis aos usuários, porém são mais inconsistentes e incompletos que
os modelos formais.
2.2.3
Máquina de Execução de Modelos
Além de descreverem sistemas estaticamente, modelos também podem ser usados para descrever o comportamento de sistemas em tempo de execução. Segundo a MDE,
um sistema deve ser descrito por modelos de forma independente de uma plataforma específica (Platform Independent Model - PIM) e, por meio de linguagens de transformação
de modelos implementadas por mecanismos específicos, o modelo do sistema deve ser
transformado em um modelo específico para uma determinada plataforma (Platform Specific Model - PSM) [57]. Desta forma, o foco do processo de desenvolvimento passa a ser
centrado em modelos e não mais em código.
A transformação de um modelo independente de plataforma em um modelo
específico de plataforma é realizada por meio de máquinas de execução de modelos [35].
Essa transformação compreende o processamento de modelos (PIM) pelas máquinas de
execução de modelos, que adicionam comportamento aos modelos, gerando um modelo
específico para a plataforma alvo. Em abordagens que envolve a execução dinâmica de
modelos, essa transformação resulta em comandos a serem aplicados no sistema.
Máquinas de execução de modelos têm como premissa básica que o custo do
desenvolvimento possa ser transferido e/ou eliminado, por meio de uma plataforma que
formula, sintetiza e executa serviços relacionados à um domínio específico de aplicação
[17].
De modo geral, essas máquinas tendem a ser construídas para para processar modelos em UML (Unified Modeling Language [52]. Contudo, outras abordagens empregam
essas máquinas para execução de modelos específicos de domínios [3, 17].
Além disso, uma máquina de execução de modelos é utilizada para ensejar o
emprego de modelos na construção e adaptação de aplicações, sendo capaz de interpretálos em tempo de execução. Como uma de suas atribuições, a máquina de execução
2.2 Abordagem Dirigida por Modelos em Tempo de Execução
34
é responsável por capturar e processar de forma operacional a semântica dinâmica da
linguagem. Para possibilitar a criação de aplicações complexas, a máquina de execução,
bem como o metamodelo da DSML (Linguagem de Modelagem Específica de Domínio),
devem incorporar grande parte do conhecimento específico de seu domínio.
Uma máquina de execução de modelos para domínios específicos possui o
comportamento do modelo do sistema embutido em sua própria construção, de forma
a simplificar a modelagem do sistema, uma vez que elimina a necessidade de definir
diferentes modelos para diferentes situações de um mesmo sistema. Em contrapartida, em
uma máquina de execução de UML o comportamento é capturado por meio de diagramas
comportamentais (por exemplo, diagramas de estado).
O conceito de máquinas virtuais de execução de modelos foi definido com base
na abordagem específica de domínio e foi apresentado para o domínio de comunicação,
por meio da CVM (Communication Virtual Machine) [17] e para o domínio de microgids,
por meio da MGridVM (Microgid Virtual Machine) [4]. Neste sentido, este trabalho
apresenta uma máquina virtual de execução de modelos para o domínio de crowdsensing
móvel.
Conforme ilustrado na Figura 2.5, à arquitetura de máquinas de execução de
modelos apresentam uma arquitetura padrão disposta em quatro camadas. Cada máquina
possui uma linguagem de modelagem específica de domínio. Cada camada mantém um
modelo em tempo de execução do sistema, em seu respectivo nível de abstração. A manipulação desse modelo em tempo de execução ocorre por meio de eventos gerados pelas
camada subjacentes ou do sistema, ou por meio de chamadas das camadas sobrejacentes,
ou de alterações feitas no modelo pelo usuário utilizando uma linguagem de modelagem.
Eventos são interações entre as camadas que têm sua origem em um nível inferior
para um nível superior ou entre o sistema e a máquina de execução de modelos. Em
contrapartida, chamadas são interações entre as camadas que ocorrem no sentido contrário
dos eventos, com origem em um nível superior para um nível inferior ou entre a máquina
de execução de modelos e o sistema.
Uma vez gerado um evento, por alguma camada ou pelo sistema, esse evento
é capturado pela camada imediatamente superior, e caso possua mecanismos para tratamento desse evento, ele é tratado e as operações realizadas resultam na alteração do
modelo em tempo de execução mantido pela camada. Por outro lado, caso não haja mecanismos para o tratamento do evento gerado, eles são repassados para a camada imediatamente superior à camada que o capturou. Desta forma, o evento passa por todas as
camadas em busca de mecanismos para o seu tratamento, caso o evento atinja a camada
mais superior e ainda assim não foi tratado, o usuário é notificado e a responsabilidade em
resolvê-lo é repassada a ele. Uma vez que, modelos em tempo de execução apresentam
uma conexão casual com o sistema, as alterações executadas no modelo são aplicadas
2.2 Abordagem Dirigida por Modelos em Tempo de Execução
35
também no sistema.
Figura 2.5: Arquitetura em camadas de uma máquina de execução
genérica
O processamento dos modelos construídos pelo usuário envolve as quatro camadas da máquina de execução de modelos que serão detalhadas abaixo.
User Interface - UI
Esta camada é responsável por prover uma interface externa para utilização da
plataforma. Desta forma, esta camada possibilita ao usuário criar, alterar, salvar e validar
modelos a serem interpretados pela máquina de execução.
De modo geral, a camada de interface com o usuário permite a definição,
validação e gerenciamento de modelos. A validação mantém os modelos consistentes
com as regras definidas no metamodelo. A UI apresenta três principais componentes:
(1) Modeling Environment (ME), que fornece aos usuários especialistas um ambiente
gráfico de modelagem para facilitar a criação de modelos específicos de domínio; (2)
User Interface (UI), que fornece uma interface amigável a usuários casuais para facilitar
2.2 Abordagem Dirigida por Modelos em Tempo de Execução
36
a criação de modelos específicos de domínio; e (3) Schema Transformation Environment
(STE)responsável pela validação e transformação dos modelos criados pelo usuário (na
ME e UI) em modelos textuais baseados em XML [68]. Em seguida, o modelo é enviada
para camada SE.
Synthesis Engine - SE
Esta camada é responsável pela transformação de um modelo fornecido pela UI
em uma representação algorítmica ou script de controles a serem executados pela camada
de middleware. Essa camada mantém um modelo em tempo de execução com o estado
atual do sistema.
Alterações no modelo em tempo de execução podem ocorrer: (1) pela alteração
no modelo de entrada realizada pelo usuário (por meio da UI); ou (2) por mudanças no
sistema controlado. No primeiro caso é realizado o cálculo da diferença entre o novo
modelo de entrada e o modelo mantido em tempo de execução na camada SE, com
o objetivo de evitar a geração desnecessária de scripts de configuração. Em seguida,
é gerado um script para aplicar as diferenças no sistema. No segundo caso, após a
camada SE receber eventos informando que houve mudanças no sistema, esses eventos
são analisados e o modelo em tempo de execução mantido pela camada é atualizado. Em
seguida, a camada SE informa que houve alterações à camada UI para que atualize o
modelo especificado pelo usuário [17].
Os eventos recebidos da camada inferior (CM) que a SE não possui mecanismos
para tratá-los, são repassados para camada superior (UI) para que o usuário possa tratá-los
de forma adequada.
Middleware - M
A camada de middleware é responsável por executar as requisições/scripts de
controle gerados pela camada SE e também gerenciar os serviços providos pela máquina
de execução (englobando as tarefas de execução). Após execução dos scripts, ela se
encarrega de gerar comandos a serem executados na camada de broker (SB). Além disso,
é responsabilidade desta camada a aplicação de propriedades não-funcionais no script
executado, como por exemplo autenticar os comandos gerados em conformidade com o
privilégio de acesso do usuário.
Os eventos ou exceções geradas pela camada SB são manipulados pela camada
de middleware. Caso a camada não possua mecanismos para tratar esses eventos, eles são
enviados à camada acima (SE) para serem tratados.
2.3 Conclusão
37
Service Broker - SB
A camada Service Broker (SB), ou simplesmente broker, fornece uma API para
a camada de middleware que permite interagir com a aplicação/sistema subjacente à
máquina de interpretação [68]. Essa camada é responsável por gerenciar os recursos, que
são elementos finais controlados pela máquina de execução, tendo como objetivo prover
uma interface de acesso aos recursos de maneira independente de tecnologia.
Além de gerenciar os recursos, essa camada têm como principais funções:
monitorar o modelo em tempo de execução do sistema; monitorar os eventos lançados
pelos recursos controlados; e selecionar os recursos apropriados para aplicar os comandos
recebidos pela camada de middleware.
2.2.4
Considerações Gerais
Neste capítulo apresentamos os fundamentos de abordagens de engenharia dirigida por modelos, que são empregados em máquinas de execução de modelos específicas de domínio para possibilitar a construção e processamento de modelos de alto nível.
Para isso, foram apresentados os principais conceitos referentes a modelos e metamodelos, destacando a arquitetura de metamodelagem, a qual envolve quatro camadas, bem
como as principais características de linguagens de modelagem específicas de domínio
(DSMLs) utilizadas na construção de modelos. Além disso, também tratamos dos princípios relacionados a modelos construídos e modificados em tempo de execução e como
estes podem ser aplicados em diferentes cenários. Por fim, discutimos as características
gerais da abordagem de execução e interpretação de modelos utiliza neste trabalho.
2.3
Conclusão
Os conceitos discutidos neste capítulo são fundamentais para a compreensão do
presente trabalho, uma vez que a abordagem proposta envolve a utilização de modelos
para reduzir a complexidade envolvida no processo de criação e execução de aplicações
de crowdsensing móvel. O capítulo seguinte apresenta detalhes dessa abordagem.
CAPÍTULO 3
A Linguagem CSML
Ambientes de crowdsensing móvel compreendem uma vasta quantidade de aplicações que necessitam comunicar e trocar dados entre si. Sua essência, bem como os
principais desafios, está na diversidade e quantidade de dispositivos associados, nas condições dinâmicas dos cenários e no processo de identificação de dispositivos para atenderem a uma determinada requisição [23]. Para transpor essas dificuldades, propomos
uma abordagem dirigida por modelos em tempo de execução e, para viabilizá-la, definimos uma linguagem de modelagem de aplicações de crowdsensing móvel, denominada
CSML, juntamente com seu modelo de execução que envolve uma plataforma para execução de modelos para o domínio de crowdsensing móvel, CSVM.
Muitas abordagens dirigidas por modelos se apoiam na geração de código.
Porém, este trabalho segue uma linha diferente, onde modelos especificados em CSML
são diretamente interpretados e executados por uma plataforma específica [17] (descrita
na Seção 3.3).
A construção de linguagens de modelagem específicas de domínio (DomainSpecific Modeling Languages, DSMLs) deve refletir um conjunto de requisitos específicos. Em particular, identificamos quatro principais requisitos para a CSML:
• Simplicidade: Ser simples e intuitiva, para facilitar o seu uso e compreensão;
• Independente de dispositivos: Possibilitar que diferentes dispositivos integrem a
plataforma e utilizem seus serviços;
• Expressividade: Deve ser capaz de modelar a maioria dos cenários de aplicações
de crowdsensing;
• Flexibilidade: Deve possibilitar a reconfigurar consultas em resposta a alterações
do ambiente e/ou na intenção do usuário.
Neste capítulo discutiremos a linguagem de modelagem CSML, apresentando
na Seção 3.2 sua definição, principais características e sua construção com base em seu
metamodelo. Na Seção 3.3 apresentamos uma visão geral de como deve ser definido
e criado um modelo de execução para CSML, onde apresentamos também a CSVM,
uma máquina de execução de modelos para o domínio de crowdsensing que compõe
3.1 Terminologia
39
o ambiente de execução proposto e que aplica os conceitos de modelos em tempo de
execução descritos no Capítulo 2.
3.1
Terminologia
Com o intuito de facilitar o entendimento, esta seção apresenta os principais
termos empregados neste trabalho e suas definições.
• Problemas de crowdsensing: são problemas que podem ser modelados por
aplicações de crowdsensing, por exemplo, medir o nível de poluição de um determinado local.
• Aplicação de crowdsensing: são aplicações que utilizam dados monitorados
e compartilhados por diferentes dispositivos móveis para compor uma informação
útil ao usuário. Por exemplo, uma aplicação para monitorar a temperatura de um
ambiente e controlar a temperatura do ar condicionado.
• Serviços de crowdsensing: os serviços de crowdsensing no contexto deste
trabalho se referem ao registro de dispositivos na plataforma e a especificação de
consultas de crowdsensing.
• Funcionalidades de crowdsensing: equivalem aos serviços de crowdsensing, porém com um nível maior de detalhamento, por exemplo, recrutar dispositivos, manter modelos em tempo de execução, processar requisições, obter e agregar
dados sensoriados.
• Consultas de crowdsensing: são consultas geradas a partir da modelagem
de um problema de crowdsensing e possuem como principal finalidade definir quais
os sensores desejados e quais as condições de monitoramento desses sensores, como
localização e quantidade.
• Recursos dos dispositivos: referem-se aos sensores embarcados nos dispositivos móveis.
• Recursos do ambiente: referem-se aos dispositivos registrados na plataforma
que compartilham seus recursos (sensores).
• Dispositivo lógico: é à representação lógica de um dispositivo físico registrado
na plataforma e seu conjunto de sensores.
• Esquemas: são modelos descritos em uma linguagem de modelagem específica
de domínio (a CSML), utilizados para descrever: os componentes do ambiente,
que englobam os dispositivos registrados e os sensores associados a cada um
deles (esquema de controle do ambiente); as consultas de crowdsensing móvel,
por meio do (esquema de controle da consulta); e os dados a serem monitorados
em conformidade com os tipos de sensores especificados em uma consulta de
crowdsensing (esquema de dados).
3.2 CSML
3.2
40
CSML
A CSML é uma linguagem de modelagem específica para ambientes de crowdsensing móvel que permite descrever e modelar em tempo de execução aplicações pertencentes a este domínio. Ela também pode ser caracterizada como uma linguagem declarativa segundo a qual usuários e, principalmente, desenvolvedores, devem se preocupar
apenas em especificar as características das tarefas de crowdsensing a serem realizadas,
isentando-os dos detalhes de como o executor da CSML interpretará e executará essas
tarefas.
As tarefas de crowdsensing são especificadas a partir de modelos descritos
em CSML pelos usuários (tanto especialistas do domínio, ou seja desenvolvedores de
aplicações de crowdsensing, quanto usuários finais) de forma simples e direta, o que a
caracteriza como uma linguagem de modelagem de alto nível.
A CSML compreende duas formas de representação sendo uma delas com base
na linguagem XML (eXtensible Markup Language), X-CSML, e a outra por meio de
elementos gráficos, a G-CSML.
A linguagem X-CSML possui sua sintaxe definida por um esquema XML.
Esta notação possibilita representar o ambiente e as consultas assim como os dados a
serem transferidos, por meio de tags XML que denotam elementos do metamodelo da
CSML, suas especificações (características, propriedades ou atributos) e suas relações.
Desta forma ela possibilita mapear, por exemplo, relacionamentos onde um elemento
dispositivo, que apresenta como características o proprietário, a marca e o modelo, se
associa com o elemento que define os tipos de sensores para os quais ele oferece suporte.
A X-CSML é uma representação interna utilizada pela CSVM para manipulação
de modelos. Uma das principais vantagens no seu uso é sua capacidade de modelar
cenários complexos, por meio de construções utilizando tags XML. Para uma melhor
compreensão, apresentamos na subseção 3.2.3 exemplos de uso de X-CSML em um dos
cenários descritos no Capítulo 1.
A G-CSML (Graphical CSML) é uma representação alternativa que usa elementos gráficos para denotar características de consultas de crowdsensing. Esta variação gráfica da CSML é análoga ao digrama de Entidade e Relacionamento (ER) aplicado na área
de banco de dados. Contudo, apesar da similaridade gráfica, elas apresentam semânticas
diferentes.
A Figura 3.1 apresenta um exemplo de uso da G-CSML, onde Dispositivo1 e
Dispositivo2 participam da aplicação de crowdsensing compartilhando dados coletados
por seus sensores de temperatura. O modelo G-CSML apresentado representa uma
instância de uma consulta criada por uma aplicação (ou usuário) que solicita dados de dois
sensores de temperatura localizados no INF-UFG. Além das propriedades da consulta, o
3.2 CSML
41
Figura 3.1: Representação Geral da G-CSML
modelo especifica o tipo de notificação (neste caso, SobDemanda) e a operação que será
realizada sobre os dados coletados (neste caso, Média). Estas e outras propriedades serão
detalhadas na subseção 3.2.3.
A gramática que define os elementos da linguagem G-CSML não foi explorada
neste trabalho, sendo que sua definição é apresentada apenas informalmente. Sua definição formal fará parte de trabalhos futuros. A definição formal da CSML segue os mesmos
moldes que a definição formal da CML (Communication Modeling Language) apresentada em [15].
Adotando uma perspectiva comportamental de aplicações de crowdsensing é
possível identificar duas funcionalidades principais comuns a todas elas: o registro de
dispositivo, onde o usuário permite que seu dispositivo componha o ambiente de crowdsensing, e a especificação de consultas, onde o usuário informa quais dados serão necessários de acordo com o contexto da aplicação. Em particular, nestes dois momentos
faz-se necessária a intervenção do usuário para descrever tanto as características e capacidades do dispositivo que deseja que sejam compartilhadas (etapa de registro), quanto
as informações do ambiente que deseja monitorar (de acordo com cada aplicação) como
por exemplo, os tipos e quantidade de sensores desejados e sua localização. Um modelo
descrito em CSML pode ser modificado ao longo da execução de uma aplicação de crowdsensing. Devido a esta natureza e a outros aspectos como adaptação e reflexão (que serão
descritos em seguida), os modelos em CSML podem ser considerados como modelos de
tempo de execução [66].
Para alcançarmos os requisitos definidos no inicio deste capítulo e facilitar
a compreensão do usuário quanto à modelagem das aplicações, optamos por dividir
a CSML de acordo com modelos que representam controle e dados, cada qual com
finalidades distintas e bem definidas. Partindo deste princípio, a definição da CSML é
dividida em duas partes, que permitem a construção de esquemas de controle e esquemas
de dados.
3.2 CSML
42
Esquemas de controle são modelos que representam a configuração lógica de
crowdsensing e podem ser subdividido em dois tipos de esquema: esquema de controle
do ambiente e esquema de controle da consulta. O esquema de controle do ambiente representa a configuração do ambiente, definindo os tipos de dispositivos, tipos de sensores
e tipos de operações que são suportados pela plataforma. O esquema de controle da consulta por sua vez, define uma consulta de crowdsensing propriamente dita (especificada
pelo usuário ou aplicação). Esquemas de dados, por sua vez, são modelos que representam
os dados que devem ser monitorados por dispositivos participantes da consulta.
A partir da CSML, é possível definir instâncias dos esquemas apresentados. A
relação entre um esquema e uma instância se equipara ao relacionamento entre uma
classe e um objeto. Assim sendo, uma instância é a materialização ou concretização
de um esquema, que se dá por meio da associação de valores às tags predefinidas
no esquema. Essas tags representam as informações que caracterizam o esquema. Por
exemplo, um esquema de dados pode possuir tags como tipo de sensor e valor,
enquanto a instância desse esquema de dados compreenderia essas tags com os valores
temperatura e 25 respectivamente.
Assim como um programa manipula um conjunto de dados, a metamodelagem
proposta apresenta a mesma característica, onde o esquema de controle representa o
programa e o esquema de dados, por sua vez, os dados que o programa manipula. Na
seção seguinte, apresentamos o metamodelo da CSML.
3.2.1
Metamodelo: Visão Geral
O metamodelo da CSML define os elementos necessários para construção de
aplicações no domínio de crowdsensing, incorporando conhecimento e requisitos específicos deste domínio.
Antes porém de apresentar o metamodelo da CSML propriamente dito, optamos
por representar a definição e uso da CSML na Figura 3.2 usando a arquitetura de
metamodelagem da OMG, descrita na Seção 2.2. Desta forma, a linguagem proposta é
definida no nível M2 e seu uso é feito por meio da definição de elementos (modelo e
objetos) nos níveis M1 e M0.
A partir do meta-metamodelo (o modelo MOF, no nível M3), definimos no nível
M2 o metamodelo da CSML (CSML Metamodel), que propõe um conjunto de elementos
para construção de aplicações de crowdsensing. A construção do metamodelo da CSML
é dividida em duas partes: o metamodelo do esquema de controle (CS Metamodel) e o
metamodelo do esquema de dados (DS Metamodel).
Em concordância com a arquitetura apresentada, o metamodelo do esquema
de controle é composto pelo metamodelo do esquema de controle do ambiente (ECS
3.2 CSML
43
Metamodel), que descreve como o ambiente de crowdsensing pode ser construído (por
meio do registro de dispositivos e um conjunto predefinido de tipos de sensores) e
pelo metamodelo do esquema de controle da consulta (QCS Metamodel), que especifica
elementos para construção de consultas de crowdsensing. Por outro lado, o metamodelo
do esquema de dados permite definir as estruturas que compreendem a transferência
de dados entre os componentes de uma aplicação de crowdsensing. A junção destes
metamodelos compreende o metamodelo da CSML.
Figura 3.2: Definição e uso da CSML usando a arquitetura de
metamolagem da OMG.
Os metamodelos descritos acima são utilizados para construir os modelos que
integram o nível M1 e que são usados para definir as funcionalidades de crowdsensing
das aplicações. Na arquitetura de metamodelagem, esses modelos são representados por
meio de esquemas.
O esquema de controle do ambiente (EnvControlSchema - ECS) descreve todo o
ambiente de crowdsensing compreendendo os dispositivos registrados (com seus respectivos sensores) e um conjunto elementos predefinidos. Desta forma, um ECS é definido
em termos de um conjunto de elementos, que podem ser:
• Tipos de dispositivo: definidos em termos da marca, modelo, sistema operacional e categoria (smartphone, tablet e outros) dos dispositivos.
• Tipos de sensor: definem o tipos de sensor associados aos dispositivos.
• Tipos de operação: compreendem um conjunto de operações associadas aos
dados coletados pelos dispositivos. Por exemplo, o cálculo da média da temperatura
de um ambiente.
• Tipos de combinação: compreendem a forma de associar os dados coletados por
dois ou mais dispositivos.
• Notificação: compreendem a forma em que os dados serão notificados pelos
dispositivos, como por exemplo, com base em algum evento.
3.2 CSML
44
Em relação ao esquema de controle da consulta (QueryControlSchema - QCS),
este permite especificar uma ou mais consultas, informando os tipos de sensor desejados
e relacionando a cada um a quantidade, a localização, a operação, o tipo de combinação e
notificação. As consultas são especificadas de acordo com o domínio da aplicação.
Por fim, o esquema de dados (DataSchema) é construído de forma automática
como resultado de uma consulta previamente especificada por uma aplicação (ou usuário).
Assim sendo, o esquema de dados representa um formulário (form) a ser preenchido,
contendo atributos como valor, tipo de dado, unidade de medida, tipo de sensor, precisão
e horário da coleta do dado. O esquema de dados descreve também dados referentes à
requisição, como tipo da requisição e da notificação e o identificador (id) da consulta
geradora deste esquema de dados.
Os esquemas de controle que integram a camada M1 são modelos em tempo de
execução para ambientes de crowdsensing, sendo portanto uma auto-representação causalmente conectada do ambiente e das consultas especificadas. Desta forma, qualquer
alteração no ambiente (por exemplo, registro ou cancelamento do registro) ou na consulta
(por exemplo, alteração dos tipos de sensores a serem monitorados) refletem imediatamente no modelo, bem como qualquer alteração no modelo em tempo de execução refletirá no comportamento da aplicação. Este comportamento caracteriza a camada M1 como
sendo dinâmica.
Finalmente, na camada M0 temos instâncias dos modelos do nível M1 que
representam objetos reais ou uma concretização dos modelos que os descrevem. Da
mesma forma que entre as camadas M1 e M2 há uma relação de instanciação par a
par (ou seja, cada metamodelo em M2 descreve um modelo em M1), as camadas M0
e M1 mantém esta relação e seu significado. Uma instância do esquema de controle
do ambiente (ECS Instance) representa um conjunto (ou subconjunto) de dispositivos
específicos (registrados) com seus respectivos sensores. Por outro lado, uma instância do
esquema de controle da consulta (QCS Instance) representa um conjunto de dispositivos
(previamente escolhidos) que satisfazem os critérios da consulta (como localização e
tipos de sensores) especificada pelo usuário. Desta forma, a criação desta instância está
totalmente associada ao esquema de controle do ambiente que descreve os dispositivos
que estão registrados e os sensores que cada um deles está compartilhando. A instância do
esquema de dados (DS Instance) representa o form com os campos/atributos preenchidos
como resultado da execução da consulta.
3.2.2
Metamodelo: Detalhamento
Uma vez descrita a arquitetura de modelagem da CSML e as características
gerais de seu metamodelo a próxima seção apresenta um detalhamento do metamodelo
3.2 CSML
45
Figura 3.3: Visão Geral do Metamodelo da CSML
utilizando diagramas de classe UML (Unified Modeling Language). O diagrama de
classes da Figura 3.3 apresenta a estrutura geral do metamodelo da CSML. A seguir
apresentamos respectivamente os metamodelos do esquema de controle do ambiente, do
esquema de consultas e do esquema de dados a fim de elucidar a estrutura e os principais
elementos do metamodelo da CSML. É importante ressaltar que adotamos o padrão UML
para representar os metamodelos por entendermos que é um padrão amplamente utilizado
e de fácil interpretação.
Esquema de Controle do Ambiente
Em um cenário de crowdsensing móvel que compreende diversas aplicações em
execução simultaneamente, uma importante etapa que antecede a troca e compartilhamento de dados pelos dispositivos participantes é o registro desses dispositivos. Nesta
etapa, os dispositivos se anunciam de forma a compor o grupo de dispositivos participantes. Partindo desse pressuposto, uma das finalidades do metamodelo do Esquema de
Controle do Ambiente (Environment Control Schema - ECS), apresentado no diagrama
da Figura 3.4, é descrever elementos que permitam que o usuário registre seu dispositivo
com suas características e capacidades.
Para modelar o registro do dispositivo, utiliza-se o elemento Registration, que
possui um identificador único (registerID). Desta forma, o metamodelo determina que
cada registro deve referir-se a um único dispositivo (Device) com o seu tipo (marca,
modelo, sistema operacional e categoria) e proprietário. No registro deve-se também
informar quais sensores do dispositivo o usuário deseja compartilhar (DeviceSensor).
Após sua criação, um registro de dispositivo passa a fazer parte do ECS. A
partir daí, o anúncio do dispositivo pode ser feito utilizando o modelo plug-and-play [61],
significando que, após se registrar no ambiente, o dispositivo já está apto a colaborar com
as aplicações de crowdsensing.
O ECS é responsável também por descrever os componentes do ambiente e
mantê-los sempre atualizados. Estes componentes englobam os dispositivos que estão
registrados e os sensores associados a cada um deles, assim como um conjunto de
elementos predefinidos. Ao analisarmos as características de ambientes de crowdsensing,
identificamos cinco elementos que podem ser predefinidos. Seguindo a notação UML
3.2 CSML
46
Figura 3.4: Metamodelo que descreve o Esquema de Controle do
Ambiente.
adotada, optamos por representá-los por meio de enumerações, conforme mostrado na
Figura 3.5:
• Tipo de Sensor (SensorKindList) - define o conjunto de tipos de sensores suportados pelo ambiente;
• Tipo de Operação (OperationKind) - define os tipos de operações passíveis de
serem realizadas entre os dados coletados pelos sensores, por exemplo, o cálculo da
média da umidade do ar em um ambiente;
• Tipo de Combinação (CombinationKind) - define a forma de combinar dados
coletados de dois ou mais sensores (do mesmo tipo ou não);
• Tipo de Notificação (NotifyKind) - define a forma que os dispositivos participantes
de uma consulta devem notificar os dados coletados;
• Tipo de Requisição (RequestKind) - define a forma que uma determinada requisição será enviada aos demais dispositivos, podendo ser para um único dispositivo,
para um grupo de dispositivos selecionados ou para todos os dispositivos registrados.
A Figura 3.6 ilustra dois exemplos de elementos predefinidos pelo metamodelo
do ECS, respectivamente, para sensores, 3.6(a), e para operações, 3.6(b). Os elementos
predefinidos são atualizados automaticamente de acordo com o surgimento de novos tipos,
por exemplo o surgimento de novos sensores embarcados nos dispositivos móveis.
Os tipos de sensores (SensorKind) mantidos pelo ECS apresentam uma característica específica que os diferem dos demais tipos. Eles podem ser decompostos em tipos
3.2 CSML
47
Figura 3.5: Pacote de enumerações mantidas pelo Esquema de
Controle do Ambiente.
(a) Tipos de sensores.
(b) Tipos de operação.
Figura 3.6: (a) e (b) representam respectivamente os tipos de sensores e operações mantidos pelo metamodelo do ECS.
primitivos, PrimitiveSensorKind, que é uma representação virtual de um sensor físico
embarcado no dispositivo, e tipos compostos, CompositeSensorKind, que são formados
pela combinação de dois ou mais tipos de sensores (podendo estes serem primitivos ou
compostos). Desta forma, os tipos compostos são sensores virtuais instanciados a partir
de dois ou mais sensores físicos, ou seja, eles não representam sensores embarcados nos
dispositivos.
De maneira geral o ECS representa a estrutura de um ambiente de crowdsensing,
controlando em tempo de execução os novos recursos e aqueles já disponíveis. Desta
forma, o ECS vai sendo construído dinamicamente à medida que novos dispositivos se
registram para participar do ambiente.
3.2 CSML
48
Esquema de Controle da Consulta
A essência de ambientes de crowdsensing está no compartilhamento e troca de
dados entre os componentes participantes, seja de forma oportunista (sem intervenção
humana) ou participativa (com intervenção humana). Porém, o que determina a eficiência
e eficácia do uso destes dados são as aplicações desenvolvidas e a plataforma que as apoia.
Essas aplicações devem expor as necessidades de crowdsensing de forma automatizada
(por meio de uma autorização prévia do usuário) ou permitir que o usuário as especifique
manualmente.
Neste sentido, e aplicando a abordagem dirigida por modelos em tempo de
execução, este trabalho propõe a criação de um metamodelo que descreve os principais
elementos para a criação de consultas de crowdsensing móvel. O diagrama da Figura 3.7
apresenta o metamodelo do Esquema de Controle da Consulta (Query Control Schema QCS).
Figura 3.7: Diagrama do metamodelo que descreve o Esquema de
Controle da Consulta.
O metamodelo do QCS é relativamente simples e sua construção, conforme
diagrama apresentado, compreende três elementos principais. É importante notar que
em nossa proposta as consultas representam subscrições (representadas pelo elemento
Subscription e geradas pelos dispositivos solicitantes). Cada subscrição gerada deve
conter um ou mais tipos de sensores (elemento SensorTypeRequest) associados. Estes
tipos de sensores englobam atributos que caracterizam uma consulta de crowdsensing
e são especificados de acordo com a necessidade de uma determinada aplicação de
crowdsensing.
3.2 CSML
49
Desta forma, ao especificar uma consulta o usuário deve informar o tipo de
combinação (aggregation) que estará associada à subscrição (esta combinação pode ser
aplicada a fim de combinar dados de diferentes sensores ou uma simples junção dos dados
coletados); para cada sensor solicitado, deve-se especificar:
• Tipo (type) - define o tipo do sensor a ser monitorado com base nos tipos de
sensores mantido pelo ECS.
• Quantidade (quantity) - define a quantidade de dispositivos a serem monitorados,
de acordo com o tipo de sensor especificado.
• Localização (location) - determina a localização a ser monitorada.
• Operação (operation) - define qual operação será realizada sobre o conjunto de
dados coletados por um determinado tipo de sensor e é delimitada pelos tipos de
operações mantido pelo ECS.
• Requisição (request) - determina o tipo de notificação que estará associado a um
determinado tipo de sensor. Esse tipo é definido com base nos tipos predefinidos
de notificações mantidos pelo ECS e refere-se ao momento em que os dados
necessitarão ser coletados, podendo ser no momento da consulta, agendado para
uma data/hora futura ou com base em algum evento disparado.
A criação da instância do QCS é realizada pela plataforma e envolve a seleção de
dispositivos que satisfaçam a consulta especificada pelo usuário por meio do QCS. Desta
forma, a instância compreende o QCS mais os dispositivos recrutados. De modo geral, o
QCS controla (em tempo de execução) a escolha e manutenção de dispositivos registrados
na plataforma durante toda a execução de uma consulta. Por exemplo, o usuário pode
especificar uma consulta (QCS), da forma: necessito da média de 10 (dez) sensores de
umidade localizados no INF-UFG. A instância desse QCS compreende o próprio QCS e o
conjunto de dez dispositivos recrutados para participar colaborativamente dessa consulta.
A fim de manter a consistência de uma instância do QCS, propomos neste
trabalho representar o QCS como um modelo em tempo de execução, que é mantido
sincronizado com a aplicação e com o ambiente. Ou seja, o usuário poderá editar
uma consulta previamente especificada (modelo QCS) e esta alteração será refletida
no comportamento da plataforma de execução. Da mesma forma, qualquer variação do
ambiente (por exemplo, um dispositivo que esteja participando de uma aplicação fica
indisponível) refletirá no QCS. Em ambos cenários, faz-se necessária uma adaptação da
instância do QCS conforme as mudanças identificadas.
Esquema de Dados
Como foi descrito anteriormente, compartilhamento e troca de dados estão
presente na essência de ambientes de crowdsensing e qualquer falha nesta etapa é
3.2 CSML
50
prejudicial à aplicação. Partindo deste pressuposto, apresentamos a última, mas não
menos importante parte que integra o metamodelo da CSML, o metamodelo do Esquema
de Dados (Data Schema - DS), ilustrado no diagrama da Figura 3.8.
Este metamodelo descreve os elementos necessários para construção de um
esquema de dados, que contém um formulário (form) que deverá ser preenchido pelos
dispositivos selecionados em uma consulta (especificados na instância do QCS) com
informações do sensor (SensorInformation) requerido na aplicação. Este form é um
template que descreve como, quando e quais dados devem ser monitorados, através dos
seguintes campos:
• Data e hora (timeStamp) - expressa o momento em que o dado foi coletado.
• Precisão (accuracy) - especifica a precisão com a qual o dado foi coletado.
• Tipo de sensor (sensorType) - especifica o sensor a ser monitorado em conformidade com o tipo descrito em uma consulta ao ser especificada pelo usuário.
• Valor (value) - determina o valor coletado do sensor.
• Tipo de dado (dataType) - define a representação dos dados coletados (por exemplo, tipos como inteiro ou texto).
• Unidade (unit) - define a unidade de medida referente ao dado coletado pelo sensor.
Uma das principais características do DS é que sua construção ocorre de forma
automática (sem intervenção do usuário), tendo como referência a consulta especificada
pelo usuário na forma de um QCS. De maneira geral, para cada tipo de sensor especificado
em uma consulta (QCS) um DS é construído. Assim sendo, a partir de um QCS um ou
mais DS são derivados.
Figura 3.8: Diagrama do Metamodelo que descreve o Esquema de
Dados.
Conforme ilustrado no diagrama, o DS pode ser representado por uma requisição (Request) ou notificação (Notification). Uma requisição é representada pelo próprio
3.2 CSML
51
DS enviado aos dispositivos escolhidos e é construída de forma automática a partir de
um QCS. Desta forma, ela contém o identificador do QCS que a originou (queryControlSchemaID), o tipo de requisição, que define se aquele DS será enviado a um ou mais
dispositivos (type) e, por fim, a forma com que os dados devem ser notificados, ou seja,
enviados do dispositivo (period). A notificação representa a instância do DS que é construída a partir de uma requisição (DS) no dispositivo móvel selecionado. A instância do
DS compreende o formulário preenchido com informações coletadas do ambiente monitorado.
Na seção seguinte, apresentaremos um exemplo de uso destes modelos ilustrando
seu uso no cenário descrito na Seção 1.2.
3.2.3
Exemplo de Uso
Para apresentar os exemplos de uso dos modelos descritos, optamos por utilizar
a X-CSML (representação da CSML com base em XML). Deste modo, ilustramos a
aplicabilidade dos modelos e também a conveniência do uso desta representação. Nesta
seção, os modelos foram utilizados para descrever um problema de crowdsensing no
cenário apresentado na Seção 1.2. Mais especificamente, o problema pode ser descrito
como: “Em uma casa noturna um novo gerente é contratado e, entre suas atribuições está
o monitoramento da temperatura do interior do ambiente durante um evento. Para isso,
foi-lhe dado um novo smartphone para uso nessa tarefa. O novo gerente foi orientado
a utilizar uma aplicação de monitoramento da temperatura que recorre aos serviços de
crowdsensing da plataforma CSVM para realizar a captura dos dados.”
Para que o novo gerente possa especificar consultas referentes ao problema,
ele precisa antes registrar seu dispositivo na plataforma, assim como outros dispositivos
de frequentadores (funcionários e/ou clientes) da boate precisam ter sido registrados. A
Figura 3.9 apresenta o esquema de controle, em X-CSML, gerado após o gerente solicitar
o registro do dispositivo. Este esquema passa então a integrar o esquema de controle do
ambiente, mantido no repositório.
Após solicitado o registro, o gerente pode especificar consultas e utilizar os recursos de crowdsensing fornecidos pela plataforma. Em geral, as consultas das aplicações de crowdsensing são construídas em resposta a questionamentos, como: Preciso de
X sensores do tipo Y localizados na região Z. Desta forma, e de acordo com o problema
apresentado no início desta seção, o gerente especifica a seguinte consulta: Preciso de
10 sensores de temperatura localizados na boate X.
A Figura 3.10(a) apresenta o esquema de controle da consulta em X-CSML
referente à consulta especificada pelo gerente. O tipo de operação (avg) e o tipo de
requisição (onDemand) também são especificados como parte da consulta. O próximo
3.2 CSML
52
Figura 3.9: Representação em X-CSML do esquema de controle
para registro do dispositivo.
passo envolve a criação de uma instância do esquema de controle da consulta, por meio
da seleção de dispositivos registrados na plataforma que satisfaça a consulta especificada
pelo gerente. Os dispositivos recrutados são adicionados na representação em X-CSML
para auxiliar no processamento da consulta. A Figura 3.10(b) apresenta apenas parte dessa
instância, cuja versão completa compreende 10 dispositivos recrutados. O Apêndice A,
apresenta o modelo X-CSML completo dessa instância.
(a) Esquema de controle da consulta.
(b) Instância do esquema de controle da consulta.
Figura 3.10: Representação em X-CSML do esquema de controle
da consulta (a) e sua instância (b).
3.3 Modelo Geral de Execução
(a) Esquema de dados.
53
(b) Instância do esquema dados.
Figura 3.11: Representação em X-CSML do esquema de dados (a)
e sua instância (b).
Tão logo especificada a consulta e recrutados os dispositivos, é gerado o esquema
de dados referente à consulta. A Figura 3.11(a) apresenta o código X-CSML do esquema
de dados, contendo: um form a ser enviado a cada dispositivo e uma lista com os
dispositivos recrutados. É importante ressaltar que a requisição envolve o envio do form
“vazio” para preenchimento após captura dos dados pelos dispositivos recrutados. Após
recebido o form, cada dispositivo inicia o monitoramento do ambiente.
A Figura 3.11(b) apresenta o X-CSML da instância do esquema de dados recebido dos dispositivos. Essa instância representa o form preenchido com dados referentes
ao sensor requisitado. Por fim, essa instância será notificada para composição da resposta
solicitada pelo gerente.
3.3
Modelo Geral de Execução
Apesar do metamodelo da CSML prover abstrações que possibilitam descrever
uma aplicação de crowdsensing, isto isoladamente não é suficiente para se obter uma
plataforma executável, capaz atender e processar requisições em tempo de execução. Com
o intuito de preencher essa lacuna, propomos e desenvolvemos uma máquina de execução,
a CSVM, responsável por carregar e interpretar modelos definidos em CSML e executar
as ações neles descritas. Podemos dizer então que essa máquina de execução implementa
a semântica operacional da linguagem.
O conceito empregado neste trabalho para criação do ambiente e da máquina de
execução, foi inspirado na CVM (Communication Virtual Machine) [17] e na MGridVM
3.4 Considerações Finais
54
(Microgrid Virtual Machine) [3] , embora as similaridades estejam restritas à definição
geral das camadas e de algumas de suas funcionalidades.
Figura 3.12: Modelo de execução da CSVM.
A partir de um modelo definido em CSML, a CSVM é capaz de executar as
tarefas de crowdsensing de forma automática, sem a necessidade de intervenção humana.
Ela também é capaz de identificar e capturar as alterações (durante a execução de uma
aplicação) do modelo CSML e adaptar as consultas em andamento. A arquitetura da
CSVM será detalhada no capítulo a seguir juntamente com sua implementação.
A Figura 3.12 apresenta uma visão geral do modelo de execução da CSVM
e os principais componentes que o integram. Conforme ilustrado, um modelo de alto
nível especificado pelo usuário em CSML é interpretado e processado pela máquina de
execução de modelos (CSVM). Durante o processamento desse modelo a CSVM mantém
um modelo em tempo de execução (Model at runtime - M@rt) sempre atualizado sendo
que qualquer alteração nesse modelo também reflete no funcionamento da CSVM (i).
Um outro comportamento associado à CSVM e descrito no modelo de execução
é o acesso constante a dispositivos registrados no ambiente, os quais por sua vez, enviam
notificações à CSVM (ii). A figura ilustra também uma configuração da CSVM que é
implementada para ser executada nos dispositivos móveis, dando suporte à construção
de modelos de alto nível e ao processamento de requisições. Esta implementação é
denominada CSVM4Dev (CrowdSensing Virtual Machine for Device). Na subseção
seguinte apresentaremos uma visão geral da CSVM e suas principais funcionalidades.
3.4
Considerações Finais
Neste capítulo apresentamos a linguagem de modelagem específica para o domínio de crowdsensing, CSML, que descreve a forma com a qual usuários podem especificar
consultas de crowdsensing seguindo as premissas de que as consultas podem ser mantidas
ou alteradas em tempo de execução de acordo com as necessidades do usuário ou varia-
3.4 Considerações Finais
55
ção do ambiente. Para isso, construímos o metamodelo dessa linguagem, que incorpora
os principais aspectos e características de seu domínio de aplicação.
Em seguida, apresentamos uma visão geral da CSVM, uma plataforma dirigida
por modelos que foi construída seguindo a arquitetura padrão de máquinas de execução de
modelos composta por camadas (conforme descrito na Seção 2.2) e encapsula as tarefas
necessárias à execução de aplicações de crowdsensing. Nesse sentido, apresentamos o
modelo de execução da CSVM e, associado a ele, os dois principais elementos da CSVM:
CSVMProvider e CSVM4Dev.
Com base na abordagem dirigida por modelos para o domínio de crowdsensing
móvel e seu modelo de execução apresentados neste capítulo, o Capítulo 4 apresenta
detalhes da arquitetura da CSVM em conformidade com esta abordagem, seguido de sua
implementação, descrita no Capítulo 5.
CAPÍTULO 4
Arquitetura da CSVM
Aplicações de crowdsensing móvel apresentam um conjunto de características
que as diferenciam de aplicações tradicionais de redes de sensores. Essas características
resultam tanto em novas oportunidades quanto em um alto grau de complexidade. Para
dar suporte ao comportamento dessas aplicações a arquitetura deve satisfazer alguns requisitos básicos, como: diversidade de dispositivos, limitações de recursos, dinamicidade
do ambiente, privacidade, segurança e integridade dos dados.
O projeto da CSVM foi guiado por um conjunto de decisões arquiteturais
fundamentadas nos principais desafios relacionados às aplicações de crowdsensing móvel
(discutidos na Seção 2.1). Desta forma a CSVM deve:
• Permitir que usuários ou desenvolvedores de aplicações de crowdsensing especifiquem suas necessidades de dados em uma linguagem de alto nível;
• Identificar e selecionar automaticamente os dispositivos que podem prover os dados
desejados;
• Produzir instruções para configurar as atividades de sensoriamento nos dispositivos;
• Refletir mudanças dinâmicas do cenário, adaptando o conjunto de dispositivos e
sensores escolhidos para garantir a qualidade dos dados desejados;
• Permitir que o usuário altere uma consulta em execução e refletir esta alteração no
comportamento da plataforma;
• Apresentar uma arquitetura no provedor de serviço que abstraia a forma de acesso
a diferentes dispositivos físicos;
• Apresentar uma camada independente de dispositivo que acesse os diferentes
sensores físicos embarcados;
Para responder a estes desafios, a CSVM é uma plataforma que incorpora uma
abordagem dirigida por modelos em tempo de execução para ambientes de crowdsensing
(discutida na Seção 2.2) e integra características sobre o domínio a qual ela se aplica,
crowdsensing móvel, o que inclui serviço de detecção e recrutamento de dispositivos,
unidades de sensoriamento e relações matemáticas entre as diferentes unidades. O uso da
abordagem proposta neste trabalho, já não exige que os desenvolvedores de aplicações
4.1 Visão Geral da Arquitetura
57
de crowdsensing sejam especialistas no domínio abordado, sendo que as solicitações dos
usuários podem ser especificadas de forma simples e rápida.
No restante deste capítulo descrevemos detalhadamente a arquitetura da plataforma CSVM, incluindo seus principais componentes e como eles interagem para prover
o comportamento de crowdsensing descrito pelo modelo em execução da plataforma. Na
primeira seção apresentamos a arquitetura geral da plataforma, descrevendo o fluxo de
processamento para registro de dispositivos e para consulta assim como os componentes
envolvidos. A seção seguinte descreve em detalhes os componentes e serviços da CSVM.
4.1
Visão Geral da Arquitetura
Conforme visto na Seção 2.1, a arquitetura de plataformas de crowdsensing móvel geralmente compreende dois tipos de componentes, um representando os dispositivos
de coleta e propagação de dados sensoreados e outro correspondente ao servidor de backend para a análise e processamento dos dados sensoreados [23].
Figura 4.1: Visão Geral da Plataforma CSVM
Seguindo esta abordagem, este trabalho propõe uma arquitetura estruturada na
forma de uma parte central (CSVMProvider), representada por um provedor de serviço
(componente backend), e uma parte distribuída (CSVM4Dev), localizada nos dispositivos
móveis. Desta forma, a plataforma CSVM, como apresentado na Figura 4.1, compreende
uma única instância da CSVMProvider e várias instâncias da CSVM4Dev. Cada instância
da CSVM4Dev é executada em um dispositivo diferente. A Figura 4.2 representa as
interações entre os principais componentes desta arquitetura.
O fluxo ilustrado na Figura 4.2 sintetiza as principais funcionalidades das etapas
de registro e consulta das aplicações de crowdsensing, que por sua vez serão detalhadas
na Subseção 4.4 e 4.5, respectivamente. Os componentes da arquitetura e as interações
entre eles são descritos a seguir:
4.1 Visão Geral da Arquitetura
58
Figura 4.2: Arquitetura Geral da Plataforma CSVM
CSVM4Dev. É um componente distribuído que é executado nos dispositivos físicos dos
usuários e provê o ambiente para interação do usuário com a plataforma. Ele compreende
um conjunto de serviços que permite ao usuário criar aplicações de crowdsensing e
participar de forma colaborativa de ambientes de crowdsensing por meio da abordagem
dirigida por modelos. Tendo o usuário especificado a necessidade de um serviço de
crowdsensing (registro ou consulta), este componente auxilia na criação do modelo e
se encarrega, de comunicar diretamente com o Provedor de Serviço enviando-o para
processamento (Figura 4.2, passo 2). A CSVM4Dev é dividida em quatro camadas que,
de modo geral, fornecem serviços que auxiliam na criação e modificação de modelos
em tempo de execução. Esses serviços compreendem, de forma resumida: uma interface
gráfica por meio da qual o usuário pode utilizar os recursos da plataforma; mecanismos de
processamento e interpretação de modelos; e acesso a recursos locais do dispositivo. As
camadas e os serviços da CSVM4Dev serão apresentados de forma detalhada na Seção
4.3. A Figura 4.2 ilustra também parte do ambiente de execução da CSVM4Dev, sendo:
• SO: refere-se ao sistema operacional do dispositivo e funciona como uma ponte
que conecta a CSVM4Dev aos sensores embarcados.
• Sensores: Representa a capacidade de sensoriamento do dispositivo, sendo composto por um conjunto de sensores nele embarcados.
CSVMProvider. Representa o núcleo da plataforma CSVM, sendo responsável
pelos principais serviços de crowdsensing. Ele consiste basicamente de uma máquina
de interpretação e execução de modelos para o domínio de crowdsensing. Em suma,
a CSVMProvider incorpora, em três camadas, conceitos da abordagem dirigida por
4.1 Visão Geral da Arquitetura
59
modelos em tempo de execução para processar e interpretar modelos (esquemas) criados
pelo usuário ou por uma aplicação. Cada camada apresenta responsabilidades específicas
com a finalidade de atender requisições de crowdsensing. Após processar o modelo de
uma consulta, este componente se encarrega de recrutar os dispositivos necessários para
atendê-la, bem como enviar uma requisição a cada um deles utilizando um serviço de
mensagens (Figura 4.2, passo 4 e 5).
Este componente é também responsável por manter um repositório de esquemas
(Figura 4.2, passo 3), onde as informações armazenadas representam o estado atual tanto
do ambiente de crowdsensing quanto das consultas em execução e seus respectivos dados
coletados. Qualquer alteração no ambiente ou em uma determinada consulta é refletida
automaticamente no repositório e no comportamento da CSVM.
Na Seção 2.2.3, foi apresentada uma arquitetura em camadas genérica para
construção de máquinas de execução de modelos de forma independente de domínio.
A arquitetura da CSVM é uma adaptação dessa arquitetura genérica, assim como a CVM
[17] e a MGridVM [3].
Contudo, ao propormos uma especialização dessa arquitetura genérica para o domínio de crowdsensing móvel, fez-se necessária a adoção de uma arquitetura distribuída
que atendesse as necessidades impostas pelos cenários deste domínio, tendo um componente central e outro distribuído nos dispositivos móveis.
(a) Arquitetura em camadas da
CSVMProvider.
(b) Arquitetura em camadas da
CSVM4Dev.
Figura 4.3: Arquitetura geral em camadas da CSVM, representado sua configuração da CSVMProvider (a) e da
CSVM4Dev (b).
4.2 Arquitetura da CSVMProvider
60
A Figura 4.3 ilustra as camadas que integram a CSVM, tanto na parte central,
definida pelo provedor de serviço (CSVMProvider), quanto na parte que executa nos
dispositivos móveis (CSVM4Dev).
De modo geral, cada camada apresenta um conjunto de funcionalidades específicas relacionadas ao domínio e mantém em níveis de abstração diferentes um modelo em
tempo de execução que reflete o ambiente e a aplicação em execução. Em seguida detalharemos os dois componentes da plataforma CSVM apresentando modelos que especificam
sua construção, considerando cada camada.
4.2
Arquitetura da CSVMProvider
A CSVMProvider é uma máquina de interpretação e execução de modelos para
o domínio de crowdsensing, cuja motivação são os desafios apresentados no início deste
capítulo. Ela processa uma linguagem de modelagem própria específica para o domínio
de crowdsensing, denominada CSML (descrita no Capítulo 3).
Um modelo construído pelo usuário em CSML (também conhecido por esquema) é interpretado pela CSVMProvider a fim de determinar as ações a serem executadas. Desta forma a CSVMProvider coordena todo o fluxo de execução de acordo com
as funcionalidades suportadas (registro ou consulta) e gerencia os recursos disponíveis.
Como descrito na seção 4.1, a CSVMProvider apresenta uma arquitetura em
quatro três (ilustrada na Figura 4.3(a)), as quais serão descritas a seguir.
4.2.1
Camada de Síntese
A camada de síntese (CrowdSensing Synthesis layer - CSS) é responsável por
interpretar os modelos (esquemas) recebidos em X-CSML e sintetizá-los resultando em
comandos a serem executados pelas camadas subjacentes. Esta camada é responsável
também por manter um modelo em tempo de execução que reflete o estado atual da
consulta de crowdsensing móvel.
A Figura 4.4 ilustra os principais elementos que compõem o modelo da camada
de síntese da CSVMProvider. Nesta figura é possível identificar um elemento principal
(SynthesisManager), que gerencia os demais elementos. Todas chamadas à camada de
síntese passam antes por este elemento e todos eventos provenientes desta camada são
sinalizados por ele.
O X-CSMLParser é o elemento responsável pela interpretação dos modelos
descritos em X-CSML (descrita na seção 4.1). Ele compreende dois outros componentes:
4.2 Arquitetura da CSVMProvider
61
Figura 4.4: Modelo da Camada de Síntese da CSVMProvider.
• CommandGenerator - é responsável por gerar comandos que serão executados
pelas camadas subjacentes. Esses comandos são gerados a partir da interpretação
do modelo realizada previamente pelo X-CSMLParser.
• DataSchemaGenerator - é o elemento responsável por gerar um esquema de dados
a partir do esquema de controle de uma consulta especificada pelo usuário.
O RepositoryManager é outro importante componente desta camada, responsável por manter o repositório de modelos da CSVMProvider atualizado. Para esta finalidade, ele conta com um conjunto predefinido de tipos de operações básicas utilizadas
em bancos de dados relacionais conhecidas como CRUD (acrônimo para Create, Read,
Update e Delete) e representadas no modelo pelo elemento OperationKind.
O elemento AdaptativeManager é responsável por gerenciar as mudanças no
m@rt (modelo em tempo de execução) mantido por esta camada. Essas mudanças são
iniciadas ou (1) pelo usuário, por meio da camada de interface da CSVM4Dev ao alterar
o modelo da consulta ou as configurações de um dispositivo, ou (2) por mudanças no
ambiente que são capturadas por meio de eventos gerados pela camada de broker (descrita
posteriormente nesta seção).
Finalmente, o componente ConstraintManager é responsável por gerenciar as
restrições que governam as funcionalidades desta camada. A versão atual da CSVMProvider se restringe a duas regras principais aplicadas à camada de síntese:
• Regra de Adaptação: define que as adaptações no modelo em tempo de execução
devem ser realizadas de acordo com a origem da mudança (conforme descrito
acima), podendo ser a partir do:
– Usuário - a adaptação deve ser realizada por meio do cálculo da diferença
entre um novo modelo gerado e o modelo mantido em tempo de execução.
4.2 Arquitetura da CSVMProvider
62
– Ambiente - a adaptação deve ser realizada de forma automática, adicionando
e/ou removendo componentes do modelo mantido em tempo de execução de
acordo com a (in)disponibilidade de recursos.
• Regra de Processamento de Consultas: determina que uma consulta especificada
pelo usuário só poderá ser processada caso o dispositivo requisitante já esteja
registrado na plataforma.
4.2.2
Camada de Middleware
A camada de middleware (CrowdSensing Middleware layer - CSM) é responsável pela seleção de dispositivos com base em informações extraídas do m@rt, notadamente informações sobre as capacidades dos dispositivos e sua localização. A CSM
comunica diretamente com as demais camadas, processando comandos gerados pela camada de síntese e gerando eventos para ela, assim como comandos para serem executados
na camada de broker.
Outra importante função da camada CSM está relacionada à aplicação de requisitos não-funcionais, mais especificamente privacidade e segurança. A Figura 4.5 representa
o modelo da camada de middleware e seus principais elementos. O MiddlewareManager é
o elemento central, responsável por gerenciar as principais funcionalidades desta camada
e pela comunicação com as demais camadas.
Figura 4.5: Modelo da Camada de Middleware da CSVMProvider.
O LogicalResourceManager é o elemento responsável pela seleção dos recursos
que serão utilizados para atender as consultas. Para isto, ele segue a política de recrutamento (descrita abaixo).
Os requisitos de privacidade e segurança são tratados pelos elementos PrivacyManager e SecurityManager respectivamente. Em relação à privacidade, na atual versão
é utilizado um método de ocultação da informação do proprietário do dispositivo quando
este é recrutado para sensoriamento, mantendo o sigilo dessa informação. A segurança,
4.2 Arquitetura da CSVMProvider
63
por sua vez, é aplicada somente ao acesso aos recursos do ambiente e são individualmente
definidas pelos usuários.
O componente ConstraintsManager, assim como o componente de mesmo nome
da camada de síntese, é responsável por definir regras que definem as funcionalidades da
camada de middleware. No entanto, este elemento apresenta uma única regra:
• Regra de Recrutamento: define que os dispositivos registrados (presentes no esquema de controle do ambiente) serão inicialmente recrutados com base em suas
capacidades de sensoriamento e em sua localização lógica, ambas definidas conforme especificação do usuário realizada por meio do esquema de controle da consulta.
4.2.3
Camada de Broker
A camada de broker (Broker para CrowdSensing layer - CSB) permite à CSVMProvider interagir com os dispositivos que oferecem capacidade de sensoriamento. Dentre
suas principais responsabilidades estão: abstrair a diversidade de dispositivos presentes
em ambientes de crowdsensing; manter o modelo em tempo de execução causalmente
conectado com a plataforma; selecionar os recursos (dispositivos e seus sensores) físicos
apropriados para enviar requisições solicitando acesso a seus sensores; e monitorar os
dispositivos registrados no ambiente.
A estrutura desta camada é mostrada na Figura 4.6, que representa os principais
elementos de seu modelo. O BrokerManager, assim como os gerentes das camadas
superiores, é responsável por coordenar e gerenciar os demais componentes da camada
de broker e representa a interface de comunicação com a camada de middleware.
O ResourceManager é um dos mais importantes elementos deste modelo, sendo
encarregado de gerenciar os recursos da plataforma. No nosso contexto, os recursos podem ser componentes de software e hardware que fornecem serviços de crowdsensing.
Para possibilitar a interação entre a plataforma e os dispositivos registrados, esta camada
provê interfaces (representadas pelo elemento Interface) que viabilizam a comunicação
entre a CSVMProvider e a CSVM4Dev: a DevelopInterface, que possibilita que aplicações de crowdsensing comuniquem com a plataforma CSVM e utilizem suas funcionalidades (registro e consulta) e recursos (dispositivos registrados no ambiente); e a CSInterface, responsável pela comunicação direta com os dispositivos heterogêneos que integram
o ambiente. A CSInterface é gerenciada pelo componente CSResourceManager, que controla as ações a serem realizadas nos dispositivos recrutados, como o envio de requisições,
o recebimento de notificações e a verificação de disponibilidade dos dispositivos.
Além de abstrair as diferenças entre os recursos existentes, a camada de broker
tem como responsabilidade ocultar das camadas superiores detalhes relacionados à dinâ-
4.2 Arquitetura da CSVMProvider
64
Figura 4.6: Modelo da Camada de Broker da CSVMProvider.
mica do ambiente, que envolve a disponibilidade ou não dos dispositivos registrados em
uma determinada localização. Em resposta a esta dinamicidade do ambiente, o elemento
AutonomicManager adiciona à plataforma a capacidade de se auto-gerenciar, como forma
de manter em tempo de execução a integridade das informações relacionadas aos dispositivos presentes na plataforma. O auto-gerenciamento envolve o constante monitoramento
dos recursos do ambiente e das solicitações dos usuários e a análise das mudanças, definindo a ação apropriada a ser tomada em resposta. Associado a este componente tem-se
o StateManager, que mantém durante a execução de uma aplicação de crowdsensing, o
estado atualizado dos dispositivos participantes, podendo ser: (1) habilitado, caso o dispositivo e sua capacidade atendam a consulta; (2) desabilitado, quando por intervenção
direta ou indireta do usuário o dispositivo deixa de atender os requisitos da consulta, ou
quando o dispositivo fica indisponível por fatores externos ao usuário, como ausência de
carga na bateria ou problemas com o acesso à Internet.
Este comportamento autonômico possibilita manter o modelo em tempo de
execução causalmente conectado com a plataforma, seja por mudanças no ambiente
que refletirão no modelo por meio de adaptações realizadas pela camada de broker,
ou por alterações no modelo do usuário que serão detectadas pela camada de broker,
interpretadas pela camada de síntese e que por sua vez refletirão no funcionamento da
plataforma.
A camada de broker também apresenta aspectos que definem suas funcionalidades e como elas serão executadas. Neste sentido, a camada de broker apresenta:
• Controle de Acesso: delimita, por meio do AccessControlManager o escopo de
acesso dos recursos externos definindo a priori duas restrições: (1) qualquer dis-
4.3 Arquitetura da CSVM4Dev
65
positivo móvel pode se registrar, desde que atenda aos requisitos mínimos como
presença de sensores embarcados; (2) para especificar uma consulta o dispositivo
deverá estar previamente registrado na plataforma.
• Controle Autonômico: descreve, por meio do AutonomicManager, o comportamento autonômico de acordo com as mudanças externas (seja do ambiente ou do
usuário) a fim de manter o modelo em tempo de execução causalmente conectado
(conforme descrito anteriormente). O AutonomicManager define que as mudanças
resultantes do monitoramento do ambiente refletem no funcionamento da plataforma por meio de eventos gerados pela camada de broker e tratados pela camada
de síntese.
• Seleção de Recurso: determina, por meio do ResourceManager como os dispositivos (físicos) devem ser selecionados. Para a atual versão da CSVMProvider, a
seleção de dispositivos é realizada de forma aleatória. Contudo, este trabalho apresenta como trabalho futuro a otimização no processo de seleção de recurso por meio
da injeção de inteligência na escolha dos dispositivos.
4.3
Arquitetura da CSVM4Dev
A CSVM4Dev é uma adaptação/configuração da CSVM para dispositivos móveis. Sua finalidade é integrar os sensores embarcados nesses dispositivos e possibilitar
que o usuário especifique consultas de crowdsensing a serem posteriormente tratadas pela
CSVMProvider. Ela apresenta características similares à CSVMProvider, como sua arquitetura em camadas (Figura 4.3(b)). Apesar de ser uma configuração da CSVM, ela possui
funcionalidades específicas, em função das limitações dos dispositivos móveis (em termos
de recursos de processamento, armazenamento e energia).
Além disso, a arquitetura da CSVM4Dev é multiplataforma e independente de
dispositivo móvel, ou seja, ela pode ser executada em qualquer dispositivo móvel independente de marca, modelo ou sistema operacional (embora neste trabalho apresentemos
apenas sua implementação para a plataforma Android). Esta característica, associada às
funcionalidades da camada de broker da CSVMProvider e da CSVM4Dev, possibilita que
dispositivos heterogêneos interajam entre si, tornando este cenário de crowdsensing ainda
mais complexo.
Em relação a sua arquitetura em camadas, a CSVM4Dev é subdividida em quatro
níveis, diferenciando-se da CSVMProvider por apresentar uma camada adicional que
possibilita a interação do usuário com a plataforma. As demais camadas apresentam
construções semelhantes às da CSVMProvider. A seguir apresentamos uma descrição
detalhada da arquitetura de cada camada da CSVM4Dev.
4.3 Arquitetura da CSVM4Dev
4.3.1
66
Camada de Aplicação
A camada de aplicação (Crowdsensing Application layer - CSApp) provê uma
interface externa para utilização da plataforma, a qual permite ao usuário especificar e
manter modelos de crowdsensing em CSML. Esses modelos representam as duas funcionalidades básicas para as quais a plataforma provê suporte: registro (de dispositivos e suas
capacidades) e consultas. A Figura 4.7 apresenta os principais componentes da camada
de aplicação e suas interfaces de comunicação. A camada de aplicação é dividida em
duas subcamadas: (1) subcamada referente às aplicações de crowdsensing propriamente
ditas; e (2) subcamada referente à API (CSVM API) para acesso às funcionalidades da
plataforma.
Figura 4.7: Camada de Aplicação da CSVM4Dev.
Os componentes Registro, Consulta e Aplicações, que integram a subcamada superior, representam aplicações padrão da plataforma e aplicações de terceiros construídas
sobre a CSVM API. Essas aplicações possibilitam a interação do usuário com a plataforma, por meio de uma interface gráfica (UI) que permite ao usuário solicitar o registro
de dispositivos e/ou especificar consultas.
A CSVM API fornece apoio às aplicações de crowdsensing (aplicações padrão
e aplicações desenvolvidas por terceiros) por meio de uma API para construção dos
esquemas (de controle e de dados) em X-CSML. Desta forma, aplicações de terceiros
podem especificar consultas com base no metamodelo de esquema de controle e de
dados proposto neste trabalho. Essa API reduz a complexidade no desenvolvimento
de aplicações de crowdsensing, de forma que os desenvolvedores se concentrem no
desenvolvimento das aplicações móveis, enquanto a API abstrai a parte de processamento
de modelos (esquema de controle e esquema de dados) e provimento de serviços de
crowdsensing.
Os principais componentes da CSApp estão descritos no modelo da camada,
apresentado na Figura 4.8. O AplicationManager é o elemento responsável por coordenar
o envio e recebimento de modelos entre a camada de aplicação e a camada de síntese,
além de gerenciar outros três elementos: X-CSMLGenerator, ProgrammingInterface e
4.3 Arquitetura da CSVM4Dev
67
UserInterface. O X-CSMLGenerator se encarrega de criar modelos em X-CSML a partir
das necessidades do usuário, tanto para o registro de dispositivos, quanto para a especificação de consultas, a serem enviados para processamento central pela CSVMProvider.
Desta forma, este elemento deve incorporar o conjunto de regras especificadas no metamodelo da CSML para construção dos modelos propriamente ditos. A ProgrammingInterface possibilita a troca de mensagens entre uma aplicação de crowdsensing desenvolvida
por terceiros e a CSVM4Dev a fim de permitir que desenvolvedores de aplicações de
crowdsensing utilizem as funcionalidades da CSVM por meio da CSVM API.
A interface do usuário, representada no modelo pelo elemento UserInterface, descreve três interfaces que refletem as principais funcionalidades da plataforma:
QueryInterface, RegistrationInterface e ConfigInterface. Além disso, essa camada mantém um conjunto predefinido de restrições (ConstraintType) e ações (ActionType) que
auxiliam o usuário na execução de tarefas.
A interface QueryInterface representa uma interface gráfica para especificação
de consultas de crowdsensing. O ambiente gráfico consiste de um formulário (QueryFormEditor) que possibilita que os usuários expressem suas necessidades de sensoriamento
por meio de um conjunto de ações definidas na enumeração ActionType. Desta forma, o
usuário pode criar uma nova consulta ou visualizar, editar e deletar uma consulta previamente especificada.
Figura 4.8: Modelo da Camada de Aplicação da CSVM4Dev.
A interface RegistrationInterface consiste em uma interface gráfica por meio da
qual o usuário registra um dispositivo e informa a configuração com a qual ele deve ser
registrado. A configuração envolve informações do dispositivo (marca, modelo e proprietário) e o conjunto de sensores para os quais o usuário autoriza o compartilhamento.
4.3 Arquitetura da CSVM4Dev
68
Por meio das operações definidas na enumeração ActionType, essa interface permite ao
usuário criar, visualizar, editar ou deletar uma solicitação de registro, apresentando maior
flexibilidade para o usuário na manipulação dos modelos. A interação do usuário com
a interface é facilitada pelo elemento RegistrationFormEditor, que define um formulário
onde o usuário configura o dispositivo para registro e seleciona os sensores que deseja
compartilhar.
No contexto deste projeto a plataforma deve permitir que o usuário especifique
de forma explícita requisitos de segurança e privacidade a serem aplicados em seu dispositivo particularmente. Neste sentido, o elemento ConfigInterface descreve um ambiente
gráfico que permite que o usuário defina um conjunto de restrições de privacidade e segurança. Essas restrições são representadas no modelo pelo elemento Constraints. Desta
forma, o usuário pode criar/consultar/atualizar/deletar restrições por meio de categorias
de restrições predefinas:
• Restrições de Privacidade: determina como sua identidade será tratada, tanto na
geração de consultas quanto na participação colaborativa em outras aplicações. Por
exemplo, informar a localização mas ocultar a identificação.
• Restrições de Segurança: se restringe ao controle de acesso que define qual a forma
de acesso ao dispositivo, podendo ser divida em três: (1) acesso liberado, que
permite acesso a todas informações necessárias do dispositivo de forma automática;
(2) acesso restrito, que permite acesso automático a parte das informações e, quando
necessário, solicita acesso às demais partes; e (3) acesso bloqueado, que não permite
nenhum tipo de acesso ao dispositivo.
4.3.2
Camada de Síntese
A camada de síntese (CrowdSensing Synthesis layer - CSS) é a essência da
CSVM4Dev e é responsável por validar e converter os modelos criados na CSApp em
modelos textuais baseadas em XML (X-CSML) antes de enviá-los à CSVMProvider. De
forma geral, em relação às funcionalidades, a CSS apresenta algumas similaridades com
sua camada equivalente na CSVMProvider, sendo que seus principais elementos estão
representados na Figura 4.9. Ela tem como componente central o SynthesisManager, que
realiza tanto a comunicação com as camadas de interface e middleware quanto a gerência
dos componentes internos.
O SchemaParser é o elemento responsável pela interpretação de modelos, tanto
do esquema de controle gerado na camada de aplicação, quanto do esquema de dados enviado pela CSVMProvider, quando esta processa uma consulta. As informações presentes
nos modelos são mantidas em um banco de dados local através do elemento StorageManager, que por sua vez contém um conjunto predefinido de ações. Uma ação representa
4.3 Arquitetura da CSVM4Dev
69
Figura 4.9: Modelo da Camada de Síntese da CSVM4Dev.
uma operação que pode ser executada sobre o banco de dados do dispositivo móvel e é
definida pelo elemento ActionType, que define os seguintes tipos: create, read, update e
delete. Em suma, o StorageManager gerencia diretamente a base de dados, mantendo os
modelos em tempo de execução armazenados e em conformidade com o ambiente e as
consultas de crowdsensing.
O componente TaskManager é responsável por instanciar tarefas a partir de
um esquema de dados proveniente de uma consulta. Essas tarefas são executados pela
camada CSS a fim de coordenar o processamento dos esquemas de dados na CSVM4Dev.
O TaskManager contém o QueryProcessor, que auxilia na execução dessas tarefas,
englobando a geração de comandos para as camadas inferiores para validar os requisitos
de segurança (camada de middleware) e acessar os recursos do dispositivo que satisfaçam
a consulta processada (broker).
4.3.3
Camada de Middleware
A camada de middleware (CrowdSensing Middleware layer - CSM) da
CSVM4Dev se restringe ao emprego de requisitos não-funcionais. Uma vez que os requisitos tenham sido determinados pelo usuário, esta camada se encarrega de aplicá-los
e validá-los durante o processamento dos modelos. Esses requisitos compreendem dois
aspectos: segurança e privacidade.
Para especificar esses requisitos o usuário conta com a interface gráfica fornecida
pela camada CSApp, que permite alterá-los a qualquer momento. Esta camada será
acionada por meio de eventos enviados pela camada de broker ao receber eventos da
4.3 Arquitetura da CSVM4Dev
70
Figura 4.10: Modelo da Camada de Middleware da CSVM4Dev.
CSVMProvider e por comandos gerados pela camada de síntese. Ao receber eventos
enviados pela camada de broker, a camada de middleware valida o conteúdo recebido
segundo as restrições de segurança e privacidade definidas e, caso o conteúdo esteja de
acordo com essas restrições, ela repassa os eventos à camada de síntese.
Ao receber comandos da camada de síntese, a CSM é responsável por aplicar
definitivamente as restrições de segurança e privacidade repassando comandos à camada
de broker para envio do modelo à CSVMProvider. Essas restrições estão definidos nos
elementos SecurityManager e PrivacyManager, respectivamente.
4.3.4
Camada de Broker
A camada de broker (CrowdSensing Broker layer - CSB) é responsável pelo gerenciamento dos recursos dos dispositivos móveis e pela comunicação com a CSVMProvider. Os recursos associados à CSVM4Dev podem ser classificados em duas categorias
distintas de acordo com sua forma de acesso: internos, quando associados ao conjunto
de sensores embarcados no dispositivo e compartilhados de acordo com a autorização do
usuário; e externos, quando se referem a serviços de crowdsensing (por meio de consultas
especificadas pelo usuário) mantidos pela CSVMProvider.
Assim como sua equivalente na CSVMProvider, a camada de broker possui um
conjunto de elementos que descrevem tanto suas funcionalidades, como comunicação e
acesso a recursos internos, quanto suas restrições. O modelo da camada de broker que
compreende esses elementos é representado pelo diagrama de classe da Figura 4.11.
O elemento central da camada, denominado BrokerManager é responsável por
coordenar e gerenciar os demais componentes, mantendo a integração entre eles. O
BrokerManager é composto por alguns elementos que definem os comandos e requisições
recebidos pela camada de broker. Esses elementos são: o Handler (manipulador) e o
ConstraintManager (que gerencia regras para seleção de recursos).
O Handler captura as requisições enviadas pela CSVMProvider que chegam à
camada CSB e indica a ação que deve ser tomada para cada uma. Ele identifica os tipos
4.3 Arquitetura da CSVM4Dev
71
Figura 4.11: Modelo da Camada de Broker CSVM4Dev.
de sensores exigidos pela CSVMProvider por meio do esquema de dados e seleciona os
recursos presentes no dispositivo que atendem à requisição. O processo de escolha dos
recursos envolve ações que são aplicadas aos recursos selecionados em resposta a uma
requisição. Essas ações possuem restrições associadas que definem, por meio do elemento
ConstraintManager), a forma de acesso aos recursos, por exemplo, o usuário permite
acesso aos recursos do dispositivo somente quando a capacidade da bateria estiver acima
de vinte por cento.
Os dois tipos de recursos gerenciados pela camada de broker são descritos por
meio de um gerenciador de recursos, definido pelo ResourceManager. O gerenciador de
recursos define a interface dos recursos gerenciados e como estes podem ser acessados.
Essa interface é descrita através do elemento Interface. Conforme apresentado no diagrama de classes da Figura 4.11, a Interface compreende o subelemento CSInterface,
que representa uma interface responsável pela comunicação direta com a CSVMProvider.
Desta forma, ela possibilita que a CSVMProvider acesse os recursos de sensoriamento
do dispositivo e possibilita que a CSVM4Dev acesse os recursos do ambiente (dispositivos registrados) mantido pela CSVMProvider. Para a efetivação desta comunicação, a
CSVMProvider implementa na camada de broker uma interface equivalente.
O gerenciamento dos recursos externos é descrito pelo CSResourceManager,
que define os padrões de comunicação utilizados para comunicação com a CSVMProvider, de modo que a CSInterface disponibiliza o acesso aos serviços de comunicação
da CSVM4Dev. Em contrapartida, o DeviceResourceManager descreve o acesso e gerenciamento dos recursos que serão efetivamente utilizados para realizar os serviços de
crowdsensing especificados nos modelos. Para esta finalidade, ele define um conjunto de
serviços que abstrai da camada superior a diversidade dos sensores embarcados no dispositivo móvel.
O conjunto de elementos e serviços fornecidos pela camada de broker devem
4.4 Processo de Registro de Dispositivos
72
fornecer suporte as duas principais funções que a CSVM disponibiliza para os usuários:
o registro de dispositivos e a especificação de consultas. Estas funções serão descritas nas
seções seguintes.
4.4
Processo de Registro de Dispositivos
Para o provimento de serviços de crowdsensing móvel a plataforma CSVM
dispõe de uma infraestrutura de dispositivos físicos que se registram e informam suas
capacidades de sensoriamento na plataforma. Cada dispositivo registrado contribui para
aumentar a cobertura de regiões monitoradas e/ou aumentar a precisão do sensoriamento
em uma determinada região. O registro de um dispositivo é condição necessária para
que suas capacidades de sensoriamento fiquem disponíveis para uso pela plataforma. O
incentivo para realizar o registro se dá pelo fato de que, uma vez registrado, o dispositivo
pode fazer uso dos serviços da plataforma.
A composição de todos os dispositivos móveis registrados resulta na construção
de um ambiente “virtual” de crowdsensing móvel, que abstrai infraestruturas físicas
destes dispositivos e, consequentemente de seus sensores embarcados. A diversidade
de dispositivos e, consequentemente de sensores a eles associados, é o que determina
a capacidade de sensoriamento e cobertura da plataforma.
A etapa de registro é primordial para o funcionamento da plataforma e antecede
suas demais funcionalidades. A Figura 4.12 ilustra o processo de registro de um dispositivo móvel por meio de uma visão detalhada da arquitetura geral apresentada na Figura
4.2.
Figura 4.12: Arquitetura de um registro.
4.4 Processo de Registro de Dispositivos
73
O processo de registro pode ser dividido em duas etapas distintas: (1) o registro
do dispositivo no serviço de comunicação, e (2) o registro do dispositivo na plataforma
propriamente dita. Entretanto, antes que isto seja possível, é necessário que o usuário de
forma participativa, instale o módulo da CSVM para dispositivos móveis (CSVM4Dev)
e especifique, por meio da camada de aplicação, os recursos (sensores) que serão compartilhados. Posteriormente, o modelo (esquema de controle) criado pelo usuário, representando as informações que fazem parte do registro do dispositivo, é convertido pela
CSVM4Dev em X-CSML e preparado para envio à CSVMProvider, aplicando os requisitos de segurança e privacidade definidos pelo usuário. Concluída esta parte inicial, o
dispositivo se registra no serviço de comunicação para habilitá-lo a receber consultas geradas pela CSVMProvider (ilustrado na Figura 4.12 passos 1 e 2). Em seguida, a CSVMProvider procede com o registro do dispositivo na plataforma.
Registro na plataforma
Após o usuário especificar as informações do dispositivo (proprietário, marca
e modelo) bem como os sensores que deseja compartilhar, a camada de broker da
CSVM4Dev, procede com o envio da requisição de registro na plataforma (Figura 4.12
passo 3). Este envio ocorre na forma de modelo, mais especificamente como um esquema
de controle por meio do qual o dispositivo publica suas capacidades.
A camada de broker da CSVMProvider recebe a requisição e, em seguida, gera
eventos para as camadas superiores prosseguirem com o processamento do modelo. Neste
momento, a camada de middleware se encarrega de validar os aspectos de segurança e
privacidade, conforme descrito na Seção 4.1. A interpretação do modelo (esquema de
controle) ocorre efetivamente na camada de síntese.
Para o serviço de registro, a interpretação do modelo envolve identificar se as
informações estão completas e, posteriormente executar um conjunto de operações diretamente nos esquemas mantidos pela CSVMProvider (Figura 4.12 passo 4). A primeira
operação realizada pela camada de síntese compreende uma consulta ao esquema de controle do ambiente mantido no repositório para verificar a unicidade do dispositivo; se
este já estiver registrado ela apenas atualiza o registro existente; caso contrário, ela cria
um novo registro com os dados contidos no modelo. Desta forma, o dispositivo passa a
integrar o esquema do controle do ambiente.
Concluído o registro do dispositivo no repositório e, consequentemente no
ambiente de crowdsensing mantido pela plataforma, a camada de síntese gera comandos
às camadas subjacentes para notificar o dispositivo da conclusão do registro (Figura
4.12 passo 6). Uma vez registrado, o dispositivo está habilitado a especificar consultas
utilizando a plataforma e participar de forma colaborativa na construção de respostas a
4.5 Processo de Consulta
74
consultas feitas por usuários de outros dispositivos registrados. O processo de consulta é
descrito na Seção 4.5.
4.5
Processo de Consulta
O principal serviço em se tratando do domínio de crowdsensing é a especificação
de consultas. Uma consulta em crowdsensing se refere ao conjunto de sensores e suas
especificações (tais como tipo, localização e quantidade) necessárias para satisfazer as
necessidades de aplicações de crowdsensing móvel.
A plataforma CSVM aplica duas restrições em relação à especificação de consultas: (1) uma consulta só pode ser definida por dispositivos registrados na plataforma; (2)
a consulta só será processada se houver recursos disponíveis no ambiente que satisfaçam
as condições especificadas pelo usuário.
Do mesmo modo que no registro, a arquitetura do processamento de consultas,
retratada na Figura 4.13, representa uma fração da arquitetura geral (apresentada na Seção
4.1) enfatizando as etapas compreendidas no processo de especificação e execução de
uma consulta de crowdsensing. Estas etapas referem-se à subscrição de consultas e à
notificação dos dados requisitados.
Figura 4.13: Arquitetura de uma consulta.
De modo geral, o processo de consulta se resume em: modelagem da consulta
realizada pelo usuário ou aplicação; subscrição do modelo resultante (esquema de controle da consulta) junto ao provedor de serviço (Figura 4.13, passo 1); e recrutamento dos
dispositivos (Figura 4.13, passo 2, 3 e 4). Este processo será detalhado em seguida, tendo
como referência as etapas de subscrição e notificação.
4.5 Processo de Consulta
4.5.1
75
Subscrição
A subscrição refere-se às etapas iniciais do processamento de consultas. Contudo, antes de qualquer processamento propriamente dito as consultas devem ser especificadas pelo usuário. Visando facilitar este processo, a CSV4Dev disponibiliza, por meio
da camada de broker, uma interface gráfica que auxilia na modelagem de consultas. A interface gráfica, construída de acordo com construções da CSML, possibilita que o usuário
exponha seu interesse em sensoriamento remoto de uma determinada localização, podendo ainda especificar mais de um tipo de sensor por consulta e combiná-los a fim de
derivar informações compostas.
Da mesma forma que no registro de dispositivos, o modelo descrito por meio
da interface gráfica é convertido em X-CSML na CSVM4Dev. Em seguida, são aplicadas
as restrições de segurança e privacidade previamente definidas. Este modelo representa
o esquema de controle da consulta (QCS - Query Control Schema, definido na Seção
3.2). A camada de síntese da CSVM4Dev se encarrega também de manter este esquema
de controle em uma base de dados local, pois, após tê-lo especificado, o usuário pode
alterá-lo, desde que a respectiva consulta ainda esteja em execução.
O envio de consulta à CSVMProvider é realizada pela camada de broker da
CSVM4Dev após completados os passos descritos acima. Isto é feito por meio do envio
do esquema de controle da consulta por meio sua interface de comunicação (CSInterface).
Isto corresponde ao passo 1 da Figura 4.13. Por esta mesma interface a camada de
broker da CSVMProvider recebe a subscrição e gera eventos para as camadas superiores
interpretarem e processarem a consulta, conforme descrito a seguir.
A camada de middleware da CSVMProvider, ao receber os eventos da camada
de broker verifica se o esquema de controle da consulta está condizente com as restrições
de segurança e privacidade e o repassa à camada de síntese. Uma das principais funcionalidades da CSVMProvider é realizada por esta última camada e refere-se à interpretação
do esquema de controle da consulta e à subsequente geração de comandos para seleção
dos dispositivos.
A partir da interpretação e análise do modelo, uma sequência de transações é
realizada sobre a base de dados (4.13 passo 2), que mantém o repositório de esquemas da
CSVMProvider. A primeira delas é a persistência das informações presentes no esquema
de controle da consulta, realizada pela camada de síntese da CSVMProvider. Em seguida,
a camada de síntese gera comandos à camada imediatamente inferior repassando as
seguintes informações extraídas do QCS: os tipos, a quantidade e a localização associada
a cada tipo de sensor.
Neste momento ocorre a segunda transação com o repositório, realizada pela
camada de middleware da CSVMProvider a fim de selecionar recursos (dispositivos)
lógicos de acordo com o comando recebido da camada de síntese. Por exemplo, após
4.5 Processo de Consulta
76
a camada de síntese gerar um comando (getLogicalDevice) passando como parâmetro
o tipo, localização lógica e a quantidade de um determinado sensor (por exemplo, dez
sensores de temperatura localizados no prédio do Instituto de Informática da UFG)
conforme especificado na consulta, a camada de middleware se encarrega de obter os
dispositivos através de um comando SQL aplicado ao repositório. Esta seleção segue a
regra de recrutamento descrita na seção 4.1.
Após obtido um conjunto de dispositivos lógicos recrutados, a camada de middleware realiza uma chamada à camada de broker para escolha dos dispositivos físicos
que compreenderão a consulta. Após escolhidos os dispositivos, a camada de middleware
gera um evento destinado à camada de síntese para geração de uma instância do esquema
de controle da consulta e sua representação em X-CSML. Esta instância representa o
modelo em tempo de execução e compreende os dispositivos selecionados, os tipos de
sensores associados a cada um deles, a localização e a quantidade associada aos tipos de
sensores, as operações que serão aplicadas às medições e o tipo de notificação (conforme
descrito na seção 3.2 e exemplificado na seção 3.2.3.
A representação do modelo em tempo de execução em X-CSML facilita a compreensão e é interpretada pela CSVMProvider em dois momentos distintos: na subscrição/requisição de interesse em dados de sensoriamento dos dispositivos; na associação de
notificações enviadas pela CSVM4Dev após obter o dado sensoriado. Portanto, a camada
de síntese interpreta o modelo em X-CSML e instancia a partir dele um esquema de dados.
Conforme descrito no Capítulo 3, o esquema de dados representa um formulário (form)
vazio a ser preenchido por cada dispositivo recrutado, contendo informações referentes
aos sensores que deverão ser medidos.
A camada de síntese gera então chamadas à camada de broker para o envio
das requisições aos dispositivos. Esta, por sua vez, utiliza a interface CSInterface para
comunicar com o serviço de comunicação gerando várias solicitações (de acordo com o
número de dispositivos recrutados) contendo o ID de registro de cada dispositivo para o
envio do esquema de dados a cada um deles (Figura 4.13 passo 3).
A etapa de subscrição se encerra com o serviço de comunicação que processa a
solicitação do provedor de serviço e envia a requisição aos dispositivos (4.13 passo 4).
Cada dispositivo processa a requisição recebida e, a partir dos dados sensoreados, envia
notificações ao provedor de serviço. Essa etapa é descrita a seguir.
4.5.2
Notificação
De maneira oposta à subscrição, a notificação refere-se à etapa final do processamento da consulta. Ela tem início com o recebimento de requisições de sensores a serem monitorados pelos dispositivos recrutados em uma consulta. A camada de broker da
4.5 Processo de Consulta
77
CSVM4Dev é responsável por esta tarefa e, em seguida, encaminha o esquema de dados
recebido na requisição para interpretação e processamento por meio de eventos à camada
superior.
Novamente a camada de middleware da CSVM4Dev se encarrega de validar
as regras de privacidade e segurança. Feito isso, ela gera eventos para a camada de
síntese, que interpreta o modelo recebido e extrai as seguintes informações: qual ou quais
sensores estão sendo solicitados e quando devem ser amostrados. Uma vez identificadas
essas informações, o esquema de dados, assim como os demais modelos, é persistido em
uma base local para posterior recuperação caso haja qualquer modificação no interesse de
sensoriamento da aplicação.
A camada de síntese gera então comandos solicitando acesso aos recursos
locais do dispositivo de acordo com os tipos de sensores especificados no esquema
de dados. A camada de middleware intercepta o comando e verifica se o recurso está
disponível conforme predefinido na política de acesso e na configuração do dispositivo
definida no momento em que ele foi registrado. Finalizada esta verificação, o comando
é repassado à camada de broker, que solicita ao sistema operacional acesso ao recurso
especificado. Uma vez que o acesso tenha sido liberado, ela aciona o sensor para capturar
a informação desejada. Caso o tipo de notificação especifique que o sensoriamento deverá
ser realizado periodicamente, a camada de broker ficará responsável por acioná-lo sempre
que necessário.
Após obtidas as informações sensoreadas, a camada de broker gera eventos
à camada superior informando que a tarefa está concluída. A camada de middleware
simplesmente repassa o evento à camada de síntese, que por sua vez cria uma instância do
esquema de dados recebido. Esta instância representa o form preenchido com informações
monitoradas pelos sensores requisitados. Nesta instância (conforme definido no Capítulo
3) há informações como: o tipo de sensor, precisão com que o dado foi coletado, data e
hora da coleta, o valor coletado propriamente dito, o tipo de dado e a unidade de medida.
Concluído o processamento da requisição, a CSVM4Dev, através da camada de
broker, notifica o provedor de serviço (Figura 4.13 passo 5) enviando-lhe o esquema
de dados preenchido (ou seja, a instância do esquema de dados). A CSVMProvider
recebe a instância do esquema de dados por meio da camada de broker e gera eventos
para a camada superior informando que uma nova instância do esquema de dados foi
recebida. A camada de middleware verifica os aspectos relacionados a segurança e
privacidade e repassa o evento à camada superior. Ao receber o evento, a camada de
síntese interpreta a instância do esquema de dados recebida a fim de identificar a instância
do esquema de controle da consulta correspondente. Uma vez identificado a instância
esquema de controle da consulta, ela interpreta pela segunda vez este modelo em tempo
de execução a fim de construir a resposta para o dispositivo solicitante por meio da
4.6 Considerações Finais
78
realização de operações (especificadas no esquema de controle da consulta) sobre os
dados recebidos através da instância do esquema de dados. Esta interpretação possibilita
que a CSVMProvider identifique também se a consulta foi satisfeita por completo ou se
ainda há pendências.
Na medida em que os dispositivos recrutados processam as requisições e geram
as notificações, a CSVMProvider se encarrega de aplicar as operações relacionadas a cada
subconjunto monitorado, como por exemplo, calcular a média. No fim, ela realiza uma
agregação de toda informação obtida, compondo uma instância do esquema de dados geral
para então enviá-lo ao dispositivo solicitante. Antes porém, é importante destacar que
tanto o esquema de dados gerado pela CSVMProvider quanto as instâncias do esquema
de dados recebidas são armazenados (Figura 4.13 passo 6). Ao fim deste processamento a
CSVMProvider envia uma mensagem contendo a instância do esquema de dados (resposta
à consulta) para o dispositivo que gerou a consulta (Figura 4.13 passos 7 e 8).
Tendo recebido a resposta da consulta, a camada de broker da CSVM4Dev gera
eventos à camada superior para verificação e validação do modelo recebido. A camada
de síntese, ao receber o evento, interpreta a instância do esquema de dados recebida e a
associa com o esquema de controle da consulta correspondente, pois pode haver mais de
uma consulta em execução vinculada àquele dispositivo. Ao fim deste processamento ela
repassa o modelo à camada de aplicação para apresentação do resultado ao usuário.
4.6
Considerações Finais
Neste capítulo apresentamos a arquitetura geral da CSVM, incluindo seus principais componentes e como eles interagem para prover serviços de crowdsensing. Em
seguida detalhamos os dois principais componentes dessa arquitetura: componente móvel
(CSVM4Dev) e componente servidor (CSVMProvider). Para os dois principais componentes foram apresentados sua arquitetura em camadas e para cada camada foi apresentado o modelo que a descreve.
Mostramos também neste capítulo detalhes de como o processo de registro de
dispositivos e o processo de consulta ocorre e como os componentes interagem em cada
etapa. No Capítulo 5, apresentamos a implementação da CSVM a fim de prover suporte
para as funcionalidades de crowdsensing apresentadas no Capítulo 3.
CAPÍTULO 5
Implementação da CSVM
Com o objetivo de demonstrar a viabilidade da arquitetura proposta, foi desenvolvido um protótipo que implementa as funcionalidades da plataforma para provimento
de serviços de crowdsensing, através principalmente da criação e manutenção de modelos
em tempo de execução. O protótipo abrange as duas partes da arquitetura da plataforma
CSVM: uma parte desenvolvida para os dispositivos móveis, CSVM4Dev, e outra parte
desenvolvido como um provedor de serviço na nuvem, CSVMProvider.
A Seção 5.1 apresenta uma visão geral do protótipo desenvolvido, seguido pela
Seção 5.2, que descreve as principais técnicas e tecnologias empregadas no desenvolvimento da plataforma. A implementação da CSVMProvider e CSV4Dev é descrita nas
Seções 5.3 e 5.4, respectivamente. Por fim, apresentamos detalhes de como os processos
de registro de dispositivos (Seção 5.5) e processamento de consultas (Seção 5.6) foram
implementados,
5.1
Visão Geral
De modo geral, no protótipo foram implementadas as funcionalidades básicas
de crowdsensing alinhadas à abordagem dirigida por modelos: registrar os dispositivos,
especificar consultas, selecionar dispositivos voluntários, manter modelos em tempo de
execução, processar requisições e obter dados sensoriados.
Para o desenvolvimento do protótipo foi utilizado a IDE Eclipse para aplicações
Java EE com plugin ADT (Android Development Tools) e o Android SDK (Software
Development Kit) para o desenvolvimento de aplicações Android. O protótipo e seu
código fonte pode ser encontrado no repositório do projeto 1 .
Nessa implementação, optamos por priorizar os aspectos funcionais e estruturais
da plataforma, para só então considerar aspectos não-funcionais como segurança e privacidade. É importante ressaltar que, a parte implementada é suficientemente completa para
demonstrar e validar a abordagem.
1 https://subversion.assembla.com/svn/crowdsensing/
5.2 Tecnologias Utilizadas
80
Além das funcionalidades implementadas, o protótipo envolve três operações
aplicadas a modelos: criação, associada à geração do modelo; interpretação, associada à
análise do modelo a fim de definir comandos e ações a serem executadas pela plataforma;
e transformação, associada a alteração do modelo durante à execução, que reflete as
mudanças tanto no ambiente quanto em uma consulta.
As funcionalidades apresentadas nessa seção refletem a arquitetura proposta no
Capítulo 4, e para implementá-las foi utilizado um conjunto de técnicas e tecnologias que
serão apresentadas na Seção seguinte.
5.2
Tecnologias Utilizadas
Esta seção apresenta as principais técnicas e tecnologias utilizadas na implementação da CSVM. Cada tecnologia foi utilizada para um propósito específico.
O padrão Model-View-Controller (MVC) foi utilizado para representar a estrutura em camadas da CSVM e os fatores que levaram à essa escolha foram: facilitar a
estruturação da plataforma em diferentes componentes; contribuir com a qualidade da
implementação da plataforma a longo prazo; reduzir o tempo de desenvolvimento, teste e
manutenção da plataforma; e proporcionar a reutilização da lógica implementada (obtido
graças ao desacoplamento dos componentes), tanto para evolução da plataforma, quanto
para aplicá-la em projetos semelhantes. Os detalhes da implementação deste padrão é
apresentado na seção 5.2.1.
Em relação à comunicação, para realizar a interação entre as partes envolvidas,
optou-se por utilizar diferentes protocolos de acordo com o sentido da comunicação.
Desta forma, a comunicação estabelecida no sentido do dispositivo para o provedor de
serviço (Device-to-Provider, D2P) emprega o formato padrão de serviço web baseado no
protocolo HTTP (HyperText Transfer Protocol - Protocolo de Transferência de Hipertexto) e troca de dados segundo JSON (JavaScript Object Notation - Notação de Objetos
JavaScript) que são implementados na plataforma através de serviços RESTFul. Por outro lado, a comunicação com origem no provedor de serviço (Provider-to-Device, P2D)
utiliza um protocolo de troca de mensagens com base no serviço GCM (Google Cloud
Messaging) da Google.
Optamos por esta abordagem híbrida por contemplar o modelo arquitetural
proposto, onde parte da comunicação se origina no provedor de serviço e parte no
dispositivo móvel. Ambos protocolos estão presentes na camada de broker, responsável
pela comunicação entre os componentes da plataforma e serão detalhados nas seções 5.2.2
e 5.2.3.
5.2 Tecnologias Utilizadas
5.2.1
81
Model-View-Controller
A arquitetura em camadas adotada na CSVM foi implementada seguindo o padrão Model-View-Controller (MVC). MVC é um padrão arquitetural de software que propõe uma separação entre a lógica de negócio e a apresentação da informação/funcionalidades ao usuário usando um mediador [16]. A premissa principal desse padrão é baseada
na modularidade e abrange três aspectos diferentes: o modelo (model), que consiste na
lógica (regras de negócio, implementada na forma de funções) e dados da aplicação; a
visão (view), que consiste na representação dos dados e funcionalidades de forma gráfica;
e o controlador (controller), que faz a mediação e acessa as funcionalidades da aplicação.
Para representar as camadas da plataforma de acordo com o padrão MVC, fezse necessária a associação dessas camadas com os componentes do MVC, levando em
consideração as funcionalidades de cada uma. A Figura 5.1 ilustra a arquitetura resultante
dessa associação e as principais interações entre os elementos.
Figura 5.1: Mapeamento da arquitetura em camadas da plataforma de acordo com o padrão MVC.
O componente View pertence exclusivamente à CSVM4Dev e compreende a camada de aplicação, possibilitando por meio dela a interação do usuário com a plataforma
(1). Desta forma, seus principais serviços são apresentados por meio de um conjunto de
elementos gráficos que auxiliam na especificação de serviços de crowdsensing. A CSVMProvider não apresenta este componente por não possuir interação direta com o usuário.
De acordo com a abordagem proposta o usuário pode registrar o dispositivo e/ou
especificar uma consulta. Essas ações influenciam diretamente no gerenciamento de modelos em tempo de execução que são mantidos pela plataforma. Desta forma, essas ações
compreendem parte das regras de negócio da plataforma e estão implementadas na camada de síntese da CSVM4Dev, que é implementada pelo componente Model. Assim,
este componente interage de forma direta (representada no diagrama pelas setas contínuas) com a View, tanto para especificar as necessidades do usuário quanto para notificar
5.2 Tecnologias Utilizadas
82
as respostas às solicitações realizadas (2). Esse componente também é responsável pelas
interações com a base de dados.
Na CSVM4Dev o componente Controller engloba as camadas de middleware
e broker, que têm como principal responsabilidade o gerenciamento de requisitos nãofuncionais (segurança e privacidade) e recursos internos (sensores) e externos (conexão
com o ambiente de crowdsensing da plataforma) respectivamente. Sua interação com a
View ocorre de forma indireta (representada no diagrama pelas setas tracejadas) por meio
do processamento e resposta a eventos específicos disparados por determinadas ações
do usuário (3). Essas ações se restringe a apresentação dos recursos para os quais o
dispositivo provê suporte para que eles possam ser selecionados no momento do registro.
Outra interação presente neste diagrama proposto, relacionada à CSVM4Dev,
compreende os componentes Model e Controller (4), onde uma vez interpretado o modelo
na camada de síntese, os comandos são gerados e repassados de forma direta à camada de
middleware e, consequentemente, ao broker para executas as ações exigidas pela camada
superior. De modo geral, as alterações serão refletidas nos modelos, seja por ações internas
(realizada pelo usuário) ou por eventos disparados pela CSVMProvider.
A CSVMProvider é estruturada apenas por dois componentes MVC (Model e
Controller) que implementam suas três camadas (Síntese, Middleware e Broker). O Controller possibilita, por meio do broker, que a CSVMProvider gerencie os dispositivos
móveis que estão registrados na plataforma e controle a comunicação com eles (5). Desta
forma, o componente Controller, além de gerenciar as conexões com os dispositivos, também controla a aplicação de um conjunto de restrições, gerando eventos ao componente
Model (mais especificamente à camada de síntese), e processando chamadas advindas
deste componente (6). Assim sendo, este componente controla o funcionamento da plataforma, por meio da interação direta com os dispositivos móveis e coordenação das ações
a serem realizadas pela CSVMProvider.
O Model por sua vez, implementa o conjunto de regras de negócio de acordo
com a abordagem dirigida por modelos, tendo como principais atribuições a interpretação
de modelos em tempo de execução e o gerenciamento do repositório de modelos.
5.2.2
RESTFul
Os serviços RESTful implementados seguem os princípios de REST (Representational State Transfer). REST é um tipo de arquitetura para sistemas distribuídos que
utiliza conceitos com base na presença de recursos, tratados como serviços (funcionalidades), e como elementos de informação utilizados por meio de um identificador global
denominado URI (Uniform Resource Identifier) [20]. Os componentes (clientes e servidores) manipulam esses recursos através de um protocolo padrão de comunicação (HTTP),
5.2 Tecnologias Utilizadas
83
que define um conjunto de operações (verbos): POST, GET, PUT, DELETE, HEAD e
OPTIONS. Outra importante característica dos serviços RESTFul está na flexibilidade
para estender novas funcionalidades, pois cada funcionalidade pode ser implementada de
forma independente sem que haja a necessidade de refatoração do código.
O REST trabalha com três formatos para troca de mensagens: XML, JSON ou
texto puro. A CSVM utiliza o formato JSON (JavaScript Object Notation) por se tratar
de um formato menor que o equivalente em XML, o que facilita a transmissão dos dados
pela rede. Além disso, JSON possui uma estrutura simples sendo sua interpretação mais
rápida e precisa. Os detalhes de sua implementação são apresentados nas Seções 5.3 e
5.4.
5.2.3
GCM
Google Cloud Messaging (GCM). É um serviço da Google que permite a
comunicação de um aplicativo na Nuvem com um dispositivo Android através da troca de
mensagens. Esta troca de mensagens é intermediada pelos servidores GCM, que fornecem
um ID único para cada dispositivo, fazendo-se então necessário que cada dispositivo
se registre previamente neste serviço. Nesta etapa de registro, deve-se informar qual a
aplicação que o dispositivo deseja se registrar e quem é o remetente (servidor) associado
a essa aplicação. Com isso, o GCM restringe o envio de mensagens, de forma que apenas
o servidor associado, que conhece o ID dos dispositivos registrados, pode enviá-las. Em
relação ao envio de mensagens, o GCM possibilita que o Provedor de Serviço envie
requisições de compartilhamento de dados a um conjunto de dispositivos recrutados
conforme a necessidade de uma determinada aplicação
A implementação deste serviço envolve tanto o processo de registro no próprio
GCM quanto o de envio de mensagens e incluem um conjunto de credenciais necessárias
para o seu funcionamento, sendo elas:
• ID do registro (Registration ID): Identificação emitida pelos servidores GCM
para o aplicativo Android rodando em um dispositivo específico e utilizada para
identificar os dispositivos que estão aptos a receber uma determinada mensagem.
• ID do remetente (Sender ID): Equivale ao número de identificação do projeto
previamente criado na API GCM do Google referente à aplicação e é utilizado
no processo de registro para a fim de identificar um servidor habilitado para enviar
mensagens para os dispositivos.
• ID da aplicação (Application ID): Representa a identificação do aplicativo Android
que está registrado para receber mensagens. Este identificador é único, ou seja,
todos dispositivos, uma vez instalada a aplicação, possuirão o mesmo identificar,
5.3 CSVMProvider
84
sendo esta sua principal diferença em relação ao ID do registro (que identifica cada
dispositivo unicamente).
• Chave de acesso (API Key): Uma chave de acesso armazenada no servidor que
autoriza o acesso aos serviços do Google.
Neste trabalho, o serviço GCM foi utilizado para promover a conexão da CSVMProvider com os dispositivos móveis. A utilização do serviço GCM concede à CSVMProvider uma capacidade de coordenar e gerenciar a comunicação com os dispositivos, pois
ao contrário da implementação de serviços RESTFul, onde as solicitações devem sempre
partir dos dispositivos móveis, ele possibilita que as mensagens tenham origem no provedor de serviço. Neste sentido, uma aplicação no dispositivo não precisa estar em execução para receber mensagens. O sistema “acorda” a aplicação por meio da transmissão de
eventos, que envia uma mensagem para a aplicação que está rodando em background no
dispositivo (como um daemon).
Uma das maiores vantagens da solução GCM está na flexibilidade em relação a
configuração do comportamento da troca de mensagens, por exemplo, agendando o envio
da mensagem ou a enviando imediatamente. Na plataforma CSVM as aplicações construídas sobre o GCM são implementados tanto na aplicação móvel quanto no provedor de
serviço.
5.3
CSVMProvider
A implementação da CSVMProvider envolve a construção das camadas da
CSVM que fornecem as funcionalidades básicas de um cenário de crowdsensing móvel: registrar dispositivos móveis e processar consultas especificadas pelo usuário. Essas
funcionalidades serão detalhadas na seção 5.5.2 e 5.6.2 respectivamente. A Figura 5.2
apresenta um diagrama com as principais classes utilizadas na implementação das camadas da CSVMProvider.
As classes que compõem a CSVMProvider foram agrupadas em pacotes onde,
cada pacote representa uma camada da CSVMProvider. No pacote Broker contém as
classe EnvCSResource e QueryCSResource que são responsáveis por disponibilizar as
funcionalidades de registro e consulta à CSVM4Dev. Por exemplo, quando o usuário
especificar uma consulta na CSVM4Dev, um recurso de consulta de crowdsensing é
solicitado à CSVMProvider e a classe QueryCSResource é instanciada. Outra classe
importante do pacote Broker é a ResourceManager que implementa métodos que
controlam os recursos da plataforma. Esses métodos são responsáveis por verificar e
atualizar o status (ativo ou inativo) dos dispositivos e manter uma lista atualizada com
dispositivos recrutados. A última classe desse pacote é a GCMSender que implementa
5.3 CSVMProvider
85
Figura 5.2: Diagrama de classes da CSVMProvider.
os principais métodos do serviço GCM para envio de mensagens aos dispositivos móveis
(utilizado para esta finalidade o método sender).
No pacote Middleware a classe LogicalResourceManager encarrega de selecionar recursos lógicos da plataforma. Em outras palavras, esta classe possui métodos de
acesso ao repositório, onde aplica comandos SQL para selecionar os dispositivos registrados que satisfaça uma determinada consulta.
O pacote Synthesis compreende um número maior de classes, uma vez que
possui mais atribuições. A classe SchemaParser implementa um conjunto de métodos para interpretação dos modelos, como por exemplo os métodos queryProcessor e
dataSchemaProcessor responsáveis pela interpretação de um QCS e de um DS, respectivamente. A RepositoryManager é outra classe importante que controla as interações
com o banco de dados (repositório) e instancia a classe GenericDAOImpl para aplicar
comandos SQL diretamente no banco de dados. Esta classe, por sua vez, implementa
um conjunto de métodos da interface GenericDAO que abstrai as entidades presentes na
implementação da plataforma.
A classe CommandGenerator implementa um conjunto de comandos que são
aplicados a classe LogicalResourceManager para seleção dos dispositivos. Em relação
ao processamento de consultas, a classe DataSchemaGenerator implementa o método
generate responsável pela geração do esquema de dados referente a uma consulta. E
por fim, a última classe do pacote de síntese é a AggregateData que aplica as operações
(por exemplo, média) definidas em uma consulta (através do método aggregate) sobre
os esquemas de dados notificados pelos dispositivos recrutados.
5.4 CSVM4Dev
86
Em relação as tecnologias utilizadas, a CSVMProvider foi implementada por
meio da plataforma Java 1.7 (J2EE - Java 2 Enterprise Edition) e tendo como base a
arquitetura de web services RESTful. Para a implementação dos serviços RESTful, foi
utilizado um conjunto de tecnologias open source como: JAX-RS (Java API for RESTFul
web services) [27], que fornece suporte para criação de serviços REST e oferece uma
forma padrão de implementação desses serviços; Jersey [44], um framework que fornece
um conjunto de bibliotecas para o desenvolvimento de webservices RESTful usando a
API JAX-RS; e JSON, padrão para formato de dados utilizado na comunicação com os
dispositivos móveis.
Outros serviços de terceiros utilizados no desenvolvimento da CSVMProvider
incluem Apache Tomcat [63], um contêiner de servlets sobre o qual a aplicação é
executada; Hibernate [6, 31], um framework para o mapeamento objeto-relacional, que
no contexto deste trabalho se aplica entre objetos escritos na linguagem Java, e MySQL
[45], um banco de dados relacional.
5.4
CSVM4Dev
Os módulos da CSVM4Dev foram desenvolvidos para dispositivos Android
utilizando a suíte de desenvolvimento Android SDK 22.6, de modo que Java foi a
linguagem de programação adotada. Para integração com o módulo de comunicação da
CSVMProvider, foi necessário implementar um cliente RESTful. Para esta finalidade, a
classe ClientWebService é a interface direta com a CSVMProvider e é responsável por
gerenciar as requisições através das operações GET e POST.
Para persistência local de dados, foi utilizada uma biblioteca que implementa
um banco de dados SQL auto-contido/embutido, denominado SQLite [59, 46], sendo a
classe DBAdapter responsável por implementar e gerenciar as conexões com esta base
de dados. O DBAdapter é instanciado pela classe SotrageManager responsável por
intermediar as chamadas de acesso ao banco de dados. Estas duas classe integram o
pacote Synthesis juntamente com a classe QueryProcessor que implementa métodos
relacionados ao processamento de consultas geradas pela CSVMProvider. A Figura 5.3
apresenta as demais classes e pacotes utilizados na implementação da CSVM4Dev.
No pacote Middleware, a classe MiddlewareManager implementa o tratamento
de comandos gerados pela camada de síntese e métodos que realizam chamadas ao pacote
Broker. No Broker temos um conjunto de classes que estendem a classe Request que
implementa os serviços RESTFul para dispositivos móveis e é responsável por gerar requisições para CSVMProvider. As classes que a estendem são denominadas EnvCSRequest,
QueryCSRequest, DataSchemaRequest e são responsáveis por enviarem para CSVM-
5.5 Registro de dispositivos
87
Figura 5.3: Diagrama de classe da CSVM4Dev.
Provider o esquema de controle, esquema de controle da consulta e esquema de dados,
respectivamente.
Outras duas importantes classes do pacote Broker são a LocalResourceManager
responsável implementar métodos de acesso aos sensores do dispositivo e a
CSResourceManager que implementa métodos para utilização dos serviços GCM,
com destaque para o método getRegistrationId que solicita o registro no serviço
GCM.
O último pacote refere-se à camada de aplicação e possui como principais
classes a QueryActivity e a RegistrationActivity que implementam as interfaces
QueryInterface e RegistrationInterface e possuem métodos que auxiliam na
especificação de consultas e registro de dispositivos respectivamente. Essas interfaces são
responsáveis por gerar o modelo em X-CSML de consultas especificadas pelo usuário ou
do registro de dispositivos.
A CSVM4Dev, implementa três principais funcionalidades: (1) para registro do
dispositivo; (2) para especificação de consultas; e (3) processamento de consultas. As
subseções abaixo apresentam detalhes do desenvolvimento dessas três funcionalidades.
5.5
Registro de dispositivos
A implementação do processo de registro de dispositivos foi decomposto em
duas etapas principais. Uma etapa compreende os detalhes de implementação relacionados à configuração do dispositivo na CSVM4Dev para registro do dispositivo na plataforma. A outra abordagem, apresenta detalhes de implementação relacionados ao regis-
5.5 Registro de dispositivos
88
tro do dispositivo no ambiente de crowdsensing mantido pela CSVMProvider. As seções
abaixo, descrevem a implementação dessas etapas.
5.5.1
Registro do dispositivo na CSVM4Dev
O registro do dispositivo envolve um conjunto de interfaces de usuário que auxiliam o usuário na configuração do dispositivo para efetuar o registro. Cada interface
é gerenciada por uma Activity. Em termos gerais, uma Activity é uma classe gerenciadora de UI (Interface com o usuário). A Figura 5.4 apresenta as duas interfaces que
compõem a funcionalidade de registro e, para gerenciá-las, foi implementada a classe
RegisterActivity. A Figura 5.4(a) apresenta a tela principal de registro do dispositivo,
possibilitando ao usuário configurar as informações básicas do dispositivo como, proprietário, localização, marca e modelo, onde as duas últimas são extraídas automaticamente
do próprio dispositivo. Ela disponibiliza também um botão para seleção de sensores que
se deseja compartilhar. A view mostrada na Figura 5.4(b) é acionada após o usuário pressionar o botão Select Sensor e apresenta o conjunto de sensores disponíveis no dispositivo.
A classe LocalResourceManager é responsável por identificar os sensores presentes no
dispositivo por meio da chamada ao método getListSensorType, que utiliza classes
nativas do Android presentes no pacote android.hardware.
(a) Tela de Registro do Dispositivo.
(b) Tela de Seleção de Sensores.
Figura 5.4: (a) e (b) representam layouts utilizados para configurar o registro do dispositivo.
Por meio das interfaces apresentadas acima o usuário consegue especificar a configuração de seu dispositivo que deseja compartilhar, gerando o esquema de controle no
dispositivo. Este e outros processos que envolvem o registro do dispositivo estão detalhados no diagrama de sequência da Figura 5.5. Quando o usuário conclui a configuração do
5.5 Registro de dispositivos
89
registro, a camada de aplicação por meio da classe RegistrationInterface gera o XCSML referente ao registro. Em seguida, o MiddlewareManager se encarrega de aplicar
as restrições predefinas e repassar comandos à camada de broker para envio do esquema
de controle à CSVMProvider. Concluída esta etapa, o CSResourceManager, implementa
o método getRegistrationId do Google Play Services SDK, que solicita o registro do
dispositivo no serviço GCM.
Figura 5.5: Diagrama de sequência do registro do dispositivo na
CSVM4Dev.
O envio do esquema de controle gerado na CSVM4Dev para a CSVMProvider
é realizado pela classe Request, que possui um atributo url configurado com o endereço
do webservice que contêm o recurso que se deseja acessar. Esta classe implementa o
método POST e realiza também a formatação da mensagem em JSON. Após confirmação
do registro, cada camada da CSVM4Dev gera eventos à camada imediatamente superior
para apresentar uma mensagem ao usuário informando que o dispositivo foi registrado.
5.5.2
Registro de dispositivos na CSVMProvider
O registro do dispositivo envolve todas as camadas da CSVMProvider e a
implementação desta etapa está retratada no diagrama de sequência da Figura 5.6. Uma
vez que a camada de Broker recebe uma requisição de registro do dispositivo, enviada
pela CSVM4Dev tendo como parâmetro o EnvCS (o esquema de controle gerado no
dispositivo e que integrará o esquema de controle do ambiente) ela dispara um conjunto
de eventos (métodos) às demais camadas para processamento do modelo. Caso tenha
sido configurada alguma restrição, a camada de Middleware se encarrega de aplicá-las.
5.5 Registro de dispositivos
90
As restrições são inseridas na CSVMProvider diretamente no banco de dados de forma
manual.
Figura 5.6: Diagrama de sequência do registro do dispositivo na
CSVMProvider.
Com as restrições aplicadas, é disparado um evento que aciona o método
registrationProcessor, encarregado de primeiramente realizar o parsing do modelo,
verificar se todas informações estão presentes e, em seguida, realizar duas outras verificações: (1) quanto aos tipos de sensores informados, verificando se o sistema de tipos já
contempla aqueles sensores ou se é necessário inseri-los; (2) quanto ao dispositivo, verificando se ele já está registrado. Se o dispositivo já estiver registrado, as informações
do dispositivo são atualizadas. Caso contrário, as informações são inseridas no EC Ambiente. As duas verificações são realizadas pela camada do Motor de Síntese por meio de
operações CRUD (Create, Read, Update e Delete) realizadas diretamente no Repositório
e implementadas pela classe GenericDAOImpl. Esta classe implementa funcionalidades
disponibilizadas pelo hibernate que gerenciam as sessões e operações CRUD referentes
ao Repositório através de uma instância da classe EntityManager (responsável por coordenar as sessões e operações) e de chamadas a seus métodos.
Por fim, os métodos da classe GenericDAOImpl retornam valores booleanos
true se foi possível realizar a operação e false caso contrário. Este retorno determina a
criação da resposta por meio da classe Response que, caso o valor retornado seja true,
ela incorpora o status ok à mensagem a ser retornada. Em seguida, a mensagem é enviada
ao dispositivo que solicitou o registro.
5.6 Processamento de consultas
5.6
91
Processamento de consultas
O processamento de consultas é a principal funcionalidade da plataforma CSVM
e sua implementação envolve etapas que compreende desde a criação de uma consulta até
retorno de seu resultado. Essas etapas podem ser dividas em: (1) especificação de consultas na CSVM4Dev, compreende desde a criação da consulta até seu envio à CSVMProvider ; (2) o processamento de consultas na CSVMProvider, envolve o recebimento de
consultas, a seleção de recursos e o envio de subscrições aos dispositivos selecionados;
(3) o processamento de consultas na CSVM4Dev, compreende o processamento de subscrições, captura dos dados do sensor solicitado e envio da resposta à CSVMProvider. Os
detalhes de implementação de cada etapa são descritos nas seções abaixo.
5.6.1
Especificação de consultas na CSVM4Dev
A implementação do processo de especificação de consultas no dispositivo
móvel assume que as funcionalidades são acionadas diretamente pelo usuário ou por
uma aplicação de terceiros. A Figura 5.7 apresenta o processo de especificação de uma
consulta. A CSVM4Dev contém uma interface gerenciada pela classe QueryActivity,
que permite o usuário especificar uma consulta. Outras classes fundamentais no processo
de especificação da consulta são:
• A classe QueryCS que representa o modelo (Esquema de Controle da Consulta QCS) onde os atributos representam as características do modelo, como: lista com
os tipos de sensores, localização, quantidade e operação por tipo de sensor, tipo
de requisição e tipo de combinação. Os valores para o tipo de requisição e tipo
de combinação são predefinidos pela CSVM4Dev como onDemand e Aggregation
respectivamente, enquanto os demais são especificados pelo usuário.
• A classe DBAdapter é responsável por persistir o QCS no banco de dados local
(SQLite) do dispositivo.
• A classe QueryCSExecutor configura a conexão para envio do QCS, por meio da
especificação RESTFul. Esta configuração envolve o preenchimento da URL que
contêm o referido recurso no webservice, como por exemplo, http://IP/CSApp_
Webservice/qcs/newQuery.
• A classe Request implementa as funcionalidades da camada de broker referentes à
conexão com a CSVMProvider.
• A classe QueryCSRequest estende a classe Request e implementa métodos responsáveis pelo envio do QCS ao webservice.
A conexão entre a CSVM4Dev e o CSVMProvider é criada de forma assíncrona,
criando uma thread específica para cada conexão. A comunicação entre o dispositivo
5.6 Processamento de consultas
92
Figura 5.7: Diagrama de sequência da especificação de uma consutla na CSVM4Dev.
móvel e o provedor de serviço é assíncrona pois, após uma consulta ser especificada e
enviada à CSVMProvider, o dispositivo precisa ser “liberado” para que o usuário possa
realizar outras atividades. Outro importante aspecto é a economia no consumo de carga
da bateria e de memória, pois através do assincronismo, o processo gerado a partir de uma
consulta é executado em stand by, desta forma a aplicação não necessita ficar esperando
por tempo indeterminado o resultado.
Para obter este comportamento, foi utilizado AsyncTask. O AsyncTask é uma
classe que permite realizar operações em segundo plano sem ter que manipular diretamente threads e handlers. A cada requisição gerada pela CSVM4Dev um novo objeto da
classe AsyncTask é instanciado e uma thread é criada. Após a requisição ser processada
pela CSVMProvider, a CSVM4Dev recebe uma resposta que ativa a thread específica
daquela requisição.
5.6.2
Processamento de consultas na CSVMProvider
O processamento de consultas (ou subscrições), assim como o registro, envolve
todas as camadas da CSVMProvider, porém sua complexidade é maior. Para retratar a
lógica implementada, a Figura 5.8 apresenta o diagrama de sequência do processamento
de uma consulta na CSVMProvider. O desenvolvimento desta funcionalidade está pautado
em três princípios: (1) o processamento da consulta está diretamente associado com a
disponibilidade de recurso, ou seja, dispositivos registrados que satisfaçam as condições
5.6 Processamento de consultas
93
especificadas na consulta; (2) caso haja a disponibilidade de recurso (dispositivos) que
satisfaça a consulta, deve-se selecionar/recrutar os dispositivos por meio de uma política
de seleção; (3) uma vez selecionados os dispositivos deve-se então manter um M@RT
com as características da consulta.
Figura 5.8: Diagrama de sequência do processamento de uma
consulta na CSVMProvider.
Para cada consulta recebida uma sequência de comandos/métodos é acionada.
Caso haja alguma regra e/ou política de segurança definida, a classe PolicyManager
presente na camada de Middleware é encarregada de aplicá-la. Concluída esta etapa, o
método queryProcessor da classe SchemaParser recebe como parâmetro o Esquema
de Controle da Consulta (QCS) contendo uma lista dos tipos de sensores requisitados. Este
método é implementado para interpretar o modelo da consulta e, a partir das informações
contidas no modelo, iniciar o recrutamento de dispositivos.
A Figura 5.9 representa todo o processo de seleção de recursos. Uma vez identificados os recursos necessários (com base no tipo de sensor especificado na consulta),
a camada de síntese gera comandos por meio da classe CommandGenerator para efetivar
a seleção. O objeto LogicalResourceManager da camada de Middleware é instanciado
para efetivar o recrutamento/seleção do recurso e consequentemente criar o m@rt. Esta
seleção é realizada por meio de uma política que compreende um algoritmo simples, o
qual seleciona os primeiros dispositivos retornados por uma consulta ao repositório.
Caso todas condições impostas na consulta sejam satisfeitas, ou seja, a quantidade de dispositivos e o tipo de sensor especificado, uma lista com os dispositivos recrutados é retornada à camada de Broker para selecionar os dispositivos físicos com base
5.6 Processamento de consultas
94
em sua localização. Uma lista com os dispositivos efetivamente recrutados é enviada à
camada de Síntese, mais especificamente à classe SynthesisManager para atualização do
m@rt e geração do Esquema de Dados (form).
Para cada tipo de sensor especificado na consulta, um form é gerado. O método
generator da classe DataSchemaGenerator é responsável pela estruturação do form.
Cada form criado é então adicionado a uma lista que é repassada ao GCMSender para
enviá-los aos dispositivos recrutados. O GCMSender utiliza o serviço GCM para se
comunicar com os dispositivos móveis por meio do ID registrado por cada dispositivo.
Figura 5.9: Máquina de estados para seleção de recursos na
CSVMProvider.
Cada dispositivo recrutado recebe e processa a requisição enviada pela CSVMProvider e em seguida retorna o form preenchido com informação monitorada do ambiente. Ao receber este form a CSVMProvider inicia o processamento identificando a
consulta que o originou. A Figura 5.10 representa este processamento por meio de uma
máquina de estados que contempla as etapas de agregação e processamento dos dados
retornados pelos dispositivos. Um objeto AggregateData é instanciado para realizar a
agregação dos dados já monitorados por meio do método aggregate, a fim de compor
a resposta à consulta. Esta classe é encarregada de, em seguida, realizar a operação especificada na consulta, onde cada operação realiza um cálculo específico (por exemplo,
caso a operação seja avg, o cálculo da média é realizado sobre os dados retornados pelos
dispositivos).
Após cada form recebido de um dispositivo recrutado ser processado, o
RepositoryManager atualiza o Esquema de Dados mantendo assim a integridade do
repositório e auxiliando no gerenciamento da consulta, pois desta forma é possível identificar se todos forms foram processados e consequentemente, se a consulta foi finalizada.
Em seguida, o próprio RepositoryManager se encarrega de verificar se possui mais al-
5.6 Processamento de consultas
95
Figura 5.10: Máquina de estados para o processamento dos dados
retornados pelos dispositivos.
gum form a ser processado. A CSVMProvider aguarda até que todos os forms de uma
determinada consulta tenham sido processados para em seguida enviar a resposta. Para
conseguir este controle na CSVMProvider, o RepositoroyManager gerencia as consultas que estão em processamento e mantém uma informação de quantos forms restam para
que ela seja finalizada.
5.6.3
Processamento de consultas na CSVM4Dev
Diferente do processo de especificação de consultas, o processamento de uma
consulta na CSVM4Dev, apresentado na Figura 5.11, é disparado por eventos gerados
pela CSVMProvider, o qual envia à CSVM4Dev um esquema de dados que contêm
informações referentes ao tipo de sensor a ser monitorado. Ao iniciar a CSVM4Dev,
um objeto da classe GCMBroadcastReceiver é instanciado e fica executando em background ouvindo eventos disparados pela CSVMProvider. Ao receber um evento, a
classe GCMBroadcastReceiver é acionada através do médoto onReceive. Este método, de posse do Esquema de Dados, chama o método getSensorData, da classe
LocalResourceManager, para ativar o sensor requisitado e iniciar o monitoramento. Assim que obtido um valor referente ao sensor monitorado, uma instância do esquema de
dados é gerada pela classe QueryProcessor contendo o valor monitorado, a data e hora
em que o dado foi obtido, assim como a precisão e a unidade de medida relacionadas ao
sensor.
A etapa final compreende o envio do esquema de dados à CSVMProvider. Este processo tem início com a configuração da conexão realizada pela classe
5.7 Considerações Finais
96
Figura 5.11: Diagrama de sequência do processamento de uma
consutla na CSVM4Dev.
DataSchemaExecutor e prossegue com o envio do Esquema de Dados propriamente dito
de responsabilidade da classe DataSchemaRequest finalizando o processamento da consulta. Encerrado o processamento da consulta no dispositivo móvel, a CSVMProvider
interpreta e processa o Esquema de Dados (conforme apresentado na Figura 5.10) a fim
de compor a resposta final para o dispositivo solicitante.
5.7
Considerações Finais
Neste capítulo foi discutido a implementação da CSVM e dos processos intrínsecos a ela em conformidade com a arquitetura descrita no Capítulo 4. Assim, para demonstra a viabilidade da arquitetura proposta, foi apresentado um protótipo que implementa as
funcionalidades da plataforma para provimento de serviços de crowdsensing móvel, incluindo a implementação dos principais elementos (CSVMProvider e CSVM4Dev) que o
compõe.
Uma das limitações presentes na implementação da CSVM refere-se a aspectos
de segurança e privacidade, que necessitam de aprofundamento e investigação, sendo
assim apresentados como trabalhos futuros no Capítulo 8.
A implementação da plataforma, tanto de seus componentes, quanto dos seus
processos, contribuem para definição de sua capacidade em relação ao domínio de
aplicação. A capacidade da CSVM bem como seu desempenho serão avaliados no
Capítulo 6.
CAPÍTULO 6
Estudo de Caso e Avaliação
Este capítulo tem o objetivo de demonstrar a viabilidade da nossa abordagem
para o uso de uma plataforma para crowdsensing móvel dirigida por modelos em tempo
de execução. Para demonstrar as capacidades da plataforma, apresentamos na Seção 6.1
um estudo de caso, que utiliza o cenário descrito na Seção 1.2 para demonstrar o uso da
CSVM para a construção (por meio de modelos) de algumas aplicações representativas.
Uma vez apresentado o estudo de caso, a sequência deste capítulo apresenta
uma avaliação realizada para medir o desempenho da CSVM levando em consideração
etapas críticas do processamento de consultas de crowdsensing, mais especificamente dos
modelos que as descrevem. Desta forma, a Seção 6.2 apresenta a metodologia empregada
na realização dos experimentos e os resultados obtidos.
6.1
Estudo de Caso
Esta seção, apresenta um estudo de caso projetado com base no cenário da casa
noturna apresentado na Seção 1.2 a fim de demonstrar a capacidade da plataforma em
atender aos principais requisitos específicos para o domínio de crowdsensing (apresentados no Capítulo 3): simplicidade, independente de dispositivo , expressividade e flexibilidade.
Para efeito de demonstrar a abrangência da nossa proposta, este cenário compreende o ciclo total do processamento de consultas de crowdsensing pela plataforma. A
seção seguinte apresenta algumas considerações sobre o cenário visando a sua realização
como parte do estudo de caso proposto.
6.1.1
Descrição Geral
Uma casa noturna, conforme descrito na Seção 1.2, precisa estar adequada a
um conjunto de normas e se preocupar em proporcionar um ambiente agradável a seus
clientes. A casa noturna possui sistemas automatizados que auxiliam nessa tarefa. Os
principais fatores associados à qualidade do ambiente estão associados ao sistema de
6.1 Estudo de Caso
98
climatização, iluminação e sonorização. Para o bem-estar dos clientes e atendimento à
norma de segurança, a casa noturna deve possuir uma quantidade limite de pessoas em
seu interior. Em conjunto, essas características representam os principais serviços a serem
monitorados em uma casa noturna.
Para assumir, a casa noturna necessita de uma pessoa, normalmente representada
pelo gerente. O gerente têm como principal atribuição realizar o monitoramento completo
do ambiente e mantê-lo em funcionamento durante os shows e eventos. Ele possui uma
aplicação que o auxilia na análise e realização deste monitoramento. Este monitoramento
envolve um conjunto de tarefas:
•
•
•
•
•
•
Detectar riscos de incêndio;
Manter a temperatura controlada;
Manter o nível de ruído do ambiente em padrões aceitáveis;
Controlar a luminosidade do ambiente;
Controlar a quantidade de pessoas no interior do ambiente;
Verificar a agitação no interior do ambiente.
Por fim, a casa noturna apresenta duas importantes características: a maioria dos
frequentadores possui um dispositivo móvel com sensores embarcados; e o alto fluxo de
usuários que transitam, entrando e saindo do ambiente com frequência.
6.1.2
Modelagem do Cenário
Este cenário pode ser modelado por um conjunto de aplicações que utilizam
os serviços de crowdsensing fornecidos pela plataforma CSVM para realização das
principais tarefas de monitoramento descritas na Seção 6.1.1. A Figura 6.1, apresenta
o diagrama em camadas da CSVM e as principais etapas para realização deste cenário.
Para realização do cenário segundo a abordagem proposta neste trabalho, três
etapas devem ser seguidas:
1. Especificação e Modelagem:
• Registro do dispositivo na plataforma;
• Identificação do conjunto de sensores necessários ao problema;
• Especificação consultas de crowdsensing associadas ao conjunto de sensores
listados na etapa anterior;
2. Processamento
• Seleção de dispositivos que satisfaçam a consulta;
• Monitoramento dos dados requisitados;
3. Resposta
6.1 Estudo de Caso
99
• Geração de resposta;
• Visualização e análise da resposta recebida;
Figura 6.1: Diagrama de camadas da CSVM com as principais
etapas na processamento de consultas.
1a etapa: Especificação e Modelagem
Para poder utilizar os serviços de crowdsensing da CSVM, o gerente da casa
noturna deverá possuir em seu dispositivo, além da aplicação de crowdsensing que o
auxiliará na análise dos dados monitorados do ambiente, também o componente móvel
da plataforma CSVM, a CSVM4Dev. O passo seguinte é registrar o dispositivo na
CSVM, o que é feito utilizando a interface de usuário fornecida pela camada de aplicação
da CSVM4Dev. Para registrar o dispositivo, o gerente deve especificar as informações
do dispositivo (marca, modelo e proprietário) juntamente com os sensores que deseja
compartilhar. A CSVM4Dev se encarrega de gerar o esquema de controle em X-CSML,
apresentado na Figura 6.2. O registro é concluído quando o esquema de controle do
dispositivo é inserido no repositório de esquemas e passa a integrar o esquema de controle
do ambiente.
Antes de especificar uma consulta de crowdsensing, o gerente deve identificar
o conjunto de sensores necessários para o problema em questão. Neste cenário, os
problemas são representados pelas tarefas de monitoramento descritas na Seção 6.1.1.
A Tabela 6.1 apresenta os problemas a serem modelados pela aplicação de crowdsensing,
associados a um ou mais sensores.
De posse destas informações, o gerente é capaz de especificar consultas relacionadas ao domínio do problema, informando os sensores que deseja monitorar. A consulta
6.1 Estudo de Caso
100
Figura 6.2: Esquema de controle para registro do dispositivo descrito em X-CSML.
no
1
2
3
4
5
6
Problema
Sensor(es)
Detectar riscos de incêndio
Umidade e temperatura
Manter a temperatura controlada
Umidade e temperatura
Manter o nível de ruído do ambiente em padrões aceitáveis
Áudio
Controlar a luminosidade do ambiente
Luminosidade
Controlar a quantidade de pessoas no interior do ambiente
Geolocalização
Verificar a agitação no interior do ambiente
Acelerômetro
Tabela 6.1: Sensores utilizados por aplicações de crowdsensing
conforme o problema a ser modelado
deve ser especificada pela aplicação de crowdsensing e enviada à CSVM4Dev em XCSML por meio da API CSVM (Figura 6.1 etapa 1-1). Por exemplo, o problema 3,“Manter o nível de ruído do ambiente em padrões aceitáveis”, pode ser especificado da seguinte
forma: Necessito de 20 sensores de áudio localizados na boate X. Deve-se informar a operação e o tipo de requisição desejada, conforme apresentado na Tabela 6.2. A Figura 6.3
apresenta o esquema de controle da consulta equivalente ao problema 3.
Por fim, na CSVM4Dev, o esquema de controle da consulta (QCS) especificada
pelo usuário é gerado na camada de aplicação e repassado à camada de síntese (Figura 6.1
etapa 1-2) para armazenamento e geração de comandos à camada de middleware (Figura
6.1 etapa 1-3), que por sua vez, realiza chamadas à camada de broker (Figura 6.1 etapa
1-4) para envio do QCS à CSVMProvider (Figura 6.1 etapa 1-5).
2a etapa: Processamento
Ao receber o QCS, a CSVMProvider inicia a interpretação e o processamento da
consulta. A camada de síntese realiza a interpretação do modelo, identificando os tipos
de sensores (neste caso áudio) e a localização (boate X). Realizada esta interpretação, a
6.1 Estudo de Caso
101
Campo
Tipo de sensor
Quantidade
Localização
Operação
Requisição
Valor
áudio
20
boate X
avg
onDemand
Tabela 6.2: Representação de campo e valor de uma consulta especificada a partir do problema 3.
Figura 6.3: Esquema de controle da consulta descrito em X-CSML
para o problema 3.
camada de síntese repassa comandos à camada de middleware (Figura 6.1 etapa 2-1) para
selecionar 20 dispositivos que satisfaçam as condições relacionadas ao tipo e quantidade
de sensores e gerar a instância do QCS após selecionado os dispositivos. A Figura 6.4
apresenta parte da instância do QCS descrita em X-CSML para o problema 3. O Apêndice
B, apresenta o X-CSML completo dessa instância.
Em seguida, a instância do QCS é passada (Figura 6.1 etapa 2-2) a camada de
síntese que gera o esquema de dados com base na consulta especificada. A Figura 6.5
apresenta parte desse esquema de dados que compreende um form que será enviado e os
dispositivos recrutados para requisitar o monitoramento do áudio da boate. O Apêndice
B, apresenta o X-CSML completo desse esquema de dados.
Nesta etapa, duas situações distintas podem ocorrer que alteram diretamente o
comportamento da plataforma: (1) o gerente pode alterar uma consulta acrescentando
um novo tipo de sensor à consulta que está sendo processada; ou (2) algum dispositivo
recrutado deixar o ambiente. Em seguida é detalhado o comportamento da plataforma
nessas duas situações:
Situação 1: Alteração de uma consulta acrescentando um novo tipo de sensor
• Problema antigo: Manter o nível de ruído do ambiente em padrões aceitáveis;
6.1 Estudo de Caso
Figura 6.4: Instância do esquema de controle da consulta descrita
em X-CSML para o problema 3.
Figura 6.5: Esquema de dados descrito em X-CSML para o problema 3.
102
6.1 Estudo de Caso
103
• Consulta em processamento: Necessito de 20 sensores de áudio localizados
na boate X;
• Problema novo: Manter o nível de ruído do ambiente em padrões aceitáveis
e verificar a agitação no interior do ambiente;
• Consulta nova: Necessito de 20 sensores de áudio localizados na boate X e
10 sensores de acelerômetro localizados na boate X;
• Comportamento:
1. A CSVM4Dev recebe a nova consulta através da camada de aplicação,
gera o modelo em X-CSML e o repassa à camada de síntese;
2. A camada de síntese localiza o esquema de controle da consulta (QCS)
em questão no repositório e o atualiza com os dados da nova consulta.
Em seguida gera comandos às camadas inferiores para envio do QCS
atualizado;
3. A camada de broker envia o QCS atualizado para a CSVMProvider;
4. Na CSVMProvider, após o QCS atualizado ser recebido pela camada de
broker ele é enviado à camada de síntese que por meio de um identificador
do QCS é integrado ao QCS em processamento;
5. A camada de síntese da CSVMProvider calcula a diferença entre o QCS
atualizado e o antigo e gera comandos para a camada de middleware
recrutar novos dispositivos conforme o novo QCS.
Situação 2: Um dispositivo recrutado sai do ambiente que está sendo monitorado
• Problema: Manter o nível de ruído do ambiente em padrões aceitáveis;
• Consulta em processamento: Necessito de 20 sensores de áudio localizados
na boate X;
• Ocorrência: Um dispositivo recrutado sai da boate;
• Comportamento:
1. A camada de broker da CSVMProvider verifica de 15 em 15 minutos o
estado (ativo ou inativo) dos dispositivos recrutados;
2. Caso identificada a indisponibilidade de um dos dispositivos, conforme
ocorrência apresentada, a camada de broker gera eventos para as camadas
superiores alterarem a instância do esquema de controle da consulta que
possuía aquele dispositivo indisponível;
3. A camada de síntese atualiza a instância do QCS e repassa comandos para
a camada de middleware selecionar um novo dispositivo que possua um
sensor de áudio (conforme especificado na consulta);
4. A camada de middleware seleciona um novo dispositivo e realiza chamadas à camada de broker para verificar a disponibilidade do novo disposi-
6.1 Estudo de Caso
104
tivo e requisitar seu sensor;
5. Caso o dispositivo esteja disponível, ele procederá com o processamento
da consulta; Caso contrário, a camada de broker gera eventos para a
camada de síntese a fim de selecionar um novo dispositivo e retorna o
passo 3.
3a etapa: Resposta
De posse do esquema de dados, a camada de broker da CSVM4Dev seleciona
o(s) sensor(es) descritos no esquema de dados (Figura 6.1 etapa 3-1). Cada dispositivo
recrutado presente na boate, realiza a medição do áudio e, em seguida, “preenche” o
form recebido gerando uma instância do esquema de dados equivalente. A Figura 6.6
apresenta uma instância do esquema de dados gerada por um dos dispositivos recrutados
após realizar a medição. Em seguida, a CSVM4Dev envia os dados à CSVMProvider
(Figura 6.1 etapa 3-2). Neste momento, a camada de síntese da CSVMProvider, à
medida que os dispositivos notificam os dados, realiza a agregação destes dados a fim
de compor a resposta final para o gerente. A CSVMProvider aguarda até que todos os 20
dispositivos notifiquem seus dados. Após receber os dados medidos pelos 20 dispositivos,
a CSVMProvider, mais especificamente a camada de síntese, realiza a operação informada
(neste cenário, realiza a média), e gera a resposta e a notifica ao gerente (Figura 6.1 passo
3-3).
Figura 6.6: Instância do esquema de dados descrita em X-CSML
para o problema 3.
A resposta é recebida pela CSVM4Dev, que a repassa (através da interface
disponibilizada na camada de aplicação) para a aplicação de crowdsensing utilizada pelo
gerente. Esta aplicação se encarregará de analisar a resposta e, caso necessário, realizar
alguma ação.
6.2 Avaliação de Desempenho
6.1.3
105
Considerações Gerais
O estudo de caso apresentado permitiu demonstrar que dado um cenário, um
conjunto de aplicações de crowdsensing móvel podem ser modeladas, a fim de auxiliar
na execução de tarefas cotidianas, contribuindo para melhorar a qualidade do ambiente e
prevenir riscos. A escolha de um cenário representativo, como de uma casa noturna, nos
possibilita analisar as capacidades da abordagem proposta neste trabalho.
Diante das características deste cenário, por exemplo, dinamicidade e heterogeneidade, torna-se aplicável o uso de uma plataforma para crowdsensing móvel dirigida
por modelo que podem ser modificados em tempo de execução. Nesse sentido, mostramos
que a utilização da CSVM se insere ao cenário proposto e cumpre os principais requisitos
apresentados.
Em suma, as principais exigências e restrições do cenário apresentado foram
sobrepostas pela utilização da plataforma CSVM, uma vez que ela permite modelar as
principais características desse cenário, como diversidade de dispositivos presentes (como
pode ser visto por meio da instância do esquema de controle da consulta apresentado no
Apêndice B) e principalmente a flexibilidade quando se faz necessário a alteração de uma
consulta.
6.2
Avaliação de Desempenho
Uma vez construídos os esquemas de controle e os esquemas de dados que
representam uma aplicação de crowdsensing, seu processamento junto à plataforma foi
avaliado. O objetivo da avaliação foi verificar o tempo gasto no processamento de modelos
para avaliar o impacto do processamento de modelos em cenários de crowdsensing móvel.
A avaliação envolve a interpretação do modelo, seleção de recursos e geração de resposta.
A Seção 6.2.1 apresenta a metodologia empregada na elaboração dos experimentos e utilizada na avaliação. Em seguida, são apresentados os resultados obtidos em cada
experimento. Por fim, tem-se as considerações gerais.
6.2.1
Metodologia
Para realizar essa avaliação, foi elaborado um conjunto de experimentos que
representam as etapas mais críticas da execução de uma consulta de crowdsensing pela
CSVM. A execução desses experimentos na plataforma CSVM foi utilizada para avaliar
o impacto do processamento de modelos em cenários de crowdsensing móvel. Com base
no cenário descrito na Seção 6.1, foram projetados quatro experimentos que simulam as
etapas de processamento e geração de respostas pela plataforma.
Os experimentos elaborados para esta avaliação são brevemente descritos abaixo:
6.2 Avaliação de Desempenho
Experimento 1 Processamento do esquema de controle da consulta com
quantidade de dispositivos recrutados para um único tipo de sensor;
Experimento 2 Processamento do esquema de controle da consulta com
quantidade de tipos de sensores;
Experimento 3 Processamento e agregação do esquema de dados com
quantidade de dispositivos recrutados para um único tipo de sensor;
Experimento 4 Processamento e agregação do esquema de dados com
quantidade de tipos de sensores;
106
variação da
variação da
variação na
variação na
O tempo relacionado ao processamento do esquema de controle da consulta
(Experimentos 1 e 2), tc , combinado com o tempo de agregação dos dados notificados
pelo conjunto de dispositivos recrutados e geração de respostas (Experimentos 3 e 4),
ta , corresponde ao tempo de processamento de uma consulta T na CSVMProvider, onde
T = tc + ta .
Para o cálculo do tempo gasto na realização desses experimentos, não foi
considerado o tempo de processamento na CSVM4Dev, pois esse tempo pode variar
de dispositivo para dispositivo, uma vez que cada dispositivo apresenta características
específicas como, quantidade de memória disponível, capacidade de processamento, além
de fatores externos como por exemplo o tipo de conexão utilizada.
No entanto, uma vez que se faz necessário estimar o tempo total gasto pela plataforma no processamento de uma consulta, Tt , deve se adicionar o tempo de troca de
mensagens entre o provedor e os dispositivos utilizando uma infraestrutura de comunicação, tr , e o tempo que o dispositivo leva para processar uma requisição, td . Desta forma
podemos assumir o tempo total gasto pela CSVM no processamento de uma consulta
sendo, Tt = tc + ta + tr + td .
O ambiente para realização dos experimentos consiste em uma máquina com
processador AMD Quad-Core 2.4GHz, 4GB de RAM, Sistema Operacional Windows 8.1
de 64 bits para executar a CSVMProvider e um dispositivo móvel Samsung Galaxy SIII,
16GB de memória, Sistema Operacional Android 4.3 para executar a CSVM4Dev. Todos
os experimentos foram realizados em um único dispositivo móvel, que simula outros
dispositivos quando necessário. Essa metodologia não comprometeu o resultado, uma vez
que as avaliações estão relacionadas à manipulação de modelos em tempo de execução na
CSVMProvider, não levando em consideração o tempo de processamento nos dispositivos
móveis.
Foram realizadas 10 (dez) execuções de cada experimento, onde para cada
execução foi realizada uma variação ou na quantidade de dispositivos recrutados (para
1 (um) tipo de sensor, por exemplo temperatura) ou na quantidade de tipos de sensores.
Para cada variação foram realizadas 10 (dez) execuções, totalizando 100 execuções de
cada experimento. Em seguida, foi calculado o tempo médio de execução eliminando
6.2 Avaliação de Desempenho
107
do cálculo o outlier. Para o cálculo do tempo médio final, foi subtraído do tempo de
processamento de cada variação o tempo de acesso ao banco de dados, uma vez que
ao isolarmos as transações com o banco de dados identificamos que o tempo de acesso e
realização de transações com o banco se caracterizava como um gargalo no processamento
das consultas. Ao isolarmos o tempo gasto nas operações com o banco de dados realizados
por soluções de terceiros (hibernate e MySQL) e apesar dessas soluções integrarem a
solução proposta neste trabalho, esse fator não comprometeu a análise dos experimentos,
uma vez que avaliamos o tempo gasto por nossa solução na interpretação e processamento
de modelos propriamente dito.
Para validar a abrangência e escalabilidade da plataforma, alguns experimentos
transcendem o cenário apresentado. Assim, eles não surgiram de uma demanda específica
e apresentam caráter teórico. Contudo, outros cenários podem exigir da plataforma um
comportamento semelhante ao experimentado nesta seção.
Antes de executar os experimentos, foi construído um esquema de controle do
ambiente contendo 100 (cem) dispositivos, 15 (quinze) tipos de sensores e 2 (dois) tipos
de operações aritméticas (média e soma). Para cada dispositivo foi inserida a localização
lógica boate x associada ao cenário do estudo de caso e para cada dispositivo foram
associados também os 15 tipos de sensores. Em seguida este esquema de controle
do ambiente foi inserido no repositório. As seções seguintes, apresentam detalhes e
resultados dos experimentos realizados.
6.2.2
Processamento do esquema de controle da consulta com variação da quantidade de dispositivos
Este experimento tem o objetivo de medir o tempo de processamento do modelo
de uma consulta, considerando uma variação na quantidade de dispositivos recrutados e
sua construção equivale a 2a etapa descrita na Seção 6.1.2. Segue-se um detalhamento do
experimento.
Objetivo do experimento: Medir o tempo de processamento do modelo de consulta,
mantendo constante o número de tipos de sensor e variando a quantidade de
dispositivos;
Ações realizadas pela CSVM: Interpretar o esquema de controle da consulta e aplicar
o algoritmo de seleção de dispositivos com base na variação da quantidade de
dispositivo;
O gráfico da Figura 6.7 apresenta o tempo médio de processamento de
uma consulta em relação à quantidade de dispositivos. O resultado foi obtido por
meio da medição do processamento de uma consulta especificada na forma: N
6.2 Avaliação de Desempenho
108
sensores de temperatura localizados na boate x, onde N é a quantidade
de dispositivos e varia de 1 até 10. O resultado nos mostra que à medida em
que aumentados o número de dispositivos, o tempo aumenta em média 0,19 milissegundos (para cada novo dispositivo). Assim, para o experimento proposto podemos afirmar
que a plataforma CSVM consegue escalar bem em relação ao aumento do número de
dispositivos.
Figura 6.7: Tempo de Processamento de Consultas com variação
da Quantidades de Dispositivos.
Com base nesse resultado, pode-se concluir também que, a abordagem não é
eficiente para um número muito grande de dispositivos recrutados, o que aponta para a
necessidade de reduzir o número de dispositivos para amostrar os dados que o usuário
necessita. Nesse sentido, deve-se admitir alguma tolerância com relação à precisão ou a
resolução dos dados.
O gráfico da Figura 6.8 apresenta o tempo de processamento de consulta referente a uma extensão deste experimento, onde extrapolamos a quantidade de dispositivos
a fim de avaliar a forma como a CSVM escala consultas com um número relativamente
grande de dispositivos. Desta forma, iniciamos o experimento com 25 dispositivos e dobramos até obtermos 100. Verificamos que, à medida que o número de dispositivos dobra,
o tempo de processamento aumenta em média 6,70 milissegundos.
6.2.3
Processamento do esquema de controle da consulta com variação na quantidade de tipos de sensores
Este segundo experimento tem o objetivo de medir o tempo de processamento do
modelo de uma consulta, considerando uma variação na quantidade dos tipos de sensores.
O experimento pode ser detalhado da seguinte forma:
6.2 Avaliação de Desempenho
109
Figura 6.8: Tempo de Processamento de Consultas com 25, 50 e
100 Dispositivos.
Objetivo do experimento: Medir o tempo de processamento do modelo de consulta,
mantendo constante a quantidade de dispositivo e variando a quantidade de tipos
de sensores;
Ações realizadas pela CSVM: Interpretar o esquema de controle da consulta e aplicar o
algoritmo de seleção de dispositivos;
A Figura 6.9 apresenta um gráfico do tempo de processamento do modelo
em relação à variação do tipo de sensores. Neste experimento, foram utilizados 10
tipos diferentes de sensores presentes em um único dispositivo. A consulta foi modelada da seguinte forma: 1 sensor M localizado na boate X, onde M é o tipo
de sensor e pode variar de 1 a 10 tipos. Por exemplo, caso M = 2, podemos
ter a seguinte consulta: 1 sensor de temperatura e luminosidade localizado
na boate X.
O resultado apresentado no gráfico, mostra que à medida que aumentamos o
número de tipos de sensores em uma consulta, o tempo de processamento aumenta
linearmente em média 4,87 milissegundos (para cada novo tipo acrescentado).
Ao compararmos os dois experimentos apresentados, temos que o custo de acrescentar novos tipos de sensores à consulta (experimento 2) é maior que o custo de acrescentar novos dispositivos (experimento 1). Este resultado, decorre do comportamento do
algoritmo de seleção, uma vez que a cada tipo de sensor associado à consulta ele dispara
um conjunto de métodos que realizam tanto operações no banco de dados como a criação de uma estrutura de dados linear e dinâmica para armazenamento dos dispositivos
recrutados. Desta forma, ao manter a quantidade de tipos de sensores constante e variar a
quantidade de dispositivos, conforme experimento 1, o custo é menor devido ao número
de operações realizadas. Em contrapartida, quando a quantidade de dispositivos é mantida
6.2 Avaliação de Desempenho
110
Figura 6.9: Tempo de Processamento de Consultas com Variação
da Quantidades de Tipos de Sensores.
constante e a quantidade de tipos de sensores é variada, o custo é maior, pois o número de
operações realizaras será diretamente proporcional à quantidade de tipos de sensores.
6.2.4
Processamento e agregação do esquema de dados com variação
na quantidade de dispositivos
Este experimento refere-se à geração de respostas (3a etapa apresentada no
estudo de caso) realizada pela CSVMProvider. Neste experimento, desejamos medir o
tempo que a CSVMProvider leva para reunir os dados notificados pelos dispositivos
recrutados e gerar a resposta para o dispositivo solicitante. Abaixo seguem os detalhes
do experimento:
Objetivo do experimento: Medir o tempo de processamento e agregação de dados notificados pelos dispositivos participantes de uma consulta referentes a um único tipo
de sensor;
Ações realizadas pela CSVM: Interpretar o esquema de dados, verificar quantidade de
dispositivos que ainda não concluíram o processamento, aplicar a operação definida
na consulta e gerar a resposta;
O gráfico da Figura 6.10 apresenta o tempo médio de processando dos dados
notificados pelos dispositivos em relação à quantidade de dispositivos. Em relação aos
experimentos anteriores, percebemos um aumento no tempo de processamento, que
decorre do fato de que a quantidade de ações realizadas pela CSVMProvider durante
esta etapa é maior que a quantidade de ações realizadas no processamento de consulta.
À medida que mais dispositivos associados a um único tipo sensor, notificam dados à
6.2 Avaliação de Desempenho
111
CSVMProvider, o tempo de processamento aumenta em média 49,21 milissegundos (para
cada novo dispositivo).
Figura 6.10: Tempo de Processamento e Agregação de Dados com
Variação da Quantidade de Dispositivos.
6.2.5
Processamento e agregação do esquema de dados com variação
na quantidade de tipos de sensores
Este último experimento refere-se à mesma etapa do experimento anterior mas
difere pela quantidade de dispositivos e tipos de sensores envolvidos. Neste experimento,
os dados são notificados por um único dispositivo, porém a quantidade de tipos de
sensores é variável. Os detalhes do experimentos são apresentados abaixo:
Objetivo do experimento: Medir o tempo de processamento e agregação de dados notificados por um dispositivo participante de uma consulta;
Ações realizadas pela CSVM: Interpretar o esquema de dados, verificar quantidade de
dispositivos que ainda não concluíram o processamento, aplicar a operação definida
na consulta e gerar a resposta;
O gráfico da Figura 6.11 apresenta o tempo médio de processamento dos dados em relação à quantidade de tipos de sensores. É possível notar um pequeno aumento
em relação ao experimento apresentado anteriormente. Porém, apesar deste aumento, a
quantidade de ações/operações empregadas neste processamento equivale aquela do experimento anterior, uma vez que não estamos considerando o tempo gasto na comunicação
com o dispositivo e nem o tempo gasto pelo dispositivo na geração dos dados.
Em suma, à medida que aumentamos o número de tipos de sensores, o tempo de
processamento aumenta em média 52,18 milissegundos (para cada novo tipo de sensor).
6.3 Considerações Gerais
112
Figura 6.11: Tempo de Processamento e Agregação de Dados com
Variação a Quantidade de Tipos de Sensores.
O alto tempo de processamento nesta etapa decorre do fato de que a cada notificação
(instância do esquema de dados contendo o dado monitorado) enviada pelo dispositivo
e relacionada a um tipo de sensor, a CSVMProvider realiza a interpretação da instância
do esquema de dados recebida, aplica a operação definida na consulta e por fim, gera a
resposta. A geração da resposta só será concluída após o dispositivo enviar a instância do
esquema de dados referente a todos os tipos de sensores associados à consulta.
6.3
Considerações Gerais
O uso da CSVM permite modelar a maioria das aplicações de crowdsensing
inseridas em diferentes cenários. Além disso, o estudo de caso apresentado demonstra que
a CSVM atende aos principais requisitos dos ambientes de crowdsensing: simplicidade,
interoperabilidade, expressividade e flexibilidade.
Em relação à avaliação quantitativa, os resultados obtidos apresentam uma
diferença substancial entre o processamento do esquema de controle da consulta e o
processamento do esquema de dados notificados (tempo de resposta). O aumento no
tempo de processamento do esquema de dados em relação ao esquema de consulta, é
justificado pelo maior número de ações realizadas na etapa de processamento e agregação
de dados, onde as principais ações envolvem a interpretação do esquema de dados e a
geração de resposta.
Em relação ao desempenho, o uso da CSVM não é recomendado em situações
críticas que demandam alta interatividade. Contudo, os experimentos realizados, nos permitem demonstrar a escalabilidade da CSVM à medida que inserimos novos dispositivos
ou aumentamos o número de tipos de sensores.
CAPÍTULO 7
Trabalhos Relacionados
Este capítulo apresenta e discute trabalhos representativos da literatura da área
que propõem abordagens de solução para o problema de CrowdSensing móvel. Esses
trabalhos são apresentados em duas categorias: aqueles que tratam do problema-alvo e
aqueles que utilizam a mesma técnica empregada.
Partindo de uma outra perspectiva, este capítulo apresenta uma revisão bibliográfica sobre a utilização de modelos em tempo de execução em diferentes domínios de
aplicação, comparando outros trabalhos encontrados na literatura com o presente trabalho
do ponto de vista do uso e adaptação das técnicas relacionadas.
Na sessão 7.1 discutiremos as principais características relativas ao domínio de
CrowdSensing móvel, apresentando trabalhos relacionados e comparando-os com este.
Para lidar com as especificidades dos ambientes de CrowdSensing móvel este trabalho
propõe o uso de Modelos em Tempo de Execução. A sessão 7.2 retoma a discussão de
trabalhos relacionados, porém utiliza como elemento chave o uso de Modelos em Tempo
de Execução aplicado a diferentes contexto e qual a relação destes trabalhos com o nosso.
7.1
CrowdSensing Móvel
Um dos principais assuntos discutidos pela comunidade acadêmica da área está
diretamente relacionado à forma com que os ambientes e aplicações de CrowdSensing
móvel são estruturados. Ganti et al propõem em [23] um modelo arquitetural unificado
que aborda diversas limitações encontradas no desenvolvimento e implantação de aplicativos para CrowdSensing. Esse trabalho tem sido usado como referência para inúmeros
outros trabalhos nesta área, incluindo o presente trabalho. No referido trabalho, o modelo
arquitetural obedece três princípios básicos:
• O modelo deve permitir que desenvolvedores e/ou usuários especifiquem suas necessidades de dados em uma linguagem de alto nível. Este princípio é representado
neste trabalho pela CSML que possibilita aos desenvolvedores e usuários descreve-
7.1 CrowdSensing Móvel
114
rem suas consultas de CrowdSensing por meio de modelos descritos tanto por uma
interface gráfica ou por uma representação em XML (X-CSML);
• O modelo deve prever a identificação automática do conjunto de dispositivos que
fornecerão os dados desejados e também produzir instruções para configurar as
atividades de sensoriamento nos dispositivos, além de adaptar o conjunto de dispositivos escolhidos quando houver mudanças dinâmicas no ambiente. Em relação a
este aspecto, nosso trabalho apresenta uma abordagem dirigida por modelos onde,
na camada de síntese da CSVM, o componente CSMLParser interpreta o modelo
de consulta previamente criado usando a aplicação de CrowdSensing em execução
no cliente e gera comandos tanto para seleção dos dispositivos que fornecerão os
dados, quanto para criação de um formulário (esquema de dados) para configurar
as atividades de sensoriamento nos dispositivos selecionados. Para adaptação dinâmica às mudanças do ambiente, propomos a utilização de modelos em tempo de
execução, que mantém os modelos do ambiente e das consultas causalmente conectados com o sistema, ou seja, qualquer intervenção no modelo é refletida no sistema
e qualquer intervenção no sistema é refletida no modelo;
• O modelo deve possuir uma camada para lidar com dispositivos heterogêneos.
Neste trabalho esta funcionalidade está implementada na camada de broker (CSB)
da CSVM. Uma das funções da camada de broker é prover uma interface que
permite que dispositivos heterogêneos interajam com a CSVMProvider, compartilhando ou obtendo dados de ambientes de CrowdSensing. Desta forma, os dispositivos, independente de suas características, acessam o mesmos recursos da plataforma da mesma forma.
De acordo com o que foi exposto acima, a proposta de Ganti et al pode ser
considerada como um modelo para a definição da arquitetura utilizada em nosso trabalho.
Os princípios por eles introduzidos foram implementados na CSVM de forma a compor
uma arquitetura consistente para execução de aplicações de CrowdSensing.
Na literatura predominam trabalhos que adotam uma arquitetura particionada,
onde parte dos componentes estão localizados nos dispositivos móveis (para coleta e
propagação de dados dos sensores) e outra parte em um backend ou na nuvem (para
análise, processamento e armazenamento de dados das aplicações de CrowdSensing).
7.1.1
Medusa
Moo-Ryong Ra et al apresenta Medusa [50], um framework que fornece uma
linguagem de programação de alto nível e um sistema distribuído para o desenvolvimento
eficiente de aplicações de CrowdSensing móvel. Ele emprega uma arquitetura particionada entre smartphones e um servidor na nuvem para coordenar as tarefas (Figure 7.1).
7.1 CrowdSensing Móvel
115
Figura 7.1: Medusa - Arquitetura do Sistema [50].
Em Medusa, as tarefas criadas por uma aplicação de Crowdsensing são especificadas como uma sequência de etapas e descritas utilizando uma linguagem de programação de alto nível denominada MedScript. Essa é uma linguagem específica de domínio
baseada em XML, que define uma instância de uma tarefa, especificando a sequência de
ações executadas por um único dispositivo. Ela é composta por dois elementos principais:
stages e connectors. Stage descreve ações para processamento, monitoramento e comunicação automática ou dependente de intervenção humana. Já connectors é o elemento
que expressa o fluxo de controle entre os stages. Para que as tarefas criadas utilizando
MedScript possam ser executadas foi implantado no servidor o MedScript Interpreter,
que executa checagens das tarefas submetidas e em seguida notifica o Task Tracker, que é
responsável por coordenar o estágio de execução de todas as instâncias da tarefa.
Com base no exposto, nosso trabalho apresenta uma estratégia diferente ao
utilizarmos a linguagem de modelagem CSML, por meio da qual possibilitamos duas
formas de descrever uma consulta de CrowdSensing: uma fundamentada em XML (como
no Medusa) e a outra por meio de uma interface gráfica (front-end). Esta linguagem
facilita a compreensão e interação de usuários e desenvolvedores com a plataforma
proposta.
Vale ressaltar ainda que outro aspecto característico de Medusa é o suporte à
intervenção humana em várias etapas do processamento de uma tarefa. Esta intervenção
ocorre em alguns estágios e caracteriza-se pelas seguintes ações: autorizar a execução
de uma instância da tarefa, rever os dados antes da submissão, ativar manualmente o
sensor e assinar o resultado (desde que requerida pelo solicitante). Esta dependência
deixa o sistema mais oneroso. Em contrapartida, nosso trabalho prevê um processamento
7.1 CrowdSensing Móvel
116
automático das consultas especificadas pelo usuário, o que alcançamos após o usuário
registrar seu dispositivo e aceitar o termo de serviço, concordando com o recebimento de
requisições e envio de dados sensoriados. No entanto, o usuário pode a qualquer momento
redefinir regras de acesso e privacidade, restringindo ou liberando acesso aos dados dos
sensores.
A comunicação é um fator crítico para ambientes de CrowdSensing e amplamente discutido na comunidade científica. Relacionado a esta característica, Medusa
apresenta em sua arquitetura o Worker Manager, que utiliza o Amazon Mechanical Turk
(AMT) para recrutar colaboradores para uma determinada tarefa de CrowdSensing, por
meio do envio de uma notificação utilizando Short Message Service (SMS) e o Android
Cloud to Device Messaging (C2DM) para as demais trocas de mensagens entre o servidor e os dispositivos móveis. O serviço C2DM foi oficialmente descontinuado em 26 de
junho de 2012, sendo substituído pelo Google Cloud Messaging for Android (GCM) que
foi implementado neste trabalho para prover a troca de mensagens de forma simples e rápida. A seleção dos dispositivos “colaboradores” foi implementada em sua totalidade em
nosso provedor de serviço, possibilitando aplicarmos politicas de escolhas mais eficientes
e maior flexibilidade em relação ao Medusa.
7.1.2
Vita
Vita [28] é um sistema ciber-físico (CPS) móvel para aplicações de CrowdSensing descrito através de uma arquitetura universal particionada (Figura 7.2). Similarmente
ao nosso trabalho, Hu et al expõe por meio do Vita uma arquitetura orientada a serviço
(SOA) que adota os princípios de projeto de REpresentational State Transfer (REST)-ful
Web Services [48], para apoiar as interações entre a plataforma móvel e a nuvem.
Figura 7.2: Vita - Arquitetura [28].
O sistema Vita fornece um ambiente de desenvolvimento (Development Environment Provision) e interfaces de programação (API) por meio da Cloud Platform para
7.1 CrowdSensing Móvel
117
apoiar os desenvolvedores e permitir que provedores de serviços de terceiros possam participar no desenvolvimento de diferentes aplicações e serviços para CrowdSensing móvel.
Contudo, o processo de desenvolvimento de aplicações no Vita apresenta alta demanda
de comunicação, caracterizada pelo grande volume de dados e pacotes transferidos entre a plataforma móvel e o provedor de serviço. Na modelagem da CSVM, foi proposta
uma API que permite que aplicações desenvolvidas por terceiros utilizem recursos da
plataforma. Essa API é disponibilizada através da CSVM4Dev, desta forma, a comunicação entre as aplicações de terceiros e a CSVM ocorre em sua totalidade nos dispositivos
móveis. Assim, desenvolvedores devem se preocupar apenas em projetar aplicações que
se comuniquem com a interface externa provida pela camada de aplicação e descrevam
mensagens utilizando a CSML ou outra linguagem reconhecida pela plataforma. Neste
sentido, a principal diferença com o Vita está relacionada à comunicação com o provedor
de serviço, onde na CSVM é realizada unicamente através de suas partes: CSVM4Dev e
CSVMProvider.
O controle e tratamento de falhas é uma das principais preocupações relacionadas a ambientes de CrowdSensing móvel. Neste cenário, as falhas podem ser caracterizadas, por exemplo, pela saída do dispositivo de uma determinada área monitorada, bateria
descarregada e perda na conexão. No Vita esta preocupação está refletida na implementação do Service State Synchronization Mechanism (S3M), projetado para detectar e se
recuperar de possíveis falhas no dispositivo móvel. Este mecanismo limita-se ao tratamento de falha por indisponibilidade de serviço, utilizando Redes de Petri e a Linguagem
de Execução de Processos de Negócio (BPEL).
Neste trabalho optamos por uma abordagem diferente, onde a falha ocasionada
pela indisponibilidade de serviço do dispositivo móvel é detectada pelo provedor de serviço. Esta funcionalidade está implementada na camada de broker da CSVMProvider,
mais especificamente pelo componente StateManager, que gerencia os estados do dispositivo, a fim de identificar se o mesmo está disponível ou não. Ele possui um timer configurado (com um tempo estimado de 15 minutos) que determina de quanto em quanto
tempo o provedor enviará uma requisição para controle. O provedor envia a requisição
aos dispositivos que estão envolvidos em uma consulta de CrowdSensing e aguarda uma
resposta para atualizar e reconfigurar o modelo da consulta quando necessário.
Em relação à saída do dispositivo de uma determinada região monitorada,
repassamos esta responsábilidade ao proprietário do dispositivo. Assim sendo, faz-se
necessário que a cada alteração de localização o usuário informe manualmente sua nova
localização (por meio da interface gráfica da CSVM4Dev).
Referente aos elementos que participam de uma aplicação de CrowdSensing móvel, eles são em sua maioria representados por dispositivos móveis com recursos limitados
de energia, memória e processamento. Vita introduz um novo mecanismo de otimização
7.1 CrowdSensing Móvel
118
de recursos chamado Application-oriented Service Collaboration Model (ASCM), responsável por alocar tarefas computacionais entre os dispositivos móveis e a plataforma de
computação em nuvem de maneira eficiente e eficaz. Para otimizar esta alocação de tarefas o ASCM possui uma ferramenta chamada social vector, que é composto por vários
atributos representando informações do usuário e recursos computacionais disponíveis,
sendo os principais: atributos sociais contínuos, que inclui poder computacional, tempo
restante da bateria e capacidade de comunicação; atributos sociais discretos, que inclui o
número de tarefas similares executadas e o número de tarefas remanescentes. Para obter o
resultado desejado, Vita adota duas técnicas computacionais: Algoritmos genéticos [37]
e K-means [32].
Nossa proposta não prevê uma alocação inteligente de recursos como em Vita.
Optamos por realizar tal procedimento de maneira simples, realizando a primeira seleção
dos dispositivos com base na localização e em seguida selecionando-os de acordo com os
sensores compartilhados, visando atender à requisição de uma determinada aplicação de
CrowdSensig.
7.1.3
MobIoT
Uma característica desejável a todas plataformas e aplicações de CrowdSensing
móvel refere-se à escalabilidade. Neste sentido, o trabalho de Hachem et al apresenta
MobIoT [26], um middleware orientado a serviços que pemrite a detecção móvel participativa (ou, CrowdSensing móvel) em larga escala. Um dos fatores que contribui para o
alcance da escalabilidade proposta por Hachem et al é a limitação da participação de dispositivos (sensores) considerados redundantes. A redundância é caracterizada por dados
similares enviados por mais de um sensor, que além de não beneficiar a qualidade de detecção, aumenta a comunicação e o consumo de energia. A estratégia empregada na construção deste middleware para limitar o número de dispositivos participantes concentrase nas características de mobilidades dos dispositivos que satisfazem uma cobertura de
monitoramento. Esta cobertura refere-se à área geográfica abrangida pela aplicação de
CrowdSensing. Portanto, para cada dispositivo registrado, faz-se necessário uma análise
para estimar o deslocamento desses dispositivos. Neste sentido, a complexidade do sistema aumenta linearmente conforme a quantidade de dispositivos registrados.
A escalabilidade não é um dos principais alvos do nosso trabalho, mas entendemos que esta característica é de extrema importância para o bom funcionamento das
aplicações de CrowdSensing.
As principais semelhanças entre o MobIoT e nosso trabalho estão relacionadas
à arquitetura (Figura 7.3) e implementação, onde alguns elementos e funcionalidades
podem ser facilmente mapeadas de um modelo para o outro. Tanto a arquitetura do
7.1 CrowdSensing Móvel
119
MobIoT quanto da CSVM, são dividas em duas etapas: o registro de dispositivos e a
especificação de consultas. Em relação à implementação, ambos utilizam um webservice
RESTful para comunicação com os dispositivos móveis.
Figura 7.3: Arquitetura do MobIoT [26].
Entre as principais contribuições do trabalho de Hachem et al destacam-se:
• O projeto e análise de uma abordagem de registro determinística
• A modelagem matemática, projeto e análise de uma abordagem de registro probabilística, introduzida em [25].
As principais contribuições estão diretamente relacionadas à decisão de registro
dos serviços de sensoriamento dos dispositivos e tem como principal finalidade garantir
a escalabilidade da solução. O que as diferencia é o processamento que antecede a tomada de decisão, determinando se um dispositivo deve ou não se registrar. Na abordagem
determinística a decisão é tomada com base no conhecimento exato dos caminhos dos
dispositivos registrados, o que resulta em uma decisão precisa, porém com uma complexidade de tempo adicional. Em contrapartida, a abordagem apresentada por Hachem et
al em [25], utiliza modelos de mobilidade probabilísticos para estimar a movimentação
dos dispositivos a fim de acelerar a fase de pesquisa do algoritmo. O conhecimento gerado nessa abordagem pode ser então explorado por um novo dispositivo para auxiliá-lo
a decidir se deve ou não registrar seus serviços.
Nosso trabalho não emprega nenhuma estratégia para o controle de registro dos
dispositivos, podendo todos se registrarem na plataforma proposta. Esta decisão está
diretamente embasada pelo fato de que a cada consulta gerada todo o processamento
(desde o recrutamento até a reposta da consulta) é realizado em tempo real, em outras
palavras, no momento para o qual a consulta foi solicitada os dados serão requeridos.
Desta forma, esta abordagem não realiza uma estimativa de quais dispositivos estarão
7.2 Modelos em Tempo de Execução
120
presentes no local, como no MobIoT. Outra característica obtida através dessa estratégia,
está relacionada ao número de dispositivos registrados, pois a não restrição relacionada ao
registro, possibilita que o ambiente seja composto por mais dispositivos, o que aumenta a
probabilidade de uma consulta ser atendida.
7.2
Modelos em Tempo de Execução
Nesta seção, são apresentados trabalhos que empregam o uso de modelos em
tempo de execução (m@rt) como técnica para solucionar problemas aplicados a diferente
contextos. O uso de modelos em tempo de execução, conforme descrito na Seção 2.2, tem
como intuito prover representações mais apropriadas dos elementos de um sistema. Esta
técnica se aplica a sistemas que precisam ser monitorados, adaptados e evoluídos durante
sua execução. Assim, as seções seguintes apresentam uma comparação, considerando as
principais características que definem a abordagem de m@rt baseada na execução de
modelos, como arquitetura proposta, linguagem de modelagem, restrições e limitações
dos trabalhos.
7.2.1
CVM
O uso de modelos em tempo de execução, se aplica a uma categoria de aplicações
que estão relacionadas ao provimento de serviços a partir de um conjunto heterogêneo
de recursos e se inserem em um cenário dinâmico. A CVM (Communication Virtual
Machine) é apresentada por Clarke et al em [17], como um exemplo de plataforma
para construção e e execução de aplicações que se enquadram nessa categoria, destinada
especificamente à realização de serviços de comunicação.
Uma característica importante de plataforma dirigida por modelos, está relacionada à linguagem de modelagem processada por elas. Neste sentido, a CVM realiza o
processamento de modelos descritos em uma linguagem de modelagem específica para
o domínio de comunicação, denominada Linguagem de Modelagem de Comunicação
(Communication Modeling Language, CML) [15]. A CML é linguagem declarativa, que
permite descrever os participantes, dados, e tipos de mídia envolvidos em uma comunicação. Informações associadas às tecnologias e dispositivos utilizados em uma comunicação, não são descritos em CML.
Outro aspecto apresentado por Clarke et al, se refere a CVM como uma plataforma centrada no usuário devido ao alto nível dos modelos descritos por meio da CML,
que podem ser construídos tanto por usuários especialistas de domínio, quanto por usuários finais.
7.2 Modelos em Tempo de Execução
121
A partir de um modelo CML, a CVM é capaz de realizar serviços de comunicação de forma automática, sem a necessidade de intervenção do usuário. Além disso, um
modelo descrito em CML pode ser modificado ao longo de uma comunicação, sendo a
CVM capaz de identificar essas mudanças e adaptar a comunicação em andamento para
atender aos novos requisitos. Isso qualifica os modelos em CML como modelos de tempo
de execução [8].
A CVM conta com uma arquitetura organizada em camadas que possuem responsabilidades bem definidas e encapsulam as principais funcionalidades envolvidas na
realização da comunicação.Essas camadas são divididas em quatro: interface de comunicação com o usuário, mecanismo de síntese, middleware de comunicação e intermediador
de comunicação em rede.
A CVM emprega dois importantes conceitos relacionados à capacidade autogerenciáveis: computação autônoma para construção de sistemas auto-gerenciáveis e uso
de políticas para guiar o gerenciamento de sistemas.
O trabalho proposto apresenta diversas similaridades com a CVM, contudo sua
principal diferença além do domínio de aplicação, está no projeto arquitetural da CSVM.
Apesar de sua estrutura em camadas e algumas funcionalidades serem semelhantes à
CVM, a CSVM apresenta duas configurações distintas que são executadas parte em um
dispositivo móvel e parte em um servidor. Desta forma, sua estrutura em camadas deve ser
modificada para atender as limitações e funcionalidades imposta por cada componente.
Assim como na CVM, os modelos descritos por meio da CSVM possibilita que
consultas de crowdsensing sejam facilmente especificadas tanto por usuários especialista
quanto “leigos” em relação ao domínio, devido ao alto nível exigido pela linguagem. Uma
vez especificado uma consulta de crowdsensing, os serviços realizados pela CSVM são
automáticos, não necessitando da intervenção do usuário, como por exemplo, aceitar uma
requisição.
Em relação alterações realizadas em tempo de execução, a CSVM possui um
recurso similar ao apresentado pela CVM, onde as alterações em uma aplicação de
crowdsensing são identificadas pela plataforma, seja por intervenção direta do usuário
ou por meio do monitoramento da aplicação realizado pela CSVM. Após identificado
essas mudanças, a CSVM é capaz de adaptar a aplicação em andamento para atender a
nova configuração do ambiente.
7.2.2
MGridVM
Allison et al, apresentam em [3], a Máquina Virtual de Redes Elétricas Locais
(Microgrid Virtual Machine, MGridVM), uma solução dirigida por modelos para o gerenciamento de microgrids inspirada na CVM. A MGridVM emprega a mesma estratégia
7.2 Modelos em Tempo de Execução
122
da CVM, onde sua arquitetura é organizada em quatro camadas para uma máquina que
executa modelos de microgrid criados pelos usuários. Assim como na CVM, cada camada
possui funções bem definidas e são dividas em: interface do usuário, síntese, middleware
e broker.
Allison et al propõem o uso da MGridVM para possibilitar a construção de aplicações de gerenciamento dos elementos de uma rede elétrica inteligente. Desta forma, foi
apresentado a Linguagem de Modelagem de Redes Elétricas Locais (Microgrid Modeling
Language, MGridML) [4]. Ela possibilita ao usuário criar modelos que descrevem fontes
e cargas de energia em uma microgrid. Um modelo construído a partir da MGridML, é
composto por dois esquemas: esquema de controle e esquema de dados.
O esquema de controle específica a configuração lógica da microgrid. O esquema
de dados, específica as instâncias dos tipos de elementos definidos no esquema de
controle, e assim representa um dispositivo físico em uma microgrid.
Em relação ao uso de políticas para determinar o funcionamento do sistema, a
MGridML permite a atribuição de políticas aos esquemas. Neste contexto, uma política
consiste em um tripa "evento-condição-ação", que possibilita que regras ou restrições
sejam adicionadas na forma de comportamento do modelo.
A arquitetura da CSVM é semelhante a arquitetura da MGridVM e suas diferenças, assim como comparada à CVM, está na arquitetura distribuído presente na CSVM,
onde parte da plataforma executará no dispositivo móvel e outra parte no servidor. Desta
forma, as camadas presentes no servidor são: camada de síntese, camada de middleware
e camada de broker. Enquanto as camadas presentes no dispositivos móveis são: camada
de aplicação, camada de síntese, camada de middleware e camada de broker.
Em relação aos modelos descritos em MGridML, a CSML permite também descrever modelos compostos por esquema de controle e esquema de dados, porém apresenta uma definição diferente a cerca desses esquemas. Um esquema de controle descrito
em CSML pode ser subdivido em dois: esquema de controle do ambiente e esquema de
controle da consulta. O esquema de controle do ambiente representa a configuração do
ambiente definindo quais os tipos de dispositivos, tipos de sensores e tipos de operações
são suportados pela plataforma. O esquema de controle da consulta por sua vez, define
os elementos de uma consulta de crowdsensing especificada pelo usuário ou aplicação.
Por fim, o esquema de dados representa uma instância da consulta, informando quais os
dados referente a um tipo de sensor o dispositivo recrutado (participante da consulta) deve
monitorar.
A CSML não apresenta um tratamento de políticas conforme presente na
MGridVM. O comportamento do modelo também é determinado por regras e políticas,
porém são implementas diretamente na CSVM, e a adição de novas regras devem ser feitas a nível de código, diferentemente da MGridVM que permite a adição de novas regras
7.3 Conclusão
123
na forma de comportamento.
7.3
Conclusão
Neste capítulo apresentamos os principais trabalhos relacionados tanto ao
domínio/problema-alvo de crowdsensing móvel quanto ao uso da abordagem/técnica dirigida por modelos em tempo de execução. A primeira categoria de trabalhos relacionados,
ou seja, direcionados à crowdsensing móvel, as principais características investigadas e
comparadas foram: a utilização de uma arquitetura particionada/distribuída; a definição
de uma linguagem de alto nível e específica de domínio; os aspectos e a forma de intervenção do usuário durante o processamento de uma consulta para autorizar o acesso ao
dispositivo e o envio de informação, sendo obrigatória ou não; os protocolos de comunicação utilizados (por exemplo SMS, C2DM e GCM); a utilização de serviços RESTFul;
a incorporação de uma API para apoiar o desenvolvimento de aplicações por terceiros;
a forma de controle e tratamento de falhas; a utilização de métodos para otimização de
recursos; e técnicas que visam a escalabilidade.
Em relação a segunda categoria de trabalhos relacionados, ou seja, que utilizam
uma abordagem dirigida por modelos em tempo de execução, as características analisadas
foram: o emprego de uma plataforma para construção e execução de aplicações de acordo
com um domínio específico; a definição de uma linguagem de modelagem específica de
domínio; a utilização de técnicas para tratamento de modelos em tempo de execução; o
uso de uma arquitetura em camadas; utilização de abordagens de computação autônoma;
emprego de sistemas auto-gerenciáveis; a representação de modelos por meio de esquemas; e por fim, o uso de políticas.
Desta forma, foi realizado uma comparação sistemática dos trabalhos apresentados neste capítulo em concordância com as características descristas a fim de posicionar
este trabalho em relação aos demais e mostrar seu diferencial e suas limitações..
CAPÍTULO 8
Conclusão
Diante da complexidade inerente às aplicações de crowdsensing móvel, devido
a fatores como ubiquidade, interoperabilidade entre diferentes dispositivos móveis, identificação e captação de dados provenientes desses dispositivos e adaptação de seu uso em
ambientes heterogêneos e dinâmicos, a adoção de uma abordagem dirigida por modelos se
mostra eficiente uma vez que reduz essa complexidade por meio do emprego de técnicas
de modelagem que diminui de forma substancial a distância semântica entre o problema
a ser resolvido e a plataforma utilizada. Desta forma, a abordagem dirigida por modelos
promove o uso de abstrações mais próximas ao domínio do problema.
Neste trabalho, foi apresentada uma abordagem dirigida por modelos para definição de uma linguagem de modelagem específica para o domínio de crowdsensing (CSML)
que permite descrever e modelar as principais funcionalidades de crowdsensing móvel:
registro de dispositivos e especificação de consultas. A construção da CSML foi pautada
em quatro principais requisitos, determinados por seu domínio de aplicação: simplicidade,
interoperabilidade, expressividade e flexibilidade. A partir dessa definição, propusemos a
criação de um metamodelo para CSML capaz de capturar as principais características das
aplicações de crowdsensing móvel, e em conformidade com esse metamodelo a descrição
de modelos apresentados neste trabalho como esquemas de controle e esquemas de dados.
Para a execução de modelos descritos em CSML e que podem ser criados e
modificados em tempo de execução, este trabalho propõe, a partir de uma arquitetura
genérica para máquinas de execução de modelos (discutida na Seção 2.2), o uso de
uma especialização dessa máquina específica para o domínio de crowdsensing móvel,
denominada CSVM. Assim como a arquitetura genérica, a CSVM apresenta camadas
bem definidas que neste trabalho foram descritas por meio de modelos que expressam as
atribuições de cada uma.
Para manter conformidade com o domínio, de modo geral a CSVM inclui serviços e operações para processamento de modelos que envolvem: detecção e recrutamento
de recursos (dispositivos), gerenciamento de recursos heterogêneos (unidades de sensoriamento), manutenção de um esquema de controle do ambiente contendo os dispositivos
registrados e relações/operações matemáticas aplicadas a diferentes unidades. Seguindo
8.1 Trabalhos futuros
125
essa abordagem, este trabalho propõe uma arquitetura estruturada em duas partes: central
(CSVMProvider), representada por um provedor de serviço e distribuída (CSVM4Dev),
presente nos dispositivos móveis.
De modo geral, entre as contribuições deste trabalho, podemos destacar a utilização de uma abordagem dirigida por modelos em tempo de execução para criação e
processamento de aplicações de crowdsensing móvel. Neste contexto, modelos não são
usados apenas para expressarem consultas de crowdsensing, mas também como forma de
manter uma representação atualizada da consulta em execução.
A abordagem proposta neste trabalho também apresenta algumas limitações.
Apesar de propor uma linguagem de modelagem específica para o domínio de crowdsensing apresentando seu metamodelo por meio de sua sintaxe abstrata, o presente trabalho
não formaliza sua semântica estática. Outra limitação se refere aos aspectos de segurança
e privacidade, ainda que a arquitetura proposta expõe a necessidade de tratar tais aspectos,
eles não foram explorados neste trabalho. Desta forma, a implementação da CSVM não
incorpora aspectos de segurança e privacidade.
Por fim, o presente trabalho propõe uma abordagem dirigida por modelos que
permite criação e processamento de uma variedade de aplicações pertencentes ao domínio
de crowdsensing móvel compreendendo um conjunto de dispositivos heterogêneos. Essa
abordagem possibilita, por meio da CSML, modelar a maioria dos cenários de crowdsensing móvel e reconfigurar consultas mediante alteração do ambiente e/ou intenção
do usuário. Esses comportamentos forma comprovados por meio do cenário apresentado
como estudo de caso deste trabalho.
8.1
Trabalhos futuros
Nesta seção apresentamos as áreas que não foram cobertas por este trabalho
e necessitam de investigação. Como trabalho futuro, planejamos estender a plataforma
para que ela possa permitir o processamento de políticas, principalmente relacionadas
a segurança e privacidade. Nesse sentido, desejamos evoluir a CSVM para permitir o
gerenciamento dinâmico de políticas, possibilitando sua adição e manutenção.
Outra proposta de trabalho futuro, está relacionado a localização dos dispositivos
que apesar de ser informada pelos dispositivos de forma lógica, apresenta pouca precisão
quanto a sua real localização. Uma possível solução nessa direção é a utilização de
um sistema de localização indoor a ser mantido na CSVMProvider, ou a utilização das
coordenadas reais de sua localização obtidas pelo sensor de geolocalização (GPS).
Apesar do algoritmo de seleção de dispositivos proposto neste trabalho atender
às consultas especificadas com agilidade, pretendemos evolui-lo em relação à precisão
dos dados monitorados e ampliação da cobertura do ambiente. Assim, um possível
8.1 Trabalhos futuros
126
comportamento do algoritmo seria: selecionar o menor número de dispositivos que atenda
uma determinada consulta a fim de cobrir em sua totalidade o ambiente a ser monitorado.
Nesse sentido, o tempo de seleção do dispositivo aumentaria, em contrapartida obteríamos
uma otimização no uso de recursos e consequentemente no uso da infraestrutura de
comunicação, utilizada para troca de mensagens entre os dispositivos e o servidor.
Nessa direção e abordando principalmente o problema da cobertura, ou seja,
obter uma cobertura grande do ambiente monitorado sem utilizar uma grande quantidade
de dispositivos, uma possível solução seria aplicar a abordagem apresentada por Hachem
et al em [26], que se concentra em modelos de mobilidade probabilísticos para estimar
a movimentação dos dispositivos que satisfaçam uma cobertura de monitoramento e
limitar assim o número de registros de dispositivos. Desta forma, podemos alcançar uma
escalabilidade melhor da plataforma.
Além disso, como a mobilidade é um fator crítico em ambientes de crowdsensing
móvel, planejamos adicionar á camada de broker da CSVMProvider um comportamento
para permitir que um dispositivo participante de uma consulta, ao desconectar de uma
rede e se conectar em outra, possa manter sua conexão à plataforma e continuar o
monitoramento. Para isso, é importante que seja estabelecido um timer, a fim de manter
“aceitável” o desempenho do processamento da consulta. A escolha desse timer deve ser
estabelecida de forma que o seu valor seja menor que o tempo de seleção de um novo
dispositivo.
Em relação a implementação, planejamos melhorar o desempenho no gerenciamento do banco de dados realizado pelo hibernate por meio da utilização de técnicas
de tunning que altera sua configuração padrão e permite otimizar seu comportamento
principalmente em relação ao gerenciamento de seções abertas com o banco de dados. A
aplicação dessa técnica é precedida por uma análise minuciosa tanto do comportamento
do hibernate ao gerar instruções, quanto do comportamento do MySQL ao processá-las.
Desta forma, podemos obter uma redução no tempo de acesso ao banco de dados e na
aplicação de operações CRUD.
Contudo, primeiramente desejamos avaliar a aplicação da abordagem proposta
em um ambiente de crowdsensing real com o intuito de alcançar uma melhor compreensão
de sua aplicabilidade. Assim, planejamos realizar testes de desempenho em ambientes
reais e altamente dinâmicos além de realizar uma avaliação quanto a usabilidade da
plataforma.
Referências Bibliográficas
[1] A FREEN , S.; A BID, K. A novel approach on applications, research challenges
and mining for mobile crowdsensing. International Journal of Advanced Trends in
Computer Science and Engineering, 2(1):75–80, 2013.
[2] A LAM , S.; C HOWDHURY, M. M.; N OLL , J.
Senaas: An event-driven sensor
virtualization approach for internet of things cloud. In: Networked Embedded
Systems for Enterprise Applications (NESEA), 2010 IEEE International Conference
on, p. 1–6. IEEE, 2010.
[3] A LLISON , M.; A LLEN , A. A.; YANG , Z.; C LARKE , P. J. A software engineering
approach to user-driven control of the microgrid. In: SEKE, p. 59–64, 2011.
[4] A LLISON , M.; M ORRIS , K. A.; YANG , Z.; C LARKE , P. J.; C OSTA , F. M. Towards Reliable Smart Microgrid Behavior Using Runtime Model Synthesis. In: 2012 IEEE
14th International Symposium on High-Assurance Systems Engineering, número Cm,
p. 185–192. IEEE, Oct. 2012.
[5] ATZORI , L.; I ERA , A.; M ORABITO, G. The internet of things: A survey. Computer
Networks, 54(15):2787–2805, 2010.
[6] B AUER , C.; K ING , G. Java Persistance with Hibernate. Dreamtech Press, 2006.
[7] B ÉZIVIN , J. Model driven engineering: An emerging technical space. In: Generative and transformational techniques in software engineering, p. 36–64. Springer,
2006.
[8] B LAIR , G.; B ENCOMO, N.; F RANCE , R. B.
Models@ run. time.
Computer,
42(10):22–27, 2009.
[9] B RYANT, B. R.; G RAY, J.; M ERNIK , M.; C LARKE , P. J.; F RANCE , R. B.; K ARSAI , G.
Challenges and directions in formalizing the semantics of modeling languages.
Computer Science and Information Systems/ComSIS, 8(2):225–253, 2011.
Referências Bibliográficas
128
[10] B URKE , J. A.; E STRIN , D.; H ANSEN , M.; PARKER , A.; R AMANATHAN , N.; R EDDY, S.;
S RIVASTAVA , M. B. Participatory sensing. Center for Embedded Network Sensing,
2006.
[11] C HEN , K.; S ZTIPANOVITS , J.; N EEMA , S. Toward a semantic anchoring infrastructure for domain- specific modeling languages. In: Proceedings of the 5th
ACM international conference on Embedded software, p. 35–43. ACM, 2005.
[12] C HON , Y.; L ANE , N. D.; L I , F.; C HA , H.; Z HAO, F. Automatically characterizing
places with opportunistic crowdsensing using smartphones. In: Proceedings of
the 2012 ACM Conference on Ubiquitous Computing, p. 481–490. ACM, 2012.
[13] C HUI , M.; L ÖFFLER , M.; R OBERTS , R. The internet of things. McKinsey Quarterly,
2:1–9, 2010.
[14] C LARK , T.; S AMMUT, P.; W ILLANS , J. Applied metamodelling: a foundation for
language driven development. 2008.
[15] C LARKE , P. J.; H RISTIDIS , V.; WANG , Y.; P RABAKAR , N.; D ENG , Y. A declarative
approach for specifying user-centric communication. In: Collaborative Technologies and Systems, 2006. CTS 2006. International Symposium on, p. 89–98. IEEE,
2006.
[16] DE P ROJETO, P. O modelo mvc-model view controller, 2008.
[17] D ENG , Y.; M ASOUD S ADJADI , S.; C LARKE , P. J.; H RISTIDIS , V.; R ANGASWAMI ,
R.; WANG , Y. Cvm–a communication virtual machine. Journal of Systems and
Software, 81(10):1640–1662, 2008.
[18] D ERLER , P.; L EE , E. A.; V INCENTELLI , A. S. Modeling cyber–physical systems.
Proceedings of the IEEE, 100(1):13–28, 2012.
[19] E STRIN , D. Participatory sensing: applications and architecture [internet predictions]. Internet Computing, IEEE, 14(1):12–42, 2010.
[20] F IELDING , R. T.; TAYLOR , R. N. Principled design of the modern web architecture. ACM Transactions on Internet Technology (TOIT), 2(2):115–150, 2002.
[21] F RANCE , R.; RUMPE , B.
Domain specific modeling.
Software and Systems
Modeling, 4(1):1–3, 2005.
[22] F RANCE , R.; RUMPE , B. Model-driven development of complex software: A
research roadmap.
In: 2007 Future of Software Engineering, p. 37–54. IEEE
Computer Society, 2007.
Referências Bibliográficas
129
[23] G ANTI , R. K.; Y E , F.; L EI , H. Mobile crowdsensing: Current state and future
challenges. Communications Magazine, IEEE, 49(11):32–39, 2011.
[24] G UINARD, D.; T RIFA , V. Towards the web of things: Web mashups for embedded
devices. In: Workshop on Mashups, Enterprise Mashups and Lightweight Composition on the Web (MEM 2009), in proceedings of WWW (International World Wide
Web Conferences), Madrid, Spain, 2009.
[25] H ACHEM , S.; PATHAK , A.; I SSARNY, V. Probabilistic registration for large-scale
mobile participatory sensing.
In: Pervasive Computing and Communications
(PerCom), 2013 IEEE International Conference on, p. 132–140. IEEE, 2013.
[26] H ACHEM , S.; PATHAK , A.; I SSARNY, V. Service-oriented middleware for largescale mobile participatory sensing. Pervasive and Mobile Computing, 10:66–82,
2014.
[27] H ADLEY, M.; S ANDOZ , P.
Jax-rs: Java api for restful web services.
Java
Specification Request (JSR), 311, 2008.
[28] H U, X.; C HU, T. H.; C HAN , H. C.; L EUNG , V. C. Vita: A crowdsensing-oriented
mobile cyber physical system. 2013.
[29] H UI , J.; C ULLER , D.; C HAKRABARTI , S. 6lowpan: Incorporating ieee 802.15. 4
into the ip architecture–internet protocol for smart objects (ipso) alliance, white
paper# 3, january 2009, 2009.
[30] J AYARAMAN , P. P.; S INHA , A.; S HERCHAN , W.; K RISHNASWAMY, S.; Z ASLAVSKY, A.;
H AGHIGHI , P. D.; L OKE , S.; D O, M. T. Here-n-now: A framework for context-aware
mobile crowdsensing. In: Proc. of the Tenth International Conference on Pervasive
Computing, 2012.
[31] JB OSS G ROUP . Hibernate. http://hibernate.org/. Acessado em fevereiro de
2014.
[32] K ANUNGO, T.; M OUNT, D. M.; N ETANYAHU, N. S.; P IATKO, C. D.; S ILVERMAN , R.;
W U, A. Y. An efficient k-means clustering algorithm: Analysis and implementation. Pattern Analysis and Machine Intelligence, IEEE Transactions on, 24(7):881–
892, 2002.
[33] K APADIA , A.; KOTZ , D.; T RIANDOPOULOS , N. Opportunistic sensing: Security
challenges for the new paradigm. In: Communication Systems and Networks and
Workshops, 2009. COMSNETS 2009. First International, p. 1–10. IEEE, 2009.
Referências Bibliográficas
130
[34] K HAN , W. Z.; X IANG , Y.; A ALSALEM , M. Y.; A RSHAD, Q. Mobile phone sensing
systems: A survey. Communications Surveys & Tutorials, IEEE, 15(1):402–427,
2013.
[35] K IRSHIN , A.; D OTAN , D.; H ARTMAN , A. A uml simulator based on a generic model
execution engine. In: MoDELS Workshops, volume 4364, p. 324–326, 2006.
[36] K LYNE , G.; C ARROLL , J. J. Resource description framework (rdf): Concepts and
abstract syntax. 2006.
[37] KOZA , J. R. Genetic programming: on the programming of computers by means
of natural selection, volume 1. MIT press, 1992.
[38] L ANE , N. D.; M ILUZZO, E.; L U, H.; P EEBLES , D.; C HOUDHURY, T.; C AMPBELL , A. T.
A survey of mobile phone sensing. Communications Magazine, IEEE, 48(9):140–
150, 2010.
[39] L EE , G. M.; C RESPI , N. Shaping future service environments with the cloud and
internet of things: networking challenges and service evolution. In: Leveraging
applications of formal methods, verification, and validation, p. 399–410. Springer,
2010.
[40] M ILUZZO, E.; PAPANDREA , M.; L ANE , N. D.; S ARROFF , A. M.; G IORDANO, S.; C AMP BELL ,
A. T. Tapping into the vibe of the city using vibn, a continuous sensing
application for smartphones. In: Proceedings of 1st international symposium on
From digital footprints to social and community intelligence, p. 13–18. ACM, 2011.
[41] M IORANDI , D.; S ICARI , S.; D E P ELLEGRINI , F.; C HLAMTAC, I. Internet of things:
Vision, applications and research challenges. Ad Hoc Networks, 10(7):1497–
1516, 2012.
[42] M OMTCHEV, V.; K IRYAKOV, A. Triple space communication.
[43] O MG , Q. Meta object facility (mof) 2.0 query/view/transformation specification.
Final Adopted Specification (November 2005), 2008.
[44] O RACLE C ORPORATION .
Jersey - RESTful Web Services in Java.
https:
//jersey.java.net/index.html. Acessado em fevereiro de 2014.
[45] O RACLE C ORPORATION . MySQL. http://www.mysql.com/. Acessado em fevereiro de 2014.
[46] OWENS , M.; A LLEN , G. The definitive guide to SQLite, volume 1. Springer, 2006.
Referências Bibliográficas
131
[47] PARWEKAR , P. From internet of things towards cloud of things. In: Computer
and Communication Technology (ICCCT), 2011 2nd International Conference on, p.
329–333. IEEE, 2011.
[48] PAUTASSO, C.; Z IMMERMANN , O.; L EYMANN , F. Restful web services vs. big’web
services: making the right architectural decision. In: Proceedings of the 17th
international conference on World Wide Web, p. 805–814. ACM, 2008.
[49] P RESSER , M.; G LUHAK , A. The internet of things: Connecting the real world with
the digital world. EURESCOM mess@ ge–The Magazine for Telecom Insiders, 2,
2009.
[50] R A , M.-R.; L IU, B.; L A P ORTA , T. F.; G OVINDAN , R. Medusa: A programming framework for crowd-sensing applications. In: Proceedings of the 10th international
conference on Mobile systems, applications, and services, p. 337–350. ACM, 2012.
[51] R ICHARDSON , L.; RUBY, S. RESTful web services. O’Reilly Media, Inc., 2008.
[52] R IEHLE , D.; F RALEIGH , S.; B UCKA -L ASSEN , D.; O MOROGBE , N. The architecture
of a uml virtual machine. ACM SIGPLAN Notices, 36(11):327–341, 2001.
[53] R ODRIGUES , T. C.; DANTAS , P. V.; D ELICATO, F. C.; P IRES , P. D. F.; M ICELI , C.;
P IRMEZ , L. Using mda for building wireless sensor network applications. 4th
Brazilian Symposium on Software Components, Architectures and Reuse (SBCARS
2010), 2010.
[54] S EIDEWITZ , E. What models mean. Software, IEEE, 20(5):26–32, 2003.
[55] S ELIC, B.
The pragmatics of model-driven development.
Software, IEEE,
20(5):19–25, 2003.
[56] S HERCHAN , W.; J AYARAMAN , P. P.; K RISHNASWAMY, S.; Z ASLAVSKY, A.; L OKE ,
S.; S INHA , A. Using on-the-move mining for mobile crowdsensing. In: Mobile
Data Management (MDM), 2012 IEEE 13th International Conference on, p. 115–124.
IEEE, 2012.
[57] S OLEY, R.; OTHERS . Model driven architecture. OMG white paper, 308:308, 2000.
[58] S OUSA , G. Desenvolvimento de Máquinas de Execução para Linguagens de
Modelagem Específicas de Domínio: Uma Estratégia Baseada em Engenharia
Dirigida por Modelos. Mestrado em ciência da computação, Universidade Federal
de Goiás, 2012.
Referências Bibliográficas
132
[59] SQL ITE C ONSORTIUM . SQLite. http://www.sqlite.org/. Acessado em fevereiro
de 2014.
[60] S TAHL , T.; VÖLTER , M. Model-Driven Software Development: Technology, Engineering, Management. Wiley, 1 edition, 2006.
[61] S TIRBU, V. Towards a restful plug and play experience in the web of things.
In: Semantic computing, 2008 IEEE international conference on, p. 512–517. IEEE,
2008.
[62] S UN , J. Incentive mechanisms for mobile crowd sensing: Current states and
challenges of work. arXiv preprint arXiv:1310.8364, 2013.
[63] T HE A PACHE S OFTWARE F OUNDATION . Apache Tomcat. http://tomcat.apache.
org/. Acessado em outubro de 2013.
[64] T HOMPSON , C.; W HITE , J.; D OUGHERTY, B.; S CHMIDT, D. C. Optimizing mobile
application performance with model–driven engineering. In: Software Technologies for Embedded and Ubiquitous Systems, p. 36–46. Springer, 2009.
[65] TOMA , I.; S IMPERL , E.; H ENCH , G. A joint roadmap for semantic technologies
and the internet of things. In: Proceedings of the 3rd STI Roadmapping Workshop,
2009.
[66] WANG , Y.; C LARKE , P. J.; W U, Y.; A LLEN , A.; D ENG , Y. Runtime models to support
user-centric communication. Models@runtime Workshop in conjunction Models,
2008.
[67] W U, Y.; A LLEN , A.; H ERNANDEZ , F. A user-centric communication middleware
for cvm. 12th Software Engineering and Applications, p. 210–215, 2008.
[68] W U, Y.; A LLEN , A. A.; H ERNANDEZ , F.; F RANCE , R.; C LARKE , P. J. A domainspecific modeling approach to realizing user-centric communication. Software:
Practice and Experience, 42(3):357–390, Mar. 2012.
[69] X IAO, Y.; S IMOENS , P.; P ILLAI , P.; H A , K.; S ATYANARAYANAN , M. Lowering the barriers to large-scale mobile crowdsensing. In: Proceedings of the 14th Workshop
on Mobile Computing Systems and Applications, p. 9. ACM, 2013.
[70] YAN , T.; M ARZILLI , M.; H OLMES , R.; G ANESAN , D.; C ORNER , M.
mcrowd: a
platform for mobile crowdsourcing. In: Proceedings of the 7th ACM Conference
on Embedded Networked Sensor Systems, p. 347–348. ACM, 2009.
APÊNDICE A
Esquemas do Cenário
Neste apêndice são apresentados os modelos (esquema de controle e/ou esquema
de dados) utilizados para exemplificar o cenário descritos no Capítulo 1. Os modelos
são descritos em X-CSML e são versões completas de seus equivalentes apresentados no
Capítulo 3.
Listing A.1: Instância do esquema de controle da consulta descrita
em X-CSML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<? xml v e r s i o n = " 1 . 0 " e n c o d i n g = "UTF−8" ? >
<xcsml>
<controlSchema>
<queryControlSchema>
< s u b s c r i p t i o n s u b s c r i p t i o n I D ="1">
<aggregation />
<sensorTypeRequest id ="1">
<type>temperature </ type>
< q u a n t i t y >10< / q u a n t i t y >
< l o c a t i o n > b o a t e x< / l o c a t i o n >
< o p e r a t i o n > avg < / o p e r a t i o n >
< r e q u e s t >onDemand< / r e q u e s t >
< device id ="1">
<type>
< b r a n d >Samsung< / b r a n d >
<model > G a l a x y S5< / model >
</ type>
<owner > J o h n < / owner >
</ device>
< device id ="2">
<type>
< b r a n d >LG< / b r a n d >
<model >Nexus 5< / model >
</ type>
<owner >Mary< / owner >
</ device>
< device id ="3">
Apêndice A
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
134
<type>
< b r a n d >Sony< / b r a n d >
<model > X p e r i a Z2< / model >
</ type>
<owner > P a u l < / owner >
</ device>
< device id ="4">
<type>
< b r a n d >Samsung< / b r a n d >
<model > G a l a x y S3< / model >
</ type>
<owner >Ana< / owner >
</ device>
< device id ="5">
<type>
< b r a n d >Samsung< / b r a n d >
<model > G a l a x y S4< / model >
</ type>
<owner > J o s e p h < / owner >
</ device>
< device id ="6">
<type>
< b r a n d >Samsung< / b r a n d >
<model > G a l a x y Note 3< / model >
</ type>
<owner > L o r e n < / owner >
</ device>
< device id ="7">
<type>
< b r a n d >Samsung< / b r a n d >
<model > G a l a x y S5< / model >
</ type>
<owner > M i c h a e l < / owner >
</ device>
< device id ="8">
<type>
<brand>Motorola< / brand>
<model >Moto G< / model >
</ type>
<owner >Kennedy< / owner >
</ device>
< device id ="9">
<type>
< b r a n d >Sony< / b r a n d >
<model > X p e r i a Z< / model >
</ type>
Apêndice A
74
75
76
77
78
79
80
81
82
83
84
85
86
87
<owner > S t u a r t < / owner >
</ device>
< d e v i c e i d = " 10 " >
<type>
< b r a n d >LG< / b r a n d >
<model >Nexus 4< / model >
</ type>
<owner > S t e v e < / owner >
</ device>
< / sensorTypeRequest>
</ subscription>
< / queryControlSchema>
< / controlSchema>
< / xcsml>
135
APÊNDICE B
Modelos do Estudo de Caso
Neste apêndice apresentamos os modelos, descritos em X-CSML, utilizados na
implementação do cenário descrito no Capítulo 6.
Listing B.1: Instância do esquema de controle da consulta descrita
em X-CSML para o problema 3 do estudo de caso
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<? xml v e r s i o n = " 1 . 0 " e n c o d i n g = "UTF−8" ? >
<xcsml>
<controlSchema>
<queryControlSchema>
< s u b s c r i p t i o n s u b s c r i p t i o n I D ="1">
<aggregation />
<sensorTypeRequest id ="1">
<type>temperature </ type>
< q u a n t i t y >10< / q u a n t i t y >
< l o c a t i o n > b o a t e x< / l o c a t i o n >
< o p e r a t i o n > avg < / o p e r a t i o n >
< r e q u e s t >onDemand< / r e q u e s t >
< device id ="1">
<type>
< b r a n d >Samsung< / b r a n d >
<model > G a l a x y S5< / model >
</ type>
<owner > J o h n < / owner >
</ device>
< device id ="2">
<type>
< b r a n d >LG< / b r a n d >
<model >Nexus 5< / model >
</ type>
<owner >Mary< / owner >
</ device>
< device id ="3">
<type>
< b r a n d >Sony< / b r a n d >
<model > X p e r i a Z2< / model >
Apêndice B
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
137
</ type>
<owner > P a u l < / owner >
</ device>
< device id ="4">
<type>
< b r a n d >Samsung< / b r a n d >
<model > G a l a x y S3< / model >
</ type>
<owner >Ana< / owner >
</ device>
< device id ="5">
<type>
< b r a n d >Samsung< / b r a n d >
<model > G a l a x y S4< / model >
</ type>
<owner > J o s e p h < / owner >
</ device>
< device id ="6">
<type>
< b r a n d >Samsung< / b r a n d >
<model > G a l a x y Note 3< / model >
</ type>
<owner > L o r e n < / owner >
</ device>
< device id ="7">
<type>
< b r a n d >Samsung< / b r a n d >
<model > G a l a x y S5< / model >
</ type>
<owner > M i c h a e l < / owner >
</ device>
< device id ="8">
<type>
<brand>Motorola< / brand>
<model >Moto G< / model >
</ type>
<owner >Kennedy< / owner >
</ device>
< device id ="9">
<type>
< b r a n d >Sony< / b r a n d >
<model > X p e r i a Z< / model >
</ type>
<owner > S t u a r t < / owner >
</ device>
< d e v i c e i d = " 10 " >
Apêndice B
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
138
<type>
< b r a n d >LG< / b r a n d >
<model >Nexus 4< / model >
</ type>
<owner > S t e v e < / owner >
</ device>
< d e v i c e i d = " 11 " >
<type>
< b r a n d >Samsung< / b r a n d >
<model > G a l a x y S5< / model >
</ type>
<owner > P e t e r < / owner >
</ device>
< d e v i c e i d = " 12 " >
<type>
< b r a n d >LG< / b r a n d >
<model >Nexus 5< / model >
</ type>
<owner > George < / owner >
</ device>
< d e v i c e i d = " 13 " >
<type>
< b r a n d >Sony< / b r a n d >
<model > X p e r i a Z2< / model >
</ type>
<owner >Mark< / owner >
</ device>
< d e v i c e i d = " 14 " >
<type>
< b r a n d >Samsung< / b r a n d >
<model > G a l a x y S3< / model >
</ type>
<owner > Samantha < / owner >
</ device>
< d e v i c e i d = " 15 " >
<type>
< b r a n d >Samsung< / b r a n d >
<model > G a l a x y S4< / model >
</ type>
<owner > P h i l i p < / owner >
</ device>
< d e v i c e i d = " 16 " >
<type>
< b r a n d >Samsung< / b r a n d >
<model > G a l a x y Note 3< / model >
</ type>
Apêndice B
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
139
<owner > C r i s t o p h e r < / owner >
</ device>
< d e v i c e i d = " 17 " >
<type>
< b r a n d >Samsung< / b r a n d >
<model > G a l a x y S5< / model >
</ type>
<owner > J o s h < / owner >
</ device>
< d e v i c e i d = " 18 " >
<type>
<brand>Motorola< / brand>
<model >Moto G< / model >
</ type>
<owner > J a n n e t < / owner >
</ device>
< d e v i c e i d = " 19 " >
<type>
< b r a n d >Sony< / b r a n d >
<model > X p e r i a Z< / model >
</ type>
<owner > J e n n i f e r < / owner >
</ device>
< d e v i c e i d = " 20 " >
<type>
< b r a n d >LG< / b r a n d >
<model >Nexus 4< / model >
</ type>
<owner > T a y l o r < / owner >
</ device>
< / sensorTypeRequest>
</ subscription>
< / queryControlSchema>
< / controlSchema>
< / xcsml>
Listing B.2: Esquema de dados descrito em X-CSML para o problema 3 do estudo de caso
1
2
3
4
5
6
7
<? xml v e r s i o n = " 1 . 0 " e n c o d i n g = "UTF−8" ? >
<xcsml>
<dataSchema>
< r e q u e s t requestID = "1">
< q u e r y C o n t r o l S c h e m a I D >1< / q u e r y C o n t r o l S c h e m a I D >
<type> multicast </ type>
< p e r i o d >onDemand< / p e r i o d >
Apêndice B
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
140
< form >
<sensorInformation>
<sensorType>audio< / sensorType>
< v a l u e >< / v a l u e >
< d a t a T y p e >< / d a t a T y p e >
< u n i t >< / u n i t >
< t i m e S t a m p >< / t i m e S t a m p >
< a c c u r a c y >< / a c c u r a c y >
</ sensorInformation>
< / form >
<deviceRequest>
< d e v i c e I D >1< / d e v i c e I D >
< d e v i c e I D >2< / d e v i c e I D >
< d e v i c e I D >3< / d e v i c e I D >
< d e v i c e I D >4< / d e v i c e I D >
< d e v i c e I D >5< / d e v i c e I D >
< d e v i c e I D >6< / d e v i c e I D >
< d e v i c e I D >7< / d e v i c e I D >
< d e v i c e I D >8< / d e v i c e I D >
< d e v i c e I D >9< / d e v i c e I D >
< d e v i c e I D >10< / d e v i c e I D >
< d e v i c e I D >11< / d e v i c e I D >
< d e v i c e I D >12< / d e v i c e I D >
< d e v i c e I D >13< / d e v i c e I D >
< d e v i c e I D >14< / d e v i c e I D >
< d e v i c e I D >15< / d e v i c e I D >
< d e v i c e I D >16< / d e v i c e I D >
< d e v i c e I D >17< / d e v i c e I D >
< d e v i c e I D >18< / d e v i c e I D >
< d e v i c e I D >19< / d e v i c e I D >
< d e v i c e I D >20< / d e v i c e I D >
</ deviceRequest>
</ request>
< / dataSchema>
< / xcsml>
Download

Uma Plataforma para CrowdSensing Móvel Dirigida por Modelos