Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperlink-Induced Topic...

Post on 02-Jul-2015

1,574 views 0 download

description

Thiago Colares e Vagner Amaral

transcript

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