Pós-Graduação em Ciência da Computação – UFPE
Defesa de Tese de Doutorado Nº 517


Aluno: Wellington de Oliveira Júnior
Orientador: Prof. Fernando José Castor de Lima Filho
Co-orientador: Prof.  João Paulo Fernandes (Universidade do Porto/ Engenharia Informática)
Título: Leveraging Design Diversity to Build Energy-Efficient Applications
Data: 31/05/2021
Hora/Local: 13h – Virtual – Interessados em assistir entrar em contato com o aluno)
Banca Examinadora:

Prof. Leopoldo Motta Teixeira (UFPE / Centro de Informática)
Prof. Kiev Santos da Gama (UFPE / Centro de Informática)
Prof. Fernando Magno Quintão Pereira (UFMG / Departamento de Informática)
Prof. Luis Miranda da Cruz (Universidade Técnica de Delft /  Department of Software Technology)
Prof. Rui Pereira (Instituto Politécnico do Porto / Departamento de Engenharia Informática)


RESUMO:

Desenvolver um aplicativo com o consumo de energia em mente pode ser difícil para um desenvolvedor.
Primeiro, porque os desenvolvedores podem não estar familiarizados com as técnicas para reduzir o consumo de energia.
Em segundo lugar, porque pode não estar claro quando e onde essas técnicas podem ser aplicadas, uma vez que aplicativos com características diferentes (por exemplo, intensas no uso de CPU, uso intenso da rede ou de GPS, etc.) requerem soluções diferentes.
Terceiro, porque as informações sobre eficiência energética estão espalhadas por várias fontes, dificultando a tomada de decisões por parte dos desenvolvedores.
Conforme o uso de aparelhos móveis se intensificou, o uso eficiente de energia tornou-se fundamental para reduzir o problema de descarga rápida de dispositivos alimentados por bateria.
Nesta tese, apresentamos o conceito de energy design diversity e como ele pode ser usado por desenvolvedores não especialistas para construir aplicativos energeticamente otimizados.
O raciocínio é que, para muitas questões de desenvolvimento de software, existem várias soluções já disponíveis, implementadas de formas diversas, com características diferentes em termos de consumo de energia.
Nosso objetivo é ajudar os desenvolvedores a produzir código com maior eficiência energética sem um aumento significativo na complexidade do código.
Para atingir nosso objetivo, examinamos dois aspectos diferentes que impactam o consumo de energia de sistemas de software: abordagens de desenvolvimento e coleções em Java.
Esses aspectos foram escolhidos porque podem impactar potencialmente uma ampla gama de aplicações e porque trabalhos anteriores mostraram que eles têm um efeito não desprezível no consumo de energia.

Nossos resultados ao analisar as diferentes abordagens de desenvolvimento mostram que o uso de abordagens híbridas para otimizar trechos de uso intensivo de CPU para seu código pode resultar em um aumento na eficiência energética.
Para comparar as diferentes abordagens de desenvolvimento (ou seja, Java, JavaScript e C/C++), realizamos experimentos empíricos em 33 benchmarks diferentes e 3 aplicativos em 5 dispositivos diferentes.
Mesmo com pequenas alterações (menos de 300 linhas de código), as modificações feitas usando JavaScript ou C ++ ao invés de Java podem reduzir significativamente o consumo de energia.
Com relação às coleções Java, propomos uma abordagem para o desenvolvimento energeticamente consciente para ajudar os desenvolvedores não especialistas.
Usando essa abordagem, implementamos nossa ferramenta de economia de energia, o CT+, usando perfis de energia (ou seja, um conjunto de valores numéricos que representam o custo de energia de cada coleção) para comparar as diferentes implementações de coleções.
Em 7 dispositivos, foram feitas alterações 2295, alcançando uma redução de até 16,34% no consumo de energia, geralmente alterando uma única linha de código.
Além das próprias implementações das coleções, os resultados apontam que outros fatores podem influenciar fortemente as otimizações de energia das coleções, tais como: carga de trabalho, dispositivo, ambiente de desenvolvimento, perfil de energia e idade da bateria.
Também é relevante apontar que algumas das implementações mais comumente usadas (ArrayList, Hashtable, e HashMap) podem frequentemente ser substituídas por versões mais energeticamente eficientes, geralmente de fontes alternativas ao Java Collections Framework.

Palavras-chave: Android. Consumo de energia. Análise de desempenho. Benchmarks. Diversidade de design. Reestruturação. Aplicações Móveis. Análise estática.

Comentários desativados