Análise do Espalhamento de Características pela Interpretação Visual de Rastros de Execução Victor Sobreira, Marcelo de Almeida Maia Departamento de Ciência da Computação Universidade Federal de Uberlândia (UFU) – Uberlândia – MG – Brasil victor.sobreira@gmail.com, marcmaia@facom.ufu.br Abstract. Feature location in the source code still is a challenge, specially when the source-code is not modularized in a feature-fashioned way, causing feature scattering. This work proposes a method for understanding feature scattering through the graphical interpretation of relationships between feature elements and source code elements. The proposed tool collects and represents trace events of multithreaded programs and shows some graphics that help in feature scattering analysis. The proposed method and tool are validated with the analysis of some features of the ArgoUML CASE tool. The conclusion is that interesting information about feature location can be straightforwardly found. Resumo. A localização de características no código-fonte ainda é um desafio, especialmente quando o código não foi modularizado com base em características, causando assim o espalhamento. Este trabalho propõe um método para o entendimento do espalhamento de características pela interpretação visual de relacionamentos entre características e elementos do código fonte. A ferramenta proposta coleta e representa rastros de execução de programas multi-thread e mostra alguns gráficos que auxiliam na análise do espalhamento. O método proposto e a ferramenta são validados com a análise de algumas características da ferramenta CASE ArgoUML. A conclusão é que informações interessantes sobre a localização das características podem ser encontradas de forma simples. 1. Introdução As melhores práticas de desenvolvimento orientado por objetos têm contribuído para muitos fatores de qualidade interna do software. Duplicações tendem a ser minimizadas por construções polimórficas das linguagens de programação e pela aplicação contínua de padrões de projeto. Este é um benefício que se estende também para a produtividade e manutenção. Porém, o entendimento do código-fonte sob a perspectiva do usuário ainda não dispõe de um mapeamento direto dos requisitos para elementos do código. A rastreabilidade entre requisitos e artefatos de código ainda é um grande desafio para desenvolvedores, pois uma simples interação do usuário pode disparar o uso de centenas, talvez milhares de classes e métodos em um sistema. Este cenário impõe dificuldades para o entendimento do sistema. Uma opção é depurar e navegar pelo código usando facilidades de ambientes de desenvolvimento. Entretanto, mesmo em sistemas de porte médio, esta tarefa é normalmente muito custosa pela grande quantidade de chamadas de métodos envolvidas. Outra solução é analisar os rastros de execução derivados do evento. De fato, já foram propostos muitos trabalhos para auxiliar essa análise baseados na informação que se deseja extrair [1,2,3,4,5,6,7,8]. A nossa hipótese é que a capacidade de descobrir informações interessantes sobre a implementação de características pode ser aprimorada se permitimos aos desenvolvedores navegar por matrizes relacionando código-fonte e características.