160 likes | 229 Views
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
E N D
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
Vários Clones • Parâmetrosescolhidos: • Comprimentomínimo: 60 • Qtdmínima de Tokens: 14 • Clones detectados: 1332 • Muitos clones nacamada de Persistência • Alguns clones longosna 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.
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