Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Prévia do material em texto

<p>UNIP – UNIVERSIDADE PAULISTA</p><p>Curso de Ciência da Computação</p><p>ATIVIDADES PRÁTICAS SUPERVISIONADAS - APS</p><p>APLICAÇÃO DOS CONCEITOS DE SISTEMAS DISTRIBUÍDOS NA CONSTRUÇÃO DE UM</p><p>PROGRAMA DE OTIMIZAÇÃO DE COLETA DE LIXO</p><p>Nome do aluno1 - RA</p><p>Nome do aluno1 - RA</p><p>Nome do aluno1 - RA</p><p>Nome do aluno1 - RA</p><p>Nome do aluno1 - RA</p><p>São José dos Campos, XX de setembro de 20XX</p><p>ATIVIDADES PRÁTICAS SUPERVISIONADAS - APS</p><p>APLICAÇÃO DOS CONCEITOS DE SISTEMAS DISTRIBUÍDOS NA CONSTRUÇÃO DE UM</p><p>PROGRAMA DE OTIMIZAÇÃO DE COLETA DE LIXO</p><p>Atividades Práticas Supervisionadas do 8°</p><p>Semestre do Curso de Ciência da Compu-</p><p>tação da Universidade Paulista UNIP.</p><p>Coordenador: Prof. Fernando A. Gotti</p><p>Prof. Responsável: Fernando Mauro</p><p>São José dos Campos, XX de setembro de 20XX</p><p>RESUMO</p><p>Este trabalho tem como objetivo abordar os conceitos aprendidos em aula referentes a</p><p>Sistemas Distribuídos e com isso realizar a criação de um programa inovador voltado</p><p>para a otimização de coleta de lixo e, consequentemente, cuidado para com o meio</p><p>ambiente. A crescente preocupação com a sustentabilidade e a gestão eficiente de</p><p>resíduos demanda soluções tecnológicas que possam melhorar a eficácia das ope-</p><p>rações de coleta de lixo e contribuir para a preservação ambiental. A implementação</p><p>do sistema inclui a criação de uma interface intuitiva, acessível a partir de dispositivos</p><p>móveis e computadores, que permitirá às equipes de coleta acompanhar em tempo</p><p>real o status das coletas, identificar áreas com maior acúmulo de lixo e tomar decisões</p><p>embasadas em dados para otimizar as rotas de coleta.</p><p>Palavras-chaves: Sistemas Distribuídos; Coleta de Lixo; Meio Ambiente; Otimização.</p><p>LISTA DE ILUSTRAÇÕES</p><p>Figura 1 – Diagrama de Arquitetura de Software . . . . . . . . . . . . . . . . . 19</p><p>Figura 2 – Tela de carregamento . . . . . . . . . . . . . . . . . . . . . . . . . . 20</p><p>Figura 3 – Tela de login . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21</p><p>Figura 4 – Tela principal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22</p><p>Figura 5 – Tela de exploração . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23</p><p>Figura 6 – Tela de Histórico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24</p><p>Figura 7 – Tela de perfil usuário . . . . . . . . . . . . . . . . . . . . . . . . . . . 25</p><p>Figura 8 – Tela de rotas diárias . . . . . . . . . . . . . . . . . . . . . . . . . . . 26</p><p>Figura 9 – Tela de detalhamento da rota . . . . . . . . . . . . . . . . . . . . . . 27</p><p>Figura 10 – Tela de perfil do coletor .................................................................................. 28</p><p>SUMÁRIO</p><p>1 INTRODUÇÃO .......................................................................................... 6</p><p>2 SISTEMAS DISTRIBUÍDOS ................................................................... 7</p><p>2.1 Heterogeneidade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8</p><p>2.2 Abertura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9</p><p>2.3 Tratamento de falhas ............................................................................. 10</p><p>2.3.1 Redundância ............................................................................................. 10</p><p>2.3.2 Detecção de Falhas ................................................................................... 11</p><p>2.3.3 Isolamento de Falhas ..................................................................................... 11</p><p>2.3.4 Recuperação Futomática ............................................................................ 11</p><p>2.3.5 Consistência e Replicação de Dados ............................................................... 11</p><p>2.3.6 Protocolos de Consenso ............................................................................. 12</p><p>2.3.7 Balanceamento de Carga ............................................................................... 12</p><p>2.3.8 Monitoramento e Resposta a Eventos ......................................................... 12</p><p>2.3.9 Testes de Falha e Simulações ......................................................................... 12</p><p>2.3.10 Arquiteturas de Sistema Adequadas ............................................................... 12</p><p>2.4 Segurança ...................................................................................................... 12</p><p>2.5 Autenticação e Autorização ........................................................................ 13</p><p>2.5.1 Criptografia ........................................................................................ 13</p><p>2.5.2 Controle de Acesso .................................................................................... 13</p><p>2.6 Escalabilidade ............................................................................................... 13</p><p>2.6.1 Escalabilidade Vertical (Scale-Up) ............................................................... 14</p><p>2.6.2 Escalabilidade Horizontal (Scale-Out) ......................................................... 14</p><p>2.7 Concorrência ................................................................................................. 14</p><p>2.7.1 Condição de Corrida (Race Condition) ........................................................ 14</p><p>2.7.2 Bloqueio e Sincronização ........................................................................... 15</p><p>2.7.3 Concorrência em Acesso a Dados ................................................................... 15</p><p>2.7.4 Outros ............................................................................................... 15</p><p>2.8 Transparência ................................................................................................ 16</p><p>2.8.1 Transparência de Acesso .................................................................... 16</p><p>2.8.2 Transparência de Localização ............................................................. 16</p><p>2.8.3 Transparência de Migração ................................................................. 16</p><p>2.8.4 Transparência de Replicação .............................................................. 16</p><p>2.8.5 Transparência de Concorrência ........................................................... 16</p><p>2.8.6 Transparência de Falhas .................................................................... 17</p><p>2.8.7 Transparência de Persistência ............................................................ 17</p><p>2.8.8 Transparência de Migração de Dados .................................................. 17</p><p>2.8.9 Transparência de Escala ..................................................................... 17</p><p>2.8.10 Transparência de Interconexão .......................................................... 17</p><p>3 MATERIAIS E MÉTODOS ..................................................................... 18</p><p>3.1 Diagrama de arquitetura de software ................................................. 18</p><p>3.2 Design e Telas....................................................................................... 19</p><p>3.2.1 Tela 1 - Carregamento ....................................................................... 19</p><p>3.2.2 Tela 2 - Login .................................................................................... 20</p><p>3.2.3 Tela 3 - Home ................................................................................... 21</p><p>3.2.4 Tela 4 - Explorar ................................................................................ 22</p><p>3.2.5 Tela 5 - Histórico ............................................................................... 24</p><p>3.2.6 Tela 6 - Perfil do Usuário .................................................................... 25</p><p>3.2.7 Tela 7 - Rotas Diárias ........................................................................ 26</p><p>3.2.8 Tela 8 - Detalhamento da Rota ...........................................................</p><p>27</p><p>3.2.9 Tela 9 - Perfil do Coletor .................................................................... 28</p><p>4 DESENVOLVIMENTO DO ESTUDO ................................................ 29</p><p>4.1 Vantagens .............................................................................................. 29</p><p>4.2 Desvantagens ........................................................................................ 30</p><p>4.3 Comparações com meios tradicionais ............................................... 30</p><p>5 CONSIDERAÇÕES FINAIS.................................................................... 32</p><p>REFERÊNCIAS ...................................................................................... 34</p><p>6</p><p>1 INTRODUÇÃO</p><p>A crescente conscientização ambiental e os avanços em Sistemas Distribuídos</p><p>têm contribuído para o desenvolvimento de soluções inovadoras. Este trabalho tem</p><p>como objetivo trazer os princípios fundamentos de Sistemas Distribuídos, conforme</p><p>discutidos por [COULOURIS et al., 2011] e [TANENBAUM; STEEN, 2017] para criar</p><p>um programa destinado a otimizar a coleta de lixo e, por consequentemente, ajudar na</p><p>preservação do meio ambiente. À medida que a sociedade busca a sustentabilidade, a</p><p>necessidade de soluções tecnológicas que aprimorem a eficiência das operações de</p><p>coleta de lixo e promovam a conservação ambiental se torna realidade.</p><p>Os fundamentos teóricos de Sistemas Distribuídos proporcionam a base para a</p><p>aplicação prática neste contexto ambiental. Este estudo busca implementar um sistema</p><p>distribuído que integre dados em tempo real da coleta de resíduos, otimizando possíveis</p><p>rotas para à equipe de coleta. A abordagem proposta permitirá uma compreensão</p><p>abrangente das condições dos resíduos, capacitando equipes de coleta a tomarem</p><p>decisões eficazes para o trabalho, ao otimizar rotas e reduzir o impacto ambiental,</p><p>em concordância com os preceitos de sistemas distribuídos e computação em nuvem</p><p>discutidos por [BUYYA; BROBERG; GOSCINSKI, 2013].</p><p>A criação de um programa com interface de usuário acessível, alinhada às</p><p>diretrizes de interação humano-computador de [NIELSEN, 1993] é um aspecto vital</p><p>do sistema proposto. Essa interface fornecerá às equipes de coleta a capacidade de</p><p>monitorar as coletas em tempo real, identificar áreas de concentração de resíduos e</p><p>tomar decisões fundamentadas. Ela também permitirá ao usuário informar quando o</p><p>lixo de sua residência estiver disponível para a coleta.</p><p>Em resumo, ao combinar a teoria de Sistemas Distribuídos com a aplicação prá-</p><p>tica na área ambiental, este estudo não apenas enriquece o conhecimento acadêmico,</p><p>mas também oferece uma solução concreta para um problema atual e premente.</p><p>7</p><p>2 SISTEMAS DISTRIBUÍDOS</p><p>Nos últimos anos, os Sistemas Distribuídos encontraram um papel crucial na</p><p>transformação da computação e das tecnologias de informação. Com a crescente</p><p>demanda por serviços escaláveis, confiáveis e de alto desempenho, os sistemas dis-</p><p>tribuídos se tornam a abordagem principal para atender tais necessidades. Como</p><p>apontou [TANENBAUM, 2002], ”Os sistemas distribuídos representam uma abordagem</p><p>inovadora que permite a interconexão de múltiplos computadores e recursos em uma</p><p>rede, criando um ambiente altamente escalável e eficiente”. Essa interconexão permite</p><p>a colaboração e o compartilhamento de recursos em grande escala, possibilitando</p><p>aplicações que vão desde redes sociais até sistemas de armazenamento em nuvem,</p><p>sistemas que hoje são imprescindíveis para a sociedade humana.</p><p>À medida que os sistemas distribuídos ganham proeminência, crescem os desa-</p><p>fios referentes à coordenação, concorrência e comunicação em ambientes distribuídos.</p><p>O autor [ANDREWS, 2000] observa que ”a computação distribuída é um campo com-</p><p>plexo que abrange uma ampla gama de tópicos, incluindo redes de computadores,</p><p>algoritmos de coordenação, sistemas de armazenamento distribuído e segurança da</p><p>informação”. Essa complexidade ressalta a importância de uma compreensão apro-</p><p>fundada dos princípios subjacentes aos sistemas distribuídos para profissionais de</p><p>tecnologia da informação e cientistas da computação, a fim de projetar e implementar</p><p>sistemas eficazes.</p><p>Um sistema distribuído é uma infraestrutura computacional composta por múlti-</p><p>plos nós de processamento interconectados, onde cada nó possui sua própria capaci-</p><p>dade de processamento e memória. Esses sistemas são projetados para trabalhar de</p><p>maneira colaborativa e coordenada, permitindo a execução de tarefas e processamento</p><p>de dados de forma distribuída e concorrente. Eles geralmente operam em ambientes de</p><p>rede, compartilhando recursos e informações entre os nós de forma transparente para o</p><p>usuário. Essa abordagem distribuída oferece benefícios como escalabilidade, tolerância</p><p>a falhas e desempenho aprimorado, mas também desafios, incluindo questões de</p><p>consistência, coordenação e comunicação entre os componentes distribuídos. Portanto,</p><p>8</p><p>os sistemas distribuídos desempenham um papel crítico em uma ampla gama de apli-</p><p>cações, como abordado anteriormente, contribuindo para a eficiência e confiabilidade</p><p>em ambientes computacionais complexos.</p><p>2.1 Heterogeneidade</p><p>A heterogeneidade em sistemas distribuídos é um conceito fundamental que en-</p><p>volve ”a coexistência de diferentes tipos de hardware, sistemas operacionais, linguagens</p><p>de programação e tecnologias de rede dentro da infraestrutura global”[COULOURIS</p><p>et al., 2011]. Essa diversidade pode surgir devido a ”requisitos específicos de aplicati-</p><p>vos, legados tecnológicos ou escolhas de design deliberadas”[TANENBAUM; STEEN,</p><p>2007]. Essa heterogeneidade pode resultar em complexidades adicionais, exigindo</p><p>mecanismos de tradução e adaptação para garantir a interoperabilidade eficaz entre</p><p>componentes heterogêneos. No entanto a heterogeneidade também oferece oportu-</p><p>nidades para otimização e aproveitamento das capacidades individuais de cada nó</p><p>do sistema, melhorando o desempenho e a eficiência geral. Assim, a compreensão e</p><p>o gerenciamento cuidadoso da heterogeneidade desempenham um papel crucial no</p><p>projeto e operação bem-sucedidos de sistemas distribuídos, assegurando sua eficácia</p><p>em ambientes diversos e dinâmicos. As principais característica da heterogeneidade</p><p>em sistemas distribuídos incluem:</p><p>Diferentes Tipos de Hardware: Os sistemas distribuídos frequentemente envol-</p><p>vem a coexistência de diferentes tipos de hardware, incluindo servidores com diferentes</p><p>capacidades de processamento, memória e armazenamento.</p><p>Sistemas Operacionais Diversificados: A heterogeneidade também se mani-</p><p>festa por meio da presença de sistemas operacionais diferentes, com suas próprias</p><p>interfaces e comportamentos.</p><p>Linguagens de Programação Variadas: Os sistemas distribuídos podem ser</p><p>desenvolvidos em linguagens de programação distintas, o que pode complicar a intero-</p><p>perabilidade entre componentes.</p><p>Tecnologias de Rede Heterogêneas: A diversidade de tecnologias de rede,</p><p>como Ethernet, Wi-Fi, 3G, 4G e 5G, é comum em ambientes distribuídos, apresentando</p><p>desafios de comunicação e integração.</p><p>9</p><p>Diferentes Paradigmas de Comunicação: A heterogeneidade se estende aos</p><p>protocolos e paradigmas de comunicação, como comunicação síncrona e assíncrona,</p><p>que precisam ser gerenciados para garantir a consistência e a eficiência.</p><p>Segurança e Políticas Variadas: A heterogeneidade pode resultar em políticas</p><p>de segurança e autenticação diversas, que precisam ser harmonizadas para garantir a</p><p>proteção dos dados e sistemas distribuídos.</p><p>Gerenciamento de Recursos Diferenciados: Recursos heterogêneos, como</p><p>CPUs de diferentes velocidades e capacidades de armazenamento, requerem gerenci-</p><p>amento eficiente para otimizar o desempenho.</p><p>Complexidade Adicional de Design: Projetar sistemas distribuídos heterogê-</p><p>neos exige considerações específicas para acomodar essa diversidade, aumentando a</p><p>complexidade do design.</p><p>Desafios de Interoperabilidade: Garantir que todos os componentes heterogê-</p><p>neos possam interagir e cooperar eficazmente é um desafio crucial.</p><p>Oportunidades de Desempenho e Escalabilidade: A heterogeneidade também</p><p>oferece oportunidades para otimizar a alocação de recursos e melhorar o desempenho,</p><p>explorando as capacidades individuais de cada nó do sistema.</p><p>2.2 Abertura</p><p>A abertura, em contextos de sistemas distribuídos, representa uma característica</p><p>crítica que permite a extensibilidade e a flexibilidade desses sistemas. Ela se refere à</p><p>capacidade de um sistema distribuído de receber novos serviços, funcionalidades ou</p><p>componentes sem a necessidade de modificar profundamente sua estrutura central.</p><p>Essa propriedade possibilita a adaptação contínua do sistema às mudanças tecnológi-</p><p>cas e às crescentes demandas dos usuários. Através da abertura, novos protocolos,</p><p>serviços e módulos podem ser integrados de maneira modular e eficiente, garantindo</p><p>que o sistema permaneça receptivo à inovação e à evolução sem perturbar sua opera-</p><p>ção existente. Essa flexibilidade é essencial em ambientes dinâmicos e em constante</p><p>mudança, onde a agilidade e a escalabilidade são fatores-chave para o sucesso de</p><p>sistemas distribuídos complexos.</p><p>10</p><p>Existem várias maneiras pelas quais a abertura pode ser alcançada em sistemas</p><p>distribuídos:</p><p>Arquitetura de Camadas: A organização em camadas permite que diferentes</p><p>funcionalidades sejam adicionadas em camadas separadas, facilitando a adição de</p><p>novas camadas sem afetar as existentes.</p><p>Interfaces Bem Definidas: O uso de interfaces bem definidas e padrões abertos</p><p>permite que novos módulos ou serviços sejam adicionados desde que eles atendam às</p><p>especificações da interface.</p><p>Protocolos Extensíveis: Protocolos de comunicação extensíveis permitem</p><p>a adição de novos comandos ou funcionalidades sem alterar fundamentalmente a</p><p>estrutura do protocolo.</p><p>Mecanismos de Plug-in: A criação de sistemas com mecanismos de plug-in</p><p>permite que novos componentes sejam incorporados facilmente, sem a necessidade</p><p>de recompilar ou modificar o código principal.</p><p>Documentação Clara e Padrões Abertos: A documentação clara das interfaces</p><p>e o uso de padrões abertos permitem que desenvolvedores externos compreendam e</p><p>integrem serviços ou componentes adicionais ao sistema.</p><p>2.3 Tratamento de falhas</p><p>O tratamento e a tolerância a falhas em sistemas distribuídos são aspectos</p><p>críticos para garantir que esses sistemas continuem operando de maneira confiável,</p><p>mesmo diante de problemas e falhas em componentes individuais. Isso é especialmente</p><p>importante em ambientes em que a disponibilidade, a escalabilidade e a confiabilidade</p><p>são fundamentais, como em data centers, sistemas de nuvem e redes de grande</p><p>escala[CURVELLO, 2008].</p><p>2.3.1 Redundância</p><p>A redundância é uma das estratégias fundamentais para melhorar a tolerância a</p><p>falhas. Ela envolve a duplicação de componentes ou sistemas críticos, de modo que,</p><p>se um deles falhar, um backup estará disponível para assumir a carga de trabalho.</p><p>11</p><p>Existem várias formas de redundância, incluindo redundância ativa (todos os sistemas</p><p>estão operacionais e respondendo) e redundância passiva (os sistemas de backup</p><p>entram em ação apenas quando ocorre uma falha).</p><p>2.3.2 Detecção de Falhas</p><p>É crucial detectar falhas o mais cedo possível para minimizar o impacto. Isso</p><p>pode ser feito por meio de monitoramento constante dos componentes do sistema. Se</p><p>um componente falhar ou mostrar sinais de comportamento anormal, um sistema de</p><p>detecção de falhas pode notificar a equipe responsável ou acionar automaticamente</p><p>ações de recuperação.</p><p>2.3.3 Isolamento de Falhas</p><p>Em sistemas distribuídos, uma falha em um componente não deve afetar todo o</p><p>sistema. Mecanismos de isolamento, como a segmentação de processos, máquinas</p><p>virtuais ou contêineres, podem garantir que as falhas não se propaguem para outras</p><p>partes do sistema.</p><p>2.3.4 Recuperação Futomática</p><p>Sistemas distribuídos geralmente implementam estratégias de recuperação</p><p>automática, em que o sistema detecta uma falha e automaticamente inicia um processo</p><p>de recuperação. Isso pode envolver a substituição de um componente defeituoso por</p><p>um backup ou a realocação de tarefas para outros nós saudáveis.</p><p>2.3.5 Consistência e Replicação de Dados</p><p>Garantir a consistência dos dados é um desafio importante em sistemas distri-</p><p>buídos. A replicação de dados é usada para manter cópias consistentes dos dados em</p><p>vários locais. Existem abordagens como consistência eventual (eventual consistency)</p><p>e consistência forte, que determinam quando os dados replicados serão atualizados</p><p>após uma operação.</p><p>12</p><p>2.3.6 Protocolos de Consenso</p><p>Em sistemas distribuídos, é necessário que os nós concordem sobre certos</p><p>estados ou decisões. Protocolos de consenso, como o algoritmo Paxos e o Raft, ajudam</p><p>os nós a chegarem a um acordo mesmo em cenários com falhas.</p><p>2.3.7 Balanceamento de Carga</p><p>Distribuir a carga de trabalho de maneira uniforme entre os nós é uma abordagem</p><p>para evitar sobrecargas em um nó específico, o que pode levar a falhas. Mecanismos de</p><p>balanceamento de carga distribuem as solicitações de maneira eficiente para garantir o</p><p>uso equilibrado dos recursos.</p><p>2.3.8 Monitoramento e Resposta a Eventos</p><p>Sistemas de monitoramento contínuo ajudam a identificar falhas e anomalias</p><p>em tempo real. Eles podem ser integrados a sistemas de alerta que notificam a equipe</p><p>de operações ou acionam automaticamente ações de recuperação.</p><p>2.3.9 Testes de Falha e Simulações</p><p>Realizar testes de falha em um ambiente controlado permite entender como o</p><p>sistema se comporta durante situações de falha. Simulações de falhas podem ajudar a</p><p>ajustar as estratégias de tolerância a falhas e melhorar a robustez do sistema.</p><p>2.3.10 Arquiteturas de Sistema Adequadas</p><p>A arquitetura do sistema distribuído também desempenha um papel importante</p><p>na tolerância a falhas. A utilização de microsserviços, por exemplo, pode isolar falhas e</p><p>permitir atualizações individuais sem impactar todo o sistema.</p><p>2.4 Segurança</p><p>A segurança em sistemas distribuídos requer uma abordagem abrangente e</p><p>multifacetada. É necessário considerar uma combinação de práticas de autenticação,</p><p>criptografia, controle de acesso, monitoramento constante e planejamento de respostas</p><p>13</p><p>a incidentes para garantir a proteção dos sistemas e dos dados em um ambiente</p><p>distribuído complexo[MARTINS, 2023].</p><p>2.5 Autenticação e Autorização</p><p>A autenticação envolve verificar a identidade de usuários, sistemas ou compo-</p><p>nentes antes de conceder acesso. A autorização determina quais ações ou recursos são</p><p>permitidos após a autenticação. Em sistemas distribuídos, é importante implementar</p><p>mecanismos robustos para garantir que apenas entidades autorizadas tenham acesso</p><p>aos recursos apropriados.</p><p>2.5.1 Criptografia</p><p>A criptografia é usada para proteger a confidencialidade dos dados durante a</p><p>transmissão e armazenamento. Ela garante que mesmo se um invasor interceptar os</p><p>dados, eles permanecerão ilegíveis. Protocolos de criptografia, como TLS (Transport</p><p>Layer Security), são usados para proteger as comunicações em redes distribuídas.</p><p>2.5.2 Controle de Acesso</p><p>O controle de acesso define as políticas que determinam quem tem permissão</p><p>para acessar quais recursos. É crucial para garantir que apenas usuários autorizados</p><p>possam interagir com os sistemas e os dados.</p><p>2.6 Escalabilidade</p><p>Escalabilidade é a capacidade de aumentar o desempenho e a capacidade</p><p>de um sistema à medida que a demanda por recursos aumenta. Em outras palavras,</p><p>trata-se de permitir que um sistema distribuído cresça e se adapte de maneira eficiente</p><p>para lidar com cargas de trabalho crescentes. A escalabilidade é essencial para ga-</p><p>rantir que os sistemas distribuídos possam lidar com um grande número de usuários,</p><p>processar grandes volumes</p><p>de dados e atender às demandas do ambiente em que</p><p>operam[MARTINS, 2023].</p><p>14</p><p>2.6.1 Escalabilidade Vertical (Scale-Up)</p><p>A escalabilidade vertical envolve aumentar os recursos de hardware, como</p><p>adicionar mais processadores, memória ou capacidade de armazenamento, a um único</p><p>nó ou servidor. Isso resulta em melhorias no desempenho do nó existente. No entanto,</p><p>há limites físicos para o quão verticalmente um sistema pode ser escalado, e essa</p><p>abordagem pode ser mais cara e menos flexível a longo prazo.</p><p>2.6.2 Escalabilidade Horizontal (Scale-Out)</p><p>A escalabilidade horizontal envolve adicionar mais nós ou servidores ao sistema</p><p>distribuído para lidar com uma carga de trabalho crescente. Isso é frequentemente</p><p>feito usando abordagens como a adição de servidores web, nós de banco de dados</p><p>ou nós de processamento. A escalabilidade horizontal é mais flexível e pode lidar com</p><p>demandas em crescimento de maneira mais eficaz, mas pode envolver desafios de</p><p>coordenação e gerenciamento entre os nós.</p><p>2.7 Concorrência</p><p>A concorrência é uma situação em que várias operações ou processos estão</p><p>ocorrendo simultaneamente em diferentes partes do sistema distribuído. Essa concor-</p><p>rência pode ocorrer em diferentes níveis, desde a concorrência entre threads individuais</p><p>dentro de um único nó até a concorrência entre nós ou componentes separados em</p><p>todo o sistema. Lidar com a concorrência de maneira eficaz é crucial para garantir que</p><p>o sistema distribuído funcione corretamente e com bom desempenho. No entanto, a</p><p>concorrência também introduz desafios significativos de coordenação e consistência.</p><p>Abaixo citaremos alguns exemplos[GONCALVES, 2011].</p><p>2.7.1 Condição de Corrida (Race Condition)</p><p>Uma condição de corrida ocorre quando dois ou mais processos ou threads</p><p>tentam acessar recursos compartilhados ao mesmo tempo, levando a resultados não</p><p>determinísticos e possíveis falhas. Essa situação é particularmente problemática em</p><p>sistemas distribuídos devido à natureza assíncrona das operações.</p><p>15</p><p>2.7.2 Bloqueio e Sincronização</p><p>Mecanismos de bloqueio e sincronização, como semáforos, mutexes e locks</p><p>distribuídos, são usados para coordenar o acesso concorrente a recursos comparti-</p><p>lhados. No entanto, a sincronização excessiva pode levar a gargalos de desempenho,</p><p>especialmente em sistemas distribuídos devido à latência da rede.</p><p>2.7.3 Concorrência em Acesso a Dados</p><p>Em sistemas distribuídos, o acesso a dados compartilhados pode ser complexo</p><p>devido à possibilidade de latência de rede e à necessidade de manter a consistência dos</p><p>dados em vários nós. Abordagens como locking distribuído, transações distribuídas e</p><p>técnicas de replicação de dados são usadas para lidar com a concorrência em sistemas</p><p>distribuídos.</p><p>2.7.4 Outros</p><p>Além das abordagens mencionadas anteriormente, existem outros aspectos</p><p>cruciais a considerar:</p><p>Ordenação de Eventos: Garantir que os eventos ocorram em uma sequência</p><p>lógica, mantendo a integridade das ações realizadas.</p><p>Consistência de Dados: Manter a integridade dos dados, evitando informações</p><p>contraditórias ou conflitantes.</p><p>Atomicidade de Operações: Assegurar que as operações sejam tratadas como</p><p>unidades indivisíveis, evitando estados intermediários e preservando a integridade.</p><p>Gerenciamento de Transações: Coordenar e controlar transações, garantindo</p><p>que sejam realizadas com sucesso ou revertidas em caso de falha.</p><p>Coordenação e Orquestração: Sincronizar as atividades de diferentes compo-</p><p>nentes ou sistemas para garantir um fluxo de trabalho harmonioso.</p><p>Modelos de Concorrência: Definir como múltiplas operações são realizadas</p><p>simultaneamente, mantendo a consistência e evitando conflitos.</p><p>Detecção e Resolução de Conflitos: Identificar situações em que ocorram</p><p>conflitos de dados ou operações e implementar mecanismos para resolvê-los.</p><p>16</p><p>Esses aspectos são igualmente essenciais para garantir o funcionamento efi-</p><p>ciente e confiável das operações, especialmente em um ambiente complexo como o</p><p>descrito.</p><p>2.8 Transparência</p><p>Transparência em Sistemas Distribuídos refere-se ao conceito de esconder a</p><p>complexidade do sistema distribuído dos usuários e aplicativos, proporcionando a ilusão</p><p>de um sistema centralizado[MARTINS, 2023].</p><p>2.8.1 Transparência de Acesso</p><p>Permite que os usuários acessem recursos distribuídos sem estar cientes da</p><p>localização física desses recursos.</p><p>2.8.2 Transparência de Localização</p><p>Oculta onde os recursos estão localizados, permitindo que os usuários acessem</p><p>recursos sem precisar saber onde estão fisicamente.</p><p>2.8.3 Transparência de Migração</p><p>Permite que processos e dados sejam movidos entre diferentes locais físicos</p><p>sem que os usuários percebam.</p><p>2.8.4 Transparência de Replicação</p><p>Oferece múltiplas cópias de recursos distribuídos, mascarando a complexidade</p><p>da replicação para os usuários.</p><p>2.8.5 Transparência de Concorrência</p><p>Gerencia concorrência e acesso simultâneo a recursos, garantindo que os usuá-</p><p>rios não percebam problemas de sincronização.</p><p>17</p><p>2.8.6 Transparência de Falhas</p><p>Mascara a ocorrência de falhas, permitindo que os usuários não sejam direta-</p><p>mente afetados por interrupções ou erros.</p><p>2.8.7 Transparência de Persistência</p><p>Garante que os dados persistam, independentemente das mudanças de locali-</p><p>zação ou falhas.</p><p>2.8.8 Transparência de Migração de Dados</p><p>Permite mover dados entre diferentes esquemas de armazenamento sem que</p><p>os usuários saibam ou se preocupem com isso.</p><p>2.8.9 Transparência de Escala</p><p>Permite que o sistema dimensione para lidar com aumento de carga sem afetar</p><p>negativamente a experiência do usuário.</p><p>2.8.10 Transparência de Interconexão</p><p>Mascara a complexidade das redes de comunicação subjacentes, permitindo</p><p>que os usuários interajam sem se preocupar com a comunicação de baixo nível.</p><p>18</p><p>3 MATERIAIS E MÉTODOS</p><p>O problema central abordado neste contexto é a poluição causada pelo processo</p><p>de coleta de lixo tradicional. Dado este problema, nasce então a necessidade de criação</p><p>de um aplicativo inovador que justifica a necessidade de otimizar esse processo e</p><p>contribuir para a preservação ambiental.</p><p>O aplicativo utiliza sistemas distribuídos para melhorar a eficiência da coleta,</p><p>reduzindo o tempo necessário e minimizando o impacto ambiental. Além disso, oferece</p><p>transparência, permitindo que os usuários agendem coletas de acordo com sua conveni-</p><p>ência, tenham acesso a informações detalhadas sobre as rotas e possam acompanhar</p><p>as coletas em tempo real. Essa abordagem inovadora visa não apenas modernizar</p><p>a coleta de lixo, mas também promover uma gestão de resíduos mais responsável e</p><p>consciente, beneficiando tanto o meio ambiente quanto as comunidades. Nesta sessão</p><p>apresentamos toda a construção e funcionamento do aplicativo em questão.</p><p>3.1 Diagrama de arquitetura de software</p><p>A arquitetura é composta pelos seguintes componentes, representada na figura</p><p>1.</p><p>Usuário: Responsável por interagir com o sistema, geralmente por meio de</p><p>interfaces de usuário.</p><p>Central: O centro de controle que coordena e gerencia as operações do sistema</p><p>distribuído.</p><p>Servidor de banco de dados SQL: Onde os dados são armazenados e aces-</p><p>sados por aplicativos e componentes do sistema.</p><p>Caminhão de Coleta de Lixo: Um elemento que faz parte do sistema, respon-</p><p>sável por coletar lixo ou resíduos.</p><p>19</p><p>Figura 1 – Diagrama de Arquitetura de Software</p><p>3.2 Design e Telas</p><p>Fonte: Autoria própria, 2023.</p><p>Esta sessão do trabalho tem como objetivo explorar cada uma da telas do</p><p>aplicativo desenvolvido e seus funcionamentos.</p><p>3.2.1 Tela 1 - Carregamento</p><p>A figura 2 representa a tela de carregamento inicial do aplicativo.</p><p>20</p><p>Figura 2 – Tela de carregamento</p><p>3.2.2 Tela 2 - Login</p><p>Fonte: Autoria própria, 2023.</p><p>A figura 3 está representando a tela de Login do aplicativo. Dependendo das</p><p>credenciais</p><p>utilizadas, o aplicativo será redirecionado para um de dois ambientes: o</p><p>ambiente do usuário ou o ambiente da equipe de coleta. Nela também é possível a</p><p>criação de uma nova conta.</p><p>21</p><p>Figura 3 – Tela de login</p><p>3.2.3 Tela 3 - Home</p><p>Fonte: Autoria própria, 2023.</p><p>A figura 4 representa a tela inicial ”home”, onde os usuários encontram a opção</p><p>de iniciar o processo de coleta de lixo. Nessa etapa, eles precisam realizar duas ações</p><p>principais:</p><p>Identificação da Residência: Os usuários são solicitados a fornecer informa-</p><p>ções sobre a localização da residência, o que pode incluir o endereço, número da casa</p><p>ou outras informações relevantes para a coleta.</p><p>Escolha do Tipo de Coleta: Após identificar a residência, os usuários são</p><p>direcionados a escolher entre dois tipos de coleta, coleta reciclável ou coleta orgânica.</p><p>22</p><p>Figura 4 – Tela principal</p><p>3.2.4 Tela 4 - Explorar</p><p>Fonte: Autoria própria, 2023.</p><p>A figura 5 representa a tela ”Explorar”, aonde os usuários têm acesso a três</p><p>funcionalidades úteis:</p><p>Gráfico de Coleta: Esta função permite aos usuários visualizar um gráfico</p><p>interativo que exibe a quantidade de material coletado ao longo do tempo.</p><p>Call Center: Com esta opção, os usuários podem entrar em contato diretamente</p><p>com o Call Center da empresa de coleta de lixo. Eles podem tirar dúvidas, fazer</p><p>reclamações ou obter assistência relacionada aos serviços de coleta.</p><p>Rotas Programadas: Nesta seção, os usuários podem agendar uma rota de</p><p>coleta para um determinado dia e horário. Isso ajuda a garantir que seus resíduos</p><p>23</p><p>sejam coletados de forma conveniente.</p><p>Figura 5 – Tela de exploração</p><p>Fonte: Autoria própria, 2023.</p><p>24</p><p>3.2.5 Tela 5 - Histórico</p><p>Na figura 6 temos a tela ”Histórico de Agendamento”, aonde os usuários têm a</p><p>capacidade de revisar e acessar informações detalhadas sobre todas as rotas de coleta</p><p>de lixo que foram realizadas dentro de um período específico. Esta função oferece uma</p><p>visão completa do histórico das coletas programadas e fornece detalhes essenciais</p><p>Figura 6 – Tela de Histórico</p><p>Fonte: Autoria própria, 2023.</p><p>25</p><p>3.2.6 Tela 6 - Perfil do Usuário</p><p>A seguir, temos a figura 7 que representa a tela de ”perfil”, aonde os detalhes</p><p>do cadastro pessoal são centralizados e organizados para fornecer uma experiência</p><p>de gerenciamento de conta eficiente. Esta tela inclui informações essenciais sobre o</p><p>usuário, como o nome, endereços cadastrados e e-mail para contato.</p><p>Figura 7 – Tela de perfil usuário</p><p>Fonte: Autoria própria, 2023.</p><p>26</p><p>3.2.7 Tela 7 - Rotas Diárias</p><p>Na figura 8 temos a primeira tela que o funcionário da equipe de coleta terá</p><p>acesso após logar com suas credenciais no aplicativo. Nesta tela, ele tem a visualização</p><p>do peso do lixo diário total que deve ser coletado. Além disso, ele tem um sumário de</p><p>todas as rotas que ele fará no expediente.</p><p>Figura 8 – Tela de rotas diárias</p><p>Fonte: Autoria própria, 2023.</p><p>27</p><p>3.2.8 Tela 8 - Detalhamento da Rota</p><p>Na figura 9 temos a tela que será exibida após o funcionário selecionar alguma</p><p>das rotas. Nesta tela o funcionário terá informações específicas da rota que deve ser</p><p>percorrida, como a distância a ser percorrida, o número de casas pelas quais a equipe</p><p>de coleta deve passar, a quantidade total do lixo separado por lixo orgânico e reciclável</p><p>e o tempo total para a rota ser concluída.</p><p>Figura 9 – Tela de detalhamento da rota</p><p>Fonte: Autoria própria, 2023.</p><p>28</p><p>3.2.9 Tela 9 - Perfil do Coletor</p><p>Por fim, na figura 10, temos a tela de perfil aonde o funcionário terá acesso a</p><p>algumas informações: qualquer tipo de notificação (vinda dos usuários ou da central),</p><p>poderá entrar em contato com a central através da aba de ajuda, poderá visualizar todo</p><p>o histórico de coletas realizado por ele, terá acesso a informações do veículo de coleta</p><p>e poderá acessar configurações do aplicativo.</p><p>Figura 10 – Tela de perfil do coletor</p><p>Fonte: Autoria própria, 2023.</p><p>29</p><p>4 DESENVOLVIMENTO DO ESTUDO</p><p>4.1 Vantagens</p><p>Eficiência na Coleta de Lixo: O programa utiliza sistemas distribuídos para</p><p>otimizar as rotas de coleta de lixo em tempo real, o que resulta em uma coleta mais</p><p>eficiente e rápida.</p><p>Preservação Ambiental: Ao reduzir o tempo de coleta e minimizar o impacto</p><p>ambiental, o programa contribui significativamente para a preservação do meio ambi-</p><p>ente.</p><p>Monitoramento em Tempo Real: A interface de usuário oferece às equipes</p><p>de coleta a capacidade de monitorar as coletas em tempo real, identificando áreas de</p><p>concentração de resíduos e tomando decisões fundamentadas.</p><p>Facilidade de Uso: O sistema foi desenvolvido com base nas diretrizes de</p><p>interação humano-computador, tornando-o fácil de usar tanto para os usuários finais</p><p>quanto para as equipes de coleta.</p><p>Agendamento de Coletas: Os usuários podem agendar rotas de coleta de lixo</p><p>de acordo com sua conveniência, proporcionando maior flexibilidade no processo de</p><p>coleta.</p><p>Histórico de Coletas: O programa permite que os usuários acessem um histórico</p><p>detalhado de todas as coletas realizadas, fornecendo informações úteis sobre o histórico</p><p>das coletas programadas.</p><p>Gerenciamento de Conta: A tela de perfil do usuário oferece uma experiência</p><p>eficiente de gerenciamento de conta, onde os usuários podem atualizar suas informa-</p><p>ções pessoais e de contato.</p><p>Informações Detalhadas para Equipes de Coleta: As telas destinadas às</p><p>equipes de coleta fornecem informações detalhadas sobre as rotas, incluindo distância,</p><p>número de casas a serem atendidas e a quantidade de lixo a ser coletada, permitindo</p><p>um planejamento mais preciso.</p><p>30</p><p>4.2 Desvantagens</p><p>Requisitos de Tecnologia: Os usuários precisam de dispositivos compatíveis</p><p>com o programa, como smartphones ou computadores, o que pode limitar o acesso em</p><p>áreas com recursos limitados.</p><p>Treinamento Necessário As equipes de coleta podem exigir treinamento adici-</p><p>onal para usar efetivamente o sistema, especialmente se não estiverem familiarizadas</p><p>com tecnologia.</p><p>Dependência da Conectividade: A operação do programa depende de uma</p><p>conexão de internet estável, o que pode ser um desafio em áreas com conectividade</p><p>limitada.</p><p>Custos de Desenvolvimento e Manutenção: O desenvolvimento, implemen-</p><p>tação e manutenção contínua do programa podem ser custosos, exigindo recursos</p><p>financeiros significativos.</p><p>Possíveis Problemas Técnicos: Como qualquer sistema de software, o pro-</p><p>grama pode enfrentar problemas técnicos, como falhas de servidor ou bugs, que podem</p><p>interromper o processo de coleta.</p><p>Resistência à Adoção: Pode haver resistência por parte das equipes de co-</p><p>leta ou dos usuários em adotar essa nova tecnologia, especialmente se estiverem</p><p>acostumados com métodos tradicionais de coleta de lixo.</p><p>Atualizações Necessárias: O programa pode exigir atualizações regulares para</p><p>acompanhar as mudanças nas necessidades dos usuários e a evolução da tecnologia.</p><p>4.3 Comparações com meios tradicionais</p><p>Em comparação com os meios tradicionais de coleta de lixo, o programa desen-</p><p>volvido apresenta uma série de vantagens notáveis. Enquanto os métodos tradicionais</p><p>geralmente dependem de cronogramas fixos de coleta que podem não se adaptar às</p><p>necessidades variáveis dos usuários, o programa oferece flexibilidade por meio do</p><p>agendamento de coletas, tornando o processo mais conveniente para os cidadãos.</p><p>Além disso, a capacidade de monitorar as coletas em tempo real e otimizar rotas com</p><p>base em dados em tempo real permite uma abordagem mais eficiente e ecológica, redu-</p><p>31</p><p>zindo o impacto ambiental e melhorando a gestão dos recursos da empresa de coleta</p><p>de lixo. Enquanto os métodos tradicionais muitas vezes envolvem processos manuais</p><p>propensos a erros, o programa proporciona maior precisão e eficiência, tornando-o</p><p>uma solução valiosa para atender às crescentes demandas</p><p>por serviços de coleta de</p><p>lixo mais inteligentes e sustentáveis.</p><p>Adicionalmente, o programa também aborda questões relacionadas à trans-</p><p>parência e responsabilidade. Ao oferecer aos usuários a capacidade de acessar um</p><p>histórico detalhado de suas coletas programadas e visualizar dados estatísticos, ele</p><p>promove uma relação mais transparente entre os provedores de serviços de coleta de</p><p>lixo e a comunidade. Isso pode resultar em um maior senso de responsabilidade por</p><p>parte das partes envolvidas, incentivando a adoção de práticas de descarte respon-</p><p>sável. Em contraste, os meios tradicionais muitas vezes carecem dessa visibilidade e</p><p>feedback, o que pode levar a problemas de comunicação e insatisfação dos cidadãos.</p><p>Portanto, o programa não apenas moderniza o processo de coleta de lixo, mas também</p><p>promove uma abordagem mais participativa e consciente em relação ao manejo de</p><p>resíduos, beneficiando tanto o meio ambiente quanto a comunidade em geral.</p><p>32</p><p>5 CONSIDERAÇÕES FINAIS</p><p>Este trabalho buscou abordar a integração dos princípios fundamentais de</p><p>Sistemas Distribuídos em um programa inovador voltado para a otimização da coleta</p><p>de lixo, com o objetivo principal de contribuir para a preservação do meio ambiente e</p><p>atender às crescentes demandas por soluções tecnológicas sustentáveis. As vantagens</p><p>oferecidas pelo programa são notáveis em comparação com os meios tradicionais de</p><p>coleta de lixo.</p><p>Em primeiro lugar, o programa se destaca pela eficiência operacional que traz</p><p>para o processo de coleta de lixo. Ao utilizar sistemas distribuídos, ele permite o</p><p>monitoramento em tempo real das coletas, identificação de áreas de concentração de</p><p>resíduos e otimização das rotas de coleta. Isso resulta em uma coleta mais rápida e</p><p>eficaz, reduzindo o impacto ambiental e melhorando a gestão de recursos da empresa</p><p>de coleta de lixo.</p><p>Além disso, a flexibilidade proporcionada pelo agendamento de coletas atende</p><p>às necessidades variáveis dos usuários, tornando o processo mais conveniente e adap-</p><p>tável. Os dados oferecidos aos usuários promovem transparência e responsabilidade,</p><p>incentivando práticas de descarte responsável e uma relação mais transparente entre</p><p>a comunidade e os prestadores de serviços.</p><p>No entanto, é importante reconhecer que a implementação e manutenção de</p><p>um programa como este envolvem desafios, como requisitos de tecnologia, treina-</p><p>mento necessário e preocupações com a segurança de dados. Portanto, o sucesso</p><p>dessa iniciativa requer investimentos financeiros e esforços contínuos para garantir seu</p><p>funcionamento eficiente e seguro.</p><p>Em resumo, ao combinar os fundamentos de Sistemas Distribuídos com a apli-</p><p>cação prática na gestão ambiental, este trabalho não apenas enriquece o conhecimento</p><p>acadêmico, mas também oferece uma solução concreta para um problema atual e</p><p>premente. O programa representa um passo significativo em direção a uma coleta de</p><p>lixo mais inteligente, sustentável e orientada pela tecnologia, que não só beneficia o</p><p>meio ambiente, mas também melhora a qualidade de vida das comunidades e promove</p><p>33</p><p>uma gestão responsável dos resíduos. No cenário atual, em que a sustentabilidade é</p><p>essencial, iniciativas como essa desempenham um papel crucial na construção de um</p><p>futuro mais verde e consciente.</p><p>34</p><p>−</p><p>REFERÊNCIAS</p><p>ANDREWS, G. R. Foundations of Multithreaded, Parallel, and Distributed Programming.</p><p>[S.l.]: Addison-Wesley Professional, 2000. Citado na página 7.</p><p>BUYYA, R.; BROBERG, J.; GOSCINSKI, A. M. Princípios e Paradigmas de Computação</p><p>em Nuvem e Sistemas Distribuídos. [S.l.]: Bookman, 2013. Citado na página 6.</p><p>COULOURIS, G. F. et al. Sistemas Distribuídos: Conceitos e Projeto. [S.l.]: Bookman,</p><p>2011. Citado 2 vezes nas páginas 6 e 8.</p><p>CURVELLO, M. A. Tolerância a Falhas em Sistemas Distribuídos. Rio de Janeiro:</p><p>https://www-di.inf.puc-rio.br/ endler/courses/DA/Monografias/08/MarcoAntonio</p><p>slides.pdf, 2008. Citadonapgina10.</p><p>GONCALVES, M. Concorrência e Tolerância a Falhas em Sistemas Distribuídos.</p><p>[S.l.]: https://medium.com/@marcelomg21/concorr2011. Citado na página 14.</p><p>MARTINS, F. Sistema distribuído: introdução aos desafios da cyber security. [S.l.]:</p><p>https://itshow.com.br/sistema-distribuido-introducao-aos-desafios-da-cyber-security/,</p><p>2023. Citado 2 vezes nas páginas 13 e 16.</p><p>NIELSEN, J. Usability Engineering. [S.l.]: Academic Press, 1993. Citado na página 6.</p><p>TANENBAUM, A. S. Sistemas Operacionais Distribuídos. [S.l.]: Pearson Education,</p><p>2002. Citado na página 7.</p><p>TANENBAUM, A. S.; STEEN, M. V. Distributed Systems: Principles and Paradigms.</p><p>2nd. ed. [S.l.]: Pearson, 2007. Citado na página 8.</p><p>TANENBAUM, A. S.; STEEN, M. V. Sistemas Distribuídos: Princípios e Paradigmas.</p><p>[S.l.]: Pearson, 2017. Citado na página 6.</p><p>https://medium.com/%40marcelomg21/concorr2011</p>

Mais conteúdos dessa disciplina