Uma proposta de framework para facilitar o desenvolvimento ......Uma proposta de framework para...

96

Transcript of Uma proposta de framework para facilitar o desenvolvimento ......Uma proposta de framework para...

Page 1: Uma proposta de framework para facilitar o desenvolvimento ......Uma proposta de framework para facilitar o desenvolvimento de aplicações baseadas em IoT / Dannylo Johnathan Bernardino

Universidade Federal do Rio Grande do Norte

Centro de Ciências Exatas e da Terra

Departmento de Informática e Matemática Aplicada

Programa de Pós-Graduação em Sistemas e Computação

Mestrado Acadêmico em Sistemas e Computação

Uma proposta de framework para facilitar o

desenvolvimento de aplicações baseadas em

IoT

Dannylo Johnathan Bernardino Egídio

Natal Julho, 2018

Page 2: Uma proposta de framework para facilitar o desenvolvimento ......Uma proposta de framework para facilitar o desenvolvimento de aplicações baseadas em IoT / Dannylo Johnathan Bernardino

Dannylo Johnathan Bernardino Egídio

Uma proposta de framework para facilitar o

desenvolvimento de aplicações baseadas em IoT

Dissertação de Mestrado apresentada ao Pro-grama de Pós-Graduação em Sistemas eComputação do Departamento de Informá-tica e Matemática Aplicada da UniversidadeFederal do Rio Grande do Norte como re-quisito parcial para a obtenção do grau deMestre em Sistemas e Computação.

Linha de pesquisa: Engenharia de Software

Orientador

Prof. Dr. Gibeon Soares de Aquino Junior

PPgSC � Programa de Pós-Graduação em Sistemas e Computação

DIMAp � Departamento de Informática e Matemática Aplicada

CCET � Centro de Ciências Exatas e da Terra

UFRN � Universidade Federal do Rio Grande do Norte

Natal

Julho, 2018

Page 3: Uma proposta de framework para facilitar o desenvolvimento ......Uma proposta de framework para facilitar o desenvolvimento de aplicações baseadas em IoT / Dannylo Johnathan Bernardino

Egídio, Dannylo Johnathan Bernardino. Uma proposta de framework para facilitar o desenvolvimento deaplicações baseadas em IoT / Dannylo Johnathan BernardinoEgídio. - 2018. 94f.: il.

Dissertação (Mestrado) - Universidade Federal do Rio Grandedo Norte, Departamento de Informática e Matemática Aplicada(DIMAP), Programa de Pós-graduação em Sistemas e Computação(PPgSC), Natal, 2018. Orientador: Dr. Gibeon Soares de Aquino Júnior.

1. Virtualização - Dissertação. 2. Internet das Coisas -Dissertação. 3. Framework - Dissertação. I. Aquino Júnior,Gibeon Soares de. II. Título.

RN/UF/BCZM CDU 004.43-021.131

Universidade Federal do Rio Grande do Norte - UFRNSistema de Bibliotecas - SISBI

Catalogação de Publicação na Fonte. UFRN - Biblioteca Central Zila Mamede

Elaborado por RAIMUNDO MUNIZ DE OLIVEIRA - CRB-15/429

Page 4: Uma proposta de framework para facilitar o desenvolvimento ......Uma proposta de framework para facilitar o desenvolvimento de aplicações baseadas em IoT / Dannylo Johnathan Bernardino
Page 5: Uma proposta de framework para facilitar o desenvolvimento ......Uma proposta de framework para facilitar o desenvolvimento de aplicações baseadas em IoT / Dannylo Johnathan Bernardino

Dedico este trabalho à minha esposa Francielly Luanne, inspiração de vida, e grande

motivadora desta vitória.

Page 6: Uma proposta de framework para facilitar o desenvolvimento ......Uma proposta de framework para facilitar o desenvolvimento de aplicações baseadas em IoT / Dannylo Johnathan Bernardino

Agradecimentos

Agradeço inicialmente ao pai celestial, por ter me abençoado e protegido durante toda

esta caminhada.

A minha amada esposa Francielly Luanne que durante todo o Mestrado tem sido for-

taleza em minhas aspirações, e pacientemente tem aguentado meus estresses e frustrações

que foram reincidentes durante esta formação.

A meus pais, Vanderlei e Isabel, pelo exemplo que representam em minha vida e por

todo o incentivo e amor dedicados a mim desde meu nascimento até agora, esta vitória

jamais seria possível sem o amparo, exemplo e dedicação deles.

A meu orientador Gibeon Aquino, pelos ensinamentos e conselhos em minha formação

acadêmica, e por ser um exemplo de pro�ssional e humano na qual posso me espelhar.

Ao meu orientador da graduação e amigo Héldon José, por ter me motivado desde a

graduação a subir mais um degrau na escada do conhecimento e vir fazer este mestrado.

A meus amigos do LabCoMU, pelos conselhos, aprendizados, felicidades e frustrações

compartilhadas durante este tempo.

Aos amigos Thiago e Bruno, pelas revisões e dicas na produção deste trabalho.

Aos amigos Romerito, Sidney, Paulenne e Diego, por terem me acolhido em minha

chegada à Natal e pela amizade que foi dedicada a minha pessoa.

E a todos, que de forma direta ou indireta, puderam contribuir nesta caminhada e na

realização deste sonho.

Page 7: Uma proposta de framework para facilitar o desenvolvimento ......Uma proposta de framework para facilitar o desenvolvimento de aplicações baseadas em IoT / Dannylo Johnathan Bernardino

"O fardo é proporcional às forças, como a recompensa será proporcional à resignação e

à coragem."

Allan Kardec

Page 8: Uma proposta de framework para facilitar o desenvolvimento ......Uma proposta de framework para facilitar o desenvolvimento de aplicações baseadas em IoT / Dannylo Johnathan Bernardino

Uma proposta de framework para facilitar odesenvolvimento de aplicações baseadas em IoT

Autor: Dannylo Johnathan Bernardino Egídio

Orientador(a): Prof. Dr. Gibeon Soares de Aquino Junior

Resumo

Os últimos anos têm sido marcados por um crescente avanço na computação embarcada,

tecnologias de sensoriamento e dispositivos conectados. Tal avanço impactou de maneira

expressiva em paradigmas inovadores, tais como o de Internet das Coisas (IoT) que acre-

dita que objetos inteligentes capazes de se conectarem na rede poderão cooperar entre si

para alcançar um objetivo comum. Tal crescimento alavancou iniciativas de fornecedores

em produzir protocolos e padrões de comunicação que viabilizassem essa cooperação. No

entanto, a diversidade considerável de dispositivos e consequentemente de protocolos que

surgiram, acabaram por di�cultar esse processo. Inúmeros desa�os foram surgindo, den-

tre eles a heterogeneidade e a interoperabilidade. Esses desa�os tornaram o processo de

desenvolvimento das aplicações IoT uma tarefa complexa e custosa, pois as capacidades

destes protocolos e padrões voltadas à descoberta dos dispositivos na rede, comunicação

entre eles, entre outras, tornaram-se bastante especí�cas para cada dispositivo, obrigando

o desenvolvedor a criar estratégias de integração complexas para lidar com essa limita-

ção. Desta forma, este trabalho propõe um framework que buscará facilitar o processo de

desenvolvimento de aplicações IoT através da virtualização de dispositivos, de maneira

que, aspectos heterogêneos ligados aos dispositivos serão abstraídos por esta virtualização

e operações comuns dos protocolos tais como descoberta de dispositivos e comunicação

com estes serão abstraídos através de uma interface comum entre eles, integrando-os e

diminuindo os impactos das características heterogêneas.

Palavras-chave: Internet das Coisas, Framework, Simpli�cação, Desenvolvimento, Aplica-

ção, Virtualização.

Page 9: Uma proposta de framework para facilitar o desenvolvimento ......Uma proposta de framework para facilitar o desenvolvimento de aplicações baseadas em IoT / Dannylo Johnathan Bernardino

A framework proposal to facilitate the development ofIoT-based applications

Author: Dannylo Johnathan Bernardino Egídio

Supervisor: Prof. Dr. Gibeon Soares de Aquino Junior

Abstract

Recent years have been marked by a growing advance in embedded computing, sensoring

technologies and connected devices. Such advance had a signi�cant impact on innovative

paradigms such as the Internet of Things (IoT), which believes that intelligent objects ca-

pable of connecting in the network can cooperate among each other to achieve a common

goal. Such growth has motivated supplier initiatives to produce protocols and communi-

cation standards that would enable such cooperation. However, the considerable diversity

of devices and consequently protocols that have emerged have made this process di�cult,

creating numerous challenges, including heterogeneity and interoperability. These chal-

lenges have made the IoT application development process a complex and costly task,

since the capabilities of these protocols and standards aimed at discovering the devices

on the network, communication among them, have become quite speci�c for each device,

forcing the developer to create complex integration strategies to deal with this limitation.

In this way, this work proposes a framework that seeks to facilitate the process of deve-

lopment of IoT applications through device virtualization, so that heterogeneous aspects

connected to devices will be abstracted by this virtualization, and common operations of

protocols such as discovery of devices and communication with them will be abstracted

through a common interface between them, integrating them and reducing the impacts

of the heterogeneous characteristics.

Keywords : Internet of Things, Framework, Simplifcation, Development, Application, Vir-

tualization.

Page 10: Uma proposta de framework para facilitar o desenvolvimento ......Uma proposta de framework para facilitar o desenvolvimento de aplicações baseadas em IoT / Dannylo Johnathan Bernardino

Lista de �guras

1 Etapas da Metodologia . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 19

2 Paradigma de IoT como sendo o resultado da convergência de três visões

(ATZORI; IERA; MORABITO, 2010) . . . . . . . . . . . . . . . . . . . . . p. 22

3 Modelo arquitetural genérico para IoT (KHAN et al., 2012) . . . . . . . . p. 23

4 Camada de mensagens do CoAP(SHELBY; HARTKE; BORMANN, 2014) . p. 27

5 Implementação proposta para interoperabilidade entre HTTP e CoAP.(BORMANN;

CASTELLANI; SHELBY, 2012) . . . . . . . . . . . . . . . . . . . . . . . . p. 27

6 Fluxo de funcionamento básico do UPnP.(ARUNACHALAM; GANAPATHY,

2016) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 29

7 Fontes de Dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 34

8 Veículos de Publicação . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 35

9 Número de publicações por ano . . . . . . . . . . . . . . . . . . . . . . p. 35

10 Tipos de soluções encontradas . . . . . . . . . . . . . . . . . . . . . . . p. 36

11 Abordagens mais utilizadas . . . . . . . . . . . . . . . . . . . . . . . . p. 37

12 Requisitos atingidos pelas propostas . . . . . . . . . . . . . . . . . . . . p. 38

13 Objetivos das soluções encontradas . . . . . . . . . . . . . . . . . . . . p. 40

14 Aplicação IoT lidando com a heterogeneidade de Dispositivos. . . . . . p. 46

15 Aplicação IoT utilizando o framework para simpli�car o desenvolvimento. p. 47

16 Visão geral da Arquitetura . . . . . . . . . . . . . . . . . . . . . . . . . p. 48

17 Estrutura do dispositivo virtual. . . . . . . . . . . . . . . . . . . . . . . p. 50

18 Funcionamento do Tradutor Proxy. . . . . . . . . . . . . . . . . . . . . p. 53

19 Estrutura de comunicação entre os dispositivos. . . . . . . . . . . . . . p. 55

Page 11: Uma proposta de framework para facilitar o desenvolvimento ......Uma proposta de framework para facilitar o desenvolvimento de aplicações baseadas em IoT / Dannylo Johnathan Bernardino

20 Estrutura operacional do Framework . . . . . . . . . . . . . . . . . . . p. 57

21 Diagrama de Classes da estrutura do Framework . . . . . . . . . . . . . p. 58

22 Con�guração do con�g.properties para de�nir proxies externos ao fra-

mework. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 60

23 Instanciação do Framework. . . . . . . . . . . . . . . . . . . . . . . . . p. 61

24 Sequência de funcionamento do Proxy UPnP. . . . . . . . . . . . . . . p. 63

25 Sequência de funcionamento do Proxy Bluetooth. . . . . . . . . . . . . p. 64

26 Cenário do experimento utilizado como objeto de estudo. . . . . . . . . p. 67

27 Aplicativo Android representando um Termostato Bluetooth. . . . . . . p. 69

28 Aplicação cliente desenvolvida na plataforma Android. . . . . . . . . . p. 70

29 Funcionamento geral da aplicação cliente com o framework. . . . . . . . p. 71

30 Código utilizado para a instanciação do framework e descoberta dos dis-

positivos na aplicação cliente. . . . . . . . . . . . . . . . . . . . . . . . p. 71

31 Código necessário para a veri�cação do estado dos dispositivos e modi�-

cação do estado do termostato. . . . . . . . . . . . . . . . . . . . . . . p. 72

32 Log registrando a alteração bem-sucedida do estado do termostato. . . p. 72

33 LOC por classe mensuradas no experimento do Estudo de Caso. . . . . p. 74

34 Comparativo da Complexidade Ciclomática das aplicações IoT. . . . . p. 75

35 LOC para aplicação envolvendo 10 sensores e um atuador. . . . . . . . p. 76

36 Comparativo da complexidade ciclomática para a aplicação com 10 sen-

sores e dois termostatos. . . . . . . . . . . . . . . . . . . . . . . . . . . p. 77

Page 12: Uma proposta de framework para facilitar o desenvolvimento ......Uma proposta de framework para facilitar o desenvolvimento de aplicações baseadas em IoT / Dannylo Johnathan Bernardino

Lista de tabelas

1 Repositórios de Busca . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 32

2 Iteração de Leituras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 33

3 Serviços utilitários fornecidos pelo núcleo do framework. . . . . . . . . . p. 65

4 Linhas de Código (LOC) extraídas das classes do caso de teste (um sensor

e um termostato). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 73

5 Linhas de Código (LOC) extraídas das classes do caso de teste (dez

sensores e dois termostatos). . . . . . . . . . . . . . . . . . . . . . . . . p. 74

Page 13: Uma proposta de framework para facilitar o desenvolvimento ......Uma proposta de framework para facilitar o desenvolvimento de aplicações baseadas em IoT / Dannylo Johnathan Bernardino

Lista de abreviaturas e siglas

IoT � Internet of Things

QoS � Quality of Service

SoA � Service-oriented architecture

CoAP � Constrained Application Protocol

REST � Representational State Transfer

URI � Uniform Resource Identi�er

HTTP � Hypertext Transfer Protocol

M2M - Machine-to-Machine

UDP � User Datagram Protocol

UPnP � Universal Plug and Play

XML � eXtensible Markup Language

URL � Uniform Resource Locator

IEEE � Institute of Electrical and Electronic Engineers

API � Application Programing Interface

JSON � JavaScript Object Notation"

WMC � Weighted Methods per Class

CCN � Cyclomatic Complexity Number

LOC � Lines of Code

MQTT � Message Queuing Telemetry Transport

SOAP � Simple Object Access Protocol

Page 14: Uma proposta de framework para facilitar o desenvolvimento ......Uma proposta de framework para facilitar o desenvolvimento de aplicações baseadas em IoT / Dannylo Johnathan Bernardino

Lista de Listagens

4.1 Iniciação do framework e descoberta de dispositivos . . . . . . . . . . . p. 61

4.2 Solicitando dados dos dispositivos virtuais . . . . . . . . . . . . . . . . p. 61

4.3 Enviando dados para os dispositivos virtuais . . . . . . . . . . . . . . . p. 61

4.4 Componentes necessários para a de�nição de um novo proxy na camada

Proxy Translate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 62

Page 15: Uma proposta de framework para facilitar o desenvolvimento ......Uma proposta de framework para facilitar o desenvolvimento de aplicações baseadas em IoT / Dannylo Johnathan Bernardino

Sumário

1 Introdução p. 17

1.1 Motivação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 17

1.2 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 19

1.3 Metodologia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 19

1.4 Organização do trabalho . . . . . . . . . . . . . . . . . . . . . . . . . . p. 20

2 Fundamentação Teórica p. 21

2.1 Internet das Coisas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 21

2.1.1 Visões . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 22

2.1.2 Modelo Arquitetural . . . . . . . . . . . . . . . . . . . . . . . . p. 23

2.1.3 Tecnologias envolvidas . . . . . . . . . . . . . . . . . . . . . . . p. 25

2.2 Constrained Application Protocol . . . . . . . . . . . . . . . . . . . . . p. 26

2.3 Universal Plug and Play . . . . . . . . . . . . . . . . . . . . . . . . . . p. 28

2.4 Bluetooth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 30

3 Revisão do Estado da Arte p. 31

3.1 Metodologia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 31

3.1.1 Planejamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 32

3.1.2 String de Busca . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 32

3.1.3 Fontes de Busca . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 32

3.1.4 Execução da Revisão . . . . . . . . . . . . . . . . . . . . . . . . p. 33

3.1.5 Processo de Seleção . . . . . . . . . . . . . . . . . . . . . . . . . p. 33

Page 16: Uma proposta de framework para facilitar o desenvolvimento ......Uma proposta de framework para facilitar o desenvolvimento de aplicações baseadas em IoT / Dannylo Johnathan Bernardino

3.1.6 Extração dos Resultados . . . . . . . . . . . . . . . . . . . . . . p. 34

3.2 Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 34

3.2.1 Análise da QP1 . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 35

3.2.2 Análise da QP2 . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 37

3.2.3 Análise da QP3 . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 39

3.3 Discussões . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 40

4 Um framework para facilitar o desenvolvimento de aplicações base-

adas em IoT p. 44

4.1 Cenário de Exemplo: Controle de temperatura . . . . . . . . . . . . . . p. 45

4.2 Arquitetura Proposta . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 48

4.2.1 Visão Geral . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 48

4.2.2 Dispositivo Virtual . . . . . . . . . . . . . . . . . . . . . . . . . p. 49

4.2.2.1 Componentes de De�nição . . . . . . . . . . . . . . . . p. 50

4.2.2.2 Componentes de Comunicação . . . . . . . . . . . . . p. 51

4.2.3 Gerenciador de Dispositivos . . . . . . . . . . . . . . . . . . . . p. 52

4.2.4 Servidor CoAP . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 52

4.2.5 Módulo Health . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 52

4.2.6 Tradutor Proxy . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 53

4.3 Comunicação entre Dispositivos Virtuais . . . . . . . . . . . . . . . . . p. 54

4.4 Operacionalização da Solução . . . . . . . . . . . . . . . . . . . . . . . p. 56

4.5 Desenvolvimento da Solução . . . . . . . . . . . . . . . . . . . . . . . . p. 57

4.5.1 Estrutura da Solução . . . . . . . . . . . . . . . . . . . . . . . . p. 57

4.5.2 Instanciação do Framework . . . . . . . . . . . . . . . . . . . . p. 60

4.5.3 Núcleo e Pontos de Extensão . . . . . . . . . . . . . . . . . . . . p. 62

4.5.3.1 Adicionando novos Proxies . . . . . . . . . . . . . . . . p. 62

4.5.3.2 O Núcleo . . . . . . . . . . . . . . . . . . . . . . . . . p. 64

Page 17: Uma proposta de framework para facilitar o desenvolvimento ......Uma proposta de framework para facilitar o desenvolvimento de aplicações baseadas em IoT / Dannylo Johnathan Bernardino

5 Avaliação do Framework p. 66

5.1 Prova de Conceito . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 66

5.1.1 Planejamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 66

5.1.1.1 Questões de Pesquisa . . . . . . . . . . . . . . . . . . . p. 66

5.1.1.2 Sujeitos . . . . . . . . . . . . . . . . . . . . . . . . . . p. 67

5.1.1.3 Objeto . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 67

5.1.1.4 Unidades de análise . . . . . . . . . . . . . . . . . . . p. 68

5.1.1.5 Coleta de Dados . . . . . . . . . . . . . . . . . . . . . p. 68

5.1.2 Execução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 68

5.1.2.1 A aplicação . . . . . . . . . . . . . . . . . . . . . . . . p. 68

5.1.2.2 A coleta e análise dos dados . . . . . . . . . . . . . . . p. 73

5.1.3 Respostas às questões de pesquisa . . . . . . . . . . . . . . . . . p. 74

5.1.3.1 Qual o impacto do uso do framework em uma aplicação

IoT quanto à diminuição do esforço de codi�cação de

seu desenvolvimento? . . . . . . . . . . . . . . . . . . . p. 74

5.1.3.2 Questão de pesquisa 2: Qual o impacto que pode haver

no aumento da quantidade de dispositivos envolvidos na

aplicação no tocante à complexidade de codi�cação da

aplicação que utiliza o framework? . . . . . . . . . . . p. 76

5.1.4 Ameaças à Validade . . . . . . . . . . . . . . . . . . . . . . . . p. 77

6 Trabalhos Relacionados p. 79

6.1 Modelos de representação de Dispositivos . . . . . . . . . . . . . . . . . p. 79

6.2 Dispositivos abstraídos como Serviços . . . . . . . . . . . . . . . . . . . p. 81

7 Considerações Finais p. 83

7.1 Retrospectiva e conclusões do trabalho . . . . . . . . . . . . . . . . . . p. 83

7.2 Contribuições . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 85

7.3 Trabalhos Futuros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 85

Page 18: Uma proposta de framework para facilitar o desenvolvimento ......Uma proposta de framework para facilitar o desenvolvimento de aplicações baseadas em IoT / Dannylo Johnathan Bernardino

Referências p. 87

8 Apêndice A p. 92

Page 19: Uma proposta de framework para facilitar o desenvolvimento ......Uma proposta de framework para facilitar o desenvolvimento de aplicações baseadas em IoT / Dannylo Johnathan Bernardino

17

1 Introdução

Este capítulo tem a �nalidade de descrever em termos gerais a proposta desta pesquisa,

descrevendo os fatores motivadores na Seção 1.1, objetivos gerais e especí�cos pretendidos

na Seção 1.2, a metodologia utilizada para se atingir os objetivos na Seção 1.3, e por �m,

como o trabalho está estruturado na Seção 1.4.

1.1 Motivação

Os últimos anos têm sido marcados por um crescente avanço na computação embar-

cada, tecnologias de sensoriamento e dispositivos inteligentes sendo amplamente distribuí-

dos no mercado. Algumas previsões recentes estimam cerca de 29 bilhões de dispositivos

conectados até 2022 (MEHTA et al., 2017). Este expressivo surgimento de tecnologias mi-

niaturizadas inteligentes e conectadas tem propiciado o desenvolvimento de uma série de

serviços úteis e importantes para as pessoas.

Tal avanço impactou de maneira signi�cativa em conceitos inovadores, como o conceito

de Internet da Coisas (IoT ), que preconiza que objetos inteligentes, tidos como "coisas",

podem cooperar entre si através da internet para alcançar um objetivo comum (PATEL;

CASSOU, 2015). O conceito de IoT ganhou combustível neste cenário e consequentemente

o interesse da indústria e mercado em basear os novos serviços e aplicações oferecidas

em seus princípios (DATTA; BONNET, 2016). Desta forma, ecossistemas inteligentes têm

sido sugeridos para inúmeros contextos, tais como casas inteligentes, cidades inteligentes,

fazendas inteligentes, fábricas inteligentes, entre outros (YEN et al., 2017).

Porém, as tecnologias utilizadas por estas aplicações são portadoras de limitações

críticas que são cruciais para a concretização dos conceitos de IoT, dentre elas estão a

heterogeneidade e interoperabilidade entre dispositivos e padrões, sendo considerado um

dos maiores desa�os de IoT (TAYUR; SUCHITHRA, 2017), as restrições de recursos, que in-

cluem capacidade computacional, memória e armazenamento dos objetos constituintes da

Page 20: Uma proposta de framework para facilitar o desenvolvimento ......Uma proposta de framework para facilitar o desenvolvimento de aplicações baseadas em IoT / Dannylo Johnathan Bernardino

18

aplicação (CARRANZA-GARCÍA et al., 2016), entre outras limitações em nível de hardware

que de alguma maneira constituem obstáculos para o avanço efetivo do conceito de IoT.

Ademais, a própria variedade de dispositivos existentes nos leva a compreender o

processo de desenvolvimento de aplicações IoT como algo complexo e custoso (PATEL;

CASSOU, 2015). Essa variedade de dispositivos implicam em várias formas de representa-

ção de dados, múltiplos protocolos de comunicação (SASIREKHA; SWAMYNATHAN, 2016),

uma variedade de implementações de serviços em nível de software especí�cas para cada

dispositivo (ASHRAF et al., 2016). Deste modo, abordagens diferentes podem ser sugeridas

para cada dispositivo especí�co.

Compreendendo as limitações voltadas ao vasto número de dispositivos diferentes exis-

tentes, torna-se interessante o uso da habilidade de descoberta de dispositivos. Essa habi-

lidade representa um princípio de projeto orientado a serviços capaz de tornar os serviços

identi�cáveis na rede através de meta-dados disponibilizados pelos mesmos facilitando a

colaboração entre eles (JARA et al., 2014). Tal modelo é muito adotado por aplicações IoT

que planejam facilitar o uso dos dispositivos envolvidos na aplicação (DATTA; BONNET,

2016) .

Observando todos os aspectos que tornam os dispositivos e seus serviços heterogêneos

e de baixa interoperabilidade, padrões foram sendo sugeridos por muitos consórcios de

fornecedores. No entanto, estes padrões apenas solucionam questões de interoperabilidade

para o conjunto de dispositivos que atendem, provendo mecanismos de registro, descoberta

e comunicação. Contudo, estes padrões geralmente costumam ser incompatíveis entre

si (TAYUR; SUCHITHRA, 2017). Sendo assim, o processo de descoberta e comunicação

envolvendo múltiplos padrões e protocolos em uma aplicação acabam por se tornarem

complexos de trabalharem em conjunto.

Desta forma, é perceptível a necessidade de soluções que busquem integrar as ca-

pacidades de protocolos heterogêneos, abstraindo as diferenças existentes entre eles e

viabilizando a simpli�cação do desenvolvimento de aplicações baseadas em IoT. Para tal,

acreditamos ser importante buscar uma abordagem orientada à virtualização de disposi-

tivos que os representará de maneira uniforme e permitirá o acesso direto às operações e

recursos disponibilizados por estes (SILVA et al., 2016; FERRERA et al., 2017). Neste con-

texto, aspectos heterogêneos e capacidades individuais dos mesmos �cam abstraídos do

ponto de vista do desenvolvedor.

Sendo assim, este trabalho de dissertação baseia-se na hipótese de que a de�nição

de um modelo homogêneo de representação de "coisas", através da virtualização, auxilia

Page 21: Uma proposta de framework para facilitar o desenvolvimento ......Uma proposta de framework para facilitar o desenvolvimento de aplicações baseadas em IoT / Dannylo Johnathan Bernardino

19

na simpli�cação do desenvolvimento de aplicações baseadas em IoT. As especi�cidades

funcionais e técnicas, que podem ser heterogêneas, seriam abstraídas por este modelo de

representação.

1.2 Objetivos

Este trabalho tem como objetivo geral o desenvolvimento de um framework que visa

facilitar o desenvolvimento de aplicações baseadas em IoT, abstraindo e uniformizando

capacidades heterogêneas voltadas à protocolos de comunicação tais como mecanismos de

descoberta e colaboração entre dispositivos. A abordagem buscará tratar os dispositivos

da aplicação de maneira uniforme, propiciando recursos para a representação virtualizada

dos mesmos. Desta forma, os objetivos especí�cos pretendidos são os seguintes:

• Mapear os requisitos, limitações e abordagens mais comuns levantados em soluções

do estado da arte que objetivem a simpli�cação do desenvolvimento de aplicações

IoT.

• Implementar uma solução que viabilize a simpli�cação do desenvolvimento de apli-

cações IoT a partir da abstração e virtualização de dispositivos.

• Avaliar sob o ponto de vista da facilidade de desenvolvimento a solução desenvolvida,

utilizando-se de métricas que possam validar tal aspecto.

1.3 Metodologia

Esta seção descreve as etapas da metodologia (Vide Figura 1) que foram seguidas para

esta dissertação, dividindo-se em três etapas: Revisão Literária, Projeto e Implementação

do Framework e Avaliação.

Figura 1: Etapas da Metodologia

A primeira etapa consiste de um processo de pesquisa exploratória. Nessa etapa foi

de�nida uma string de busca com o objetivo de encontrar trabalhos relacionados à ferra-

mentas de software especializadas em simpli�car o processo de desenvolvimento de apli-

cações IoT. A string foi executada no repositório Scopus da Elsevier pelo fato do mesmo

Page 22: Uma proposta de framework para facilitar o desenvolvimento ......Uma proposta de framework para facilitar o desenvolvimento de aplicações baseadas em IoT / Dannylo Johnathan Bernardino

20

indexar os principais e mais relevantes repositórios da engenharia e computação. Os re-

sultados foram então analisados. Toda a Metodologia é descrita em maiores detalhes no

Capítulo 3.

A etapa seguinte, concentra-se no projeto e desenvolvimento do framework na qual

essa dissertação tem como objetivo. Nesta etapa, a arquitetura do framework e seus com-

ponentes constituintes são projetados de modo a embasar detalhes mais técnicos do seu

desenvolvimento. Por �m, foi desenvolvida a solução utilizando a arquitetura mencionada.

Os detalhes inerentes a esse processo estão descritos no capítulo 4.

O último passo, o de Avaliação, trata-se de uma prova de conceito cujo objetivo é obter

resultados que possam avaliar sob o ponto de vista da facilidade de desenvolvimento o

framework proposto.

1.4 Organização do trabalho

O restante desse trabalho encontra-se organizado da seguinte forma:

• O capítulo 2 expõe a fundamentação teórica contendo os conceitos necessários ao

entendimento deste trabalho;

• O capítulo 3 apresenta a revisão do estado da arte realizada neste trabalho. Tal

revisão tem o objetivo de conhecer de maneira mais aprofundada as ferramentas

associadas à simpli�cação do desenvolvimento de aplicações IoT e alguns detalhes

relacionados a estas considerados importantes.

• O capítulo 4 expõe o framework proposto por este trabalho, cujo objetivo será de

simpli�car o desenvolvimento de aplicações baseadas em IoT.

• O capítulo 5, trata sobre a avaliação do framework proposto neste trabalho, e tal

avaliação se deu a partir de uma prova de conceito.

• O capítulo 6 expõe resumidamente os trabalhos relacionados ao proposto por essa

pesquisa.

• O capítulo 7 discorre sobre considerações �nais deste trabalho, as principais contri-

buições do mesmo e os trabalhos futuros propostos pelo autor desta pesquisa.

Page 23: Uma proposta de framework para facilitar o desenvolvimento ......Uma proposta de framework para facilitar o desenvolvimento de aplicações baseadas em IoT / Dannylo Johnathan Bernardino

21

2 Fundamentação Teórica

Este capítulo discorre sobre os fundamentos no qual sustenta-se este trabalho. Seu

objetivo é explicar de maneira sucinta, as características gerais de cada um dos concei-

tos utilizados na construção da proposta desta pesquisa. Desta forma, este capítulo está

organizado em quatro seções: A primeira, a 2.1 trata sobre conceitualizar a Internet das

Coisas, suas visões, modelo arquitetural e tecnologias envolvidas, a 2.2 discorre sobre o

CoAP e suas características técnicas, a 2.3 busca explicar o funcionamento do UPnP, por

�m, a 2.4 explica sobre o funcionamento do protocolo Bluetooth.

2.1 Internet das Coisas

A Internet das Coisas, do inglês, Internet of Things (IoT) trata-se de um paradigma

inovador que vai além das soluções computacionais voltadas à desktop tradicionais (GUBBI

et al., 2013). O termo foi introduzido por Kevin Ashton no ano de 1998 em um contexto

de gerenciamento de cadeia de suprimentos, e passou a ganhar a partir disto, uma maior

atenção da academia e da indústria (GUBBI et al., 2013; BANDYOPADHYAY; SEN, 2011).

A ideia principal do paradigma centraliza-se em objetos comuns de nosso cotidiano

inseridos inevitavelmente na rede. Neste cenário, sensores, tecnologias de identi�cação,

dispositivos inteligentes de toda natureza, estarão em alta para embarcarem invisivelmente

em soluções que gerarão uma alta quantidade de dados. Essa massiva quantidade de dados

consequentemente necessitará de estruturas que possam comportar e processar tal volume

para que assim possa ter valor para a aplicação (GUBBI et al., 2013) .

Além de todos os benefícios oriundos desse novo modelo computacional, Atzori (AT-

ZORI; IERA; MORABITO, 2010) considera como sendo a principal força que norteará os

objetivos do paradigma, o impacto que ela terá no dia-a-dia e nos aspectos comportamen-

tais de seus usuários. Neste ponto de vista, o autor acredita que contextos domésticos,

de vida assistida, aprendizado e saúde, são apenas alguns poucos exemplos de cenários

Page 24: Uma proposta de framework para facilitar o desenvolvimento ......Uma proposta de framework para facilitar o desenvolvimento de aplicações baseadas em IoT / Dannylo Johnathan Bernardino

22

em que a IoT desempenhará demasiada liderança no desenvolvimento de aplicações, bem

como no âmbito de negócios, havendo considerável impacto em aplicações de automação,

manufatura, gestão de negócios, transportes, etc.

2.1.1 Visões

O conceito de IoT é permeado de múltiplas visões e discussões diversas. Isso se dá

devido ao próprio nome "Internet das Coisas� carregar inúmeras formas de pensar. O

termo "Internet� nos direciona a uma visão de IoT focada diretamente na rede e em

seus recursos, já o termo "Coisas�, foca diretamente em múltiplos objetos inteligentes

e conectados que realizam operações especí�cas e estão integrados no cenário, havendo

comunicação entre eles (ATZORI; IERA; MORABITO, 2010). O termo "Coisas"também é

considerado uma nova dimensão da atual interação das aplicações com o ser humano (LU;

PAPAGIANNIDIS; ALAMANOS, 2018).

Figura 2: Paradigma de IoT como sendo o resultado da convergência de três visões (AT-ZORI; IERA; MORABITO, 2010)

.

Contudo, o uso desses termos em conjunto semanticamente nos diz que trata-se de um

conjunto de dispositivos heterogêneos, endereçáveis, e interconectados através de proto-

colos de comunicação (BANDYOPADHYAY; SEN, 2011). Uma terceira perspectiva também

é reconhecida neste aspecto: A semântica. Tal visão é orientada ao endereçamento (ou

identi�cação exclusiva), armazenamento e processamento da informação gerada nessas

aplicações, tal processamento deve considerar a natureza heterogênea da informação ge-

Page 25: Uma proposta de framework para facilitar o desenvolvimento ......Uma proposta de framework para facilitar o desenvolvimento de aplicações baseadas em IoT / Dannylo Johnathan Bernardino

23

rada e dos dispositivos que a geraram.

Desta forma, acredita-se que o paradigma de IoT é o resultado da convergência des-

tas três visões (ATZORI; IERA; MORABITO, 2010), a Figura 2 ilustra esse fato, além de

apresentar algumas das principais tecnologias e conceitos mais comuns de cada visão.

Outras de�nições podem ser evidenciadas no estudo de Lu (LU; PAPAGIANNIDIS; ALA-

MANOS, 2018), dentre estas, sugere-se que IoT seja um conjunto de objetos capazes de

se identi�carem e conectarem-se em uma rede. E a de�nição proposta pela Comissão

Europeia, considerada pelo referido autor como uma das mais representativas de�nições

de IoT, considerando o paradigma como uma infraestrutura de rede global que agirá de

maneira integralizada como uma extensão da futura internet.

2.1.2 Modelo Arquitetural

A arquitetura considerada genérica do paradigma IoT precisa abordar muitos fatores

que vão além da arquitetura TCP/IP convencional (KHAN et al., 2012). Isto porque trata-

se de um modelo que gerará muito mais informação e tráfego, além dos desa�os voltados

à privacidade e segurança. Desta forma, um modelo arquitetural ideal para aplicações

IoT necessita tratar aspectos voltados à muitos fatores, tais como: interoperabilidade,

segurança, con�abilidade, QoS , etc (KHAN et al., 2012).

Figura 3: Modelo arquitetural genérico para IoT (KHAN et al., 2012).

Compreendendo estes aspectos, um modelo genérico baseado em camadas é proposto

por (KHAN et al., 2012) e ilustrado na Figura 3. Este modelo compreende cinco camadas

com responsabilidades bem-de�nidas: Percepção, Rede, Middleware, Aplicação e Negócio.

Page 26: Uma proposta de framework para facilitar o desenvolvimento ......Uma proposta de framework para facilitar o desenvolvimento de aplicações baseadas em IoT / Dannylo Johnathan Bernardino

24

A camada de Percepção, que (BANDYOPADHYAY; SEN, 2011) considera como "Ca-

mada de Tecnologias de Borda", compreende todos os dispositivos físicos e sensores que

objetivam coletar informações do contexto para as camadas superiores. A camada de Rede

basicamente irá transferir as informações geradas pelos dispositivos sensores para os servi-

ços de processamento, desta forma, ela é um intermediador entra a camada de Percepção

e a de Middleware.

A camada deMiddleware por sua vez, padroniza e gerencia os serviços oferecidos pelos

dispositivos. Esta pode persistir os dados enviados a ela, bem como realizar processamen-

tos e tomar decisões com base nestes. A camada de Aplicação fornece o gerenciamento

dos serviços processados pela camada de Middleware, favorecendo o desenvolvimento de

múltiplos cenários de aplicação (saúde, agricultura, transporte, negócios, etc.). Por �m,

a camada de Negócios gera meios de analisar os dados produzidos pelas camadas inferio-

res através de recursos diversos que possam ser produzidos, tais como: grá�cos, modelos,

�uxogramas, etc.

Outros modelos arquiteturais também são propostos, eles buscam enxergar o para-

digma IoT através de SoA , e um dos modelos mais comuns utilizados é expressado por

Li et al.(LI; XU; ZHAO, 2015), o referido autor acredita que modelos baseados em SoA im-

pactam diretamente na heterogeneidade de dispositivos presentes nos ecossistemas IoT.

O modelo proposto é formado por 4 camadas de�nidas da seguinte forma:

• Camada de Sensoriamento: todos os hardwares dotados de sensores pertencem

a essa camada, e juntos proverão dados do mundo real para as próximas camadas.

• Camada de Rede: camada responsável pelos componentes que manterão a comu-

nicação entre things.

• Camada de Serviço: camada responsável pela criação e gerenciamento dos serviços

necessários para a aplicação e seus usuários.

• Camada de Interfaces: concentrará todos os mecanismos de interação da aplicação

com seus usuários.

Tais modelos arquiteturais buscam adapatarem-se às necessidades de cada aplicação,

por esta razão são considerados modelos genéricos.

Page 27: Uma proposta de framework para facilitar o desenvolvimento ......Uma proposta de framework para facilitar o desenvolvimento de aplicações baseadas em IoT / Dannylo Johnathan Bernardino

25

2.1.3 Tecnologias envolvidas

Para atingir os objetivos pretendidos pelo paradigma de IoT, as arquiteturas pro-

postam buscam integrar as inúmeras tecnologias desenvolvidas. Dentre essas, Lee (LEE;

LEE, 2015) destaca as consideradas por ele como essenciais: Tecnologias de identi�cação,

Dispositivos sensores, Middlewares e Computação na nuvem.

• Tecnologias de Identi�cação: É basicamente composto por dispositivos capazes de

identi�car unicamente os objetos presentes na infraestrutura IoT. RFID possui de-

masiado destaque nesse caso (LI; XU; ZHAO, 2015), sua estrutura é composta por um

ou muitos leitor(es) e tags RFID. As tags são identi�cadores únicos e geralmente

estão associados a objetos na aplicação. Os leitores buscam constantemente por um

sinal apropriado que é emitido pelas tags espalhadas no ambiente. Tal tecnologia

é frequentemente utilizada em ambientes que possuem a necessidade de monitora-

mento em tempo real (ATZORI; IERA; MORABITO, 2010). Outras abordagens são

utilizadas para a de�nição de identi�cadores únicos nos dispositivos conectados,

Tiwary (TIWARY et al., 2018) destaca que endereços IPv4 e IPv6 são também alter-

nativas utilizadas como estratégias de identi�cação.

• Dispositivos sensores: São dispositivos equipados com sensores autônomos que po-

dem monitorar as condições físicas ou de ambiente (LEE; LEE, 2015). Estes sensores

são geralmente compostos por uma interface comum para manipulá-los, realizar

processamentos unitários, além disso também são dotados de unidades tradutoras e

fontes de energia (GUBBI et al., 2013).

• Middlewares : Representam camadas de softwares geralmente posicionadas na arqui-

tetura de modo a facilitar a comunicação de componentes da aplicação, esta costuma

ocultar detalhes irrelevantes ao ponto de vista do desenvolvedor (LEE; LEE, 2015). O

desenvolvimento de middlewares tem ganhado considerável crescimento face à ne-

cessidade de facilitar o desenvolvimento de novos serviços e a integração de serviços

novos e antigos. Para tal, arquiteturas orientadas a serviços (SOA) tem sido uma

abordagem aconselhada para esta �nalidade, pois permite a decomposição de siste-

mas complexos e monolíticos em aplicações mais simples e dotadas de componentes

bem-de�nidos (ATZORI; IERA; MORABITO, 2010).

• Computação na nuvem: Representa um modelo computacional de acesso sob de-

manda a recursos de con�guração compartilhados (LEE; LEE, 2015). O uso da com-

putação na nuvem nos direciona a uma abordagem orientada a recursos da internet,

Page 28: Uma proposta de framework para facilitar o desenvolvimento ......Uma proposta de framework para facilitar o desenvolvimento de aplicações baseadas em IoT / Dannylo Johnathan Bernardino

26

de modo que possa lidar com a massiva quantidade de dados gerado pelos sensores

da aplicação e possa conter recursos que concedam: capacidades de análises de da-

dos, armazenamento escalável e capacidades de compartilhamento de dados em alto

nível (GUBBI et al., 2013).

2.2 Constrained Application Protocol

CoAP surge como um dos protocolos de nível de aplicação mais amplamente conside-

rados no tocante à "rede de coisas� no contexto de IoT (RUTA et al., 2017). Ele representa

um padrão entre clientes e servidores provendo uma interface RESTful simpli�cada, pois

aplicações baseadas em IoT necessitam de protocolos mais leves devido à sobrecarga de

tráfego de dados, capacidades energéticas e computacionais. Por esta razão, CoAP dis-

ponibiliza uma interface baseada em REST para habilitar sensores e dispositivos de

capacidades restritas a se comunicarem pela rede (SALMAN; JAIN, 2015).

O protocolo provê um modelo de interação requisição/resposta, suportando desco-

berta de serviços e recursos, incluindo alguns conceitos da Web tais como URI , tipos de

mídia, bem como busca ser interoperável com o HTTP (SHELBY; HARTKE; BORMANN,

2014). Dentre as características principais contempladas pela especi�cação CoAP, Shelby

(SHELBY; HARTKE; BORMANN, 2014) destaca as seguintes:

• Um protocolo WEB para requisitos de comunicações restritas M2M .

• Baseado em UDP , suportando comunicação unicast e multicast.

• Troca de mensagens assíncronas.

• Proxy simples e capacidades de caching.

Além das características supracitadas, CoAP de�ne uma simples camada de mensa-

gens para a retransmissão dos pacotes que possam perder-se no processo de transmissão,

bem como disponibiliza quatro métodos de requisição similares ao HTTP: GET, PUT,

POST e DELETE. Utiliza-se de apenas 4 bytes no cabeçalho seguido de opções, desta

forma, requisições típicas costumam possuir de 10 a 20 bytes de tamanho (BORMANN;

CASTELLANI; SHELBY, 2012).

A camada de mensagens do CoAP comporta 4 tipos básicos: Con�rmable(CON), Non-

con�rmable(NON), Acknowledgement(ACK) e Reset(RST). Estas ocorrem de acordo com

Page 29: Uma proposta de framework para facilitar o desenvolvimento ......Uma proposta de framework para facilitar o desenvolvimento de aplicações baseadas em IoT / Dannylo Johnathan Bernardino

27

Figura 4: Camada de mensagens do CoAP(SHELBY; HARTKE; BORMANN, 2014)

a situação da requisição e do retorno da entidade receptora (servidor). Uma mensagem

Con�rmable requer uma resposta (Acknowledgement) da entidade receptora devido à

ser uma comunicação assíncrona. A entidade requisitante irá retransmitir a mensagem

(Con�rmable) até que a receptora a responda. No entanto, modelos de negócio que não

requerem transmissões con�áveis podem optar por enviar mensagens Non-con�rmable,

estas não requerem uma resposta do recebimento dos pacotes na entidade receptora, neste

caso, quando ela não pode responder, uma mensagem Reset é gerada (SHELBY; HARTKE;

BORMANN, 2014).

Figura 5: Implementação proposta para interoperabilidade entre HTTP eCoAP.(BORMANN; CASTELLANI; SHELBY, 2012)

CoAP e HTTP podem se comunicar plenamente, além de compartilhar as capacida-

des inerentes às suas aplicações através da implementação de proxys ou intermediadores

implementados sobre clientes. Uma arquitetura muito comumente usada é ilustrada na

Figura 5. Neste caso, os intermediadores conversariam ambos os idiomas CoAP e HTTP

sem a necessidade de conhecer requisitos especí�cos de cada aplicação. Neste caso, não há

sequer a necessidade de atualizar os intermediadores nos casos das aplicações envolvidas

sofrerem modi�cações (clientes ou servidores), tornando-os bem independentes. Esta capa-

Page 30: Uma proposta de framework para facilitar o desenvolvimento ......Uma proposta de framework para facilitar o desenvolvimento de aplicações baseadas em IoT / Dannylo Johnathan Bernardino

28

cidade é possível devido às particularidades dos protocolos (códigos de resposta, métodos,

etc.) serem similares (assim como demonstrado na Figura 5(b)), tornando o mapeamento

de sua relação algo bem direto (BORMANN; CASTELLANI; SHELBY, 2012).

2.3 Universal Plug and Play

O UPnP foi desenvolvido pela Microsoft e pelo UPnP Fórum e de�ne um conjunto

de protocolos que permitem que dispositivos diversos à base de IP possam se conectar na

rede. É uma solução para padronizar protocolos na internet e não está voltado a nenhum

sistema operacional ou linguagem de programação especí�ca (MESHKOVA et al., 2008).

No UPnP, dispositivos e serviços são descritos através de XML , e utilizam-se de um

relevante número de protocolos que viabilizam a autocon�guração local, reconhecimento

na rede, descoberta, interação cliente/servidor, entre outras operações essenciais para seu

funcionamento. Deste conjunto de protocolos, estão incluídos o Atuo-IP, SSDP (Sim-

ple Service Discovery Protocol), SOAP (Simple Object Access Protocol), GENA (General

Event Noti�cation Architecture), entre outros (ALLARD et al., 2003).

A arquitetura considera dois tipos de dispositivos: o dispositivo controlado e o ponto

de controle. Dispositivos controlados são considerados os nós da rede que possuem servi-

ços disponíveis, e os pontos de controle são dispositivos que podem descobrir dispositivos

controlados na rede e utilizarem-se de seus serviços. Um dispositivo pode implementar

qualquer um desses conceitos, e em alguns contextos pode possuir ambos (TOSCHI; CAM-

POS; CUGNASCA, 2016). A sua proposta está direcionada à seis fases: Endereçamento,

Descoberta, Descrição, Controle, Eventos e Apresentação (SILVA et al., 2016). Cada fase

possui um objetivo especí�co para tornar o UPnP um padrão interoperável. Tais fases

foram explicadas por Lee (LEE; HELAL, 2002):

• Descoberta: A descoberta do UPnP é baseada em SSDP, desta forma, quando um

dispositivo é adicionado na rede, ele imediatamente anuncia para os pontos de con-

trole existentes, os serviços que possui. Este processo também ocorre quando um

dispositivo (ponto de controle) deseja buscar algum serviço especí�co na rede.

• Descrição: Após a descoberta, os pontos de controle podem descobrir mais infor-

mações sobre o dispositivo encontrado na rede e suas capacidades através da URL

oferecida pelo dispositivo na estrutura da mensagem de descoberta. A descrição é

expressa em XML, e além das informações que o identi�cam, também é possível

Page 31: Uma proposta de framework para facilitar o desenvolvimento ......Uma proposta de framework para facilitar o desenvolvimento de aplicações baseadas em IoT / Dannylo Johnathan Bernardino

29

encontrar a lista de serviços disponíveis, estruturas para controle, eventos e apre-

sentação.

• Controle: Um ponto de controle, depois de possuir conhecimento sobre um disposi-

tivo e seus serviços, pode eventualmente enviar ações para um determinado serviço.

As mensagens de controle são também expressas em XML utilizando SOAP, e estas

ações podem ou não retornar valores.

• Eventos : O UPnP permite que pontos de controle possam inscrever-se em determina-

das ações de serviços na rede, para serem noti�cadas em caso destas ações alterarem

suas variáveis de estado (estas que podem representar o estado do dispositivo). Desta

forma, quando o dispositivo tem seu estado alterado, o mesmo publica a alteração

no sistema de mensagens de evento que noti�cará os dispositivos ouvintes. Todas as

mensagens são expressas em XML através do GENA.

• Apresentação: Esta capacidade é permitida para que dispositivos consigam expor

seu estado em navegadores, através de URLs representativas dos mesmos.

Figura 6: Fluxo de funcionamento básico do UPnP.(ARUNACHALAM; GANAPATHY, 2016)

Em um �uxo básico de execução, após um ponto de controle descobrir um deter-

minado dispositivo na rede (Descoberta), ele recupera então a URL disponibilizada pelo

dispositivo (Descrição), já que o dispositivo possui através desta, além da descrição da sua

identi�cação, a descrição dos serviços que pode realizar. Para executar as ações (Controle)

de qualquer serviço desse dispositivo, o ponto de controle recupera o serviço escolhido, e

neste é possível identi�car todas as ações e variáveis de estado necessárias para a execução

desta ação, o �uxo supracitado é ilustrado na Figura 6 (ARUNACHALAM; GANAPATHY,

2016).

Page 32: Uma proposta de framework para facilitar o desenvolvimento ......Uma proposta de framework para facilitar o desenvolvimento de aplicações baseadas em IoT / Dannylo Johnathan Bernardino

30

2.4 Bluetooth

Bluetooth é um padrão baseado em comunicação sem �o de dispositivos, projetado

para comunicações de curto alcance. O padrão também é conhecido como IEEE 802.15.1

(LEE; SU; SHEN, 2007). Também é considerado uma tecnologia de baixo custo e está

presente em muitos dispositivos populares tais como Notebooks, telefones celulares, entre

outros (CHLAMTAC; CONTI; LIU, 2003).

As especi�cações do Bluetooth foram estabelecidas a partir de um consórcio de gran-

des companhias da indústria tecnológica incluindo IBM, Microsoft, Motorola, Intel, entre

outras(CHLAMTAC; CONTI; LIU, 2003). O protocolo é considerado uma tecnologia proe-

minente para projetos de casas e cidades inteligentes, no entanto, ainda possui algumas

limitações importantes a tratar, tais como a baixa taxa de dados, a descoberta ine�ciente

de dispositivos, o seu alcance limitado, interferências, etc (SALEM; NADEEM, 2018).

O ciclo de vida da comunicação Bluetooth ocorre em 5 passos: Escaneamento, StandBy,

publicidade, iniciação e conexão. Os dois primeiros passos representam o processo de

monitoramento passivo da pilha Bluetooth, a fase de publicidade é feita por um dispositivo

para anunciar sua disponibilidade através do envio de um pacote especí�co. Durante

o processo de publicidade, um dispositivo no estado de iniciador �ca aguardando este

pacote para responder com um outro, que guarda informações especí�cas para iniciar a

comunicação e trocar os dados nessa mesma comunicação. Logo em seguida, o estado

de conexão se mantém e os dispositivos começam a trocar suas informações (SALEM;

NADEEM, 2018).

Page 33: Uma proposta de framework para facilitar o desenvolvimento ......Uma proposta de framework para facilitar o desenvolvimento de aplicações baseadas em IoT / Dannylo Johnathan Bernardino

31

3 Revisão do Estado da Arte

Este capítulo descreve uma revisão literária que utilizará o método exploratório para

conhecer as soluções oferecidas no estado da arte que simpli�cam o processo de desenvol-

vimento de aplicações baseadas em IoT. Também há a pretensão de conhecer os requisitos

que estas soluções atingem bem como os desa�os e oportunidades relatadas pelos pesqui-

sadores. Desta forma, o objetivo deste capítulo é conhecer as tendências que existem no

processo de desenvolvimento baseado em IoT, bem como o de explorar as soluções do

estado da arte que objetivam a simpli�cação do desenvolvimento de aplicações IoT.

A revisão a que este capítulo se propõe, foi conduzida de maneira exploratória, que

segundo Zanella (ZANELLA, 2006), trata-se de uma pesquisa que tem como �nalidade

acrescer o que se conhece de um determinado fenômeno. Desta maneira, a revisão utilizou

a pesquisa exploratória sistematizando alguns aspectos, de modo a ampliar a organização

do processo de pesquisa.

Este capítulo está organizado em 3 seções, a seção 3.1 trata da metodologia seguida

na revisão do estado da arte, e é subdividida em 4 subseções: O planejamento, a string de

busca, as fontes de pesquisa, a execução da revisão e o processo de seleção e a extração dos

resultados. A seção 3.2 buscará remontar as questões de pesquisa visando respondê-las

baseando-se nos resultados obtidos da execução da revisão, por �m, a seção 3.3 discutirá

tais resultados visando sintetizar e organizar o conhecimento obtido.

3.1 Metodologia

Esta seção descreverá todos os passos que foram seguidos para a realização da revisão

do estado da arte, passos estes que foram sistematicamente divididos em planejamento,

string de busca, fontes de dados, execução do protocolo, processo de seleção e por �m,

processo de extração dos resultados.

Page 34: Uma proposta de framework para facilitar o desenvolvimento ......Uma proposta de framework para facilitar o desenvolvimento de aplicações baseadas em IoT / Dannylo Johnathan Bernardino

32

3.1.1 Planejamento

O processo de planejamento se propõe a de�nir a �nalidade da revisão do estado da

arte. Desta forma, baseado no seu objetivo foram de�nidas três questões de pesquisa (QP)

norteadoras:

• QP1 - Quais os tipos de soluções e abordagens existentes para simpli�cação do

desenvolvimento de aplicações IoT?

• QP2 - Quais requisitos são endereçados pelas soluções identi�cadas?

• QP3 - Quais são os desa�os e oportunidades para desenvolver soluções que simpli-

�quem o desenvolvimento de aplicações IoT?

3.1.2 String de Busca

A de�nição da string de busca foi baseada nos objetivos da revisão do estado da

arte e utilizou-se de termos constituintes que buscassem re�nar os resultados, tais termos

combinados resultaram na seguinte string:

("IoT � OR "Internet of Things") AND ("Framework � OR "API ") AND ("Develop-

ment� AND ("Easing� OR "Enabling� OR "Easy� OR "Enable")))

3.1.3 Fontes de Busca

Para a obtenção dos trabalhos realizados no estado da arte, uma busca foi realizada

no repositório Scopus da Elsevier, este é responsável por indexar os repositórios mais

importantes e relevantes da computação e engenharia (Vide Tabela 1). Devido a seu grau

de importância, os artigos retornados possuem alta probabilidade de relevância para a

revisão.

Tabela 1: Repositórios de BuscaFonte Endereço

IEEExplorer http://ieeexplorer.ieee.orgACM Digital http://dl.acm.orgScience Direct http://www.sciencedirect.comWeb of Science http://webofknowledge.comSpringer http://link.springer.com

Page 35: Uma proposta de framework para facilitar o desenvolvimento ......Uma proposta de framework para facilitar o desenvolvimento de aplicações baseadas em IoT / Dannylo Johnathan Bernardino

33

3.1.4 Execução da Revisão

Uma vez de�nidos a string de busca e as fontes de pesquisa, o processo de execução

buscou utilizar tais elementos para retornar os trabalhos que pudessem ser relevantes para

as questões levantadas na fase de planejamento. Desta forma, a string foi executada no

repositório Scopus da Elsevier e todos os artigos que não estavam disponibilizados gratui-

tamente ou que não fossem escritos em inglês foram descartados. Trabalhos considerados

capítulos de livros e tutoriais também foram desconsiderados.

A execução desta fase resultou em um total de 163 artigos que foram dispostos em

uma planilha e indexados para um maior controle, destes, 17 foram desconsiderados por

tratarem-se de capítulos de livro, tutoriais, ou não possuíam relação com as questões

planejadas na seção 3.1.1. Sendo assim, apenas 146 artigos foram considerados para a fase

de seleção.

3.1.5 Processo de Seleção

O processo de seleção trata-se de um re�namento dos resultados primários obtidos na

execução da string nos repositórios de busca. Este processo visa descartar todos os artigos

que não respondem as questões de pesquisa propostas na fase de planejamento ou não se

enquadram de algum modo no objetivo da revisão.

O resultado da execução, assim como evidenciado na subseção anterior, retornou 146

trabalhos válidos que foram lidos pelo autor deste trabalho no período de dois meses,

entre Novembro e Dezembro. Essa etapa foi dividida em três iterações: A primeira foi a

leitura dos títulos, resumos e palavras chaves, os artigos que não foram excluídos nesta

fase passaram por uma segunda iteração de leitura que compreendia a introdução e a

conclusão dos mesmos, os aprovados, passaram por uma leitura completa, sendo esta a

última iteração. Os resultados deste processo são explicitados na Tabela 2.

Tabela 2: Iteração de LeiturasFase Leitura Qtd. de Artigos1o Fase Títulos, resumos e palavras-chave 1462a Fase Introdução e Conclusão 633a Fase Leitura Completa 30

Page 36: Uma proposta de framework para facilitar o desenvolvimento ......Uma proposta de framework para facilitar o desenvolvimento de aplicações baseadas em IoT / Dannylo Johnathan Bernardino

34

3.1.6 Extração dos Resultados

O processo de extração foi realizado nos artigos que passaram da 3a fase (Leitura

Completa) na fase de seleção. Todos os artigos desta fase foram adicionados a uma planilha

do Google que foi preenchida com base nas leituras de cada artigo com dados que pudessem

facilitar uma análise mais detalhada dos resultados. A planilha está disponível através do

endereço: https://goo.gl/Koaykx

3.2 Resultados

Esta seção discute os resultados que foram extraídos da execução do protocolo da

revisão do estado da arte proposto nos capítulos anteriores visando responder as questões

de pesquisa que foram elaboradas na subseção 3.1.1.

Figura 7: Fontes de Dados

Assim como mencionado no processo de seleção, descrito na subseção 3.1.5, 30 artigos

foram analisados inteiramente e algumas informações pertinentes puderam ser quanti�-

cadas. Dentre elas, pode-se observar que 58,1% dos artigos de interesse foram publicados

em conferências, seguidos de 41,9% publicados em Journals (Vide Figura 8). Também é

possível perceber através da Figura 7 que a grande maioria dos artigos de interesse bus-

cados nas fontes de dados descritas na subseção 3.1.3 foram encontrados na IEEExplorer

(61,3%) seguidos da Springer (19,4%), e Elsevier (9,7%).

A Figura 9 ilustra que a área de pesquisa de interesse desta revisão encontra-se estável

quanto ao número de publicações que vinha crescente desde 2014(6) até 2016(8). O fato

de apenas 7 artigos serem selecionados como pertinentes à revisão no ano de 2017 não

Page 37: Uma proposta de framework para facilitar o desenvolvimento ......Uma proposta de framework para facilitar o desenvolvimento de aplicações baseadas em IoT / Dannylo Johnathan Bernardino

35

Figura 8: Veículos de Publicação

representa qualquer queda no número de publicações gerais voltadas à área de pesquisa,

visto que os artigos foram buscados em Novembro, podendo haver novas publicações até

o �m do referido ano.

Figura 9: Número de publicações por ano

Após o levantamento prévio dos resultados obtidos do processo de execução, as ques-

tões elaboradas na fase de planejamento foram respondidas fundamentado-se nas leituras

consideradas na fase de seleção desta revisão.

3.2.1 Análise da QP1

A QP1 desta revisão, tem como objetivo encontrar no estado da arte, os tipos de

soluções e abordagens, ou metodologias que visem simpli�car ou facilitar o processo de

desenvolvimento de aplicações IoT.

Page 38: Uma proposta de framework para facilitar o desenvolvimento ......Uma proposta de framework para facilitar o desenvolvimento de aplicações baseadas em IoT / Dannylo Johnathan Bernardino

36

Figura 10: Tipos de soluções encontradas

No sentido de atingir o objetivo desta questão, as leituras mostraram-se promissoras

e dos 30 trabalhos que foram analisados por completo, 28 retornaram soluções que visam

facilitar alguma especi�dade do desenvolvimento de aplicações IoT. Contudo, algumas

soluções visam cenários bem especí�cos e geralmente atingem requisitos isolados, sem

preocuparem-se com a totalidade do desenvolvimento.

A Figura 10 ilustra os tipos de soluções que foram retornadas pelos artigos lidos,

das soluções propostas, a maioria (50,0%) concentra-se em oferecer Frameworks com a

�nalidade de auxiliar o processo de desenvolvimento de ambientes IoT, seguidos de 23,3%

das propostas que objetivam oferecer Plataformas como solução, 13,3% voltadas à soluções

MDD (Model Driven Development), por �m, uma proposta de arquitetura (3,3%). Alguns

trabalhos não especi�caram a solução, ou simplesmente não ofereceram nenhuma solução

para os problemas abordados em suas pesquisas, eles foram categorizados na Figura 10

como "Não Especi�cados� e representam 10% das soluções, num total de 3 trabalhos.

Dentre os trabalhos destacados, foi possível observar que há uma tendência na adoção

das várias abordagens focadas na simpli�cação do desenvolvimento IoT, elas representam

as estratégias que foram adotadas pelos autores em suas soluções. As abordagens foram

categorizadas na Figura 11, demonstrando que as mais adotadas pelas soluções encontra-

das são as de Abstração (40%), API's de Serviços (13,3%) e Nuvem (10%). Uma boa

parte dos trabalhos revisados não especi�caram a abordagem (26,7%) que utilizaram em

suas soluções.

As abordagens consideradas como Abstração compreendem técnicas que buscam abs-

trair recursos dos cenários de IoT, virtualizando-os, tornando-os legíveis, padronizados,

e que podem ou não utilizar recursos de programação. Os exemplos considerados são:

Page 39: Uma proposta de framework para facilitar o desenvolvimento ......Uma proposta de framework para facilitar o desenvolvimento de aplicações baseadas em IoT / Dannylo Johnathan Bernardino

37

Figura 11: Abordagens mais utilizadas

Anotações semânticas, geradores de código, representações grá�cas, etc. A abordagem

de�nida como API de Serviços compreendem as estratégias que utilizam padrões REST

e/ou CoAP em suas comunicações.

As demais abordagens categorizadas como Nuvem, Prototipação, e Integração Mobile

focam suas soluções respectivamente, buscando integrar suas estratégias com recursos

na nuvem através de plataformas especí�cas, utilizam recursos grá�cos e modelos para

prototipar cenários de IoT prévio ao desenvolvimento, visando um planejamento detalhado

e preciso, e por �m, estratégias voltadas a utilizarem os dispositivos móveis como recursos

de borda, ou dispositivos sensores pertencentes à aplicação.

3.2.2 Análise da QP2

A QP2 desta revisão tem como objetivo identi�car nas soluções propostas pelos au-

tores quais requisitos foram atingidos por suas propostas.

As leituras evidenciaram muitos requisitos que os autores destacaram como sendo

críticos no processo de desenvolvimento e implantação de aplicações IoT. Algumas soluções

atendem a mais de um requisito, contudo, a grande maioria concentra-se em requisitos

isolados, criando meio de solucioná-los e simpli�car o desenvolvimento que o afeta.

A Figura 12 representa os requisitos que foram abordados pelos trabalhos analisa-

dos. É possível observar que a grande maioria das propostas lidam com interoperabili-

dade (36,7%), tal requisito representa a capacidade dos dispositivos comunicarem-se de

maneira padronizada uns com os outros, o requisito é citado como sendo um dos mais

importantes da área de IoT, seguidos de heterogeneidade (13,3%), que está geralmente

Page 40: Uma proposta de framework para facilitar o desenvolvimento ......Uma proposta de framework para facilitar o desenvolvimento de aplicações baseadas em IoT / Dannylo Johnathan Bernardino

38

Figura 12: Requisitos atingidos pelas propostas

associado ao massivo número de dispositivos com capacidades distintas de comunicação,

processamento, armazenamento, e de serviços. Como terceiro maior requisito atingido, es-

tão as propostas que focam em múltiplos requisitos, buscando atender a todos em alguma

escala, objetivando atingir uma maior facilidade de desenvolvimento (10%).

Os dados levantados fortalecem os apontamentos considerados por Tayur e Suchithra

(TAYUR; SUCHITHRA, 2017) que trata a interoperabilidade como sendo um dos desa�os

mais críticos do cenário IoT. As discussões centrais do trabalho de Tayur e Suchithra

(TAYUR; SUCHITHRA, 2017) direcionam-se à união das abordagens sugeridas no estado da

arte, pois o mesmo acredita que devido a grande variedade de protocolos existentes que

consequentemente conduziu alianças fornecedoras a buscarem soluções diversas para pro-

blemas similares, criou-se certa incompatibilidade entre as soluções desenvolvidas. Dentre

as soluções citadas pelo autor estão o AllJoyn e o oneM2M (M3 Framework).

O trabalho de Data e Bonnet (DATTA; BONNET, 2016), propõe um framework mo-

dularizado, denominado DataTweet, cujo objetivo é a simpli�cação do processo de de-

senvolvimento de aplicações IoT. Embora tenha voltado seu foco para o requisito de

produtividade, os autores também citam limitações, do ponto de vista dos requisitos,

que são muito comuns em aplicações descritas na literatura. Dentre os requisitos citados

destacam-se: interoperabilidade, modularização, segurança, dentre outras. O trabalho do

autor supracitado foi tratado como produtividade visto que os requisitos elencados pelo

mesmo são endereçados de maneira coletiva e integrados para se atingir a produtividade.

Um outro requisito pouco explorado pela literatura selecionada nesta revisão foi a

autonomia das "things", que na Figura 6 foi tratado apenas por Hernandez (HERNÁN-

DEZ; REIFF-MARGANIEC, 2016) junto ao requisito de interoperabilidade. Seu trabalho

Page 41: Uma proposta de framework para facilitar o desenvolvimento ......Uma proposta de framework para facilitar o desenvolvimento de aplicações baseadas em IoT / Dannylo Johnathan Bernardino

39

centralizou sua proposta em que objetos inteligentes constituintes do cenário deveriam

ter embutidos em si, engenharia baseada em autonomia, ou seja, cada dispositivo deve

tomar decisões e modi�car lógicas de aplicação de acordo com as entradas capturadas.

Uma síntese das soluções exploradas nesta questão e os requisitos atingidos pelas

mesmas podem ser visualizadas no Apêndice A deste trabalho.

3.2.3 Análise da QP3

A QP3 desta revisão tem como objetivo identi�car as oportunidades e desa�os que

foram expostos nas leituras realizadas. Para tal, foram observados os trabalhos futuros e

limitações que foram expostos pelos autores.

Para esta questão, as leituras não foram tão promissoras, pois boa parte dos trabalhos

não apresentaram desa�os, limitações ou possíveis oportunidades de seus experimentos e

estudos (71% dos trabalhos). A maioria foca apenas nas características das soluções e nos

casos de uso. É importante salientar que os trabalhos revisados não especi�cam bem o

que são desa�os e oportunidades, visto que alguns desa�os são considerados potenciais

oportunidades que podem bene�ciar o contexto das aplicações IoT.

Dos casos que abordaram algum desa�o e/ou oportunidade no desenvolvimento de sua

pesquisa e nos experimentos abordados, destacam-se as propostas de Mehta (MEHTA et

al., 2017), Patel (PATEL; CASSOU, 2015) e Nastic (NASTIC; TRUONG; DUSTDAR, 2015) que

colocaram como características desa�adoras a adaptação e adição de recursos em tempo

real nos cenários (aplicações), sem a necessidade de atualização ou recompilação da apli-

cação, estas características são tratadas por Nastic (NASTIC; TRUONG; DUSTDAR, 2015)

como adaptabilidade, consideradas comuns nestes cenários. O trabalho de Patel (PATEL;

CASSOU, 2015) ainda enfatiza questões problemáticas voltadas à metodologias de teste

em aplicações IoT, que embora sejam necessárias, encontram-se escassas na literatura.

Os desa�os elencados por Venckauskas (VEN�KAUSKAS et al., 2016) e Paganelli (PA-

GANELLI; TURCHI; GIULI, 2016), são voltados especi�camente para as soluções propostas

pelos mesmos, visando otimizar o uso de suas linguagens modelo, estender seus experi-

mentos para lidarem com múltiplos domínios e diminuir a complexidade de automação

que suas soluções oferecem.

Em resumo, os desa�os e oportunidades que o cenário de desenvolvimento de aplica-

ções IoT oferece, partindo da análise da literatura retornada na execução desta revisão

foram os seguintes:

Page 42: Uma proposta de framework para facilitar o desenvolvimento ......Uma proposta de framework para facilitar o desenvolvimento de aplicações baseadas em IoT / Dannylo Johnathan Bernardino

40

• Adaptabilidade: Capacidade das aplicações adicionarem novos recursos sem a ne-

cessidade de recompilação.

• Metodologias de Teste: Metodologias ou ferramentas capazes de diminuir as

potenciais falhas de aplicações IoT.

• Aplicações de múltiplos domínios: A literatura é forte em domínios especí�cos

e voltados à tecnologias isoladas, ocorrendo assim a necessidade de aplicações que

se adaptem à múltiplos domínios e tecnologias.

• Diminuição da complexidade: Devido à aplicações IoT demandarem múltiplos

conhecimentos (desenvolvimento de software, sensores, infraestrutura, etc), é desa-

�ador a existência de uma ferramenta que abstraia as complexidades voltadas aos

recursos de suas aplicações, tais como sensores, gerenciamento de energia, etc.

3.3 Discussões

Esta sessão tem como objetivo fazer uma análise dos resultados atingidos por esta

revisão, buscando sintetizar os conhecimentos e tendências observadas nas respostas das

QPs.

Figura 13: Objetivos das soluções encontradas

Foi possível observar através de uma análise mais geral, que a grande maioria dos

trabalhos, embora possuam abordagens facilitadoras, estão focados de maneira bem es-

pecí�ca em requisitos isolados. A Figura 13 ilustra que 83,3% dos trabalhos possuem essa

característica, em um total de 25 trabalhos. Sendo assim, eles não mencionam quaisquer

estratégias de integrar os desa�os do cenário de IoT. Desta forma, apenas 10,0% estão

Page 43: Uma proposta de framework para facilitar o desenvolvimento ......Uma proposta de framework para facilitar o desenvolvimento de aplicações baseadas em IoT / Dannylo Johnathan Bernardino

41

focados em atingir os múltiplos requisitos das aplicações IoT, o termo "múltiplos� não

implica dizer que tratam de todos os requisitos desejáveis das aplicações IoT, mas que

objetivam atingir mais de um requisito e os integra em uma mesma aplicação.

Embora as estratégias isoladas apresentem soluções e�cazes para os requisitos que

estão endereçados, para que haja uma real contribuição no sentido de atingir a totalidade

das aplicações IoT, acreditamos que seja necessário buscar uma estratégia integradora

onde a maior parte dos requisitos necessários possam ser atingidos e integrem-se nas so-

luções propostas. A literatura tem demonstrado que tais soluções isoladas de requisitos

geralmente não são compatíveis com outras soluções também isoladas, e essa heterogenei-

dade não é algo interessante para o avanço no sentido de alcançar a plenitude de aplicações

IoT. Tais apontamentos são também evidenciados por Tayur (TAYUR; SUCHITHRA, 2017)

em suas análises mencionadas na seção 3.2.2.

Pode-se observar no trabalho de Carranza (CARRANZA-GARCÍA et al., 2016), uma

abordagem promissora voltada a tornar os serviços da aplicação IoT parte da nuvem,

embora a solução seja interessante, os aspectos voltados a escalabilidade e latência, que

são comuns em sistemas distribuídos desta natureza não são citados no trabalho. Já

a proposta de Datta (DATTA; BONNET, 2016) objetiva um framework muito promissor

no sentido de produtividade e simplicidade do desenvolvimento, o desacoplamento das

funções básicas de IoT com a lógica da aplicação possui um característica muito relevante

no sentido de tornar a aplicação modular, mas a descrição do framework é muito super�cial

quanto à aplicabilidade técnica efetiva, pois omite detalhes técnicos que são importantes,

tais como: A associação dos dispositivos/serviços físicos à CSE (Common Service Entity),

e todas estas questões fazem com que a proposta possua uma abordagem dotada de pouca

praticidade.

Algumas propostas apresentam soluções MDD bem interessantes do ponto de vista

prático, porém, acreditamos que tais abordagens di�cultam em alguns aspectos o de-

senvolvimento de tais soluções. Destacam-se as exploradas por Pal (PAL; MUKHERJEE;

BALAMURALIDHAR, 2015) que embora apresente um modelo arquiteturalmente rico, não

demonstra detalhes de como os dispositivos poderão trabalhar com os modelos, e Patel

(PATEL; CASSOU, 2015), que introduz uma linguagem própria para a criação dos modelos,

denominada "Srijan Vocabulary", que exigiria certa familiaridade do desenvolvedor com

tal linguagem, neste caso especí�co, acreditamos que o uso de linguagens mais populares

e aceitas pela comunidade sejam mais promissoras, tais como XML ou JSON.

É notável a escassez de ferramentas direcionadas à tecnologias que são fortemente

Page 44: Uma proposta de framework para facilitar o desenvolvimento ......Uma proposta de framework para facilitar o desenvolvimento de aplicações baseadas em IoT / Dannylo Johnathan Bernardino

42

adotadas pela comunidade de desenvolvimento para aplicações IoT, os frameworks em sua

maioria não são direcionados à tecnologias especí�cas ou descrevem dialetos próprios para

o desenvolvimento, os trabalhos revisados apresentam mais detalhes de nível arquitetural

e �uxos de execução bem especí�cos, e geralmente os protótipos buscam poupar detalhes

técnicos que podiam ser relevantes para análises e validações mais precisas.

Acreditamos que exista a necessidade de uma ferramenta que utilize a expertise dos

desenvolvedores para lidar com aplicações voltadas a IoT. Além da própria popularidade

de certas tecnologias aceitas, o conhecimento do desenvolvedor aceleraria o processo de

desenvolvimento de maneira signi�cativa.

A literatura explorada pela revisão pouco abordou soluções voltadas à representa-

ção programática desses dispositivos, em outra palavras, sensores, atuadores, e quaisquer

componentes constituintes da aplicação poderem ser representados como classes e objetos.

Desta forma, a aplicação poderia utilizar-se de métodos próprios de linguagens conhecidas

para seu gerenciamento, de maneira que toda a semântica inerente a cada componente

pudesse ser abstraída por essas classes, e o desenvolvedor focasse apenas no conhecimento

que detém da linguagem ou tecnologias utilitárias utilizadas.

Tal abordagem considera a representação programática de dispositivos como uma das

etapas do desenvolvimento de aplicações desta natureza. Sendo assim, cada objeto repre-

sentando um dispositivo, conteria os serviços, descrições básicas, identi�cação e outras

informações que pudessem ser relevantes e acessíveis por métodos ou classes de gerencia-

mento.

Um dos trabalhos que buscaram tal abordagem foi o desenvolvido por Bocchino (BOC-

CHINO; FEDOR; PETRACCA, 2015), muito embora sua abordagem acabou omitindo deta-

lhes importantes tais como: o processo de associação dos dispositivos com o framework, e

também o fato da utilização de funções básicas dos dispositivos junto da lógica de aplica-

ção apresentar um forte acoplamento que pode ser visto como algo prejudicial do ponto

de vista da manutenabilidade e extensibilidade da aplicação.

Desta forma, acreditamos que soluções que abordam uma separação de responsabili-

dades, similar à exigida por Patel (PATEL; CASSOU, 2015), mas que abstraia de maneira

explícita os dispositivos que estão contidos na aplicação pode ser considerada promissora.

Tal abordagem não pouparia detalhes técnicos relevantes voltados ao funcionamento real

da solução. Tais soluções devem também buscar estratégias de resolução de requisitos

críticos de heterogeneidade e interoperabilidade, e utilizar-se de padrões e tecnologias que

aproveitem a expertise dos desenvolvedores, facilitando assim, o processo de desenvolvi-

Page 45: Uma proposta de framework para facilitar o desenvolvimento ......Uma proposta de framework para facilitar o desenvolvimento de aplicações baseadas em IoT / Dannylo Johnathan Bernardino

43

mento.

Page 46: Uma proposta de framework para facilitar o desenvolvimento ......Uma proposta de framework para facilitar o desenvolvimento de aplicações baseadas em IoT / Dannylo Johnathan Bernardino

44

4 Um framework para facilitar o

desenvolvimento de aplicações

baseadas em IoT

O processo de desenvolvimento de aplicações baseadas IoT é caracterizado por um

conjunto de múltiplas habilidades combinadas, que estão voltadas a domínios bem especí-

�cos, a citar: infraestrutura, programação, sistemas embarcados, protocolos de comunica-

ção, serviços especí�cos, etc (PATEL; CASSOU, 2015). Tal natureza multi-disciplinar e he-

terogênea desencadeia demasiada complexidade e demorado processo de desenvolvimento

para lidar em conjunto com todos estes aspectos, surgindo a necessidade de metodolo-

gias e ferramentas que possam sanar limitações que são consequentemente criadas destas

características (PATEL; CASSOU, 2015).

Desta forma, o desenvolvedor destas aplicações necessitará focar em múltiplos conhe-

cimentos para o processo de desenvolvimento, pois cada dispositivo pode adotar alguma

especi�dade técnica que exigirá do desenvolvedor técnicas complexas para lidar colaborati-

vamente com esse conjunto de dispositivos. Os aspectos heterogêneos observados incluem

suas capacidades (sensores de umidade, temperatura, luminosidade, etc.), comunicação

(Bluetooth, ZigBee, Wi-�), representação de dados (PERERA et al., 2014), ou qualquer

outra característica que possa ser exclusiva ao mesmo, exigindo demasiado esforço para

torná-los comunicáveis entre si e aptos a operarem um contexto de aplicação IoT.

O capítulo anterior apresentou uma revisão exploratória na qual pode-se ter conheci-

mento do atual estado da arte no tocante à ferramentas facilitadoras no desenvolvimento

de aplicações IoT. Desta forma, constatou-se como um dos grandes desa�os, a existência

de ferramentas que pudessem reduzir a complexidade de desenvolvimento inerente à apli-

cações IoT. Além disso, também foi possível identi�car que uma considerável parte das

soluções são frameworks que utilizam estratégias baseadas em abstração de dispositivos

para várias formas de representação (Modelos, Serviços, Grá�cos, etc.), sendo tais escolhas

consideradas, a partir da análise da revisão, ideiais para o problema em questão.

Page 47: Uma proposta de framework para facilitar o desenvolvimento ......Uma proposta de framework para facilitar o desenvolvimento de aplicações baseadas em IoT / Dannylo Johnathan Bernardino

45

Sendo assim, a notável necessidade de ferramentas que possam reduzir a complexidade

do desenvolvimento destas aplicações, abstraindo a heterogeneidade comum supracitada,

motivou e direcionou a presente proposta. Nossa proposta poderá, nesse ínterim, realizar

etapas essenciais como descoberta dos dispositivos na rede e comunicação entre eles sem

necessidade de preocupar-se com especi�cidades funcionais de cada tipo de dispositivo.

O objetivo do framework proposto neste trabalho é de facilitar o processo de desen-

volvimento de aplicações baseadas em IoT. Ele buscará abstrair a heterogeneidade co-

mum dos dispositivos existentes, favorecendo um ambiente em que o desenvolvedor possa

apenas focar no desenvolvimento da lógica de aplicação, desconsiderando conhecimentos

especí�cos da cada tipo de dispositivo.

Como um passo importante para a realização dessa proposta, a virtualização dos dis-

positivos que estão envolvidos na solução IoT é essencial. Ela garantirá certa harmonização

e facilidade de comunicação entre as entidades, representando-as através de procedimentos

e abordagens uni�cadas e consequentemente mais simples (FERRERA et al., 2017). Através

desta abordagem, capacidades necessárias à proposta, voltadas à comunicação e gerenci-

amento de lógica de aplicação de forma simpli�cada tornam-se passos menos complexos.

Este capítulo está organizado em cinco sessões, a 4.1 discorre sobre o cenário motivador

em que nossa proposta poderia ser utilizada, a 4.2 discorre sobre a arquitetura proposta

para o framework, a 4.3 discorre sobre como os dispositivos se comunicarão com o auxílio

do framework proposto, a 4.4, trata de descrever como o framework �cará disposto de

maneira operacional em uma possível aplicação. Por �m, a 4.5 descreve como o framework

foi desenvolvido, os procedimentos utilizados para instanciá-lo e estendê-lo.

4.1 Cenário de Exemplo: Controle de temperatura

Para exempli�car a utilidade do framework que está sendo proposto por este traba-

lho, um cenário típico que pode ser utilizado é de um cômodo, que possua um controle

de temperatura. A sala seria composta por um sensor de temperatura que mediria a tem-

peratura, e um termostato que regularia a temperatura do ambiente. Ambos possuiriam

protocolos de comunicação distintos: O sensor é UPnP, e o termostato funcionaria à base

de Bluetooth.

Os componentes envolvidos nesse cenário possuem protocolos e capacidades diferentes

que di�cultam sua comunicação. Para lidar com o sensor UPnP, será necessário descobri-lo

na rede, conhecer seus serviços e ações, e enviar mensagens para suas variáveis de estado.

Page 48: Uma proposta de framework para facilitar o desenvolvimento ......Uma proposta de framework para facilitar o desenvolvimento de aplicações baseadas em IoT / Dannylo Johnathan Bernardino

46

Figura 14: Aplicação IoT lidando com a heterogeneidade de Dispositivos.

Para o Bluetooth no entanto, será necessário consultar a rede, parear com o dispositivo

escolhido, e após obter a conexão, transmitir os dados necessários, encerrando em seguida

a conexão.

Para realizar tal operação, serão necessários dois módulos lógicos para lidar com cada

um dos protocolos e suas especi�cidades. Neste caso, cada módulo conterá o código ne-

cessário (que deverá ser escrito pelo desenvolvedor) para atender às características e ar-

quitetura de cada protocolo. O desenvolvedor precisará lidar com cada protocolo indivi-

dualmente para que a aplicação alcance efetividade.

A Figura 14 ilustra o cenário supracitado: A aplicação solicita ao módulo UPnP os

serviços disponíveis (1), esta por sua vez envia seus comandos de descoberta à pilha UPnP

(2), e recebe dela os serviços disponíveis para informar à aplicação cliente. De posse dos

serviços, a aplicação pode descobrir a temperatura (4), e receber do módulo um formato

JSON contendo seu valor (6).

Após a veri�cação do valor da temperatura, a aplicação identi�cou que a mesma está

acima do desejado, então inicia sua comunicação com o módulo Bluetooth (protocolo do

atuador) para modi�car o estado da temperatura. Para isso, é necessário obedecer os

passos exigidos do protocolo: Buscar o termostato (7), ao encontrá-lo na rede, parear com

o mesmo (9), de modo que o protocolo nos conceda uma conexão válida com o dispositivo

para a comunicação, e en�m enviarmos a temperatura adequada (11), que na solução

exemplo é 20oC.

As operações necessárias executadas no exemplo, exigiriam demasiado esforço do pro-

cesso de desenvolvimento, especialmente pela natureza heterogênea da aplicação. Desta

forma, há a necessidade de compreender como cada dispositivo opera e quais são as suas

capacidades de serviço, como são implementados, como podem ser acessados e con�gu-

Page 49: Uma proposta de framework para facilitar o desenvolvimento ......Uma proposta de framework para facilitar o desenvolvimento de aplicações baseadas em IoT / Dannylo Johnathan Bernardino

47

rados remotamente, e tais questionamentos possuem respostas bem diferentes para cada

dispositivo. Tal di�culdade exige grande esforço de desenvolvimento para lidar com todos

os protocolos envolvidos.

Nossa proposta, cujo objetivo é tratar os dispositivos heterogêneos de maneira uni�-

cada e homogênea, buscará auxiliar a integração destes dispositivos heterogêneos, dimi-

nuindo o esforço de desenvolvimento da aplicação. O problema da Figura 14, utilizando

a nossa abordagem, é ilustrado na Figura 15.

Figura 15: Aplicação IoT utilizando o framework para simpli�car o desenvolvimento.

Os componentes da aplicação serão abstraídos como dispositivos virtuais na lógica

de aplicação, com propriedades e comportamentos de�nidos em um modelo virtualizado

único. Desta forma, os sensores de temperatura e o termostato serão considerados dispo-

sitivos virtuais dotados de métodos de interação com seus respectivos dispositivos reais,

de maneira que as especi�dades funcionais de cada um deles sejam abstraídas e tratadas

pelo framework.

As suas capacidades serão abstraídas a partir de drivers que estão incluídos no fra-

mework. Esses drivers, ao serem adicionados no framework, tornam-se Proxies que sabem

lidar com as capacidades individuais de cada protocolo, e consequentemente tornam o

framework capaz de realizar as operações necessárias nos dispositivos que eles atendem.

Neste caso especí�co, os Proxies UPnP e do Bluetooth necessitariam estar adicionados na

estrutura do framework.

Na Figura 15, podemos notar uma expressiva diminuição de passos para realizar o

objetivo da aplicação cliente, neste novo modelo de aplicação, o framework descobrirá(1)

e registrará nele(2) todos os dispositivos na rede (de acordo com os proxies que possui)

como tarefa inicial. Em seguida, todos os dispositivos encontrados se tornarão dispositivos

virtuais, possuindo métodos capazes de comunicarem-se com seus dispositivos reais e ocul-

Page 50: Uma proposta de framework para facilitar o desenvolvimento ......Uma proposta de framework para facilitar o desenvolvimento de aplicações baseadas em IoT / Dannylo Johnathan Bernardino

48

tando suas características especí�cas do ponto de vista da aplicação cliente. Desta forma,

a aplicação cliente poderá descobri-los, independente do protocolo utilizado, solicitar da-

dos aos dispositivos que desejar (4 e 5); Este caso especí�co solicita a temperatura ao

sensor e envia a nova temperatura ao termostato, recebendo ao termino destas operações,

um formato JSON padronizado com as respostas das possíveis requisições.

4.2 Arquitetura Proposta

Está seção descreve detalhadamente a arquitetura para o framework proposto por

este trabalho, sendo assim, será exposto a visão geral da arquitetura proposta e como

seus componentes constituintes estão estruturados.

4.2.1 Visão Geral

A Figura 16 ilustra a visão geral da arquitetura proposta para o framework. A ar-

quitetura foi proposta de maneira centralizada e está considerando as operações básicas

e elementares de aplicações baseadas em princípios IoT de modo a haver uma interação

correta entre o framework e os dispositivos físicos presentes na aplicação. As operações

consideradas na arquitetura foram: Registro, atualização de status, e descoberta de dis-

positivos.

Figura 16: Visão geral da Arquitetura

A operação de registro torna o dispositivo conhecido ao framework, registrando-o

no Gerenciador de Dispositivos, de modo a considerá-lo, a partir do seu registro, como

entidade virtualizada a ser utilizada na lógica de aplicação. Este processo ocorre imedi-

atamente após a descoberta do dispositivo físico pelo Tradutor Proxy, tal processo será

Page 51: Uma proposta de framework para facilitar o desenvolvimento ......Uma proposta de framework para facilitar o desenvolvimento de aplicações baseadas em IoT / Dannylo Johnathan Bernardino

49

descrito em maiores detalhes nas seções posteriores.

A operação de atualização de status ocorre periodicamente para evitar que algum

dispositivo inoperável possa estar sendo disponibilizado no framework, em casos de ino-

perabilidade, este será removido do Gerenciador de Dispositivos e desconsiderado pela

operação de descoberta do mesmo. Todo este processo é coordenado pelo Módulo Health

(Vide Seção 4.2.5).

A operação de descoberta de dispositivos ocorre em dois momentos: O primeiro durante

o processo de descoberta do Tradutor Proxy que encapsulará cada dispositivo descoberto

em uma instância de Dispositivo Virtual. O segundo momento ocorre quando é invocado

pela aplicação cliente através dos métodos de descoberta do Gerenciador de Dispositivos,

neste segundo, os dispositivos retornados no processo de descoberta já serão dispositivos

virtualizados.

A arquitetura é basicamente estruturada em três camadas: A camada de Dispositivos

Físicos, que concentra todos os dispositivos reais que estão contidos na solução baseada

em IoT, suas capacidades individuais de processamento e comunicação. Logo acima, está

a camada denominada Tradutor Proxy, nesta estão dispostos os drivers dos protocolos

de comunicação inerentes aos dispositivos existentes na infra-estrutura da solução, cada

driver implementa uma interface comum que o representará como um Proxy válido para

o framework. Esta camada é responsável por tornar os dispositivos comunicáveis e reco-

nhecidos no framework, buscando reduzir os impactos de protocolos heterogêneos.

Por �m, a camada mais alta da arquitetura concentra a ideia principal do framework.

É a camada responsável pela abstração dos dispositivos físicos e dos processos de comu-

nicação que os constituem. Esta camada é dividida em quatro componentes: Dispositivo

Virtual, Servidor CoAP, Gerenciador de Dispositivos e Modulo Health, tais componentes

serão explicados em maiores detalhes na seções seguintes.

4.2.2 Dispositivo Virtual

Uma dispositivo virtual é uma representação virtualizada do dispositivo físico pre-

sente no contexto da infra-estrutura da solução IoT. Este encapsulará as capacidades do

dispositivo físico de modo a que elas possam ser oferecidas à aplicação cliente através

de métodos padronizados. Virtualizar um dispositivo garantirá uniformidade na manipu-

lação dos mesmos durante o processo de desenvolvimento da lógica de aplicação, visto

que todos os dispositivos, independentemente de suas características individuais, serão

Page 52: Uma proposta de framework para facilitar o desenvolvimento ......Uma proposta de framework para facilitar o desenvolvimento de aplicações baseadas em IoT / Dannylo Johnathan Bernardino

50

representados através desta virtualização.

Figura 17: Estrutura do dispositivo virtual.

A Figura 17 representa a estrutura interna de um Dispositivo Virtual, este é com-

posto por dois grupos de componentes: O primeiro grupo (Comunicação) representa os

componentes essenciais para comunicação do Dispositivo Virtual com seu Dispositivo real,

o segundo grupo (De�nição), representa os atributos que de�nem (identi�cam) o Dispo-

sitivo Virtual no framework.

4.2.2.1 Componentes de De�nição

Os componentes de de�nição estão concentrados em de�nir os atributos que identi-

�cam unicamente o dispositivo virtual no framework, armazenando os metados que os

de�nem no mundo físico. São compostos da seguinte forma:

• Identi�cação: Armazena no Dispositivo Virtual as informações que o identi�cam

unicamente no framework. As informações que podem ser consideradas como parte

da Identi�cação de um dispositivo incluem: ID único, tipo de dispositivo, descrição

nominal do dispositivo, fornecedor, versão, etc;

• Recursos: Representa uma descrição nominal de um grupo de tarefas que pode ser

realizada por um dispositivo, tais como: Controlar Temperatura, Controlar Energia,

etc. Um Recurso pode possuir uma ou várias ações.

• Ações: Representa uma descrição nominal de cada tarefa que pode ser realizada pelo

dispositivo, tais como: Desligar Luz, Ligar Luz, Veri�car Status da Temperatura,

etc. Cada ação pertence obrigatoriamente a um Recurso.

Page 53: Uma proposta de framework para facilitar o desenvolvimento ......Uma proposta de framework para facilitar o desenvolvimento de aplicações baseadas em IoT / Dannylo Johnathan Bernardino

51

4.2.2.2 Componentes de Comunicação

Os componentes de comunicação são utilizados para estabelecerem a comunicação

entre a virtualização (Dispositivo Virtual) e o seu Dispositivo real. Estão dispostos da

seguinte forma:

• Recurso CoAP: Trata-se de uma representação de uma Ação através de uma

URL nos padrões exigidos pelo Protocolo CoAP, como exemplo: Se temos uma ação

nomeada como Veri�car Status Temperatura, teremos um Recurso CoAP nomeado

como coap://0.0.0.0/01/Veri�carStatusTemperatura. Onde 01 é o identi�cados do

dispositivo descoberto.

• Cliente CoAP: Um Cliente CoAP representa uma instância que consegue se co-

municar com os Recursos CoAP válidos no Servidor CoAP. Desta forma, quando

o dispositivo deseja requisitar alguma ação, ele utilizará o Cliente CoAP para isso,

passando para este o Recurso CoAP desejado.

• Proxy: Representa uma instância do Proxy que descobriu o seu dispositivo físico

no processo de descoberta realizado pelo Tradutor Proxy.

Todos os Recursos e Ações disponibilizados pelos dispositivos serão abstraídos e ge-

renciados utilizando o protocolo CoAP, que nos oferece uma estrutura cliente-servidor

habilitado para redes e dispositivos restritos. Desta forma, cada ação identi�cada no pro-

cesso de descoberta é transformada em um Recurso CoAP e adicionada no Servidor CoAP.

O Servidor CoAP gerenciado pelo framework, será responsável por intermediar toda

a comunicação entre os proxies e seus dispositivos virtualizados. Desta forma, cada cha-

mada à seus métodos de interação iniciará os endpoints responsáveis por cada Recurso no

Servidor CoAP. Um endpoint é um Recurso CoAP representado através da sua URL e os

métodos de interação citados representam procedimentos capazes de realizarem a comu-

nicação entre o dispositivo virtual e o dispositivo físico, estes são de�nidos na interface

comum exigida para um Dispositivo Virtual.

O uso do protocolo CoAP no processo de comunicação com os recursos dos dispo-

sitivos justi�ca-se devido à possibilidade de haver outras aplicações cliente que possam

necessitar usar dos serviços da solução IoT. Estas outras aplicações não necessitariam

obrigatoriamente do framework, desde que conheçam os endpoints que ele disponibilizará.

Tal abordagem diminuiria os impactos da limitação de recursos, pois toda a comunicação

com os recursos se daria através do CoAP.

Page 54: Uma proposta de framework para facilitar o desenvolvimento ......Uma proposta de framework para facilitar o desenvolvimento de aplicações baseadas em IoT / Dannylo Johnathan Bernardino

52

4.2.3 Gerenciador de Dispositivos

O gerenciador de dispositivos é um componente responsável por registrar e manter

armazenados todos os dispositivos descobertos e virtualizados pela camada do Tradutor

Proxy. Ele é o ponto de acesso da aplicação cliente à todos os dispositivos que estão

virtualizados.

Ele possui mecanismos de descoberta dinâmica, onde a aplicação cliente poderá utilizar-

se de semânticas de busca mais abrangentes, tais como: buscar por nome ou parte do nome

do dispositivo, pelo seu identi�cador, pelo seu tipo, etc. Todo dispositivo que não está

registrado no Gerenciador é desconsiderado pelo framework.

4.2.4 Servidor CoAP

O Servidor CoAP, é uma estrutura interna que gerenciará todos os recursos e ações dos

dispositivos descobertos, estes que foram transformados em Recursos CoAP. Tais recursos

possuem uma URL própria de�nida no momento da virtualização e garantem que toda a

comunicação com os recursos do dispositivo se dê através do protocolo CoAP, evitando

situações inesperadas ao lidar com dispositivos e redes restritas.

Os recursos do Servidor CoAP, que representam os recursos e ações dos Dispositivos

da solução IoT podem também ser acessados através dos endpoints fornecidos no momento

da execução do framework, estes endpoints são as URL's acima citadas e podem tanto

retornar informações dos dispositivos quanto modi�car seu estado.

4.2.5 Módulo Health

O módulo Health trata-se de um módulo que veri�cará periodicamente o estado de

"saúde"dos dispositivos da aplicação. Ele será importante visto a necessidade dos dis-

positivos físicos envolvidos na infra-estrutura da solução IoT estarem sempre disponíveis

e em seu funcionamento pleno para que a lógica de aplicação não venha a falhar por

falta de disponibilidade de algum dispositivo. Desta forma, o módulo é responsável por

permanecer em estado de monitoramento de todos os dispositivos que estão registrados,

cancelando o registro daqueles que por ventura não apresentem condições viáveis ou fa-

lhem em responder a alguma solicitação do Módulo Health.

O monitoramento inicia a partir da primeira descoberta de Dispositivos efetuada pelo

Tradutor Proxy. Este monitoramento ocorre através da operação de atualização de status,

Page 55: Uma proposta de framework para facilitar o desenvolvimento ......Uma proposta de framework para facilitar o desenvolvimento de aplicações baseadas em IoT / Dannylo Johnathan Bernardino

53

que periodicamente solicitará a descoberta dos dispositivos na rede, aguardando destes

alguma resposta. Nos casos de negação reincidente, isto é, quando o dispositivo deixa de

responder à solicitação por mais de três vezes, seu registro é cancelado no Gerenciador de

Aplicações, e consequentemente, �ca indisponível nas operações de descoberta. A operação

de atualização de status se repete, após a primeira veri�cação, a cada 30 segundos.

4.2.6 Tradutor Proxy

O Tradutor Proxy trata-se de um componente da arquitetura que estará responsável

por lidar diretamente com os dispositivos físicos pertencentes à aplicação. Ele conterá

os múltiplos drivers de protocolos de comunicação que possibilitarão a comunicação dos

dispositivos virtuais com os dispositivos reais. Proxies representam instâncias de drivers

que são implementados obedecendo a interface exigida pelo Tradutor Proxy. Este módulo

possibilitará o mapeamento entre o dispositivo virtual e o seu respectivo dispositivo físico

nas múltiplas atividades que o framework poderá realizar.

Figura 18: Funcionamento do Tradutor Proxy.

O �uxo de trabalho dessa camada é basicamente voltado aos mecanismos próprios de

cada proxy, de modo que funções tipicas de descoberta de dispositivos na rede, envio e

consulta de dados para cada dispositivo esteja obrigatoriamente implementada e disponí-

vel. Desta forma, o processo de descoberta dos dispositivos desta camada implica que cada

proxy irá realizar seus processos de descoberta e encapsulará por conseguinte os dispo-

sitivos encontrados em Dispositivos Virtuais, registrando em suas respectivas instâncias,

a instância do proxy responsável pela operação, seus recursos e ações que pode realizar.

Recursos e Ações foram explicados em maiores detalhes na seção 4.2.2.

Realizado o encapsulamento dos dispositivos virtuais, ocorre o registro dos Recursos

Page 56: Uma proposta de framework para facilitar o desenvolvimento ......Uma proposta de framework para facilitar o desenvolvimento de aplicações baseadas em IoT / Dannylo Johnathan Bernardino

54

CoAP no Servidor CoAP que é disponibilizado pelo framework. Estes recursos são mape-

ados de acordo com os Recursos e Ações que foram de�nidos na instância do Dispositivo

Virtual no momento de sua descoberta, assim como mencionado na seção 4.2.2. Por �m, os

dispositivos virtualizados são registrados no Gerenciador de Dispositivos para tornarem-se

disponíveis.

Uma outra característica do tradutor proxy, é que novos proxys que podem ser pro-

venientes de novos protocolos ou de novas versões de protocolos ja existentes podem ser

posteriormente adicionados nesta camada, respeitando a interface comum disponibilizada

que exigirá implementação de descoberta, transmissão e envio de dados aos dispositivos,

bem como o registro dos recursos e ações de cada dispositivo virtual no servidor CoAP,

no momento de sua descoberta.

O fato de poder adicionar novos proxies ao tradutor proxy adiciona certa extensibili-

dade ao framework, contudo, para que o framework reconheça o novo proxy, características

voltadas à arquitetura precisam ser atendidas na implementação dos métodos exigidos,

especialmente no método de descoberta, que exigirá a de�nição da descrição do disposi-

tivo, recursos do dispositivo, ações de cada recurso que ele pode realizar, parâmetros das

ações que podem ser modi�cados, possíveis saídas de dados das ações, etc. Tal arquite-

tura foi baseada nos princípios arquiteturais do UPnP1, e são obrigatoriamente exigidas

na implementação dos métodos de descoberta existentes no Proxy.

É importante considerar que alguns protocolos de comunicação não possuem recursos

de alto nível nativos em sua estrutura, tais como a descoberta automática de dispositivos.

Desta forma, para que o proxy esteja em conformidade com a arquitetura, o desenvolvedor

precisará implementar estes recursos adicionais utilizando como base o que o protocolo

pode oferecer.

4.3 Comunicação entre Dispositivos Virtuais

A comunicação entre os dispositivos é representada na Figura 19, e ilustra a forma

como o framework lidará com os Dispositivos Virtuais no processo de execução da aplica-

ção cliente. A comunicação utilizará apenas métodos dos Dispositivos Virtuais, de�nidos

especi�camente para a �nalidade de interação com os Dispositivos reais, os métodos são:

getDataEvent(action) e sendEvent(action, params) e são de�nidos a seguir.

1https://openconnectivity.org/developer/speci�cations/upnp-resources/upnp

Page 57: Uma proposta de framework para facilitar o desenvolvimento ......Uma proposta de framework para facilitar o desenvolvimento de aplicações baseadas em IoT / Dannylo Johnathan Bernardino

55

• getDataEvent(action): Este método é responsável por solicitar alguma informação

de uma determinada ação do dispositivo que invocou o método. A ação representa

o que o dispositivo pode realizar, elas são de�nidas no momento da descoberta dos

dispositivos realizada pela camada do Tradutor Proxy, este processo é descrito na

Seção 4.2.6. O Método getDataEvent sempre deve ser utilizado em ações que retor-

nam alguma informação dos dispositivos, por exemplo: Uma ação que é invocada

para descobrir a temperatura de um determinado sensor.

• sendEvent(action, params): Este método envia dados para o dispositivo. As ações

de�nidas neste caso, são ações que modi�cam o estado dos dispositivos que as invo-

cam, invocar este método não retornará nenhum valor, mas modi�cará o estado do

dispositivo que o invocou, por exemplo: Desligar uma luz de LED.

Figura 19: Estrutura de comunicação entre os dispositivos.

Os Dispositivos Virtuais envolvidos no processo de comunicação precisam ser desco-

bertos pela Aplicação Cliente através do Gerenciador de Dispositivos. Caso algum dis-

positivo solicitado não seja retornado pelo método de descoberta, então signi�ca que ele

não está operável, em outras palavras, disponível para utilização da Aplicação, ou não

foi identi�cado pelo Tradutor Proxy durante a execução dos métodos de descoberta dessa

camada.

Para os Dispositivos Virtuais comunicarem-se com seus Dispositivos reais, são utili-

zados como intermediadores, os Recursos CoAP que foram explicados na seção 4.2.2.2.

Desta forma, quando a aplicação invoca qualquer método de interação dos Dispositivos

Virtuais (getDataEvent ou sendEvent), o método é direcionado para o Recurso CoAP que

representa a ação desejada e por sua vez direciona a chamada do método ao seu Proxy

que também possui um método de interação similar (getData ou send) para que possa

Page 58: Uma proposta de framework para facilitar o desenvolvimento ......Uma proposta de framework para facilitar o desenvolvimento de aplicações baseadas em IoT / Dannylo Johnathan Bernardino

56

executar as ações no Dispositivo real, podendo retornar, ou não, alguma informação para

a aplicação cliente que invocou a ação.

4.4 Operacionalização da Solução

Esta seção descreve como a solução proposta funcionará na prática, descrevendo como

os componentes descritos na seção anterior irão interagir para atingir o objetivo esperado

pelo framework deste trabalho.

A Figura 20 ilustra como o framework estará disposto no processo de desenvolvimento

de uma Aplicação Cliente que utilizará uma solução IoT. Inicialmente o framework irá

descobrir cada Dispositivo na rede, esse passo é desenvolvido pelo Tradutor Proxy des-

crito na seção 4.2.6, o processo de descoberta é especí�co e particular de cada protocolo

implementado como um Proxy. Sendo assim, o framework executará para cada proxy exis-

tente, o seu método de descoberta. Descobrir um dispositivo implicará em encapsulá-lo

em uma instância de Dispositivo Virtual, que consequentemente o fará ter um tratamento

padronizado e único, independente de suas especi�dades funcionais.

O passo de descoberta dos Dispositivos realizado pelo Tradutor Proxy fará com que

o framework tenha consciência da existência dos dispositivos presentes na infraestrutura

da solução IoT, registrando-os no Gerenciador de Dispositivos e dando condições neces-

sárias para o desenvolvimento da Aplicação Cliente, que lidará apenas com Dispositivos

Virtuais e seus métodos padronizados de interação mencionados na seção 4.2.4, tais virtu-

alizações serão acessíveis por métodos de descoberta que são fornecidos pelo Gerenciador

de Dispositivos.

Cada invocação que for feita aos métodos de interação do Dispositivo Virtual (Vide

seção 4.3) irá direcionar a requisição ao Proxy do seu protocolo, que por sua vez se comu-

nicará com seu Dispositivo Real, executando a operação neste e retornando o resultado

para a aplicação cliente. Nesta estrutura, o framework sempre estará apto a captar os

dados que os dispositivos sensores (ex.: temperatura, luminosidade, etc.) podem estar

emitindo ou poderão enviar comandos especí�cos aos dispositivos atuadores (ex.: termos-

tato, controladores de luz, etc.).

Durante o ciclo de funcionamento do framework haverá imediatamente após a desco-

berta dos dispositivos, uma veri�cação do estado operacional dos dispositivos descobertos

e registrados no Gerenciador de Dispositivos. Esta veri�cação é de�nida pelo Módulo He-

alth descrito na seção 4.2.5. Tal veri�cação garantirá que apenas dispositivos operáveis e

Page 59: Uma proposta de framework para facilitar o desenvolvimento ......Uma proposta de framework para facilitar o desenvolvimento de aplicações baseadas em IoT / Dannylo Johnathan Bernardino

57

Figura 20: Estrutura operacional do Framework

disponíveis estejam sendo utilizados pela aplicação cliente.

Desta forma, será possível escrever a lógica da aplicação cliente, lidando apenas com

virtualizações dos dispositivos, de modo que todos sejam acessados através de um único

modelo (Dispositivo Virtual), independentemente de suas especi�dades funcionais (UPnP,

Bluetooth, ZigBee, etc.). O framework disponibilizará os Dispositivos Virtuais à aplicação

cliente a partir do Gerenciador de Dispositivos e toda a comunicação será feita a partir

destas virtualizações.

4.5 Desenvolvimento da Solução

Esta seção descreve como a solução foi projetada para atingir o objetivo proposto

neste trabalho. A solução buscará abstrair as complexidades inerentes à heterogeneidade

dos dispositivos e protocolos, fornecendo virtualizações dos dispositivos com métodos bem-

de�nidos para o uso da aplicação cliente. O protótipo foi projetado utilizando a Linguagem

Java.

4.5.1 Estrutura da Solução

A Figura 21 representa o diagrama de classes da estrutura geral do framework, nela

estão ilustradas as classes que irão compor o framework e como estas interagem para

atingir o objetivo proposto.

É possível perceber que todas as implementações de proxies existentes no framework

devem obedecer a interface IProxy e implementar os métodos essenciais para o funciona-

mento padrão do framework, os métodos exigidos são:

Page 60: Uma proposta de framework para facilitar o desenvolvimento ......Uma proposta de framework para facilitar o desenvolvimento de aplicações baseadas em IoT / Dannylo Johnathan Bernardino

58

Figura 21: Diagrama de Classes da estrutura do Framework

• discoveryAll(): Este método deve realizar a busca dos dispositivos na rede utilizando-

se do proxy do protocolo implementado. Ao descobrir os dispositivos, deve encapsula-

lo em Dispositivos (VirtualDevice). Este processo também contempla a de�nição

dos recursos (Resource) e as ações (actions) que estão sendo disponibilizadas pelos

dispositivos encontrados pelo proxy. Ações e Recursos representam as capacidades

inerentes a cada dispositivo (Vide Seção 4.2.2.1), isto é, tarefas que o Dispositivo

consegue realizar. De�nidos os Resources e actions, seus respectivos Recursos CoAP

(AbstractCoapResource) também o serão, sendo posteriormente adicionados no Ser-

vidor CoAP para tornarem-se disponíveis.

• getData(device: VirtualDevice, action:String): Este método é capaz de solicitar ao

dispositivo físico, através de sua representação virtual (device) informações referen-

tes a uma determinada ação (action).

• send(device:VirtualDevice, action: String, params:Map<String, String>): É o mé-

todo responsável por enviar dados (params) para uma ação (action) de entrada do

dispositivo (device). Estes dados são capazes de modi�car o estado do dispositivo

de acordo com a ação passada por parâmetro. Para os dados enviados, é necessário

uma estrutura de mapeamento que identi�que os parâmetros (params) que recebe-

rão os novos valores, estes parâmetros geralmente são variáveis de estado próprias

de cada dispositivo. Este método é exclusivamente utilizado para modi�car o estado

dos dispositivos. Os parâmetros se tornam conhecidos no processo de descoberta

realizado pelo Proxy.

O Dispositivo Virtual (VirtualDevice) possui dois métodos básicos de interação: get-

DataEvent(action:String) e o sendEvent(action:String, params: Map<String, String>),

Page 61: Uma proposta de framework para facilitar o desenvolvimento ......Uma proposta de framework para facilitar o desenvolvimento de aplicações baseadas em IoT / Dannylo Johnathan Bernardino

59

ambos estão diretamente relacionados com o proxy que o encapsulou. Desta forma, qual-

quer invocação destes métodos irá iniciar os respectivos métodos do proxy, neste caso, o

getDataEvent invocará o getData, e o sendEvent invocará o send de seu proxy.

Contudo, estas invocações serão intermediadas e gerenciadas pelo AbstractCoapRe-

source, que representa um Recurso CoAP no framework. Toda instância do VirtualDevice

encapsulará suas capacidades através de instâncias de Recursos (Resource), elas descre-

vem os serviços que cada dispositivo dispõe para a aplicação, nestes recursos podem estar

descritas as ações que eles são capazes de efetuar. Ações são atividades efetivas que são

realizadas pelo próprio dispositivo (Vide Seção 4.2.2.1), estas podem ser ações de entrada,

que recebem parâmetros e modi�cam seus estados ou ações de saída, que podem enviar

dados do próprio dispositivo a quem as invocou. Os recursos devem ser obrigatoriamente

tratados na implementação dos Proxies.

O VirtualDevice também armazenará instâncias de Recursos CoAP. O framework

abstrai essa característica através da classe abstrata AbstractCoapResource. Esta classe

pode ser especializada em duas outras classes: De entrada de dados (DefaultCoapInpu-

tResource) ou de saída de dados (DefaultCoapOutputResource), ambas são especi�cações

da classe CoapResource da API Californium2. Tal API foi projetada para dar suporte à

comunicações CoAP em Java e é utilizada pelo framework na manipulação do protocolo

CoAP.

Assim como descrito anteriormente, cada grupo de ações é abstraído e encapsulado

em sua respectiva instância de Recurso CoAP (DefaultCoapInputResource ou DefaultCo-

apOutputResource) no processo de descoberta (discoveryAll()) do proxy. Após abstraídos

nestas entidades, são por �m adicionadas no Servidor CoAP que é gerenciado pelo Fra-

mework. O Servidor CoAP é de�nido e iniciado também utilizando-se da API Californium.

Por �m, o Gerenciador de Dispositivos (DeviceManager) registra cada dispositivo

virtual encontrado no processo de descoberta do Proxy e disponibiliza-os através dos

métodos de descoberta dinâmica que ele de�ne em sua estrutura, tais métodos permitem

consultas por parte do nome, identi�cador único, característica (tais como temperatura,

luz, umidade, etc.) e provê também um método capaz de retornar todos os dispositivos

encontrados no processo de descoberta do framework (discoveryAll()).

2https://www.eclipse.org/californium/

Page 62: Uma proposta de framework para facilitar o desenvolvimento ......Uma proposta de framework para facilitar o desenvolvimento de aplicações baseadas em IoT / Dannylo Johnathan Bernardino

60

4.5.2 Instanciação do Framework

Esta seção discorre sobre os passos necessários para a instanciação do framework no

processo de desenvolvimento de aplicações baseadas em IoT. O framework será disponibi-

lizado através de um arquivo compilado Java (.jar) que deve ser adicionado ao classpath da

aplicação IoT. Todo o processo de instanciação ocorrerá através da classe Core, ela é res-

ponsável por métodos que solucionam as dependências necessárias para o funcionamento

do framework.

O método base para a resolução destas dependências é denominado start(). Tal método

deve ser obrigatoriamente invocado antes da utilização dos outros recursos do Framework.

As dependências acima citadas basicamente resumem-se em buscar os proxies existentes na

camada do Tradutor Proxy e veri�car se existem proxies de�nidos por parte da aplicação

cliente.

Figura 22: Con�guração do con�g.properties para de�nir proxies externos ao framework.

Um arquivo deve ser criado no diretório raiz da aplicação cliente, o framework irá

processá-lo para de�nir suas diretrizes de execução, tais diretrizes são ilustradas na Fi-

gura 22. O arquivo citado é denominado con�g.properties e deve conter duas propriedades:

application.proxy.package e ignore.default. A primeira propriedade é responsável por in-

dicar o pacote que conterá os proxies adicionais que foram de�nidos de maneira externa

ao framework. Quando esta propriedade não é de�nida, o framework considerará apenas

os proxies de�nidos por ele mesmo.

A segunda propriedade pode assumir apenas dois valores, yes ou no. Esta propriedade

informará ao framework se ele deve ignorar seus proxies padrão ou deve considera-los

durante o processo de execução da aplicação cliente. Esta rotina foi de�nida para ocasiões

em que o dispositivo que executará a aplicação cliente apresente alguma incompatibilidade

com os proxies já de�nidos nativamente pelo framework, ignorando-os e evitando erros

inesperados. Todo o processo de instanciação do framework é demonstrado no diagrama

de atividade ilustrado na Figura 23.

A Listagem 4.1 demonstra o código necessário para iniciar o processo ilustrado na

Figura 23. Após o processo de resolução das dependências dos proxies, desencadeada

pela invocação do método start() (Linha 1), os dispositivos poderão ser buscados através

do DeviceManager e seus métodos de descoberta, na Listagem 4.1, a descoberta ocorre

Page 63: Uma proposta de framework para facilitar o desenvolvimento ......Uma proposta de framework para facilitar o desenvolvimento de aplicações baseadas em IoT / Dannylo Johnathan Bernardino

61

Figura 23: Instanciação do Framework.

através de parte do nome do dispositivo (Linhas 2 e 3).

1 Core . s t a r t ( ) ;

2 VirtuaDevice s enso r = DeviceManager . d i s cove ry ( " Sensor " )

3 . get ( 0 ) ;

Listagem 4.1: Iniciação do framework e descoberta de dispositivos

1 St r ing rawData = senso r . getDataEvent ( ResourceManager

2 . S en so rSe rv i c e

3 .GET_DATA_SENSOR) ;

Listagem 4.2: Solicitando dados dos dispositivos virtuais

Realizado estas operações, é possível interagir com os dispositivos virtualizados atra-

vés de seus métodos de interação. A Listagem 4.2 demonstra como recuperar os dados

capturados pelo sensor virtualizado. ResourceManager é a classe que mapeia todos ser-

viços e ações de�nidas pelos proxies no processo descoberta do Tradutor Proxy. No caso

da listagem, o método getDataEvent solicita ao sensor a ação GET_DATA_SENSOR do

serviço SensorService e armazena seus dados na variável rawData, os dados são retornados

em formato JSON.

1 VirtuaDevice actuator = DeviceManager . d i s cove ry ( "Actuator " )

2 . get ( 0 ) ;

3

4 HashMap<Str ing , Str ing> newValues = new HashMap<>();

Page 64: Uma proposta de framework para facilitar o desenvolvimento ......Uma proposta de framework para facilitar o desenvolvimento de aplicações baseadas em IoT / Dannylo Johnathan Bernardino

62

5 newValues . put ( ResourceManager . Actuato rSe rv i c e s

6 .NEW_VALUE, "OFF" ) ;

7

8 actuator . sendEvent ( ResourceManager

9 . Actuato rSe rv i c e s

10 .POWER_ACTION, newValues ) ;

Listagem 4.3: Enviando dados para os dispositivos virtuais

A Listagem 4.3 exempli�ca o envio de dados para modi�car o estado de um dispositivo

atuador. Na Listagem citada, é de�nido uma estrutura de mapeamento (Linhas 4 a 6)

na qual o parâmetros identi�cado como NEW_VALUE é modi�cado para "OFF". Em

seguida o método de interação sendEvent é invocado (Linhas 8 a 10), designando os

novos valores mapeados para a ação POWER_ACTION, modi�cando o valor do atuador

recuperado.

4.5.3 Núcleo e Pontos de Extensão

Para o framework proposto há apenas um ponto de extensão considerado, este é

responsável por adicionar novos proxies à camada de Tradutor Proxy do framework. Ele

garantirá que o framework considere além dos proxies que possui em sua estrutura, os

que a aplicação cliente possivelmente necessitará além dos já de�nidos.

4.5.3.1 Adicionando novos Proxies

Para esta característica extensível, o desenvolvedor precisará atentar para três con�-

gurações obrigatórias: A do con�g.properties, mencionada na seção anterior, a anotação

@ProxyTranslate e a implementação da interface IProxy. A anotação @ProxyTranslate é

a identi�cação de que a classe anotada representa um Proxy que deve ser considerado.

A interface IProxy, obriga à classe anotada a implementar os métodos obrigatórios que

serão utilizados no processo do start(). Tais métodos foram explicados na seção 4.5.1. A

forma de como utilizar tal anotação e a implementação da interface é exempli�cada na

Listagem 4.4.

1 @ProxyTranslate ( d e s c r i p t i o n = "UPnP" )

2 public class UPnpProxy implements IProxy

Listagem 4.4: Componentes necessários para a de�nição de um novo proxy na camada

Page 65: Uma proposta de framework para facilitar o desenvolvimento ......Uma proposta de framework para facilitar o desenvolvimento de aplicações baseadas em IoT / Dannylo Johnathan Bernardino

63

Proxy Translate

O framework possui implementado nativamente um proxy capaz de dar suporte à

descoberta e comunicação com dispositivos UPnP. Neste caso, após o método start()

ser invocado por qualquer aplicação cliente, quando as con�gurações de instanciação são

favoráveis, o proxy UPnP é iniciado e virtualizará os dispositivos descobertos pelo mesmo.

Oferecendo após esse processo, meios da aplicação cliente acessá-lo através de métodos

especí�cos de descoberta no DeviceManager (Vide seção 4.5.1).

Figura 24: Sequência de funcionamento do Proxy UPnP.

Na Figura 24 é possível observar que o ProxyUPnP teve seu método de descoberta

(discoveryAll()) invocado pelo contexto do framework (método start()) e todos os dispo-

sitivos descobertos na pilha UPnP foram então encapsulados como VirtualDevices. Após

o processo de encapsulamento, eles foram devidamente registrados (register()) no Devi-

ceManager. Depois destas operações, a Aplicação Cliente terá condições de invocar os

métodos de descoberta disponibilizados pelo DeviceManager e recuperar os dispositivos

de acordo com os parâmetros informados. O retorno destes métodos já são os dispositivos

virtualizados (VirtualDevice).

A partir das virtualizações retornadas pelo DeviceManager é possível utilizar os seus

métodos de interação (getDataEvent(action)) para comunicar-se com os seus respecti-

vos dispositivos físicos. É importante lembrar que as chamadas dos métodos de intera-

ção dos dispositivos virtuais implicam em chamadas à métodos similares no ProxyUPnP

(getData(device, action)) que possuem condições de comunicarem-se com os dispositivos

físicos.

Alguns proxies, no entanto, podem requerer processos intermediários e possuir espe-

Page 66: Uma proposta de framework para facilitar o desenvolvimento ......Uma proposta de framework para facilitar o desenvolvimento de aplicações baseadas em IoT / Dannylo Johnathan Bernardino

64

ci�cações próprias, como exemplo, um Proxy Bluetooth precisa de um processo de parea-

mento entre os dispositivos comunicantes antes de estabelecer-se uma comunicação entre

estes, bem como pode necessitar de API's de manipulações próprias de cada dispositivo

que hospeda o adaptador bluetooth (Android, iOS, etc.). Neste caso, para um dispositivo

Android por exemplo, uma extensão do framework seria necessária para lidar com a API

Bluetooth e as classes e regras de implementação que são próprias do Android.

Figura 25: Sequência de funcionamento do Proxy Bluetooth.

A Figura 25 demonstra como funcionará o Proxy Bluetooth seguindo a arquitetura

proposta pelo framework. O método de descoberta do Proxy será invocado (discoveryAll())

e ele então iniciará o processo de análise bluetooth, tal processo consiste em enviar uma

solicitação aos dispositivos bluetooth visíveis na rede e aguardar que eles respondam. Este

procedimento costuma demorar em torno de 12 segundos. Após a resposta, o proxy deve

identi�car qual dispositivo será utilizado na comunicação e aí então dá-se o processo

de pareamento. Pareados os dispositivos, o processo de virtualização inicia e logo em

seguida a de registro (register()). Toda a dinâmica de comunicação da aplicação cliente

ocorre de maneira similar à demonstrada na Figura 24. Só que nesta ilustração, o método

sendEvent() está enviando uma ação e aguardando que o proxy a execute, e retorne o

booleano evidenciando que o processo foi bem-sucedido.

4.5.3.2 O Núcleo

O núcleo do framework compreende o módulo que detém as funcionalidades que são

utilizadas pela aplicação cliente para a interação direta com o framework. Neste caso, as

classes pertencentes à esse módulo são a Core, responsável por inicializar a camada de

Page 67: Uma proposta de framework para facilitar o desenvolvimento ......Uma proposta de framework para facilitar o desenvolvimento de aplicações baseadas em IoT / Dannylo Johnathan Bernardino

65

Tabela 3: Serviços utilitários fornecidos pelo núcleo do framework.Chamadas Descrição

SampleCoapServer.getInstance()Recupera o servidor CoAP em execuçãono framework.

SampleCoapServer.getInstance().add()Adiciona ao servidor CoAP algum recursoCoAP que possa ser de�nido por um Proxyda Aplicação Cliente.

DeviceManager.register()Registra uma instância de um VirtualDeviceno DeviceManager.

ManagerFile.createFileActionsDiscovery()

Cria um arquivo no diretório do projetodenominado actions_discovered contendotodos os ações descobertas e virtualizadaspelo proxy em seus VirtualDevices.

VirtualDevice.createInstance() Cria uma instância da classe VirtualDevice.

Tradutor Proxy, através do método start(), a classe VirtualDevice, que possui métodos de

interação com o dispositivo físico (sendEvent e getDataEvent) e por �m a classe Device-

Manager que é utilizada para descobrir (método discovery()) os dispositivos virtualizados

no contexto do framework.

Alguns outros serviços podem ser fornecidos pelo framework para auxiliar a de�nição

do ponto de extensão mencionados anteriormente nesta seção. Estes serviços incluem

algumas chamadas de métodos que são descritas na Tabela 3.

O próximo capítulo tratará de avaliar o framework planejado e estruturado no capítulo

4. Para tal, métricas foram utilizadas no sentido de validar aspectos voltados à facilidade

de desenvolvimento.

Page 68: Uma proposta de framework para facilitar o desenvolvimento ......Uma proposta de framework para facilitar o desenvolvimento de aplicações baseadas em IoT / Dannylo Johnathan Bernardino

66

5 Avaliação do Framework

Este capítulo aborda o processo de avaliação do framework proposto no Capítulo 4.

Para tal, uma prova de conceito foi de�nida na seção 6.1 na qual foi apresentado o cenário

e sua avaliação sob o ponto de vista da facilidade de desenvolvimento.

5.1 Prova de Conceito

Esta seção descreve uma prova de conceito que baseia-se em um cenário de controle

básico de temperatura de um ambiente qualquer. Para tal, dispositivos de capacidades

heterogêneas foram envolvidos e a aplicação �nal utilizou-se do framework proposto por

este trabalho. Sendo assim, o objetivo desta prova de conceito é o de avaliar o esforço

de desenvolvimento de aplicações IoT utilizando o framework proposto. O planejamento

e organização foram baseados nas diretrizes estabelecidas por Aberdeen (ABERDEEN,

2013), Kitchenham(KITCHENHAM; PICKARD; PFLEEGER, 1995) e Runeson (RUNESON;

HÖST, 2009).

5.1.1 Planejamento

O planejamento envolve a de�nição das questões de pesquisa de interesse desta avali-

ação, os sujeitos envolvidos, o objeto utilizado, as unidades de análise e os procedimentos

de�nidos para a coleta dos dados. Os passos citados foram de�nidos nas seções seguintes.

5.1.1.1 Questões de Pesquisa

Para atingir os objetivos de�nidos para a prova de conceito, as seguintes questões de

pesquisa precisam ser respondidas:

1. Qual o impacto do uso do framework em uma aplicação IoT quanto à diminuição

do esforço de codi�cação de seu desenvolvimento?

Page 69: Uma proposta de framework para facilitar o desenvolvimento ......Uma proposta de framework para facilitar o desenvolvimento de aplicações baseadas em IoT / Dannylo Johnathan Bernardino

67

2. Qual o impacto que pode haver no aumento da quantidade de dispositivos envol-

vidos na aplicação no tocante à complexidade de codi�cação da aplicação que utiliza o

framework?

Para responder tais questões, uma aplicação utilizando-se do framework proposto

como base foi implementado. A implementação considerou a existência de sensores e atu-

adores simulados com protocolos de comunicação heterogêneos. As aplicações tiveram os

dados de interesse da avaliação coletados (Vide seção 5.1.1.5) na qual aplicou-se métricas

de LOC e Complexidade Ciclomática para a análise e construção das respostas.

5.1.1.2 Sujeitos

O aplicação implementada, utilizando-se do framework proposto foi utilizada pelo

próprio pesquisador e autor deste trabalho. O mesmo possui experiência em desenvolvi-

mento de aplicações móveis e na linguagem Java. Desta forma, o sujeito envolvido nesta

prova de conceito é o criador do framework proposto.

5.1.1.3 Objeto

O objeto utilizado na prova de conceito é um cenário de controle de temperatura

através de sensores e termostatos de capacidades de comunicação heterogêneas. A escolha

de cenário se deu devido à simplicidade da estrutura, no entanto o foco principal é a di-

versidade de dispositivos de capacidades heterogêneas. Para tal, uma aplicação cliente foi

implementada utilizando-se do framework proposto para a manipulação dos dispositivos

presentes na infraestrutura IoT. A aplicação cliente poderá ler os dados que o senso-

res de temperatura possuírem e enviar um comando de modi�cação de estado (quando

necessário) ao termostato.

Figura 26: Cenário do experimento utilizado como objeto de estudo.

O framework destacado na aplicação cliente, assim como ilustrado na Figura 26 re-

Page 70: Uma proposta de framework para facilitar o desenvolvimento ......Uma proposta de framework para facilitar o desenvolvimento de aplicações baseadas em IoT / Dannylo Johnathan Bernardino

68

presenta o foco da avaliação. Pois ele é o responsável por abstrair, do ponto de vista da

aplicação cliente, a heterogeneidade presente no cenário apresentado.

5.1.1.4 Unidades de análise

Duas unidades de análise foram de�nidas: A aplicação cliente desenvolvida com base

no framework proposto, que terá seu desenvolvimento analisado após a utilização do

framework e uma aplicação cliente desenvolvida com a mesma �nalidade da primeira,

mas sem o uso do framework, que também será analisada a �ns de comparação com a

primeira unidade. As análises compreendem avaliar os aspectos voltados à facilidade de

desenvolvimento utilizando o framework proposto.

5.1.1.5 Coleta de Dados

Os seguintes dados foram coletados neste estudo de caso:

1. As linhas de código da aplicação cliente desenvolvida com base no framework.

2. As linhas de código da aplicação cliente sem o auxílio do framework proposto.

A coleta considerou linhas de import, comentários e espaços em branco. Para as mé-

tricas utilizadas, Sharma (SHARMA et al., 2012) acredita ser importante considerar tais

linhas.

5.1.2 Execução

Esta seção descreve a execução do processo de avaliação da prova de conceito proposta

pelas seções anteriores. Nela está descrito como ocorreu o processo de desenvolvimento

da aplicação e como foram coletados os dados necessários evidenciados na Seção 6.1.1.5

para a análise dos aspectos de simpli�cação de desenvolvimento objetivados pela proposta

deste trabalho.

5.1.2.1 A aplicação

O caso de teste utilizou dois protocolos distintos, Bluetooth e UPnP. Para viabilizar

a construção da aplicação, utilizou-se a plataforma Android, já que a mesma possui uma

rica API voltada à manipulação de adaptadores Bluetooth.

Desta forma, uma aplicação Android foi criada para simular um termostato. Para tal,

Page 71: Uma proposta de framework para facilitar o desenvolvimento ......Uma proposta de framework para facilitar o desenvolvimento de aplicações baseadas em IoT / Dannylo Johnathan Bernardino

69

a API Bluetooth1 foi utilizada na de�nição das rotinas do aplicativo, permitindo que a

temperatura pudesse ser de�nida a partir da própria aplicação ou através de um comando

remoto enviado por um canal de comunicação Bluetooth. A aplicação em sua versão �nal

é ilustrada na Figura 27. O sensor de temperatura utilizar-se-á do UPnP como protocolo

de comunicação, e foi simulado programaticamente através do Cling2.

Figura 27: Aplicativo Android representando um Termostato Bluetooth.

A aplicação cliente (Vide Figura 28), devido à necessidade da utilização de um adap-

tador bluetooth, também foi implementada na plataforma Android, seguindo as especi�ca-

ções do framework proposto por este trabalho. Desta forma, um proxy foi implementado

utilizando como referência a API Bluetooth do Android SDK e adicionado à aplicação

cliente. O proxy em questão foi referenciado como propriedade no con�g.properties para

o processo de instanciação do framework (Vide seção 4.5.2).

O funcionamento geral da aplicação cliente é demonstrado no diagrama de ativida-

des ilustrado na Figura 29, demonstrando como a aplicação cliente irá interagir com o

framework. É possível notar na �gura que após a iniciação da aplicação móvel (que re-

presentará a aplicação cliente IoT) o framework é iniciado invocando o método start()

da classe Core. Este procedimento iniciará a busca dos proxies que estão de�nidos nati-

vamente nele ou foram referenciados pela aplicação cliente para serem considerados. No

caso da aplicação, um proxy do Bluetooth foi de�nido pela aplicação cliente.1https://developer.android.com/guide/topics/connectivity/bluetooth?hl=pt-br2http://4thline.org/projects/cling/core/manual/cling-core-manual.xhtml

Page 72: Uma proposta de framework para facilitar o desenvolvimento ......Uma proposta de framework para facilitar o desenvolvimento de aplicações baseadas em IoT / Dannylo Johnathan Bernardino

70

Figura 28: Aplicação cliente desenvolvida na plataforma Android.

Os proxies recuperados (Proxy UPnP e Proxy Bluetooth) irão executar seus métodos

de descoberta respeitando suas especi�cidades, e encapsularão os dispositivos descobertos

(os sensores de temperatura UPnP e o termostato Bluetooth) em Dispositivos Virtuais,

registrando-os em seguida no DeviceManager. A partir deste ponto, a aplicação cliente

poderá invocar os métodos de descoberta do DeviceManager e recuperar os dispositivos

virtualizados para utilizá-los em sua lógica.

Desta forma, a aplicação recuperou os sensores e o termostato virtualizados e ini-

ciou sua lógica, veri�cando se a temperatura capturada pelos sensores estava abaixo ou

igual a 25oC (através do método getDataEvent() do VirtualDevice). Este procedimento

desencadeia a iniciação do Recurso CoAP mantido pelo framework, que representa a ação

desejada e passada por parâmetro no método getDataEvent(). O Recurso, por sua vez,

envia a requisição para o proxy correto através do método getData(), que retornará à apli-

cação cliente a informação. Caso seu retorno seja superior à 25oC, a aplicação encerrará

a execução.

Nos casos em que os sensores retornarem uma temperatura igual ou inferior à 25o, a

aplicação invocará o método sendEvent() do VirtualDevice que representa o termostato,

enviando parâmetros capazes de modi�car seu estado para 30oC. Da mesma forma como

ocorreu no sensor, esta ação irá iniciar o Recurso CoAP responsável pela ação e o mesmo

redirecionará a requisição para o proxy correto, invocando o método send() do mesmo

Page 73: Uma proposta de framework para facilitar o desenvolvimento ......Uma proposta de framework para facilitar o desenvolvimento de aplicações baseadas em IoT / Dannylo Johnathan Bernardino

71

Figura 29: Funcionamento geral da aplicação cliente com o framework.

para realizar a operação no dispositivo físico, e isso também encerrará a execução da

aplicação cliente.

O código implementado na aplicação cliente para a manipulação destes dispositivos

foi adicionado em um encadeamento separado do encadeamento principal da aplicação

Android. Neste caso, uma thread foi criada para ser executada após o aplicativo inciar

no dispositivo. O início da thread invocou o método start() do Core. E neste caso especí-

�co, passou por parâmetro o stream do arquivo de con�guração que, por ser um projeto

Android, �ca armazenado em um diretório especí�co, diferente do caminho raiz esperado

pelo método supracitado.

Figura 30: Código utilizado para a instanciação do framework e descoberta dos dispositivosna aplicação cliente.

Em seguida, os métodos de descoberta puderam ser invocados e os dispositivos virtua-

lizados recuperados para o uso da aplicação cliente. A Figura 30 ilustra o código necessário

para a realização destes passos. O método discovery() do DeviceManager na Figura citada

realizou uma consulta por parte do nome nos dispositivos virtualizados pelo framework,

este processo retorna uma lista dos possíveis dispositivos encontrados. No caso da aplica-

Page 74: Uma proposta de framework para facilitar o desenvolvimento ......Uma proposta de framework para facilitar o desenvolvimento de aplicações baseadas em IoT / Dannylo Johnathan Bernardino

72

ção, apenas um dispositivo de cada foi encapsulado, por isto, apenas o primeiro dispositivo

da lista foi utilizado na aplicação.

Figura 31: Código necessário para a veri�cação do estado dos dispositivos e modi�caçãodo estado do termostato.

A Figura 31 representa o código necessário utilizado para a consulta dos dados gerados

pelo sensor de temperatura e para a modi�cação do estado do termostato. O código é

posicionado exatamente após as consultas dos dispositivos virtuais no DeviceManager,

como demonstrado na Figura 30. As linhas 44 a 46 da Figura 31 representam a de�nição

do mapeamento de parâmetros e novos valores que poderão ser assumidos pelo termostato.

A descrição correta dos parâmetros foram identi�cadas e adicionadas na classe estática

ResourceManager durante o processo de descoberta dos proxies. No caso ilustrado, um

objeto HashMap foi criado contendo um único registo, que informava que o parâmetro

NewValue do serviço Con�gureTemperature de�nidos para o termostato poderá assumir

o valor 30.

Em seguida, o método getDataEvent() do sensor foi invocado, de modo a aplicação

tomar conhecimento do estado atual do sensor de temperatura, ora virtualizado pelo

framework. A informação foi retornada em formato JSON, que foi tratada através de uma

classe utilitária do framework, denominada JsonExtractUtil, assim como exempli�cado nas

linhas 46 a 48. Após o método getDataEvent() do sensor ser invocado, o valor foi extraído

da mensagem JSON e veri�cado se poderia ser maior que 25oC, em caso positivo, o

método sendEvent() do termostato seria chamado (Linha 50), passando por parâmetro a

ação desejada (NewValueTemp) e a instância dos novos valores mapeados (mappedValues).

Figura 32: Log registrando a alteração bem-sucedida do estado do termostato.

O sensor de temperatura simulado foi con�gurado para retornar a temperatura 20oC,

favorecendo à condição implementada na aplicação (temperatura <= 25o) forçando-a a

modi�car o estado do termostato. Desta forma, uma noti�cação foi criada para o usuário

Page 75: Uma proposta de framework para facilitar o desenvolvimento ......Uma proposta de framework para facilitar o desenvolvimento de aplicações baseadas em IoT / Dannylo Johnathan Bernardino

73

da aplicação, antes da operação de mudança de estado sobre o termostato. Em seguida, a

operação sendEvent() do termostato foi executada e o seu retorno registrado nos logs da

aplicação assim como ilustrado na Figura 32, demonstrando que a alteração do seu estado

foi bem-sucedida.

5.1.2.2 A coleta e análise dos dados

Após a implementação da aplicação cliente realizada em um dispositivo Android 4.1,

Samsumg Galaxy Note, Quad Core 1.9 Ghz e 3GB de RAM, uma aplicação similar,

com o mesmo objetivo foi desenvolvida no mesmo ambiente, sem o auxílio do framework

proposto. Tal medida foi realizada para auxiliar na avaliação dos aspectos de simpli�cação

de desenvolvimento objetivados pelo framework.

As linhas de código foram extraídas de ambos os projetos e as métricas utilizadas para

esta análise foram a LOC (Lines of Code) e a Complexidade Ciclomática. A primeira foca

na mensuração de uma aplicação pela quantidade de linhas de código implementadas, e

a segunda está focada em veri�car o nível de complexidade do projeto através da geração

de um grafo de �uxo (SHARMA et al., 2012).

As métricas utilizadas são evidenciadas no trabalho de Sharma (SHARMA et al., 2012)

como formas estáticas de mensurar os atributos de produtividade de um software. E como

tratam-se de métricas orientadas a objetos, considera-se que são bons índices de avaliação

do aspecto de facilidade de desenvolvimento.

As classes analisadas serão apenas duas:MainActivity.java e IotApplication.java.

A primeira trata-se da classe principal da aplicação, responsável por iniciar a aplicação

no dispositivo móvel e prover formas de interação do usuário com a mesma, a segunda é

responsável por conter a lógica que manipulará os dispositivos da infraestrutura IoT.

Tabela 4: Linhas de Código (LOC) extraídas das classes do caso de teste (um sensor eum termostato).

Classe LOC (Framework) LOC (sem o Framework)MainActivity.java 50 102IotApplication.java 68 183

TOTAL 118 285

Dois pares de aplicações foram construídos de maneira similar (i.e. mesma quantidade

de classes e regras de implementação). O primeiro par de aplicações considerou uma com

o uso do framework e a outra sem o uso do mesmo, utilizando-se de um sensor simulado

e um termostato. O segundo par também considerou uma aplicação com o uso e sem o

Page 76: Uma proposta de framework para facilitar o desenvolvimento ......Uma proposta de framework para facilitar o desenvolvimento de aplicações baseadas em IoT / Dannylo Johnathan Bernardino

74

Tabela 5: Linhas de Código (LOC) extraídas das classes do caso de teste (dez sensores edois termostatos).

Classe LOC (Framework) LOC (sem o Framework)MainActivity.java 50 103IotApplication.java 82 203

TOTAL 132 306

uso do framework, no entanto, utilizou-se de dez sensores simulados e dois termostatos.

Os resultados são evidenciados nas Tabelas 4 e 5.

5.1.3 Respostas às questões de pesquisa

Assim como mencionado na seção 6.1.1, o sujeito que elaborou este estudo de caso,

o utilizou como �nalidade principal de responder às questões de pesquisa propostas em

seu planejamento. Desta forma, esta seção responde tais questões utilizando como base

de seus argumentos, os dados coletados na sua execução (Vide seção 6.1.2).

5.1.3.1 Qual o impacto do uso do framework em uma aplicação IoT quantoà diminuição do esforço de codi�cação de seu desenvolvimento?

O framework diminuiu de forma considerável a quantidade de linhas de código que

são necessárias para lidar com as especi�dades de cada dispositivo e protocolo de comu-

nicação para o experimento abordado no estudo de caso (um sensor de temperatura e um

termostato). Esta a�rmação pode ser melhor observada através da Figura 33, que eviden-

cia a quantidade de linhas de código necessárias para a implementação do experimento

explorado no Estudo de caso.

Figura 33: LOC por classe mensuradas no experimento do Estudo de Caso.

Page 77: Uma proposta de framework para facilitar o desenvolvimento ......Uma proposta de framework para facilitar o desenvolvimento de aplicações baseadas em IoT / Dannylo Johnathan Bernardino

75

É importante lembrar que as linhas utilizadas no levantamento exposto na Figura

33 consideraram imports, comentários e espaços em brancos, e o experimento com o uso

do framework proposto considerou, para este levantamento, um sensor e um atuador na

infraestrutura IoT.

Figura 34: Comparativo da Complexidade Ciclomática das aplicações IoT.

Os índices de complexidade ciclomática também revelaram números expressivos e

que demonstram um crescimento considerável na complexidade da aplicação que não

utilizou o framework. Tais resultados são expressados na Figura 34. Os índices coletados

foram o WMC (Weighted Methods per Class) e o CCN (Cyclomatic Complexity Number).

O primeiro índice representa a complexidade média dos métodos ponderados por cada

classe analisada, o segundo representa o total calculado da complexidade ciclomática da

aplicação.

A aplicação com o auxílio do framework revelou um total de 12 para o WMC ,

já a aplicação sem o uso do framework elevou esse valor para um total de 30. Para o

CCN , a aplicação com o framework também alcançou um total de 12, e a aplicação

similar, sem o uso do framework alcançou para este índice, um total de 36. Tal amostra

demonstra indícios que para a aplicação demonstrada que não utiliza o framework há uma

complexidade bastante superior à aplicação que o utiliza.

Tal análise inicial resultou em uma diminuição aproximada de 58,60% de esforço total

de codi�cação a partir dos números apresentados nas métricas do LOC . Tal índice de-

monstra que a utilização do framework, para o estudo de caso proposto, apresenta indícios

relevantes para a diminuição do esforço de codi�cação no processo de desenvolvimento.

Page 78: Uma proposta de framework para facilitar o desenvolvimento ......Uma proposta de framework para facilitar o desenvolvimento de aplicações baseadas em IoT / Dannylo Johnathan Bernardino

76

5.1.3.2 Questão de pesquisa 2: Qual o impacto que pode haver no aumentoda quantidade de dispositivos envolvidos na aplicação no tocante àcomplexidade de codi�cação da aplicação que utiliza o framework?

Para esta questão, duas aplicações similares foram desenvolvidas, uma utilizando o

framework proposto e outra, sem o uso do framework, mas considerando a existência de

10 sensores de temperatura e dois termostatos.

Figura 35: LOC para aplicação envolvendo 10 sensores e um atuador.

Neste caso, um aumento na quantidade de linhas de código (LOC) foi identi�cado

em ambas as aplicações (Vide Figura 35). Na aplicação que utilizou o framework, apenas

a classe IotApplication foi modi�cada, 14 novas linhas foram adicionadas para tratar os

dispositivos envolvidos. Na aplicação que não utilizou o framework, 21 novas linhas foram

adicionadas.

Com tais dados, o crescimento proporcional do número de linhas de código em um

contexto onde múltiplos dispositivos estão envolvidos (10 sensores de temperatura e dois

termostatos) apresentou uma diferença de 174 de linhas de código a menos na aplicação

que utilizou o framework. Tal diferença representa uma diminuição de esforço de codi�-

cação aproximada de 56,90%. Uma diferença de um pouco mais de 1% com relação ao

primeiro par de aplicações (com um sensor e um termostato envolvido).

No entanto, a complexidade ciclomática sofreu alterações mais visíveis e discrepantes.

Com o uso do framework, ambos os índices observados para esta métrica (WMC e CCN)

subiram apenas um ponto com relação ao experimento anterior (de 12 para 13). Mas a

aplicação que não utilizou o framework apresentou uma mudança mais crítica, alterando

seus índices de WMC para 33 e CCN para 43 (antes 30 e 36).

No caso demonstrado, do ponto de vista de esforço de desenvolvimento, é visível

Page 79: Uma proposta de framework para facilitar o desenvolvimento ......Uma proposta de framework para facilitar o desenvolvimento de aplicações baseadas em IoT / Dannylo Johnathan Bernardino

77

Figura 36: Comparativo da complexidade ciclomática para a aplicação com 10 sensores edois termostatos.

que o aumento do número de sensores envolvidos não apresentou impactos negativos

quanto à simpli�cação. No entanto, sem o uso do framework, a aplicação poderá aumentar

sua complexidade e os possíveis riscos, mas com o uso do framework estas variações

apresentam indícios de valores pequenos e aceitáveis.

5.1.4 Ameaças à Validade

Para o estudo de caso realizado foram avaliados três tipos de validade:

1. Validade de construção: Características especí�cas voltadas à codi�cação e de con-

�gurações de máquina (dispositivos utilizados) poderiam comprometer os valores

coletados no estudo. No entanto, o processo de levantamento de dados quantita-

tivos para a análise dos fatores propostos por este estudo focou-se em uma única

linguagem de programação na construção das aplicações e estas foram implementa-

das em apenas um ambiente evitando que quaisquer alterações comprometessem os

resultados.

2. Validade interna: Fatores voltados à inexperiência de programadores no desenvol-

vimento de aplicações IoT, Java ou com o framework poderiam sair do controle e

comprometer os resultados. No entanto, o estudo de caso foi realizado pelo criador

do framework, o mesmo possui considerável experiência com a Linguagem Java, o

que diminui consideravelmente os riscos destes fatores afetarem os resultados.

3. Validade externa: o desenvolvimento do experimento proposto no estudo de caso foi

implementado pelo próprio criador do framework, o mesmo possui experiência e fa-

Page 80: Uma proposta de framework para facilitar o desenvolvimento ......Uma proposta de framework para facilitar o desenvolvimento de aplicações baseadas em IoT / Dannylo Johnathan Bernardino

78

miliaridade com a linguagem Java. Sendo assim, programadores inexperientes ou que

não conhecessem a estrutura do framework poderiam elaborar aplicações com uma

quantidade de linhas de código superior ao evidenciado no estudo. O experimento

também foi elaborado em apenas um cenário exempli�cador, desta forma, cenários

mais complexos poderiam afetar consideravelmente a implementação e poderiam

acrescer o número de linhas de código para o desenvolvimento da aplicação.

Page 81: Uma proposta de framework para facilitar o desenvolvimento ......Uma proposta de framework para facilitar o desenvolvimento de aplicações baseadas em IoT / Dannylo Johnathan Bernardino

79

6 Trabalhos Relacionados

Este capítulo trata de relatar os trabalhos no estado da arte que estão de alguma

maneira relacionados com a proposta deste trabalho. Tais trabalhos possuem abordagens

similares com as que são sugeridas pela presente proposta. O Capítulo está estruturado em

duas Seções: A 5.1 sintetiza todas as soluções relacionadas voltadas à modelos de repre-

sentação dos dispositivos, e a 5.2 trata de estratégias que visaram abstrair os dispositivos

como serviços.

6.1 Modelos de representação de Dispositivos

A proposta de Datta (DATTA; BONNET, 2016) introduz um framework, denominado

DataTweet, focado em vários domínios e utiliza Machine-to-Machine Measurement (M3)

Framework para solucionar questões de heterogeneidade. A proposta do autor é uma divi-

são entre os componentes da lógica da aplicação(AL), que abstraem todos os mecanismos

que os usuários estão interessados no aplicação, tais como: Interface do usuário, meca-

nismos de consulta e descoberta de recursos, entre outros, e o componente denominado

Entidade de Serviços Comum(CSE) que abstraem os serviços disponíveis oferecidos pela

aplicação neste módulo. Toda a dinâmica de registro, gerenciamento e interoperabilidade

devem ser tratados no CSE, e as funções voltadas à aplicação pertencem a AL. Tais

módulos são intermediados por uma interface comum.

A proposta acima citada baseia-se no trabalho de Patel e Cassou (PATEL; CASSOU,

2015) que por sua vez busca desenvolver um framework conceitual baseado na divisão de

habilidades presentes em uma infraestrutura IoT. Sua abordagem apresenta linguagens

descritivas denominadas "Srijan Vocabulary"que modelarão os dispositivos existentes e

poderão gerar códigos executáveis para as aplicações.

A proposta de Kum (KUM; KANG; PARK, 2016) destaca-se por prover um framework

que tem como objetivo tratar a heterogeneidade de protocolos de uma aplicação IoT.

IoTDelegate abstrai a aplicação em três camadas:Plug-In, Colaboração e Gerenciamento

Page 82: Uma proposta de framework para facilitar o desenvolvimento ......Uma proposta de framework para facilitar o desenvolvimento de aplicações baseadas em IoT / Dannylo Johnathan Bernardino

80

de Serviços. A primeira camada irá remover quaisquer dependências voltadas ao protocolo

dos objetos inteligentes e as demais irão criar abstrações que permitem a comunicação

e colaboração dos dispositivos constituintes. Já Manione (MANIONE, 2017) relata um

framework diferente dos citados anteriormente, pois objetiva a simpli�cação do desenvol-

vimento através de uma abordagem centrada no usuário, diminuindo ou dispensando o

uso de programação de níveis mais próximos do hardware. A abordagem é baseada em

modelos e utiliza Task Script para tal �nalidade.

Um proposta voltada à abstração considerada neste trabalho foi a de Silva (SILVA et al.,

2016), que propõe uma API para acessar serviços baseados em IoT através de protocolos

REST e SOAP. A abordagem busca prover meios de facilitar a complexidade inerente à di-

versidade de dispositivos existentes em aplicações IoT. Basicamente, a proposta fornecerá

uma estrutura que irá prover acesso uniforme a recursos e operações através de mensagens

estruturadas em SOAP e REST. O autor utilizou o UPnP como padrão orientador de seu

experimento e avaliou aspectos voltados à performance, descartando a utilização de SOAP

devido aos resultados abaixo do esperado.

Foi levantado também por Ferrera (FERRERA et al., 2017), a necessidade de haver

um modelo que possa representar os dispositivos de maneira uniforme e o autor propôs

em seu trabalho, uma infraestrutura de plataforma de con�guração (IoT-PIC) tentando

considerar as muitas camadas de uma infra-estrutura IoT. A simpli�cação ocorre através

de uma abordagem baseada em modelos para a criação de novos serviços e aplicações

baseados em IoT. Para tal feito, o autor utilizou XMPP no processo de comunicação

das entidades e RAI (Resource Application Interface) para lidar com as virtualizações.

Porém, a solução virtualiza de acordo com driver disponível na camada RAI e retorna

uma instância virtualizada especí�ca de cada drive.

As abordagens acima relacionam-se com este trabalho devido a utilizarem modos de

abstrair os objetos através de propostas de modelos. Contudo, a maioria das propostas

omitem detalhes de como os dispositivos se relacionarão com os modelos na aplicação,

muito embora alguns evidenciem a necessidade de mecanismos de descoberta na rede, tais

como Datta (DATTA; BONNET, 2016), mas não relatam de maneira clara em que momento

esta operação ocorre. Nossa proposta acredita que uma virtualização globalizada e única

diminuiria a complexidade inerente ao desenvolvimento destas aplicações, facilitando a

codi�cação no tratamento dos vários dispositivos existentes.

Algumas das abordagens acima buscam um meio de virtualização voltado especi�ca-

mente para cada protocolo inserido na aplicação, distinguindo-os por suas especi�cações

Page 83: Uma proposta de framework para facilitar o desenvolvimento ......Uma proposta de framework para facilitar o desenvolvimento de aplicações baseadas em IoT / Dannylo Johnathan Bernardino

81

individuais. A proposta desse trabalho irá abordar uma maneira simpli�cadora de vir-

tualizar unicamente os dispositivos, independente do protocolo especi�cado, bem como

proverá meios para os dispositivos associarem-se ao modelo utilizado.

6.2 Dispositivos abstraídos como Serviços

Algumas soluções destacaram-se por suas abordagens voltadas à nuvem, Kohdadadi

(KHODADADI; CALHEIROS; BUYYA, 2015) propõe um framework que devido a ser orientado

a nuvem, permite que o desenvolvedor preocupe-se apenas com a o desenvolvimento da

lógica, pois o framework estará focado em lidar com a manipulação de dados, conexões

com fontes de dados, consultas, �ltros, e escalonamento de recursos. O protótipo é baseado

em Aneka Cloud e toda a comunicação é baseada em MQTT .

Foi também abordada por Carranza (CARRANZA-GARCÍA et al., 2016), uma proposta

que apresenta um framework baseado na nuvem, ele utiliza-se de uma abordagem BaaS

(Back-end as Service) que trata-se de um modelo de computação na nuvem que conecta

aplicações a armazenamentos e processamentos em estruturas disponibilizadas na nuvem,

e toda a comunicação é intermediada por padrões REST/SOAP . A abordagem do autor

abstrai todos os dispositivos como serviços disponibilizados nessa estrutura.

O trabalho de Jara (JARA et al., 2014) no entanto, propõe uma arquitetura de desco-

berta de serviços heterogêneos IoT através da ciência de contexto ou geolocalização. Para

ser possível controlar as "things"através de browsers e smartphones. O autor utilizou como

estratégia uma representação de recursos semanticamente interoperáveis baseado na es-

tratégia Presto Mash-up Connectors. No entanto, a aplicação basicamente objetiva um

controle geral de dispositivos inteligentes a partir do smartphone.

As abordagens voltadas a abstração por serviço, na maioria dos casos orientadas à

nuvem, citadas acima, abstraem os dispositivos como modelos uni�cados de serviços.

Tais abordagens são realizadas visando a simpli�cação do desenvolvimento, e por esta

razão está relacionada com este trabalho. Porém, nossa proposta não está inicialmente

focada em uma abordagem orientada à nuvem, dispensando neste primeiro momento,

preocupações voltadas à latência, especialmente em aplicações que requerem um alto

nível de escalabilidade.

No entanto, a abordagem de representar os dispositivos através de serviços, favorece a

utilização de mecanismos de descoberta que são considerados por Datta (DATTA; BONNET,

2016) como um forte indicador de facilidade no processo de desenvolvimento de aplicações

Page 84: Uma proposta de framework para facilitar o desenvolvimento ......Uma proposta de framework para facilitar o desenvolvimento de aplicações baseadas em IoT / Dannylo Johnathan Bernardino

82

IoT. E neste caso, nossa abordagem buscará utilizar-se dessa abstração para facilitar o

processo de associação dos dispositivos virtualizados com seus respectivos dispositivos

reais. No entanto, essa abstração não estará na nuvem e apenas utilizará essa abordagem

com um passo no processo de simpli�cação do desenvolvimento.

Page 85: Uma proposta de framework para facilitar o desenvolvimento ......Uma proposta de framework para facilitar o desenvolvimento de aplicações baseadas em IoT / Dannylo Johnathan Bernardino

83

7 Considerações Finais

Este capítulo apresenta as considerações �nais da pesquisa realizada, organizando-se

da seguinte maneira: A Seção 6.1 apresenta a retrospectiva deste trabalho, a seção 6.2 as

suas principais contribuições e a 6.3 descreve os trabalhos futuros propostos pelo autor

desta pesquisa.

7.1 Retrospectiva e conclusões do trabalho

No Capítulo 1 foi mostrado que devido à massiva quantidade de dispositivos, padrões

e protocolos de comunicação heterogêneos, uma série de desa�os críticos que impactam no

processo de desenvolvimento destas aplicações foram inevitavelmente gerados, tornando o

processo de desenvolvimento destas aplicações algo complexo de realizar-se. Evidenciando-

se a notável necessidade da existência de soluções que objetivassem a simpli�cação do pro-

cesso de desenvolvimento de aplicações IoT, reduzindo de maneira signi�cativa o esforço

de produção através da abstração destes desa�os.

No Capítulo 2, foi possível compreender tecnicamente como funcionam os protocolos

de níveis de aplicação (CoAP) e comunicação (UPnP e Bluetooth), bem como entender em

um nível mais geral, o paradigma da Internet das Coisas, suas visões e seu modelo arquite-

tural genérico proposto pela literatura. A partir dele, foi possível obter uma compreensão

mais geral dos conceitos e fundamentos considerados importantes por esta pesquisa.

No Capítulo 3, foi possível constatar que as soluções propostas no estado da arte, com

o objetivo de simpli�car o processo de desenvolvimento de aplicações IoT, em sua grande

maioria, concentram-se em atingir requisitos e desa�os isolados. Embora as soluções apre-

sentem meios simpli�cadores, estão focadas apenas à requisitos especí�cos abordados em

suas propostas, ignorando os demais. Também foi possível notar que poucas propostas

objetivaram abordagens com um viés prático, e quase nenhuma proposta buscou abstrair

dispositivos das soluções IoT através de linguagens e/ou abordagens popularmente utili-

Page 86: Uma proposta de framework para facilitar o desenvolvimento ......Uma proposta de framework para facilitar o desenvolvimento de aplicações baseadas em IoT / Dannylo Johnathan Bernardino

84

zadas. Levando-nos a concluir que existe uma notável necessidade de ferramentas práticas

que busquem atingir e integrar requisitos que são críticos para o desenvolvimento em uma

mesma solução baseada em IoT.

O Capítulo 4 apresentou a proposta central deste trabalho: um framework que possa

facilitar o desenvolvimento de aplicações baseadas em IoT. Neste foi possível conhecer a

arquitetura proposta e seus componentes constituintes, a estrutura da solução implemen-

tada utilizando-se da Linguagem Java, e meios de instanciá-lo e estendê-lo em projetos

de aplicações IoT.

No Capítulo 5, um levantamento dos trabalhos e propostas relacionadas à abordada

por esta pesquisa foi realizado. Neste, técnicas foram evidenciadas e consideradas impor-

tantes na de�nição do framework proposto por este trabalho.

No Capítulo 6, a avaliação do framework foi planejada e realizada através de uma

prova de conceito. Nesta, questões voltadas ao objetivo desta pesquisa foram levantadas e

respondidas com base em métricas especí�cas (LOC e CC) aplicadas à execução da prova

de conceito. A execução compreendeu a de�nição de uma aplicação cliente utilizando o

framework para um cenário típico de IoT (Controle de temperatura) e outra aplicação,

com o mesmo objetivo e implementação, mas sem o uso do framework. Com tais aplicações

implementadas e métricas aplicadas, foi possível observar e atestar indícios importantes

de que o framework proposto, pra o cenário apresentado, simpli�ca e reduz o esforço de

codi�cação no desenvolvimento de aplicações IoT.

Devido ainda à falta de um padrão universal que generalize os processos de comu-

nicação dos dispositivos envolvidos em infra-estruturas IoT, aplicações voltadas à estes

cenários continuarão cercadas de dispositivos heterogêneos. Essa característica exigirá do

processo de desenvolvimento, demasiado esforço para lidar com cada forma de comunica-

ção ou capacidade destes dispositivos.

O tipo de framework apresentado por este trabalho possui uma perspectiva facilita-

dora, pois ele propõe uma abordagem uni�cada para os dispositivos envolvidos através da

virtualização. Esta característica é capaz de absorver a complexidade voltada aos processos

de comunicação e capacidades individuais destes dispositivos nas camadas do framework,

de maneira oculta ao desenvolvedor da aplicação IoT.

Desta forma, este trabalho demonstrou que a construção de um framework capaz

de prover uniformidade, através da virtualização, no tratamento dos dispositivos de uma

infraestrutura IoT ocasiona uma diminuição considerável no esforço de codi�cação de uma

Page 87: Uma proposta de framework para facilitar o desenvolvimento ......Uma proposta de framework para facilitar o desenvolvimento de aplicações baseadas em IoT / Dannylo Johnathan Bernardino

85

aplicação IoT. As especi�cidades de cada dispositivo heterogêneo, sejam funcionais ou de

comunicação, são abstraídas pelo modelo virtual oferecido pelo mesmo. Sendo assim, a

virtualização de dispositivos demonstrou um caminho facilitador, do ponto de vista da

codi�cação, eximindo a aplicação cliente de detalhes especí�cos e individuais.

7.2 Contribuições

Neste trabalho, destacam-se as seguintes contribuições:

1. A de�nição de um framework capaz de facilitar o processo de desenvolvimento de

aplicações baseadas em IoT através de uma abordagem voltada à virtualização de

dispositivos e proxies multi-protocolos. O framework já possui um proxy padrão

disponibilizado, mas a solução também permite extensões para outros protocolos

(proxies), devido à evolução constante e surgimento massivo dos protocolos de co-

municação voltadas à dispositivos geralmente presentes em infraestruturas IoT.

2. Implementação e publicação do framework proposto utilizando-se da linguagem Java

para ser utilizado em aplicações IoT que utilizam dispositivos UPnP, possibilitando

a implementação de novas extensões. O framework é disponibilizado através do link:

https://github.com/dannylo/easyiot.

3. Implementação de uma prova de conceito utilizando-se do framework implementado

para um cenário de controle de temperatura. A implementação utilizou-se do proxy

já fornecido pelo framework e pode ainda realizar uma extensão para o protocolo

Bluetooth.

4. Avaliação do framework através da realização de um estudo experimental cujo obje-

tivo foi o de avaliar aspectos voltados à facilidade no processo de desenvolvimento.

7.3 Trabalhos Futuros

Como trabalho futuro pretende-se criar uma DSL (Description Service Language)

voltada para a comunicação de dispositivos IoT. A linguagem utilizaria-se do framework

para realizar seus objetivos. Esta deverá prover uma sintaxe simples, própria para a de-

�nição de mecanismos de comunicação dos dispositivos, de�nição de rotinas de execução

Page 88: Uma proposta de framework para facilitar o desenvolvimento ......Uma proposta de framework para facilitar o desenvolvimento de aplicações baseadas em IoT / Dannylo Johnathan Bernardino

86

envolvendo estes dispositivos, mecanismos de decisão, entre outros recursos que se fa-

çam necessários para um contexto IoT. Todos estes recursos deverão obedecer o modelo

arquitetural de�nido no framework proposto por este trabalho.

Também há a pretensão da evolução do módulo health da arquitetura do framework de

modo a lidar com aspectos de dependabilidade mais avançados, garantindo maior disponi-

bilidade dos dispositivos envolvidos e uma maior con�abilidade das aplicações construídas

com base no framework.

Além disso, pode haver a evolução do Gerenciador de Aplicações e do próprio Dis-

positivo Virtual de modo a lidar com comunicação assíncrona e streaming de dados, de

modo a lidar com sensores que possuam características voltadas à produção frenética de

dados ou assincronia de comunicação.

Por �m, outros estudos avaliativos também poderiam atestar resultados importantes,

validando o framework para cenários mais complexos com um maior número de disposi-

tivos ou envolvendo outros desenvolvedores para avaliarem aspectos de produtividade de

desenvolvimento.

Page 89: Uma proposta de framework para facilitar o desenvolvimento ......Uma proposta de framework para facilitar o desenvolvimento de aplicações baseadas em IoT / Dannylo Johnathan Bernardino

87

Referências

ABERDEEN, T. Yin, rk (2009). case study research: Design and methods . thousandoaks, ca: Sage. The Canadian Journal of Action Research, v. 14, n. 1, p. 69�71, 2013.

ALLARD, J. et al. Jini meets upnp: an architecture for jini/upnp interoperability. In:IEEE. Applications and the Internet, 2003. Proceedings. 2003 Symposium on. [S.l.], 2003.p. 268�275.

AMARAL, L. A. et al. ecloudr�d�a mobile software framework architecture for pervasiver�d-based applications. Journal of Network and Computer Applications, Elsevier, v. 34,n. 3, p. 972�979, 2011.

ARUNACHALAM, K.; GANAPATHY, G. Research on upnp protocol stack forapplications on a home network. International Journal of Engineering and Technology(IJET), v. 8, n. 4, p. 1728�1736, 2016.

ASHRAF, Q. M. et al. Device discovery and con�guration scheme for internet of things.In: IEEE. Intelligent Systems Engineering (ICISE), 2016 International Conference on.[S.l.], 2016. p. 38�43.

ATZORI, L.; IERA, A.; MORABITO, G. The internet of things: A survey. Computernetworks, Elsevier, v. 54, n. 15, p. 2787�2805, 2010.

AVILES-LOPEZ, E.; GARCIA-MACIAS, J. A. Mashing up the internet of things: aframework for smart environments. EURASIP Journal on Wireless Communications andNetworking, Nature Publishing Group, v. 2012, n. 1, p. 79, 2012.

BANDYOPADHYAY, D.; SEN, J. Internet of things: Applications and challenges intechnology and standardization. Wireless Personal Communications, Springer, v. 58,n. 1, p. 49�69, 2011.

BOCCHINO, S.; FEDOR, S.; PETRACCA, M. Pyfuns: A python framework forubiquitous networked sensors. In: SPRINGER. European Conference on Wireless SensorNetworks. [S.l.], 2015. p. 1�18.

BORMANN, C.; CASTELLANI, A. P.; SHELBY, Z. Coap: An application protocol forbillions of tiny internet nodes. IEEE Internet Computing, IEEE, v. 16, n. 2, p. 62�67,2012.

BRÖRING, A. et al. Enabling iot ecosystems through platform interoperability. IEEEsoftware, v. 34, n. 1, p. 54�61, 2017.

CALCINA-CCORI, P. et al. Agile servient integration with the swarm: Automatic codegeneration for nodes in the internet of things. In: ACM. Proceedings of the InternationalConference on Future Networks and Distributed Systems. [S.l.], 2017. p. 22.

Page 90: Uma proposta de framework para facilitar o desenvolvimento ......Uma proposta de framework para facilitar o desenvolvimento de aplicações baseadas em IoT / Dannylo Johnathan Bernardino

88

CARRANZA-GARCÍA, F. et al. Baas-4us: A framework to develop standardbackends as a service for ubiquitous applications. In: IEEE. Ubiquitous Computingand Communications and 2016 International Symposium on Cyberspace and Security(IUCC-CSS), International Conference on. [S.l.], 2016. p. 23�30.

CHERRIER, S. et al. D-lite: Distributed logic for internet of things services. In: IEEE.Internet of Things (iThings/CPSCom), 2011 International Conference on and 4thInternational Conference on Cyber, Physical and Social Computing. [S.l.], 2011. p. 16�24.

CHLAMTAC, I.; CONTI, M.; LIU, J. J.-N. Mobile ad hoc networking: imperatives andchallenges. Ad hoc networks, Elsevier, v. 1, n. 1, p. 13�64, 2003.

DATTA, S. K.; BONNET, C. Easing iot application development through datatweetframework. In: IEEE. Internet of Things (WF-IoT), 2016 IEEE 3rd World Forum on.[S.l.], 2016. p. 430�435.

DATTA, S. K.; COSTA, R. P. F. D.; BONNET, C. Resource discovery in internet ofthings: Current trends and future standardization aspects. In: IEEE. Internet of Things(WF-IoT), 2015 IEEE 2nd World Forum on. [S.l.], 2015. p. 542�547.

FERREIRA, H. G. C.; CANEDO, E. D.; SOUSA, R. T. de. Iot architecture to enableintercommunication through rest api and upnp using ip, zigbee and arduino. In: IEEE.Wireless and Mobile Computing, Networking and Communications (WiMob), 2013 IEEE9th International Conference on. [S.l.], 2013. p. 53�60.

FERRERA, E. et al. Xmpp-based infrastructure for iot network management and rapidservices and applications development. Annals of Telecommunications, Springer, v. 72,n. 7-8, p. 443�457, 2017.

GUBBI, J. et al. Internet of things (iot): A vision, architectural elements, and futuredirections. Future generation computer systems, Elsevier, v. 29, n. 7, p. 1645�1660, 2013.

HERNÁNDEZ, M. E. P.; REIFF-MARGANIEC, S. Towards a software framework forthe autonomous internet of things. In: IEEE. Future Internet of Things and Cloud(FiCloud), 2016 IEEE 4th International Conference on. [S.l.], 2016. p. 220�227.

JANAK, J.; SCHULZRINNE, H. Framework for rapid prototyping of distributed iotapplications powered by webrtc. In: IEEE. Principles, Systems and Applications of IPTelecommunications (IPTComm), 2016. [S.l.], 2016. p. 1�7.

JARA, A. J. et al. Mobile digcovery: discovering and interacting with the world throughthe internet of things. Personal and ubiquitous computing, Springer, v. 18, n. 2, p.323�338, 2014.

KHAN, R. et al. Future internet: the internet of things architecture, possible applicationsand key challenges. In: IEEE. Frontiers of Information Technology (FIT), 2012 10thInternational Conference on. [S.l.], 2012. p. 257�260.

KHODADADI, F.; CALHEIROS, R. N.; BUYYA, R. A data-centric framework fordevelopment and deployment of internet of things applications in clouds. In: IEEE.Intelligent Sensors, Sensor Networks and Information Processing (ISSNIP), 2015 IEEETenth International Conference on. [S.l.], 2015. p. 1�6.

Page 91: Uma proposta de framework para facilitar o desenvolvimento ......Uma proposta de framework para facilitar o desenvolvimento de aplicações baseadas em IoT / Dannylo Johnathan Bernardino

89

KITCHENHAM, B.; PICKARD, L.; PFLEEGER, S. L. Case studies for method andtool evaluation. IEEE software, IEEE, v. 12, n. 4, p. 52�62, 1995.

KUM, S. W.; KANG, M.; PARK, J.-I. Iot delegate: Smart home framework forheterogeneous iot service collaboration. KSII Transactions on Internet & InformationSystems, v. 10, n. 8, 2016.

LEE, C.; HELAL, S. Protocols for service discovery in dynamic and mobile networks.International Journal of Computer Research, v. 11, n. 1, p. 1�12, 2002.

LEE, I.; LEE, K. The internet of things (iot): Applications, investments, and challengesfor enterprises. Business Horizons, Elsevier, v. 58, n. 4, p. 431�440, 2015.

LEE, J.-S.; SU, Y.-W.; SHEN, C.-C. A comparative study of wireless protocols:Bluetooth, uwb, zigbee, and wi-�. In: IEEE. Industrial Electronics Society, 2007. IECON2007. 33rd Annual Conference of the IEEE. [S.l.], 2007. p. 46�51.

LI, S.; XU, L. D.; ZHAO, S. The internet of things: a survey. Information SystemsFrontiers, Springer, v. 17, n. 2, p. 243�259, 2015.

LU, Y.; PAPAGIANNIDIS, S.; ALAMANOS, E. Internet of things: A systematic reviewof the business literature from the user and organisational perspectives. TechnologicalForecasting and Social Change, Elsevier, 2018.

MANIONE, R. User centered integration of internet of things devices. In:INTERNATIONAL SOCIETY FOR OPTICS AND PHOTONICS. Smart Sensors,Actuators, and MEMS VIII. [S.l.], 2017. v. 10246, p. 102461K.

MEHTA, A. et al. Calvin constrained a framework for iot applications in heterogeneousenvironments. In: IEEE. Distributed Computing Systems (ICDCS), 2017 IEEE 37thInternational Conference on. [S.l.], 2017. p. 1063�1073.

MESHKOVA, E. et al. A survey on resource discovery mechanisms, peer-to-peer andservice discovery frameworks. Computer networks, Elsevier, v. 52, n. 11, p. 2097�2128,2008.

NASTIC, S.; TRUONG, H.-L.; DUSTDAR, S. Sdg-pro: a programming frameworkfor software-de�ned iot cloud gateways. Journal of Internet Services and Applications,Springer, v. 6, n. 1, p. 21, 2015.

PAGANELLI, F.; TURCHI, S.; GIULI, D. A web of things framework for restfulapplications and its experimentation in a smart city. IEEE Systems Journal, IEEE, v. 10,n. 4, p. 1412�1423, 2016.

PAL, A.; MUKHERJEE, A.; BALAMURALIDHAR, P. Model-driven development forinternet of things: Towards easing the concerns of application developers. In: Internet ofThings. User-Centric IoT. [S.l.]: Springer, 2015. p. 339�346.

PATEL, P.; CASSOU, D. Enabling high-level application development for the internetof things. Journal of Systems and Software, Elsevier, v. 103, p. 62�84, 2015.

Page 92: Uma proposta de framework para facilitar o desenvolvimento ......Uma proposta de framework para facilitar o desenvolvimento de aplicações baseadas em IoT / Dannylo Johnathan Bernardino

90

PERERA, C. et al. Sensor discovery and con�guration framework for the internet ofthings paradigm. In: IEEE. Internet of Things (WF-IoT), 2014 IEEE World Forum on.[S.l.], 2014. p. 94�99.

PUIU, D. et al. Citypulse: Large scale data analytics framework for smart cities. IEEEAccess, IEEE, v. 4, p. 1086�1108, 2016.

RUNESON, P.; HÖST, M. Guidelines for conducting and reporting case study researchin software engineering. Empirical software engineering, Springer, v. 14, n. 2, p. 131,2009.

RUTA, M. et al. A coap-based framework for collaborative sensing in the semantic webof things. Procedia Computer Science, Elsevier, v. 109, p. 1047�1052, 2017.

SALEM, A.; NADEEM, T. Blink: Making the case for bluetooth open source stack. In:IEEE. Wireless Days (WD), 2018. [S.l.], 2018. p. 145�150.

SALMAN, T.; JAIN, R. Networking protocols and standards for internet of things.Internet of Things and Data Analytics Handbook (2015), p. 215�238, 2015.

SASIREKHA, S.; SWAMYNATHAN, S. Collaboration of iot devices using semanticallyenabled resource oriented middleware. In: ACM. Proceedings of the Third InternationalSymposium on Computer Vision and the Internet. [S.l.], 2016. p. 98�105.

SHARMA, M. et al. A comparative study of static object oriented metrics. InternationalJournal of Advancements in Technology, v. 3, n. 1, p. 25�34, 2012.

SHELBY, Z.; HARTKE, K.; BORMANN, C. The constrained application protocol(coap). 2014.

SILVA, C. C. de M. et al. Design and evaluation of a services interface for the internet ofthings. Wireless Personal Communications, Springer, v. 91, n. 4, p. 1711�1748, 2016.

SIVIERI, A.; MOTTOLA, L.; CUGOLA, G. Building internet of things software witheliot. Computer Communications, Elsevier, v. 89, p. 141�153, 2016.

TAYUR, V. M.; SUCHITHRA, R. Review of interoperability approaches in applicationlayer of internet of things. In: IEEE. Innovative Mechanisms for Industry Applications(ICIMIA), 2017 International Conference on. [S.l.], 2017. p. 322�326.

TIWARY, A. et al. Internet of things (iot): Research, architectures and applications.International Journal on Future Revolution in Computer Science & CommunicationEngineering, v. 4, n. 3, p. 23�27, 2018.

TOSCHI, G. M.; CAMPOS, L. B.; CUGNASCA, C. E. An upnp architecture forinteroperability in home area network. In: IEEE. Consumer Electronics (ISCE), 2016IEEE International Symposium on. [S.l.], 2016. p. 51�52.

TRAGOS, E. Z. et al. Enabling reliable and secure iot-based smart city applications. In:IEEE. Pervasive Computing and Communications Workshops (PERCOM Workshops),2014 IEEE International Conference on. [S.l.], 2014. p. 111�116.

Page 93: Uma proposta de framework para facilitar o desenvolvimento ......Uma proposta de framework para facilitar o desenvolvimento de aplicações baseadas em IoT / Dannylo Johnathan Bernardino

91

VALLATI, C. et al. Betaas: A platform for development and execution of machine-to-machine applications in the internet of things. Wireless Personal Communications,Springer, v. 87, n. 3, p. 1071�1091, 2016.

VEN�KAUSKAS, A. et al. A model-driven framework to develop personalized healthmonitoring. Symmetry, Multidisciplinary Digital Publishing Institute, v. 8, n. 7, p. 65,2016.

XIAO, G. et al. User interoperability with heterogeneous iot devices throughtransformation. IEEE Trans. Industrial Informatics, v. 10, n. 2, p. 1486�1496, 2014.

YEN, I.-L. et al. A framework for iot-based monitoring and diagnosis of manufacturingsystems. In: IEEE. Service-Oriented System Engineering (SOSE), 2017 IEEE Symposiumon. [S.l.], 2017. p. 1�8.

ZANELLA, L. C. H. Metodologia da pesquisa. [S.l.]: SEAD/UFSC, 2006.

Page 94: Uma proposta de framework para facilitar o desenvolvimento ......Uma proposta de framework para facilitar o desenvolvimento de aplicações baseadas em IoT / Dannylo Johnathan Bernardino

92

8 Apêndice A

Trabalho Solução proposta Requisitos

(CHERRIER et al.,2011)

Um framework universal para construção deaplicações IoT em ambientes heterogêneos.Abstraindo os dispositivos como nós da rede.

Interoperabilidade

(AMARAL et al.,2011)

Um framework para lidar com aplicaçõesIoT baseadas em identi�cação RFID. Identi�cação

(AVILES-LOPEZ;GARCIA-MACIAS, 2012)

Um framework de interação direta comusuário para acessar os dispositivos esuas capacidades através da internet.

Interoperabilidade

(FERREIRA; CA-NEDO; SOUSA,2013)

Uma arquitetura baseada em RESTFullpara lidar com a integração do UPnP,ZigBee e arduíno.

Interoperabilidade

(TRAGOS et al.,2014)

Um framework focado a habilitarsegurança em aplicações IoT. Segurança

(JARA et al.,2014)

Um framework focado na descobertade dispositivos em cidades inteligentesutilizando-se de uma arquitetura escalávelatravés de smartphones.

Escalabilidade

(XIAO et al.,2014)

Um framework para lidar com hetero-geneidade de dispositivos IoT atravésde técnicas de transformação.

Interoperabilidade

(KHODADADI;CALHEIROS;BUYYA, 2015)

Um framework para lidar com a integraçãode aplicações IoT de domínios especí�cos,focando na segurança da transição dosdados destes domínios.

Segurança

(PATEL; CAS-SOU, 2015)

Uma metodologia e um frameworkbaseado em MDD para facilitar a cons-trução de aplicações baseadas em IoT.

Produtividade

(PAL; MUKHER-JEE; BALAMU-RALIDHAR,2015)

Um framework baseado em MDD parafacilitar o desenvolvimento de aplicaçõesIoT voltado para o usuário �nal.

Interoperabilidade

Page 95: Uma proposta de framework para facilitar o desenvolvimento ......Uma proposta de framework para facilitar o desenvolvimento de aplicações baseadas em IoT / Dannylo Johnathan Bernardino

93

(DATTA; COSTA;BONNET, 2015)

Um framework para desenvolvimento deambientes inteligentes voltados ao usuário�nal baseado em comunicações M2M.

Interoperabilidade

(BOCCHINO;FEDOR; PE-TRACCA, 2015)

Um framework baseado em Python parafacilitar a construção de aplicações IoTbaseado na construção de scripts básicos.Focado especi�camente em restrição derecursos.

Recursos Limitados

(NASTIC; TRU-ONG; DUSTDAR,2015)

Um framework que busca facilitar aconstrução de aplicações IoT através daabstração dos dispositivos como serviços naNúvem.

Produtividade

(VEN�KAUSKASet al., 2016)

Framework MDD voltado para aplicaçõesiHealth. Interoperabilidade

(PAGANELLI;TURCHI; GIULI,2016)

Um framework voltado paraa abstração de dispositivos utilizando-se derepresentação grá�ca para esta �nalidade.

Representação decoisas inteligentes

(VALLATI et al.,2016)

Apresenta uma plataforma paracomunicação M2M voltada para IoT. Interoperabilidade

(SIVIERI; MOT-TOLA; CUGOLA,2016)

Apresenta uma plataforma para facilitara construção de aplicações IoT através deAPI de serviços baseadas em CoAP eRESTFull.

Produtividade

(PUIU et al.,2016)

Uma plataforma voltada para cidadesinteligentes, visando diminuir asquestões tecnicas voltadas à heterogeneidade,comunicação interprocessos e latência.

Heterogeneidade

(JANAK;SCHULZRINNE,2016)

Um framework para facilitar o processo dedesenvolvimento de aplicações IoT através daprototipação de ambientes.

Heterogeneidade

(KUM; KANG;PARK, 2016)

Uma plataforma para lidar com a heteroge-neidade de dispositivos presentes em cidadesinteligentes. A proposta inclui o uso deWebServices.

Heterogeneidade

(HERNÁNDEZ;REIFF-MARGANIEC,2016)

Um framework conceitual voltado à aplicarautonomia às smart things de uma infra-estrutura IoT.

Heterogeneidade

Page 96: Uma proposta de framework para facilitar o desenvolvimento ......Uma proposta de framework para facilitar o desenvolvimento de aplicações baseadas em IoT / Dannylo Johnathan Bernardino

94

(CALCINA-CCORI et al.,2017)

Um framework voltado para a geração decódigo dos nós IoT através de uma abor-dagem "Swarm".

Interoperabilidade

(CARRANZA-GARCÍA et al.,2016)

Uma plataforma voltada a tornar os serviçosde uma aplicação IoT orientados à núvem.De modo que a comunicação entre eles sejaintermediada pela própria plataforma.

Interoperabilidade

(MEHTA et al.,2017)

Uma abordagem voltada á extensão do frame-work Calvin para lidar com aplicações comlimitações de recursos.

Recursos Limitados

(DATTA; BON-NET, 2016)

Um framework conceitual baseado emoneM2M para simpli�car o processo dedesenvolvimento de aplicações IoT.

Múltiplos Domínios

(BRÖRING et al.,2017)

Uma plataforma para reduzir a heterogenei-dade de dispositivos em aplicações IoT, pro-pondo diversos modelos de dados e API'spara isso.

Interoperabilidade