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)