Escolar Documentos
Profissional Documentos
Cultura Documentos
CinciasdaComputao
Anliseempricacomparativaentre
mtricasdemodularidadeemodificaes
emcdigoduranteaevoluodesistemas
opensource
GabrieldeSouzaRolim
gabrielsrolim@gmail.com
Orientador:
EudisleyGomesdosAnjos
Marode2014
CentrodeInformtica
UniversidadeFederaldaParaba
Gabriel de Souza Rolim
Anlisecomparativaentremtricasde
modularidadeemodificaesemcdigo
duranteaevoluodesistemasopensource
Monografia apresentada ao curso Cincias da
Computao do Centro de Informtica, da
UniversidadeFederaldaParaba,comorequisito
paraaobtenodograudeBacharelemCincias
daComputao.
Orientador:EudisleyGomesdosAnjos
Marode2014
Fichacatalogrfica:elaboradapelabibliotecadoCI.
Serimpressanoversodafolhaderostoenodeversercontada.
<Senohouverbiblioteca,deixarembranco>
CentrodeInformtica
UniversidadeFederaldaParaba
TrabalhodeConclusodeCursodeCinciasdaComputaointituladoanlisecomparativa
entre mtricas de modularidade e modificaes em cdigo durante a evoluo de
sistemas open source de autoria de Gabriel de Souza Rolim, aprovada pela banca
examinadoraconstitudapelosseguintesprofessores:
_______________________________________________________________
Prof.Dr.<NomedoProfessor>
***instituio***
_______________________________________________________________
Prof.Dr.<NomedoProfessor>
***instituio***
_______________________________________________________________
Prof.Dr.<NomedoProfessor>
***instituio***
_______________________________________________________________
ChefedoDepartamento<NomedoDepartamento>
CI/UFPB
JooPessoa,20demarode2014
CentrodeInformtica,UniversidadeFederaldaParaba,JooPessoaParaba
CEP:58.051900Telefone:(83)32167093Faz:(83)32167117
DEDICATRIA
meu orientador, Eudisley Anjos, que sem sua ajuda e pacincia nada disso seria
possvel.
Aos meus pais, Manuel Junior e Elizabete Rolim, que me acompanhou em todas
as fases do meu curso.
minha av, Maria das Neves, que sempre me deu apoio.
minha maravilhosa namorada, Suamy Rabelo, que sem o seu apoio nos
momentos mais angustiantes eu no teria terminado esse Trabalho.
meu grande amigo, Ewerton Oliveira, que desde o comeo do curso esteve
sempre comigo sofrendo nos trabalhos em grupo e sempre dando aquele toque especial nos
texto dos trabalhos.
AGRADECIMENTOS
AgradeoprimeiramenteaDeusquesempreiluminouomeucaminho,medeuforase
sabedorianessalongacaminhada.
Atodososprofessoresquemeensinaramefizeramcomqueeumetornaseotimo
profissionalquesouhoje.
Agradeoportodasaspessoasquecruzaramomeucaminhoemederamforanessa
longacaminhada.
Amenosquemodifiquemosanossamaneirade
pensar,noseremoscapazesderesolveros
problemascausadospelaformacomonos
acostumamosaveromundo.(AlbertEinstein)
RESUMO
Nestetrabalhoverificoucomoasmtricasdemodularidadesecomportamatravsdotempocomo
acrscimodefuncionalidade,correesdebugsecolaboraodedesenvolvedores.Existemvrias
pesquisasnareaqueprocuramacharpadresdemtricasdesoftwareeoaparecimentodebugs.
Nestetrabalhoforamfeitasanalisesaolongodavidadossoftwaresafimdeverificarocomportamento
das correlaes existentes entre as mtricas e os dados mencionados. Verificamos atravs de
mineraoderepositrioeanalisesestatsticasdedadosqueosdadostemumagrandecorrelaopara
aalteraodosvaloresdasmtricasdesoftware.
Palavraschave:Mtricasdemodularidade,Mineraoderepositrios,bugs,Evoluodesoftware.
ABSTRACT
Thisworkverifiedhowthemetricsofmodularitybehaveovertimewiththeadditionoffunctionality,
bugfixesanddevelopercollaboration.Thereareseveralstudiesinthearealookingtofindpatternsof
softwaremetricsandtheappearanceofbugs.Thisworkanalyzesweremadethroughoutthelifeof
softwareinordertoverifythebehaviorofcorrelationsbetweenmetricsandtheinformationcontained
herein.Lookedthroughrepositoryminingandstatisticalanalysisofdatathatthedatahasahigh
correlationtothechangingvaluesofsoftwaremetrics.
Keywords:Metricsformodularity,Miningrepositories,bugs,softwareevolution.
LISTADEFIGURAS
LISTADETABELAS
TABELA
TABELA
TABELA
TABELA
TABELA
TABELA
TABELA
TABELA
TABELA
1:
2:
3:
4:
5:
6:
7:
8:
9:
LISTADEABREVIATURAS
SIGLA
OO
VCS
DVCS
OSD
MR
API
ADL
RFC
IDE
NOMECOMPLETO
OrientadoaObjeto
Version Control System
Distributed Version Control System
Open source definition
minerao de repositrios
Application Programming Interface
Linguagem de descrio de arquitetura
Reponse for classes
Integrated Development Environment
SUMRIO
INTRODUO............................................................................................
1.1
ESTRUTURADAMONOGRAFIA................................................................
TRABALHOSRELACIONADOS................................................................
REFERENCIALTERICO.........................................................................
3.1
3.1.1
3.1.2
3.1.3
CONTROLE DE VERSO...........................................................................
Controle de verso Local.............................................................................
Controle de verso centralizado..................................................................
Controle de verso distribudo.....................................................................
3.2
GIT...............................................................................................................
3.3
3.4
MINERAO DE REPOSITRIOS.............................................................
3.5
3.5.1
3.5.2
MTRICAS DE MODULARIDADE..............................................................
Tamanho de Cdigo.....................................................................................
Estrutural......................................................................................................
3.6
CORRELAO DE PEARSON...................................................................
3.7
3.7.1
BUG..............................................................................................................
Tipos comuns de Bugs.................................................................................
METODOLOGIA.........................................................................................
APRESENTAOEANLISEDOSRESULTADOS.................................
5.1
EVOLUO DO TOMCAT...........................................................................
5.2
EVOLUO DO POI....................................................................................
5.3
EVOLUO JMETER..................................................................................
5.4
CONCLUSESETRABALHOSFUTUROS...............................................
REFERNCIAS...........................................................................................................
ANEXOAGRFICOSEVOLUTIVOSDETODOSOSDADOS
COLETADOS...............................................................................................
INTRODUO
1.1 Estruturadamonografia
Estetrabalhoestdivididoem5captulosalmdaintroduo.Nocaptulo2
falamossobreostrabalhosrelacionadosnareaeoquemotivouodesenvolvimento
dessestrabalho.Nocaptulo3apresentamosoreferencialtericocomconceitose
definies. No captulo 4 mostramos a metodologia utilizada, como conseguimos
gerar os dados necessrios. No captulo 5 apresentamos os resultados obtidos
visualizandoatravsdegrficosetabelas.Nocaptulo6realizadoaconclusodo
trabalhoatravsdasanlisesdosgrficosetabelasobtidos.
TRABALHOSRELACIONADOS
Aocomearminhaspesquisasnareademtricasdemodularidadealguns
trabalhos (SCHRTER; ZIMMERMANN,2006)(NAGAPPAN,NACHIAPPANet
al.,2006),
Em(NAGAPPAN,NACHIAPPANetal.,2006) iniciadoumestudoem
cincoprogramasdaMicrosoftparaaidentificaodefalhasdeprogramasatravsdas
mtricasdesoftware.Nofoipossvelidentificarumacorrelaosignificativaentre
algumamtricademodularidadeeapresenadefalhasnosistema.
No segundo trabalho (SCHRTER; ZIMMERMANN, 2006) ele d
continuidadeaotrabalhode(NAGAPPAN,NACHIAPPANetal.,2006)trabalhando
oaparecimentodebugsantesedepoisdolanamentodaverso3.0doeclipse,no
trabalho ele correlaciona as mtricas de modularidade com a densidade de bugs
encontradoantesdedepoisdaverso.Almdissoelecorrelacionaoaparecimentode
bugscomaquantidadededesenvolvedoresantesedepoisdolanamentodaverso.
Em outro trabalho (SUBRAMANYAM; KRISHNAN, 2003) foram
analisadosprojetosdelinguagensdiferentesverificandoseexistiamcorrelaesentre
asmtricasdemodularidadeeoaparecimentodebugs.Notrabalhonofoipossvel
verificar um padro entre as linguagens do aparecimento de bugs e as mtricas
analisadas,masfoiverificadoquealgumasmtricasdemodularidadecorrelacionam
comoaparecimentodefalhasnosistema.
Nosprojetosanterioressopropostosvriosmelhoramentosdeseustrabalhos
em(SCHRTER;ZIMMERMANN,2006)propeumaanlisemaisprolongadado
projeto,analisarmaisdeumaversodosistema.Em(NAGAPPAN,NACHIAPPAN
et al., 2006) prope autilizaode mais mtricas, mais verses e com a mesma
linguagemdeprogramao.
Verificando essas limitaes nos projetos anteriores iremos analisar as
mtricas de modularidade em longo perodo de vida do software, quantidade de
verses maior que 10, entre trs projetos de uma mesma empresa, Open Source,
Orientado a Objeto e de uma mesma linguagem Java. Iremos correlacionar as
principaismtricasdemodularidadecomaquantidadedebugscorrigidasporverso,
aquantidadededesenvolvedorescolaboradosporversoeaquantidadedefeatures
adicionadasaolongododesenvolvimentodosistema.
REFERENCIALTERICO
3.1.1 ControledeversoLocal
Omtodopreferidodecontroledeversopormuitaspessoasacriaodevrias
pastascomasversesdosarquivos.aformamaissimplesdeversionamentodearquivos,
masmuitosuscetvelaerros.muitofcilesquecerondefoiguardadooarquivoougravar
umarquivoemumdiretrioerradosobrescrevendooarquivoanterior.
Figura1:Diagramadecontroledeversolocal
3.1.2 Controledeversocentralizado
Umgrandeproblemaidentificadonosprojetoseraquandovriosdesenvolvedores
desejavamtrabalharemconjuntocomoutrosdesenvolvedores,queutilizamoutrosVCS.Para
solucionarissofoicriadoumdosmtodosmaisutilizadosnosVCSocontroledeverso
centralizado.Nestemtodofoidesenvolvidoumservidorcentralizavaoarmazenamentode
todas as modificaes de arquivos feito no sistema e agora cada desenvolvedor poderia
resgatar(checkout)osarquivosdoservidor.
Figura2:Diagramadecontroledeversocentralizado
Estemtodooferecevriasvantagens,especialmentesobreomtododeversolocal.
Agoratodomundotemumconhecimentorazovelsobreoqueosoutrosdesenvolvedores
estofazendonoprojeto.Administradoresdosistemaocontroledoquecadadesenvolvedor
devefazer.
Entretantoestemtodooferecefalhar,poistudoestcentralizadonoservidorcentral.
Seesteservidorficarforadoaroutiverproblemasnosistemadearquivos,namelhordas
hiptesesosdesenvolvedoresficaramsemtrabalharpeloperodoqueoservidorficarforado
ar.Eemumproblemamaisgraveoservidorpodecorromperoseusistemadearquivoeassim
perdertodoohistricodemodificaesdoprojeto.
3.1.3 Controledeversodistribudo
Figura3:Diagramadecontroledeversodistribudo
Alm disso, muitos desses sistemas funcionam muito bem quando se tem vrios
repositrios remotos com os quais eles podem colaborar, permitindo que vrios
desenvolvedores trabalhem em conjunto em vrios projetos diferentes e simultaneamente.
Isso permite o estabelecimento de diferentes workflow (fluxo de trabalho) que no so
possveisemsistemascentralizado,porexemplo,usodehierarquia.
3.2 GIT
O GIT foi desenvolvido a partir da necessidade sentida no processo de
desenvolvimentodokerneldoLinux.Entre1991e2002oLinuxeradistribudoatravsde
patchearquivoscompactados.Em2002,oprojetodokerneldoLinuxcomeouautilizaro
sistemaDVCS(Distributed Version Control System)proprietriochamadoBitKeeper.
Velocidade
Designersimples
Suporterobustoaodesenvolvimentonolinear
Totalmentedistribudo
Capazdelidarcomgrandesprojetos.
Desde2005oGitevoluiueamadureceuapontodeserumsistemafcildeusare
aindaassimmatemessasqualidadesiniciais.rpido,eficientepragrandesprojetosepossui
umtimosistemadebranchingparaodesenvolvimentonolinear.
OGitclassificaosarquivosemtrsestadosfundamentais:consolidado(Commited),
modificado (modified) e preparado (staged). Dados so tidos como consolidados quando
estoarmazenadosnabasededadoslocal.Modificadoquandoumarquivosofreualteraes
masaindanofoiconsolidadonabasededados.Umarquivotidocomopreparadoquando
vocadicionaoarquivoparafazerpartedeumaconsolidao(Commited).
Figura4:Diretriodetrabalho,readepreparao,eodiretriodoGit.
OworkflowbsicodoGitpodeserdescritoassim:
1. Vocmodificaarquivosnoseudiretriodetrabalho.
2. Vocselecionaosarquivosparafazerpartedocommit.
3. Vocfazocommit,quearmazenaosarquivoscomoelesestonabasede
dadoslocal.
todaaliberdadedeusodosistema.UmexemplofoioNetscapewebbrowser(ouseja,O
projetodoMozilla),ocompiladorJavaJikesdaIBMeoKiltdedesenvolvimentoJavadaSun
quehojefoicompradopelaOracle.
Quando o dono do projeto v a possibilidade de convidar outras pessoas para o
desenvolvimento do projeto ele faz com que o cdigo esteja disponvel outros
desenvolvedoreseodesenvolvimentoprossegue.Normalmentequalquerumpodecontribuir
paraodesenvolvimentodosistema,mascabeaodonodoprojetodecidirqualcontribuidor
podeounosetornapartedolanamentooficialdoprojeto.
O desenvolvimento do modelo open Source (OSD) diferente dos processos
tradicionaisdedesenvolvimentocomercialinhouseemvriosaspectosfundamentais.Em
primeirolugar,oobjetivoprincipaldeumprojetoOpensourcecriarumsistemaqueseja
tilouinteressanteparaaquelesqueestotrabalhandonisso,noparasuprirumacarncia
comercial.
Desenvolvedoressofrequentementevoluntriosnoremuneradosquecontribuem
paraoprojetocomoumhobby,emtroca,elesrecebemoreconhecimentodacomunidadee
satisfaopessoalporseusesforos.Asvezesissosignificaquegrandepartedosesforosem
umprojetoOSDconcentrasenoqueosprogramadoresachaminteressanteemfazernasua
partedotempo,aoinvsdefazeroessencial.Podeserdifcildirecionaroprojetoparao
objetivoespecificojqueodonodoprojetonotempodersobreosdesenvolvedoresque
contribuem.Estaliberdadetambmsignificanadificuldadedeconvencerosdesenvolvedores
paraexecutartarefasessenciais,taiscomotestessistemticosoureestruturaodecdigo,
quenosotoemocionantescomoaescritadeumnovocdigo.
Outras caractersticas notveis de desenvolvimento de cdigo aberto incluem
(GODFREY;TU,2000):
Agendamento:geralmentehpoucapressocomercialparamanterqualquer
prazosdifceis,enamaioriadesenvolvedoresOSDtemdayJobsqueocupa
amaiorpartedotempododesenvolvedor.Emboraissopossaimplicarem
ciclosdedesenvolvimentosmaislongos,estatambmumavantagem,pois
projetosOSDestoemgrandeparteimuneapressestimetomarket,uma
verso do sistema no lanada at que o proprietrio do sistema esteja
convencidoqueosoftwareestestvelemaduro.
Qualidadedecdigoepadrespodemvariarmuito:Comoocdigouma
contribuioficadifcilinsistirempadresparticulares,apesardequemuitos
projetostemguiasoficiaisdedesenvolvimentoemseussites.
Cdigoinstvelcomum:AlgunsprojetosOSDrefernciasuasmodificaes
aduaslinhasprincipaisdedesenvolvimento:aliberaodedesenvolvimento
que contem novas funcionalidade (feature) experimentais e uma liberao
estvelquecontmamaioriadasatualizaesecorreesdebugsdaltima
versoestvel.
Planejamentoevolutivo,testeseprevenodemanutenibilidadepodesofrer,
pois os desenvolvedores so encorajados a participar ativamente sem
necessariamenteterumacuidadosareflexoereorganizao.Aqualidadedo
cdigomantidoemgrandepartepordepuraesmassivamenteparalelas
(ouseja,vriosdesenvolvedorescadaumutilizandoocdigodooutro),em
vezdeterumsistemadeteste.
Repositrioshistricos:Comorepositriosdecontroledecdigo,repositrios
debugsearquivosdecomunicao.
RepositriosdeTempodeexecuotaiscomoregistrodeimplantaoque
contm informaes sobre a execuo e a utilizao da aplicao em um
simplesoumltiploslocaisdeimplantao.
RepositriodecdigoscomooSourceforge.neteGoogleCodequecontm
vrioscdigosdevriasaplicaesdesenvolvidaporvriosdesenvolvedores.
coesoparaderivarmedidasdequalidadedaarquiteturadesoftware.
Asmtricasdesoftwarepodemserseparadasmasseguintesreas:
1. Tamanhodecdigo.
2. Estrutural
3.5.1 TamanhodeCdigo
Cdigopodeserproduzidodevriasformas.Aformamaisutilizadaorientadoa
objetoquedeixaasmtricastradicionaismaisdifceis.
Temoscomomtricastradicionais:
Nmerodelinhasdecdigo.Existeumgrandeproblemanoclculodas
linhaspoismuitosprogramasutilizamdocumentaes,comentrios,linhas
embrancoemseuscdigoseissotrabalhanestamedida.Pararesolvereste
problematemosonmerodelinhasnocomentadosnaqualsoretirados
dacontagemaoscomentrioseaslinhasembrancodocdigo.
NmerodeClasse.Estamtricasnospermiteverificaroquantoumprojeto
est modularizado e menos complexo. O conceito de classe veio para
melhorar o entendimento do cdigo assim melhorando a manuteno,
aumentandoamodularidadeediminuindoacomplexidadedosoftware.
Nmerodearquivos. Comestamtricaspermitidosaberotamanhodo
projetoeacomplexidadedomesmo.Quantomaisarquivosmaisoscdigos
estodistribudosedestaformaficacadavezmaisdifcillocalizarondefoi
implementadodeterminadafuncionalidade.
3.5.2 Estrutural
Em cdigos orientados a objeto importante que o cdigo seja cada vez mais
divididoemmdulos.Asmtricasestruturaisirammensurar,medirainterligaodemdulos
com outros mdulos. Para uma baixa complexidade importante que os mdulos sejam
coesosenodependamdeoutrosmdulos.
Asmtricasestruturaisso:
MComplexidadeciclomtica
EQuantidadedesetas
Nquantidadedens
Pquantidadecomponentesconectados.
Figura5:Grafosdefluxosdecontroledeumprogramasimples.
Nafigura5.atemosumprogramasimples.Oprogramacomeanonvermelhoe
termina no n azul. Para o grafo 5.a, E=9, N =8 e P=1, resultando numa complexidade
ciclomticade3.Paraografo5.b,E=10,N=8eP=1,entoresultandonumacomplexidade
ciclomticade4.
Figura6:FormuladocoeficientedecorrelaodePearson.
Onde:
CxyCovarinciaouvarinciaconjuntadasvariveisXeY;
SxDesviopadrodavarivelX;
SyDesviopadrodavarivelY;
(a) (b)(c)
Figure9:GrficoscompossveisvaloresparaXeY
NaFigura9.atemosvariveispositivamentecorrelacionada.Nolimite,isto,sea
correlaoforperfeitacomoeocasoseconsiderarmosacorrelaodavarivelxconsigo
Correlao
correlao
r=1
Perfeita
0.8r<1
positiva
Forte
0.5r
positiva
Moderada
0.1r
positiva
Fraca
0<r<0.1
positiva
Intima
0
0.1<r<0
positiva
Nula
Intima
0.5<r0.1
negativa
Fraca
0.8<r0.5
negativa
Moderada
1<r0.8
negativa
Forte
r=1
negativa
Perfeita
negativa
Tabela1:ClassificaodosvaloresdaCorrelaodePearson
3.7 Bug
Umbugumapalavrainglesaquesignificainseto.Estetermogeralmenteusado
eminformticaquandoencontradoumerroemalgumprograma,ouseja,quandoalgum
programa age de maneira inesperada ou fora do comum. Ento, bug um erro no
funcionamentodeumsoftware,podendocausarcomportamentosinesperadoseindesejados.
Geralmenteelessocausadosporerrosdoprpriocdigofonte,maspodemsercausados
tambmporalgumcompilador,sistemaoperacionalouframework.
Otermobugfoimuitocitadonoanode1999quandoseesperavaqueacontecesseo
chamadobugdomilnio.Napoca,asempresasaindausavamsistemasantigoscomrecursos
escassosdesenvolvidosnosanos80,entomuitosprogramadorestratavamnosprogramas
que utilizavam datas apenas dois dgitos, assim "1991" era tratadocomo"91". O grande
receiodosdesenvolvedoresqueossistemaspudessemconfundiroano2000comoano
1900,serealmenteocorresseesseerroosclientesdebancosiriamversuasaplicaescom
jurosnegativoseosfuturosboletosdecobranateriam100anosdeatraso.Outrosustoque
sistemasmilitaresquecontrolavamarsenaisdeguerrapudessemfalharcausaracidentes.Nada
passoudeumgrandealardesemfundamentosjqueamaiorpartedessessoftwaresjprevia
aviradaetinhamtcnicasdecompensaoprprias.Logo,obugdomilnioerainofensivo.
Figura7:Umafotografiasupostamentedoprimeirobug(uminsetoreal)quefoidepurado
("debugado")em1947.Daoseuusonosdiasatuais.
OsBugs podemcausartantoproblemasinofensivoscomofalhasdesegurana.A
principalportadeentradaparaqueocorramessasfalhasautilizaodeprogramasquese
conectam a internet, clientes de email e navegadores. Crackers podem ter acesso aos
arquivos presentes no computador infectado, e divulgar para outras pessoas atravs da
internet.Assim,devesetomarcuidadoemprogramasnaversobeta,ouseja,programasem
desenvolvimento,sendoestesmaisvulnerveisaessetipodeataque.
Os bugs podem surgir em qualquer estgio do desenvolvimento de um software.
Muitosdelessocausadosporerrosdaequipededesenvolvimentoesoresultadosdafalha
dohomememlidarcomacomplexidadedossistemasdesoftware.Estessistemaschegama
possuirmilharesdearquivosnoseucdigofonte,ondecadaarquivospossuicentenasde
linhasdecdigo.
3.7.1 TiposcomunsdeBugs
Osbugspodemserclassificadosdaseguintemaneira:
Bugssintticos.Sobugsrelacionadosalinguagemdeprogramao.Como
emalgumaslinguagensx=5iratribuirovalor5avarivelxenquantoquex
==5irchecarseovalor5.
Bugsdeprogramasmultithread.Sobugsqueestorelacionadoadeadlock
onde um processo fica esperando outro processo liberar o recurso
compartilhadoenenhumdosdoisliberaesserecursocausandoassimuma
paradageraldosistema.
METODOLOGIA
Nestetrabalhoserrealizadoumaanliseestatsticasatravsdousodocoeficientede
Pearsonentreasmtricasdemodularidadeeasmedidasdequantidadedebugscorrigidos,
quantidadedefuncionalidadesadicionadaseaquantidadededesenvolvedores.
Comofoiexplicadonocapitulo3.1ossistemadeversionamentodesoftware
guardamtodotipodeinformaoespecificadosoftware.Informaesmuitovaliosas
queatravsdamineraoderepositriopodemseranalisadaseassimretirarpadres
dessasanalises.
ParaonossoestudoprocuramosprojetosOpenSource,escritosemJava,com
sistemadeversionamentodecdigodeprefernciaoGIT,tivessemummecanismos
decompilaoautomticavialinhadecomando,tivessemumrepositriosdeBug
comoporexemploobugzillaefossemprojetosdesucesso.
Verificandoositeoficialdo bugzilla(http://www.bugzilla.org/) foipossvel
identificarosprincipaisprojetosqueutilizavamobugzillacomorepositriosdeBug
e que eram Open Source. Os principais Projetos apresentados no site oficial do
bugzillaso:
Mozilla:https://bugzilla.mozilla.org/
LinuxKernel:http://bugzilla.kernel.org/
Gnome:http://bugzilla.gnome.org/
KDE:http://bugs.kde.org/
ApacheProject:http://issues.apache.org/bugzilla/
OpenOffice:http://www.openoffice.org/issues/query.cgi
Eclipse:http://bugs.eclipse.org/bugs/
Apsaanlisedessesprojetosverificandoapossibilidadedecompilaoautomtica,
utilizaoderepositriosdeversionamentoGitselecionamosprojetosdaApacheProject.Os
softwaresselecionadosdeveriamserdegrandesucesso,termaisque10milcommitseque
estoemplenodesenvolvimento.OsSoftwaresselecionadosforam:
1. Tomcat. uma implementao open source de java Servlet e JavaServer
PagesTechnologies.
2. POI. O apache POI tem a misso de criar e manter APIs java para a
manipulaodevriosarquivosdeformatosbaseadonotheOfficeOpen
XMLstandards(OOXML)ecomponentesMicrosoftsOLE2.
3. Jmeter. uma aplicao java feita para fazer teste funcionais e calcular
medidasdeperformance.
ComosprojetosselecionadosforamfeitososcheckoutdosrepositriosGITdecada
projeto:
POI:https://github.com/apache/poi
Jmeter:https://github.com/apache/jmeter
Tomcat:https://github.com/apache/tomcat
ParafazerodownloaddorepositriosgitmuitosimplesbastainstalaroGitemsua
mquina,nainternetmuitofcildeencontrartutoriaisqueexplicamainstalaodoGitpara
vriasplataformas,eutilizarocomando:
git clone link_do_repositorio_git
Porexemploparabaixarorepositriosdosprojetosacimaoscomandosso:
Tomcat
o
Jmeter
o
POI
Comoointuitodestetrabalhoanalisarasmtricasdemodularidadefoinecessrio
selecionar um software de anlise de mtricas de modularidade dos sistemas. Ento
ArchView
CodeCity
dadosminerados
Clculodemtricasdecdigo
Processamento de cdigo em
X
X
X
X
X
X
X
X
textopuro(nocompilado)
Interface grfica de
visualizaodosdados
Processamento
de
Oceano
Evoltrack
KalibroeAnalizo
EclipseMetrics
X
X
Sonar
Aplicaoweb
Interface de consulta aos
MetricMiner
Mezuro
pesquisamosnainternetvriosprogramasquefazemanalisedemtricas,soeles:
repositriosGIT
Tabela2:Quadrocomparativoentreaplicaesdeanlisedemtricasdemodularidade.
DentreosprojetosoMetricMinereomesurotemprocessamentoderepositriosGIT,
masnopossueminterfacegrficaoquedificultaavisualizaodosdados.OSonareoutros
trs sistemas possuem visualizao por interface grfica, mas apenas o sonar faz
processamento de cdigo em texto puro (sem compilao), o que ajuda na obteno de
mtricasdetamanhodosoftware.OeclipseMetricsapenas utilizadoatravsdoeclipsee
paraestetrabalhonecessrioqueoprogramanonecessitedeumaIDE,poisqueremos
gerarosdadosautomaticamente.EcomumaIDEissoficainviveletrabalhoso.
Portanto dentre todos os softwares de analises de mtricas de modularidade o
SonarQubefoioescolhidoparaserutilizadonesteprojeto.OSonarQubeumaplataforma
aberta de gerenciamento de qualidade de cdigo. Cobrindo os 7 eixos da qualidade de
software:
1. Arquiteturaedesign
2. Comentrios
3. RegrasdeCdigo
4. Potencialidadedebugs
5. Complexidade
6. TestesUnitrio
7. Duplicidades.
Fazanlisedemaisde20linguagensdeprogramaoentreelas:
Java
C#
C/C++
PL/SQL
COBOL
Python
SonarQube(verso3.7.4)
SonarRunner(verso2.3)
PrimeiramenterodamosoSonarQubeatravsdeumscriptqueestnoprprioprojeto
doSonar.Parainiciaroservidorbastarrodar:
./sonar.sh console
OsonarRunneroprogramaquevaifazeraanlisedocdigoeenviarosdadospara
oSonarQubearmazenarnabasededados.NesteconfiguramosoSonarQubeparatrabalhar
comoPostgresSQL9.1,paraissobastaprocuraroarquivodeconfiguraesdoSonarQubee
configuraloparatrabalharcomoconectorpgsql.ParaosonarRunnerfazeraanlisedos
projetos preciso configurar um arquivo chamado sonarprojetct.properties segue um
exemplodoquesedevesercolocadonestearquivo:
# Required metadata
sonar.projectKey=jmeter
sonar.projectName=jmeter
sonar.projectVersion=3.7
# Comma-separated paths to directories with sources (required)
sonar.sources=src/core
# Language
sonar.language=java
# Enconding of the source files
sonar.sourceEnconding=UTF-8
sonar.binaries=build/core
OComandosonar.languageinformaquallinguagemseranalisada,sonar.sources
informa caminho para o diretrio onde est o cdigo a ser analisado e sonar.binaries
informaondeestoosarquivoscompiladodossistema.Feitoissobastachamarnomesmo
diretrioondefoicriadoestearquivoocomandoparaexecuodosonarRunner.
Como o SonarQube no interage com repositrios GIT e no faz compilaes
automatizadas dos cdigos foi necessrio a criaode um script empythonpara fazer o
processodemodificaodasversesdocdigoporcomandoGIT,compilarosprojetospara
gerarosbinriosnecessriosaosonarparaconseguiranalisaralgumasmtricasestruturaisdo
cdigo.Ospassosutilizadosparaaobtenodosdadosforam:
GIT
Compilar
Limpar
possiveis
modifica
es
alterar
commit
Sonar
Executar
programa
ant.
Gerar
arquivo de
configura
o do
sonar.
Analisar
metricas
Armazena
dados no
banco de
dados
Figura8:Passosdoscriptpythonparaobtenodosdadosemcadacommit.
Comocadaprojetoselecionadoexistemmaisde10.000commitseoprogramafoi
executadoemumperodode48horas,paraumamaiorabrangnciadeversespossveis
nessas 48 horas foram feitos pulos de 6 commits. Foram analisado para cada projeto os
seguintesperodosdecommit:
Projeto
Perodo
Jmeter
7/10/2010 12/10/2012
POI
8/5/2008 9/2/2014
Tomcat
21/11/2010 9/2/2014
Tabela3:Perododecommitsanalisadosporprojeto.
Nestesperodosforampossveisanalisarasseguintesquantidadesdeverso:
Projeto
Quantidade de verses
Jmeter
22
POI
41
Tomcat
18
Tabela4:Quantidadedeversesanalisadas.
utilizadoosdadosdastabelasemExcelparafazeroclculodacorrelaodePearson.O
softwaresemostroumuitoprticoerpidoparafazerocorrelacionamentodosdados.
APRESENTAOEANLISEDOSRESULTADOS
Aseguirapresentadoosgrficosdaevoluodosdadosmaissignificantes
demtrica,quantidadedefeature,correodebugequantidadededesenvolvedores
dosprojetos.
Figura9:EvoluodaCorreodebugsTomcat
Figura10:EvoluodaQuantidadedeDesenvolvedoresTomcat
Figura11:EvoluodaQuantidadedefeaturesTomcat
Figura12:EvoluodovalordametricadeCiclosdePacotesTomcat
Figura13:EvoluodaQuantidadedeFunesTomcat
Figura14:EvoluodaComplexidadedeFunodeTomcat
Figura15:EvoluodaComplexidadeCiclomticadoTomcat
Figura16:EvoluodaQuantidadedefeaturesPOI
Figura17:EvoluodaCorreodeBugsPOI
Figura18:EvoluodaQuantidadedeDesenvolvedoresPOI
Figura19:EvoluodovalordametricaCiclodePacotePOI
Figura20:EvoluodaQuantidadedeFunoPOI
Figura21:EvoluodaComplexidadedeFunoPOI
Figura22:EvoluodaComplexidadeCiclomticaPOI
Figura23:EvoluodaQuantidadeCorreoJmeter
Figura24:EvoluodaQuantidadesDesenvolvedoresJmeter
Figura25:EvoluodaQuantidadedeFeaturesJmeter
Figura26:EvoluodovalordamtricaCiclodePacoteJmeter
Figura27:EvoluodaQuantidadedeFunesJmeter
Figura28:EvoluodaComplexidadedeFunoJmeter
Figura29:EvoluodaComplexidadeCiclomticaJmeter
TodososdadosgeradosseencontramnoapndiceAdestetrabalho.
Aseguiresto3tabelascomosvaloresdacorrelaodePearson.
Mtrica\Projeto
RFC
Pacote
Linhas
Complexidade de
funo
Arquivos
Complexidade
Classes
Ciclo de Pacote
NCLOC
Funo
Complexidade de
Arquivo
Complexidade de
Classe
Accessors
0,599
0,981
0,89
0,139
0,799
0,919
0,781
0,826
0,97
0,933
-0,978
0,657
0,221
-0,34
-0,444
0,789
-0,324
0,774
0,56
0,922
Tabela5:CorrelaodePearson(BUGxMtricas)
Mtrica\Projeto
RFC
Pacote
Linhas
Complexidade de
funo
Arquivos
Complexidade
Classes
Ciclo de Pacote
NCLOC
Funo
Complexidade de
Arquivo
Complexidade de
Classe
Accessors
Correlao de Pearson
Desenvolvedor x Mtricas
Jmeter
POI
Tomcat
0,91
0,716
0,557
0,791
0,795
0,84
0,931
0,939
0,534
0,694
0,084
0,84
0,95
0,962
0,971
0,949
0,942
0,946
0,832
0,682
0,928
0,881
0,421
0,945
0,918
0,656
0,834
0,853
0,855
-0,997
0,594
-0,015
-0,463
-0,259
0,677
-0,298
0,899
0,755
0,849
Tabela6:CorrelaodePearson(DesenvolvedoresxMtricas)
Mtrica\Projeto
RFC
Pacote
Linhas
Complexidade de
funo
Arquivos
Complexidade
Classes
Ciclo de Pacote
NCLOC
Funo
Complexidade de
Arquivo
Complexidade de
Classe
Accessors
Correlao de Pearson
Feature x Mtricas
Jmeter
POI
Tomcat
0,976
0,763
0,57
0,766
0,883
0,954
0,969
0,944
0,507
0,719
-0,011
0,954
0,973
0,967
0,988
0,985
0,94
0,964
0,712
0,615
0,977
0,892
0,094
0,962
0,974
0,76
0,846
0,987
0,887
-0,982
0,546
0,223
-0,286
-0,378
0,767
-0,205
0,845
0,76
0,86
Tabela7:CorrelaodePearson(FeaturexMtricas)
AstabelasmostramosvaloresdacorrelaodePearsonrelacionandoFeature,
Bug, Desenvolvedores e as principais Mtricas. Para uma melhor visualizao do
dadosforammarcadosemvermelhoascorrelaesdemaiorndice,sejanegativoou
positivo,das3tabelasentreasmtricas.
Verificase que a correlao foi forte positiva para 54,70% (62/117) das
correlaes e fortemente negativa para 2,56% (3/117) das correlaes, verificase
correlaomoderadapositivapara29,91%(35/117)doscasos,verificasecorrelao
fracapositivapara3,41%(4/117)doscasosefracanegativapara7,69%(9/117)dos
casos.
QuandocomparadoBugsemtricastemseque43,58%(17/39)dosmaiores
ndices de correlao esto relacionados a correo de Bugs. Para a comparao
Desenvolvedores e Mtricas temse que 15,38% (6/39) dos maiores ndices de
correlaoestorelacionadosaquantidadededesenvolvedores.Paraacomparao
FeaturexMtricastemseque46,15%(18/39)dosmaioresndicedecorrelaoesto
relacionadosaoacrscimodeFeatures.
Como de se esperar o acrscimo de features (43,58%) tem uma maior
correlaocomoaumentooudiminuiodasmtricasdeumsoftwareseguindopela
correodebugs(46,15%)eporltimoaquantidadededesenvolvedores(15,38%).
QuandoanalisadoosdadosisoladosparaoJmetertemseque38,46%(5/13)
dosmaioresndicesdecorrelaoquandocomparadoasmtricascomaquantidade
de bugs corrigidos. Analisando as correlaes comparando as mtricas com a
quantidade de desenvolvedores temse que 23,07% (3/13) dos maiores ndices.
Analisandoascorrelaescomparandoasmtricascomaquantidadedefeaturetem
seque46,15%(6/13)dosmaioresndicesdecorrelao.Quandocomparadocomos
valoresglobaisdecorrelaovsequeoJmeteracompanhaatendnciadequeo
acrscimo de features tem uma forte influncia no aumento ou diminuio das
mtricas.
QuandoanalisadoosdadosisoladosparaoPOItemseque38,46%(5/13)dos
maiores ndicesdecorrelaoestorelacionadosaquantidadedebugscorrigidos.
Analisando as correlaes comparando as mtricas com a quantidade
desenvolvedorestemseque15,38%(2/13)dosmaiores ndicesdePearsonesto
relacionados a quantidade de desenvolvedores. Analisando o ndice de Pearson
comparandoasmtricascomaquantidadedefeaturestemseque53,84%(7/13)dos
ndices.QuandocomparadocomosvaloresglobaisdecorrelaovsequeoPOI
Projeto
Tomcat
POI
Jmeter
Quantidade mxima
de Linhas de Cdigo
Quantidade de Linhas
de cdigo
338223
163550
59764
Tabela8:Quantidadedelinhas
Figura30:HistoriodacomplexidadeciclomticadoTomcat
ComissoacorreomaiscomplicadanoTomcatlevandoaterumpeso
maiornacorrelaodosbugscomasmtricas.
Umdadointeressantequefoimostradonastabelasdecorrelaoest
relacionadoosndicesdePearsonnegativos:
Mtrica\Projeto
Pearson BUG x
Mtricas
Pearson
Desenvolvedor x
Mtricas
Pearson Feature x
Mtricas
Tomcat
Ciclo de Pacote
-0,978
-0,997
-0,982
Tabela9:ndicedePearson
Estatabelamostramqueparaoprojetotomcatoaumentodacorreode
bugs,oaumentodaquantidadededesenvolvedoreseoaumentodaquantidadede
featuresnoprojetodotomcatapresentouumacorrelaonegativa.Aqualpodeser
vistanosgrficos:
Correcao de bugs
Ciclo de pacotes
Figura31:EvoluodacorreodebugsxMetricadeCiclosdePacote
Quantidade de Features
Ciclo de pacotes
Figura32:EvoluodaquantidadedefeaturesxMetricasdeCiclosdePacote
Quantidade de desenvolvedores
Ciclo de Pacotes
Figura33:EvoluodaquantidadededesenvolvedoresxMetricadeCiclosdePacote
Esses graficos mostra que a troca de verses de 7.20 para 8.0 houve um
esforo muito grande dos desenvolvedores para diminuir a modularidade e
consequentimenteadependenciasdepacotes.
CONCLUSESETRABALHOSFUTUROS
Como foi visto nos correlacionamento e grficos os dados dos softwares
modificammuitoaolongodesuavida.Verificousequeacorrelaodasvariaesda
quantidadedefeaturesteveumpesosignificativonoaumentodasmtricasobtendo
umacorrelaofortepara43,58%doscasos.
Um dado muito interessante obtido nesse estudo foi que na mudana de
versodotomcatde7.xpara8.xhouveumadiminuionadependnciacclicade
pacotesoquesignificaumadiminuiodoacoplamentodoprojeto.Podeseverificar
quehouveumesforoenormenodesenvolvimentodaverso7.xpara8.xdotomcat
ondeverificamosqueaquantidadededesenvolvedores,correodebugseacrscimo
defeaturesaumentarammuitocausandoumaumentodetodasasmtricasmenosda
dependnciacclicadepacotes.
Nestetrabalhopodeseverificarqueacorreodebugsnosistemaumdado
importantenoaumentodasmtricasdosistemas.
Umdospontosnegativosequedeveserfeitoemtrabalhosfuturosaanlise
detodasasversesecommitsdetodosossistemas.Aanlisedemaisprojetosopen
sourcecomofoivistoos3projetosobtiveramomesmopadronascorrelaese
dados, mas devemos variar projetos de outras empresas j que os 3 projetos
escolhidosfazempartedaorganizaoApache.
REFERNCIAS
DOBRICA,L.;NIEMELA,E.Asurveyonsoftwarearchitectureanalysismethods.IEEE
TransactionsonSoftwareEngineering,v.28,n.7,2002.
GALL,H.;HAJEK,K.;JAZAYERI,M.Detectionoflogicalcouplingbasedonproduct
releasehistory.Proceedings.InternationalConferenceonSoftwareMaintenance(Cat.
No.98CB36272),1998.
GODFREY,M.W.;TU,Q.Evolutioninopensourcesoftware:acasestudy.Proceedings
InternationalConferenceonSoftwareMaintenanceICSM94,p.131142,2000.IEEE
Comput.Soc.Press.Disponvelem:<http://ieeexplore.ieee.org/lpdocs/epic03/wrapper.htm?
arnumber=883030>..
LINDVALL,M.;TESORIERO,R.;COSTA,P.Avoidingarchitecturaldegeneration:an
evaluationprocessforsoftwarearchitecture.ProceedingsEighthIEEESymposiumon
SoftwareMetrics,2002.
NAGAPPAN,N.;BALL,T.;ZELLER,A.Miningmetricstopredictcomponentfailures.
Proceedingsofthe28thinternationalconferenceonSoftwareengineering.Anais...,ICSE
06..p.452461,2006.ACM.Disponvelem:
<http://doi.acm.org/10.1145/1134285.1134349>..
NAGAPPAN,N.;BALL,T.;ZELLER,A.ObjectOrientedMetricsWhichPredict
Maintainability.ofthe28thinternationalconferenceon,2006.Disponvelem:
<http://eprints.cs.vt.edu/archive/00000347/01/TR9305.pdf>.Acessoem:12/3/2014.
SCHRTER,A.;ZIMMERMANN,T.Ifyourbugdatabasecouldtalk.Proceedingsofthe
5th,p.35,2006.Disponvelem:<http://home.segal.uvic.ca/~pubs/pdf/14/schroeter
isese2006b.pdf>..
SUBRAMANYAM,R.;KRISHNAN,M.S.EmpiricalanalysisofCKmetricsforobject
orienteddesigncomplexity:implicationsforsoftwaredefects.IEEETransactionson
SoftwareEngineering,v.29,n.4,p.297310,2003.Disponvelem:
<http://ieeexplore.ieee.org/lpdocs/epic03/wrapper.htm?arnumber=1191795>..
ANEXOAGRFICOSEVOLUTIVOSDETODOSOSDADOS
COLETADOS.
RFC Tomcat
NCLOC Tomcat
Accessors Tomcat
RFC Jmeter
NCLOC Jmeter
Quantidade de arquivos
Accessors Jmeter
390
380
370
360
350
340
330
320
310
RFC POI
NCLOC POI
Accessores POI