As notícias que dão conta de fugas de informação armazenada pelas principais aplicações informáticas — recolhidas através da sua utilização por parte de cidadãos comuns — são recorrentes, deixando expostos dados pessoais, muitas vezes com um cariz sensível. Na origem destas fugas estão, na maioria das vezes, erros de funcionamento de software capazes de causar perdas astronómicas às empresas, tanto a nível financeiro como reputacional. Não se estranha, por isso, que mais meios e esforços estejam a ser alocados à deteção de defeitos no software ainda em fases embrionárias do seu ciclo de vida, evidenciando a importância da utilização de boas práticas de codificação. É, neste sentido, que o investigador do INESC TEC Rui Rua tem vindo a trabalhar, para criar soluções que melhorem o desempenho de aplicações Android através de alterações ao nível do código fonte.
As abordagens de análise estática e dinâmica de software são meios usados com frequência por programadores, no sentido de avaliar aspetos funcionais e não-funcionais do software em causa, do seu ciclo de vida e ambiente de desenvolvimento. No primeiro caso, são utilizadas técnicas que visam avaliar código e recursos da aplicação, de forma a detetar defeitos sem que o software seja executado. No que respeita à análise dinâmica, esta visa avaliar a execução do código, tendo em vista a identificação de anomalias no seu comportamento.
Apesar de representarem uma prática comum para avaliar e validar o código, no que toca ao ecossistema Android, não existia uma ferramenta standard que permitisse aos programadores e investigadores realizar os processos de benchmarking em software nativo Android de forma automatizada. Com o objetivo de colmatar esta lacuna, Rui Rua, investigador do INESC TEC, desenvolveu a PyAnaDroid, uma “ferramenta que considera várias frameworks de teste, é capaz de fazer análises blackbox e whitebox através de abordagens de análise estática e dinâmicas. Desta forma, oferece-se suporte para vários profilers de energia e mecanismos para execução e validação de execuções de aplicações”, como explica o investigador.
O objetivo passou por “providenciar um mecanismo standard e open-source que a comunidade pode reutilizar para efetuar estudos que analisam código Android”, refere Rui Rua. Esta abordagem permite que “futuros trabalhos possam ser facilmente replicados e os seus resultados validados”.
Descrita no artigo PyAnaDroid: A fully customizable execution pipeline for benchmarking Android Applications, a solução foi apresentada na The International Conference on Software Maintenance and Evolution (ICSME’23). Trata-se de uma conferência de Core A — o segundo nível mais elevado no ranking de conferências na área da computação — e de “renome na área da engenharia de software, que reúne esforços provenientes da academia, indústria e Governos, tendo em vista a discussão e o debate de ideias, experiências e desafios recentes na manutenção e evolução de software”, como explica o investigador do INESC TEC.
Com um grande foco em use-cases, o artigo sugere, entre outras propostas, “a sua aplicação em estudos de larga-escala que envolvam a análise de grandes conjuntos de aplicações, para descobrir padrões anómalos em termos de comportamento energético, detetar erros funcionais, entre outros”, enumera. A automatização do processo de teste e análise das suas aplicações é outra possibilidade que passa a estar ao dispor dos programadores através da nova ferramenta.
Recentemente, o investigador do do INESC TEC viu também publicado um artigo da sua autoria na Empirical Software Engineering (EMSE) (Q1), uma das “revistas com mais impacto na área da Engenharia de Software”. A publicação divulga com frequência “estudos empíricos que envolvem a coleta e análise de dados e experiências que podem ser usados para caracterizar, avaliar e revelar relacionamentos entre entregáveis, práticas e tecnologias de desenvolvimento de software”.
Com Rui Rua não foi diferente. A large-scale empirical study on mobile performance: Energy, Run-time and Memory constitui o maior estudo de literatura alguma vez feito ao nível da execução e análise dinâmica de performance de aplicações Android. Nela, o autor efetua uma análise de grande escala de aplicações open-source Android, tendo em vista a descoberta de padrões e práticas de codificação que podem impactar a performance de aplicações móveis.
“Existem inúmeros trabalhos de menor dimensão que têm surgido na literatura a demonstrar que é possível usar técnicas de análise dinâmica de aplicações para detetar e localizar anomalias em termos de performance e definir padrões”, analisa o investigador. “Há também muitos trabalhos que demonstraram que é possível obter ganhos significativos de performance (nomeadamente, em termos de performance energética), através de correção de padrões ineficientes de codificação.”
A investigação permitiu, por isso, a construção de uma base de dados de grande dimensão que foi disponibilizada e pode ser utilizada noutros estudos. Do trabalho saíram também várias conclusões com relevância para a comunidade — “científica e de desenvolvimento”, ressalva Rui Rua —, como o impacto de certas atividades de desenvolvimento e de manutenção no consumo de energia, definição de rankings de bibliotecas considerando a performance, entre outros.
“As conclusões extraídas podem ser usadas pela comunidade para melhorar o desempenho de aplicações Android. É também uma contribuição para a sensibilização necessária para incentivar a comunidade a construir software mais sustentável”, aponta o investigador. Esta última preocupação, a do software energicamente eficiente, tem sido um dos pontos que mais tem privilegiado nos seus trabalhos de investigação.
O investigador do INESC TEC mencionado na notícia tem vínculo ao INESC TEC e à UMinho.