19
REFATORAÇÃO JOÃO LACERDA DJALMA LIMA

REFATORAÇÃO JOÃO LACERDA DJALMA LIMA. MARTIN FOWLER É um autor conhecido na área de arquitetura de software, especializado em análise orientada a objetos,

Embed Size (px)

Citation preview

Page 1: REFATORAÇÃO JOÃO LACERDA DJALMA LIMA. MARTIN FOWLER É um autor conhecido na área de arquitetura de software, especializado em análise orientada a objetos,

REFATORAÇÃO

JOÃO LACERDADJALMA LIMA

Page 2: REFATORAÇÃO JOÃO LACERDA DJALMA LIMA. MARTIN FOWLER É um autor conhecido na área de arquitetura de software, especializado em análise orientada a objetos,

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.

Page 3: REFATORAÇÃO JOÃO LACERDA DJALMA LIMA. MARTIN FOWLER É um autor conhecido na área de arquitetura de software, especializado em análise orientada a objetos,

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

Page 4: REFATORAÇÃO JOÃO LACERDA DJALMA LIMA. MARTIN FOWLER É um autor conhecido na área de arquitetura de software, especializado em análise orientada a objetos,

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

Page 5: REFATORAÇÃO JOÃO LACERDA DJALMA LIMA. MARTIN FOWLER É um autor conhecido na área de arquitetura de software, especializado em análise orientada a objetos,

MANTENDO A CASA EM ORDEM

Page 6: REFATORAÇÃO JOÃO LACERDA DJALMA LIMA. MARTIN FOWLER É um autor conhecido na área de arquitetura de software, especializado em análise orientada a objetos,

OBJETIVO

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

Page 7: REFATORAÇÃO JOÃO LACERDA DJALMA LIMA. MARTIN FOWLER É um autor conhecido na área de arquitetura de software, especializado em análise orientada a objetos,

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)

Page 8: REFATORAÇÃO JOÃO LACERDA DJALMA LIMA. MARTIN FOWLER É um autor conhecido na área de arquitetura de software, especializado em análise orientada a objetos,

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)

Page 9: REFATORAÇÃO JOÃO LACERDA DJALMA LIMA. MARTIN FOWLER É um autor conhecido na área de arquitetura de software, especializado em análise orientada a objetos,

MOTIVAÇÕES

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

Page 10: REFATORAÇÃO JOÃO LACERDA DJALMA LIMA. MARTIN FOWLER É um autor conhecido na área de arquitetura de software, especializado em análise orientada a objetos,

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

Page 11: REFATORAÇÃO JOÃO LACERDA DJALMA LIMA. MARTIN FOWLER É um autor conhecido na área de arquitetura de software, especializado em análise orientada a objetos,

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)

Page 12: REFATORAÇÃO JOÃO LACERDA DJALMA LIMA. MARTIN FOWLER É um autor conhecido na área de arquitetura de software, especializado em análise orientada a objetos,

ANTES

<<extends>>

CONTROLADOR

EFERTUAR CONTROLE

DE TRÁFEGO

GERENCIARROTAS E TRENS

•Cadastrar•Consultar•Remover•Monitorar

•Alterar

Page 13: REFATORAÇÃO JOÃO LACERDA DJALMA LIMA. MARTIN FOWLER É um autor conhecido na área de arquitetura de software, especializado em análise orientada a objetos,

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

Page 14: REFATORAÇÃO JOÃO LACERDA DJALMA LIMA. MARTIN FOWLER É um autor conhecido na área de arquitetura de software, especializado em análise orientada a objetos,

ANTES

TREM

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

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

Page 15: REFATORAÇÃO JOÃO LACERDA DJALMA LIMA. MARTIN FOWLER É um autor conhecido na área de arquitetura de software, especializado em análise orientada a objetos,

DEPOIS

TREM+ Tipo: String+ Rota: String

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

PASSAGEIRO+ Quantidade: String

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

Page 16: REFATORAÇÃO JOÃO LACERDA DJALMA LIMA. MARTIN FOWLER É um autor conhecido na área de arquitetura de software, especializado em análise orientada a objetos,

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

}

Page 17: REFATORAÇÃO JOÃO LACERDA DJALMA LIMA. MARTIN FOWLER É um autor conhecido na área de arquitetura de software, especializado em análise orientada a objetos,

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."); }

}

Page 18: REFATORAÇÃO JOÃO LACERDA DJALMA LIMA. MARTIN FOWLER É um autor conhecido na área de arquitetura de software, especializado em análise orientada a objetos,

FERRAMENTAS

XRefactoring: C e Java.

RefactorIT: Integrada em várias IDEs.

JFactor: Java

Page 19: REFATORAÇÃO JOÃO LACERDA DJALMA LIMA. MARTIN FOWLER É um autor conhecido na área de arquitetura de software, especializado em análise orientada a objetos,

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.