Upload
thiago-colares
View
1.574
Download
0
Embed Size (px)
DESCRIPTION
Thiago Colares e Vagner Amaral
Citation preview
Aplicação da Teoria dos Grafose Algoritmos na Engenharia de Software:
Hyperlink-Induced Topic Search (HITS) e Identificação de God Classes.
Mestrado em Ciência da Computação - UFBA/UEFS
Thiago ColaresVagner Amaral
Salvador, 28/03/2013
Agenda
• Problema da busca textual
• Hyperlink-Induced Topic Search (HITS)
• Por que identificar God Classes?
• HITS para identificação de God Classes
• Conclusão / Trabalhos Futuros
Quero comprarum carro.
http://www.flickr.com/photos/buzrael/4981570801/sizes/l/in/photostream/
Pergunta para amigos.“melhores fabricantes de carro?”
Quero compraruma bicicleta.
http://www.flickr.com/photos/buzrael/4981570801/sizes/l/in/photostream/
“melhores fabricantes de carro dos últimos 4 anos”
A busca na Webpor termos.
http://www.flickr.com/photos/daniel_gies/5427386376/sizes/l/in/photostream/
Maecenas sed diam eget risus varius blandit sit amet non melhores fabricantes. Donec id elit non mi porta gravida at eget metus. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Etiam porta sem malesuada magna mollis euismod. Carros mollis interdum. Cras justo odio, dapibus ac facilisis in, egestas ege últimos 4 anos.
melhores fabricantes carro automóvel veículo melhores melhores fabricantes carro automóvel veículo melhores melhores fabricantes carro automóvel veículo melhores melhores fabricantes carro automóvel veículo melhores melhores fabricantes carro automóvel veículo melhores melhores fabricantes carro automóvel veículo melhores
melhores fabricantes carro automóvel veículo melhores melhores fabricantes carro automóvel veículo melhores melhores fabricantes carro automóvel veículo melhores melhores fabricantes carro automóvel veículo melhores melhores fabricantes carro automóvel veículo melhores melhores fabricantes carro automóvel veículo melhores
Ocorrência de termos não implica em relevância.
Grandes marcas falam mais sobre seus produtos,
não sobre si mesmas.
Milhões de resultados.Como trazer primeiro os
mais relevante para a busca?
Precisamos identificar as Autoridades sobre a
busca realizada.
Classificação de resultados em Autoridades e Hubs.
Através da análise de links.
FerrariWebsite oficial da Ferrari.http://www.ferrari.com
FiatGrande empresa italiana.http://www.ferrari.com
FordFabricante de carros.http://www.ferrari.com
ChyrslerCompania america de jeep e carros esportivos.http://www.ferrari.com
Car Rankingshttp://www.Edmunds.com
Car Rankingshttp://www.ConReport.com
Manufacturer Websiteshttp://www.CarManu.com
FerrariWebsite oficial da Ferrari.http://www.ferrari.com
FiatGrande empresa italiana.http://www.ferrari.com
FordFabricante de carros.http://www.ferrari.com
ChyrslerCompania america de jeep e carros esportivos.http://www.ferrari.com
Car Rankingshttp://www.Edmunds.com
Car Rankingshttp://www.ConReport.com
Manufacturer Websiteshttp://www.CarManu.com
Autoridades
FerrariWebsite oficial da Ferrari.http://www.ferrari.com
FiatGrande empresa italiana.http://www.ferrari.com
FordFabricante de carros.http://www.ferrari.com
ChyrslerCompania america de jeep e carros esportivos.http://www.ferrari.com
Car Rankingshttp://www.Edmunds.com
Car Rankingshttp://www.ConReport.com
Manufacturer Websiteshttp://www.CarManu.com
Hubs
Autoridades
FerrariWebsite oficial da Ferrari.http://www.ferrari.com
FiatGrande empresa italiana.http://www.ferrari.com
FordFabricante de carros.http://www.ferrari.com
ChyrslerCompania america de jeep e carros esportivos.http://www.ferrari.com
Car Rankingshttp://www.Edmunds.com
Car Rankingshttp://www.ConReport.com
Manufacturer Websiteshttp://www.CarManu.com
Hubs
Autoridades
Hyperlink-Induced Topic Search (HITS) (“hubs and authorities”)
Algoritmo de análise de links para classificar páginas na Web
Jon Kleinberg, 99 (IBM)
Precursor do PageRank
Pré-processamento
Documentos na Web
conectados por hyperlinks
1º Passo: Busca textual
Q: “melhores fabricantes de carro dos últimos 4 anos”
Q: “melhores fabricantes de carro dos últimos 4 anos”
Resultado: subgrafo R (root)
Resultado: subgrafo R (root)
Características(1) Ainda é proporcionalmente pequeno(2) Deve ser rico em páginas importantes(3) Provavelmente não contém autoridades
2º Passo: Expande-se o subgrafo R(Region Growing Method)
2º Passo: Expande-se o subgrafo R(Region Growing Method)
Resultado: subgrafo S (seed)Base do algoritmo
Resultado: subgrafo S (seed)Base do algoritmo
Resultado: subgrafo S (seed)
Características(1) Ainda é proporcionalmente pequeno(2) Provavelmente conterá autoridades
Definições
• Cada página tem dois índices
• ai authority weight da página i
• hi hub weight da página i
• Páginas com grande ai são Autoridades
• Páginas com grande hi são Hubs
Atualizando pesos de S
ap é...
soma do hi de todos os nós i apontando para p
i2
pi1
Atualizando pesos de S
hp é...
soma do ai de todos os nós i apontados por p
i1
i2p
Atualizando pesos de S
Ou seja,
Um bom Hub aumenta o a de quem aponta;
Uma boa Autoridade aumenta o h de quem aponta para ela.
Atualizando pesos de S
Seja,A a matriz de adjacência de S;a vetor com pesos de autoridade de S;h vetor com pesos de hubs do subgrafo S;O sistema que atualiza os pesos de S é:
• a = At . h (Eq. 1)
• h = A . a (Eq. 2)
Exemplo
2
3
1
[ ]Exemplo
2
3
10 0 10 0 10 0 0
A =
[ ][ ]
Exemplo
2
3
10 0 10 0 10 0 0
A =
0 0 00 0 01 1 0
At =
[ ][ ]
Exemplo
2
3
10 0 10 0 10 0 0
A =
0 0 00 0 01 1 0
At =
ht = [1,1,1]
[ ]Exemplo
0 0 00 0 01 1 0
a = At . h = [ ]111 =[ ]002
[ ]Exemplo
0 0 00 0 01 1 0
a = At . h = [ ]111 =[ ]002[ ]0 0 10 0 10 0 0
h = A . a = [ ]111 =[ ]220
Exemplo
2
3
1a1 = 0
h1 = 2
a2 = 0
h2 = 2
a3 = 2
h3 = 0
Observações
• Neste caso, novas iterações irão gerar vetores equivalentes ao atuais, mas multiplicados por um escalar;
• O algoritmo deve se repetir até o critério de parada ou equilíbrio;
• Em grafos mais complexos, o equilíbrio pode não existir.
O Algoritmo
Itere(G,k)G: coleção de n páginas linkadask: um número naturalz é o vetor (1;1;1;...;1) E RnSet x0 := z:Set y0 := z:For i = 1;2;...;k Opere (xi−1; yi−1), set x’i // Eq. 1 Opere (x’i; yi−1), set y’i // Eq. 2 Normalize x'i, set xi Normalize y'i, set yiEndReturn (xk; yk).
Análise da Complexidade
• Eq. 1 é uma multiplicação matriz-vetor
• Eq. 2 é uma multiplicação matriz-vetor
• Ambas são executas k vezes.
• O(k)[O(n2) + O(n2)] = O(k.n2)
• Existem formas de melhorar
• (vide anexos e referências)
Por que identificar God Classes?
God Classes
Centralização da inteligência / complexidade de um sistema (herança da programação procedural)
http://www.corej2eepatterns.com/Patterns2ndEd/images/SLMainClass.gif
God Classes
Violam o princípio da distr ibuição uni forme de responsabilidades.
http://www.corej2eepatterns.com/Patterns2ndEd/images/SLMainClass.gif
God Classes
Difíceis de implementar, manter e testar.
http://www.corej2eepatterns.com/Patterns2ndEd/images/SLMainClass.gif
God Classes
Delegam pequenos detalhes e utilizam dados de outras classes mais triviais do sistema.
http://www.corej2eepatterns.com/Patterns2ndEd/images/SLMainClass.gif
God Classes
Impacto negativo na reutilização de componentes e na compreensão do sistema.
http://www.corej2eepatterns.com/Patterns2ndEd/images/SLMainClass.gif
http://doi.ieeecomputersociety.org/cms/Computer.org/dl/trans/ts/2009/03/figures/tts20090303471.gif
Estratégia para Detecção de God Classes [Lanza, 2006]
Acessam diretamente muitos dados de outras classes mais simples.
http://doi.ieeecomputersociety.org/cms/Computer.org/dl/trans/ts/2009/03/figures/tts20090303471.gif
São grandes (LOC) e complexas.
Estratégia para Detecção de God Classes [Lanza, 2006]
http://doi.ieeecomputersociety.org/cms/Computer.org/dl/trans/ts/2009/03/figures/tts20090303471.gif
Baixa coesão entre os métodos da classe.
Estratégia para Detecção de God Classes [Lanza, 2006]
http://doi.ieeecomputersociety.org/cms/Computer.org/dl/trans/ts/2009/03/figures/tts20090303471.gif
Estratégia para Detecção de God Classes [Lanza, 2006]
Exemplo: Forno Elétrico
HITS x God Classes
HITS x God Classes
HITS x God Classes
HITS x God Classes
HITS x God Classes
HITS x God Classes
a = vetor dos pesos das autoridades;
h = vetor dos pesos dos hubs;
A = matriz de adjacência do Grafo;
AT = matriz transposta de A;
HITS x God Classes
HITS x God Classes
Resolução do sistema: iterativa (Gauss-Seibel) ou utlizando o Teorema de Perron ou o Método das Potências
HITS x God Classes
Os vetores a e h podem ser obtidos através do principal autovetor normalizado de ATA e AAT. O principal autovetor é aquele associado ao maior autovalor.
Autovetor e Autovalor?
Seja V um espaço vetorial sobre um corpo F e A: V→ V uma transformação linear.
v é um autovetor quando v não é um vetor não nulo e existe um escalar k tal que
A * v = k * v
Nesse caso, pode-se dizer também que k é um autovalor.
HITS x God Classes
Como identificar a God Class?
Peso do HUB é alto: Behavioral God Class
Peso da Autoridade é alto: Structure God Class
Utilizar a média entre os dois pesos
Forno Elétrico: Cadê a God Class?
Forno Elétrico: Cadê a God Class?
Forno Elétrico: Cadê a God Class?
A classe 3 é uma God Class?
a3 = 0
Pois nenhum dos hubs associados a ele recebe mensagens de outra classe que não da própria 3.
A classe 3 é uma God Class?
h3 = 1
Essa classe é a única que inicia alguma atividade no sistema.
Conclusões / Trabalhos Futuros
• O HITS é uma boa solução para “rankeamento” de documentos resultantes de busca textual, do qual o PageRank também se utilizou como inspiração.
• O HITS é indicado para “rankeamento” onde se precisa identificar autoridades e hubs.
• O PageRank usa abordagem parecida, mas apenas se preocupa com autoridades e apresenta uma complexidade melhor O(n).
Conclusões / Trabalhos Futuros
• Análise de outras informações do software que podem ser identificadas com o uso do HITS.
• Benchmarking com outras técnicas da área de Engenharia de Software para extração de God Classes.
• Aplicação do algoritmo PageRank para extração de God Classes.
Referências[1] Riel, A. J. Object-Oriented Design Heuristics. Addison- Wesley, Boston, MA, 1996.
[2] Lanza, Michele and Radu Marinescu. Object Oriented Metrics in Practice: Using Software Metrics to Characterize, Evaluate, and Improve the Design of Object-Oriented Systems. Springer, 2006.
[3] Chatzigeorgiou, Alexander, Nikolaos Tsantalis, and George Stephanides. "Application of graph theory to OO software engineering." Proceedings of the 2006 international workshop on Workshop on interdisciplinary software engineering research. ACM, 2006.
Referências[4] Chatzigeorgiou, Alexander, Spiros Xanthos, and George Stephanides. "Evaluating object-oriented designs with link analysis." Proceedings of the 26th International Conference on Software Engineering. IEEE Computer Society, 2004.
[5] Fokaefs, Marios, et al. "Identification and application of Extract Class refactorings in object-oriented systems." Journal of Systems and Software(2012).
[6] Chatzigeorgiou, Alexander. "Mathematical assessment of object-oriented design quality." Software Engineering, IEEE Transactions on 29.11 (2003): 1050-1053.
Referências[7] Fowler, Martin, and Kent Beck. Refactoring: improving the design of existing code. Addison-Wesley Professional, 1999.
[8] Kleinberg, Jon M. "Authoritative sources in a hyperlinked environment." Journal of the ACM (JACM) 46.5 (1999): 604-632
[9] Kleinberg, Jon M. "Hubs, authorities, and communities." ACM Computing Surveys (CSUR) 31.4es (1999): 5.
[10] Sergey Brin and Lawrence Page. 1998. The anatomy of a large-scale hypertextual Web search engine. In Proceedings of the seventh international conference on World Wide Web 7 (WWW7), Philip H. Enslow, Jr. and Allen Ellis (Eds.). Elsevier Science Publishers B. V., Amsterdam, The Netherlands, The Netherlands, 107-117.
Anexo 1: Convergência
• Na prática, estipula-se um número máximo de iterações para o algoritmo convergir;
• Ou verifica se houve alterações significativas nos x primeiras autoridades e hubs, pois é bastante custoso realizar esse procedimento.
• Não é possível garantir que sempre irá convergir.
• O critério de parada é escolhido de acordo com objetivo ou contexto do problema. Pode ser um número fixo ou porcentagem de modificação ao fim de cada ciclo.
Anexo II: Multiplicação Matriz-Vetor
Algoritmo Sequencial SimplesInput: Matrix mat[m][n]Vector vec[n]Output: out[m]for ( i = 0; i < m; i++ ){
out[i] = 0;for ( j = 0; j < n; j++ )
out[i] += mat[i][j] * vec[j];}
Vê-se claramente que a complexidade é da ordem de O(n2).Veja mais: http://www.cs.umsl.edu/~sanjiv/classes/cs5740/lectures/mvm.pdf
Anexo III: Normalização
• Normalização de um vetor (mx1): dividir cada elemento pela raiz quadrada da soma dos quadrados de cada elemento;
• Normalizar uma matriz: dividir cada elemento da matriz pelo determinante da matriz.
Anexo IV: Generalização do Sistema de Equeções
• Iteração 0: (inicializando os pesos)
a0 = [1,1,1...1]t e h0 = [1,1,1...1]t Iteração 1:a1 = At . h0 h1 = A . a1
Iteração 2:a2 = At . h1 h2 = A . a2
Iteração 3:a3 = At . h2 h3 = A . a3
Anexo IV: Generalização do Sistema de Equeções
Iteração k-1:ak-1 = At . hk-2 hk-1 = A . ak-1
Iteração k:ak = At . hk-1 hk = A . ak
Anexo IV: Generalização do Sistema de Equeções
Iteração k-1:ak-1 = At . hk-2 hk-1 = A . ak-1
Iteração k:ak = At . hk-1 hk = A . ak
Então:ak = At . hk-1 -> ak = (At . A) ak-1
hk = A . ak -> hk = (A . At) hk-1