REFATORAÇÃO JOÃO LACERDA DJALMA LIMA. MARTIN FOWLER É um autor conhecido na área de arquitetura...

Post on 07-Apr-2016

216 views 1 download

Transcript of REFATORAÇÃO JOÃO LACERDA DJALMA LIMA. MARTIN FOWLER É um autor conhecido na área de arquitetura...

REFATORAÇÃO

JOÃO LACERDADJALMA LIMA

MARTIN FOWLER

É um autor conhecido na área de arquitetura de software, especializado em análise orientada a objetos, UML, padrão de projeto de software e metodologias de desenvolvimento ágil de software, incluindo Programação extrema (XP). Ele começou a trabalhar com desenvolvimento de software no início dos anos 80 e escreveu vários livros populares sobre desenvolvimento, alguns deles já traduzidos para português.

LIVROS

Padrões de Arquitetura de Aplicações Corporativas, Ed. Bookman, 2006

Refatoração: Aperfeiçoando o projeto de código existente, Ed. Bookman, 2004

UML Essencial,Ed. Bookman, 2004

DEFINIÇÃO

“Refatoração é uma técnica disciplinada para reestruturar um código fonte existente, alterando sua estrutura interna sem mudar o seu comportamento externo. Sua essência está em uma série de pequenas transformações que preservam comportamento. Cada transformação (chamada de refatoração) faz pouca coisa, mas uma sequência de pequenas transformações produz uma reestruturação significativa. Uma vez que cada refatoração é pequena, é mais improvável que algo dê errado. O sistema se mantém funcionando integralmente após cada refatoração, reduzindo as chances de o sistema sofrer um dano grave durante a reestruturação”.(Martin Fowler,2004).

MANTENDO A CASA EM ORDEM

OBJETIVO

O objetivo de refatorar um código freqüentemente é manter o custo de manutenção constante ao longo do tempo.

TEMPO x GASTO Estima-se que cerca de 50% do tempo de

um engenheiro de Software é gasto com tarefas de manutenção e compreensão de código.

Fonte: Maia (2004)

CUSTOS x GASTOS Ao longo das últimas três décadas mais

de 60% dos custos de desenvolvimento de Software das organizações foram gastos com manutenção.

Fonte: Maia (2004)

MOTIVAÇÕES

Simplicidade Flexibilidade Clareza Desempenho Facilitar a manutenção Reduzir custos

UTILIZAÇÃO

A refatoração deve ser utilizada quando o "código cheirar mal"(bad smells in code).(Kent Beck, um dos fundadores da Programação Extrema.)

UTILIZAÇÃO

Alguns indícios já possuem uma aceitação ampla para promover refatoração:

Código duplicado (duplicated code) Método longo (long method) Classe grande (large class) Lista de parâmetros longa (long parameter list) Má indentação(Bad Indentation)

ANTES

<<extends>>

CONTROLADOR

EFERTUAR CONTROLE

DE TRÁFEGO

GERENCIARROTAS E TRENS

•Cadastrar•Consultar•Remover•Monitorar

•Alterar

DEPOIS

CONTROLADOR

EFETUAR CONTROLE DE

TRÁFEGO

CADASTRAR ROTAS E TRENS

CONSULTAR ROTAS E TRENS

REMOVER ROTAS E TRENS

ALTERAR ROTAS E TRENS

MONITORAR ROTAS E TRENS

ANTES

TREM

+ Tipo: String+ Rota: String+Quant. Passageiros: Int+ Tipo de carga: String+ Quant. Carga: String+ Periculosidade: String

- Cadastrar ()- Consultar ()- Remover ()- Monitorar ()- Alterar()

DEPOIS

TREM+ Tipo: String+ Rota: String

-Cadastrar ()- Consultar ()- Remover ()- Monitorar ()- Alterar ()

PASSAGEIRO+ Quantidade: String

CARGA+ Tipo: String+ Quantidade: Double+ Periculosidade: String

ANTES/** Salva o produto no banco de dados. */ public void save()

{ // Verifica propriedades if ( this.getName() == null ){

throw new Exception("Falta nome"); } else if (this.getDescription() == null ) {

throw new Exception("Falta a descrição"); } this.getDatabase().save(this);

}

DEPOIS/** Salva o produto no banco de dados. */ public void save() {

this.checkProperties(); this.getDatabase().save(this);

} /** Verifica as propriedades do produto. */ public void checkProperties() {

if (this.getName() == null) { throw new Exception("Falta nome do produto."); } else if (this.getDescription() == null) { throw new Exception("Falta a descrição do produto."); }

}

FERRAMENTAS

XRefactoring: C e Java.

RefactorIT: Integrada em várias IDEs.

JFactor: Java

REFERÊNCIAS MAIA, P. H. REFAX:Um arcabouço para

desenvolvimento de ferramamentas de refatoração baseado XML. Programa de Pós Graduação em Ciência da Computação . Ceará, Fortaleza: UFC,2004.

FOWLER, M. Refatoração Aperfeiçando o Projeto de Código Existente (1ª Edição ed.). (A. Fernandes, Trad.) Porto Alegre - RS:Bookman,2004.