1 INTRODUÇÃO
1.4 A ABORDAGEM ADOTADA 39
Esta tese de doutorado adotou uma abordagem iterativa e incremental nas etapas de concepção, desenvolvimento e avaliação do SourceMiner. O modelo inicialmente concebido foi ampliado e aprofundado a cada nova etapa, permitindo sua evolução incremental. A Figura 3 apresenta uma visão geral destas etapas seguindo três eixos principais que serviram de referência para este trabalho. Os eixos I, II e III são representados na parte interna, intermediária e externa da Figura 3 respectivamente.
O primeiro eixo (eixo I) corresponde à infra-estrutura de visualização em relação ao ambiente no qual o SourceMiner é utilizado. O segundo eixo (eixo II) corresponde à evolução das funcionalidades do SourceMiner, sendo composta de treze etapas. O terceiro eixo (eixo III) corresponde às publicações ao longo do trabalho para avaliar e discutir o modelo proposto em diversos cenários e de diferentes formas.
Três etapas foram percorridas no Eixo I (infra-estrutura e ambiente). Na primeira, o SourceMiner era uma aplicação Java não integrada ao ambiente de desenvolvimento de software. Os estudos mostraram que o uso do SourceMiner de forma integrada ao ADS traria maior efetividade nas atividades de compreensão. Isto resultou no planejamento e migração para a segunda etapa. O SourceMiner passou a ser integrado ao ADS, no formato de um plug- in, e a utilizar de diversos recursos oferecidos pelo Eclipse. Na terceira etapa, o SourceMiner
40
passa a ser instalado pelo próprio Eclipse através do recurso de instalação automática oferecido pelo ADS.
Muitas etapas foram percorridas nos Eixos II e III (funcionalidades e publicações). Na etapa A, o SourceMiner utilizava o JavaCC (Viswanadha e Sankar, 2011), um gerador de parser para a linguagem Java, com o objetivo de obter informações do código fonte da aplicação a ser analisada. Na etapa B, tem-se a primeira versão desenvolvida do mapa em árvores (Shneiderman, 1992) para a representação visual da estrutura pacote-classe- método da aplicação. Na seqüência, na etapa C foram adicionados recursos de filtragem interativa, juntamente com zoom geométrico e semântico para uso e configuração da representação visual do mapa em árvores. Neste período foram escritos três trabalhos com o objetivo de analisar a viabilidade do uso desta versão do SourceMiner e também para discutir o modelo proposto para o ambiente de visualização: Empirically Evaluating the Usefulness of Software Visualization Techniques in Program Comprehension Activities (P1) (Carneiro, Araujo e Mendonça, 2007), Using Visual Metaphors to Enhance Software Comprehension Activities (P2, Simpósio de Doutorado do ESEM, e P3, Escola de Verão de Salerno/Itália) (Carneiro, 2007;Carneiro, 2007a).
41
Figura 3 Concepção e Avaliação do SourceMiner
Os estudos iniciais mostraram que o uso do JavaCC não era efetivo em função do tamanho final do SourceMiner e da necessidade das adaptações recorrentes para se garantir compatibilidade com a versão da linguagem Java da aplicação a ser analisada. A partir da
etapa D, o SourceMiner passa a ser integrado ao Eclipse. Agora os dados do código fonte são
obtidos diretamente da árvore sintática abstrata disponibilizada pelo Java Development Tool (JDT) (Clayberg e Rubel, 2009) do Eclipse. Os recursos oferecidos pelo JDT facilitaram a obtenção de informações do código fonte. Na etapa E ficou evidente que uma única visão, e o conjunto de propriedades por ela representado, não seriam suficientes para apoiar atividades de compreensão de software. Nela foi incluído o conceito de perspectiva no SourceMiner. A visão mapa em árvores atendia bem aos seus objetivos, entretanto outras propriedades relevantes do software não podiam ser identificadas e analisadas com esta metáfora visual. A hierarquia de herança foi a próxima propriedade representada no SourceMiner (etapa F) utilizando visões polimétricas como metáfora visual (Lanza e Ducasse, 2003). Na etapa G, foram introduzidos recursos para a monitoração de operações primitivas executadas pelo
42
usuário no ambiente. Através dos registros destas operações tornou-se possível a coleta de dados do ambiente em estudos experimentais. A partir deste momento foi possível analisar o perfil de uso não somente das representações visuais oferecidas pelo plug-in, mas também do ambiente de desenvolvimento de software como um todo. Neste período foram publicados os seguintes trabalhos: The Importance of Cognitive and Usability Elements in Designing Software Visualization Tools (Carneiro e Mendonça, 2008) (P4); Evaluating the Usefulness of Software Visualization in Supporting Software Comprehension Activities (Carneiro, Magnavita, et al., 2008) (P5), Combining Software Visualization Paradigms to Support Software Comprehension Activities (Carneiro, Magnavita e Mendonça, 2008) (P6) e An Eclipse-Based Visualization Tool for Software Comprehension (Carneiro, Magnavita e Mendonça, 2008a) (P7), sendo que neste último trabalho, o SourceMiner foi premiado como a melhor ferramenta do XXII Simpósio Brasileiro de Engenharia de Software.
Com os estudos até então realizados, surgiram evidências de que as informações disponibilizadas pelas visões não eram suficientes para o apoio efetivo às muitas atividades de compreensão de software. Verificou-se que o conjunto de metáforas visuais oferecido pelo SourceMiner poderia ser enriquecido uniforme e simultaneamente também com informações relacionadas aos requisitos funcionais e não funcionais de uma aplicação. Nosso primeiro passo nesta direção foi estender o SourceMiner para suportar a representação visual de interesses1(concerns) (Robillard e Murphy, 2007; Tarr, Ossher, et al., 1999; Cacho, Sant'Anna, et al., 2006; Garcia, Sant'Anna, et al., 2005). Na etapa H foi incluída a representação de interesses para enriquecer a representação das metáforas visuais adotadas.
A próxima melhoria foi a inclusão de uma perspectiva para representar relacionamentos de acoplamento. Na etapa I foi incluída a metáfora visual de grafos radiais para a representação de três níveis distintos de acoplamento: acoplamento entre pacotes, entre classes e entre métodos. Foi adicionada a funcionalidade de zoom semântico para a navegação entre estes três níveis.
Na etapa J as visões tabular e grafo espiral egocêntrico foram incluídas. O objetivo destas duas visões é fornecer uma visão panorâmica dos módulos mais acoplados da
1
O termo “interesse” como tradução de “concern” seguiu a tradução proposta no I Workshop Brasileiro de Desenvolvimento de Software Orientado a Aspectos (WASP 04) e disponível em http://wiki.dcc.ufba.br/WASP04/Termos
43
aplicação analisada. Seu foco é em representar a força dos acoplamentos entre módulos (classes e interfaces) do software.
Em função das ocorrências de oclusão características dos grafos, na etapa K foi incluída a metáfora de matrizes de relacionamento de acoplamento. Esta metáfora é equivalente aos grafos radiais, pois tem foco nos relacionamentos de acoplamento, mas ela escala melhor visualmente. De forma análoga aos grafos, as matrizes também apresentam os três níveis de acoplamento de pacotes, classes e métodos.
Neste período foram publicados os seguintes trabalhos: On the Use of Software Visualization to Support Concern Modularization Analysis (Carneiro, Sant´Anna, et al., 2009) (P8); An Experimental Platform to Characterize Software Comprehension Supported by Visualization (Carneiro, Magnavita e Mendonça, 2009a) (P9); Proposing a Visual Approach to Support the Characterization of Software Comprehension Activities (Carneiro, Magnavita e Mendonça, 2009b) (P10).
Na etapa L, o SourceMiner foi modificado para instalação a partir do próprio Eclipse. Esta etapa concluiu o trabalho de desenvolvimento do SourceMiner relatado neste tese. A partir deste momento, etapa M, o foco do trabalho passou a ser a avaliação do SourceMiner. Foram realizados três estudos neste período. Um estudo observacional foi realizado com o objetivo de analisar o uso do SourceMiner no apoio à identificação de anomalias de modularidade. Foram realizados também dois estudos de caso na indústria. Nestes dois estudos, o SourceMiner apoiou atividades de compreensão decorrentes de situações reais e foi possível verificar a efetividade do ambiente no apoio a estas atividades. As publicações deste período foram as seguintes: On the Design of a Multi-Perspective Visualization Environment to Enhance Software Comprehension Activities (Carneiro, Sant´Anna e Mendonça, 2010) (P11); An Eclipse-Based Multi-Perspective Environment to Visualize Software Coupling (Carneiro, Nunes, et al., 2010) (P12) e Identifying Code Smells with Multiple Concern Views (Carneiro, Silva, et al., 2010) (P13). Sendo este ultimo premiado como o melhor artigo do XXIV Simpósio Brasileiro de Engenharia de Software (SBES).
A Figura 3 será utilizada como referência da evolução do trabalho nos capítulos desta tese, sendo que o Capítulo 3 descreve os estudos realizados para definição e evolução do ambiente (etapas A à K da Figura 3) , o Capítulo 4 descreve o modelo conceitual resultante
44
destes estudos, o Capítulo 5 descreve a arquitetura e implantação do SourceMiner, e o Capítulo 6 e 7 descrevem os estudos de caracterização e avaliação industrial do SourceMiner (etapa L e M da Figura 3).