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
•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áfica
Classe 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
Comparativo
ANTES
DEPOIS
Número de Clones caiu
• Mesmos parâmetros, muito menos clones.
Resultados obtidos[1]
Linhas de Código
Nº de Clones
1500
15000
1000
1332
11000
7425
10000
500
5000
0
57
Antes
Depois
0
Antes
Depois
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
Download

Orientação a Aspectos: *-PSF