Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.
left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

Prévia do material em texto

UNIP – UNIVERSIDADE PAULISTA 
Curso de Ciência da Computação 
 
 
 
 
 
 
 
 
ATIVIDADES PRÁTICAS SUPERVISIONADAS - APS 
APLICAÇÃO DOS CONCEITOS DE SISTEMA DISTRIBUÍDOS NA CONSTRUÇÃO DE UM PROGRAMA DE COLETA SELETIVA INTELIGENTE.
 
 
João Marcelo Trigo Santos - N7223C-8
Daniel Augusto Pinto Pereira Junior - N702JA-8
Gabriel Bateli de Siqueira Neves – G2413G-7
Jaqueline Jaques dos Santos - G28989-7
Yan Benjamin Pereira - N66128-3
 
 
 
 
São José dos Campos, 22 de setembro de 2024. 
 
UNIP – UNIVERSIDADE PAULISTA 
Curso de Ciência da Computação 
 
 
 
 
 
 
 
 
ATIVIDADES PRÁTICAS SUPERVISIONADAS - APS
APLICAÇÃO DOS CONCEITOS DE SISTEMA DISTRIBUÍDOS NA CONSTRUÇÃO DE UM PROGRAMA DE COLETA SELETIVE INTELIGENTE
 
 
Atividades Práticas Supervisionadas do 6º e 7º Semestres do Curso de Ciência da Computação da Universidade Paulista – UNIP. 
 
Coordenador: Prof. Fernando A. Gotti 
Prof Responsável: 	Fernando Mauro
São José dos Campos, 22 de setembro de 2024. 
RESUMO
O objetivo do projeto é explicar os conceitos principais dos Sistemas Distribuídos e realizar uma proposta de um aplicativo de coleta seletiva inteligente focado para empresas com a intenção de facilitar na coleta de lixo para instituições deste setor, disponibilizando assim um acesso mais prático para o planejamento de coleta, rotas, turnos, e dos funcionários da instituição, e também tem um grande foco nas questões do meio ambiente, o sistema contém uma interface interativa disponível para os computadores, tendo um acesso a um mapa para ser feito um trajeto da coleta.
Palavras-Chaves: Sistemas Distribuídos; Coleta Seletiva Inteligente; Meio Ambiente; Empresa, Interface Interativa.
 SUMÁRIO
1 - INTRODUÇÃO	5
2 – SISTEMAS DISTRIBUÍDOS	7
2.1 – Heterogeneidade	7
2.2 – Abertura	8
2.3 – Tratamento de Falhas	8
2.4 – Segurança	9
2.5 – Autenticação e Autorização	10
2.6 – Escalabilidade	10
2.7 – Concorrência	12
2.8 – Transparência	13
3. MATÉRIAS E MÉTODOS	15
5 – CONSIDERAÇÕES FINAIS	15
1 - INTRODUÇÃO
Os sistemas de computação vêm passando por uma grande revolução desde 1945, quando se inicia a chamada era moderna dos computadores. Até 1985, os computadores eram grandes, caros e funcionavam de forma independente. Entretanto, a partir da década de 1980, dois principais avanços tecnológicos mudaram essa realidade: o desenvolvimento de microprocessadores de alta capacidade e a criação de redes de computadores de alta velocidade.
Os microprocessadores evoluíram de 8 bits para 16, 32 e 64 bits, oferecendo capacidade de computação comparável a mainframes, mas a um custo muito menor. Essa mudança resultou em uma melhoria impressionante no desempenho e no custo-benefício dos computadores, com máquinas que antes custavam milhões de dólares agora mais acessíveis e capazes de executar bilhões de instruções por segundo.
Além disso, surgiram as redes locais (LANs) e redes de longa distância (WANs), permitindo a conexão de centenas de máquinas de forma extremamente rápida, facilitando a transferência de dados entre sistemas. Isso possibilitou a criação de sistemas distribuídos, compostos por múltiplos computadores conectados em rede, em contraste com os sistemas centralizados anteriores. Essas inovações tornaram possível, e fácil, montar sistemas compostos por grandes quantidades de computadores interconectados, levando a uma revolução na forma como a computação é realizada.
Hoje em dia os sistemas distribuídos estão presentes em todo lugar, com a Internet e suas redes sociais sendo alguns dos exemplos mais evidentes. Cada organização gerencia uma intranet que oferece serviços locais e de Internet para usuários, tanto locais quanto remotos. A principal motivação para a construção desses sistemas é facilitar o compartilhamento de recursos como impressoras, arquivos, páginas web e registros de banco de dados. Esses recursos são gerenciados por servidores especializados, enquanto os clientes acessam os recursos de forma específica.
Segundo Tanenbaum, no livro "Sistemas Distribuídos: Princípios e paradigmas”, “Um sistema distribuído é um conjunto de computadores independentes que se apresenta a seus usuários como um sistema único e coerente.” Outro conceito diz que “Um sistema distribuído é aquele no qual os componentes localizados em computadores interligados em rede se comunicam e coordenam suas ações apenas passando mensagens”. (Coulouris et al. 2007)
Ambas as definições destacam dois aspectos principais: a autonomia dos computadores e a percepção dos usuários de estarem lidando com um sistema único. 
Este trabalho tem como objetivo esclarecer o conceito de sistemas distribuídos, tal como seus desafios, possíveis problemas e soluções que podem aparecer no seu desenvolvimento.
2 – SISTEMAS DISTRIBUÍDOS
Há na literatura várias definições diferentes para explicar o que é um sistema distribuído. Tanenbaum (2007) define um sistema distribuído como “um conjunto de computadores independentes que se apresenta a seus usuários como um sistema único e coerente”. Na sua definição ele destaca a transparência como uma característica fundamental, como as diferenças entres os vários computadores e a forma como se comunicam, essas informações devem estar ocultas, o usuário deve achar que se trata de um único sistema. (Tanenbaum, 2007)
Encontramos uma definição semelhante à do Tenenbaum na literatura do Coulouris (2013), que define um sistema distribuído como um sistema no qual o hardware ou o software localizado em diferentes computadores, se comunica e coordena suas ações apenas trocando mensagens, que destaca três características importantes: a concorrência de componentes, a falta de um relógio global e as falhas de componentes independentes. A primeira característica descreve a possibilidade de vários usuários utilizarem vários computadores compartilhando os mesmos recursos. A sincronização das máquinas é um desafio, uma vez que os computadores podem ter horários diferentes, o que torna impossível garantir um ‘relógio global’ que sincronize perfeitamente todos os computadores. Todo sistema está exposto a falhas, em um sistema distribuídos isso também acontece, porém, a máquina com a falha é isolada e o sistema continua funcionando perfeitamente para o usuário. (Coulouris, 2013)
2.1 – Heterogeneidade 
A heterogeneidade em sistemas distribuídos refere-se às diferenças em redes, hardware, sistemas operacionais, linguagens de programação e implementação de desenvolvedores. A Internet, por exemplo, conecta computadores de diferentes redes, mas as diferenças são ocultadas pelos seus protocolos, permitindo que computadores com diferentes tipos de rede se comuniquem entre si.
Para que sejam suportados computadores e redes heterogêneos ao mesmo tempo que oferece uma visão de sistema único, SDs são geralmente organizados por meio de uma camada de software situada entre outras duas camadas: uma de nível mais alto, composta de usuários e aplicações, e uma camada mais abaixo, composta por sistemas operacionais e facilidades básicas de comunicação, por isso o nome “middleware”. (Tanenbaum, 2007)
Figura 1 – Camada do sistema distribuído: Middleware
Fonte: "Sistemas Distribuídos: Princípios e paradigmas” (Tanenbaum, 2007)
Exemplos de middleware incluem o CORBA (Common Object Request Broker) e o Java RMI (Remote Method Invocation).
2.2 – Abertura
Uma das características fundamentais para garantir a interoperabilidade, flexibilidade e evolução do sistema. É a capacidade de um sistema distribuído ser construído de forma modular, isso permite que diferentes componentes possam se comunicar e trabalhar juntos. 
O sistema distribuído aberto é um sistema que pode oferecer serviços de acordo com as regras padronizadas que descrevem a sintaxe e a semântica dos serviços, um exemplo são as regras padronizadas em redes de computadores, há regras que administra o formato, o significado das mensagens enviadas e recebidas e o conteúdo. Em sistemas distribuídos, os serviços são especificados pormeio de interfaces, que são descritas em uma linguagem de definição de interface (IDL). As definições de interface capturam a sintaxe de serviços, elas especificam com precisão os nomes das funções que podem estar disponíveis, os tipos de parâmetros, valores de retorno, as possíveis exceções etc.
Sistema abertos permitem que novos componentes sejam integrados de forma simples, e que componentes heterogêneos trabalhem juntos sem barreiras, facilitando a evolução contínua do sistema. (TENENBAUM, 2007)
2.3 – Tratamento de Falhas
Os sistemas de computadores podem apresentar falhas devido a problemas de hardware ou software, acarretando resultados incorretos ou em interrupções indesejadas de uma tarefa. Em sistemas distribuídos, as falhas são parciais, com alguns componentes falhando enquanto outros continuam funcionando, o que torna o tratamento de falhas mais complexo. As principais abordagens para lidar com falhas são:
· Detecção de Falhas: Algumas falhas podem ser detectadas, como através de somas de verificação para dados corrompidos. No entanto, falhas em servidores remotos podem ser difíceis de detectar, exigindo estratégias para gerenciar falhas suspeitas.
· Mascaramento de Falhas: Falhas detectadas podem ser ocultadas ou atenuadas. Exemplos incluem a retransmissão de mensagens perdidas ou a gravação de dados em múltiplos discos para garantir que, se um falhar, o outro continue funcionando. Essas técnicas ainda podem falhar nos piores cenários.
· Tolerância a Falhas: Alguns serviços na Internet são projetados para tolerar falhas, muitas vezes informando o usuário sobre o problema sem deixar o serviço parar completamente. Isso envolve tanto a tolerância por parte dos sistemas quanto dos usuários.
· Recuperação de Falhas: Envolve projetar sistemas que permitam recuperar dados ou retroceder para um estado consistente após uma falha, especialmente quando as computações não são concluídas.
· Redundância: Componentes redundantes, como múltiplas rotas de rede, servidores replicados e bancos de dados distribuídos, ajudam a garantir que, mesmo em caso de falha, os serviços continuem disponíveis. A manutenção da consistência entre as réplicas é um desafio. (Coulouris et al. 2007)
Em suma, os sistemas distribuídos devem ser projetados para garantir alta disponibilidade, o que significa que a falha de um componente não deve afetar significativamente o sistema como um todo.
2.4 – Segurança 
A segurança de recursos de informação em sistemas distribuídos é essencial, e envolve três componentes principais:
Confidencialidade: proteção contra a exposição não autorizada de informações. Integridade: proteção contra alterações ou danos aos dados. E por fim, disponibilidade: garantia de acesso ininterrupto aos recursos.
Embora firewalls possam proteger uma intranet restringindo o tráfego, eles não garantem o uso apropriado dos recursos, nem protegem adequadamente os dados na Internet. Os sistemas distribuídos ainda enfrentam dois principais desafios de segurança:
Envio seguro de informações: Informações sigilosas, como dados médicos ou números de cartão de crédito, precisam ser transmitidas de forma segura por redes. Isso envolve não apenas ocultar o conteúdo das mensagens, mas também autenticar a identidade dos usuários e agentes, utilizando técnicas de criptografia.
Ataques de negação de serviço (DoS): Esses ataques interrompem um serviço bombardeando-o com pedidos excessivos, impedindo o acesso de usuários legítimos. Embora a captura e punição dos responsáveis seja uma solução parcial, melhorias no gerenciamento das redes estão sendo desenvolvidas para mitigar esses ataques.
Além disso, a segurança de código móvel é um obstáculo crescente, já que alguns programas executáveis, como anexos de e-mail, podem ter efeitos imprevisíveis, incluindo acessos não autorizados a recursos locais ou ataques de DoS. (Coulouris et al. 2007)
2.5 – Autenticação e Autorização
Quando nos referimos ao processo de verificar a identidade de um usuário ou sistema, estamos falando de autenticação. É um processo essencial para garantir que apenas usuários ou componentes autorizados possam acessar os recursos e se comunicar. Já a autorização, que ocorre após o processo de autenticação, é um processo de verificar quais ações um usuário ou componente autenticado tem permissão para realizar. É preciso que a autorização seja escalável e eficiente, pois pode envolver múltiplos servidores que controlam diferentes partes dos recursos. (COULOURIS, 2013)
2.5.1 – Criptografia
A criptográfica é um método de codificar uma mensagem de forma que oculte seu conteúdo. Hoje existem vários algoritmos de segurança para cifrar e decifrar mensagens com o uso de segredos denominados de chave. Existem dois tipos principais de criptografia: Simétrica e Assimétrica.
Na criptográfica simétrica é utilizado uma chave compartilhada entre as partes para criptografar e descriptografar as mensagens. A criptografia assimétrica usa um par de chaves, uma pública e uma privada. As mensagens criptografadas com a chave pública só podem ser acessadas com a chave privada correspondente. (COULOURIS, 2013)
2.5.2 – Controle de Acesso 
O controle de acesso envolve mecanismos para garantir que os usuários ou processos autenticados e autorizados tenham acesso apenas aos recursos que tem permissão para acessar. (COULOURIS, 2013)
2.6.1 – Escalabilidade
Sistemas distribuídos operam de forma eficaz em diferentes escalas, desde pequenas intranets até a própria Internet. Um sistema é considerado escalável se continuar eficiente à medida que o número de usuários e recursos aumenta. O crescimento da Internet e dos serviços Web ao longo dos últimos anos elucida essa escalabilidade. (Coulouris et al. 2007)
Os principais desafios enfrentados para que a escalabilidade ocorra são:
O controle de custos dos recursos físicos: O Sistema deve ser ampliado a um custo razoável à medida que a demanda aumenta. Em uma intranet, por exemplo, para evitar gargalos de desempenho, é necessário adicionar servidores à medida que o número de usuários cresce, mantendo a proporcionalidade. (Coulouris et al. 2007)
Controle da perda de desempenho: A escalabilidade pode ser prejudicada por algoritmos e estruturas de dados ineficientes. Estruturas hierárquicas (como o DNS) escalonam melhor do que as lineares, mas ainda assim, o aumento do tamanho dos dados resulta em alguma perda de desempenho, que precisa ser minimizada. (Coulouris et al. 2007)
Escassez de recursos de software: Um exemplo é o esgotamento de endereços IP, inicialmente projetados com 32 bits, que agora estão se esgotando. Para resolver o problema, foi adotado um novo protocolo com endereços de 128 bits, o que exige ajustes nos componentes de software. O desafio é prever adequadamente a demanda futura. (Coulouris et al. 2007)
Gargalos de desempenho: Para evitá-los, os algoritmos devem ser descentralizados. O antigo sistema de nomes de domínio (DNS) é um exemplo de gargalo, que foi resolvido ao distribuir a tabela de nomes em servidores locais, eliminando a sobrecarga. (Coulouris et al. 2007)
Ademais, o software de sistema e aplicativo deve, idealmente, permanecer inalterado mesmo quando o sistema escala. Técnicas como replicação de dados, uso de cache e distribuição de servidores são usadas para lidar com esses problemas e garantir a escalabilidade, melhorando o desempenho e a eficiência à medida que o sistema cresce. (Coulouris et al. 2007)
2.6.2 – Técnicas de Escalabilidade
Atualmente existem três técnicas para ampliar sistemas: ocultar latências de comunicação, distribuição e replicação.
A técnica de ocultar latências consiste em tentar evitar o máximo possível que se espere por respostas a requisições remotas (e possivelmente distantes) de serviços. Uma solução para isso é simplesmente reduzir a comunicação global, passando parte da computação que é normalmente executada no servidor para o cliente que está requisitando o serviço. Um exemplo típico é o acesso a bancos de dados através de formulários. (Tanenbaum, 2007)
Uma outra técnicareportante á a da distribuição, a qual consiste em pegar um componente, o dividir em partes menores e posteriormente espalhar essas partes pelo sistema. Um exemplo de distribuição é o Sistema de Nomes de Domínio da Internet. (Tanenbaum, 2007)
A técnica referente a replicação considera que problemas de escalabilidade geralmente aparecem sob a forma de degradação do desempenho, sendo uma boa solução replicar componentes de um SD. A replicação aumenta a disponibilidade e a equilibrar a carga de componentes, como consequência acaba melhorando o desempenho. O cache é outra forma de replicação, mas diferente da última, é uma decisão tomada pelo cliente do recurso, não do proprietário. (Tanenbaum, 2007)
2.7 – Concorrência
Em um sistema distribuído, serviços e aplicativos fornecem recursos compartilhados que podem ser acessados por múltiplos clientes simultaneamente. Para melhorar o desempenho, esses sistemas permitem que vários pedidos sejam processados ao mesmo tempo, o que pode gerar conflitos entre operações, resultando em resultados inconsistentes.
Para evitar adversidades, qualquer recurso compartilhado, representado por um objeto, deve garantir que suas operações sejam corretas em um ambiente concorrente. Isso vale tanto para servidores quanto para objetos de aplicativos.
Para manter a coerência, as operações dos objetos precisam ser sincronizadas para que os dados permaneçam consistentes. Técnicas como semáforos, comuns em sistemas operacionais, podem ser usadas para esse controle. (Coulouris et al. 2007)
2.8 – Transparência
Uma das metas da construção de sistemas distribuídos é a transparência. Segundo Tanenbaum, “um sistema distribuído que é capaz de se apresentar aos usuários e aplicações como se fosse apenas um único sistema de computador é denominado transparente”. A tabela a seguir trata dos diferentes tipos de transparência nos SD’s
Tabela 1 - Diferentes formas de transparência em um sistema distribuído (ISO.1995).
Fonte: "Sistemas Distribuídos: Princípios e paradigmas” (Tanenbaum, 2007)
· Transparência de acesso permite que recursos locais e remotos sejam acessados da mesma forma.
· Transparência de localização possibilita que os recursos sejam acessados sem que se tenha conhecimento de sua localização física ou rede.
· Transparência de migração é o que permite a movimentação de recursos e clientes dentro de um sistema, sem que essas operações sejam afetadas.
· Transparência de realocação viabiliza a movimentação de recursos enquanto ainda estão sendo utilizados, sem que o usuário ou a aplicação percebam.
· Transparência de replicação torna possível que várias instâncias dos recursos sejam utilizadas para aumentar a confiabilidade e melhorar o desempenho do sistema, mesmo sem conhecimento das réplicas por parte dos usuários ou programadores. 
· Transparência de concorrência permite que inúmeros processos operem ao mesmo tempo, utilizando recursos compartilhados sem uma interferência entre eles. 
· Transparência de falhas possibilita que falhas sejam ocultadas, permitindo que os usuários e os programas aplicativos concluam suas operações independente da falha de componentes de hardware ou software. (Tanenbaum, 2007)
3. MATÉRIAS E MÉTODOS
O Principal problema abordado neste projeto é a coleta seletiva de lixo, um tema bastante discutido na área do meio ambiente, pois a população ainda tem uma certa dificuldade na coleta de lixo, podendo haver um acúmulo de lixo nas ruas, e nos bairros. 
Com isso, foi pensado a ideia de um aplicativo de coleta inteligente focado em empresas, onde a instituição pode definir trajetos para os caminhões com base no seu ID, com isso, pode ser definido o trajeto que o caminhão vai percorrer, o turno, no caso o horário de atividade, e os funcionários presentes no caminhão naquele turno.
3.1 – Diagrama de Arquitetura de Software
A arquitetura do software é constituída pelos seguintes componentes, representado na figura abaixo:
Servidor: O servidor geral do software onde está presente todas as funcionalidade e sistema do aplicativo.
Usuário: Administrador da instituição, é ele que vai ter acesso ao software e gerenciar o sistema de coleta. 
Banco de dados: Local onde vai ser armazenado as informações dos funcionários, dos caminhões de coleta, e das rotas salvas pela empresa.
Caminhão de Lixo: O caminhão de lixo vai ter acesso da rota pelo seu mapa acessando o sistema de mapa da instituição compartilhada pelo software. 
Figura 2 – Diagrama de arquitetura de Software
Fonte: Autoria Própria, 2024
3.2 – Design e Telas
3.2.1 – Tela 1 – Carregamento
A figura 3 mostra a tela de carregamento do software
3.2.2 – Tela 2 – Login e Cadastro
A figura 4 representa a tela de login e cadastro do administrador, onde o administrador da instituição pode efetuar o seu login, e pode ser cadastrado um novo administrador no sistema.
3.2.3 – Tela 3 – Menu Principal
Na figura 4 e representado o menu principal do software, onde o administrador tem várias funcionalidades para o sistema de coleta, essas funcionalidades incluem:
Planejamento de Rota: Menu onde e planejado e definido a rota dos caminhões de coleta.
Gerenciar Funcionários: Menu onde o administrador pode ver as informações do funcionário, e definir em qual caminhão de coleta ele vai fazer parte.
Area de Coleta: Menu onde é definido uma área de coleta do, definindo os bairros e as ruas onde os caminhões irão usar como rota.
Monitoramento: Menu onde o administrador pode checar a localização do caminhão de coleta, e os funcionários presentes no caminhão durante o turno.
3.2.4 – Tela 4 – Planejamento de Rotas
Na Figura 6 esta o menu onde é definido as rotas dos caminhões, para ser definido as rotas, é necessário que o administrador defina:
Ponto de Origem: Ponto onde fica o deposito de lixo da instituição.
Destino: Onde é definido vários pontos (checkpoints), onde o caminhão vai ter que passar, é necessário que o destino tenha o seu último ponto na mesma localidade que o ponto de origem, também é necessário que os pontos estejam dentro da área de coleta do deposito. Também pode ser definido mais de um destino para o caminhão rotacionar.
3.2.5 – Tela 5 – Gerenciamento de Funcionários
Na figura 7 é onde o administrador pode gerenciar os funcionários da instituição, definindo em quais caminhões, rotas, e horários que estes funcionários vão estar presentes.
Para isso, será necessário que o administrador defina duas coisas, sendo elas:
Funcionários: Os funcionários que vão fazer parte do expediente. 
Caminhão: O ID do caminhão que vai ser usado para o turno.
3.2.6 – Tela 6 – Area de Coleta
Na figura 8 está o menu onde vai ser definido a área de aproximação do depósito de lixo da instituição; ela deve abranger um ou vários bairros do município.
É necessário que o administrador selecione o deposito em questão (Ponto de origem) e defina o tamanho da área de coleta. 
3.2.7 – Tela 7 – Area de Monitoramento
Na figura 9 é onde o administrador vai poder checar a localização dos caminhões e quais funcionários estão presentes no expediente.
Para isso, é necessário que o administrador abra o mapa e selecione qual caminhão ele deseja saber as informações.
4. DESENVOLVIMENTO DO ESTUDO
4.1 – Vantagens
⁠Eficiência na Coleta: Maior facilidade e flexibilidade na coleta de lixo dos bairros.
Melhor Planejamento: Facilidade no planejamento de Rotas dos Caminhões e descarte do lixo dos caminhões.
⁠Gerenciamento de Funcionários: Possibilidade de Gerenciar os funcionários, selecionando para quais caminhões serão encaminhados e seus turnos.
Área de Coleta: Planejamento dos Bairros e ruas da coleta
Monitoramento: Monitoramento da localização dos Caminhões por GPS, e quais funcionários estão presentes.
4.2 – Desvantagens
Acesso Restrito: Acesso restrito apenas para Administradores da instituição 
Inconsistência: Pode Haver inconsistências nos horários de coleta e na localização por GPS.
Inconsistência: Pode Haver inconsistências nos horários de coleta e na localização por GPS.
5 – CONSIDERAÇÕES FINAIS
O projeto teve como objetivoabranger a área de sistemas distribuídos e seus conceitos, e usar deste conhecimento para proposta e criação de um software de coleta seletiva inteligente para instituições de coleta de lixo, para assim poder facilitar no cuidado do meio ambiente tanto para os donos de empresa, quanto para as populações municipais
O destaque principal do software vem de sua quantidade de funcionalidades para o gerenciamento do sistema de coleta, podendo assim ser definido uma rotina diária com maior facilidade e flexibilidade por parte da empresa. 
Em questão das funcionalidades, os administradores têm tanto total controle de gerenciamento do sistema, quanto ter as informações necessárias dos turnos, sendo os caminhões identificados por um ID e podendo assim ter as informações de horário de atividade e os funcionários presentes no turno de atividade do caminhão.
Porém, ainda existem desafios para aperfeiçoar o software, na questão de restrição, pode se tornar difícil administrar se caso houver poucos administradores na empresa.
E quanto na questão de inconsistência de localização e horários, a empresa pode necessitar um rendimento maior para tecnologias de GPS mais avançadas; e os caminhões podem ter inconsistência no horário se caso houver problemas relacionado ao clima e trânsito.
No geral, a ideia do projeto e que ele possa ser utilizado como uma fonte de estudo e prática, e que possa ser usado para aplicações governamentais ou não para a melhoria do setor ambiental.
REFERÊNCIAS
COULOURIS, G. F. et al. Sistemas Distribuídos: Conceitos e Projeto. [S.l.]: Bookman, 2011.
COULOURIS, G. F. et al. Sistemas Distribuídos: Conceitos e Projeto. [S.l.]: Bookman, Quinta Edição, 2013.
TANENBAUM, A. S.; STEEN, M. V. Distributed Systems: Principles and Paradigms. 2nd. ed. [S.l.]: Pearson, 2007.
TANENBAUM, A. S.; STEEN, M. V. Sistemas Distribuídos: Princípios e Paradigmas. [S.l.]: Pearson, 2017.
image2.png
image3.png
image4.png
image5.png
image1.jpg
image2.jpeg

Mais conteúdos dessa disciplina