engenharia reversa engenharia reversa pós-graduação em análise, projeto e gerência de sistemas...

45
Engenharia Reversa Engenharia Reversa Pós-Graduação em Análise, Projeto e Gerência de Sistemas de Informação Professora: Aline Vasconcelos [email protected]

Upload: internet

Post on 17-Apr-2015

107 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Engenharia Reversa Engenharia Reversa Pós-Graduação em Análise, Projeto e Gerência de Sistemas de Informação Professora: Aline Vasconcelos apires@iff.edu.br

Engenharia ReversaEngenharia ReversaPós-Graduação em Análise, Projeto e Gerência de

Sistemas de Informação

Professora: Aline Vasconcelos

[email protected]

Page 2: Engenharia Reversa Engenharia Reversa Pós-Graduação em Análise, Projeto e Gerência de Sistemas de Informação Professora: Aline Vasconcelos apires@iff.edu.br

2

Definição

Engenharia ReversaEngenharia Reversa: : processo de análise dos componentes do sistema e dos seus relacionamentos, a fim de descrever este sistema em um nível de abstração mais alto do que o código fonte original (GANNOD, 1999).

Page 3: Engenharia Reversa Engenharia Reversa Pós-Graduação em Análise, Projeto e Gerência de Sistemas de Informação Professora: Aline Vasconcelos apires@iff.edu.br

3

Sistema Legado

Sistema LegadoSistema Legado: Segundo (PRESSMAN, 2001), o : Segundo (PRESSMAN, 2001), o

termo “sistemas legados” é um eufemismo para termo “sistemas legados” é um eufemismo para

sistemas, geralmente antigos, mal documentados e sistemas, geralmente antigos, mal documentados e

mal projetados que devem ser mantidos por muitos mal projetados que devem ser mantidos por muitos

anos, por serem críticos para o negócio de uma anos, por serem críticos para o negócio de uma

organização. A organização. A Engenharia ReversaEngenharia Reversa atua no auxílio à atua no auxílio à

recuperação da documentação e ao entendimento recuperação da documentação e ao entendimento

desses sistemas, possibilitando que a sua desses sistemas, possibilitando que a sua

manutenção seja realizada de forma menos árdua.manutenção seja realizada de forma menos árdua.

Page 4: Engenharia Reversa Engenharia Reversa Pós-Graduação em Análise, Projeto e Gerência de Sistemas de Informação Professora: Aline Vasconcelos apires@iff.edu.br

4

Sistemas Legados: Importância

Alto investimento feito pelas empresas. Embutem conhecimento do negócio e regras de

negócio. Precisam ser Mantidos:

Correção de bugs (ex: ano 2000)Correção de bugs (ex: ano 2000) Acréscimo de funcionalidadeAcréscimo de funcionalidade Migração para uma Tecnologia Atual (Web, Componentes)Migração para uma Tecnologia Atual (Web, Componentes) Novas Regras ou Regras de Negócio modificadasNovas Regras ou Regras de Negócio modificadas Etc.Etc.

Page 5: Engenharia Reversa Engenharia Reversa Pós-Graduação em Análise, Projeto e Gerência de Sistemas de Informação Professora: Aline Vasconcelos apires@iff.edu.br

5

Engenharia Reversa: Motivações

Sistemas Legados, em geral, não apresentam documentação de apoio ou a documentação está desatualizada.

Pessoas que desenvolveram o software não trabalham mais na empresa.

Código fonte se encontra em baixo nível de abstração e é de difícil compreensão.

Algumas vezes somente o binário ou executável está disponível.

Sistemas Legados representam alto esforço e custo de desenvolvimento investidos.

Embutem conhecimento sobre o negócio que muitas vezes não se encontra mais disponível.

Page 6: Engenharia Reversa Engenharia Reversa Pós-Graduação em Análise, Projeto e Gerência de Sistemas de Informação Professora: Aline Vasconcelos apires@iff.edu.br

6

Objetivos da Engenharia Reversa (ER)

Recuperar documentação para apoiar a Compreensão de Programas.

Recuperar documentação para apoiar a reutilização ou renovação de programas (reengenharia).

Recuperar documentação que represente Visões complementares do sistema.

Page 7: Engenharia Reversa Engenharia Reversa Pós-Graduação em Análise, Projeto e Gerência de Sistemas de Informação Professora: Aline Vasconcelos apires@iff.edu.br

7

Fontes de Informação da ER

estilosarquiteturais

especialista humano

documentação do software

modelos e conhecimento do domínio

padrões

código fonte, código binário ou executávelrepositório

de GCSMake file

banco de dados; metadados

Page 8: Engenharia Reversa Engenharia Reversa Pós-Graduação em Análise, Projeto e Gerência de Sistemas de Informação Professora: Aline Vasconcelos apires@iff.edu.br

8

Características da ER Três tópicos de engenharia reversa precisam ser tratados:

Nível de Abstração: Quanto mais alto, melhor. Quanto mais alto, melhor. Porém, quanto mais alto, a probabilidade é de que

uma maior intervenção humana seja requerida no processo.

Completeza : Refere-se ao nível de detalhe que é fornecido em um Refere-se ao nível de detalhe que é fornecido em um

nível de abstração.nível de abstração. Na maioria dos casos, diminui à medida que o nível de abstração aumenta.

Quanto maior a interação humana, maior probabilidade de se aumentar a completeza.

Direcionalidade: Um único sentido: Compreensão de Programa.Um único sentido: Compreensão de Programa. Dois sentidos: Reengenharia!Dois sentidos: Reengenharia!

Page 9: Engenharia Reversa Engenharia Reversa Pós-Graduação em Análise, Projeto e Gerência de Sistemas de Informação Professora: Aline Vasconcelos apires@iff.edu.br

9

Níveis de Abstração dos Modelos Recuperados

Projeto Detalhado: diagramas de classes, grafos, árvores sintáticas, diagramas de estrutura, diagramas de seqüência etc.

Projeto Arquitetural: diagramas de pacotes e de classes, diagramas de componentes, diagramas de caixas e linhas, ADLs (Architectural Description Languages) etc.

Requisitos: casos de uso, regras de negócio, diagramas de estado etc.

Page 10: Engenharia Reversa Engenharia Reversa Pós-Graduação em Análise, Projeto e Gerência de Sistemas de Informação Professora: Aline Vasconcelos apires@iff.edu.br

Níveis de Abstração

Código Legado

Arquitetura de Software

Projeto Detalhado

Requisitos

Page 11: Engenharia Reversa Engenharia Reversa Pós-Graduação em Análise, Projeto e Gerência de Sistemas de Informação Professora: Aline Vasconcelos apires@iff.edu.br

11

Recuperação da Arquitetura de Software

Recuperação de uma documentação arquitetural para um sistema existente.

Diversas abordagens vêm sendo propostas na literatura.

Normalmente, o processo é semi-automatizado.

Técnicas de clusteringclustering e e pattern matchingpattern matching costumam ser empregadas.

Page 12: Engenharia Reversa Engenharia Reversa Pós-Graduação em Análise, Projeto e Gerência de Sistemas de Informação Professora: Aline Vasconcelos apires@iff.edu.br

12

Modelo de Visões Arquiteturais 4+1(Kruchten, 1995)

Visão Lógica: descreve a perspectiva estática do sistema, demonstrando seus componentes e conectores. Reflete abstrações-chave do domínio do problema.

Visão de Processo: perspectiva dinâmica, demonstrando os diferentes processos do sistema e descrevendo aspectos de concorrência e de sincronização do projeto.

Page 13: Engenharia Reversa Engenharia Reversa Pós-Graduação em Análise, Projeto e Gerência de Sistemas de Informação Professora: Aline Vasconcelos apires@iff.edu.br

13

Visão Lógica e de Processo da Arquitetura

Page 14: Engenharia Reversa Engenharia Reversa Pós-Graduação em Análise, Projeto e Gerência de Sistemas de Informação Professora: Aline Vasconcelos apires@iff.edu.br

14

Modelo de Visões Arquiteturais 4+1(Kruchten, 1995)

Visão Física: descreve o mapeamento do software (componentes, processos) para o hardware e reflete a natureza distribuída do sistema.

Visão de Desenvolvimento: descreve o software no seu ambiente de implementação. Mostra a utilização de COTS (Commercial off-the-shelf Software Components), bibliotecas etc.

Page 15: Engenharia Reversa Engenharia Reversa Pós-Graduação em Análise, Projeto e Gerência de Sistemas de Informação Professora: Aline Vasconcelos apires@iff.edu.br

15

Visão Física e de Desenvolvimento da Arquitetura

Server

Client

Page 16: Engenharia Reversa Engenharia Reversa Pós-Graduação em Análise, Projeto e Gerência de Sistemas de Informação Professora: Aline Vasconcelos apires@iff.edu.br

16

Modelo de Visões Arquiteturais 4+1(Kruchten, 1995)

Visão de Cenários: ou de casos de uso, utilizada para ilustrar o comportamento do sistema em sua arquitetura, conforme descrita pelas outras quatro visões. Para tal ilustração, alguns cenários de casos de uso devem ser selecionados.

Page 17: Engenharia Reversa Engenharia Reversa Pós-Graduação em Análise, Projeto e Gerência de Sistemas de Informação Professora: Aline Vasconcelos apires@iff.edu.br

17

Técnicas para a Engenharia Reversa(Vasconcelos, 2004)

Análise Estática Análise Dinâmica Clustering (agrupamento de elementos) Program Slicing (recorte de programas) Programação Orientada a Aspectos Pattern Matching (reconhecimento de

padrões) Data Mining (mineração de dados) etc.etc.

Page 18: Engenharia Reversa Engenharia Reversa Pós-Graduação em Análise, Projeto e Gerência de Sistemas de Informação Professora: Aline Vasconcelos apires@iff.edu.br

18

Análise Estática

Geralmente, representa a análise do Código fonteanálise do Código fonte feita com o uso de um parser parser para a linguagem de programação.

Através da Análise EstáticaAnálise Estática, podem ser recuperados modelos estáticos, como Diagramas Diagramas de Classesde Classes ou modelos dinâmicos, como Diagramas de SeqüênciaDiagramas de Seqüência, gerados com base em uma chamada de método no código.

VantagensVantagens: para Diagrama de Classes a partir de código OO, mapeamento quase direto. Volume de Informação gerenciável.

DesvantagensDesvantagens: não soluciona referências polimórficas.

Page 19: Engenharia Reversa Engenharia Reversa Pós-Graduação em Análise, Projeto e Gerência de Sistemas de Informação Professora: Aline Vasconcelos apires@iff.edu.br

19

Exemplo de Ferramenta de Análise Estática

Source CodeSource Code

UML static model: classes, UML static model: classes, packages and their packages and their relationships.relationships.

GOAL: GOAL: Represent Source Code Elements in a Higher Level of Represent Source Code Elements in a Higher Level of Abstraction. Facilitates System Analysis.Abstraction. Facilitates System Analysis.

ExtractExtract

ARES ToolARES Tool

Page 20: Engenharia Reversa Engenharia Reversa Pós-Graduação em Análise, Projeto e Gerência de Sistemas de Informação Professora: Aline Vasconcelos apires@iff.edu.br

20

Ferramenta Ares

Recupera um maior número de dependências do que ferramentas de Engenharia Reversa tradicionais:

Analisa tipos de parâmetros, variáveis locais, retornos de métodos.

Utiliza o JAVACC para gerar o parser. https://javacc.dev.java.net/

Integrada ao ambiente Odyssey: http://reuse.cos.ufrj.br/odyssey

Page 21: Engenharia Reversa Engenharia Reversa Pós-Graduação em Análise, Projeto e Gerência de Sistemas de Informação Professora: Aline Vasconcelos apires@iff.edu.br

21

Problemas na Recuperação de Modelos

Recuperação de conceitos como AgregaçãoAgregação e ComposiçãoComposição não é trivial. Uma mesma especificação pode ser

implementada de diversas formas por diferentes programadores.

Durante a análise do código para a extração de conceitos do projeto, nos deparamos com situações onde a origem real do conceito implementado não é possível de ser atingida. Este é um problema conhecido como “Problema da Associação de Conceitos” (Concept Concept Assignment ProblemAssignment Problem)(BIGGERSTAFF et al., 1994).

Page 22: Engenharia Reversa Engenharia Reversa Pós-Graduação em Análise, Projeto e Gerência de Sistemas de Informação Professora: Aline Vasconcelos apires@iff.edu.br

22

Análise Dinâmica

Se baseia na instrumentação do softwareinstrumentação do software e monitoramento da sua execuçãomonitoramento da sua execução para extração de modelos.

Extrai modelos dinâmicos/comportamentais, como Diagramas de SeqüênciaDiagramas de Seqüência e de Estado.

Etapas: Definição de Cenários de UsoCenários de Uso do Software InstrumentaçãoInstrumentação ExecuçãoExecução Extração de DiagramasExtração de Diagramas

Page 23: Engenharia Reversa Engenharia Reversa Pós-Graduação em Análise, Projeto e Gerência de Sistemas de Informação Professora: Aline Vasconcelos apires@iff.edu.br

23

Análise Dinâmica

Algumas Técnicas de Instrumentação para Java: Aspecto de TracingAspecto de Tracing Java Logging APIJava Logging API Extensão/Instrumentação da Máquina VirtualExtensão/Instrumentação da Máquina Virtual API SUN/JAVA debuggingAPI SUN/JAVA debugging etc.etc.

Vantagens: Vantagens: resolve referências polimórficas na resolve referências polimórficas na extração de modelos comportamentais.extração de modelos comportamentais.

DesvantagensDesvantagens: volume de informação recuperado.: volume de informação recuperado.

Page 24: Engenharia Reversa Engenharia Reversa Pós-Graduação em Análise, Projeto e Gerência de Sistemas de Informação Professora: Aline Vasconcelos apires@iff.edu.br

24

Exemplo de Ferramentas de Análise Dinâmica – Tracer + Phoenix

ExtractExtract

Tracer Tool Tracer Tool (Aspects)/(Aspects)/Sequence Sequence Diagram Diagram Extractor Extractor (Phoenix)(Phoenix)

Traces Traces (XML)(XML) and UML and UML Dynamic Model.Dynamic Model.

ApplicationApplication

Page 25: Engenharia Reversa Engenharia Reversa Pós-Graduação em Análise, Projeto e Gerência de Sistemas de Informação Professora: Aline Vasconcelos apires@iff.edu.br

25

Recuperação de Arquitetura

Análise Estática e DinâmicaAnálise Estática e Dinâmica é complementada com técnicas técnicas como Clustering, Queries, Pattern Clustering, Queries, Pattern Matching, Program SlicingMatching, Program Slicing etc., a fim de elevar o nível de abstração dos modelos.

Recai novamente no problema de Concept Concept AssignmentAssignment....como uma Camada está implementada no código??? Através de um Pacote??? Que Classes compõem que Camadas????

Algumas abordagens e ferramentas vêm sendo propostas

Page 26: Engenharia Reversa Engenharia Reversa Pós-Graduação em Análise, Projeto e Gerência de Sistemas de Informação Professora: Aline Vasconcelos apires@iff.edu.br

QUESTÕES DE PESQUISA

Page 27: Engenharia Reversa Engenharia Reversa Pós-Graduação em Análise, Projeto e Gerência de Sistemas de Informação Professora: Aline Vasconcelos apires@iff.edu.br

27

Engenharia Reversa – Questões de Pesquisa

Engenharia Reversa para Requisitos.Engenharia Reversa para Requisitos. Concept Assignment Problem: ER recuperando

agregações, composições e outros conceitos. Recuperação de padrões arquiteturais como

MVC e Camadas.

Page 28: Engenharia Reversa Engenharia Reversa Pós-Graduação em Análise, Projeto e Gerência de Sistemas de Informação Professora: Aline Vasconcelos apires@iff.edu.br

Reestruturação

Page 29: Engenharia Reversa Engenharia Reversa Pós-Graduação em Análise, Projeto e Gerência de Sistemas de Informação Professora: Aline Vasconcelos apires@iff.edu.br

29

Reestruturação (ou Refactoring)

Enquanto a Engenharia ReversaEngenharia Reversa elevaeleva o nível nível de abstraçãode abstração da representação do software, a Reestruturação Reestruturação altera o software, mantendo-o no mesmo nível de abstração. mesmo nível de abstração.

Modifica o software a fim de melhorá-lo para melhorá-lo para futuras manutençõesfuturas manutenções, mas não modificanão modifica a sua funcionalidadefuncionalidade.

Pode ser realizada em nível de projeto ou de código fonte.

Não deve modificar a arquitetura do software, mas detalhes de módulos individuais.

Page 30: Engenharia Reversa Engenharia Reversa Pós-Graduação em Análise, Projeto e Gerência de Sistemas de Informação Professora: Aline Vasconcelos apires@iff.edu.br

30

Reestruturação (ou Refactoring)

Benefícios:Benefícios: Programas com maior qualidade,

seguindo boas práticas de programaçãoboas práticas de programação e princípiosprincípios da Engenharia de SoftwareEngenharia de Software.

Curva de aprendizadoCurva de aprendizado dos programas é menor menor em função de um projeto e código mais “limpos”.

Programas mais manuteníveismanuteníveis!

IMPORTANTE: Não se esqueça dos Testes de Regressão sobre a partes reestruturadas!!!

Page 31: Engenharia Reversa Engenharia Reversa Pós-Graduação em Análise, Projeto e Gerência de Sistemas de Informação Professora: Aline Vasconcelos apires@iff.edu.br

31

Reestruturação (ou Refactoring)

By Martin Fowler (2002):By Martin Fowler (2002):

“Whenever I do refactoring, the first step is

always the same. I need to build a solid set of

tests for that section of code. The tests are

essential because even though I follow

refactorings structured to avoid most of the

opportunities for introducing bugs, I'm still

human and still make mistakes. Thus I need

solid tests.”

Page 32: Engenharia Reversa Engenharia Reversa Pós-Graduação em Análise, Projeto e Gerência de Sistemas de Informação Professora: Aline Vasconcelos apires@iff.edu.br

32

Refactoring: Improving the Design of Existing Code (Fowler at al., 2002)

Bad Smells in Code: Duplicated Code: Duplicated Code: retrabalho na manutenção, vai retrabalho na manutenção, vai

contra os princípios da reutilização de software.contra os princípios da reutilização de software.

Long Method: Long Method: falta de coesão e objetividade. falta de coesão e objetividade. Complexidade. Dificuldade nas manutenções.Complexidade. Dificuldade nas manutenções.

Long Parameter List: Long Parameter List: em orientação a objetos você em orientação a objetos você pode solicitar dados necessários aos respectivos pode solicitar dados necessários aos respectivos objetos. Além disso, o ideal é que a maior parte da objetos. Além disso, o ideal é que a maior parte da informação necessária para um método, faça parte informação necessária para um método, faça parte da sua própria Classe. Longas listas são difíceis de da sua própria Classe. Longas listas são difíceis de compreender e dar manutenção.compreender e dar manutenção.

Page 33: Engenharia Reversa Engenharia Reversa Pós-Graduação em Análise, Projeto e Gerência de Sistemas de Informação Professora: Aline Vasconcelos apires@iff.edu.br

33

Refactoring: Improving the Design of Existing Code (Fowler at al., 2002)

Bad Smells in Code: Feature Envy: Feature Envy: o método utiliza mais atributos o método utiliza mais atributos

(variáveis) de outras Classes do que da sua própria.(variáveis) de outras Classes do que da sua própria.

Temporary Field: Temporary Field: objetos que possuem uma variável objetos que possuem uma variável de instância que é atualizada somente em certas de instância que é atualizada somente em certas circunstâncias. Geralmente, esperamos que um circunstâncias. Geralmente, esperamos que um objeto precise de todas as suas variáveis. objeto precise de todas as suas variáveis.

Data Classes: Data Classes: classes que só possuem variáveis e classes que só possuem variáveis e métodos get e set. Certamente devem estar sendo métodos get e set. Certamente devem estar sendo manipuladas em um alto nível de detalhe por outras manipuladas em um alto nível de detalhe por outras classes. Classes devem representar um classes. Classes devem representar um agrupamento de dados e responsabilidades agrupamento de dados e responsabilidades (comportamentos).(comportamentos).

Page 34: Engenharia Reversa Engenharia Reversa Pós-Graduação em Análise, Projeto e Gerência de Sistemas de Informação Professora: Aline Vasconcelos apires@iff.edu.br

34

Refactoring: Improving the Design of Existing Code (Fowler at al., 2002)

Bad Smells in Code: Refused Bequest: Refused Bequest: subclasses não utilizam todos os subclasses não utilizam todos os

métodos e atributos herdados das superclasses. A métodos e atributos herdados das superclasses. A hierarquia pode estar equivocada.hierarquia pode estar equivocada.

Large Class ou God Class e Divergent Change: Large Class ou God Class e Divergent Change: falta de coesão e dificuldades na manutenção. falta de coesão e dificuldades na manutenção. Diferentes modificações aplicadas à mesma Diferentes modificações aplicadas à mesma Classe.Classe.

Page 35: Engenharia Reversa Engenharia Reversa Pós-Graduação em Análise, Projeto e Gerência de Sistemas de Informação Professora: Aline Vasconcelos apires@iff.edu.br

BAD SMELLS.....

Como resolvê-los?????

Page 36: Engenharia Reversa Engenharia Reversa Pós-Graduação em Análise, Projeto e Gerência de Sistemas de Informação Professora: Aline Vasconcelos apires@iff.edu.br

36

Algumas Opções de Refactoring no Eclipse (IDE) – extraídas de Fowler (2002)

Extract InterfaceExtract Interface: cria uma nova interface com um conjunto de métodos e faz com que a classe selecionada implemente a interface. Opcionalmente, modifica referências à Classe para referências à Interface, quando possível.

Extract MethodExtract Method: cria um novo método contendo os comandos ou expressão selecionados e substitui a seleção por uma invocação ao novo método.

Encapsulate FieldEncapsulate Field: substitui todas as referências a um campo por métodos get e set, criando os novos métodos.

Page 37: Engenharia Reversa Engenharia Reversa Pós-Graduação em Análise, Projeto e Gerência de Sistemas de Informação Professora: Aline Vasconcelos apires@iff.edu.br

37

Algumas Opções de Refactoring no Eclipse (IDE) – extraídas de Fowler (2002)

Push DownPush Down: move um conjunto de métodos e/ou campos de uma classe para suas subclasses. Deve ser usado quando um comportamento ou estrutura é requerido apenas em algumas subclasses.

Pull UpPull Up: move um conjunto de métodos e/ou campos de uma subclasse para a sua superclasse. Deve ser usado quando métodos de mais de uma subclasse oferecem o mesmo comportamento e resultado ou quando duas ou mais subclasses têm o mesmo campo.

Page 38: Engenharia Reversa Engenharia Reversa Pós-Graduação em Análise, Projeto e Gerência de Sistemas de Informação Professora: Aline Vasconcelos apires@iff.edu.br

38

Solucionando Bad Smells com Refactorings

Duplicated Code:Duplicated Code: A mesma expresão em dois métodos da A mesma expresão em dois métodos da

mesma Classe:mesma Classe: EXTRACT METHODEXTRACT METHOD

A mesma expresão em duas subclasses A mesma expresão em duas subclasses vizinhas:vizinhas:

EXTRACT METHOD EXTRACT METHOD em todas as Classes PULL UP FIELDPULL UP FIELD

etc.etc.

Page 39: Engenharia Reversa Engenharia Reversa Pós-Graduação em Análise, Projeto e Gerência de Sistemas de Informação Professora: Aline Vasconcelos apires@iff.edu.br

39

Solucionando Bad Smells com Refactorings

Long Method:Long Method: 99% dos casos:99% dos casos:

EXTRACT METHOD EXTRACT METHOD encontre partes do método que possam formar um novo método

Long Parameter ListLong Parameter List INTRODUCE PARAMETER OBJECT INTRODUCE PARAMETER OBJECT se você

tem um grupo de parâmetros que freqüentemente é passado em conjunto, substitua-os por um objeto. Neste caso, a nova classe provavelmente também terá comportamento resultante da análise de manipulações feitas sobre os dados.

etc.etc.

Page 40: Engenharia Reversa Engenharia Reversa Pós-Graduação em Análise, Projeto e Gerência de Sistemas de Informação Professora: Aline Vasconcelos apires@iff.edu.br

40

Solucionando Bad Smells com Refactorings

Large Class:Large Class: EXTRACT CLASS EXTRACT CLASS

Page 41: Engenharia Reversa Engenharia Reversa Pós-Graduação em Análise, Projeto e Gerência de Sistemas de Informação Professora: Aline Vasconcelos apires@iff.edu.br

41

Solucionando Bad Smells com Refactorings

Large Class:Large Class: Extract Class: Extract Class: crie uma nova Classe e mova os

campos e métodos relevantes da Classe antiga para esta nova.

Extract SubClass: Extract SubClass: uma classe tem características que só são usadas por algumas instâncias. Crie uma SubClasse para este subconjunto de características.

Extract InterfaceExtract Interface etc.etc.

Page 42: Engenharia Reversa Engenharia Reversa Pós-Graduação em Análise, Projeto e Gerência de Sistemas de Informação Professora: Aline Vasconcelos apires@iff.edu.br

42

Solucionando Bad Smells com Refactorings

Refused Bequest:Refused Bequest: Crie uma nova Subclasse eCrie uma nova Subclasse e aplique aplique Push Down Push Down

MethodMethod e e Push DownPush Down FieldField Refactorings. Refactorings.

Se a SubClasse não pretende suportar a Se a SubClasse não pretende suportar a interface da SuperClasse..... então aplique ointerface da SuperClasse..... então aplique o

Replace Inheritance with DelegationReplace Inheritance with Delegation

para reuso de comportamento apenas. para reuso de comportamento apenas.

etc.

Page 43: Engenharia Reversa Engenharia Reversa Pós-Graduação em Análise, Projeto e Gerência de Sistemas de Informação Professora: Aline Vasconcelos apires@iff.edu.br

QUESTÕES DE PESQUISA

Page 44: Engenharia Reversa Engenharia Reversa Pós-Graduação em Análise, Projeto e Gerência de Sistemas de Informação Professora: Aline Vasconcelos apires@iff.edu.br

44

Questões de Pesquisa

Ferramenta para automatizar refatorações em diferentes tipos de linguagem.

Outro exemplo de refatoração: classes com atributos em comum e/ou métodos em comum transformadas em uma hierarquia.

Page 45: Engenharia Reversa Engenharia Reversa Pós-Graduação em Análise, Projeto e Gerência de Sistemas de Informação Professora: Aline Vasconcelos apires@iff.edu.br

45

Questões de Pesquisa

Publicação de artigo em conferência ou periódico qualificado pelo Qualis CC da Capes substitui a monografia final.