Baixe o app para aproveitar ainda mais
Prévia do material em texto
Universidade Federal do Rio Grande do Norte Centro de Ciências Exatas e da Terra Departamento de Informática e Matemática Aplicada Programa de Pós-Graduação em Sistemas e Computação Doutorado Acadêmico em Ciência da Computação Uma Proposta de Arcabouço para Tolerância a Falhas Multicamadas em Sistemas IoT Mário Andrade Vieira de Melo Neto Natal-RN Dezembro de 2021 Melo Neto, Mário Andrade Vieira de. Uma proposta de arcabouço para tolerância a falhas multicamadas em sistemas IoT / Mário Andrade Vieira de Melo Neto. - 2021. 126f.: il. Tese (Doutorado) - Universidade Federal do Rio Grande do Norte, Centro de Ciências Exatas e da Terra, Departamento de Informática e Matemática Aplicada, Programa de Pós-Graduação em Sistemas e Computação. Natal, 2021. Orientador: Prof. Dr. Gibeon Soares de Aquino Júnior. 1. Engenharia de software - Tese. 2. IoT- Tese. 3. Dependabilidade - Tese. 4. Tolerância a falhas - Tese. 5. Detecção de erros - Tese. 6. Recuperação de erros - Tese. 7. Confiabilidade - Tese. 8. Disponibilidade - Tese. I. Aquino Júnior, Gibeon Soares de. II. Título. RN/UF/CCET CDU 004.41 Universidade Federal do Rio Grande do Norte - UFRN Sistema de Bibliotecas - SISBI Catalogação de Publicação na Fonte. UFRN - Biblioteca Setorial Prof. Ronaldo Xavier de Arruda - CCET Elaborado por Joseneide Ferreira Dantas - CRB-15/324 Mário Andrade Vieira de Melo Neto Uma Proposta de Arcabouço para Tolerância a Falhas Multicamadas em Sistemas IoT Tese de doutorado apresentada ao Programa de Pós-Graduação em Sistemas e Computa- ção do Departamento de Informática e Mate- mática Aplicada da Universidade Federal do Rio Grande do Norte como requisito parcial para a obtenção do grau de Doutor em Ciên- cia da Computação. Linha de pesquisa: Engenharia de Software Orientador Prof. Dr. Gibeon Soares de Aquino Jr. 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-RN Dezembro de 2021 Tese de Doutorado sob o título Uma Proposta de Arcabouço para Tolerância a Falhas Multicamadas em Sistemas IoT apresentada por Mário Andrade Vieira de Melo Neto e aceita pelo Programa de Pós-Graduação em Sistemas e Computação do Departamento de Informática e Matemática Aplicada da Universidade Federal do Rio Grande do Norte, sendo aprovada por todos os membros da banca examinadora abaixo especificada: Prof. Dr. Gibeon Soares de Aquino Júnior Presidente DIMAp – Departamento de Informática e Matemática Aplicada UFRN – Universidade Federal do Rio Grande do Norte Prof. Dr. Everton Ranielly de Sousa Cavalcante Examinador DIMAp – Departamento de Informática e Matemática Aplicada UFRN – Universidade Federal do Rio Grande do Norte Prof. Dr. Nélio Alessandro Azevedo Cacho Examinador DIMAp – Departamento de Informática e Matemática Aplicada UFRN – Universidade Federal do Rio Grande do Norte Profa. Dra. Rossana Maria de Castro Andrade Examinador DC – Departamento de Computação UFC – Universidade Federal do Ceará Prof. Dr. Vinícius Cardoso Garcia Examinador CIn – Centro de Informática UFPE – Universidade Federal de Pernambuco Natal-RN, 16 de Dezembro de 2021. Dedico este trabalho com muito amor, a minha esposa Noelly, minha filha Sofia e meu filho Artur, que são meu porto seguro, inspiração e motivação. Agradecimentos Agradeço a DEUS, pois a ele tudo devo. Agradeço a minha família, Noelly, Sofia e Artur pela paciência, ajuda, força, apoio e pelos momentos em que precisei ficar ausente. Agradeço aos meus pais, Mauro e Emília, e irmãs, Camila e Marcela pelo incentivo e amor. Agradeço a Gibeon, por ser muito mais que um professor/orientador, um amigo. Enfim, agradeço a todos que direta ou indiretamente, contribuíram para a realização deste trabalho. Você não pode mudar o vento, mas pode ajustar as velas do barco para chegar onde quer. Confúcio Uma Proposta de Arcabouço para Tolerância a Falhas Multicamadas em Sistemas IoT Autor: Mário Andrade Vieira de Melo Neto Orientador(a): Prof. Dr. Gibeon Soares de Aquino Jr. Resumo A tolerância a falhas em sistemas IoT é um desafio a ser superado devido à sua com- plexidade, dinamicidade e heterogeneidade. Os sistemas IoT são normalmente projetados e construídos em camadas, em que cada uma delas possui seus próprios requisitos e es- tratégias de tolerância a falhas. No entanto, erros em uma camada podem propagar-se e causar efeitos em outras. Portanto, é impraticável considerar uma abordagem de tolerân- cia a falhas centralizada para todo um sistema. Consequentemente, é vital considerar a colaboração entre várias camadas de maneira a permitir a troca de informações para lidar com as falhas. O objetivo deste estudo é propor uma abordagem que auxilie a tolerância a falhas multicamadas, possibilitando a interconexão entre as camadas de um sistema IoT, fornecendo formas para prover a troca de informações e colaboração com o objetivo de melhorar a propriedade da dependabilidade nesses sistemas. Para atingir esse objetivo, é estabelecida a patologia de falhas que auxilia na compreensão das falhas e seus comporta- mentos servindo de base para a definição de um arcabouço orientado a eventos chamada FaTEMa (Fault Tolerance Event Manager). Este arcabouço cria um canal de comunica- ção dedicado para propagar eventos relacionados a falhas através dos níveis do sistema, auxiliando na detecção de erros e continuação dos serviços. Além disso, o arcabouço pro- posto oferece pontos de extensão para suportar protocolos de comunicação heterogêneos e permitir o desenvolvimento de novos recursos. Os resultados da avaliação empírica de- monstraram que a introdução do FaTEMa estabeleceu melhorias nos tempos de detecção e resolução de erros, consequentemente melhorando a disponibilidade do sistema. Além disso, o uso do FaTEMa proporcionou uma melhoria na confiabilidade através da redução do número de falhas produzidas. Palavras-chave: IoT, dependabilidade, tolerância a falhas, detecção de erros, recuperação de erros, confiabilidade, disponibilidade A Framework Proposal for Multi-Layer Fault Tolerance in IoT Systems Author: Mário Andrade Vieira de Melo Neto Supervisor: Prof. Dr. Gibeon Soares de Aquino Jr. Abstract Fault tolerance in IoT systems is challenging to overcome due to its complexity, dy- namicity, and heterogeneity. IoT systems are typically designed and constructed in layers. Every layer has its requirements and fault tolerance strategies. However, errors in one layer can propagate and cause effects on others. Thus, it is impractical to consider a cen- tralized fault tolerance approach for an entire system. Consequently, it is vital to consider multiple layers in order to enable collaboration and information exchange when addres- sing fault tolerance. The purpose of this study is to propose a multi-layer fault tolerance approach, granting interconnection among IoT system layers, allowing information ex- change and collaboration in order to attain the property of dependability. In order to attain this purpose, the pathology of failures is established, which aids in understanding the faults and their behavior, serving as a basis for defining an event-oriented framework called FaTEMa (Fault Tolerance Event Manager). This framework creates a dedicated communication channel to propagate fault-related events through system levels, assisting in error detection and service continuation. Additionally, it offers extension points to sup- port heterogeneous communication protocols and evolve new capabilities. The empirical evaluation results show that introducing FaTEMa provided improvements to the error de- tection and error resolution time, consequently improving system availability. In addition, the use of Fatema provided a reliability improvement and a reduction in the number of failures produced. Keywords: IoT; dependability; fault tolerance; error detection; error recovery; reliability; availability. Lista de figuras 1 Passos da Metodologia . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 23 2 Árvore da Dependabilidade definida por Avizienis et al. (AVIZIENIS et al., 2004) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 28 3 Cadeia de Ameaças adaptada de Avizienis et al. (AVIZIENIS et al., 2004) p. 30 4 Cadeia de Ameaças em Sistemas IoT Associada a Suas Patologias . . . p. 35 5 Procedimento de Snowballing . . . . . . . . . . . . . . . . . . . . . . . p. 38 6 Processo de seleção . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 39 7 Taxonomia de Falhas em Sistemas IoT . . . . . . . . . . . . . . . . . . p. 46 8 Modelo Causa-Efeito e ameaças em um Sistema IoT . . . . . . . . . . . p. 52 9 Modelo de Propagação de Defeitos em Sistemas IoT . . . . . . . . . . . p. 53 10 Ilustração da aplicação do modelo de propagação de falhas em sistemas IoT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 55 11 Arquitetura do FaTEMa . . . . . . . . . . . . . . . . . . . . . . . . . . p. 64 12 Visão de módulos da Arquitetura . . . . . . . . . . . . . . . . . . . . . p. 69 13 Visão Arquitetural de Componentes e Conectores . . . . . . . . . . . . p. 70 14 Processo de Extensibilidade dos Módulos do Arcabouço . . . . . . . . . p. 72 15 Funcionamento do FaTEMa em um sistema IoT baseado em camadas . p. 73 16 Exemplo de um Cenário de um Sistema IoT para Monitoramento e Atu- ação em um Prédio Inteligente usando o FaTEMa . . . . . . . . . . . . p. 75 17 Fluxo de eventos em um sistema IoT para um prédio inteligentes fazendo uso do FaTEMa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 77 18 Diagrama de Classes Base do Arcabouço . . . . . . . . . . . . . . . . . p. 78 19 Diagrama de Classes genérico para um Componente Principal . . . . . p. 79 20 Diagrama de Classes genérico para um Componente Extensor . . . . . p. 80 21 Arquitetura do sistema para a avaliação experimental. (a) Arquitetura sem a presença do FaTEMa. (b) Arquitetura com a presença do FaTEMa. p. 85 22 Comparação das respostas às requisições ao longo do tempo para cada ce- nário experimental. (a) S#1—Respostas ao Longo do Tempo. (b) S#2— Respostas ao Longo do Tempo. . . . . . . . . . . . . . . . . . . . . . . p. 93 23 Comparação do Overhead de CPU ao Longo do Tempo em Cada Cenário Experimental. (a) S#1—Overhead de CPU ao Longo do Tempo. (b) S#2—Overhead de CPU ao Longo do Tempo. . . . . . . . . . . . . . . p. 95 24 Comparação do Overhead de Largura de Banda ao Longo do Tempo em Cada Cenário experimental. (a) S#1—Overhead de Largura de Banda ao longo do tempo. (b) S#2—Overhead de Largura de Banda ao longo do tempo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 96 Lista de tabelas 1 Principais Bases de conhecimento indexadas pelo Scopus . . . . . . . . p. 36 2 Estudos selecionados e lidos cuidadosamente . . . . . . . . . . . . . . . p. 40 3 Classificação dos trabalhos que relatam a origem de falhas em cada uma das camadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 41 4 A classificação dos tipos de falhas em sistemas IoT endereçadas por cada trabalho . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 46 5 Métricas utilizadas para avaliar o benefício do uso de FaTEMa . . . . . p. 83 6 Cenários experimentais e os mecanismos de tolerância a falhas utilizados. p. 86 7 Medições do tempo para a detecção dos erros. . . . . . . . . . . . . . . p. 88 8 Medições do tempo de resolução dos erros. . . . . . . . . . . . . . . . . p. 89 9 Valores das métricas relativas a disponibilidade do sistema. . . . . . . . p. 90 10 Métricas de Confiabilidade . . . . . . . . . . . . . . . . . . . . . . . . . p. 91 11 Desafios endereçados pelos trabalhos relacionados. (D1 – Heterogenei- dade, D2 – Adaptabilidade e Evolução, D3 – Mecanismo de Decisão Dis- tribuída e D4 – Redundância de informação) . . . . . . . . . . . . . . . p. 99 Lista de abreviaturas e siglas IoT – Internet das Coisas WSN - Redes de Sensores Sensores Sem Fio RFID – Radio-Frequency IDentification SFI – Software Fault Injection QP – Questão de Pesquisa ITU-T – International Telecommunications Union - Telecommunication Standardization Sector CEP – Processador de Eventos Complexos SAN – Rede de área de armazenamento FaTEMa – Fault Tolerance Event Manager UML – Linguagem de Modelagem Unificada CoAP – Constrained Application Protocol MQTT – Message Queuing Telemetry Transport FCM – Mapas Cognitivos Fuzzy PHD – Dispositivos Pessoais de Saúde RFID – Identificação por radiofrequência NFC – Comunicação por campo de proximidade LFT – Tolerância a falhas local Sumário 1 Introdução p. 17 1.1 Contextualização . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 17 1.2 Problematização . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 19 1.3 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 21 1.4 Questões de Pesquisa . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 22 1.5 Metodologia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 22 1.6 Sumário de Contribuições . . . . . . . . . . . . . . . . . . . . . . . . . p. 23 1.7 Organização do trabalho . . . . . . . . . . . . . . . . . . . . . . . . . . p. 24 2 Referencial Teórico p. 25 2.1 Internet das Coisas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 25 2.2 Tolerância a Falhas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 26 2.2.1 Dependabilidade . . . . . . . . . . . . . . . . . . . . . . . . . . p. 27 2.2.1.1 Atributos . . . . . . . . . . . . . . . . . . . . . . . . . p. 27 2.2.1.2 Ameaças . . . . . . . . . . . . . . . . . . . . . . . . . . p. 29 2.2.1.3 Meios . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 30 2.2.2 Etapas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 31 2.2.3 Injeção de Falhas . . . . . . . . . . . . . . . . . . . . . . . . . . p. 32 2.3 Conclusões . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 32 3 A Patologia de Falhas em Sistemas IoT p. 34 3.1 Revisão do Estado da Arte . . . . . . . . . . . . . . . . . . . . . . . . . p. 35 3.1.1 Metodologia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 35 3.1.1.1 Objetivo e Questões de Pesquisa . . . . . . . . . . . . p. 36 3.1.1.2 Processo de Busca e Seleção . . . . . . . . . . . . . . . p. 36 3.1.2 Critérios de inclusão e exclusão . . . . . . . . . . . . . . . . . . p. 37 3.1.3 Definição do conjunto inicial e Processo de iteração . . . . . . . p. 37 3.1.4 Coleta de dados . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 38 3.1.5 Validade do processo . . . . . . . . . . . . . . . . . . . . . . . . p. 38 3.1.6 Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 38 3.2 Respostas às questões de pesquisa . . . . . . . . . . . . . . . . . . . . . p. 40 3.2.1 QP1: Quais são as origens de falhas em sistemas IoT? . . . . . p. 40 3.2.1.1 Camada de Percepção . . . . . . . . . . . . . . . . . . p. 41 3.2.1.2 Camada de Comunicação . . . . . . . . . . . . . . . . p. 43 3.2.1.3 Camada de Serviço . . . . . . . . . . . . . . . . . . . . p. 44 3.2.1.4 Camada de Aplicação . . . . . . . . . . . . . . . . . . p. 45 3.2.2 QP2: Como são caracterizadas as falhas em sistemas IoT? . . . p. 45 3.2.2.1 Duração . . . . . . . . . . . . . . . . . . . . . . . . . . p. 45 3.2.2.2 Localização . . . . . . . . . . . . . . . . . . . . . . . . p. 47 3.2.2.3 Semântica . . . . . . . . . . . . . . . . . . . . . . . . . p. 48 3.2.2.4 Comportamento . . . . . . . . . . . . . . . . . . . . . p. 49 3.2.2.5 Dimensão . . . . . . . . . . . . . . . . . . . . . . . . . p. 50 3.3 Modelo de Propagação de Defeitos em Sistemas IoT . . . . . . . . . . p. 50 3.3.1 Exemplo de Aplicabilidade:Cenário de casas inteligentes . . . . p. 54 3.4 conclusão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 56 4 Arcabouço para Tolerância a Falhas Multicamadas p. 57 4.1 Principais Desafios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 58 4.1.1 D1 – Heterogeneidade . . . . . . . . . . . . . . . . . . . . . . . p. 58 4.1.2 D2 – Adaptabilidade e Evolução . . . . . . . . . . . . . . . . . . p. 58 4.1.3 D3 – Mecanismo de Decisão Distribuída . . . . . . . . . . . . . p. 59 4.1.4 D4 – Redundância de informação . . . . . . . . . . . . . . . . . p. 59 4.2 Decisões de Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 60 4.2.1 Canal de comunicação multicamadas . . . . . . . . . . . . . . . p. 60 4.2.2 Comunicação interoperável . . . . . . . . . . . . . . . . . . . . . p. 61 4.2.3 Arquitetura Orientada a Eventos . . . . . . . . . . . . . . . . . p. 61 4.2.4 Detecção e recuperação de erros colaborativa . . . . . . . . . . . p. 62 4.3 Arcabouço FaTEMa . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 62 4.3.1 Componentes . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 65 4.3.1.1 Event Input Channel . . . . . . . . . . . . . . . . . . . p. 66 4.3.1.2 Event Processing . . . . . . . . . . . . . . . . . . . . . p. 67 4.3.1.3 Event Storage . . . . . . . . . . . . . . . . . . . . . . . p. 67 4.3.1.4 Event Output Channel . . . . . . . . . . . . . . . . . . p. 67 4.3.1.5 Event Bus . . . . . . . . . . . . . . . . . . . . . . . . . p. 68 4.3.2 Descrição da Arquitetura . . . . . . . . . . . . . . . . . . . . . . p. 68 4.3.2.1 Visão de Módulos . . . . . . . . . . . . . . . . . . . . . p. 68 4.3.2.2 Visão de Componentes e Conectores . . . . . . . . . . p. 69 4.3.3 Processo de Extensibilidade . . . . . . . . . . . . . . . . . . . . p. 71 4.3.4 Funcionamento do FaTEMa . . . . . . . . . . . . . . . . . . . . p. 72 4.3.5 Exemplo de uso do FaTEMa . . . . . . . . . . . . . . . . . . . . p. 74 4.4 Implementação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 76 4.4.1 Componentes Principais . . . . . . . . . . . . . . . . . . . . . . p. 76 4.4.2 Componentes Extensores . . . . . . . . . . . . . . . . . . . . . . p. 80 4.5 Conclusões . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 81 5 Avaliação Experimental do FaTEMa p. 82 5.1 Avaliação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 82 5.1.1 Design do Experimento . . . . . . . . . . . . . . . . . . . . . . p. 83 5.1.2 Execução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 87 5.1.3 Resultados e análises . . . . . . . . . . . . . . . . . . . . . . . . p. 87 5.2 Discussão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 91 5.2.1 Ameaças à Validade . . . . . . . . . . . . . . . . . . . . . . . . p. 97 5.3 Conclusão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 98 6 Trabalhos Relacionados p. 99 6.1 Conclusões . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 105 7 Considerações finais p. 107 7.1 Conclusões . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 107 7.2 Principais contribuições . . . . . . . . . . . . . . . . . . . . . . . . . . p. 109 7.3 Limitações . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 110 7.4 Trabalhos futuros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 111 Referências p. 112 Apêndice A -- Coleta e análise de dados do Capítulo 3 p. 123 Apêndice B -- Implementação do FaTEMa e dados experimento apre- sentado no Capítulo 5 p. 124 17 1 Introdução Este capítulo tem a finalidade de situar o tema abordado no trabalho. Assim, descreve- se a contextualização do mesmo na Seção 1.1. Na Seção 1.2 são descritos o problema e a hipótese tratados neste estudo. Por sua vez, a Seção 1.3 descreve o objetivo geral da pesquisa e enumera os objetivos específicos dela. Em seguida, na Seção 1.5 é explicada a metodologia aplicada ao trabalho. Por conseguinte, a Seção 1.6 resume as contribuições deste trabalho. Por fim, a Seção 1.7 apresenta a forma como o mesmo está organizado. 1.1 Contextualização Internet das Coisas (IoT, do inglês Internet of Things) tem como objetivo projetar a visão de uma rede global de objetos físicos conectados a qualquer tempo, em qual- quer lugar e por qualquer um (KUBLER; FRÄMLING; BUDA, 2015; KOSMATOS; TSELIKAS; BOUCOUVALAS, 2011; MADAKAM; RAMASWAMY; TRIPATHI, 2015). IoT denota um fenô- meno em que um grande número de dispositivos embutidos, em diversos locais, aplicam padrões de comunicação disponibilizados pelos protocolos da internet. Esses dispositivos ou, como são chamados nesse contexto, “coisas”, geralmente não são diretamente opera- dos por pessoas, mas estão presentes, na forma de componentes, em casas inteligentes, prédios, veículos, sistemas de saúde ou espalhados pelos ambientes (TSCHOFENIG et al., 2015). Assim, a ideia básica deste conceito é a presença pervasiva através do uso de uma variedade de coisas ou objetos (dispositivos), através de esquemas de identificação única, permitindo uma interação uns com os outros e com seus vizinhos para atingir um objetivo em comum (ATZORI; IERA; MORABITO, 2010). O domínio IoT tem emergido rapidamente em um ecossistema necessário em que dados, processos, pessoas, coisas e a internet estão associados. Estima-se que em 2030, 500 bilhões de dispositivos IoT estarão instalados e conectados, gerando mais de 180 ZB de informações em diversas áreas (IHS, 2019; CISCO, 2018; GARCIA-MORCHON; KUMAR; SETHI, 2019). As previsões indicam que o paradigma IoT continua se expandindo e até 18 2023, 50% das conexões da internet se darão a partir de dispositivos IoT (CISCO, 2020; AMAN et al., 2020). Os sistemas baseados em IoT, estão modificando o estilo de vida das pessoas e em um futuro próximo, ela estará, cada vez mais, ubiquamente embutida em diversos aspectos do cotidiano (Miraz et al., 2015). O potencial da mudança na qualidade de vida promovida pelos sistemas IoT é in- questionável. Assim, IoT é um paradigma que causou mudanças profundas na forma de relacionar pessoas e tecnologia, modificando sistemas e sociedades (WEYRICH; EBERT, 2015). As aplicações IoT estão fortemente conectadas ao mundo físico através de diversos tipos de dispositivos (sensores, atuadores, tags, gateways, entre outros), produzindo um certo grau de desconfiança e incerteza introduzido pelas “coisas” conectadas a essas apli- cações (DAR; TAHERKORDI; ELIASSEN, 2016). Esse crescimento no uso de soluções IoT, requerem, em muitos casos, uma quantidade enorme de dispositivos implantados em diver- sos domínios como saúde, indústria, transportes, agricultura, energia e casas inteligentes (AMAN et al., 2020; Asghar; Negi; Mohammadzadeh, 2015; LEE; LEE, 2015). Essa escala massiva na implantação de dispositivos IoT, altamente distribuídos, tornam a propriedade da de- pendabilidade uma preocupação devido a causas externas (ambientes altamente inóspitos) ou causas internas (falhas de energia, componentes de baixa qualidade). Isso acaba resul- tando em uma baixa qualidade da experiência do usuário ou de informações questionáveis (DISTEFANO, 2013; SILVA et al., 2013). Assim, embora promissora estabelecer a visão de IoT necessita endereçar diversos de- safios relacionados aos atributos de disponibilidade, confiabilidade, desempenho, escalabi- lidade, interoperabilidade e segurança (WHITMORE; AGARWAL; XU, 2015; AL-FUQAHA et al., 2015; PASTÓRIO; RODRIGUES; CAMARGO, 2020). Entre todos esses desafios destacam- se a confiabilidade e disponibilidade que estão diretamente ligadas a um sistema prover um serviço de maneira correta. Assim, caso o sistema falhe, isso pode colocar a vida de pessoas em risco, resultar em perdas financeiras ou causar danos aos ambientes (SILVA et al., 2013; AL-FUQAHA et al., 2015). Associado a isso, os sistemas IoT estão expostos a cená- rios de incertezase de alta complexidade necessitando de avanços no desenvolvimento de mecanismos que possibilitem endereçar adequadamente os atributos disponibilidade e con- fiabilidade que são atributos que se referem a confiança no funcionamento do sistema ou dependabilidade (CICCOZZI et al., 2017; HAMMOUDI; ALIOUAT; HAROUS, 2018; AVIZIENIS et al., 2004). Além disso, o paradigma IoT também é caracterizado por sua heterogeneidade e multidisciplinaridade que integra diversas áreas de pesquisa como Sistemas Distribuídos, Redes de Sensores Sem Fio (WSN, do inglês Wireless Sensor Network) , Computação em Nuvem, Computação Pervasiva e Engenharia de Software (GUBBI et al., 2013). Portanto, 19 heterogeneidade e interoperabilidade emergem como barreiras a serem superadas pelos sistemas IoT no objetivo de endereçar a propriedade da dependabilidade. 1.2 Problematização Toda essa evolução tecnológica alavancada pela IoT vem com um preço: falhas podem causar acidentes fatais, perda de grandes quantidades de dinheiro, entre outras situações, podendo gerar diminuição da confiança aos olhos da opinião pública, incluindo na dos próprios usuários (RATASICH et al., 2019). Por esta razão, a dependabilidade em aplica- ções e infraestruturas IoT tem se tornado crucial em vários contextos, particularmente em domínios críticos como saúde, sistemas em tempo real, militar, entre outros (ŞTEFAN; OTTO; ALEXANDRINA, 2017; CICCOZZI et al., 2017). Para garantir essa propriedade nos sistemas, é necessário endereçar, principalmente, os atributos de confiabilidade, disponi- bilidade e manutenabilidade. Tratando-se de serviços, a disponibilidade deve possibilitar que o serviço fornecido por um sistema IoT (ou parte dele) não seja afetado por falhas em sua própria estrutura e/ou em elementos subjacentes, como componentes, subsistemas ou sistemas inteiros (KNIGHT, 2012; LAPRIE, 2008). Quanto à confiabilidade, possibilita o contínuo fornecimento do serviço corretamente durante um determinado período de tempo (KNIGHT, 2012; LAPRIE, 2008). A manutenabilidade está relacionada à habilidade de permitir a modificação e correção de serviços (AVIZIENIS; LAPRIE; RANDELL, 2001). No contexto IoT, com sua larga escala, heterogeneidade, alta distribuição interde- pendência, às falhas são, praticamente, inevitáveis, ou seja, os projetistas desses sistemas devem partir dessa premissa para a construção das soluções (ASIM; MOKHTAR; MERABTI, 2010; SOUZA; VOGT; BEIGL, 2007; ALHO; MATTILA, 2015). Algumas pesquisas reportam que a implantação de sistemas IoT em larga escala para aplicações reais não é uma ativi- dade trivial e pode levar a incontáveis falhas (SANCHEZ et al., 2014; SHIH et al., 2016; SU et al., 2014; ZHOU et al., 2015; BARRENETXEA et al., 2008; TATESON et al., 2005; MARTINEZ et al., 2005; WERNER-ALLEN et al., 2006). Uma possível solução para reduzir a ocorrência de falhas nesses sistemas é proporcionar melhorias na qualidade dos hardwares e softwares utilizados. No entanto, esta estratégia sozinha não garante, totalmente, a não ocorrência de falhas, e irá, em contrapartida, aumentar significativamente o custo desses sistemas. A tolerância a falhas desempenha um papel essencial na manutenção do funciona- mento regular de um sistema, mesmo na presença de falhas (HUANGSHUI; GUIHE, 2011). No entanto, a aplicação de técnicas de tolerância a falhas em sistemas IoT é uma tarefa 20 complexa, apresentando inúmeros desafios. Primeiramente, esses sistemas, normalmente, são estruturados com várias “coisas” heterogêneas para oferecer o suporte a aplicações com múltiplos propósitos (SHIH et al., 2016; HEIDEMANN; GOVINDAN, 2005; KOUSHAN- FAR; POTKONJAK; SANGIOVANNI-VINCENTELL, 2002). Além disso, frequentemente, estes sistemas possuem requisitos particulares e específicos em relação a esquemas e restrições de tolerância a falhas, incluindo características específicas de falhas (LI; JI; LI, 2013; KA- RACA; SOKULLU, 2012). Além desses, os sistemas IoT são inerentemente complexos em virtude da sua aplicação em grande escala, heterogeneidade e interação com mundo fí- sico (OJIE; PEREIRA, 2017; RATASICH et al., 2019; OJIE, 2020). Além desses, o paradigma IoT está em constante evolução, o que requer suporte a novas tecnologias, protocolos e funcionalidades (DENKER et al., 2012; LITTLEWOOD; STRIGINI, 2000; ZHOU et al., 2019). As implementações atuais de mecanismos de tolerância a falhas em IoT estão focadas em problemas específicos: (1) eles são projetados para arquiteturas e aplicações específicas (GIA et al., 2015; WOO; LEE; PARK, 2018); (2) eles não escalam além de pequenas soluções descentralizadas (ARDEKANI et al., 2017; MARRA et al., 2017) e centralizadas (GIA et al., 2015); e (3) eles fornecem soluções para falhas específicas, como falhas de link (KARTHI- KEYA; VIJETH; MURTHY, 2016) e falhas de dispositivo (KHAN; HAMEED, 2018), e muitas vezes focam em apenas uma das camadas de abstração do sistema, sem considerar uma visão global (XING, 2020; GENSH; ROMANOVSKY; YAKOVLEV, 2015). Além disso, normal- mente, camadas e dispositivos de sistemas, atuam de maneira cooperativa e coordenada disseminando informações de vários formatos e para diferentes aplicações (AKPAKWU et al., 2017). Essa dependência de funcionamento, em muitos casos, produz a distribuição dos dados e informações gerados em uma camada para outras camadas com o propósito de realizar uma posterior transmissão ou processamento e tratamento dessas informações (SINGH, 2018; GUIMARAES et al., 2019). Portanto, os erros em uma camada podem se pro- pagar, causando falhas em camadas subjacentes, fazendo com que o sistema seja suscetível a falhar como um todo. Além disso, uma decisão aplicada ao se tolerar uma determinada falha em uma camada pode impactar o funcionamento de outras camadas ou serviços. Assim, devido aos desafios atuais em IoT, é difícil adotar um mecanismo de tolerância a falhas unificado e eficaz para contemplar todas as camadas do sistema (LI; JI; LI, 2013; ZHOU et al., 2015; SAHOO; VEERAVALLI; KUMAR, 2016). Além disso, é improvável, garantir que todas as camadas irão possuir mecanismos que consigam lidar com todos os tipos de erros e falhas. Portanto, é vital proporcionar o compartilhamento de informações relativas às falhas entre de modo a viabilizar a adoção de estratégias de tolerância a falhas que possam tomar decisões baseadas em uma visão holística do sistema. E, portanto, auxiliar 21 no processo de melhoria do atributo de confiabilidade nos sistemas. Nesse contexto, emerge a necessidade de definir um mecanismo que possibilite a co- laboração entre as estratégias de tolerância a falhas presentes nas camadas dos sistemas IoT proporcionando o compartilhamento de informações relevantes relacionadas a falhas. Assim, será possível realizar a tomada de decisão descentralizada a respeito da tolerância a falhas considerando o contexto e especificidades das camadas e do restante do sistema. Consequentemente, cada camada poderá realizar o processo de tolerância a falhas aten- dendo seus requisitos e restrições atuando de maneira interoperável objetivando evitar a propagação de erros, melhorando a confiabilidade e disponibilidade do sistema (GENSH, 2018; DEHON; CARTER; QUINN, 2011). Por conseguinte, este trabalho endereça este pro- blema através de uma abordagem que auxilia a realização da tolerância a falhas multica- madas facilitando o processo de comunicação e interoperabilidade entre as estratégias de tolerância a falhas. No entanto, a tolerância a falhas é composta de várias etapas como detecção, confi- namento e avaliação, recuperação, e tratamento e continuação de serviço. As etapas de confinamento e avaliação necessitam, além de conhecer o estado do sistema, atuar para modificar ou isolá-lo. Portanto, dependem exclusivamente do conhecimento a respeito do estado interno ao qual se está tolerando, bem como possuir disponibilidade de atuação. No entanto, as etapas de detecção, e tratamento e continuaçãode serviço, não dependem inteiramente da necessidade de estar próximo ou poder atuar sobre o estado do serviço ou aplicação para identificar um estado errôneo ou recuperado. Essa informação pode ser obtida através do compartilhamento de informações dos estados dos serviços e aplicações. Assim, o mecanismo proposto neste trabalho foca em apoiar a disseminação da informação do estado das aplicações e serviços, especificamente para auxiliar na detecção dos errros, bem como no tratamento e continuação de serviços. 1.3 Objetivos Este trabalho tem como objetivo geral compreender a ocorrência de falhas em sistemas IoT, estabelecendo um arcabouço multicamadas para suporte à tolerância delas, especi- almente nas etapas de detecção de erros e continuação de serviço. Desse modo, baseado neste objetivo enumera-se os seguintes objetivos específicos: • Compreender os aspectos relacionados à falhas em sistemas IoT, tais como, a origem, tipos e formas de propagação. 22 • Projetar a arquitetura do arcabouço superando os desafios relatados e possibilitando o compartilhamento de informações entre camadas e estratégias de tolerância a falhas. • Implementar a arquitetura do arcabouço provendo um canal de comunicação dedi- cado e transversal que estabeleça o compartilhamento de informações relativas às falhas e suas implicações entre as camadas. • Estabelecer um formato de comunicação flexível e que permita adaptações para suportar a heterogeneidade e evolução das tecnologias e protocolos. 1.4 Questões de Pesquisa Com base nos objetivos definidos, este trabalho é guiado por duas questões de pes- quisa: Questão 01 Quais as características e o comportamento das falhas em sistemas IoT? O propósito dessa questão é compreender como ocorre o estabelecimento da cadeia de ameaças, para tal, foi necessário identificar a origem da ocorrência de falhas, quais os tipos de erros e como ocorre a propagação dos defeitos. Esse conjunto de etapas se relaciona através do estabelecimento de uma relação causal e da interdependência materializando a patologia das falhas. Como no domínio IoT estão envolvidas diversas tecnologias, aplica- ções e interações, o uso de estratégias que suportem a heterogeneidade e adaptabilidade de mecanismos para realizar gerenciamento de falhas tornam-se promissoras. Além disso, em virtude, dessas características e da interação dos componentes dos sistemas entre si, com outros sistemas e com o ambiente, emerge-se a necessidade de possibilitar a inter- comunicação entre os diferentes mecanismos objetivando um tratamento distribuído das falhas. Questão 02 A adoção da abordagem para auxiliar a tolerância a falhas multicamadas em sistemas IoT, especialmente nas etapas de detecção de erros e continuação de serviços, introduz benefícios na dependabilidade, particularmente os atributos de confiabilidade e disponibilidade? Esta questão tem como objetivo avaliar o benefício em termos de confiabilidade e disponibilidade, alcançados em virtude da utilização da abordagem para auxílio a tole- 23 rância a falhas multicamada. Para tal, foi estabelecido uma avaliação experimental que realiza a comparação da utilização do arcabouço combinado com técnicas de tolerância a falhas presentes na literatura. Na avaliação, coletou-se o tempo necessário para detec- tar e recuperar-se de um erro, o tempo em que o sistema esteve disponível, bem como a quantidade de erros e defeitos produzidos. 1.5 Metodologia Com o intuito de alcançar o objetivo estabelecido nesta pesquisa, foi seguida a meto- dologia apresentada na Figura 1, a qual é composta por cinco passos: revisão da literatura, projeto da arquitetura, implementação do arcabouço, avaliação e trabalhos relacionados. Figura 1: Passos da Metodologia Fonte: Autor No passo de revisão da literatura almejou-se entender o estado atual da área de IoT em relação às falhas e suas implicações. Para isso, foi realizada uma revisão do estado da arte identificando e classificando a origem e tipos de falhas comumente presentes em sistemas IoT. Além disso, com base nos resultados da revisão foi possível estabelecer a patologia das falhas em sistemas IoT. Essa patologia, organiza o conhecimento a respeito das falhas em sistemas IoT indicando sua origem, tipos e formas de propagação. Em seguida, projetou-se o arcabouço FaTEMa, acrônimo de Fault Tolerance Event Manager, para atuar como intermediador da comunicação entre camadas facilitando o compartilhamento de informações relacionadas à falhas em sistemas IoT. Para tal, fo- ram listados os desafios a serem superados pelas estratégias de tolerância a falhas em sistemas IoT, as decisões de projeto que superam esses desafios, bem como a descrição e documentação da arquitetura projetada. Posteriormente, realizou-se a implementação da arquitetura do FaTEMa atendendo as decisões de projeto. Por conseguinte, foi realizada uma avaliação da utilização do arcabouço através da realização de um experimento computacional que tem por objetivo avaliar os benefícios da sua utilização nos atributos de disponibilidade e confiabilidade. Para tal, foi desenvolvido 24 um sistema de casas inteligentes em que se avaliou as consequências trazidas pelo uso do FaTEMa. Por fim, foram discutidos os resultados obtidos. Finalmente, realizou-se o levantamento dos trabalhos relacionados ao desenvolvido nesta tese. Nesse passo, esses estudos foram descritos e comparados ao trabalho desenvol- vido nesta pesquisa. 1.6 Sumário de Contribuições A principal contribuição científica deste trabalho é a proposta de uma abordagem para tolerância a falhas multicamadas em sistemas IoT através de um arcabouço que auxilia na intercomunicação entre as camadas do sistema estabelecendo uma integração entre elas com o objetivo de facilitar o compartilhamento de informações relacionadas às falhas. Essa abordagem teve seus resultados preliminares relatados e publicados em MELO; AQUINO (2021b). Além disso, uma versão completa e estendida da abordagem proposta, bem como o relato do experimento foi publicado em MELO; AQUINO (2021a). Uma contribuição secundária desta tese é o estabelecimento da patologia das falhas em sistemas IoT, a qual classifica a origem e tipos de falhas, bem como estabelece um modelo de propagação de defeitos nesses sistemas tendo sido publicada em MELO; AQUINO (2021c). 1.7 Organização do trabalho O restante deste trabalho é organizado da seguinte maneira. No Capítulo 2 apresenta a fundamentação teórica contendo os conceitos e terminologias necessários ao entendimento deste estudo. O Capítulo 3 apresenta a revisão da literatura realizada neste trabalho. Essa revisão foi feita com o intuito de posicionar o pesquisador em relação a patologia das falhas em sistemas IoT. O Capítulo 4 descreve o arcabouço proposto, bem como a abordagem de tolerância a falhas multicamadas. Para avaliar o arcabouço proposto, é realizada uma avaliação experimental envolvendo um sistema IoT de casas inteligentes no Capítulo 5. O Capítulo 6 apresenta os trabalhos relacionados a esta tese. Por fim, o Capítulo 7 expõe as considerações finais deste trabalho, destacando as principais conclusões, contribuições, limitações e trabalhos futuros. 25 2 Referencial Teórico Neste capítulo são apresentados os conceitos essenciais ao entendimento desta tese. Na Seção 2.1, é apresentada uma visão geral do domínio IoT, bem como sua definição. A Seção 2.2 apresenta conceitos e definições relacionados à área de tolerância a falhas. Por fim, a Seção 2.3 aborda as considerações finais deste capítulo. 2.1 Internet das Coisas A Internet das Coisas (do inglês Internet of Things - IoT ) é um termo que foi citado pela primeira vez em 1999 (ASHTON et al., 2009). Inicialmente, a aplicabilidade de IoT era compreender o ambiente e a rotina ao redor das pessoas, a partir da coleta de dados provenientes de Radio-Frequency IDentification (RFID) tags utilizando a internet como meio de comunicação (ASHTON et al., 2009). Hoje, quaseduas décadas depois, sua aplica- ção tem se espalhado cada vez mais e para uma grande variedade de domínios. Assim, IoT representa o presente e o futuro da computação e da comunicação, integrando diversas inovações técnicas em áreas vitais, desde redes de comunicação até a nanotecnologia (WU et al., 2010). Este paradigma tem como premissa atuar como uma tecnologia que permite a interação ubíqua e pervasiva através de objetos e coisas, como RFID tags, sensores, atuadores, dispositivos móveis com pessoas e sistemas (ATZORI; IERA; MORABITO, 2010). Assim, partindo da junção das palavras “Internet” e “Coisas” é introduzida a visão que faz uso de um meio comunicação (Normalmente, sem fio) através dos quais os objetos intera- gem entre si formando uma rede cooperativa de dispositivos (ATZORI; IERA; MORABITO, 2010). Esta abordagem tecnológica permite a criação de ambientes digitais, virtuais e em tempo real possibilitando a interconexão entre as “coisas” a qualquer tempo e em qual- quer lugar, com qualquer coisa ou alguém (TAN; WANG, 2010). A intercomunicação e interação entre dispositivos e ambientes cria uma série de oportunidades e contribuições valorosas para a vida das pessoas e organizações (ATZORI; IERA; MORABITO, 2010). A 26 aplicabilidade do paradigma IoT pode se dar nos mais diversos domínios como(ATZORI; IERA; MORABITO, 2010; ANDRADE et al., 2017): • Transporte: aplicações que auxiliam no controle do tráfego, sugerem as melhores rotas para os veículos, monitoramento de frotas. • Saúde: Fazer uso de equipamentos de monitoramento (relógios inteligentes, câmeras, sensores de presença, monitores cardíacos e outros) de idosos ou pessoas enfermas em casas ou hospitais enviando as informações para os médicos, possibilitando o controle da informação e tratamento. • Pessoal: aplicações voltadas à melhoria na qualidade de vida das pessoas através do monitoramento de casas inteligentes, controle de equipamentos, manter e construir relacionamentos. • Agricultura: controlar o crescimento de plantações, monitorando a umidade, tem- peratura, insolação, clima e etc. Estes sistemas podem ser vistos como uma composição de “coisas” altamente distri- buída e dinâmica em que cada um possui uma quantidade substancial de objetos pro- duzindo e consumindo informação (KRIEBEL et al., 2018; TAVČAR; HORVATH, 2018). A habilidade de interagir com a realidade física é atingida pela presença de dispositivos capazes de sentir fenômenos físicos e os traduzir para informações digitais a serem pro- cessadas, assim como, produzir efeitos sobre o ambiente em que se está inserido, gerando novas atuações. Os sistemas IoT são, normalmente, distribuídos entre diferentes domínios de apli- cação e localização geográfica, o que cria uma série de dependências entre dispositivos, domínios, plataformas e serviços (UVIASE; KOTONYA, 2018). Além disso, as característi- cas pervasivas, heterogêneas e complexas presentes em tais sistemas, levarão a mudanças e evolução ao longo do tempo. Essas características emergem preocupações relativas à dependabilidade pois falhas em alguns domínios não são aceitáveis pois podem colocar a vida de pessoas em risco (ZHOU et al., 2015). Assim, para prover a dependabilidade nesses sistemas, é necessário garantir dois importantes fatores: identificar a origem das falhas e possuir mecanismos para tolerar e mitigar essas ocorrências (RATASICH et al., 2019). 27 2.2 Tolerância a Falhas Para obter a dependabilidade em sistemas computacionais é necessário considerar que a falta de confiança em um sistema é consequência de uma sequência de falhas. Além disso, esses sistemas são por natureza complexos, contendo normalmente subsistemas e componentes que interagem através de relações complexas. Consequentemente, falhas são inevitáveis, e elas podem acontecer de várias formas (LEE; ANDERSON, 1990). Então, a tolerância a falhas é o meio utilizado para atingir a dependabilidade considerando a entrega do serviço correto e evitando os defeitos mesmo na presença de falhas (AVIZIENIS et al., 2004; LAPRIE, 1992). O seu objetivo é mitigar os efeitos provocados pela existência de falhas após o desenvolvimento dos sistemas empregando técnicas e abordagens para mascarar e manter o sistema em execução mesmo na presença de falhas (PULLUM, 2001). 2.2.1 Dependabilidade O conceito de dependabilidade é definido por Avizienis et al. (AVIZIENIS et al., 2004; AVIZIENIS; LAPRIE, 1986; AVIZIENIS; LAPRIE; RANDELL, 2001) como “a capacidade de fornecer serviços que podem ser, justificadamente, confiáveis” e alternativamente como “a capacidade de evitar falhas em serviços que são mais frequentes e mais graves do que o aceitável”. William Carter (CARTER, 1982) em seu trabalho define dependabilidade como “a confiabilidade de um sistema de computador, de modo que a confiança possa ser justificadamente depositada no serviço que ele fornece”. B. Parhami (PARHAMI, 1988) define a dependabilidade como “a confiança garantida de que o sistema executará as ações especificadas ou fornecerá resultados especificados de maneira confiável em tempo hábil”. Dessa forma, é possível perceber que o atributo da dependabilidade está diretamente ligado ao conceito de confiança, em que um sistema entrega um serviço a um usuário (humano ou outro sistema) e esse deve ter a sua confiança garantida. No entanto, essa definição básica é simplista, dada a vasta quantidade de sistemas de computação e co- municação existentes. Com o objetivo de expandir esse conceito, focando a sua definição em partes relevantes nos sistemas baseados em computador, Avizienis et al. (AVIZIENIS et al., 2004) define uma árvore de dependabilidade (Figura 2) contendo os principais concei- tos que envolvem essa propriedade considerando seus atributos, ameaças e os meios para atingi-la. Apesar de existirem outros modelos e conceitos relacionados a dependabilidade e confiabilidade, que definem atributos e meios, como o modelo de qualidade de Software 28 Figura 2: Árvore da Dependabilidade definida por Avizienis et al. (AVIZIENIS et al., 2004) Fonte: O Autor ISO/IEC 25010:2011 – SQuaRE (ISO/IEC, 2011), neste trabalho serão utilizadas as de- finições conceituadas e estabelecidas na área de tolerância a falhas (AVIZIENIS, 1967; AVIZIENIS et al., 2004; LAPRIE et al., 1990; LEE; ANDERSON, 1990). 2.2.1.1 Atributos Dependabilidade é um conceito global integrado que incorpora um conjunto de atribu- tos que são utilizados para medir e habilitar o entendimento a partir de várias perspectivas. Assim, os atributos que compõem a dependabilidade são (AVIZIENIS et al., 2004; LAPRIE et al., 1990): • Disponibilidade: Prover corretamente o serviço. É o grau com o qual um sistema ou componente está operacional e acessível quando tem seu uso solicitado (ISO/I- EC/IEEE, 2017). • Confiabilidade: É a habilidade do sistema ou componente em disponibilizar o serviço de acordo com as condições estabelecidas durante um determinado período de tempo (ISO/IEC/IEEE, 2017). • Segurança (safety): Ausência de consequências catastróficas para os usuários e o ambiente. 29 • Integridade: Ausência de alterações impróprias no sistema. • Manutenabilidade: Capacidade de sofrer modificações e reparos. • Confidencialidade: Ausência de divulgação não autorizada das informações do sistema. A aplicabilidade e importância desses atributos irá variar dependendo das necessi- dades das aplicações, assim diferentes ênfases podem ser aplicadas a diferentes facetas da dependabilidade. Apesar de conter vários atributos, a dependabilidade é geralmente quantificada a termo de disponibilidade e confiabilidade. Esses dois atributos são as chaves para avaliar a melhoria ao se fazer uso de meios para lidar com as falhas, ou seja, quanto mais um sistema for capaz de lidar com as falhas, mais disponível e confiável é esperado que ele seja (NELSON, 1990; JHAWAR; PIURI; SANTAMBROGIO, 2012). 2.2.1.2 Ameaças Qualquer definição de dependabilidade deve envolver adistinção entre os compor- tamentos aceitáveis ou não por um sistema. Dessa forma, quando o funcionamento do sistema desvia dos comportamentos aceitáveis definidos em sua especificação, ocorre um defeito (failure) (AVIZIENIS et al., 2004). Para um sistema, definida a sua especificação e comportamentos esperados, a análise a respeito da origem das ameaças deve-se levar em consideração apenas a operação interna do sistema. Assim, dois conceitos discutem essen- cialmente a origem das falhas e estes são conhecidos por transições errôneas (erroneous transition) e estado errôneo (erroneous state). Uma transição errônea é a transição do estado interno do sistema para um estado errôneo, o que leva a um subsequente defeito (LEE; ANDERSON, 1990). Um erro (error) é uma parte do estado errôneo que constitui a diferença para um estado válido. Assim, um erro é causa de um provável defeito quando atinge o estado externo do sistema. No entanto, nem todos os erros conseguirão atingir esse estado. Um erro é detectado se sua presença é indicada por uma mensagem de erro ou sinal, esse processo é definido como ativação do erro. Quando o erro não é detectado é chamado de erro latente (AVIZIENIS et al., 2004). A causa de um erro é uma falha (fault). Um erro é uma falha que foi ativada, quando não é dito que a falha está dormente (AVIZIENIS et al., 2004; PULLUM, 2001). Uma falha é um estado do sistema que pode causar a redução ou a falta de capacidade do sistema de prover corretamente uma determinada funcionalidade (LEE; ANDERSON, 1990; ISERMANN, 2006). 30 Não há uma relação de unicidade entre uma falha e um erro: uma falha pode gerar vários erros e estes erros podem ter sido ocasionados por uma única falha, em termos de manifestação e detecção em um sistema. Um erro quando presente em um sistema, pode sistematicamente transformar-se em outros erros até atingir as fronteiras do sistema, causando um defeito. Essa cadeia é conhecida como cadeia de ameaças e está representada na Figura 3. Quanto maior é a propagação de erro através de um sistema, maior é a dificuldade dessa falha ser tolerada (RASHID; PATTABIRAMAN; GOPALAKRISHNAN, 2014). Portanto, a detecção e identificação eficaz e rápida dos erros traz melhorias ao processo de tolerância a falhas (MITRA; BRELSFORD; SANDA, 2010). Figura 3: Cadeia de Ameaças adaptada de Avizienis et al. (AVIZIENIS et al., 2004) Fonte: O Autor 2.2.1.3 Meios Além da tolerância a falhas, existem outros três meios de se obter a dependabilidade (AVIZIENIS et al., 2004): • Prevenção de falhas: refere-se à aplicação de princípios de design e operação que previnam a ocorrência de falhas. • Remoção de falhas: refere-se à aplicação de técnicas que visam reduzir a quantidade e a severidade das falhas. • Previsão de falhas: refere-se a utilização de técnicas de previsão e o endereçamento das falhas atuais e que estão por acontecer, além de suas consequências. Esses meios são agrupados de acordo com as ações tomadas pelas abordagens em relação às falhas para se atingir a dependabilidade. A ação mais óbvia e direta é garantir que o sistema esteja livre de falhas. Para tal é necessário que as potenciais falhas sejam evitadas, assim qualquer falha deve ser eliminada antes do sistema entrar em operação ou prever novas falhas quando o sistema estiver operando. Esse agrupamento de abordagens 31 é definido como prevenção de falhas (LEE; ANDERSON, 1990; PULLUM, 2001). O segundo agrupamento de abordagens aceita que o sistema construído não é perfeito e requer esforço para manter o sistema em funcionamento mesmo na presença de falhas, que é definido como tolerância a falhas (LEE; ANDERSON, 1990; PULLUM, 2001). A tolerância a falhas é baseada no princípio de que os outros meios não serão to- talmente efetivos e por esta razão, é necessário implementar mecanismos para prover a tolerância a falhas, prevenindo danos (AVIZIENIS et al., 2004). A prevenção, remoção e previsão de falhas, apesar de importantes para a área de tolerância a falhas, não se pode garantir que se conseguirão prever e evitar todos os cenários de falhas nos sistemas (STRI- GINI, 2012). Portanto, a utilização de estratégias de tolerância a falhas é essencial para se atingir a dependabilidade em sistemas computacionais. 2.2.2 Etapas O processo de tolerar falhas refere-se à habilidade de entregar corretamente um serviço mesmo na presença de falhas no sistema (AVIZIENIS, 1967). Esse processo é normalmente realizado através de etapas não sequenciais, porém que atuam em conjunto para habilitar a mitigação das falhas. As etapas para a realização da tolerância a falhas são (PASIN; RIVEILL; WEBER, 2001; LEE; ANDERSON, 1990): • Detecção de Erros: A detecção de erros é o primeiro passo para possibilitar a tolerância a falhas em um sistema. Nesta etapa a estratégia de tolerância a falhas tenta detectar estados errôneos do sistema. Esta detecção pode ocorrer durante a execução normal dos serviços, sendo chamada de detecção concorrente ou de maneira preemptiva que ocorre durante a suspensão da execução do serviço para a checagem de falhas dormentes. Todos os sistemas tolerantes a falhas devem possuir formas de identificar erros. • Confinamento e avaliação: Quando um erro é identificado, este precisa ser isolado para prevenir a propagação, bem como fazer a avaliação dos danos. Assim, devido ao provável atraso entre a manifestação das falhas e ocorrência do erro é necessário avaliar o dano causado e quais serão as medidas adotadas para tolerar essa falha. Assim, essa avaliação é baseada em informações contextuais (Ex.: componentes er- rôneos, tempo de ocorrência e outras informações relacionadas) ajuda a identificar o melhor procedimento de recuperação a ser executado sobre aquela falha hipotética. O confinamento serve para garantir que o comportamento errôneo seja colocado em 32 quarentena e seu erro seja isolado impedindo a propagação de informações inválidas antes da aplicação do procedimento de recuperação. • Recuperação: Uma vez que o erro foi detectado e analisado, entra em ação a etapa de recuperação que serve para transformar o estado errôneo corrente de um sistema em um estado livre de erros para que a operação regular volte a acontecer. Outra denominação a esta etapa é a mitigação dos erros em que a recuperação é realizada substituindo o estado errôneo por um estado livre de erros ou mitigando o erro, fazendo a transição para um novo estado (HANMER, 2013). Um exemplo de mitigação é o tratamento empregado para realizar a correção de dados. Uma das formas de recuperar ou mitigar os erros é através da utilização de redundância. Para tal, é necessário utilizar componentes auxiliares que realizam a mesma função ou funções similares de outros elementos com o objetivo de prevenir ou recuperar-se dos defeitos (ISO/IEC/IEEE, 2017). • Tratamento e continuação de serviço: É a última etapa do processo de to- lerância a falhas, e as técnicas de tratamento atuam para que o sistema continue provendo o serviço demandado de maneira correta, garantindo que os efeitos da falha que foi recuperada não ocorram novamente. Esta etapa é dividida em dois estágios: localização das falhas que visa garantir que a falha não seja ativada novamente, portanto sendo necessário identificar sua localização; e reparação do sistema que normalmente necessita reconfigurar ou atualização o sistema que o estado errôneo seja removido (HANMER, 2013). Uma vez que o erro foi localizado e reparado é o momento de retornar o sistema para a sua operação normal. Uma maneira simples de executar essa operação é realizando o reinício do sistema. 2.2.3 Injeção de Falhas Para avaliar o funcionamento de um sistema na presença de falhas, bem como os mecanismos de tolerância empregados, utiliza-se a estratégia de injeção de falhas para avaliar e monitorar experimentalmente o comportamento do sistema. A injeção de falhas pode ser realizada através do nível de hardware ou software, e é um meio utilizado paraantecipar os cenários em que os erros são ocasionados (NATELLA; COTRONEO; MADEIRA, 2016). Uma forma de se fazer isso é utilizando o mecanismo de Software Fault Injection (SFI). Este mecanismo consiste em um procedimento automatizado para geração de falhas, 33 injeção, monitoramento e coleta de informações a respeito das falhas e do sistema alvo (HSUEH; TSAI; IYER, 1997). Uma alternativa ao uso do SFI é realizar a inserção de falhas de maneira manual. Isso envolve operações diversas como, por exemplo, desabilitar a placa de rede de um dos nós para provocar uma falha de comunicação, remover um sensor da rede ou até mesmo provocar um efeito em um ambiente causando uma mudança nos dados gerados, entre outras. 2.3 Conclusões Este capítulo apresentou os conceitos essenciais relacionados a esta tese, como Internet das Coisas e Tolerância a Falhas. Na seção de Internet das Coisas, foram apresentados os conceitos fundamentais, características e a necessidade de garantir que aplicações sejam confiáveis. Na seção de Tolerância a Falhas, foram apresentados os conceitos fundamentais de dependabilidade. Além disso, foi apresentada a árvore de dependabilidade e detalhada toda sua taxonomia de atributos, ameaças e meios. Ademais, identificamos as etapas cons- tituintes da implementação das estratégias de tolerância a falhas: Detecção, Confinamento e avaliação, Recuperação, e Tratamento e continuação de serviço. Finalmente, apresen- tamos o conceito de injeção de falhas, técnica utilizada para avaliar experimentalmente sistemas na presença de falhas. 34 3 A Patologia de Falhas em Sistemas IoT Geralmente, os sistemas IoT estão inseridos em um ecossistema composto por vários sistemas independentes e elementos computacionais heterogêneos que colaboram para atender objetivos em comum. Esta colaboração entre sistemas (no mundo físico e ciber- nético) introduz uma interdependência complexa entre sistemas e elementos IoT. Devido a essas características, em sistemas IoT, as falhas são quase inevitáveis (ASIM; MOKHTAR; MERABTI, 2010; SOUZA; VOGT; BEIGL, 2007; ALHO; MATTILA, 2015). Associado a isso, se nenhuma ação for tomada, uma falha ocorrida em um sistema pode ser significativamente ampliada devido a essas relações complexas e interdependentes, levando vários sistemas a falharem comprometendo a dependabilidade dos serviços (BEREZIN et al., 2015; BULDY- REV et al., 2010). Assim, neste trabalho realizamos uma investigação do estado da arte com o objetivo de entender o comportamento das falhas em sistemas IoT e identificar problemas em aberto. Em qualquer sistema, existe uma relação causal entre falhas, erros e defeitos. Esta relação dos mecanismos de criação e manifestação de ameaças são materializados quando a cadeia de falha-defeito é ativada. Uma interpretação genérica é que o erro só ocorre quando uma falha é ativada, e por propagação, pode gerar vários erros antes de um defeito ocorrer. Assim, esta propagação e instanciação da cadeia podem ocorrer via interação entre componentes, elementos e sistemas. Essas manifestações e relações entre ameaças da dependabilidade são chamadas de patologia de falha. Este conceito foi estabelecido por Avizienis et al. (AVIZIENIS et al., 2004). Dessa maneira, para entender e classificar o comportamento das falhas em um sistema IoT é necessário estabelecer a relação de causalidade e interdependência entre essa cadeia de ameaças. Portanto, este estudo tem como objetivo estabelecer a patologia das falhas em um sistema IoT, identificando e classificando a origem, tipos e comportamentos das falhas em sistemas IoT. A Figura 4 apresenta o estabelecimento da patologia de falhas 35 relacionando-a com a cadeia de ameaças. Para estabelecer a patologia, foi executada uma revisão da literatura relatada na Seção 3.1. Essa revisão teve como objetivo identificar a origem das falhas, estabelecendo as principais fontes de ameaças e a ocorrência de erros. Além disso, foi investigado e classificado quais os tipos de falhas são os mais comuns de ocorrerem em sistemas IoT. Assim, foi proposta uma taxonomia da classificação dos tipos de falhas e erros. Na Seção 3.3 foi realizada uma análise do processo de ocorrência e propagação de falhas em sistemas IoT considerando sua forma e características estabelecendo um modelo de propagação de defeitos. Figura 4: Cadeia de Ameaças em Sistemas IoT Associada a Suas Patologias O Autor 3.1 Revisão do Estado da Arte Esta seção descreve o protocolo, bem como os resultados da revisão do estado da arte a respeito da origem e os tipos de falhas presentes em sistemas IoT, a mesma foi importante para ajudar os pesquisadores a terem uma compreensão geral da origem e comportamento das falhas, bem como as estratégias utilizadas para tolerá-las. Desse modo, os pesquisadores tinham o intuito de entender como ocorrem as falhas e quais são suas classificações. 3.1.1 Metodologia Esta revisão do estado da arte foi baseada no método de uma revisão por Snowballing definido por Wholin (WOHLIN, 2014). Assim, esse estudo tem como objetivo avaliar o estado da arte e identificar questões em aberto na área de tolerância a falhas e suas 36 implicações em sistemas IoT. 3.1.1.1 Objetivo e Questões de Pesquisa Além de obter uma visão geral a respeito da área de tolerância a falhas em sistemas IoT, esta revisão almeja proporcionar uma visão clara sobre a origem e tipos de falhas que ocorrem nestes sistemas. Assim, pesquisadores e profissionais da área podem beneficiar-se produzindo soluções mais adequadas para tolerar falhas em seus contextos específicos. Dessa maneira, este objetivo foi refinado nas seguintes Questões de Pesquisa (QP) : QP1 – Quais são as origens de falhas em sistemas IoT? QP2 – Como são caracterizadas as falhas em sistemas IoT? 3.1.1.2 Processo de Busca e Seleção Assim, a busca inicial foi executada através do engenho de busca automatizado Scopus 1. Esse engenho de busca foi selecionado por indexar as principais bases de conhecimento da área de Ciência da Computação e Engenharia. A Tabela 1 apresenta exemplos de algumas bases indexadas pelo Scopus. Esse procedimento mitiga a falta de pesquisa em outras bases facilitando o processo de extração e sumarização. Tabela 1: Principais Bases de conhecimento indexadas pelo Scopus Base Endereço ACM Digital Library https://dl.acm.org/ Elsevier https://www.elsevier.com/ IEEE Xplore http://ieeexplore.ieee.org/ Springer Link https://link.springer.com/ Fonte: O Autor A definição da string de Busca considerou termos relacionados à Internet das coisas e dependabilidade, com o objetivo de obter o maior número de artigos que relacionassem essas duas áreas. No entanto, sistemas IoT podem estar envolvidos em diferentes de domí- nios sendo necessário considerar essa multidisciplinariedade de tecnologias e paradigmas (KRIEBEL et al., 2018; OJIE; PEREIRA, 2017; FRÖHLICH et al., 2018). Assim, a String de busca definida é detalhada a seguir: 1https://www.scopus.com/ 37 (fault or error or failure) AND ( classification OR definition OR class or taxonomy or source or semantic ) AND ( “Internet of Thing” or IoT OR “wireless sensor network” or WSN OR “Cyber-Physical Systems” or cps OR pervasive ) 3.1.2 Critérios de inclusão e exclusão Nesta revisão foram considerados e filtrados todos os estudos que estivessem de acordo com os seguintes critérios: • Não discutiam ou caracterizavam falhas em sistemas IoT. • Não estavam em inglês; • Não estavam disponibilizados por completo; 3.1.3 Definição do conjunto inicial e Processo de iteração Para obter sucesso na execução de uma revisão da literatura utilizando Snowballing é necessário identificar um conjunto inicial de trabalhos a serem avaliados. Algumas carac- terísticas são essenciais para a inclusão desses trabalhos como ponto de partida da revisão, como: devem ser relevantes e bem citados na área em questão, devem cobrir diferentes anos, autores e locais de publicação devem ter relação com asquestões de pesquisas defini- das. Dessa maneira, seguindo essas indicações foram identificados 22 possíveis candidatos a fazerem parte do conjunto inicial baseado na String busca definida na Seção 3.1.1.2. No entanto, aplicando os critérios de exclusão, bem como a leitura dos títulos e resumos, restaram 11 trabalhos para iniciar a execução do processo de revisão. Uma vez que o conjunto inicial foi definido, é necessário executar o processo de backward snowballing e forward snowballing. Esses processos são apresentados na Figura 5. Assim, para cada trabalho do conjunto inicial são executadas as duas etapas. No backward snowballing, o objetivo é incluir novos trabalhos a partir da lista de referências. Assim, para cada referência do artigo analisado, são avaliados o título e os critérios de exclusão caso haja uma indicação para inclusão, então o resumo do trabalho candidato é lido. Caso seja, decidido que esse trabalho candidato será incluído então ele é selecionado e será avaliado e analisado na próxima iteração. O forward snowballing refere-se a análise dos artigos que citam o trabalho analisado. Assim, o trabalho candidato tem sua avaliação do título e critérios de exclusão avaliados e caso haja uma indicação de inclusão, seu resumo é lido, conforme ocorre no backward snowballing. 38 Figura 5: Procedimento de Snowballing Fonte: O Autor 3.1.4 Coleta de dados Os dados necessários para análise e avaliação extraídos 2 e coletados a partir dos trabalhos foram: ano de publicação, autores, título, tipo da publicação, repositório de pesquisa. Adicionalmente, para os trabalhos lidos cuidadosamente também se coletou os dados necessários para responder às questões de pesquisa, como: objetivo, domínio, classificação da origem de falhas, tipos de falhas, desafios e oportunidades. 3.1.5 Validade do processo Os estudos foram analisados durante dois meses por dois pesquisadores para garantir a validade do processo. No entanto, o principal viés desta revisão é que as conclusões dela podem refletir a opinião deles, em virtude da subjetividade das tarefas do protocolo de trabalhos deste tipo. 3.1.6 Resultados O processo de seleção dos trabalhos analisados nesta revisão do estado da arte é apresentado na Figura 6. Primeiramente, para estabelecer o conjunto inicial de artigos que serão avaliados através do procedimento de snowballing, foi executada a String de Busca na 2Os dados coletados estão disponíveis no seguinte endereço: https://bit.ly/2Xg63ow 39 base de dados Scopus, a qual retornou 1374 trabalhos. Em virtude da grande quantidade de trabalhos obtidos através da pesquisa, foram aplicados os critérios de exclusão e a relevância do trabalho para a área. Para tal, foram lidos o título e resumo nesta etapa do processo, resultando na seleção de 22 trabalhos. Então, uma análise mais aprofundada dos artigos, avaliando o conteúdo do artigo, objetivando identificar se, tratava-se de um bom candidato a fazer parte da revisão. Após essa etapa, obteve-se como resultado em um conjunto inicial com 11 trabalhos. Figura 6: Processo de seleção Fonte: O Autor Uma vez que o conjunto inicial de artigos foi selecionado, iniciou-se a execução das interações do procedimento de snowballing. A primeira iteração, avaliou cada artigo pre- sente no conjunto inicial, bem como realizou as etapas de backward snowballing e forward snowballing, conforme apresentado na Figura 5. Inclusive, avaliando se o artigo deveria fazer parte do conjunto final para leitura completa. Nessa iteração, 10 trabalhos candida- tos foram incluídos para serem avaliados. E, como resultado da avaliação das referências e citações, 11 novos trabalhos foram selecionados para serem avaliados na segunda iteração. Na segunda iteração, 6 dos 11 trabalhos avaliados nessa etapa foram incluídos na revisão. Além disso, 6 novos trabalhos foram selecionados para fazer parte da terceira iteração. Na terceira iteração, apenas 3 trabalhos foram incluídos e nenhum novo foi selecionado, fi- nalizando o procedimento de snowballing. Portanto, 19 trabalhos foram selecionados para o conjunto final de trabalhos a terem a sua leitura cuidadosa realizada. Esses trabalhos selecionados podem ser visualizados na Tabela 2. 40 Tabela 2: Estudos selecionados e lidos cuidadosamente ID Trabalho T1 (CHETAN; RANGANATHAN; Campbell, 2005) T2 (RATASICH et al., 2019) T3 (SOUZA; VOGT; BEIGL, 2007) T4 (MORIDI et al., 2020) T5 (POWER; KOTONYA, 2019) T6 (PARADIS; HAN, 2007) T7 (MAHAPATRO; KHILAR, 2013) T8 (CHOUIKHI et al., 2015) T9 (LIU; NAYAK; STOJMENOVIĆ, 2009) T10 (SWAIN; KHILAR; BHOI, 2018) T11 (KHAN; MERABTI; ASKWITH, 2009) T12 (ZHANG et al., 2018) T13 (CRISTIAN, 1991) T14 (ALRAJEI; FU; ZHU, 2014) T15 (MUHAMMED; SHAIKH, 2017) T16 (WARRIACH; AIELLO; TEI, 2012) T17 (ALI; TIXEUIL, 2010) T18 (JURDAK et al., 2011) T19 (RAPOSO et al., 2017) Fonte: O Autor 3.2 Respostas às questões de pesquisa Nesta seção são respondidas as questões de pesquisa desta revisão do estado da arte. 3.2.1 QP1: Quais são as origens de falhas em sistemas IoT? Para responder a esta questão foi realizada uma categorização da origem de falhas considerando a camada do sistema em que a mesma pode acontecer. Assim, utilizamos a classificação em camadas proposta por Burhan et al. (BURHAN et al., 2018), Xing (XING, 2020) e International Telecommunications Union (ITU–T) (ITU-T, 2012). Assim, as ori- gens das falhas identificadas na revisão foram classificadas de acordo com a camada em que ocorreu. As camadas utilizadas nessa classificação foram Percepção, Comunicação, 41 Serviço e Aplicação. Na Tabela 3 sumariza os trabalhos que classificam a origem das falhas em sistemas IoT. Tabela 3: Classificação dos trabalhos que relatam a origem de falhas em cada uma das camadas Camadas de um sistemas IoT Trabalhos Percepção T1,T2,T3,T7,T8,T9,T11,T18,T14 e T19 Comunicação T1,T2,T3,T7,T8,T9,T11,T18,T14 e T19 Serviço T1, T2, T3, T6, T7, T8, T9, T18 e T19 Aplicação T1, T2, T8 e T18 Fonte: O Autor 3.2.1.1 Camada de Percepção Nesta camada, as causas de falhas estão diretamente relacionadas com a obtenção e extração dos dados associados aos dispositivos físicos. Esses dispositivos são, normalmente, dispositivos que possuem funções de sensoriamento e atuação nos ambientes. Alguns exem- plos de tipos de sensores e atuadores são de temperatura, umidade, eletrocardiograma, válvulas, dispositivos de automação, entre outros. Estes dispositivos estão associados a nós heterogêneos que necessitam de uma série de capacidade para realizar processamento e compartilhamento das informações. Esses nós são compostos, de maneira geral, por sen- sores e atuadores, memórias, baterias, unidades de processamento, interfaces de rede e software embutidos. A principal causa das falhas que ocorrem nesta camada está relacionada ao funciona- mento dos próprios componentes. Muitas vezes, eles são feitos com requisitos e componen- tes de baixa qualidade, o que contribui para a ocorrência de falhas. Outra causa de falhas recorrente é o impacto do meio ambiente sobre o funcionamento dos dispositivos físicos, causando falhas como quebra, intervenção direta e radiação. Além disso, outras causas de falha estão relacionadas a problemas de bateria, interferência, leitura ou desempenho incorreto e mau funcionamento do software embutido (aquisição ou funções de desem- penho, roteamento). Dessa forma, a classificação da origem das falhas nessa camada foi organizada considerando os principais componentes presentes nos nós sensores. Origem das falhas dessa camada são classificadas e organizadas, tais como: • Sensores e Atuadores: Componentes físicos, como sensores, atuadores, dispositivos 42 móveis e componentes mecânicos podem falhar. Alguns exemplos de falhas são es- tresse físico em componentes, gabinetes inadequados, implantação em ambientes hostis e baixa quantidade de energia, resultando no mau funcionamento dos dispo- sitivos físicos. Além disso, os dispositivos colocados em ambienteshostis são vulne- ráveis a falhas relacionadas à interrupção, intervenção direta ou destruição. Esses tipos de falhas são geralmente permanentes, requerem intervenção manual e alguns casos, substituição. Outro tipo de falha enfrentado por objetos físicos é a interfe- rência eletromagnética. Conforme o número de dispositivos conectados aumenta, a radiação aumenta. Esta situação pode influenciar as medições, mensagens ou sinais de controle transmitidos (YAQOOB et al., 2017; RATASICH et al., 2019). Falhas que causam perda de calibração podem ocorrer durante todo o ciclo de vida das aplicações, o que diminui a precisão das medições dos sensores. Há três diferentes tipos de erros de calibração, tais como: falhas de deslocamento (medições do sensor deslocamento do valor inicial por uma quantidade constante), falhas de ganho (a taxa de mudança dos dados medidos não corresponde às expectativas ao longo do tempo), e falhas de drift (o desempenho pode se desviar da calibração original medições) (MAHAPATRO; KHILAR, 2013). • Unidade de Processamento: Esta fonte de falhas abrange componentes relacionados a unidade de processamento dos nós sensores, como memória, bateria e microproces- sador. Falhas nos componentes de processamento afetam a qualidade e consistência dos dados armazenados e suas operações. Por exemplo, mudanças de bit de memó- ria ou registros especiais podem corromper os dados armazenados (CHOUIKHI et al., 2015). Falha de memória limitada ou erros de memória (vazamento ou violação de memória) que pode fazer com que um sistema trave ou opere em modo degradado (ALI; TIXEUIL, 2010). Outro exemplo de falha é o aumento anormal na tempera- tura do processador, o que pode causar falhas de cálculo incorreto (MAHAPATRO; KHILAR, 2013). Outro tipo de falha que pode ocorrer nas unidades de processamento é sobrecarga de processamento, esse tipo situação pode ser produzida pela baixa capacidade de com- putação, ou até mesmo, um alto volume de solicitações superando as capacidades do dispositivo, levando-o a falhar. Em relação a falhas relacionadas ao suprimento de energia, uma situação que pode gerar eventos inesperados é o acréscimo ele- vado na temperatura da bateria causando a sua degradação (RAPOSO et al., 2017). Outra situação que pode originar falhas é a ocorrência de baixa tensão na bate- ria gerando falhas de dados, corrupção, incompletude ou não envio (MAHAPATRO; 43 KHILAR, 2013). Em alguns cenários práticos é impossível recarregar ou substituir a bateria faltosa durante a operação do sistema. • Rede de Comunicação: A forma de comunicação utilizada para conectar dispositivos pode ser sem fio ou com fio, e cada uma pode sofrer de diferentes tipos de falhas. Por exemplo, as comunicações sem fio estão geralmente sujeitas a interferência. Alguns exemplos de falhas são ruído do ambiente, ruído no canal, desvanecimento multipath, interferência de radiofrequência (JURDAK et al., 2011; MAHAPATRO; KHILAR, 2013). As comunicações com fio são vulneráveis a quebra de conectores, deterioração de material e efeitos ambientais sobre os componentes físicos (por exemplo, sujeira) (RATASICH et al., 2019; PARADIS; HAN, 2007). • Software Embutido: Nos nós sensores, o software atua no processamento e rotea- mento das informações coletadas pelos sensores. Assim, as falhas de processamento de dados podem ocorrer se a aquisição de dados não for realizada de forma adequada ou se os sensores subjacentes fornecerem leituras incorretas (WARRIACH; AIELLO; TEI, 2012). Por exemplo, um erro na agregação de dados pode levar a dados errados para os níveis superiores. Uma abordagem típica de agregação de dados calcula a média dos valores medidos das variáveis correlacionadas, enviando apenas a infor- mação consolidada para as camadas superiores. Se esta camada gerar informações incorretas, os dados resultantes da agregação podem sofrer desvios do valor real. Bugs de software são amplamente difundidos e alguns deles podem gerar falhas em cascata. Alguns exemplos comuns são especificações de design incorretas, falhas na arquitetura do sistema, falhas no projeto do software, algoritmos incorretos (SOUZA; VOGT; BEIGL, 2007; CHOUIKHI et al., 2015). 3.2.1.2 Camada de Comunicação Esta camada é responsável por possibilitar a comunicação entre as demais camadas do sistema e os dispositivos presentes nos ambientes. Assim, ela tem como objetivo transmitir as informações que foram coletadas e agregadas pela camada de percepção e transmitir as camadas superiores. As principais causas de falhas nesta camada estão relacionadas aos aspectos de rede como colisão de mensagens, violação dos protocolos de comunicação, quebra de dispositivos, interferência, mudanças dinâmicas nas topologias de rede e con- gestão. Dessa forma, as origem das falhas na camada de comunicação foram classificadas em nas seguintes categorias: 44 • Link: Os links de comunicação IoT são estabelecidos por meio de comunicação com e sem fio. Links com fio tem, usualmente, uma taxa constante de mensagens e tendem a ser mais estáveis. No entanto, há exposição a possíveis interrupções e quebras. Por outro lado, links sem fio são altamente voláteis e nem sempre garantem a mesma taxa de entrega de mensagens (LIU; NAYAK; STOJMENOVIĆ, 2009; ZHANG et al., 2018; ALRAJEI; FU; ZHU, 2014). A instabilidade do link pode levar a falhas nos caminhos de roteamento (PARADIS; HAN, 2007; RAPOSO et al., 2017). Uma falha comum está relacionada a interferência nos links de comunicação, apesar de afetar, normalmente, com mais frequência as comunicações sem fio, porém também pode ocorrer nas transmissões com fio. Se um link de comunicação estiver operando com tráfego intenso, isso pode causar indisponibilidade ou colisão de mensagens (SOUZA; VOGT; BEIGL, 2007; CHOUIKHI et al., 2015). Além disso, os dispositivos podem mover-se para locais diferentes de maneira que se tornem inacessíveis, resultando em uma completa perda de dados. Por exemplo, veículos autônomos em movimento ao entrar em túneis subterrâneos ou locais sem torres de celular. Os links também podem falhar quando permanentemente ou temporariamente bloqueados por objetos externos ou condições ambientais desfavoráveis (PARADIS; HAN, 2007). • Conectividade: Falhas de conectividade podem causar atrasos inaceitáveis, falha ou erro na entrega de mensagens (KHAN; MERABTI; ASKWITH, 2009; SOUZA; VOGT; BEIGL, 2007). Problemas nas rotas de transmissão podem causar falhas na entrega das mensagens aos destinos, afetando vários caminhos do sistema e de outros siste- mas colaborativos. O roteamento é um dos blocos fundamentais na construção de sistemas IoT (GIA et al., 2015; MISRA et al., 2012). De maneira similar a interferência, quanto maior o número de dispositivos comunicando-se maior a possibilidade de fa- lhas relacionadas a colisões ou sobrecarga da rede. Outra falha de conectividade é a violação de protocolos devido à mensagens com conteúdo errado ou a utilização de diferentes versões de um determinado protocolo ou ainda, incompatibilidade entre versões. 3.2.1.3 Camada de Serviço A camada de serviço é a responsável por armazenar e processar dados em massa nos sistemas IoT (SUO et al., 2012). Neste nível estão localizadas as estratégias de computação em nuvem, processadores de eventos complexos (CEP) e redes de área de armazenamento (SAN) . Falhas originadas nesta camada estão diretamente ligadas a ameaças de hard- 45 ware e software. Exemplos de falhas em hardware podem ser um disco rígido que degrada devido a flutuação da temperatura, problemas de conectividade de rede e indisponibili- dade de serviços (SOUZA; VOGT; BEIGL, 2007). Falhas de software estão relacionadas a situações contextuais como a coleta de informações errôneas, problemas relacionados ao contexto como inferência equivocadas ou a perda de eventos. Além disso, as falhas podem estar relacionadas a restrições de controle do sistema, como erros de entrada, perda de prazo e efeitos do envelhecimento.
Compartilhar