SOES #63 - Model refactoring using interactive genetic algorithm

Page 1

Model Refactoring Using Interactive Genetic Algorithm Adnane Ghannem Apresentado por Italo Bruno


Sumário 1. Introdução 2. Algoritmo Genético Interativo Proposto 3. Experimentos 4. Conclusão e Trabalhos Futuros


Introdução


Introdução Manutenção de Software ● Atividade mais custosa no ciclo de vida do software. ● Conjunto de Incrementos ou Modificações. ■ Adicionar ou Ajustar alguma funcionalidade. ■ Corrigir fraquezas no Design.


Introdução Refatoração ● Com o passar do tempo a integridade do software se deteriora e, por conseguinte, sua qualidade diminui. Esse problem é conhecido na literatura como “software decay problem”. ● Para lidar com esse problema é preciso, continuamente, reestruturar o software para melhorar sua estrutura e design. ● O processo de reestruturar objetos orientados de sistemas é chamado de Refatoração.


Introdução Refatoração em SBSE ● As propostas de SBSE tem se mostrado efetivas na sugestão de refatorações para melhorar o design do modelo. ● Essas propostas baseiam-se na combinação de métricas de qualidade para formar uma função objetivo. ● Uma desvantagem é que essas métricas levam em consideração apenas aspectos estruturais, mas não os semânticos advindos da expertise humana.


Introdução IGA proposto

Para levar em conta os aspectos semânticos do sistema de software, o objetivo do trabalho foi propor uma proposta de refatoração baseada em Algoritmos Genéticos Interativos (Interactive Genetic Algorithm - IGA)


Introdução IGA proposto - Dois tipos de Conhecimento 1. O conhecimento requerido para propor uma sequência de refatorações para um dado modelo vem de um outro modelo de refatoracões existente quando há similaridades estruturais entre os dois.

2. O segundo conhecimento vem do Designer que participa do processo de otimização continuamente.


Introdução IGA proposto

Model Refactoring by Example plus Interaction (Morex+I): ● É guiado por: ○ Um conjunto de exemplos de refatoração. ○ FeedBack do Design.


Refatorações e Métricas


Refatorações e Métricas Refatorações

● De um conjunto de 72 refatorações descritas em (Fowler et. al, 1999) foram escolhidos 12. ○ Exemplos: Extract_Class, Push_Down_Method, Pull_Up_Method etc. ○ Razões: ■ São aplicáveis a nível de Diagrama de Classes ■ Podem ser ligados a um conjunto de métricas de modelo


Refatorações e Métricas Métricas

● Lista de 16 métricas: Exemplos: Number of attributes: NA, Number of methods: NMeth, Number of dependencies: NDep, etc.


IGA Proposto


IGA Proposto Pseudo-C贸digo Input: Set of quality metrics Input: Set of model refactoring examples Input: Percentage ( P%) Input: MaxNbrIterations Input: NbrOfInteractions Output: A sequence of refactorings 1: for i = 1 . . . NbrOfInteractions do 2: Evolve GA for NbrIterations 3: Select P% of best solutions from the current population. 4: for-each selected solution do 5: Ask the designer whether each refactoring within the selected solution makes sense. 6: Update the FF of the selected solution to integrate the feedback. 7: end for-each 8: Create a new GA population using the updated solutions 9: end for 10: Continue (non-interactive) GA evolution until it converges or it reaches maxNbrIterations


IGA Proposto Representação de um Indivíduo ● ●

Class chosen from the initial Model (CIM) Class chosen from the Base of Examples (CBE)


IGA Proposto Geração da População Inicial ● Definir um tamanho máximo de indivíduo (pode ser definido aleatoriamente, ou pelo usuário. ● Escolher aleatoriamente um conjunto de CIM’s e suas respectivas CBE’s. ● Escolher aleatoriamente um cojunto de refatorações da base de exemplos que podem ser aplicadas ao modelo inicial.


IGA Proposto Seleção de Pais ● Algoritmo usado: Stochastic Universal Samples (SUS) ● Probabilidade de ser escolhido é diretamente proporcional a fitness. ● 50% dos indivíduos da população ‘p’ é escolhido para ir para população ‘p+1’ ● Os escolhidos “darão a luz” aos outros 50% da nova população ‘p+1’


IGA Proposto Crossover


IGA Proposto Mutation


IGA Proposto Score de um bloco

Onde: ● CMI_i é o valor da i-ésima métrica em CMI. ● CBE_i é o valor da i-ésima métrica em CBE. ● m é o número de métricas usadas.


IGA Proposto Score da solução


IGA Proposto Exemplo de avaliação


IGA Proposto Avaliação Subjetiva de um bloco A nota é dada no intervalo [0,1] e discretizada como a seguir: ● Crítico (valor = 1): É obrigatório aplicar a fatoração proposta. ● Desejável (valor = 0,8): É útil aplicar determinada fatoração para melhorar algum aspecto, mas não obrigatório. ● Neutro (valor = 0,5): É aplicável, mas o Designer não vê como necessário ou desevável. ● Indesejável (valor = 0,3): É aplicável, mas pode afetar alguns aspectos semânticos ● Inapropriado (valor = 0): Quebra aspectos semânticos


IGA Proposto Avaliação Subjetiva de uma Solução

É a média da avaliação subjetiva dos blocos na solução.


Experimentos


Experimentos Ferramenta de Apoio


Experimentos Objetivos

● Responder duas perguntas: ○ RQ1: até que ponto a abordagem interativa pode sugerir sequências corretas? ○ RQ2: que tipos de Refatorações são sugeridas corretamente?


Experimentos Base de Exemplos e Modelos Iniciais ● 6 projetos entraram na base de exemplos: (Ant, JabRef, JGraphx, JHotDraw, JRDF, and Xom). ● Ref-finder foi utilizado para detectar os tipos de refatoração entre diferentes versões de cada projeto. Tais refatorações foram validadas manualmente. ● Dois projetos foram escolhidos para serem avaliados pelas seguintes razões: ○ são projetos de tamanho médio ○ são projetos que estão sendo desenvolvidos há mais de 10 anos


Experimentos Participantes

Três estudantes de Doutorado em Engenharia de Software. ○ Todos familiarizados com os sistemas avaliados. ○ Todos com ampla experiência em refatoração orientada a objeto.


Experimentos Precision X Recall

● Precision: É a porcentagem de informações relevantes de todas informações captadas. ● Recall: É a porcentagem de informações relevantes captadas de todas informações relevantes


Experimentos Precision X Recall: Neste caso...

● Precision: É a porcentagem das sugestões de refatoração que são corretas na solução sobre o número de sugestões na solução. ● Recall: É a porcentagem de sugestões de refatoração que são corretas de todas as refatorações que foram aplicadas nas versões subsequentes dos modelos em análise.


Experimentos Resultados - Resposta ao RQ1


Experimentos Resultados - Resposta ao RQ2

● 9 de 12 refatorações foram consideradas.


Conclus達o e Trabalhos Futuros


Conclusão ● Foi feita uma nova proposta de refatoração que pode ser aplicada a nível de UML. ● Foi feito um algoritmo que incorpora a opnião do ser humano. ● Os resultados do experimento mostram que a abordagem é estável em relação a sugerir refatorações corretas e a outras métricas. ● O IGA reduziu significantemente as refatorações menos importantes


Trabalhos Futuros ● Expandir a Base de Exemplos para capturar mais tipos de refatorações. ● Estudar o impacto de usar exemplos específicos na qualidade das sequências de refatorações. ● Aplicar o algoritmo em mais projetos open-sources. ● Analizar melhor os tipos de refatorações que são sugeridas corretamente.


Obrigado!

Optimization in Software Engineering Group www.goes.uece.br


Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.