SourceMiner: Um Ambiente Integrado para Visualização Multi-Perspectiva de Software - Carneiro, Glauco de Figueiredo (2013)
Atividades de compreensão têm papel importante em engenharia de software. A leitura e a busca de informações no código fonte não são atividades triviais e requerem esforço significativo em sistemas de médio e grande porte. Atualmente, apesar da maioria dos ambientes de desenvolvimento de software (ADS) oferecer apoio às atividades de compreensão, eles ainda não adotaram plenamente técnicas e recursos de visualização para tal finalidade. Esta é uma limitação significativa dado que o ser humano tem maior capacidade para obter informação através da visão do que todos os outros sentidos combinados. Além disso, as próprias técnicas de visualização de software ainda não adotaram recursos de interação e coordenação já consolidados na área de visualização de informação. Esta tese propõe um ambiente interativo baseado em múltiplas visões chamado SourceMiner, desenvolvido como um plug-in da ADS Eclipse, para apoiar as atividades de compreensão de software. O SourceMiner traz novos recursos e técnicas para a área de visualização de software. O principal destes é o uso de múltiplas visões, já adotadas em visualização de informação e compatibilizadas para visualização de software através do conceito de perspectivas. O ambiente também utiliza mecanismos de coordenação entre as visões, zoom semântico e filtros interativos. O SourceMiner é um ambiente expansível no qual é possível incluir novas visões. Além disso, ele possui recursos de monitoramento de atividades a partir dos quais podem ser realizados estudos para a análise do perfil de uso do ADS e das funcionalidades oferecidas pelo próprio plug-in. A utilização integrada destes recursos é uma contribuição nova para a área de visualização de software. Foram realizados seis estudos experimentais para avaliar o uso do SourceMiner em atividades de compreensão de software. Os resultados indicam que o SourceMiner pode ser utilizado para apoiar a construção de modelos mentais que se adéquam às necessidades de compreensão daqueles que lidam tanto com atividades de desenvolvimento como de manutenção de software.