A.1 Artigos considerados
3 PROPOSTA
3.4 Requisitos funcionais
Ao propor alguma estratégia de busca deve-se, primeiramente, delinear a estratégia de seleção, ranqueamento e recomendação. Várias abordagens são propostas, até mesmo considerando atributos de qualidade de produtores de dados, como o presente trabalho. Para citar: rede neural com backpropagation (NWE; BAO; GANG, 2014), algoritmos genéticos (YANG; LI, 2014) colônia de abelhas (YANG; LI, 2014), técnicas de filtragem colaborativa com pearson correlation (ZHAO et al., 2014; LEI et al., 2012; NIU et al., 2014; ZHENG et al., 2011), distância euclidiana (PERERA et al., 2013; ZHAO et al., 2014), AHP (YUEN; WANG, 2014) entre outros.
No entanto, diversas dessas técnicas são complexas demais e demandam muito processamento, resultando em um longo tempo de resposta. Por exemplo, algoritmos genéticos, colônia de abelhas, grafos entre outros são problemas típicos de complexidade NP. Além disso, técnicas como AHP e filtragem colaborativa exigem a interação explícita de um humano através de uma interface gráfica. Este comportamento não é desejado, uma vez que no contexto de internet das coisas são os próprios dispositivos que conversam uns com os outros, de forma autônoma.
Assim, deseja-se que o mecanismo de busca seja rápido e exija o mínimo, ou nenhuma interação explícita. Os requisitos do mecanismo de busca proposto serão discutidos a seguir.
3.4.1. [RF001] O mecanismo de busca deve considerar indicadores de qualidade como parâmetros
Prioridade: Essencial Descrição:
Como visto na Seção 2.2, os produtores de dados além de terem atributos de descrição esperados, como código identificador, nome, localização, dados do proprietário entre outros, também possuem atributos de qualidade diversos. Estes atributos devem ser considerados pelo cálculo de ranqueamento do mecanismo de busca.
A estratégia adotada foi embasada na técnica de similaridade Cosine Vector (LOPS; DE GEMMIS; SEMERARO, 2011). No entanto, há dois pontos de melhoria desta técnica em nosso contexto de aplicação.
a) A técnica cosine vector não considera o tamanho dos vetores. Vamos assumir que um dos vetores do espaço n-dimensional é o vetor ideal (vetor I). Ou seja, aquele possui o
valor máximo dentro do domínio de cada um dos eixos coordenados. Dessa forma, para um vetor ser considerado ótimo (próximo ao vetor ideal I) não basta apenas que o angulo entre eles seja o menor possível, mas também que a diferença entre a norma (comprimento) dos vetores seja a menor possível.
b) A técnica dá a mesma prioridade para os atributos informados explicitamente na requisição e os outros atributos também monitorados pelo catálogo, mas não explicitados na estratégia de busca. Ou seja, considerando que o catálogo monitora as os atributos de qualidade a1, a2, a3, a4, a5 e a6, mas a consulta realizada explicita apenas níveis de qualidade dos atributos a1 e a2, entende-se que os atributos a1 e a2 possuem uma relevância maior que os outros. No entanto, mesmo assim é desejável que os outros atributos também tenham os melhores níveis possível. Por exemplo, uma requisição solicita produtores de dados com disponibilidade acima de 95%. Sabendo que há apenas duas opções disponíveis. Opção(1): disponibilidade = 93%, tempo de resposta = 9000ms e opção(2): disponibilidade = 92%, tempo de resposta = 500ms torna a opção(2) muito mais desejável que a primeira.
Assim, tendo como base a técnica Cosine Vector e assumindo as duas lacunas apresentadas acima, sugere-se a seguinte técnica de Cosine Vector melhorada:
𝑆𝑐𝑜𝑟𝑒(𝑎) = ∑ 𝐼𝑘 𝑘𝑖. 𝑎𝑘𝑗 √∑ 𝐼𝑘𝑖2 𝑘 √∑ 𝑎𝑘 𝑘𝑗2 ∗ (𝜌 ∗‖√∑ 𝑎𝑒 2 𝑘 ‖ ‖√∑ 𝐼𝑘 𝑒2‖ ) + (1 − 𝜌) ∗ ( ‖√∑ 𝑎𝑘 𝑖2‖ ‖√∑ 𝐼𝑘 𝑖2‖ ) 𝑆𝑐𝑜𝑟𝑒(𝑎) = cos (𝐼, 𝑎) ∗ (𝜌 ∗‖𝑎𝑒‖ 𝐼𝑒 ) + (1 − 𝜌) ∗‖𝑎𝑖‖ 𝐼𝑖 Em que: I é o vetor ideal;
a é o vetor que se deseja ranquear;
||ae|| é a norma do subvetor de a formado apenas pelos atributos de qualidade explícitos na requisição;
||ai|| é a norma do subvetor de a formado apenas pelos atributos de qualidade implícitos na requisição;
||Ie|| é a norma do subvetor de I formado apenas pelos atributos de qualidade explícitos na requisição;
||Ii|| é a norma do subvetor de I formado apenas pelos atributos de qualidade implícitos na requisição;
ρ é um fator de ponderação. A escolha do nível deste parâmetro é descrita na Seção 6.2; Como discutido na Seção 2.2, várias métricas de qualidade (de serviço, contexto ou dispositivo) são propostas na literatura. Além da lista de métricas discutidas naquela Seção, há também as métricas de qualidade apresentadas a seguir, na Tabela 3.1, que podem ser consideradas na Equação 3.1 proposta.
Tabela 3.1: Métricas de qualidade
Nome Descrição
Acurácia
Acurácia (Accuracy) mede o quão próximo um dado observado está do valor real. Esta métrica é diretamente positiva e está totalmente relacionada às capacidades físicas do dispositivo que realizou a observação. Assim, geralmente é informada pelas especificações técnicas do fabricante (GRAY; SALBER, 2001; JUDD; STEENKISTE, 2003).
Disponibilidade
Disponibilidade (availability) mede qual a parte do tempo que o serviço está disponível. Seu cálculo é dado pela seguinte fórmula:
Disponibilidade = 1 - TaxaDeErro = Uptime
TaxaDeErro é a porcentagem de requisições que são enviadas mas não são respondidas
por qualquer falha do servidor. Dessa forma, Disponibilidade e uma métrica dada em porcentagem.
Outra forma mais elaborada de se calcular disponibilidade é dada pela seguinte fórmula:
𝑀𝑇𝑇𝐹 𝑀𝑇𝑇𝐹 + 𝑀𝑇𝑇𝑅
Em que: MTTF é o tempo médio entre falhas e MTTR é o tempo médio para reparo das falhas. Para este trabalho foi considerada a expressão 3.2
Memória
Memória disponível informa quanto de memória o dispositivo tem disponível para uso. Sua importância está no fato de quem um dispositivo sobrecarregado aumenta seu tempo de resposta ou até mesmo se torna incapaz de responder a novas requisições. Geralmente é dado em kilobytes, megabytes ou gigabytes.
Largura de Banda
Largura de Banda é a taxa de transferência de dados por segundo. Geralmente é dado em bits por segundo (bits/s).
Nível de bateria Nível de bateria informa qual o a carga atual de energia na bateria do dispositivo. Normalmente o nível é dado em porcentagem.
(3.2)
Custo
Esta métrica informa o custo de consumo do dado produzido. Alguns trabalhos sugerem outros custos, como custo de produção do dado ou custo de transmissão do dado. No entanto, para este trabalho, resumiu-se ao custo final de acesso ao dado, que é o custo de interesse à aplicação consumidora.
Frequência
Frequência informa qual o intervalo de tempo médio entre duas produções de dados sequenciais e pode ser dado pela seguinte fórmula:
Frequencia(t) = qtdeMedicoes ∗ Frequencia(t − 1) + tempoMedicao qtdeMedicoes + 1
Em que: Frequencia(t) é a frequência atual, Frequencia(t-1) é a frequência calculada pela última vez, qtdeMedicoes é a quantidade de produção de dados realizada até o momento e tempoMedicao é o intervalo de tempo entre a produção de dado atual e a última realizada.
Confiabilidade
Confiabilidade é a confiança que os consumidores possuem sobre esta fonte de dado. Muito semelhante a probability of correctness, no entanto, esta métrica quantifica a confiança na entidade que proveu o elemento contextual e não o elemento propriamente dito (BUCHHOLZ; KÜPPER; SCHIFFERS (2003); XU; CHEUNG (2005); KAHN; STRONG; WANG, (2002)) Geralmente é dada por avaliações. Neste trabalho foi considerada como um elemento presente no perfil da fonte de dado.
Resolução
Resolução mede a abrangência da observação feita pelo dispositivo. Ou seja, resolução se refere à granularidade da informação BUCHHOLZ; KÜPPER; SCHIFFERS (2003).
Tempo de Resposta
Tempo de resposta informa o tempo médio entre o envio de uma solicitação e o recebimento da resposta.
TR(t) = qtdeMedicoes ∗ TR(t − 1) + tempoVerificado qtdeMedicoes + 1
Em que: TR(t) é o tempo de resposta médio que se deseja atualizar, TR(t-1) é o tempo médio de resposta até o momento, qtdeMedicoes é a quantidade de medições recebidas até o momento e tempoVerificado é o tempo de resposta verificado na medição atual.
Vazão
É a quantidade de produção de dados por unidade de tempo. Por ter uma relação indireta com Frequência, pode ser calculado por:
𝑉𝑎𝑧𝑎𝑜 = unidadeDeTempo Frequencia
Dessa forma, Vazão é dada por produção por minuto (ou qualquer unidade de tempo conveniente).
(3.4)
(3.5)
Atualidade
Atualidade (ou Up to Dateness) é o tempo que passa desde o momento em que o dado foi produzido até o momento em que ele é requisitado. Ou seja, é relacionado à idade do dado.
Atualidade = momentoAtual - momentoDaProducaoDoDado
Assim, Atualidade é dado em unidades de tempo.
3.4.2. [RF002] O mecanismo de busca deve implementar uma heurística para otimizar as operações de busca.
Prioridade: Essencial Descrição:
Assumindo que a quantidade de produtores de dados registrados possa ser excessivamente grande, o mecanismo de busca pode implementar heurísticas para lidar com o trabalho do recálculo de ranqueamento a cada consulta submetida ao catálogo. De fato, no modelo tradicional de busca o Waldo faria sempre o mesmo trabalho a cada consulta: buscar, ranquear e entregar.
LUNARDI et al. (2015) mostra que existem duas formas de busca, no nosso caso, busca de produtores de dados: ou por consultas realizadas por iniciativa do consumidor, ou utilizando o padrão publish/subscribe, através do qual o consumidor é notificado a cada atualização (novo resultado disponível). A estratégia implementada no Waldo, neste trabalho chamada de Fila Dinâmica, é um híbrido dessas duas opções.
Figura 3.2: Ilustração da Fila dinâmica
Fonte: Elaborado pelo Autor
Como ilustrado na Figura 3.2, uma vez que uma nova requisição é submetida, os resultados são entregues ao consumidor, uma fila é criada no catálogo e preenchida com os mesmos resultados. Então, quando o consumidor executa sua próxima requisição, o processo de busca e ranqueamento não é executado, mas são entregues os resultados presentes nesta fila.
No entanto, como foi discutido em seções anteriores, os produtores de dados são autônomos e tem característica dinâmica, podendo alterar seus atributos de qualidade ou deixar de responder a critérios da requisição como, por exemplo, estar a uma distância máxima de 200 metros da coordenada geográfica (-8.053745,-34.884442). Nesse caso, de tempo em tempo é verificado se os resultados presentas na fila dinâmica ainda satisfazem os critérios da requisição inicial. Se o resultado não satisfaz então é excluído da fila dinâmica. Se satisfaz, mesmo que os níveis de qualidade ou outras restrições tenham diminuído o resultado permanece na fila.
Na situação ilustrada pela Figura 3.2, as setas azuis representam os níveis de qualidade especificados na requisição do consumidor. Percebe-se que o consumidor explicitou níveis de qualidade apenas para os atributos de qualidade a1 e a3. O primeiro resultado da fila atende aos critérios. No entanto, o segundo resultado da fila deixou de atender o nível especificado para o atributo 3. Portanto, o resultado 2 é excluído da fila dinâmica e deixa de ser recomendado como resultado ao consumidor.
À medida que os produtores de dados na fila dinâmica deixam de atender aos requisitos e vão sendo excluídos a fila vai sendo reduzida e, eventualmente, pode deixar de atender satisfatoriamente a consulta inicial. Nesse momento a consulta é reenviada e a fila é novamente populada com novos resultados.