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
Download

tlm-workshop