140 likes | 269 Views
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.
E N D
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 Tiago Massoni
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 Tiago Massoni
Exemplos de Refatoramento public void imprimeRelatorio () { preparaRelatorio(); enviaRelatorioImpressora();} private void preparaRelatorio { //codigo preparar relatorio} private void enviaRelatorioImpressora() { // codigo enviar relatorio para impressora} public void imprimeRelatorio () { //codigo preparar relatorio //codigo enviar relatorio para impressora } Tiago Massoni
Cliente Funcionario nome : String nome : String idade : Integer idade : Integer retornaNome() retornaNome() retornaIdade() retornaIdade() Exemplos de Refatoramento Pessoa nome : String idade : Integer retornaNome() retornaIdade() Cliente Funcionario Tiago Massoni
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 Tiago Massoni
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 Tiago Massoni
Contribuições • Estudo sobre manutenção de consistência modelo-código • Automatização • Sugestões para extensão do RUP • Atividades, guias, artefatos Tiago Massoni
Estudo dos Refatoramentos pelos Níveis de Abstração Tiago Massoni
Resultados... • Alguns problemas claros • Geração de código • Mapear abstrato para concreto • Alternativas para automatização • Modelo contendo código • Registro de refatoramentos Tiago Massoni
Refatoramento no RUPAspectos 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 Tiago Massoni
Refatoramento no RUPAspectos 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 Tiago Massoni
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 Tiago Massoni
Obrigado! Feedback é bem-vindo... Tiago Massoni