aplicação da teoria dos grafos e algoritmos na engenharia de software: hyperlink-induced topic...

84
Aplicação da Teoria dos Grafos e 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 Colares Vagner Amaral Salvador, 28/03/2013

Upload: thiago-colares

Post on 02-Jul-2015

1.574 views

Category:

Technology


0 download

DESCRIPTION

Thiago Colares e Vagner Amaral

TRANSCRIPT

Page 1: Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperlink-Induced Topic Search (HITS) e Identificação de God Classes

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

Page 2: Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperlink-Induced Topic Search (HITS) e Identificação de God Classes

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

Page 3: Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperlink-Induced Topic Search (HITS) e Identificação de God Classes

Quero comprarum carro.

http://www.flickr.com/photos/buzrael/4981570801/sizes/l/in/photostream/

Page 4: Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperlink-Induced Topic Search (HITS) e Identificação de God Classes

Pergunta para amigos.“melhores fabricantes de carro?”

Page 5: Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperlink-Induced Topic Search (HITS) e Identificação de God Classes

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/

Page 6: Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperlink-Induced Topic Search (HITS) e Identificação de God Classes

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.

Page 7: Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperlink-Induced Topic Search (HITS) e Identificação de God Classes

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

Page 8: Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperlink-Induced Topic Search (HITS) e Identificação de God Classes

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.

Page 9: Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperlink-Induced Topic Search (HITS) e Identificação de God Classes

Grandes marcas falam mais sobre seus produtos,

não sobre si mesmas.

Page 10: Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperlink-Induced Topic Search (HITS) e Identificação de God Classes

Milhões de resultados.Como trazer primeiro os

mais relevante para a busca?

Page 11: Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperlink-Induced Topic Search (HITS) e Identificação de God Classes

Precisamos identificar as Autoridades sobre a

busca realizada.

Page 12: Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperlink-Induced Topic Search (HITS) e Identificação de God Classes

Classificação de resultados em Autoridades e Hubs.

Através da análise de links.

Page 13: Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperlink-Induced Topic Search (HITS) e Identificação de God Classes

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

Page 14: Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperlink-Induced Topic Search (HITS) e Identificação de God Classes

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

Page 15: Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperlink-Induced Topic Search (HITS) e Identificação de God Classes

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

Page 16: Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperlink-Induced Topic Search (HITS) e Identificação de God Classes

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

Page 17: Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperlink-Induced Topic Search (HITS) e Identificação de God Classes

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

Page 18: Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperlink-Induced Topic Search (HITS) e Identificação de God Classes

Pré-processamento

Page 19: Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperlink-Induced Topic Search (HITS) e Identificação de God Classes

Documentos na Web

Page 20: Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperlink-Induced Topic Search (HITS) e Identificação de God Classes

conectados por hyperlinks

Page 21: Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperlink-Induced Topic Search (HITS) e Identificação de God Classes

1º Passo: Busca textual

Page 22: Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperlink-Induced Topic Search (HITS) e Identificação de God Classes

Q: “melhores fabricantes de carro dos últimos 4 anos”

Page 23: Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperlink-Induced Topic Search (HITS) e Identificação de God Classes

Q: “melhores fabricantes de carro dos últimos 4 anos”

Page 24: Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperlink-Induced Topic Search (HITS) e Identificação de God Classes

Resultado: subgrafo R (root)

Page 25: Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperlink-Induced Topic Search (HITS) e Identificação de God Classes

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

Page 26: Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperlink-Induced Topic Search (HITS) e Identificação de God Classes

2º Passo: Expande-se o subgrafo R(Region Growing Method)

Page 27: Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperlink-Induced Topic Search (HITS) e Identificação de God Classes

2º Passo: Expande-se o subgrafo R(Region Growing Method)

Page 28: Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperlink-Induced Topic Search (HITS) e Identificação de God Classes

Resultado: subgrafo S (seed)Base do algoritmo

Page 29: Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperlink-Induced Topic Search (HITS) e Identificação de God Classes

Resultado: subgrafo S (seed)Base do algoritmo

Page 30: Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperlink-Induced Topic Search (HITS) e Identificação de God Classes

Resultado: subgrafo S (seed)

Características(1) Ainda é proporcionalmente pequeno(2) Provavelmente conterá autoridades

Page 31: Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperlink-Induced Topic Search (HITS) e Identificação de God Classes

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

Page 32: Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperlink-Induced Topic Search (HITS) e Identificação de God Classes

Atualizando pesos de S

ap é...

soma do hi de todos os nós i apontando para p

i2

pi1

Page 33: Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperlink-Induced Topic Search (HITS) e Identificação de God Classes

Atualizando pesos de S

hp é...

soma do ai de todos os nós i apontados por p

i1

i2p

Page 34: Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperlink-Induced Topic Search (HITS) e Identificação de God Classes

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.

Page 35: Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperlink-Induced Topic Search (HITS) e Identificação de God Classes

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)

Page 36: Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperlink-Induced Topic Search (HITS) e Identificação de God Classes

Exemplo

2

3

1

Page 37: Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperlink-Induced Topic Search (HITS) e Identificação de God Classes

[ ]Exemplo

2

3

10 0 10 0 10 0 0

A =

Page 38: Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperlink-Induced Topic Search (HITS) e Identificação de God Classes

[ ][ ]

Exemplo

2

3

10 0 10 0 10 0 0

A =

0 0 00 0 01 1 0

At =

Page 39: Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperlink-Induced Topic Search (HITS) e Identificação de God Classes

[ ][ ]

Exemplo

2

3

10 0 10 0 10 0 0

A =

0 0 00 0 01 1 0

At =

ht = [1,1,1]

Page 40: Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperlink-Induced Topic Search (HITS) e Identificação de God Classes

[ ]Exemplo

0 0 00 0 01 1 0

a = At . h = [ ]111 =[ ]002

Page 41: Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperlink-Induced Topic Search (HITS) e Identificação de God Classes

[ ]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

Page 42: Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperlink-Induced Topic Search (HITS) e Identificação de God Classes

Exemplo

2

3

1a1 = 0

h1 = 2

a2 = 0

h2 = 2

a3 = 2

h3 = 0

Page 43: Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperlink-Induced Topic Search (HITS) e Identificação de God Classes

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.

Page 44: Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperlink-Induced Topic Search (HITS) e Identificação de God Classes

O Algoritmo

Page 45: Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperlink-Induced Topic Search (HITS) e Identificação de God Classes

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).

Page 46: Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperlink-Induced Topic Search (HITS) e Identificação de God Classes

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)

Page 47: Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperlink-Induced Topic Search (HITS) e Identificação de God Classes

Por que identificar God Classes?

Page 48: Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperlink-Induced Topic Search (HITS) e Identificação de 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

Page 49: Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperlink-Induced Topic Search (HITS) e Identificação de God Classes

God Classes

Violam o princípio da distr ibuição uni forme de responsabilidades.

http://www.corej2eepatterns.com/Patterns2ndEd/images/SLMainClass.gif

Page 50: Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperlink-Induced Topic Search (HITS) e Identificação de God Classes

God Classes

Difíceis de implementar, manter e testar.

http://www.corej2eepatterns.com/Patterns2ndEd/images/SLMainClass.gif

Page 51: Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperlink-Induced Topic Search (HITS) e Identificação de God Classes

God Classes

Delegam pequenos detalhes e utilizam dados de outras classes mais triviais do sistema.

http://www.corej2eepatterns.com/Patterns2ndEd/images/SLMainClass.gif

Page 52: Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperlink-Induced Topic Search (HITS) e Identificação de God Classes

God Classes

Impacto negativo na reutilização de componentes e na compreensão do sistema.

http://www.corej2eepatterns.com/Patterns2ndEd/images/SLMainClass.gif

Page 53: Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperlink-Induced Topic Search (HITS) e Identificação de God Classes

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.

Page 54: Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperlink-Induced Topic Search (HITS) e Identificação de God Classes

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]

Page 55: Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperlink-Induced Topic Search (HITS) e Identificação de God Classes

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]

Page 56: Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperlink-Induced Topic Search (HITS) e Identificação de God Classes

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]

Page 57: Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperlink-Induced Topic Search (HITS) e Identificação de God Classes

Exemplo: Forno Elétrico

Page 58: Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperlink-Induced Topic Search (HITS) e Identificação de God Classes

HITS x God Classes

Page 59: Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperlink-Induced Topic Search (HITS) e Identificação de God Classes

HITS x God Classes

Page 60: Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperlink-Induced Topic Search (HITS) e Identificação de God Classes

HITS x God Classes

Page 61: Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperlink-Induced Topic Search (HITS) e Identificação de God Classes

HITS x God Classes

Page 62: Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperlink-Induced Topic Search (HITS) e Identificação de God Classes

HITS x God Classes

Page 63: Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperlink-Induced Topic Search (HITS) e Identificação de 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;

Page 64: Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperlink-Induced Topic Search (HITS) e Identificação de God Classes

HITS x God Classes

Page 65: Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperlink-Induced Topic Search (HITS) e Identificação de 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

Page 66: Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperlink-Induced Topic Search (HITS) e Identificação de God Classes

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.

Page 67: Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperlink-Induced Topic Search (HITS) e Identificação de God Classes

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.

Page 68: Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperlink-Induced Topic Search (HITS) e Identificação de God Classes

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

Page 69: Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperlink-Induced Topic Search (HITS) e Identificação de God Classes

Forno Elétrico: Cadê a God Class?

Page 70: Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperlink-Induced Topic Search (HITS) e Identificação de God Classes

Forno Elétrico: Cadê a God Class?

Page 71: Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperlink-Induced Topic Search (HITS) e Identificação de God Classes

Forno Elétrico: Cadê a God Class?

Page 72: Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperlink-Induced Topic Search (HITS) e Identificação de God Classes

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.

Page 73: Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperlink-Induced Topic Search (HITS) e Identificação de God Classes

A classe 3 é uma God Class?

h3 = 1

Essa classe é a única que inicia alguma atividade no sistema.

Page 74: Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperlink-Induced Topic Search (HITS) e Identificação de God Classes

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).

Page 75: Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperlink-Induced Topic Search (HITS) e Identificação de God Classes

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.

Page 76: Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperlink-Induced Topic Search (HITS) e Identificaçã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.

Page 77: Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperlink-Induced Topic Search (HITS) e Identificação de God Classes

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.

Page 78: Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperlink-Induced Topic Search (HITS) e Identificação de God Classes

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.

Page 79: Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperlink-Induced Topic Search (HITS) e Identificação de God Classes

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.

Page 80: Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperlink-Induced Topic Search (HITS) e Identificação de God Classes

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

Page 81: Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperlink-Induced Topic Search (HITS) e Identificação de God Classes

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.

Page 82: Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperlink-Induced Topic Search (HITS) e Identificação de God Classes

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

Page 83: Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperlink-Induced Topic Search (HITS) e Identificação de God Classes

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

Page 84: Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperlink-Induced Topic Search (HITS) e Identificação de God Classes

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