A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

13/11/2007 João Arthur Brunet Monteiro GMF/DSC/CEEI/UFCG Evolução de Software A Survey of Software Refactoring Reconstruction of Successful Software Evolution.

Apresentações semelhantes


Apresentação em tema: "13/11/2007 João Arthur Brunet Monteiro GMF/DSC/CEEI/UFCG Evolução de Software A Survey of Software Refactoring Reconstruction of Successful Software Evolution."— Transcrição da apresentação:

1 13/11/2007 João Arthur Brunet Monteiro GMF/DSC/CEEI/UFCG Evolução de Software A Survey of Software Refactoring Reconstruction of Successful Software Evolution Using Clone Detection

2 13/11/2007 João Arthur Brunet Monteiro GMF/DSC/CEEI/UFCG Roteiro Contextualização O Problema Refatoração Definição Refatoração e Evolução Processo Técnicas e Ferramentas Conclusão

3 13/11/2007 João Arthur Brunet Monteiro GMF/DSC/CEEI/UFCG Contextualização Software precisa evoluir Modificações Adição de funcionalidades Melhoria na estrutura Adequação ao cliente

4 13/11/2007 João Arthur Brunet Monteiro GMF/DSC/CEEI/UFCG O Problema Complexidade aumenta Distância do design original Erosão do Design Perda de qualidade Custo com manutenção é alto

5 13/11/2007 João Arthur Brunet Monteiro GMF/DSC/CEEI/UFCG A Solução: Refatoração Restruturação Refatoração: “Processo de mudar um software orientado a objeto de uma maneira que não altere seu comportamento externo, mas melhore sua qualidade interna” Reduzir a complexidade do software aumentando de forma incremental sua qualidade

6 13/11/2007 João Arthur Brunet Monteiro GMF/DSC/CEEI/UFCG A Solução: Refatoração Relacionado à qualidade interna do software Evolution Critical Normalmente não é fruto de novas funcionalidades no código, mas está relacionado à previsão da adição de novas funcionalidades “Funciona, mas e quando eu precisar modificar? Vai ser simples?”

7 13/11/2007 João Arthur Brunet Monteiro GMF/DSC/CEEI/UFCG Refatoração e Evolução Melhorar aspectos como: Modularidade Reusabilidade Complexidade Manutenabilidade Refatorar para facilitar futuras adaptações e extensões Coverter código legado em um código modularizado e extensível

8 13/11/2007 João Arthur Brunet Monteiro GMF/DSC/CEEI/UFCG Refatoração Primitive Refactoring MoveMethod RenameMethod AddClass ExtractMethod Composite Refactoring MoveMethodsToVisitor

9 13/11/2007 João Arthur Brunet Monteiro GMF/DSC/CEEI/UFCG Refatoração: O Processo Identificar qual parte do código deve ser refatorada Determinar quais refactorings devem ser aplicados Garantir a preservação do comportamento Avaliar o efeito da refatoração nas características que indicam qualidade no software Manter a consistência do código com os outros artefatos

10 13/11/2007 João Arthur Brunet Monteiro GMF/DSC/CEEI/UFCG Refatoração: O Processo Uso de métricas para identificar quais partes do software precisam ser refatoradas Abordagens dinâmicas e estáticas Testes Detecção Bad Semells Código Duplicado God Class

11 13/11/2007 João Arthur Brunet Monteiro GMF/DSC/CEEI/UFCG Refatoração: O Processo Por definição, refatoração não pode alterar o comportamento do software O que é comportamento? Para um mesmo conjunto de valores de entrada, a saída deve ser a mesma depois da refatoração Desempenho depende do domínio Embarcados Sistemas de vendas web

12 13/11/2007 João Arthur Brunet Monteiro GMF/DSC/CEEI/UFCG Refatoração: O Processo Avaliar o efeito da refatoração na qualidade do software Demeyer [1] avaliou que, ao trocar condições lógicas por polimorfismo, o software ganha em desempenho Compiladores otimizam chamadas polimórficas

13 13/11/2007 João Arthur Brunet Monteiro GMF/DSC/CEEI/UFCG Refatoração: O Processo Manter a consistência com outros artefatos Documentação do design Testes de unidade Documentação do código e de funcionalidades

14 13/11/2007 João Arthur Brunet Monteiro GMF/DSC/CEEI/UFCG Refatoração: O Processo Design Wizard Abordagem baseada em testes que permite verificar se o design de um determinado programa está em conformidade com o design especificado Suporte à atividade de refatoração

15 13/11/2007 João Arthur Brunet Monteiro GMF/DSC/CEEI/UFCG Refatoração: Formalismos Uso de Asserções Pré-condições Devem ser válidas antes da refatoração Pós-condições Devem ser válidas depois da refatoração Invariantes Devem ser válidas antes e depois da refatoração

16 13/11/2007 João Arthur Brunet Monteiro GMF/DSC/CEEI/UFCG Refatoração: Uso de asserções Maneira verificável de assegurar que o comportamento de um método foi mantido depois de refatorado Exemplo: MoveMethod(print,ASCIIDoc,Printer) ‏ Pré-condições ASCIIDoc e Printer devem existir o método print deve existir em ASCIIDoc Não deve existir o método print em Printer

17 13/11/2007 João Arthur Brunet Monteiro GMF/DSC/CEEI/UFCG Refatoração: Uso de asserções Pós-condições O método print deve existir em Printer O método print não deve existir em ASCIIDoc Invariantes ASCIIDoc e Printer devem existir antes de depois da refatoração

18 13/11/2007 João Arthur Brunet Monteiro GMF/DSC/CEEI/UFCG Outros Formalismos Fatiamento de Programas Extrair todas as declarações que podem afetar um certo conjunto de variáveis Baseado em grafos de dependência Pode ser usado para verificar que uma refatoração preserva o comportamento de determinada porção do código

19 13/11/2007 João Arthur Brunet Monteiro GMF/DSC/CEEI/UFCG Outros artefatos Refatoração não é somente aplicável a código Modelos de Design Esquemas de bancos de dados Arquitetura de Software Requisitos de Software Necessidade de manter todos sincronizados

20 13/11/2007 João Arthur Brunet Monteiro GMF/DSC/CEEI/UFCG Ferramentas Ferramentas automatizam primitive refactorings IntelliJ Idea Eclipse JFactor XRefactory JBuilder CodeGuide www.refactoring.com/tools.html

21 13/11/2007 João Arthur Brunet Monteiro GMF/DSC/CEEI/UFCG Ferramentas Indepedência de linguagem Embora exista ferramentas de refatoração para Java, não existe para JAspect Confiabilidade Undo

22 13/11/2007 João Arthur Brunet Monteiro GMF/DSC/CEEI/UFCG Refatoração e XP Pequenas iterações ao estilo: Codifica para passar nos testes Refatora Refatoração é um dos pilares de XP Refatoração + Testes = Aumento da qualidade e confiabilidade do código

23 13/11/2007 João Arthur Brunet Monteiro GMF/DSC/CEEI/UFCG Conclusões Evolução implica em refatoração O uso de métricas e visualização é extremamente importante para a atividade de refatoração Análise de impacto também é uma das atividades que podem acompanhar a refatoração Refatoração não é exclusiva a código

24 13/11/2007 João Arthur Brunet Monteiro GMF/DSC/CEEI/UFCG Reconstruction of Successful Software Evolution Using Clone Detection Heurística para reconstruir o processo evolutivo explorando técnicas de detecção de código duplicado Interesse em como as mudanças afetam o software ao longo do tempo Software Peleontology Heurist

25 13/11/2007 João Arthur Brunet Monteiro GMF/DSC/CEEI/UFCG Visualização Procura por mudanças entre duas versões distintas de software Visualização em forma de matriz

26 13/11/2007 João Arthur Brunet Monteiro GMF/DSC/CEEI/UFCG Visualização

27 13/11/2007 João Arthur Brunet Monteiro GMF/DSC/CEEI/UFCG Conclusões Limitações Escrita As linhas devem ser idênticas para serem detectadas Escalabilidade da visualização Poucos dados Poucas conclusões

28 13/11/2007 João Arthur Brunet Monteiro GMF/DSC/CEEI/UFCG Conclusões Usar o histórico de refatoração com intuito de entender a evolução do software pode ser interessante Detecção de outros tipos de refatoração Abordar a interpretação dos dados

29 13/11/2007 João Arthur Brunet Monteiro GMF/DSC/CEEI/UFCG Referências [1] S. Demeyer, “Maintainability versus Performance: What's the effect of introducing Polimorphism?” technical report, Lab. on Reeng., Universiteit Antwerpern, Belgium, 2002.


Carregar ppt "13/11/2007 João Arthur Brunet Monteiro GMF/DSC/CEEI/UFCG Evolução de Software A Survey of Software Refactoring Reconstruction of Successful Software Evolution."

Apresentações semelhantes


Anúncios Google