Orientação a Aspectos: π -PSF
description
Transcript of Orientação a Aspectos: π -PSF
Orientação a Aspectos: π-PSF
Killer TeamAmirton 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• 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
Código Entrelaçado e Espalhado
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
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
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
O que foi feito [2]
• Se mudarmos o SGBD agora alteramos um único arquivo.
O que foi feito [3]• serialVersionUID não faz parte da semântica
de nenhum componente da GUI.
O que foi feito [4]
O Banco de Dados requer chave primária - Id ...... Nossas classes de conceito de aplicação não !
O que foi feito [5]
Os outputs ao usuário se adequam ao idioma escolhido.
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
Solução[2]• Orientada a Aspectos
ComparativoANTES
DEPOIS
Número de Clones caiu
• Mesmos parâmetros, muito menos clones.
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
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