Refactoring Fat Interfaces Using a Genetic Algorithm Vincius

  • Slides: 15
Download presentation
Refactoring Fat Interfaces Using a Genetic Algorithm Vinícius Garcia

Refactoring Fat Interfaces Using a Genetic Algorithm Vinícius Garcia

Fat Interfaces • Many methods • Users use only part of the included methods.

Fat Interfaces • Many methods • Users use only part of the included methods.

Interface Segregation Principle (ISP)

Interface Segregation Principle (ISP)

Prosposta do Artigo • Cumprir as metas do princípio ISP é díficil. • O

Prosposta do Artigo • Cumprir as metas do princípio ISP é díficil. • O autor propõe um algoritmo genético para refatoração de Fat Interfaces em interfaces menores.

Métrica: Interface Usage Cohesion • J = usuario • I = API • N

Métrica: Interface Usage Cohesion • J = usuario • I = API • N = numero de usuários. • Métrica varia de 0(baixa coesão) até 1(alta coesão).

Algoritmo Genético (multi-objective Clustering) • Objetivos (multi-objective): – Maximizar IUC. – Minimizar o número

Algoritmo Genético (multi-objective Clustering) • Objetivos (multi-objective): – Maximizar IUC. – Minimizar o número de sub-APIs geradas.

Algoritmo Genético (multi-objective Clustering)

Algoritmo Genético (multi-objective Clustering)

Algoritmo Genético (multi-objective Clustering)

Algoritmo Genético (multi-objective Clustering)

Random Search • • Gera-se sub-conjuntos aleatórios de métodos. Avalie-os com o método de

Random Search • • Gera-se sub-conjuntos aleatórios de métodos. Avalie-os com o método de fitness do AG. Salve o melhor encontrado. Pare após X iterações.

Multi-Objective Simulated Annealing • Busca local – Inicia a partir de uma solução aleatória.

Multi-Objective Simulated Annealing • Busca local – Inicia a partir de uma solução aleatória. • A cada iteração escolhe uma das soluções vizinhas com base na função: • O algoritmo para ao estabilizar em um ótimo local ou após X iterações.

Multi-Objective Simulated Annealing • Encontra vizinhos desta solução utilizando mutação (a mesma do GA).

Multi-Objective Simulated Annealing • Encontra vizinhos desta solução utilizando mutação (a mesma do GA). • Compara soluções vizinhas (i, j) utilizando a média da fitness das soluções.

Experimento • O algoritmo foi testado em 42, 318 APIs Java disponíveis de forma

Experimento • O algoritmo foi testado em 42, 318 APIs Java disponíveis de forma pública e mineradas a partir do repositório Maven. • Pergunta da pesquisa: – O algoritmo genético proposto consegue dividir Fat APIs em APIs com IUC melhores? – Esse método é melhor que o random search e o simulated annealing?

Experimento • Binários. class foram escaneado com o ASM Java bytecode manipulation and analysis

Experimento • Binários. class foram escaneado com o ASM Java bytecode manipulation and analysis framework.

Resultados

Resultados

Resultados

Resultados