Buscar

TCC - Reutilização de Smartphones como Ferramenta para Programadores de Baixa Renda

Prévia do material em texto

S. Sandri, J. Stolfi, L.Velho
Reutilização de Smartphones como Ferramenta para Programadores de Baixa Renda
Thiago V. Pessia12, Yasmin K. Albanese12, Manoel M. Neto12, Carolina de F. Cinque12, Luiz F. F. de Lira12, Nancielly N. G. Silva12, André L. M. Santana12
1Sistemas de Informação – Universidade Anhembi Morumbi (UAM)
CEP – (01310-200) – São Paulo – SP – Brazil
2Escola de Engenharia, Arquitetura e Tecnologia (STEAM)
S. Sandri, J. Stolfi, L.Velho
ccinque2@gmail.com, yasminalbanese99@gmail.com, nanciellyestudante@gmail.com, thiago.pessia@gmail.com, felipeluiz.felix@gmail.com, manoelmerlin@hotmail.com, andre.santana@anhembi.br
Proceedings of the XII SIBGRAPI (October 1999) 101-104
Proceedings of the XII SIBGRAPI (October 1999)
Abstract. Beginner programmers need access to low-cost devices to carry out their learning practices, as they often do not have computers or income to put into practice what they learn in theory. Thus, the usage of Android smartphones as a learning tool for programming is a great solution to this problem, since they are very common devices and can provide an environment similar to Linux.
Resumo. Programadores iniciantes precisam de acesso a dispositivos de baixo custo para realizar suas práticas de aprendizagem, pois muitas vezes não possuem computadores ou renda para colocar em prática o que aprendem na teoria. Desta forma, a utilização de smartphones Android como ferramenta de aprendizado para programação é uma ótima solução para tal problema, visto que são dispositivos muito comuns e podem disponibilizar um ambiente análogo ao Linux.
1. Introdução
O uso da internet em smartphones para uso pessoal, como ferramenta de trabalho ou até mesmo como forma de estudo em decorrência da situação global de pandemia cresceu paralelamente ao avanço tecnológico. Atualmente a maioria dos modelos de smartphones conseguem desempenhar funcionalidades semelhantes a um computador, sejam modelos de entrada, intermediários ou topo de linha. Anualmente fabricantes concorrem entre si e lançam diversos modelos com novas funcionalidades e atrativos para os consumidores.
O crescimento tecnológico nos países sofre com a falta de mão de obra qualificada para atender o número de vagas disponíveis no mercado. Segundo a Brasscom (2019), a área de Tecnologia da Informação (TI) deve haver um total de 420 mil vagas em aberto, somando as vagas entre os anos de 2019 e 2024, no entanto, o número de profissionais formados na área, anualmente, não atende à demanda. Dentre os principais fatores que contribuem com a falta de profissionais qualificados pode-se citar o fato de que, no Brasil, cerca de 16% da população acima de 10 anos não utiliza a internet devido a falta de condições financeiras.
Levando em consideração a degradação de hardware e obsolescência programada, a vida útil de um smartphone para usuários avançados têm em média de 2 a 4 anos de uso sem considerar avarias acidentais [Ercan 2016], o problema é que com o avanço tecnológico o padrão de comportamento dos consumidores alterou bruscamente, aumentando a faixa de consumidores que trocam ou tem intenção de trocar de dispositivos anualmente ou em tempos menores [Morais 2020].
Utilizando o conceito de "Metareciclagem", que visa o aproveitamento direto da tecnologia envolvida nos dispositivos eletrônicos, e não apenas de seus materiais de fabricação, em conjunto com a alta demanda de vagas no setor de tecnologia e o elevado índice de desemprego no país, em principal para a população de baixa renda, foi estruturada a ideia de desenvolvimento do projeto social, cujo objetivo principal é fornecer à população de baixa renda uma ferramenta de trabalho e/ou estudo para se adequar ao mercado de trabalho.
Desta maneira, o enfoque deste projeto consiste em estruturar um ecossistema que seja capaz de coletar smartphones, por meio de descarte pessoal ou doações, e disponibilizar protocolos e ações práticas para que estes dispositivos tornem-se ferramentas de trabalho ou de estudo de programação de computadores. 
Para tal, através da utilização de SCRUM como metodologia de trabalho para o desenvolvimento do projeto, foram estruturados protocolos que possibilitam a configuração do Linux em sistemas operacionais Android, tornando possível a instalação de algumas aplicações como compiladores de código e bancos de dados, que possibilitam o uso dos dispositivos para desenvolver e compilar programas escritos em linguagens de programação, como por exemplo, PHP, Java, Python entre outras.
Para realizar a doação, o usuário irá se cadastrar em uma plataforma web e preencher a ficha técnica com as informações do dispositivo para validar as condições mínimas do smartphone. Ao receber o dispositivo, o mesmo passará por uma bateria de testes de performance que de acordo com os resultados irá receber uma qualificação. Em paralelo, o usuário com intenção de receber o dispositivo deverá preencher uma ficha de requerimento, mais detalhes serão apresentados na Seção 4.1 de Análise e Resultados.
2. Contextualização
2.1. (Re)propósito e Economia Circular
De acordo com Magalhães e Vendramini (2018), com o advento da globalização e a consequente 4ª Revolução Industrial, o mundo se tornou tecnológico, de modo que, a produção de aparelhos eletrônicos passou a se tornar cada vez maior e mais requisitada, visto que, com o surgimento de softwares cada vez mais avançados, os usuários passaram a presenciar experiências extremamente realísticas no mundo virtual. Nesse sentido, há que se citar a Lei de Moore, que surgiu no ano de 1965 quando Gordon Moore observou que aparelhos eletrônicos no geral se tornam ultrapassados a cada 18 meses, dificultando, assim, a manutenção dos mesmos devido à falta de peças e justificando as trocas dos equipamentos que, consequentemente, enseja em uma maior produção de lixo eletrônico [Malta 2019].
Assim sendo, surge a necessidade de se falar do problema advindo deste avanço, qual seja, a chamada poluição eletrônica, que consiste basicamente no descarte demasiado de aparelhos eletrônicos considerados ultrapassados [Jardim 2017]. Logo, insta salientar que os Resíduos de Equipamentos Elétricos e Eletrônicos (REEE) acabam por englobar um rol muito extenso de produtos, podendo-se citar, por exemplo, os eletrodomésticos básicos de cozinha, lâmpadas, telefones celulares, laptops, tablets, máquinas de lavar, condicionadores de ar, dentre muitos outros produtos [Forti et al. 2020).
[Oliveira 2016] Ocorre que, com o lançamento de novos modelos de aparelhos eletrônicos, as pessoas passaram a descartar os seus antigos, ainda que estes não possuíssem quaisquer defeitos, simplesmente para poder adquirir os modelos atuais. De tal modo, por serem mal descartados por seus usuários, a contribuição para a geração de lixo eletrônico global cresce cada vez mais, gerando em torno de 53 milhões de toneladas por ano [Welle 2020], de modo que, se torna extremamente prejudicial à saúde humana e ao meio ambiente, visto que, cada produto possui em sua composição um material tóxico diferente que se não descartado e reciclado corretamente pode vir a trazer sérios impactos [Tanaeu et al., 2015]. 
A preocupação com o meio ambiente acerca do incorreto descarte do lixo eletrônico advém principalmente do fato de que os EEE contêm em sua composição substâncias químicas e metais extremamente pesados, dentre muitos outros componentes extremamente prejudiciais à saúde do ser humano e ao ecossistema, que podem vir a contaminar o solo e os lençóis freáticos se descartados como lixo comum [Oliveira 2016]. A título de exemplo dos males causados à saúde humana em detrimento do descarte incorreto destes, cita-se o rol exemplificativo de Forti (2020), que demonstra as possíveis consequências ao organismo humano em caso de absorção de alguns dos elementos químicos presentes na composição dos dispositivos eletrônicos e elétricos. 
Nesse sentido é que faz-se necessário pensar na reciclagem e na re-destinação destes dispositivos elétricos e eletrônicos, visto que, estima-se que cerca de 80% da composiçãode um aparelho celular [Malta 2019], por exemplo, pode ser reciclado, de modo que, assim, haveria uma contribuição para que o meio ambiente e a saúde do ser humano fossem preservados, bem como para que os menos afortunados pudessem ter a oportunidade de adquirir um aparelho eletrônico que lhes permitisse trabalhar e estudar. 
Isto posto, o presente artigo tem por escopo demonstrar uma alternativa sustentável ao descarte dos aparelhos celulares, visando o reaproveitamento destes produtos por pessoas de baixa renda, para que essas possam investir na área da educação. A proposta que será aqui apresentada segue basicamente a linha de raciocínio da MetaReciclagem, a qual consiste na (re)apropriação de tecnologia com o intuito de transformar a sociedade, dando fim à tecnologia “estacionada” nos aterros sanitários, de modo que, assim, evite-se o acúmulo indevido de lixo eletrônico no meio ambiente e o seus consequentes impactos à saúde humana, aproveitando, assim, a matéria prima eletrônica e elétrica para novos produtos e incluindo sócio-digitalmente a população carente [Malta 2019].
2.2 Aplicações Terminais
Para o projeto em comento, foram utilizadas Aplicações Terminal também conhecida como Interface por Linhas de Comando (CLI) que, devido ao seu caráter de baixo nível, possui como consequentes vantagens a simplicidade e a rapidez. Trata-se, portanto, de uma interface direta com os comandos do computador por meio da qual, através de instruções pré-definidas, desempenha uma comunicação realizada por textos, garantindo que não pese nos dispositivos. Por sua vez, a base utilizada no projeto foi o Linux, valendo-se do Bash como linha comando, testando as linguagens Node.js, Python, PHP, Java, C# e MySQL.
2.3 Android e Linux
Existe uma vasta variedade de sistemas operacionais, tais como Microsoft Windows, Linux, Apple macOS, que são operados usualmente em computadores. Já em telefones celulares, são utilizados outros tipos, como os líderes de mercado IOS da Apple e Android do Google, no entanto não se limita a apenas estas plataformas. O market share realizado em março de 2021 pela Statista [Navarro 2021] aponta que no Brasil, o sistema operacional Android obteve 86.22% do mercado, enquanto que o IOS 13.45%, já outros sistemas não obtiveram mais do que 0.02%. 
No projeto, o foco se dá pela utilização do Android em consonância com o Linux, haja vista que, a criação do mesmo só foi possível devido a este sistema operacional. O objetivo inicial desta plataforma, se dava por investir em um sistema para câmeras digitais, o qual seria inovador e de fácil entendimento para seus usufrutuários. Devido a este fator, a utilização do kernel do sistema operacional do Linux, foi essencial como fundamento de sua estrutura. Apesar de as intenções serem as melhores, o mercado do ramo de fotografia era escasso, ocasionando em uma mudança estratégica para o ramo de dispositivos móveis o qual estava em ascensão [Faustino at al. 2017]. 
2.3.1 Termux
Termux é um aplicativo Android com emulador Linux, que funciona imediatamente sem a necessidade de fazer root, ou seja, sem acesso administrativo ou a configuração do dispositivo [Sharma 2018]. Inicialmente, o aplicativo instalado fornece algumas funções básicas, contendo os recursos necessários, para que haja a utilização de programas de linhas de comando, expondo assim, as funções do Android para o sistema Termux [Ulloa 2017]. Posteriormente, o usuário poderá instalar outras bibliotecas desejadas, utilizando o gerenciador de pacotes, já que o aplicativo contém uma extensa coleção de ferramentas Linux.
2.3.2 PRoot
O PRoot de acordo com [Vincent [s.d.]] é um pacote para Linux, que tem por objetivo implementar um diretório virtual no espaço do usuário do Linux. Ou seja, os usuários possuem acesso de administrador de Linux no Android de forma simplificada, alterando o diretório raiz, não necessitando de privilégios ou configurações para a execução de programas que naturalmente precisam da autorização do superusuário, por exemplo. 
Com isso, pode-se concluir que o PRoot possui como benefícios, a execução de sistemas operacionais Linux no Termux em um dispositivo móvel Android, podendo ser utilizado para exercer um diretório virtual ou iniciar uma sessão de shell para emular privilégios [Rausty [s.d.]].
2.4 Protocolo de Validação de Desempenho de Hardware (Benchmark)
O Benchmark de acordo com [Ciferri 1995] trata-se de uma técnica de análise de desempenho, utilizada para comparar eficientemente a performance entre sistemas computacionais, medindo o potencial de cada software/hardware em diversos aspectos, fazendo uma comparação entre os dispositivos de maneira experimental. Ou seja, tem como objetivo, analisar a funcionalidade de seus subsistemas em distintas circunstâncias reais, para averiguar o seu comportamento através de testes únicos e múltiplos [Potrich 2008].
2.4.1 UnixBench
O UnixBench é um dos pacotes de Benchmark disponíveis para sistemas operacionais Unix, o qual tem como propósito prover um indicador de desempenho de um suporte lógico, baseado em testes individuais, como Dhrystone, Execl Throughput, Pipe Throughput, Scripts Shell, Teste de Compilação, entre outros [Lucas [s.d.]]. 
No projeto em questão, foi utilizada esta ferramenta para a avaliação dos dispositivos móveis ofertados, já que a mesma realiza um conjunto de testes completos, para avaliar a performance do hardware e do software, analisando o funcionamento de seus componentes, tais como processador, memória, bateria e sistema operacional [Vieira 2010]. A partir desta avaliação, é realizada a comparação entre as pontuações geradas de um sistema, com as pontuações base de outro, gerando uma nota final para as tarefas executadas [Lucas [s.d.]].
2.5 Microcontroladores (MCU)
Um sistema microcontrolado tem como base um projeto específico para cada aplicação, a qual depende de um projeto eletrônico específico para que as entradas e saídas sejam conectadas e o microcontrolador, programado, possa operar [Stevan e Silva 2015]. Como mencionado por Cardoso (2020), um microcontrolador pode ser definido como um sistema computacional em um único chip, o qual contém um núcleo de processador, memória e periféricos programáveis de entrada e saída. Apresenta funções simples, como o controle de circuitos através de comandos da programação, enviados por meio de uma conexão serial, como por exemplo, o cabo USB [Braga [s.d.]].
2.5.1 Arduino
Nesse sentido, há que se falar acerca da plataforma Arduino, a qual tem por escopo otimizar o tempo de projeto de sistemas microcontrolados e que consiste basicamente em uma plataforma padronizada open-source de prototipagem eletrônica, que tem como base a flexibilidade, haja vista que, seu hardware e software são extremamente fáceis de serem utilizados, permitindo, assim, uma adaptação ampla aos mais diversos cenários e aplicações [Stevan e Silva 2015]. Em outros termos, o Arduino nada mais é que uma placa eletrônica capaz de ler entradas, através de instruções pré-definidas por uma linguagem de programação e projetar as saídas esperadas por meio de sensores e motores, além de ser um dispositivo re-programável, com o benefício de se utilizar diversas vezes a mesma placa em variados projetos [Fortunato et al., p. 96, 2016].
2.5.2 WebSocket
WebSocket é um protocolo baseado em TCP, o qual garante uma comunicação bidirecional entre o cliente e o servidor em tempo real, permitindo a troca de mensagens em ambas direções simultaneamente, evitando a sobrecarga da rede [Santos, Souza e Anderle, p.206, 2015]. Foi utilizado junto do Arduino, com a vantagem de se ter o dinamismo que este protocolo propõe, onde os usuários são capazes de realizar atualizações em uma página web por exemplo, e as alterações ocorrerem para todos os conectados a este servidor [Rodriguez 2016], e no caso proposto o objetivo é haver a troca síncrona entre o microcontrolador e o ambiente Linux.
3. Metodologia
3.1 Método de Desenvolvimento da Pesquisa 
Nesta seção serão abordados os métodos que foram utilizados para realizar apesquisa, instrumentos aproveitados para alcançar um objetivo e o cenário a ser estudado. A metareciclagem e a inclusão de antes censurados nos cargos da indústria tecnológica, são os principais assuntos a serem destacados para o propósito a seguir.
A partir de pesquisas pode-se concluir que o celular é o principal meio de conexão à internet de muitos brasileiros, segundo o IBGE (2018) em uma análise levantada no ano de 2018 este aparelho era o único meio de acesso à internet em 45,5% dos domicílios do país. Com essas informações pode-se concluir que por falta de renda muitos não possuem computador, notebook ou qualquer tipo de desktop em suas residências, para que essas pessoas possam iniciar na área da tecnologia é preciso muito mais esforço e dedicação, comparado a de outros instalados na mesma sociedade. 
Os conceitos analisados para a fomentação do artigo foram a situação de pessoas de baixa renda em meio a internet, a irrupção do e-lixo no meio ambiente e a escassez de posicionamento a respeito destes temas. O lixo que os aparelhos tecnológicos produzem é um material altamente tóxico para o meio ambiente [Almeida et al. 2009], não somente de forma direta ao ser humano mas também no local onde é descartado. Como se não bastasse, conforme a sociedade cresce e evolui esses restos tendem a aumentar de forma adjacente podendo causar grandes prejuízos à água e ao solo.
Conforme a Figura 1 demonstra, para combater a crise de descarte de aparelhos será utilizado um sistema de doação de celulares. A primeira etapa é coletar o aparelho que será usado no experimento, para que chegue em boas condições na mão do usuário este passará por uma avaliação de software e hardware. Ao concluir todos os testes o telefone será doado, já com o programa instalado e pronto para uso da pessoa cadastrada no sistema. 
Figura 1. Fluxograma Doação de Aparelhos
3.2 Abordagem
A abordagem utilizada para a exposição do projeto é em forma de site, onde o cliente pode acessar livremente para buscar saber mais sobre a equipe, formas de contribuição, lugares de coleta, cursos e informações em geral. 
	Uma das vantagens da utilização da página é poder disponibilizar a doação de aparelhos para que o usuário possa contribuir com a ideia e se sentir incluído. Para que ficasse mais completa iniciou-se uma busca por cursos, assim a pessoa pode entender mais sobre a causa e sua importância. 
	Além da forma de expôr ao público, cada contribuidor foi responsável em buscar e ostentar conhecimento a respeito do tema. Para que esse método fosse mais eficaz, reuniões aos domingos eram sempre realizadas, assim informações eram trocadas semanalmente, as etapas puderam ser debatidas e sincronizadas. 
3.3 Procedimentos e Técnicas
Os procedimentos enquadram as metodologias utilizadas, ferramentas e quaisquer formas de organização que foram selecionadas para a criação do projeto. A partir desta leitura será possível entender e visualizar os prazos estipulados e estratégias para a entrega do produto.
As ferramentas escolhidas pelo grupo para auxiliar no projeto são focadas em facilitar a documentação e versionamento dos arquivos, organizar tarefas e funções, e por fim, reunir ideias e soluções da equipe.
Neste estudo foi adotado a metodologia Startup Garage Innovation, com adaptações para construção de uma plataforma de aspecto social. O fluxo utilizado nesta estratégia pode ser verificado na Figura 2.
 Figura 2. Fluxo de Ferramentas.
A etapa um se iniciou com uma reunião de brainstorm, nela se definiu ideias e caminhos possíveis a serem seguidos. Após escolher o tema a ser abordado foi desenvolvido um Canvas, onde foi detalhado o pilar do projeto, as restrições, o público-alvo, os diferenciais e as tarefas. Ao concluir os passos anteriores a construção de personas se constituiu, com aspectos e traços importantes aos projeto junto a jornada de usuário.
Na fase dois houve a construção de hipóteses, a partir delas que as resoluções seriam desenvolvidas futuramente. O backlog e textos rascunhos também foram escritos para guiar o projeto e corrigir erros já em fases iniciais. A equipe se prontificou a intensificar pesquisas e procurar embasamento em notícias, artigos e livros.
O estágio três pode ser resumido como a fase da criação, nele o layout do site começou a surgir junto a construção da identidade de todo o trabalho. A prototipação foi iniciada, e paralelo a ela os estudos de Linux, Android e Benchmarks do Linux. 
A etapa final se constitui na implementação do código em celulares legados, de forma adjacente a realização de testes de site e software foram realizadas. Para que a elaboração pudesse ser concluída criaram-se questionários de validação ao usuário, assim como novas versões a partir destes resultados.
3.3.1 Git e GitHub
Sistema open-source para controle de versão, o Git possibilita a criação do histórico de modificações no código e a administração do fluxo de outros desenvolvedores no mesmo projeto, resolvendo divergências nas alterações de arquivos ao mesmo tempo. 
Por outro lado, o GitHub é um serviço online que disponibiliza o armazenamento dos repositórios Git e auxilia na sincronização entre a equipe.
3.3.2 Sprints
Principal evento da metodologia Scrum, os Sprints facilitam a fragmentação de um projeto em etapas com o decorrer do tempo, permitindo uma entrega contínua das partes do projeto.
O uso de Sprints propõe reuniões diárias, declaração de metas e um fluxo de trabalho, transformando a agilidade da equipe de desenvolvimento adequada e moderna para qualquer tipo de produção ou projeto.
3.3.3 Kanban
Com o fluxo de trabalho gerado pelo Scrum e Sprints, o Kanban é o sistema ideal para auxiliar no gerenciamento das tarefas e gerar uma fluidez no trabalho do time.
Exigindo disciplina, o sistema Kanban acaba sendo útil também para uma estratégia de tarefas prioritárias, fazendo com que a equipe saiba diferenciar e entender qual é o foco do projeto e seus principais componentes. E por fim, decidir quais são as carências e necessidades atuais do produto.
O SCRUM foi a principal metodologia utilizada para a separação de tarefas e estruturação. O time foi distribuído como na Figura 3.
Figura 3. Papéis no SCRUM
O Scrum Master é a chave principal para a base da equipe, ele é o responsável por ajudar todos os outros membros de forma rotativa. Sendo o organizador e moderador dos encontros, também fará parte do seu trabalho definir as melhores datas e horários para estas reuniões. [Quantitative Single-cell Biology Lab 2020]
	O time de desenvolvimento foi escolhido e criado com a função de prototipar, codificar e construir o site de forma completa. Assim como também construíram a identidade do grupo, sua contribuição foi crucial para organização e apresentação da ideia ao usuário. 
	O time de Pesquisa e Documentação teve como tarefa cardinal a edificação de textos, como artigos, diagramas, fluxos e todo labor que envolvesse composição e redação. Para que isso fosse possível, as pesquisas e investigações se intensificaram com esses contribuidores, para que a documentação fosse realizada.
4. Desenvolvimento
Para a implementação dos conceitos previamente abordados e realização dos objetivos do projeto, foi criada uma série de instruções e protocolos para o preparo, instalação, execução e benchmark de aplicações compatíveis com o ambiente Linux em Android.
	Este processo foi separado em Configuração do Ambiente Linux, Configuração das Aplicações Suportadas e Avaliação de Desempenho, que serão descritos abaixo. Com o objetivo de facilitar a comunicação com o público alvo do projeto, também foi desenvolvido uma Plataforma Web com duas funções principais: a descrição dos processos de configurações de forma acessível e a criação de um canal de comunicação para possíveis doações de dispositivos previamente configurados.
4.1 Configuração do Ambiente Linux
Tendo em vista que o sistema operacional Android é desenvolvido com base no kernel Linux, uma utilização mais direta do Linux em dispositivos Android pode ser viabilizada de diferentes maneiras, masessas geralmente podem ser divididas em duas categorias: Simuladores de Terminal e Acesso Root.
	Visto que o processo de Root dos dispositivos Android por muitas vezes é complexo e pouco padronizado, e a fim de facilitar a configuração do ambiente Linux, foi utilizado o processo de PRoot, através do simulador de terminal “Termux”, para alcançar tal objetivo. O processo de configuração através do Termux tem como ponto de partida a instalação do aplicativo em si, e segue da maneira explicada no Apêndice A.
4.2 Avaliação de Desempenho
Com a intenção de garantir a gestão da qualidade dos dispositivos utilizados durante o desenvolvimento do projeto, foi criado um protocolo de testes, que a partir da avaliação do desempenho do dispositivo e de suas condições físicas, tem como produto final um Selo de Qualidade utilizado para categorizar as capacidades do aparelho.
	A avaliação final do dispositivo é composta de três resultados: Resultado de Performance (RP), Resultado de Compatibilidade (RC) e Resultado de Condições Físicas (RCF). A partir destes resultados, são gerados o Resultado Final (RF) e o Selo de Qualidade (SQ).
4.2.1 Resultado de Performance (RP)
O RP é a primeira análise efetuada no dispositivo, e consiste na execução de uma série de softwares de teste para avaliação de performance, gerando pontuações de valores numéricos maiores que zero. Para a garantia da fidelidade dos resultados, foi utilizado o UnixBench, que disponibiliza um grande conjunto de testes, e todos os testes foram feitos com os dispositivos conectados à uma fonte de alimentação, com 100% de bateria. Para sua instalação e execução, foram utilizados os passos apresentados no Apêndice B.
4.2.2 Resultado de Compatibilidade (RC)
Para garantir a viabilidade da utilização do dispositivo por um programador, foi analisada a compatibilidade com algumas ferramentas utilizadas no desenvolvimento de software. A escolha das ferramentas analisadas foi feita utilizando o questionário para programadores organizado pelo Stack Overflow (Stack Overflow. 2020).
	Através da análise das linguagens mais utilizadas por programadores profissionais, as linguagens Python, Java, C# e PHP foram escolhidas. Em seguida, através da análise das frameworks mais utilizadas por programadores profissionais, as frameworks Node.js e .NET Core foram escolhidas. Por último, através da análise dos bancos de dados mais utilizados por programadores profissionais, o banco de dados MySQL foi escolhido.
	Além das ferramentas de software citadas acima, também foi avaliada a compatibilidade com microcontroladores através da conexão serial USB com o dispositivo Android. A placa Arduino Uno R3, com microcontrolador ATmega328P, foi escolhida por ser uma das placas mais populares do mercado.
	Cada uma das aplicações citadas acima foram instaladas e executadas no ambiente Linux previamente configurados no Android, utilizando as instruções presentes nos Apêndices C-I, e baseado nestes processo cada ferramenta recebeu uma nota de compatibilidade entre 0 e 5, avaliando a experiência de instalação e utilização. A escala utilizada segue a definição apresentada na Tabela 1.
Tabela 1. Notas de Compatibilidade
	Nota de Compatibilidade
	Significado
	0
	Ferramenta Incompatível
	1
	Compatibilidade Baixa e/ou 
Instalação Difícil
	2
	-
	3
	Compatibilidade Média e/ou 
Instalação Moderada
	4
	-
	5
	Compatibilidade Alta e/ou 
Instalação Normal
	O resultado do cálculo do RC é um valor decimal entre 0 e 1, representando um resultado entre “Nenhuma Compatibilidade” e “Alta Compatibilidade”, respectivamente. Para seu cálculo, foi utilizada a compatibilidade média das aplicações testadas, a partir da soma das notas de compatibilidade de todas as aplicações testadas, dividido pela nota total máxima, como na Equação 1. Tendo em vista que Pontuação Máxima = 5 e Número de Aplicações = 7, a equação pode ser simplificada como na Equação 2.
 (1)
 (2)
4.2.3 Resultado de Condições Físicas (RCF)
Após os testes de performance e de compatibilidade, foram avaliadas as condições físicas dos aparelhos analisados, de forma a garantir que estes poderiam ser utilizados como ferramenta principal de trabalho por programadores. O objetivo desse teste é considerar as possíveis dificuldades que um usuário pode ter ao utilizar um dispositivo danificado, como a dificuldade de interação com o aparelho com uma tela danificada, ou impossibilidade de comunicação serial com o dispositivo caso a porta USB esteja danificada.
	Através dos dados coletados no questionário, apresentados no Apêndice M, os pesos apresentados na Tabela 2 foram atribuídos a alguns tipos de danos encontrados nos dispositivos, que atuam como fatores de penalidades caso presentes.
Tabela 2. Fatores de Penalidade do Resultado de Condições Físicas
	Tipo de Dano
	Fator de Penalidade
	Touchscreen
	0,20
	Display/Tela
	0,15
	Botão de ligar
	0,15
	Entrada USB/Carregador
	0,15
	Outros botões
	0,10
	Bateria (baixa capacidade)
	0,10
	Saídas de áudio
	0,05
	Entrada de áudio
	0,05
	Câmera
	0,05
	Total
	1,00
4.2.4 Resultado Final (RF)
O RF tem como função representar as qualidades do dispositivo através de uma pontuação numérica, utilizando como base os dados coletados anteriormente. O RP é utilizado como entrada principal no cálculo, representando a nota máxima possível para a avaliação do dispositivo. Já o RC é utilizado como fator de penalidade caso o dispositivo tenha baixa compatibilidade com as aplicações testadas. Por último, o RCF também é usado como fator de penalidade, porém focado nas condições físicas do aparelho. O cálculo do RF é feito como apresentado na Equação 3.
 (3)
4.2.5 Selo de Qualidade (SQ)
O Selo de Qualidade representa o produto final dos resultados obtidos anteriormente através dos RP, RC e RCF, porém diferentemente do Resultado Final, o SQ representa uma classificação do dispositivo. Através do SQ, é possível representar as capacidades de um dispositivo de forma clara e padronizada, garantindo o controle de qualidade dos aparelhos testados.
	Para definição da relação entre o Resultado Final (RF) e o Selo de Qualidade (SQ) foi utilizado um Raspberry Pi 3 Model B e Ubuntu Core 18, com a pontuação base de 319,78, obtida a partir da média de cinco testes de performance, apresentados no Apêndice J. Cada nível representa a relação entre a pontuação base e o dispositivo Android avaliado, e este pode ser classificado entre 6 níveis de qualidade, como na Tabela 3.
Tabela 3. Relação entre Resultado Final e Selo de Qualidade
	Selo de Qualidade
	Resultado Final
	Relação Pontuação Base
	Qualidade 0
	RF ≥ 0
	-
	Qualidade 1
	RF ≥ 20
	1:16
	Qualidade 2
	RF ≥ 40
	1:8
	Qualidade 3
	RF ≥ 80
	1:4
	Qualidade 4
	RF ≥ 160
	1:2
	Qualidade 5
	RF ≥ 320
	1:1
	Para fins didáticos, no Apêndice K foram simulados alguns testes com valores fictícios, com o objetivo de esclarecer o protocolo de avaliação de desempenho explicado previamente.
4.3 Fluxo de Utilização
Para utilização do dispositivo móvel como alternativa viável de ambiente para programação, foi utilizado um Hub OTG para conexão de teclado e mouse, possibilitando uma experiência análoga à utilização de um computador desktop. Já para a edição de códigos foram utilizados editores de texto de linhas de comando, como vim e nano, e para testar as aplicações web desenvolvidas foi utilizado o navegador nativo do próprio sistema Android, visto que a aplicação em execução no Linux pode ser acessada no Android através do endereço 127.0.0.1 (localhost).
4.4 Plataforma Web
Para facilitar a apresentação do projeto e comunicação com o público alvo, foi criada uma plataforma web responsável por organizar e centralizar as instruções de instalação e teste, os resultados obtidos e os canais de comunicação. O website está disponível em http://unicornforce.ddns.net:8081, e os fluxos principais da plataforma são: Instruções de Instalação, Protocolos de Teste, Tabela de Resultados, Indicação de Cursos e Tutoriais, Cadastro de Doadores e Beneficiários.
	Para o desenvolvimento da plataforma web foram utilizadasalgumas ferramentas que são consolidadas no mercado com a finalidade de aumentar a produtividade, qualidade e segurança do projeto. Ao abstrair o máximo da realidade atual do mercado de trabalho e tornar a aplicação escalável e de fácil manutenção as tecnologias usadas foram Laravel 5.8 um poderoso e famoso framework PHP web, jQuery 3.3, um framework javascript que torna a aplicação mais interativa e dinâmica, e finalmente para controle de dados foi usado MySql na versão 8.0, que é um banco de dados open-source relacional que proporciona alta escalabilidade e fácil implementação.
4.5 Aplicativo AndroidUsbServer
A conexão do dispositivo móvel com o MCU testado (Arduino Uno R3) foi viabilizada através da conexão via USB. Para facilitar o tráfego de dados foi criado um aplicativo para Android utilizando .NET Xamarin, cuja principal função é interceptar os dados da comunicação USB e fornecê-los através de um servidor WebSocket gerenciado pelo aplicativo [Pessia et al. 2021]. Durante o desenvolvimento do aplicativo os projetos “usb-serial-for-android” [mik3y [s.d.]] e “UsbSerialForAndroid” [anotherlab [s.d.]] foram utilizados como referência.
	A principal motivação para a criação deste aplicativo foi devido a dificuldade da comunicação entre o ambiente Linux configurado no Android e o MCU, visto que o acesso aos dados da porta USB pelo ambiente Linux é altamente limitado por motivos de segurança pelo Android.
	O fluxo de funcionamento do aplicativo é apresentado na Figura 2. A comunicação se inicia com o MCU em uma das pontas, conectado através da porta USB com o dispositivo Android. Em seguida, o AndroidUsbServer, que está sendo executado no aparelho, lê os dados vindos da porta USB e os disponibiliza através do servidor WebSocket, além de receber requisições de aplicações cliente conectadas no servidor, e enviar o conteúdo dessas requisições para o MCU também via porta USB, atuando como um intermediário entre o MCU e a aplicação no Linux.
Figura 4. Fluxo de funcionamento do AndroidUsbServer
5. Análise de Resultados
5.1 Benchmark
Utilizando os protocolos de instalação (Seção 4.1) e de avaliação de desempenho (Seção 4.2) apresentados anteriormente, foram executados testes nos dispositivos Motorola Moto E2, Samsung Galaxy Ace 3, LG X Power e Motorola Moto G8 Power, e os resultados foram disponibilizados no Apêndice L. Na Figura 5 os resultados do LG X Power são apresentados como exemplo.
Figura 5. Resultado dos testes no LG X Power
	Os resultados deixam evidente a importância da performance do hardware do aparelho para uma boa pontuação, dado que também está indiretamente relacionado com a data de lançamento do dispositivo. A condição física do aparelho também se demonstra um fator relevante, já que pode dificultar ou até mesmo impossibilitar a utilização do aparelho. Por último, o resultado de compatibilidade parece ser o valor menos variável entre os diferentes dispositivos, possivelmente pois após a instalação bem sucedida do ambiente Linux, as aplicações tendem a se comportar de forma padronizada.
	Um dado interessante foi a pontuação superior do Galaxy Ace 3 em relação ao Moto E2, visto que é um dispositivo mais antigo. Uma explicação possível é de que para os celulares que foram utilizados por alguns anos outras variáveis mais complexas impactam a performance do aparelho, como o cuidado do usuário com o dispositivo ou até mesmo a frequência de uso do aparelho.
5.2 Experiência de Usuário
Para obtenção dos fatores de penalidade utilizados no Resultado de Condições Físicas (Seção 4.2.3), programadores foram questionados através de um formulário, e estes classificaram os tipos de danos entre 5 níveis: Insignificante, Baixo, Moderado, Alto e Severo. No total, 27 programadores responderam o questionário, e a partir dos resultados obtidos foi possível distribuir os fatores de penalidade entre os tipos de dados levantados. O questionário e os resultados detalhados foram disponibilizados no Apêndice M, e na Figura 6 é apresentado o resultado em forma gráfica.
Figura 6. Resultado do questionário sobre o impacto dos tipos de danos
6. Conclusões
Com os resultados obtidos, é possível afirmar que a utilização de dispositivos móveis como ferramenta para programação é uma solução viável, levando em conta que após a instalação e configuração do ambiente Linux no Android o sistema se comporta de forma análoga à um computador desktop ou notebook.
	Como melhorias futuras há a viabilização do uso de interfaces gráficas no ambiente Linux, melhorias de UX/UI no aplicativo AndroidUsbServer, testes de utilização do Android com dispositivos Raspberry Pi, e implementação da solução em sistemas Android anteriores à versão 5.
	Através da utilização dos protocolos de avaliação de desempenho, é possível classificar os dispositivos de acordo com sua performance e usabilidade. Essa informação é de grande utilidade visto que facilita a análise da viabilidade do uso do dispositivo para as tarefas esperadas. Ainda, a separação dos dispositivos em diferentes níveis do Selo de Qualidade fornece a possibilidade de ordenação entre diferentes aparelhos, facilitando o processo de obtenção e doação dos mesmos.
	A partir da análise dos dados sobre os problemas crescentes do descarte de lixo eletrônico, também fica evidente a importância do aspecto da reutilização e da Metareciclagem referenciados pelo projeto. Nesse sentido, a reutilização dos dispositivos descartados pode atuar em conjunto com outras iniciativas que visam a diminuição dos efeitos dos lixos eletrônicos no meio ambiente.
	Desta forma, a reutilização dos dispositivos móveis se mostra uma solução atuante nos meios de sustentabilidade, empregabilidade para população de baixa renda e inserção de profissionais no mercado de Tecnologia da Informação, fornecendo uma ferramenta de trabalho a partir de equipamentos que previamente eram vistos como sem utilidade.
Referências
Brasscom (São Paulo). Formação Educacional e Empregabilidade em TIC. 2019. Disponível em: https://brasscom.org.br/wp-content/uploads/2019/09/BRI2-2019-010-P02-Forma%C3%A7%C3%A3o-Educacional-e-Empregabilidade-em-TIC-v83.pdf. Acesso em: 23 maio 2021.
Ercan, Mine; Maldodin, Jens; Bergmark, Pernilla; Kimfalk, Emma; Nilsson, Ellinor. Life Cycle Assessment of a Smartphone. 2016. Disponível em: https://www.atlantis-press.com/proceedings/ict4s-16/25860375. Acesso em: 13 maio 2021.
Morais, Bruna. OBSOLESCÊNCIA PROGRAMADA: O IMPACTO NO COMPORTAMENTO DO CONSUMIDOR DE SMARTPHONES. 2020. Disponível em: https://repositorio.pucgoias.edu.br/jspui/handle/123456789/324. Acesso em: 05 maio 2021.
Magalhães, Regina; Vendramini, Annelise. OS IMPACTOS DA QUARTA REVOLUÇÃO INDUSTRIAL. 2018. Disponível em: http://bibliotecadigital.fgv.br/ojs/index.php/gvexecutivo/article/view/74093/71080. Acesso em: 20 abr. 2021.
Malta, Tiago. Novas Percepções Para os Resíduos Eletrônicos. 2. ed. [S.L.]: [S.N.], 2019. 14 p.
Jardim, Elizabeth. FROM SMART TO SENSELESS: The Global Impact of 10 Years of Smartphones. 2017. Disponível em: https://www.greenpeace.org/usa/wp-content/uploads/2017/03/FINAL-10YearsSmartphones-Report-Design-230217-Digital.pdf. Acesso em: 05 abr. 2021.
Forti, Vanessa; Baldé, Cornelis Peter; Kuehr, Ruediger; Bel, Garam. The Global E-waste Monitor 2020. 2020. Disponível em: http://ewastemonitor.info/wp-content/uploads/2020/12/GEM_2020_def_dec_2020-1.pdf. Acesso em: 06 abr. 2021.
Oliveira, Uanderson Rébula de. Logística reversa de resíduos de eletroeletrônicos e a sustentabilidade ambiental. [S.L.]: Saraiva, 2017.
Welle, Deutsche. Montanha de lixo eletrônico não para de crescer no mundo. 2020. Disponível em: https://g1.globo.com/mundo/noticia/2020/07/05/montanha-de-lixo-eletronico-nao-para-de-crescer-no-mundo.ghtml. Acesso em: 15 maio 2021.
Tanauea, Ana Claudia Borlina; Bezerra, Deivid Mendes; Cavalheiro, Luana; Pisano, Lilian Cristiane. Lixo Eletrônico: Agravos a Saúde e ao Meio Ambiente. 2015. Disponível em: https://www.redalyc.org/pdf/260/26042169006.pdf. Acesso em: 07 maio 2021.
Navarro, J. G.. Market share of mobile operating systemsin Brazil from January 2019 to March 2021. 2021. Disponível em: https://www.statista.com/statistics/262167/market-share-held-by-mobile-operating-systems-in-brazil/. Acesso em: 07 maio 2021.
Faustino, Gleicy Kellen dos Santos; Calazans, Hallana Keury Nunes de Sousa; Lima, Welton Dias de. Android e a influência do Sistema Operacional Linux. 2017. Disponível em: http://scholar.google.com.br/scholar_url?url=http://revista.faculdadeprojecao.edu.br/index.php/Projecao4/article/download/829/728&hl=pt-BR&sa=X&ei=xsOqYOOUIsPtmQH3_qPYDg&scisig=AAGBfm3flAuIMq3uBNlPSd_i9Zx3RU_mqA&nossl=1&oi=scholarr. Acesso em: 16 maio 2021.
Singh, Dilip; Singh, Ankit Kumar; Sharma, Shabnam; Prasad, Chandan. SPA: A Smart Packet Analyzer for Network Traffic Analysis on Smartphones. 2018. Disponível em: https://www.researchgate.net/profile/Shabnam-Sharma-2/publication/329717063_SPA_A_Smart_Packet_Analyzer_for_Network_Traffic_Analysis_on_Smartphones/links/5ef984ac299bf18816eff49a/SPA-A-Smart-Packet-Analyzer-for-Network-Traffic-Analysis-on-Smartphones.pdf. Acesso em: 20 maio 2021.
Ulloa, Luis Martinez. Como controlar um telefone ou tablet Android usando PHP com app Termux. 2017. Disponível em: https://imasters.com.br/android/como-controlar-um-telefone-ou-tablet-android-usando-php-com-app-termux. Acesso em: 23 maio 2021.
Vincent, Cedric. PRoot. [s.d.]. Disponível em: https://proot-me.github.io. Acesso em: 14 maio 2021.
Rausty, S. D.. Termux PRoot. [s.d.]. Disponível em: https://sdrausty.github.io/TermuxPRoot/docs/PRoot.html. Acesso em: 21 maio 2021.
Ciferri, Ricardo Rodrigues. Um benchmark voltado à análise de desempenho de sistemas de informações geográficas. 1995. Disponível em: https://core.ac.uk/download/pdf/296816834.pdf. Acesso em: 06 maio 2021.
Potrich, J.. Aprimoramento do escalonador Credit. 2008. Disponível em: https://revistaseletronicas.pucrs.br/index.php/graduacao/article/view/2858. Acesso em: 10 maio 2021.
Lucas, Kelly. Byte-unixbench. [s.d.]. Disponível em: https://code.google.com/archive/p/byte-unixbench/. Acesso em: 11 maio 2021.
Vieira, Thiago Cesar. Testando a performance de seu sistema com o BYTE UNIX Benchmarks. 2010. Disponível em: http://www.dicas-l.com.br/arquivo/testando_a_performance_de_seu_sistema_com_o_byte_unix_benchmarks.php#.YKbk3rdKjIU. Acesso em: 14 maio 2021.
Santos, Jair Vargas dos; Souza, Marco Antônio Silveira de; Anderle, Daniel Fernando. Controlando Dispositivos em Tempo Real Através do WebSocket. 2015. Disponível em: http://redes.sombrio.ifc.edu.br/wp-content/uploads/sites/7/2015/12/Livro-Tecnologia-e-Redes-de-Computadores-2015.pdf. Acesso em: 08 maio 2021.
Rodriguez, Ricardo Yauri. Sistema de Monitoreo remoto basado en IOT para el monitoreo de señales electrocardiográficas mediante un módulo sensor utilizando websockets. 2016. Disponível em: http://repositorio.uigv.edu.pe/bitstream/handle/20.500.11818/617/COMTEL%202016%20-%20Paper11.pdf?sequence=1&isAllowed=y. Acesso em: 13 maio 2021.
Braga, Newton C. O básico sobre os microcontroladores. 2015. Disponível em: https://www.newtoncbraga.com.br/index.php/eletronica/52-artigos-diversos/13263-o-basico-sobre-os-microcontroladoresparte-1-mic139. Acesso em: 15 maio 2021.
Cardoso, Matheus. O Que É Um Microcontrolador? 2020. Disponível em: https://edu.ieee.org/br-ufcgras/o-que-e-um-microcontrolador/. Acesso em: 17 maio 2021.
Stevan Junior, Sergio Luiz; Silva, Rodrigo Adamshuk. Automação e Instrumentação Industrial com Arduino. 2018. Disponível em: Não tem. Acesso em: 12 maio 2021.
Fortunato, Fernando Aparecido Pacheco da Silva. Automação com Arduíno: um levantamento das aplicações. 2016. Disponível em: http://www.setii.net/2016/anais-setii-2016-v01.pdf. Acesso em: 11 maio 2021.
Stack Overflow (org.). 2020 Developer Survey. Disponível em: https://insights.stackoverflow.com/survey/2020. Acesso em: 01 maio 2021.
Pessia, Thiago V.; Albanese, Yasmin K.; Neto, Manoel M.; Cinque, Carolina de F.; Lira, Luiz F. F. de; Silva, Nancielly N. G.; Santana, André L. M.. AndroidUsbServer. 2021. Disponível em: https://github.com/UAM-TCC/AndroidUsbServer/releases/tag/v1.0.0. Acesso em: 23 maio 2021.
mik3y. usb-serial-for-android. [s.d.]. Disponível em: https://github.com/mik3y/usb-serial-for-android. Acesso em: 26 abr. 2021.
anotherlab. UsbSerialForAndroid. [s.d.]. Disponível em: https://github.com/anotherlab/UsbSerialForAndroid. Acesso em: 26 abr. 2021.
Quantitative Single-cell Biology Lab (Leiden University). Scrum for science: A framework for collective research. 2020. Disponível em: http://crosstalk.cell.com/blog/scrum-for-science-a-framework-for-collective-research. Acesso em: 30 abr. 2021.
Almeida, R. L.; Calvão, A. M.; Rose, D. E.; Ribeiro, D. S.; D’Almeida, M. H. B.; Lima, R. L. O Lixo Computacional na Sociedade Contemporânea. In: I ENINED - Encontro Nacional de Informática e Educação, 2009, Cascavel. Anais do Encontro Nacional de Informática e Educação, v.1, p. 262-269, 2009. Acesso em: 29 abr. 2021.
BRASIL. IBGE. PNAD Contínua TIC 2018: Internet chega a 79,1% dos domicílios do país. 2018. Disponível em: https://agenciadenoticias.ibge.gov.br/agencia-sala-de-imprensa/2013-agencia-de-noticias/releases/27515-pnad-continua-tic-2018-internet-chega-a-79-1-dos-domicilios-do-pais. Acesso em: 29 abr. 2021.
APÊNDICE A - Instalação do Ubuntu no Android
Vídeo demonstrativo: http://unicornforce.ddns.net:8080/api/android-linux.mp4
1. Instalação do Termux
· GitHub: https://github.com/termux/termux-app/releases
· F-Droid: https://f-droid.org/en/packages/com.termux/
· Play Store: https://play.google.com/store/apps/details?id=com.termux
2. Atualização dos pacotes do Termux via APT
· apt update && apt upgrade -y
3. Instalação das dependências
· apt install proot wget -y
4. Criação do diretório de instalação
· mkdir ~/ubuntu && cd ~/ubuntu
5. Download do script de configuração
· wget http://unicornforce.ddns.net:8080/api/ubuntu-install.sh -O ubuntu-install.sh
6. Execução do script de configuração
· bash ubuntu-install.sh
7. Login no Ubuntu
· bash ~/ubuntu/ubuntu-login.sh
8. Atualização dos pacotes do Ubuntu via APT
· apt update && apt upgrade -y
APÊNDICE B - Instruções para Benchmark
Instruções
1. Atualização dos pacotes do Ubuntu via APT
· apt update && apt upgrade -y
2. Instalação das dependências
· apt install -y gcc libc6-dev libx11-dev libgl1-mesa-dev libxext-dev perl perl-modules make git
3. Criação do diretório de instalação
· mkdir ~/unix-bench && cd ~/unix-bench
4. Download do UnixBench
· git clone https://github.com/kdlucas/byte-unixbench.git
5. Execução dos UnixBench
· cd ~/unix-bench/byte-unixbench/UnixBench && ./Run
6. Após a execução de todos os testes do UnixBench, serão gerados dois resultados principais, o resultado de Single Task, que avalia a performance de uma CPU, e de Multiple Tasks, que avalia a performance de todas as CPUs
7. Para obtenção do RP, foi utilizada uma média aritmética simples:
· RP = (Single Task Score + Multiple Tasks Score) / 2
Exemplo de Resultado
Single Task:
Benchmark Run: Thu Apr 01 2021 19:43:06 - 20:11:42
8 CPUs in system; running 1 parallel copy of tests
System Benchmarks Index Score 152.0
Multiple Tasks:
Benchmark Run: Thu Apr 01 2021 20:11:42 - 20:40:31
8 CPUs in system; running 8 parallel copies of tests
System Benchmarks Index Score 414.2
RP = (152 + 414,2) / 2 = 283,1
APÊNDICE C - Configuração do Node.js
Instalação
apt install nodejs -y
apt install npm --no-install-recommends -y
Teste
node -v # versão do Node.js
npm -v # versão do NPM
echo -e "
const express = require('express');
const app = express();
app.get('/', (req, res) => res.send('Hello, World!'));
app.listen(8080, '0.0.0.0', () =>
 console.log( 'Serviço acessível em localhost:8080'));
" > index.js
npm install express
node index.js
# Acessar localhost:8080 no Chrome do Android
APÊNDICE D - Configuração do Python
Instalação
apt install python3 python3-pip python-dev -y
pip3 install --upgrade setuptools
pip3 install --upgrade cython
Teste
python3 -V # versão do Python
echo -e "
from numpy import random
num = random.randint(0,10)
print(num)
" > main.py
pip3 installnumpy
python3 main.py
APÊNDICE E - Configuração do C# (.NET Core)
Instalação
# .NET SDK URL: https://dotnetcli.blob.core.windows.net/dotnet/Sdk/{VERSION}/dotnet-sdk-{VERSION}-linux-{ARCH}.tar.gz
# ARCH = arm64, arm (arm32) # uname -m
apt install wget -y
wget https://dotnetcli.blob.core.windows.net/dotnet/Sdk/3.1.407/dotnet-sdk-3.1.407-linux-arm.tar.gz -O dotnet.tar.gz
mkdir -p /usr/share/dotnet
tar -zxf dotnet.tar.gz -C /usr/share/dotnet
ln -s /usr/share/dotnet/dotnet /usr/bin/dotnet
Teste
dotnet --version # versão do .NET Core
dotnet new console -o app
cd app
dotnet run
APÊNDICE F - Configuração do Java
Instalação
apt install default-jre default-jdk maven -y
Teste
java -version # versão do Java
javac -version # versão do compilador Java
mvn -version # versão do Maven
mkdir -p src/main/java/com/coveros/demo/helloworld
echo -e '
package com.project.example.helloworld;
public class HelloWorld {
 public static void main(final String[] args) {
 System.out.println("Hello, World!");
 }
}
' > src/main/java/com/coveros/demo/helloworld/HelloWorld.java
echo -e '
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd">
 <modelVersion>4.0.0</modelVersion>
 <groupId>com.project.example</groupId>
 <artifactId>helloworld</artifactId>
 <version>1.0</version>
 <packaging>jar</packaging>
 <name>Hello World</name>
 <description>Hello World</description>
 <inceptionYear>2021</inceptionYear>
 <properties>
 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
 <jdk.version>1.8</jdk.version>
 <maven.compiler.plugin.version>3.8.1</maven.compiler.plugin.version>
 </properties>
 <build>
 <plugins>
 <plugin>
 <groupId>org.apache.maven.plugins</groupId>
 <artifactId>maven-compiler-plugin</artifactId>
 <version>${maven.compiler.plugin.version}</version>
 <configuration>
 <source>${jdk.version}</source>
 <target>${jdk.version}</target>
 </configuration>
 </plugin>
 </plugins>
 </build>
</project>
' > pom.xml
mvn clean package
java -cp target/helloworld-1.0.jar com.project.example.helloworld.HelloWorld
APÊNDICE G - Configuração do PHP
Instalação
apt install php libapache2-mod-php php-cli php-fpm php-json php-common php-mysql php-zip php-gd php-mbstring php-curl php-xml php-pear php-bcmath php-cgi -y
sed -i 's/Listen 80/Listen 8080/' /etc/apache2/ports.conf # change port
service apache2 start
Teste
php -v # versão do PHP
echo -e '
<?php echo "Hello, World!<br>PHP version: " . phpversion(); ?>
' > /var/www/html/hello.php
# Acessar localhost:8080/hello.php no Chrome do Android
APÊNDICE H - Configuração do MySQL
Instalação
apt install mysql-server -y
# nano /etc/mysql/debian.cnf
service mysql start
mysql_secure_installation
Teste
mysql -V # versão do MySql
mysql -u root -p
APÊNDICE I - Configuração do Arduino
Vídeo demonstrativo: http://unicornforce.ddns.net:8080/api/android-usb-server.mp4
Instalação
1. Baixar o aplicativo ArduinoDroid 
· https://play.google.com/store/apps/details?id=name.antonsmirnov.android.arduinodroid2
2. Baixar o aplicativo AndroidUsbServer
· https://github.com/UAM-TCC/AndroidUsbServer/releases/tag/v1.0.0
Conectar o Arduino no smartphone com um cabo OTG
3. No AndroidUsbServer, selecionar a porta do Arduino e iniciar o servidor proxy WebSocket
· Tutorial: http://unicornforce.ddns.net:8080/api/android-usb-server.mp4
4. Enviar comandos ao Arduino através de um cliente WebSocket
*Obs 1: Alguns MCUs precisam de fonte de energia externa (e.g. bateria)
*Obs 2: Alguns MCUs podem não ser reconhecidos pelo Android
Teste (Arduino)
#define PIN_OUT 0
void setup() {
 Serial.begin(9600);
 pinMode(PIN_OUT, OUTPUT);
 digitalWrite(PIN_OUT, HIGH);
}
 
void loop() {
 if (Serial.available()) {
 String data = Serial.readString();
 if (data == "ON") digitalWrite(PIN_OUT, HIGH);
 else if (data == "OFF") digitalWrite(PIN_OUT, LOW);
 Serial.println("OK");
 }
}
Teste (NodeJS Client)
// Blink for 10 seconds
const WebSocket = require('ws');
const client = new WebSocket('ws://localhost:8000');
let state = false;
const changeState = () => { state = !state; return state ? 'ON' : 'OFF' }
client.on('open', () => setInterval(() => client.send(changeState()), 1000));
client.on('message', data => console.log('>', data));
client.on('close', (code, reason) => console.log(code, reason));
client.on('error', err => console.error(err));
setTimeout(() => client.close(), 10000);
APÊNDICE J - Resultados do Benchmark do Raspberry Pi 3 Model B
	Número do Teste
	Pontuação Single Task
	Pontuação Multiple Tasks
	1
	194,1
	428,2
	2
	193,2
	451,1
	3
	196,4
	451,1
	4
	194,2
	448,0
	5
	193,8
	447,7
A partir das pontuações acima foi gerada a seguinte média:
Média = ((194,1 + 428,2) + (193,2 + 451,1) + (196,4 + 451,1) + (194,2 + 448,0) + (193,8 + 447,7)) / 10 = 319,78
Em seguida, a média foi arredondada para facilitar a utilização, gerando o valor 320.
APÊNDICE K - Exemplo de Avaliação de Desempenho
	Informações do Dispositivo
	Fabricante
	ACME
	Modelo
	XPTO Plus
	Data de Lançamento
	2018
	Resultado de Performance
	Tipo
	Pontuação
	Single Task
	100
	Multiple Tasks
	200
	RP
	(100 + 200) / 2 = 150
	Resultado de Compatibilidade
	Aplicação
	Pontuação
	Node.js
	5
	Python
	2
	C# (.NET Core)
	3
	Java
	1
	PHP
	4
	MySQL
	0
	Arduino
	4
	RC
	19 / 35
	Resultado de Condições Físicas
	Tipo de Dano
	Fator de Penalidade
	Display/Tela
	0,1
	Touchscreen
	0,15
	Bateria (baixa capacidade)
	0,1
	RCF
	0,25
	Resultado Final e Selo de Qualidade
	Tipo
	Resultado
	RP
	150
	RC
	19 / 35
	RCF
	0,25
	RF
	150 * (19 / 35) * (1 - 0,25) = 61
	SQ
	Qualidade 2
APÊNDICE L - Resultados do Benchmark dos Smartphones
	Fabricante
	Motorola
	Samsung
	LG
	Motorola
	Modelo
	Moto E2 (XT1506)
	Galaxy Ace 3 (GT-S7275R)
	LG X Power (K220dsF)
	Moto G8 Power (XT2041-1)
	Data de Lançamento (mm/aa)
	02/15
	06/13
	08/16
	04/20
	RP (Single)
	33,4
	49,8
	94,4
	152
	RP (Multiple)
	44,8
	84,6
	152,2
	414,2
	RP
	39,1
	67,2
	123,3
	283,1
	RC (NodeJS)
	5
	5
	5
	5
	RC (Python)
	5
	5
	5
	5
	RC (C# .NET Core)
	5
	5
	5
	5
	RC (Java)
	5
	5
	5
	5
	RC (PHP)
	5
	5
	5
	5
	RC (MySQL)
	5
	5
	5
	5
	RC (Arduino)
	3
	3
	5
	5
	RC
	0,94
	0,94
	1,00
	1,00
	RCF (Touchscreen)
	0
	0
	0.2
	0
	RCF (Display/Tela)
	0
	0,15
	0
	0
	RCF (Botão de ligar)
	0
	0,15
	0
	0
	RCF (Entrada USB)
	0
	0
	0
	0
	RCF (Outros botões)
	0
	0
	0
	0
	RCF (Bateria)
	0,1
	0
	0
	0
	RCF (Saídas de áudio)
	0
	0
	0
	0
	RCF (Entrada de áudio)
	0
	0
	0
	0
	RCF (Câmera)
	0
	0
	0
	0
	RCF
	0,1
	0,3
	0,2
	0
	RF
	33,08
	44,22
	98,64
	283,10
	SQ
	1
	2
	3
	4
APÊNDICE M - Fatores de Penalidade para o Resultados de Condições Físicas baseado nas respostas do formulário
Para criação dos Fatores de Penalidade utilizados no Resultado de Condições Físicas, foi criado um questionário focado para programadores no qual estes deveriam indicar o nível de impacto de cada um dos tipos de dano na utilização de um dispositivo móvel como ferramenta para programação. No total, 27 programadores responderam o questionário, e abaixo seguem os resultados.
Resultado dos votos dos participantes:
	Tipo de Dano
	Insignificante
	Baixo
	Moderado
	Alto
	Severo
	Display/Tela danificada
	0
	0
	7
	11
	9
	Touchscreen danificado
	0
	0
	2
	2
	23
	Botão de ligar danificado
	0
	4
	6
	6
	11
	Outros botões danificados
	2
	3
	13
	7
	2
	Entrada USB/Carregador danificada
	0
	1
	5
	9
	12
	Bateria com baixa capacidade
	3
	1
	8
	10
	5
	Saídas de áudio danificadas
	8
	9
	7
	2
	1
	Entrada de áudio danificada
	8
	14
	3
	1
	1
	Câmera danificada
	15
	5
	6
	0
	1
As seguintes pontuações foram atribuídas para cada nível:
	Pontuação Base
	Insignificante
	0
	Baixo
	1
	Moderado
	2
	Alto
	3
	Severo
	4
Apartir dos dados acima, foi gerado o resultado da análise do votos:
	Tipo de Dano
	Pontuação
	Percentual
	Fator de Penalidade
	Display/Tela danificada
	83
	14.95%
	15.00%
	Touchscreen danificado
	102
	18.38%
	20.00%
	Botão de ligar danificado
	78
	14.05%
	15.00%
	Outros botões danificados
	58
	10.45%
	10.00%
	Entrada USB/Carregador danificada
	86
	15.50%
	15.00%
	Bateria com baixa capacidade
	67
	12.07%
	10.00%
	Saídas de áudio danificadas
	33
	5.95%
	5.00%
	Entrada de áudio danificada
	27
	4.86%
	5.00%
	Câmera danificada
	21
	3.78%
	5.00%
	Total
	555
	100.00%
	100.00%
Para o cálculo do “Fator de Penalidade”, o valor “Percentual” foi arredondado para o múltiplo de 5 mais próximo, para facilitar os cálculos seguintes.
Proceedings of the XII SIBGRAPI (October 1999) 101-104
Proceedings of the XII SIBGRAPI (October 1999)

Mais conteúdos dessa disciplina