A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Detecting bad smells in source code using change history information

Apresentações semelhantes


Apresentação em tema: "Detecting bad smells in source code using change history information"— Transcrição da apresentação:

1 Detecting bad smells in source code using change history information
Fabio Palomba, Gabriele Bavota, Massimiliano Di Penta, Rocco Oliveto, Andrea De Lucia, Denys Poshyvanyk Este modelo pode ser usado como arquivo de partida para apresentar materiais de treinamento em um cenário em grupo. Seções Clique com o botão direito em um slide para adicionar seções. Seções podem ajudar a organizar slides ou a facilitar a colaboração entre vários autores. Anotações Use a seção Anotações para anotações da apresentação ou para fornecer detalhes adicionais ao público. Exiba essas anotações no Modo de Exibição de Apresentação durante a sua apresentação. Considere o tamanho da fonte (importante para acessibilidade, visibilidade, gravação em vídeo e produção online) Cores coordenadas Preste atenção especial aos gráficos, tabelas e caixas de texto. Leve em consideração que os participantes irão imprimir em preto-e-branco ou escala de cinza. Execute uma impressão de teste para ter certeza de que as suas cores irão funcionar quando forem impressas em preto-e-branco puros e escala de cinza. Elementos gráficos, tabelas e gráficos Mantenha a simplicidade: se possível, use estilos e cores consistentes e não confusos. Rotule todos os gráficos e tabelas. Johnatan Oliveira ASE A1

2 Estrutura Introdução Detecção Smell por Histórico de informações
Design de estudo (RQ) Análise dos Resultados Ameaças à Validade Trabalhos relacionados Conclusões e trabalhos futuros Forneça uma breve visão geral da apresentação. Descreva o foco principal da apresentação e por que ela é importante. Introduza cada um dos principais tópicos. Para fornecer um roteiro para o público, você pode repita este slide de Visão Geral por toda a apresentação, realçando o tópico específico que você discutirá em seguida.

3 Introdução Evolução do Software Bad Smell (pressa ou desinformados)
Esta é outra opção para um slide de Visão Geral usando transições. Manter software pode se tornar mais caro

4 Identificar 5 tipos de Bad Smell através do Histórico de Versão:
Abordagem Abordagens com base em métricas que analisam a estrutura do código fonte. EX: LongMethod (LOC) Falta precision and Recall para verificação ao decorrer do tempo. Identificar 5 tipos de Bad Smell através do Histórico de Versão: Divergent Change Blob Shotgun Surgery Feature Envy Parallel inheritance

5 Hist Exploração das informações em histórico de
Sistemas de controle de versão .

6 Projetos analisados Foram analisados projetos em Java , sendo eles :
Apache Ant TomCat JEdit + 5 API’s Android Precision entre 61 % e 80% Recall está entre 61% e 100% Experimento para levantar oráculo Construção manual do Oráculo Compara os resultados da HIST com análise estrutural

7 Sistemas Utilizados no Estudo

8 Snapshots dos Sistemas

9 Proposta Ideia Chave Identificar Bad Smell através de informações de histórico de sistemas de controle de Versão Minera todo o log do controle de versões . Change history: relatando todas as alterações . Essa proposta pode ser realizada em vários sistemas de controle de versão . Como git, svn ou cvs. O que muda ´é a granularidade . Para deixar a granularidade equivalente para exame , usa a ferramenta Markos. O conjunto de mudanças e computado pelo change history extractor e fornecido como entrada para o code smell detector q identifica a lista de omponentes do código afetado == a ferramenta verifica se problemas anteriores foram corrigidos na nova versão , se sim não os apresenta mais . Processo de Detecção/Extração

10 Extração Mudanças Refinadas
Checkout de revisão i Mudanças Refinadas Versão do Sistema Para apturar o sequente e subsequente , cada par de snapshot é analisado Checkout de revisão i +1 Compara e retorna o conjunto resultante diferente

11 Extração SCV

12 Conjunto de Mudanças Classes: adicionadas/removidas/movidas e renomeadas Atributo: (...) Método: (...) Mudança de assinatura: visibilidade , tipo de retorno e parâmetros Mudança de assinatura do método

13 Heurística Exemplo Divergent Change: regras de associação e análise de
Committed. Mleft => Mright Shotgun Surgery: mudança em um método, resulta em Mudança de métodos em outras classes. Mleft => implica em MRight se ocorrer mudança em um tem q ocorrer no outro . Para analisar a precisao e completude da hist. Parallel Inheritance : os pares de classes das quais a adição de uma subclasse implica a adição de uma subclasse para a outra classe

14 Blob: classes modificadas requerem commit de
Pelo menos uma outra classe Feature Envy: métodos de commit com métodos de outra classe

15 Questões de Pesquisa RQ1: Qual é o desempenho do HIST na detecção
de Bad Smell? RQ2: Como comparar as técnicas existentes com a Hist?

16 Resultados

17 Resultados RQ RQ1: Avaliaram o HIST com o oráculo criado.
Através de precision e recall identificaram que HIST fiou entre 61% e 89% de identificação. RQ2: ????? OBS: uma técnica complementa a outra

18 R2 Implementação de 3 algoritmos de detecção
Divergent Change : DCCA com base em conectividade (coesão) Shotgun Surgery: SSCA chamadas de método entre classes Parallel Inheritance: PICA classes afetadas pela herança Paralela como pares das classes As ferramentas foram calibradas para detecção Blob e Feature Envy

19 Comparação DV DCCA 14 casos em 5 sistemas
DUVIDA DO JEDIT OCORREU EM CLASSE Q TEM VALOR BAIXO DE COESAO 14 casos em 5 sistemas Hist 76%( 79% recall e 73% precision) vs AC 10%( 7% recall e 20% precision)

20 Comparação SS SCCA 4 sistemas afetados com 4 ocorrências
FOI O QUE TEVE MENOR NUMERO DE OCORRENCIA NOS SISTEMAS 4 sistemas afetados com 4 ocorrências Hist 100% com 100% precisão

21 Comparação PI PICA 31 casos 19 foram identificados pelo Hist
0 não foi possível calcular o recall n/a qnd não são bad smell da abordagem 31 casos 19 foram identificados pelo Hist Hist recall 61% com 12 falso positivo VS Algoritmo PICA detectou 14 corretas e 45% recall , falso positivo 4%

22 Comparação Blob Decor Hist precission 76% recall de 61% (média 68%)
0 não foi possível calcular o recall Hist precission 76% recall de 61% (média 68%)

23 Comparação FE JDeodorant
0 não foi possível calcular o recall Oráculo identificou em 5 dos 8 sistemas, totalizando 42. Hist identificou 34 deles , contra 25 do JDeodorant

24 Abordagens Diferenças detectadas pelas abordagens
% code smell correto em ambos 0 não foi possível calcular o recall % Identificação correta pelo HIST % Identificação correta pela análise estática , que não foi Identificada pelo HIST.

25 Ameaças a Validade Ameaça de construção: criação do oráculo manual
Comparação: Comparação da Hist com ferramentas Ameaça Externa: generalização dos resultados . Apenas 5 bad smells Comparação: Comparação da Hist com ferramentas pq tiveram q definir estratégias de detecao

26 Replicação Pacote de Replicação
Repositório dos dados históricos extraídos Histórico de alterações das ferramentas Oráculo manual Código Hist 0 não foi possível calcular o recall

27 Trabalhos Relacionados
Usam apenas métricas como: CBO, LOC, WMC e Redes Bayesianas 0 não foi possível calcular o recall

28 Conclusão Levantou pontos de analise de contexto para evitar
Perdas de informações e qualidade . Proposta de definição de híbrido 0 não foi possível calcular o recall

29


Carregar ppt "Detecting bad smells in source code using change history information"

Apresentações semelhantes


Anúncios Google