Orientação a Aspectos: π -PSF

16
Orientação a Aspectos: π-PSF Killer Team Amirton Chagas, Elton Renan, José Dihego, Natanael Silva, Thiago Alexandre

description

Orientação a Aspectos: π -PSF. Killer Team Amirton Chagas, Elton Renan, José Dihego, Natanael Silva, Thiago Alexandre. Cenário Antigo. Aproximadamente 20.000 linhas de código, em 90 classes. Concerns identificados: Armazenamento de Dados Remoção de Dados Atualização de Dados - PowerPoint PPT Presentation

Transcript of Orientação a Aspectos: π -PSF

Page 1: Orientação a Aspectos:  π -PSF

Orientação a Aspectos: π-PSF

Killer TeamAmirton Chagas, Elton Renan, José Dihego,

Natanael Silva, Thiago Alexandre

Page 2: Orientação a Aspectos:  π -PSF

Cenário Antigo

• Aproximadamente 20.000 linhas de código, em 90 classes.

Concerns identificados:• Armazenamento de Dados

• Remoção de Dados• Atualização de Dados• Inserção de Dados• Verificar Pertinência

• Recuperação de dados• Recuperação Elemento ID• Recuperação Lista Elementos

• GUI• Serialização• Tratamento de Exceção• Internacionalização• Conceito de Aplicação• Conversão• Regras de Negócio• Geração de Relatórios

Page 3: Orientação a Aspectos:  π -PSF

Código Entrelaçado e Espalhado

Page 4: Orientação a Aspectos:  π -PSF

Vários Clones

• Parâmetros escolhidos:– Comprimento mínimo:

60– Qtd mínima de Tokens:

14• Clones detectados: 1332• Muitos clones na camada

de Persistência• Alguns clones longos na

Interface Gráfica

Page 5: Orientação a Aspectos:  π -PSF

Analisando melhor o projeto

• Descobrimos os concerns chave da nossa aplicação analisando os clones:

• Controle de Transação• Inicialização de Componentes de Interface Gráfica

• Outras descobertas:• Camada de negócio estava intimamente ligada ao

Oracle• Serialização e GUI estavam entrelaçadas• Conceitos da aplicação entrelaçados com o BD (ID)• Internacionalização estava espalhada pela GUI

Page 6: Orientação a Aspectos:  π -PSF

O que foi feito [1]• Nem tudo necessitava do uso de aspectos– Inicialização de Componentes da Interface GráficaClasse auxiliar para inicializar os componentes ->

Redução significativa da repetição de código

Page 7: Orientação a Aspectos:  π -PSF

O que foi feito [2]

• Se mudarmos o SGBD agora alteramos um único arquivo.

Page 8: Orientação a Aspectos:  π -PSF

O que foi feito [3]• serialVersionUID não faz parte da semântica

de nenhum componente da GUI.

Page 9: Orientação a Aspectos:  π -PSF

O que foi feito [4]

O Banco de Dados requer chave primária - Id ...... Nossas classes de conceito de aplicação não !

Page 10: Orientação a Aspectos:  π -PSF

O que foi feito [5]

Os outputs ao usuário se adequam ao idioma escolhido.

Page 11: Orientação a Aspectos:  π -PSF

O que foi feito [6]

• Controlar as transações no banco era essencial, código extremamente repetido.

• A solução foi modificar o código utilizando orientação a objetos + orientação a aspectos

Page 12: Orientação a Aspectos:  π -PSF

Solução[2]• Orientada a Aspectos

Page 13: Orientação a Aspectos:  π -PSF

ComparativoANTES

DEPOIS

Page 14: Orientação a Aspectos:  π -PSF

Número de Clones caiu

• Mesmos parâmetros, muito menos clones.

Page 15: Orientação a Aspectos:  π -PSF

Resultados obtidos[1]

AntesDepois

0200400600800

100012001400

1332

57

Nº de Clones

Antes Depois0

2000

4000

6000

8000

10000

12000 11000

7425

Linhas de Código

Page 16: Orientação a Aspectos:  π -PSF

Conclusões

• Muitos dos problemas do projeto foram solucionados simplesmente com Orientação a Objetos

• O restante deles AOP resolveu• Código muito mais legível• Diminuição do número de linhas de código• Redução drástica do número de clones