Detecting bad smells in source code using change history information

Slides:



Advertisements
Apresentações semelhantes
Introdução a Programação Orientada a Objetos
Advertisements

Agenda Introdução Justificativa Objetivo Detecção de Spam
Experiments with Clustering as a Software Remodularization Method Nicolas Anquetil and Timothy C. Lethbridge University of Ottawa, Canada WCRE 1999:
Christian Kästner and Michael Schulze
Natanael (njsj) Thiago (tan2) Rodrigo (rml2)
Projeto 1.
Orientação por Objectos > Modelo de Processo OO > Identificação de Classe e Objectos Aula 12.
UML – MODELAÇÃO DA ESTRUTURA Professor Sandro Carvalho.
UML: Diagrama de Classes
A PPLYING D ATA M INING T ECHNIQUES TO S EMI -A UTOMATICALLY D ISCOVER G UIDELINES FOR M ETAMODELS {andreza, franklin, patricia,
Refactoring de Programas Java
Reconhecimento de Padrões Seleção de Características
Dissertação de Mestrado Michel Alain Quintana Truyenque
Avaliação de Sistemas Operacionais
Introdução a diagrama de classes e UML
Programação orientada a objetos com Java
Aula 8 Orientação à Objetos
Aula 6 Subprogramas Universidade do Vale do Rio dos Sinos
FERRAMENTA PARA ANÁLISE DE IMPACTO BASEADO EM RASTREABILIDADE DE
Ambiente de simulação Os algoritmos previamente discutidos foram analisados usando um simulador de mobilidade. Ele modela uma cidade de 20 Km de raio,
Como Desenvolver Sistemas de Informação
UM ESTUDO EXPERIMENTAL
TSDD Teste de segurança durante o desenvolvimento.
Controle de Versão SVN e Tortoise SVN
Classes e objetos Modelagem
Classes e objetos P. O. O. Prof. Grace.
Introdução a Programação Orientada a Objetos
Gerência de Configuração de Software
O Gerenciamento de Requisitos no Ambiente COCAR
Finding and Evaluating Community Structure in Networks
Aluno: Mário Monteiro Orientador: Sérgio Soares 1.
Sistemas de Detecção de Intrusão
Thiago Pinheiro de Araújo Arndt von Staa
Análise de Evolução de software para recuperação da rastreabilidade entre documentação e código fonte baseada em modelos de características Aluno:
O Fluxo de Implementação
Concurrent Versions System Leandro Augusto de Oliveira
AntNet Algoritmos de formigas aplicados a encaminhamento de pacotes em redes Pedro Neves nº
Suellen Silva de Almeida Victor Hugo Cunha de Melo David Menotti
Autoria de Aplicações Hipermídia Daniel Schwabe Departamento de Informática PUC-Rio [ Parte 6 ]
Programação Orientada à Objetos
CAMPUS NATAL-CENTRAL DIRETORIA DE EDUCAÇÃO E TECNOLOGIA DA INFORMAÇÃO
Métodos de Construção de Software: Orientação a Objetos
Entendendo as definições de classe
UNIVERSIDADE FEDERAL DO PAMPA ENGENHARIA DE COMPUTAÇÃO - CAMPUS BAGÉ Métricas de Qualidade e seus Impactos sobre Aplicações Embarcadas Voltadas para Plataformas.
Área de Pesquisa: Redes de Computadores
Objetivos das Atividades de Implementação • Implementar as classes do modelo de projeto em termos de componentes (código fonte ou executável, etc.) •
Paradigmas da Programação – Semestre 1 – Aula 2 Professores: Eduardo Mantovani Fábio de Paula.
Classes, Objetos, Atributos e Métodos JAVA
Engenharia de Software e Sistemas Danilo Veras e Rebeka Gomes.
Gerência de Configuração - GC
Aluno: Cristiano Levi Arnold Orientador: Alexandre Luís Franco 2009
DI UFPE Sistema de Tipos de Eiffel A Proposal for Making Eiffel Type-safe W. R. Cook ECOOP’87 Proceedings Cambridge University Press, 1989.
Paulo Borba Centro de Informática Universidade Federal de Pernambuco
Educação Profissional Técnica de Nível Médio Curso Técnico de Informática
SGBD Distribuído Lílian Simão Oliveira.
André Silva Rodrigues Diretor de Tecnologia. O que é subversion? Como subversion funciona? 12/4/2015WorkSet Indo 2 Introdução.
Patrícia A. Jaques (orientadora) São Leopoldo, dezembro de 2007
13/11/2007 João Arthur Brunet Monteiro GMF/DSC/CEEI/UFCG Evolução de Software A Survey of Software Refactoring Reconstruction of Successful Software Evolution.
Paradigmas da Programação – Semestre 2 – Aula 1 Professores: Fábio de Paula Santos Eduardo Mantovani
Tarciane Andrade Análise de Casos de Uso Tarciane Andrade
Modelo de Análise e Projeto
LightWeight Extraction of Object Models from Bytecode.
Engenharia de Software
Copyright © 2006 Qualiti. Todos os direitos reservados. Projetar Classes.
Linguagem Técnica II SCM Software Configuration Management Aula 03 Prof. Renato Novais
Detecção de tráfego Skype na Web através de Redes Neurais Artigo Original: Freire, P. E., Ziviani, A., and Salles, R. M. (2008). Detecting skype flows.
Universidade Federal de Pernambuco Ambiente para Integração Contínua Rafael Vanderlei de Souza 06/12/2008 Programa de Mestrado em Ciência.
Projeto de Arquitetura de Software
Subversion- Treinamento Básico Controle de versões de Arquivos na Acropolis Atualizado em
Linguagem de Programação – Aula 04 Prof. Me. Ronnison Reges Vidal.
Transcrição da apresentação:

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

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.

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

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

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

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

Sistemas Utilizados no Estudo

Snapshots dos Sistemas

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

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

Extração SCV

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

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

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

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?

Resultados

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

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

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)

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

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%

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

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

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.

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

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

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

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