doi
Transcrição
doi
O Estado-da-Arte das Ferramentas de Visualização de Software Fábio Petrillo, Marcelo Pimenta e Carla Dal Sasso Freitas1 Instituto de Informática – Universidade Federal do Rio Grande do Sul (UFRGS) Caixa Postal 15.064 – 91.501-970 – Porto Alegre – RS – Brazil [email protected], mpimenta,[email protected] Abstract Along the recent years, several visualization techniques have been developed to address problems of software engineering, such as comprehension, maintenance and software evolution. Experimentally, these techniques are evaluated through their implementation in visualization tools. However, there are no consistent reports about the current condition of these tools. The goal of this paper is to evaluate the current situation of the implementations of several software visualization techniques described in the literature. We analyzed 52 tools, compiling information about them, and a surprising result is the observation of the low stability of the implementations evaluated: 60% (31 of 52) of the tools do not even have an implementation available, making their use impractical. Resumo Nos últimos anos, várias técnicas de visualização foram desenvolvidas buscando resolver problemas da engenharia de software, como compreensão, manutenção e evolução de software. Experimentalmente, essas técnicas são avaliadas através da implementação de ferramentas de visualização, mas não existem relatos consistentes sobre a condição atual dessas ferramentas. O objetivo deste artigo é avaliar a situação atual das implementações de várias técnicas de visualização de software descritas na literatura, compilando um conjunto de informações a respeito de 52 ferramentas. Um resultado surpreendente deste trabalho é a constatação da falta de estabilidade das implementações avaliadas, sendo que 60% (31 de 52) das ferramentas sequer tem uma implementação disponı́vel, tornando seu uso imediato inviável. 1 Introdução Artefatos de software são intangı́veis e muito complexos, especialmente quando seu tamanho aumenta. Essa complexidade, de difı́cil gerenciamento, torna a tarefa de desenvolver e manter sistemas de software uma tarefa custosa [6]. Em sistemas muito grandes, a imensa quantidade de informações encontradas, formada pelos inúmeros nı́veis hierárquicos e pelo elevado grau de interação entre suas partes, faz com que a tarefa de compreensão de software seja realmente difı́cil, especialmente sem um modelo mental conveniente. Com o objetivo de facilitar a compreensão desses artefatos, pesquisadores têm proposto inúmeras técnicas de visualização de software ao longo dos anos, tanto bi (2D) como tridimensionais (3D). Experimentos têm mostrado que o uso de técnicas de visualização realmente incrementa as chances de sucesso em projetos de software [22][64]. Apesar de alguns trabalhos apresentarem análises das técnicas de visualização de software [3] [7] [56] [8], poucos relatam a condição das implementações dessas técnicas, limitando-se a coletar somente as informações descritas nos artigos que apresentam a técnica ou ferramenta. Neste artigo apresentamos um panorama das condições de uso de 52 ferramentas de visualização de software, variando de protótipos a ferramentas comerciais. O panorama contempla vários aspectos, indicando como cada uma das ferramentas analisadas se encontra, desde sua disponibilidade até sua forma de licenciamento, analisando sua condição do ponto de vista do usuário final. O restante do artigo está organizado como segue. A Seção 2 apresenta os trabalhos mais recentes de levantamento sobre visualização de software, os quais foram utilizados na busca inicial de ferramentas a serem aqui avaliadas. A Seção 3 apresenta a metodologia do estudo, bem como as variáveis utilizadas na análise das implementações. Já na Seção 4 apresentamos os resultados da análise dos dados coletados e, finalmente, na Seção 5 apresentamos as conclusões e indicamos potencial continuidade do trabalho. 2 Trabalhos relacionados A atividade de pesquisa na área de Visualização de Software (VS) é relativamente antiga, sendo que alguns dos trabalhos pioneiros já versavam sobre animação de algoritmos [52] e visualização de versões de programas [11]. No restante desta seção, será feita uma breve discussão dos artigos de revisão da literature sobre VS. Em 2001, Bassil e Keller [3] realizaram um estudo sobre mais de 40 ferramentas de visualização de software com mais de 100 participantes, avaliando aspectos funcionais, cognitivos e de análise de código que usuários buscam em técnicas de VS. Mesmo tendo uma pequena amostra de participantes por ferramenta, o estudo obteve alguns dados quantitativos interessantes: 63% dos participantes afirmaram que a ferramenta de visualização de software avaliada foi simples de usar e 68% relataram obter resultados úteis na sua utilização. Mais recentemente, Carpendale e Ghanam [7] realizaram um levantamento na literatura sobre VS focada na visualização da arquitetura de software, sugerindo quais caracterı́sticas uma visualização efetiva deveria ter. Nesse artigo, após a análise das técnicas, os autores concluem que existe uma grande tendência da utilização de metáforas do mundo real nas propostas de visualização. Contudo, não existem evidências empı́ricas dos benefı́cios dessas metáforas reais. Concluise, assim, que não é garantido que as ferramentas desenvolvidas satisfaçam as necessidades dos engenheiros de software e é sempre necessária a avaliação da efetividade das técnicas propostas. Em outro estudo sobre visualizações 3D de software [56], Teyseyre e Campo analisaram as ferramentas mais representativas para manutenção, compreensão, validação de requisitos e animação de algoritmos. Desse estudo, os autores constataram que é necessário um volume substancial de trabalho para transformar as visualizações obtidas com protótipos acadêmicos em ferramentas úteis. A partir da abordagem feita, algumas áreas de pesquisas foram identificadas: usabilidade, trabalho colaborativo e integração com ambientes de desenvolvimento. Num trabalho mais recente e abrangente sobre técnicas de VS [8], é relatado um exaustivo estudo da literatura disponı́vel, tanto no contexto de aspectos estáticos quanto da evolução de software, resultando na comparação e identificação das técnicas e ferramentas mais relevantes. A partir desse trabalho, Caserta e Zendra concluı́ram que, apesar do fato de as ferramentas de visualização terem um grande potencial, elas ainda não estão sendo largamente utilizadas. Da mesma forma que Teyseyre e Campo [56], Caserta e Zendra constatam que um elevado esforço de pesquisa ainda será necessário para que os protótipos se tornem ferramentas plenamente utilizáveis. 3 Metodologia e critérios de análise Inicialmente, através da observação de algumas ferramentas de visualização, foram definidos os critérios de análise, ou seja, as informações que seriam compiladas, contemplando o objetivo de analisar as ferramentas do ponto de vista do usuário. As informações coletadas foram: – Última versão disponı́vel: avalia se o software referenciado está disponı́vel para download por um usuário final na página da ferramenta, independentemente da sua condição, seja como executável ou código-fonte. Caso esteja, o ano da última versão disponı́vel é coletado. – Visualização 2D ou 3D: se a apresentação da visualização proposta na ferramenta é 2D ou 3D. – Linguagens: quais linguagens de programação a ferramenta trata. Algumas ferramentas, especialmente as que tratam de evolução de software, detectam a alteração ou não no código e onde essa alteração foi realizada, independentemente da linguagem. Para essa situação, foi atribuı́do o valor “Independente de linguagem”. – Plataforma de implementação: em qual plataforma foi implementada a ferramenta. – Plataforma de execução: em quais plataformas a ferramenta pode ser executada. As ferramentas que são executadas em máquinas virtuais multiplataforma (como Java), foram classificadas como “Multiplataforma”. – Embarcado em IDE: se a ferramenta está embarcada (é um plug-in) de um ambiente de desenvolvimento integrado de software (IDE), como sugerido por Teyseyre e Campo [56]. – Necessidade de arquivos intermediários: Muitas ferramentas não trabalham diretamente com o código-fonte da aplicação analisada, mas constroem – – – – – sua visualização a partir de resultados da extração de informações do código, gerando arquivos de informações estratificadas, próprias da ferramenta de análise ou analisável por ela. Código-fonte disponı́vel: se o código-fonte da ferramenta está disponı́vel. Guia do usuário: se existe, mesmo que simples, um guia de utilização da ferramenta. Guia de instalação: se existe, mesmo que simples, um guia de instalação da ferramenta. Atividade do projeto: a partir da análise da frequência de lançamentos, das efetivas modificações no código ou em indı́cios de atividade do grupo de pesquisa, sobre a ferramenta, foi atribuı́do “Ativo” ou “Inativo”. Licenciamento: qual a forma de licenciamento, se “Livre” ou “Comercial”. Na sequência, foi realizada a identificação das técnicas de visualização de software a serem analisadas. Para isso, foram tomados como ponto de partida os trabalhos tipo surveys comentados na Seção 2, e chegou-se a um conjunto de 52 ferramentas, organizadas na Tabela 1. As informações definidas como quesitos de análise foram obtidas, para cada técnica, do artigo correspondente e/ou da página web (81% dos projetos contam com páginas na web). A Tabela 2 apresenta as informações coletadas. Quando a informação não estava disponı́vel ou incerta, foi atribuı́do o valor “Não informado”. Posteriormente, para todas as ferramentas identificadas como disponı́veis, foram obtidos os executáveis ou o código-fonte e executados os procedimentos de instalação (caso existisse um manual de instalação disponı́vel ou por tentativa de instalação sem manual). Caso o procedimento de instalação fosse bemsucedido, alguns testes exploratórios simples de utilização foram realizados, e as observações agregadas à tabela. 4 Análise dos resultados A análise dos dados coletados e apresentados na Tabela 2 corrobora as conclusões dos trabalhos de Teyseyre e Campo [56] e Caserta e Zendra [8] acerca da necessidade de um intenso e profundo trabalho de desenvolvimento para tornar as técnicas propostas realmente usáveis por engenheiros de software. Das técnicas propostas, especialmente nos trabalhos mais recentes, existe uma tendência à implementação em 3D com metáforas de paisagem, cidades ou planı́cies, como o CodeCity [60], Software Diagnostics Studio [57] ou EvoSpace [1]. Já em termos de técnicas 2D, destacam-se em número de implementações as orientadas a grafos de dependências, como SourceMiner [6], Shrimp/Creole [53], CodeCrawler/X-Ray [41] e AspectMaps [19]. Quanto às linguagens suportadas, como pode ser observado na Figura 1a, Java se destaca, sendo tratada por 28 das 52 ferramentas analisadas, seguido por C/C++ (20 de 52). Também em termos de plataforma de implementação, Java novamente se destaca, sendo utilizada na implementação de 22 das 52 ferramentas analisadas, seguida novamente por C/C++ com nove ferramentas (Figura Tabela 1: Ferramentas analisadas Ferramenta RIGI sv3D Aspect Browser Ariadne Chronia ispace Creole VizzAnalyzer (Vizz3D) Bloom/Bee/Hive ShriMP Evolution Radar X-Ray CodeCity SourceMiner CodeMap Software Cartography SeeIT3D SolidSX Gource AspectMaps Softwarenaut EvoSpace CocoViz Software World GEVOL JIVE BugCrawler Jinsight Seesoft Angur GASE Lagrein Tarantula Gammatella GraphTrace Software World Software Evolution 3D Game Engine VERSO CodeCrawler Imsovision RelVis/ArchView EvoLens Pecan PLUM DJVis Revision Towers Software Diagnostics Studio CVSscan Evolution Spectrographs CallStax FileVis Referências [43,27] [42] [49] [51] [21] [2] [37] [38] [46] [53] [15] [41] [60] [6] [33] [32] [42] [55] [9] [19] [39] [1] [5,4] [10] [12] [13] [16,14] [17] [18] [20] [23] [24] [25] [26] [28] [29] [30] [31] [34] [35,36] [40] [44] [45] [48] [48] [50] [54] [57,58] [59] [61] [63] [62] Endereço na Web http://rigi.uvic.ca http://www.sdml.info/projects/sv3d http://cseweb.ucsd.edu/~wgg/Software/AB http://awareness.ics.uci.edu/~ariadne/ http://www.moosetechnology.org/tools/vw/chronia http://ispace.stribor.de http://www.thechiselgroup.org/creole http://vizz3d.sourceforge.net http://www.cs.brown.edu/~spr http://www.thechiselgroup.org/shrimp http://www.inf.usi.ch/phd/dambros/tools/evoradar.php http://xray.inf.usi.ch/xray.php http://www.inf.usi.ch/phd/wettel/codecity.html http://www.sourceminer.org http://scg.unibe.ch/research/softwarecartography http://scg.unibe.ch/research/softwarecartography http://code.google.com/p/seeit3d Http://www.solidsourceit.com http://code.google.com/p/gource http://pleiad.cl/research/software/aspectmaps http://www.inf.usi.ch/phd/lungu/softwarenaut http://www.inf.usi.ch/projects/evospaces http://seal.ifi.uzh.ch/cocoviz http://vrg.dur.ac.uk/lab.php?content=smccomp Não disponı́vel http://www.cse.buffalo.edu/jive http://www.inf.usi.ch/phd/dambros/tools/bugcrawler.php http://www.research.ibm.com/jinsight/ http://www.cc.gatech.edu/classes/cs7390_98_winter Não disponı́vel Não disponı́vel http://lagrein.case.unibz.it http://pleuma.cc.gatech.edu/aristotle/Tools/tarantula http://www.ics.uci.edu/~jajones/Research.html Não disponı́vel http://vrg.dur.ac.uk/lab.php?content=cksw http://vrg.dur.ac.uk/lab.php?content=ckevolution Não disponı́vel Não disponı́vel http://www.inf.usi.ch/faculty/lanza/codecrawler.html http://www.sdml.info/projects/imsovision http://seal.ifi.uzh.ch/archview Não disponı́vel http://www.cs.brown.edu/~spr Não disponı́vel http://vrg.dur.ac.uk/lab.php?content=mpsdjvis http://vrg.dur.ac.uk/lab.php?content=cmbtrev http://www.softwarediagnostics.com Não disponı́vel Não disponı́vel http://vrg.dur.ac.uk/lab.php?content=pycall http://vrg.dur.ac.uk/lab.php?content=pyfile 1a). Quanto ao ambiente de execução, por terem sido implementadas em Java, 22 ferramentas foram classificadas como multiplataforma, enquanto MS Windows (Figura 1b) vem em segundo lugar. Entretanto, apesar do alto número (52) de técnicas encontradas, das ferramentas analisadas, somente 40% (21 de 52) têm uma versão disponı́vel para o usuário final (Figura 2a), sendo que uma das ferramentas comerciais analisadas estava indisponı́vel. Das ferramentas disponı́veis, os anos mais ativos foram 2007 e 2010, com 5 ferramentas sendo disponibilizadas e/ou atualizadas em cada um desses anos. A maior parte das ferramentas são 2D (65% ou 34 de 52), como mostra a Figura 2c. Um fato interessante é que somente 27% das ferramentas estudadas (Figura 2d) são integradas a ambientes de desenvolvimento. Contudo, existe uma forte tendência, especialmente na criação de ferramentas integradas ao Eclipse1 (14 1 http://www.eclipse.org. Tabela 2: Ferramentas analisadas - informações coletadas Ferramenta RIGI sv3D Aspect Browser Ariadne Chronia ispace Creole VizzAnalyzer (Vizz3D) Bloom/Bee/Hive ShriMP Evolution Radar X-Ray CodeCity SourceMiner CodeMap Software Cartography SeeIT3D SolidSX Gource AspectMaps Softwarenaut EvoSpace CocoViz Software World GEVOL JIVE BugCrawler Jinsight Seesoft Angur GASE Lagrein Tarantula Gammatella GraphTrace Software World Software Evolution 3D Game Engine VERSO CodeCrawler Imsovision RelVis/ArchView EvoLens Pecan PLUM DJVis Revision Towers Software Diagnostics Studio CVSscan Evolution Spectrographs CallStax FileVis 2D 3D 2D 2D 2D 2D 2D 3D 3D 2D 2D 2D 3D 2D 2D 2D 3D 2D 3D 2D 2D 3D 3D 3D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 3D 3D 3D 3D 2D 3D 2D 2D 2D 3D 2D 2D 3D 2D 2D 3D 3D 2D/3D 2003 2004 2004 2006 2006 2007 2007 2007 2007 2007 2008 2008 2008 2010 2010 2010 2010 2010 2011 2011 2011 Não disponível Não disponível Não disponível Não disponível Não disponível Não disponível Não disponível Não disponível Não disponível Não disponível Não disponível Não disponível Não disponível Não disponível Não disponível Não disponível Não disponível Não disponível Não disponível Não disponível Não disponível Não disponível Não disponível Não disponível Não disponível Não disponível Não disponível Não disponível Não disponível Não disponível Não disponível Última versão disponível C, C++ e COBOL C/C++ Java Java Independente de linguagem Java e C/C++ Java Java e C Não informado Java, C, COBOL Independente de linguagem Java Java, SmallTalk Java Java Java Java .Net, Java e Visual C++ Independente de linguagem Java Smalltalk, Java, C++ Java e C++ Não informado Não informado Java Java Independente de linguagem Java C Java C Java, C#, C/C++ C Java Lisp Java Não informado C Java Java, SmallTalk Java, C++ Smalltalk, Java, C++ Java C C++ Não informado C Java, C/C++ Independente de linguagem Não informado C C Linguagens Plataforma de Implementação C (TCL/TK) C++ Java Java VisualWorks Smalltalk Java Java Java C Java VisualWorks Smalltalk Java VisualWorks Smalltalk Java Java VisualWorks Smalltalk Java Não informado C++ Pharo Smalltalk VisualWorks Smalltalk Java Não informado C Java Java VisualWorks Smalltalk Java C++ Java Não informado Java Java Java Não informado Java Não informado C Java VisualWorks Smalltalk VRML Não informado Java C C++ (provavelmente) Não informado C Java Não informado Não informado SuperScape SuperScape Windows, Linux, AIX, Solaris Windows Multiplataforma Multiplataforma Windows e MacOS Multiplataforma Multiplataforma Multiplataforma Não informado Multiplataforma Windows e MacOS Multiplataforma Windows e MacOS Multiplataforma Multiplataforma Windows Multiplataforma Windows Windows e Linux Windows, Mac e Linux Windows Multiplataforma Não informado Não informado Multiplataforma Multiplataforma Windows e MacOS Multiplataforma Silicon Graphics Multiplataforma Não informado Multiplataforma Multiplataforma Multiplataforma Não informado Multiplataforma Não informado Windows Multiplataforma Windows e MacOS CAVE Não informado Multiplataforma Unix Não informado Não informado Não informado Multiplataforma Windows Não informado Não informado Não informado Plataforma de Execução Não Não Sim (Eclipse) Sim (Eclipse) Não Sim (Eclipse) Sim (Eclipse) Sim (Eclipse) Não Não Sim (Refactoring Browser) Sim (Eclipse) Não Sim (Eclipse) Sim (Eclipse) Não Sim (Eclipse) Não Não Não Não Sim (Eclipse) Não Não Não Sim (Eclipse) Não Não Não Não Não Sim (Eclipse) Não Não Não Não Não Não Sim (Eclipse) Não Não Não Não Não Não Não Não Não Não Não Não Não Embarcado Em IDE Sim, RSF Sim (XML) Não Não Sim (Moose) Não Não Sim (GML) Sim (BUD) Sim (RSF) Sim (CVS ou Subversion) Não Sim (Moose) Não Não Não Não Sim (db ou XML) Não Sim (Moose) Sim (Moose) Sim (ArchView) Não informado Sim (XML) Não Não Sim (CVS e Bugzilla) Não Não Não Não (ele mesmo os gera) Sim (ProMetrics) Sim (Aristotle Analysis System) Não Não informado Não Não informado Não Não Sim (Moose) Sim (COOL) Sim (E-Famix) Sim (CVS) Sim (PLUM) Não Não informado Não Não informado Sim (CVSgrab) Sim (LDX) Sim Sim Necessita arquivos intermediários? Sim Não Sim Sim Não Sim Sim Sim Não Sim Sim Sim Não Não Não Não Sim Não Sim Sim Não Não Não Não Não Não Não Não Não Não Não Não Não Não Não Não Não Não Não Não Não Não Não Não Não Não Não Não Não Não Não Não Código Disponível Sim Não Sim Sim Não Sim Sim Sim Não Sim Não Sim Sim Sim Sim Não Sim Sim Sim Sim Não Não Não Não Não Sim Não Não Não Não Não Não Não Não Não Não Não Não Não Sim Não Não Não Não Não Não Não Não Não Não Não Não Guia de Usuário Inativo Inativo Inativo Inativo Inativo Ativo Inativo Inativo Inativo Inativo Inativo Inativo Inativo Ativo Ativo Ativo Ativo Ativo Ativo Ativo Ativo Inativo Inativo Inativo Inativo Ativo Inativo Inativo Inativo Inativo Inativo Inativo Inativo Inativo Inativo Inativo Inativo Inativo Inativo Inativo Inativo Inativo Inativo Inativo Inativo Inativo Inativo Ativo Inativo Inativo Inativo Inativo Livre Não informado Livre (CPL) Não informado Livre (BSD) Livre (EPL) Livre Livre (GPL) Não informado Livre Não informado Livre (CPL) Livre (GPL) Não informado Não informado Não informado Livre (GPL) Comercial Livre (GPL) Livre (MIT) Livre ((C) Mircea Lungu) Não informado Não informado Não informado Não informado Livre (EPL) Não informado Não informado Não informado Não informado Não informado Não informado Não informado Não informado Não informado Não informado Não informado Não informado Não informado Livre Não informado Não informado Não informado Não informado Não informado Não informado Não informado Comercial Não informado Não informado Não informado Não informado Guia de Atividade Licença Instalação do Projeto Não Sim Sim Sim Não Sim Sim Sim Não Sim Não Sim Sim Sim Sim Não Sim Sim Sim Sim Não Não Não Não Não Sim Não Não Não Não Não Não Não Não Não Não Não Não Não Não Não Não Não Não Não Não Não Não Não Não Não Não Java C/C++ Smalltalk Plataforma .Net Implementação Linguagem Cobol Lisp Independente de Linguagem Não informado 0 5 10 15 20 25 30 Ferramentas (a) Linguagens suportadas e implementação Plataforma de Execução Multiplataforma Windows MacOS Unix CAVE Não informado 0 5 10 15 Ferramentas (b) Execução Figura 1: Plataformas suportadas pelas ferramentas 20 25 2004 2 2003 1 2006 2 2007 5 Disponível 40% 2008 3 Não disponível 60% 2010 5 Não disponível 31 2011 3 (a) Disponibilidade (b) Última versão disponı́vel por ano Sim 27% 3D 35% 2D 65% Não 73% (c) 2D/3D (d) Embarcadas IDE Sim 23% Não 40% Sim 60% Não 77% (e) Arquivos intermediários (f) Código-fonte Sim 31% Sim 33% Não 67% (g) Guia de usuário Não 69% (h) Guia de instalação Ativo 21% Livre 29% Comercial 4% Não informado 67% Inativo 79% (i) Atividade (j) Licenciamento Figura 2: Caracterı́sticas das ferramentas de 52). Outro fato importante é que a maioria das ferramentas (60% - 31 de 52) são dependentes de arquivos ou dados intermediários, não tratando diretamente o código-fonte do projeto, exigindo dos usuários tratamento sobre o código antes da utilização propriamente dita da visualização. Felizmente, ferramentas mais recentes, criadas como plugins do Eclipse, já produzem suas visualizações baseadas diretamente no código-fonte do projeto, sem arquivos intermediários visı́veis pelo usuário. Outra caracterı́stica dos projetos é a baixa disponibilização dos códigos-fonte. A Figura 2f revela que somente 23% dos projetos disponibilizam seu código. Também é interessante analisar o fato de que a maioria das ferramentas não informam sua licença de utilização e somente 27% se declaram livres. Poucas ferramentas comerciais são referenciadas pelo literatura, sendo que foram analisadas somente 2 entre as 52 (Figura 2j). Os guias para usuários, tanto de utilização, como de instalação, são disponibilizados por somente pouco mais de 30% dos projetos (Figuras 2g e 2h). Finalmente, como pode ser visto na Figura 2i, poucos são os projetos que se mostram ativos (21% ou 11 de 52), ou seja, 79% dos projetos estão inativos, abandonados ou descontinuados. Mesmo que executados de forma não rigorosa, os testes exploratórios feitos com as ferramentas disponı́veis permitiram inferir, em geral, que elas ainda carecem de aprimoramentos e funcionalidades mais estáveis para o uso cotidiano dos engenheiros de software. Entretanto, é possı́vel destacar que interessantes resultados foram obtidos com as ferramentas Shrimp [53], X-Ray [41], SourceMiner [6], CodeCity [60] e Gource [9]. Shrimp se mostrou uma ótima ferramenta, exceto pelo fato de depender de arquivos intermediários. Destaque especial merece SourceMiner por implementar várias técnicas em uma única ferramenta, por produzir visualizações diretamente do código-fonte do projeto e por estar embarcado no Eclipse, tendência seguida por várias ferramentas de visualização. 5 Conclusões Neste artigo, relatamos uma avaliação de 52 ferramentas de visualização de software. A partir de um roteiro estruturado de pesquisa, um conjunto de informações foi levantado sobre as ferramentas e estão resumidas na Tabela 2. Alguns resultados chamaram a atenção, como o fato de que somente 40% (21 de 52) dos projetos têm uma implementação disponı́vel e que, desses, somente 9 se mantêm ativos. Além disso, poucos são os projetos que disponibilizam manuais de usuário ou instalação e a minoria têm seu código-fonte disponı́vel. Os resultados encontrados se alinham com as considerações feitas por Reiss [47], que afirma que é raro encontrar uma ferramenta de visualização de software, a qual um programador leigo possa usar de forma imediata em seu trabalho, requerendo que o programador faça um esforço significativo antes de obter qualquer benefı́cio. É confirmada a ideia proposta por esse autor [47]: se a comunidade de visualização de software deseja um impacto real no processo de desenvolvimento de software, precisa mudar o foco de seu trabalho para que as técnicas e ferramentas propostas sejam mais adequadas às necessidades dos engenheiros de software. Apesar dos dados obtidos terem servido a uma análise criteriosa de vários aspectos, certamente outras devem ser realizadas. A determinação do nı́vel de atividade de um projeto, bem como sua condição de uso são parâmetros que precisam ser melhor determinados. Além disso, um processo rigoroso de testes de utilização das ferramentas ainda precisa ser realizado. Finalmente, vale ressaltar que o presente trabalho complementa, de certa forma, os trabalhos de revisão anteriores [3] [7] [56] [8]. Referências 1. Alam, S., Dugerdil, P.: Evospaces visualization tool: Exploring software architecture in 3d. In: Reverse Engineering, 2007. WCRE 2007. 14th Working Conference on. pp. 269 –270 (oct 2007) 2. Aracic, I., Mezini, M.: Flexible abstraction techniques for graphbased visualizations. In: Eclipse Technology eXchange workshop (eTX) (ECOOP). ECOOP (2006) 3. Bassil, S., Keller, R.: Software visualization tools: survey and analysis. In: Proceedings. 9th International Workshop on Program Comprehension. IWPC 2001. pp. 7 –17 (2001) 4. Boccuzzo, S.: CocoViz with ambient audio software exploration. In: ICSE ’09: Proceedings of the 2009 IEEE 31st International Conference on Software Engineering. pp. 571–574. Vancouver, Canada (2009) 5. Boccuzzo, S., Gall, H.C.: CocoViz: Supported Cognitive Software Visualization. In: Proceedings of 14th Working Conference on Reverse Engineering (WCRE 2007). p. 2. IEEE Computer Society (2007) 6. Carneiro, G.d.F., Magnavita, R.C., Spinola, E., Spinola, F., Mendonça, M.: Evaluating the usefulness of software visualization in supporting software comprehension activities. In: Proceedings of the Second ACM-IEEE international symposium on Empirical software engineering and measurement. pp. 276–278. ESEM ’08, ACM, New York, NY, USA (2008), http://doi.acm.org/10.1145/1414004.1414050 7. Carpendale, S., Ghanam, Y.: A survey paper on software architecture visualization. Tech. rep., University of Calgary (2008) 8. Caserta, P., Zendra, O.: Visualization of the static aspects of software: A survey. IEEE Transactions on Visualization and Computer Graphics 17(7), 913 –933 (july 2011) 9. Caudwell, A.H.: Gource: visualizing software version control history. In: Proceedings of the ACM international conference companion on Object oriented programming systems languages and applications companion. pp. 73–74. SPLASH ’10, ACM, New York, NY, USA (2010), http://doi.acm.org/10.1145/1869542. 1869554 10. Charters, S.M., Knight, C., Thomas, N., Munro, M.: Visualisation for informed decision making; from code to components. In: Proceedings of the 14th international conference on Software engineering and knowledge engineering. pp. 765–772. SEKE ’02, ACM, New York, NY, USA (2002), http://doi.acm.org/10.1145/ 568760.568891 11. Chuah, M., Eick, S.: Information rich glyphs for software management data. Computer Graphics and Applications, IEEE 18(4), 24 –29 (july-aug 1998) 12. Collberg, C., Kobourov, S., Nagra, J., Pitts, J., Wampler, K.: A system for graphbased visualization of the evolution of software. In: Proceedings of the 2003 ACM symposium on Software visualization. pp. 77–ff. SoftVis ’03, ACM, New York, NY, USA (2003), http://doi.acm.org/10.1145/774833.774844 13. Czyz, J.K., Jayaraman, B.: Declarative and visual debugging in eclipse. In: Proceedings of the 2007 OOPSLA workshop on eclipse technology eXchange. pp. 31–35. eclipse ’07, ACM, New York, NY, USA (2007), http://doi.acm.org/10.1145/ 1328279.1328286 14. D’Ambros, M., Lanza, M., Gall, H.: Fractal figures: Visualizing development effort for cvs entities. In: Proceedings of the 3rd IEEE International Workshop on Visualizing Software for Understanding and Analysis. pp. 16–. VISSOFT ’05, IEEE Computer Society, Washington, DC, USA (2005), http://dx.doi.org/10.1109/ VISSOF.2005.1684303 15. D’Ambros, M., Lanza, M.: Reverse engineering with logical coupling. In: Reverse Engineering, 2006. WCRE ’06. 13th Working Conference on. pp. 189 –198 (oct 2006) 16. D’Ambros, M., Lanza, M.: Bugcrawler: Visualizing evolving software systems. In: Proceedings of the 11th European Conference on Software Maintenance and Reengineering. pp. 333–334. IEEE Computer Society, Washington, DC, USA (2007), http://portal.acm.org/citation.cfm?id=1251979.1252803 17. De Pauw, W., Helm, R., Kimelman, D., Vlissides, J.: Visualizing the behavior of object-oriented systems. SIGPLAN Notices 28, 326–337 (October 1993), http: //doi.acm.org/10.1145/167962.165919 18. Eick, S.G., Steffen, J.L., Sumner, Jr., E.E.: Seesoft-a tool for visualizing line oriented software statistics. IEEE Trans. Softw. Eng. 18, 957–968 (November 1992), http://portal.acm.org/citation.cfm?id=141344.141348 19. Fabry, J., Kellens, A., Ducasse, S.: Aspectmaps: A scalable visualization of join point shadows. In: ICPC 2011. Proceedings 19th International Conference on Program Comprehension, 2011.(to appear) (jun 2011) 20. Froehlich, J., Dourish, P.: Unifying artifacts and activities in a visual tool for distributed software development teams. In: Proceedings of the 26th International Conference on Software Engineering. pp. 387–396. ICSE ’04, IEEE Computer Society, Washington, DC, USA (2004), http://portal.acm.org/citation.cfm?id= 998675.999443 21. Girba, T., Kuhn, A., Seeberger, M., Ducasse, S.: How developers drive software evolution. In: Principles of Software Evolution, Eighth International Workshop on. pp. 113 – 122 (sept 2005) 22. Grady, R.B.: Practical software metrics for project management and process improvement. Prentice-Hall, Inc., Upper Saddle River, NJ, USA (1992) 23. Holt, R., Pak, J.: Gase: visualizing software evolution-in-the-large. In: Reverse Engineering, 1996., Proceedings of the Third Working Conference on. pp. 163 – 167 (nov 1996) 24. Jermakovics, A., Moser, R., Sillitti, A., Succi, G.: Visualizing software evolution with lagrein. In: Companion to the 23rd ACM SIGPLAN conference on Objectoriented programming systems languages and applications. pp. 749–750. OOPSLA Companion ’08, ACM, New York, NY, USA (2008), http://doi.acm.org/10. 1145/1449814.1449843 25. Jones, J.A., Harrold, M.J., Stasko, J.: Visualization of test information to assist fault localization. In: Proceedings of the 24th International Conference on Software Engineering. pp. 467–477. ICSE ’02, ACM, New York, NY, USA (2002), http: //doi.acm.org/10.1145/581339.581397 26. Jones, J.A., Orso, A., Harrold, M.J.: Gammatella: visualizing program-execution data for deployed software. Information Visualization 3, 173–188 (September 2004), http://portal.acm.org/citation.cfm?id=1039751.1039755 27. Kienle, H.M., Müller, H.A.: Rigi–an environment for software reverse engineering, exploration, visualization, and redocumentation. Science of Computer Programming 75(4), 247 – 263 (2010), http://www.sciencedirect.com/science/article/ pii/S016764230900149X, experimental Software and Toolkits (EST 3): A special issue of the Workshop on Academic Software Development Tools and Techniques (WASDeTT 2008) 28. Kleyn, M.F., Gingrich, P.C.: Graphtrace - understanding object-oriented systems using concurrently animated views. SIGPLAN Notices 23, 191–205 (January 1988), http://doi.acm.org/10.1145/62084.62101 29. Knight, C., Munro, M.: Should users inhabit visualizations? In: Proceedings of the 9th IEEE International Workshops on Enabling Technologies: Infrastructure for Collaborative Enterprises. pp. 43–50. IEEE Computer Society, Washington, DC, USA (2000), http://portal.acm.org/citation.cfm?id=647068.715498 30. Knight, C., Munro, M.: Organisational trails through software systems. In: Proceedings of the 4th International Workshop on Principles of Software Evolution. pp. 150–153. IWPSE ’01, ACM, New York, NY, USA (2001), http://doi.acm.org/ 10.1145/602461.602495 31. Kot, B., Wuensche, B., Grundy, J., Hosking, J.: Information visualisation utilising 3d computer game engines case study: a source code comprehension tool. In: Proceedings of the 6th ACM SIGCHI New Zealand chapter’s international conference on Computer-human interaction: making CHI natural. pp. 53–60. CHINZ ’05, ACM, New York, NY, USA (2005), http://doi.acm.org/10.1145/1073943.1073954 32. Kuhn, A., Erni, D., Loretan, P., Nierstrasz, O.: Software cartography: thematic software visualization with consistent layout. J. Softw. Maint. Evol. 22, 191–210 (April 2010), http://dx.doi.org/10.1002/smr.v22:3 33. Kuhn, A., Erni, D., Nierstrasz, O.: Embedding spatial software visualization in the ide: an exploratory study. In: Proceedings of the 5th international symposium on Software visualization. pp. 113–122. SOFTVIS ’10, ACM, New York, NY, USA (2010), http://doi.acm.org/10.1145/1879211.1879229 34. Langelier, G., Sahraoui, H., Poulin, P.: Visualization-based analysis of quality for large-scale software systems. In: Proceedings of the 20th IEEE/ACM international Conference on Automated software engineering. pp. 214–223. ASE ’05, ACM, New York, NY, USA (2005), http://doi.acm.org/10.1145/1101908.1101941 35. Lanza, M., Ducasse, S.: Polymetric views - a lightweight visual approach to reverse engineering. Software Engineering, IEEE Transactions on 29(9), 782 – 795 (sept 2003) 36. Lanza, M.: The evolution matrix: recovering software evolution using software visualization techniquesthe evolution matrix: recovering software evolution using software visualization techniques. In: Proceedings of the 4th International Workshop on Principles of Software Evolution. pp. 37–42. IWPSE ’01, ACM, New York, NY, USA (2001), http://doi.acm.org/10.1145/602461.602467 37. Lintern, R., Michaud, J., Storey, M.A., Wu, X.: Plugging-in visualization: experiences integrating a visualization tool with eclipse. In: Proceedings of the 2003 ACM symposium on Software visualization. pp. 47–ff. SoftVis ’03, ACM, New York, NY, USA (2003), http://doi.acm.org/10.1145/774833.774840 38. Löwe, W., Panas, T.: Rapid construction of software comprehension tools. International Journal of Software Engineering and Knowledge Engineering 15(6), 995–1026 (2005) 39. Lungu, M., Lanza, M.: Exploring inter-module relationships in evolving software systems. In: Proceedings of CSMR 2007 (11th European Conference on Software Maintenance and Reengineering). pp. 91–100. IEEE Computer Society Press, Los Alamitos CA (2007) 40. Maletic, J., Leigh, J., Marcus, A., Dunlap, G.: Visualizing object-oriented software in virtual reality. In: Program Comprehension, 2001. IWPC 2001. Proceedings. 9th International Workshop on. pp. 26 –35 (2001) 41. Malnati, J.: X-ray: An eclipse plug-in for software visualization. Bachelor Project. Lugano University (July 2007) 42. Marcus, A., Comorski, D., Sergeyev, A.: Supporting the evolution of a software visualization tool through usability studies. In: Program Comprehension, 2005. IWPC 2005. Proceedings. 13th International Workshop on. pp. 307 – 316 (may 2005) 43. Müller, H.A.: Rigi — A Model for Software System Construction, Integration, and Evaluation based on Module Interface Specifications. Ph.D. thesis, Rice University (1986) 44. Pinzger, M., Gall, H., Fischer, M., Lanza, M.: Visualizing multiple evolution metrics. In: Proceedings of the 2005 ACM symposium on Software visualization. pp. 67–75. SoftVis ’05, ACM, New York, NY, USA (2005), http://doi.acm.org/10. 1145/1056018.1056027 45. Ratzinger, J., Fischer, M., Gall, H.: Evolens: Lens-view visualizations of evolution data. Principles of Software Evolution, International Workshop on 0, 103–112 (2005) 46. Reiss, S.P.: Bee/hive: a software visualization backend. In: In Proceedings of the IEEE Workshop on Software Visualization (may 2001) 47. Reiss, S.P.: The paradox of software visualization. In: Proceedings of the 3rd IEEE International Workshop on Visualizing Software for Understanding and Analysis. pp. 19–. VISSOFT ’05, IEEE Computer Society, Washington, DC, USA (2005), http://dx.doi.org/10.1109/VISSOF.2005.1684306 48. Reiss, S.: Pecan: Program development systems that support multiple views. IEEE Transactions on Software Engineering SE-11(3), 276 – 285 (march 1985) 49. Shonle, M., Neddenriep, J., Griswold, W.: Aspectbrowser for eclipse: a case study in plug-in retargeting. In: Proceedings of the 2004 OOPSLA workshop on eclipse technology eXchange. pp. 78–82. eclipse ’04, ACM, New York, NY, USA (2004), http://doi.acm.org/10.1145/1066129.1066145 50. Smith, M.P., Munro, M.: Identifying structural features of java programs by analysing the interaction of classes at runtime. In: Proceedings of the 3rd IEEE International Workshop on Visualizing Software for Understanding and Analysis. pp. 29–. VISSOFT ’05, IEEE Computer Society, Washington, DC, USA (2005), http://dx.doi.org/10.1109/VISSOF.2005.1684316 51. de Souza, C.R., Quirk, S., Trainer, E., Redmiles, D.F.: Supporting collaborative software development through the visualization of socio-technical dependencies. In: Proceedings of the 2007 international ACM conference on Supporting group work. pp. 147–156. GROUP ’07, ACM, New York, NY, USA (2007), http://doi.acm. org/10.1145/1316624.1316646 52. Stasko, J.: Tango: a framework and system for algorithm animation. Computer 23(9), 27 –39 (sept 1990) 53. Storey, M.A., Muller, H.: Manipulating and documenting software structures using shrimp views. In: Proceedings of the International Conference on Software Maintenance. pp. 275 –284 (oct 1995) 54. Taylor, C.M.B., Munro, M.: Revision towers. In: Proceedings of the 1st International Workshop on Visualizing Software for Understanding and Analysis. pp. 43–. IEEE Computer Society, Washington, DC, USA (2002), http://portal.acm.org/ citation.cfm?id=832270.833810 55. Telea, A., Voinea, L., Sassenburg, H.: Visual tools for software architecture understanding: A stakeholder perspective. IEEE Softw. 27, 46–53 (November 2010), http://dx.doi.org/10.1109/MS.2010.115 56. Teyseyre, A., Campo, M.: An overview of 3d software visualization. IEEE Transactions on Visualization and Computer Graphics 15(1), 87 –105 (jan-feb 2009) 57. Trümper, J., Bohnet, J., Voigt, S., Döllner, J.: Visualization of multithreaded behavior to facilitate maintenance of complex software systems. In: Quality of Information and Communications Technology (QUATIC), 2010 Seventh International Conference on the. pp. 325 –330 (29 2010-oct 2 2010) 58. Tümper, J., Bohnet, J., Döllner, J.: Understanding complex multithreaded software systems by using trace visualization. In: Proceedings of the ACM Symposium on Software Visualization. pp. 133–142 (2010) 59. Voinea, L., Telea, A., van Wijk, J.J.: Cvsscan: visualization of code evolution. In: Proceedings of the 2005 ACM symposium on Software visualization. pp. 47–56. SoftVis ’05, ACM, New York, NY, USA (2005), http://doi.acm.org/10.1145/ 1056018.1056025 60. Wettel, R., Lanza, M., Robbes, R.: Software systems as cities: a controlled experiment. In: Proceeding of the 33rd international conference on Software engineering. pp. 551–560. ICSE ’11, ACM, New York, NY, USA (2011), http: //doi.acm.org/10.1145/1985793.1985868 61. Wu, J., Spitzer, C.W., Hassan, A.E., Holt, R.C.: Evolution spectrographs: Visualizing punctuated change in software evolution. In: Proceedings of the 7th International Workshop on Principles of Software Evolution. pp. 57–66. IEEE Computer Society, Washington, DC, USA (2004), http://portal.acm.org/citation.cfm? id=1018436.1021751 62. Young, P., Munro, M.: Visualising software in virtual reality. In: Program Comprehension, 1998. IWPC ’98. Proceedings., 6th International Workshop on. pp. 19 –26 (jun 1998) 63. Young, P., Munro, M.: A new view of call graphs for visualising code structures (1997) 64. Zhang, K. (ed.): Software Visualization: From Theory to Practice. Kluwer Academic Publishers, Norwell, MA, USA (2003)