Introduzindo
Refatoramento a
Metodologias Tradicionais
Tiago Massoni
Workshop de Artigos TAES3
19/08/2003
Temos Muitos Problemas
com Estrutura do Código!
Código-fonte mal
estruturado
– Spaguetti code
Dificuldades de
manutenção
– Correção de erros
– Adicionar novos
requisitos
19/08/2003
Tiago Massoni
2 / 14
Refatoramento em uma
Casca de Noz
Refatoramento altera código-fonte...
– Motivado por “bad smells”
– Melhora estrutura interna em algum fator
de qualidade
...e preserva comportamento externo
– Usuário do sistema não percebe
– Test-First
19/08/2003
Tiago Massoni
3 / 14
Exemplos de
Refatoramento
public void imprimeRelatorio () {
preparaRelatorio();
enviaRelatorioImpressora();
}
public void imprimeRelatorio ()
{
//codigo preparar relatorio
//codigo enviar relatorio
para impressora
}
19/08/2003
private void preparaRelatorio {
//codigo preparar relatorio
}
private void enviaRelatorioImpressora()
{
// codigo enviar relatorio para
impressora
}
Tiago Massoni
4 / 14
Exemplos de
Refatoramento
Pessoa
nome : String
idade : Integer
Cliente
Funcionario
nome : String
idade : Integer
nome : String
idade : Integer
retornaNome()
retornaIdade()
retornaNome()
retornaIdade()
retornaNome()
retornaIdade()
Cliente
19/08/2003
Tiago Massoni
Funcionario
5 / 14
Que tal Refatoramentos
em Modelos?
Podemos estender refatoramento para
níveis mais abstratos
– Refatoramentos em análise e projeto
– Melhora qualidade, preserva semântica
Algumas vantagens
– Mais fácil visualizar mudanças
– Exploração de decisões de projeto
– Automatização pode ser poderosa
19/08/2003
Tiago Massoni
6 / 14
Extreme Programming fez a
Fama de Refatoramento!
Uma das práticas principais de XP
Intrínseco ao ciclo de vida
– Refatoramentos sucessivos
Código fonte como único artefato relevante
– Refatoramentos de código
Mas e para metodologias como RUP e OPEN?
– Sincronização entre modelo e código
– Atividades e guias adicionais a metodologias
19/08/2003
Tiago Massoni
7 / 14
Contribuições
Estudo sobre manutenção de
consistência modelo-código
– Automatização
Sugestões para extensão do RUP
– Atividades, guias, artefatos
19/08/2003
Tiago Massoni
8 / 14
Estudo dos Refatoramentos
pelos Níveis de Abstração
19/08/2003
Tiago Massoni
9 / 14
Resultados...
Alguns problemas claros
– Geração de código
– Mapear abstrato para concreto
Alternativas para automatização
– Modelo contendo código
– Registro de refatoramentos
19/08/2003
Tiago Massoni
10 / 14
Refatoramento no RUP
Aspectos Estáticos
Planejamento (iteração)
– Atividades: planejar e avaliar (métricas)
– Artefato: Plano de refatoramento
Análise & Projeto
– Passo: Decisões técnicas
– Passo: Refatoramentos de modelos
Implementação
– Passo: Transferir mudanças de modelo
– Passo: Decisões técnicas
– Passo: Mudanças no código
19/08/2003
Tiago Massoni
11 / 14
Refatoramento no RUP
Aspectos Dinâmicos
Elaboração
– Refatoramentos consideráveis
– Foco em modelos
Construção
– Refatoramentos adaptativos e corretivos
– Mudanças rápidas no código
Transição
– Defeitos e problemas não previstos
19/08/2003
Tiago Massoni
12 / 14
Conclusão
Refatoramento é técnica relevante
– Pode aumentar produtividade
– Tratamento em metodologias de software
Trabalhos futuros
– Formalização do relacionamento modelo e
código em refatoramentos
– Ferramentas CASE com suporte a
refatoramento
19/08/2003
Tiago Massoni
13 / 14
Obrigado!
Feedback é bem-vindo...
19/08/2003
Tiago Massoni
14 / 14