• Nenhum resultado encontrado

Engenharia de Software Experimental 2013.2

N/A
N/A
Protected

Academic year: 2022

Share "Engenharia de Software Experimental 2013.2"

Copied!
25
0
0

Texto

(1)

Engenharia de Software Experimental 2013.2

Avaliação de introdução de anomalias de software, após aplicação de refatorações automáticas para remoção de code smells

Chrystinne Fernandes

(2)

Sumário

Conceitos abordados

Introdução

Objetivos

Gerais

Específicos

Hipóteses

Método empírico

Resultados esperados

Considerações finais

Referências

(3)

Conceitos abordados

Qualidade de software

Conjunto de métricas;

Ferramentas de medição

Code smells

Conceito

Exemplos

Ferramentas de detecção

Refatoração

Conceito

Exemplos

Ferramentas

02/10/2013 @LES/PUC-Rio 3

(4)

Introdução

De que forma é possível avaliar a qualidade de um software?

Escolha adequada do conjunto de métricas

Ferramentas de medição

O que são code smells?

Ferramentas de detecção

O que é refatoração?

Por que, quando e como refatorar

Impactos positivos e negativos no código, no projeto e na qualidade do sistema

Ferramentas de refatoração

(5)

Qualidade de software

Uso de formas de avaliação da qualidade consolidadas e amplamente aceitas;

Conjunto de métricas que serão utilizadas:

DAC: Data Abstraction Coupling;

LCOM: Lack of Cohesion in Methods;

NOM: Number Of Methods;

RFC: Response For a Class;

TCC: Tight Class Cohesion;

WMC: Weighted Methods per Class;

02/10/2013 @LES/PUC-Rio 5

(6)

Categorias:

Métricas de Coesão (LCOM e TCC);

Métricas de Acoplamento (DAC e RFC);

Métricas de Complexidade (WMC e RFC);

Ferramentas para avaliação da qualidade do código:

JDepend4Eclipse (Plugin Eclipse);

Sonar (Plugin Eclipse);

Eclipse-PMD (Plugin Eclipse);

Qualidade de software

(7)

Code smells

Definição:

São estruturas no código que segerem ou às vezes até “gritam” pela refatoração.

“If it stinks, change it.”

(by Kent Beck and Martin Fowler)

Alguns exemplos:

Duplicated Code;

Long Method;

Large Class;

Long Parameter List;

02/10/2013 @LES/PUC-Rio 7

(8)

Code smells – alguns exemplos

Divergent Change;

Shotgun Surgery;

Feature Envy;

Data Clumps;

Primitive Obsession;

Switch Statements;

Parallel Inheritance Hierarchies;

Lazy Class;

Speculative Generality;

Temporary Field;

Message Chains;

(9)

Code smells – alguns exemplos

Middle Man;

Inappropriate Intimacy;

Alternative Classes with Different Interfaces;

Incomplete Library Class;

Data Class;

Refused Bequest;

Smells que serão abordados:

Feature Envy (Inveja dos dados);

Long Method;

Shotgun Surgery (Cirurgia com rifle);

Large Class;

Entre outros;

02/10/2013 @LES/PUC-Rio 9

(10)

Refatoração

Conceito:

“Refatoração é o processo de alteração de um sistema de software de modo que o comportamento externo do código não

mude, mas que sua estrutura interna seja melhorada.”

(Martin Fowler)

(11)

Refatoração – Alguns exemplos

Extract Method;

Inline Method;

Replace Temp with Query;

Split Temporary Variable;

Move Method;

Move Field;

Extract Class;

Replace Conditional with Polymorphism;

Rename Method;

Pull Up Field;

Pull Up Method;

02/10/2013 @LES/PUC-Rio 11

(12)

Refatoração – Alguns exemplos

Pull Up Constructor Body;

Push Down Method;

Push Down Field;

Extract Subclass;

Extract Superclass;

Extract Interface;

Collapse Hierarchy;

Form Template Method;

Replace Inheritance with Delegation;

Replace Delegation with Inheritance;

Separate Domain from Presentation;

(13)

Refatoração

Refatorações que serão aplicadas:

Move Method;

Extract Method;

Extract Class;

Entre outras;

02/10/2013 @LES/PUC-Rio 13

(14)

Ferramentas de Refatorãção

Ferramentas de suporte ao processo de refatoração:

Ferramenta Linguagem

Sonar Java, C, PHP, Groovy SafeRefactor Java

Together Java, C++, C#

JDepend Java

Jdeodorant Java

PMD Java

InFusion Java, C, C++

(15)

Objetivos gerais

Avaliar a introdução de anomalias em sistemas de software, após aplicação de

refatorações automáticas para remoção de code smells.

02/10/2013 @LES/PUC-Rio 15

(16)

Objetivos específicos

Avaliar impactos na qualidade de sistema após as transformações, utilizando

métricas bem definidas;

Avaliar a relação custo-benefício resultante da remoção de cada code smell;

Determinar quais anomalias foram geradas após a aplicação de cada refatoração e qual seu impacto na qualidade do sistema;

Indicar quais refatorações produzem maior número anomalias;

(17)

Hipóteses

H1 Ferramentas de detecção de code

smells não são 100% confiáveis, podendo não reconhecer alguns code smells ou

encontrar falsos positivos;

H2 Ferramentas de refatoração não são 100% confiáveis, uma vez que seu uso não elimina todos os code smells;

H3 O processo de refatoração traz riscos para o desenvolvimento de software,

mesmo realizado de modo sistemático, com uma metodologia bem definida;

02/10/2013 @LES/PUC-Rio 17

(18)

Hipóteses

H4 O uso de ferramentas que automatizam o processo de refatoração introduz anomalias no código;

H5 Quando aplicado de modo sistemático, o

processo de refatoração aumenta a qualidade do software, melhorando a legibilidade e a

manutenibilidade do código;

(19)

Método empírico

Estudo de caso

Serão avaliados 3 sistemas open source;

02/10/2013 @LES/PUC-Rio 19

(20)

Resultados esperados

Relação de code smells mais críticos do sistema, listados na ordem em que

deveriam ser removidos através de ferramentas de refatoração;

Relação das anomalias introduzidas após a refatoração e seu impacto na qualidade do sistema;

(21)

Considerações finais

Dúvidas?

Críticas?

Sugestões

Contato: cfernandes@inf.puc-rio.br

02/10/2013 @LES/PUC-Rio 21

(22)

Referências

[1] Martin Fowler et al. Refactoring:

Improving the Design of Existing Code.

Addison-Wesley Longman Publishing Co., Inc., Boston, MA, USA, 1999.

[2] Joshua Kerievsky, Refactoring To Patterns. Industrial Logic, Inc., 2001.

[3] Fontana, Francesca Arcelli; Spinelli, Stefano. Impact of refactoring on quality

code evaluation. WRT '11 Proceedings of the 4th Workshop on Refactoring Tools. Pages 37-40

(23)

[4] Murphy-Hill et al. 2009. How we refactor and how we know it. Proceedings of 31st

ICSE, USA.

[5] Arcoverde, Roberta. Identificando Quebras de Assertivas Causadas por Refatorações.

[6] Arcoverde, Roberta. Ferramentas de Apoio a Refatorações.

[7] Arendt, Thorsten; Taentzer, Gabriele.

Integration of smells and refactorings within the Eclipse modeling framework.

02/10/2013 @LES/PUC-Rio 23

Referências

(24)

Referências

[8] http://www.refactoring.com/

[9] http://dl.acm.org/

[10]http://www.industriallogic.com/xp/refac toring/

[11] Understand for Java:

http://www.scitools.com/

[12] PMD: http://pmd.sourceforge.net/

(25)

Obrigada!

02/10/2013 @LES/PUC-Rio 25

Referências

Documentos relacionados

Observando o perfil de TPR do catalisador RuKL (figura 88), onde as temperaturas da primeira análise de TPR alcançaram valores de 222°C e 262°C e comparando com os

Já o Ministério do Turismo (2010), divulga não apenas as atribuições gerais que o guia deve cumprir, mas também as atribuições específicas de acordo com a

A função gerente de obras torna-se cada vez mais necessária na construção civil, pois o setor está cada vez mais desenvolvendo e aprimorando a área de coordenação

Na Nova Zelândia em sistemas pastoris as vacas produzem em média 17 litros de leite ao dia, enquanto nos produtores analisados neste estudo a média de

Para atingir este fim, foram adotados diversos métodos: busca bibliográfica sobre os conceitos envolvidos na relação do desenvolvimento de software com

Objetivo: Garantir estimativas mais realistas e precisas para o projeto, ao considerar nesta estimativa o esforço necessário (em horas ou percentual do projeto) para

Esse modelo foi derivado de modelos de atividade de engenharia com o fim de estabelecer ordem no desenvolvimento de grandes produtos de software.. Comparado com outros modelos de

 “Gerência de Requisitos - Os requisitos do sistema são controlados de forma a estabelecer um perfil mínimo a ser utilizado pela engenharia de software e