Dissertação

EcoAndroid: An Android Studio Plugin for Developing Energy-Efficient Java Mobile Applications EVALUATED

Os dispositivos móveis tornaram-se indispensáveis no nosso dia a dia e reduzir a energia consumida por eles tornou-se essencial nos últimos anos. Por razões económicas e ambientais, além de aprimorar a experiência do utilizador, estender a duração da bateria tornou-se um requisito não funcional com o qual os programadores se devem preocupar. No entanto, desenvolver aplicações móveis com baixo consumo de energia não é uma tarefa trivial. Para resolver esse problema, apresentamos EcoAndroid, um plugin para Android Studio que aplica automaticamente um conjunto de padrões de energia a código-fonte Java. Actualmente, o plugin suporta dez casos diferentes de refactorações relacionadas ao consumo de energia, relativos a cinco padrões de energia retirados da literatura. Usámos o EcoAndroid para analisar 100 aplicações móveis Java do F-Droid e descobrimos que 35 dos projetos tinham um total de 95 code smells de energia detectados pelo plugin. Usámos também o EcoAndroid para refactorizar automaticamente todos os code smells identificados. Enviámos as 42 refactorizações que introduziram correcções de código (e não apenas avisos informativos) como pull requests para os responsáveis dos respectivos projetos. De um total de 42 pull requests, recebemos respostas para 25 deles (59,5%); desses, 20 (80%) foram aceites e incorporados nos projetos originais. No total, contribuímos para melhorar a eficiência energética de 12 aplicações móveis Android diferentes. Estes resultados, juntamente com os resultados obtidos num estudo de usabilidade com 12 participantes, mostram que o EcoAndroid é útil, utilizável, e as alterações propostas pela ferramenta são facilmente aceites pelos programadores.
Software Sustentável, Software Verde, Consumo de Energia, Padrões de Energia, Code Smells, Refactorização.

janeiro 18, 2021, 18:0

Publicação

Obra sujeita a Direitos de Autor

Orientação

ORIENTADOR

João Fernando Peixoto Ferreira

Departamento de Engenharia Informática (DEI)

Professor Auxiliar