Engenharia de Software Experimental 2013.2



Documentos relacionados
Refactoring Visão Geral do Catálogo de Martin Fowler

Reengenharia, Refatoração e Bad Smell

Refatorando

Refatoração de Software

J820. Refactoring. Design no Código. argonavis.com.br. Helder da Rocha

Utilização de Análise de Características Dinâmicas em analises estáticas.

DataBase Refactoring em FireBird

Desenvolvimento Dirigido por Testes (TDD)

Desenvolvimento Dirigido por Testes (TDD)

Desenvolvimento do Módulo de Pré-processamento e Geração de Imagens de. Imagens de Teste do Sistema DTCOURO

JAVA. Tópicos Especiais de Programação Orientada a Objetos. sexta-feira, 26 de outubro de 12

Fixture-Factory. Criando objetos para seus testes. Como criar objetos através de templates para serem utilizados como massa de dados em seus testes.

Introdução ao TDD. Dionatan Moura. #guma10anos Abril de about.me/dionatanmoura

Evolução de Software e Refatoração

Refatorações para Melhoria da Legibilidade de Código Fortran

Gestão de Processos de Negócio em Curso de Sistemas de Informação:

2 Medição e Acompanhamento

Table 1. Dados do trabalho

Engenharia de Software. Apostila I >>> Introdução à ES - HEngholmJr

Programação Orientada a Objetos com PHP & MySQL Sistema Gerenciador de Banco de Dados: Introdução e configuração de bases de dados com Postgre e MySQL

Extração da Métrica WMC a partir de Código Java

Programa do Curso de Pós-Graduação Lato Sensu MBA em Engenharia de Software Orientada a Serviços (SOA)

Usando RDL para Derivação de Produtos em uma Linha de Produtos de Software

Documento de Requisitos

TESTES AUTOMATIZADOS COM JUNITE MOCKITO

Metodologia e Gerenciamento do Projeto na Fábrica de Software v.2

Programação de Computadores - I. Profª Beatriz Profº Israel

Aprenda como instalar o plugin EclipseUML no Eclipse e como utilizá-lo para fazer engenharia reversa de seu código-fonte.

5. Métodos ágeis de desenvolvimento de software

Universidade Federal de Pernambuco

Modernização e Evolução do Acervo de Software. Gustavo Robichez de Carvalho guga@les.inf.puc-rio.br

Heliomar Kann da Rocha Santos

GereComSaber. Desenvolvimento de Sistemas de Software. Universidade do Minho Conselho de Cursos de Engenharia Licenciatura em Engenharia Informática

Integração Contínua com Rational Team Concert, Jenkins e SonarQube

Capítulo 24 Gerência de Qualidade. Aula 1 Qualidade e Padrões de Qualidade

SISTEMA DE WORKFLOW PARA MODELAGEM E EXECUÇÃO DE PROCESSOS DE SOFTWARE. Aluno: Roberto Reinert Orientador: Everaldo A. Grahl

INTRODUÇÃO E CONFIGURAÇÃO DO PRIMEFACES MOBILE EM APLICAÇÕES JSF

FACULDADE DE TECNOLOGIA RUBENS LARA Análise e Desenvolvimento de Sistemas

GARANTIA DA QUALIDADE DE SOFTWARE

Construtor de sites SoftPixel GUIA RÁPIDO - 1 -

Gestão do custo do projeto

Rock In Rio - Lisboa

Gerenciamento de Problemas

Identificando a Formação de Ilhas de Conhecimento em Projetos de Software

PROVA DISCURSIVA. UnB/CESPE BACEN/2013

CARLOS EDUARDO LINO REESTRUTURAÇÃO DE SOFTWARE COM ADOÇÃO DE PADRÕES DE PROJETO PARA A MELHORIA DA MANUTENIBILIDADE

Identificação de Interesses Transversais: Uma Visão Geral

APLICAÇÃO DE TÉCNICAS DE REFACTORING NO DESENVOLVIMENTO DE FRAMEWORKS ORIENTADOS A OBJETOS

O CONCEITO DE TDD NO DESENVOLVIMENTO DE SOFTWARE

Sistema de Gerenciamento de Pet Shop. Documento de Requisitos

RESUMO: APRESENTAÇÃO DOS RESULTADOS DO ESTUDO DE CASO:

Universidade Federal de Santa Maria Curso de Arquivologia. Disciplina de Banco de Dados Aplicados à Arquivística. Versao 1.

Plano de Gerenciamento do Projeto

Proposta Técnica. Desenvolvimento de software QUICKSITE

Introdução Visão Geral Processos de gerenciamento de qualidade. Entradas Ferramentas e Técnicas Saídas

Criando uma agenda simples com NetBeans 6.5

3º Seminário Blogs: Redes Sociais e Comunicação Digital

build UNIP Sistemas de Informação Análise Essencial de Sistemas 3 Prof.Marcelo Nogueira A produção de Software é uma atividade build and fix.

Plataforma Open Source de Desenvolvimento e Sustentação de Sistemas. Daniel Darlen Lucius Curado Ridai Pombo

Acompanhamento da Evolução de Software via Métricas

ANEXO 11. Framework é um conjunto de classes que colaboram para realizar uma responsabilidade para um domínio de um subsistema da aplicação.

Ferramenta de apoio a gerência de configuração de software. Aluno: Rodrigo Furlaneto Orientador: Everaldo Artur Grahl

Testes de Software. Por quê testar? 3/28/2011. Andrew Diniz da Costa. Manter alta qualidade. Prevenir e encontrar defeitos

REGULAMENTO DO TRABALHO DE CONCLUSÃO DO CURSO DE GRADUAÇÃO EM ENGENHARIA DE CONTROLE E AUTOMAÇÃO DA FAG CAPÍTULO I DAS DISPOSIÇÕES PRELIMINARES

Especial Online RESUMO DOS TRABALHOS DE CONCLUSÃO DE CURSO. Sistemas de Informação ISSN

Qualidade de Software

Projeto de Redes de Computadores. Desenvolvimento de Estratégias de Segurança e Gerência

Métricas para avaliação de Linguagens de

1. Introdução e Objetivos 2. Fundamentação teórica 3. Desenvolvimento e Especificações do sistema

Engenharia de Software

Desempenho e Segurança em Sistemas de Informação. Profa.: Me. Christiane Zim Zapelini christianezapelini@nwk.edu.br

extreme Programming extreme Programming (XP) Metodologia Ágil Partes do XP Communication (comunicação) 1. Valores do XP

Sistema de Informação de Licenciamento de Operações de Gestão de Resíduos

FERRAMENTA WEB DE SUPORTE A AVALIAÇÃO DE SOFTWARE COM A METODOLOGIA CERTICS

Função Mudar de unidade estatística

INF 2125 PROJETO DE SISTEMAS DE SOFTWARE Prof. Carlos J. P. de Lucena

Transcrição:

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

Sumário Conceitos abordados Introdução Objetivos Gerais Específicos Hipóteses Método empírico Resultados esperados Considerações finais Referências 02/10/2013 @LES/PUC-Rio 2

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

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 02/10/2013 @LES/PUC-Rio 4

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

Qualidade de software 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); 02/10/2013 @LES/PUC-Rio 6

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

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; 02/10/2013 @LES/PUC-Rio 8

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

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) 02/10/2013 @LES/PUC-Rio 10

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

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; 02/10/2013 @LES/PUC-Rio 12

Refatoração Refatorações que serão aplicadas: Move Method; Extract Method; Extract Class; Entre outras; 02/10/2013 @LES/PUC-Rio 13

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++ 02/10/2013 @LES/PUC-Rio 14

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

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; 02/10/2013 @LES/PUC-Rio 16

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

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; 02/10/2013 @LES/PUC-Rio 18

Método empírico Estudo de caso Serão avaliados 3 sistemas open source; 02/10/2013 @LES/PUC-Rio 19

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; 02/10/2013 @LES/PUC-Rio 20

Considerações finais Dúvidas? Críticas? Sugestões Contato: cfernandes@inf.puc-rio.br 02/10/2013 @LES/PUC-Rio 21

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 02/10/2013 @LES/PUC-Rio 22

Referências [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 [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/ 02/10/2013 @LES/PUC-Rio 24

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