Refactoring Fat Interfaces Using a Genetic Algorithm Vincius
- Slides: 15
Refactoring Fat Interfaces Using a Genetic Algorithm Vinícius Garcia
Fat Interfaces • Many methods • Users use only part of the included methods.
Interface Segregation Principle (ISP)
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 = 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 de sub-APIs geradas.
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 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. • 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). • 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 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 framework.
Resultados
Resultados
- Genetic programming vs genetic algorithm
- Genetic programming vs genetic algorithm
- Founder effect
- Gene flow vs genetic drift
- Genetic drift vs genetic flow
- Trans fat vs cis fat
- Most concentrated source of energy
- Refactoring to patterns joshua kerievsky
- Refactoring vs shimming
- Bascop
- Software refactoring beratung
- Refactoring: improving the design of existing code
- Code refactoring
- Refactoring extreme programming
- Refactoring and restructuring methods
- A survey of software refactoring