programação orientada a aspectos marcação de concerns paulo fagner thiago brayner tiago...

28
Programação orientada a aspectos Marcação de Concerns Paulo Fagner Thiago Brayner Tiago Vinícius

Upload: internet

Post on 22-Apr-2015

103 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Programação orientada a aspectos Marcação de Concerns Paulo Fagner Thiago Brayner Tiago Vinícius

Programação orientada a aspectosMarcação de ConcernsPaulo FagnerThiago BraynerTiago Vinícius

Page 2: Programação orientada a aspectos Marcação de Concerns Paulo Fagner Thiago Brayner Tiago Vinícius

Descrição do sistema:Projeto Go2

• Sistema de Gerenciamento e Controle do Transporte Coletivo

• Automação do monitoramento.

• Maior precisão nos dados.

• Inclusão de GPS nos ônibus

Page 3: Programação orientada a aspectos Marcação de Concerns Paulo Fagner Thiago Brayner Tiago Vinícius

Descrição do sistema:Funcionalidades

•Cadastro de Empresa, ônibus, linhas e ponto de controles.

•Permite o monitoramento em tempo real da frota de ônibus.

•Geração de Relatórios para analise

Page 4: Programação orientada a aspectos Marcação de Concerns Paulo Fagner Thiago Brayner Tiago Vinícius

Descrição do sistema:Classes / linha de código

•Nº Classes = 123

•N° Pacotes = 29

•Nº Linhas de código ~= 13.000

Page 5: Programação orientada a aspectos Marcação de Concerns Paulo Fagner Thiago Brayner Tiago Vinícius

Lista de concernsConcerns Principais• Persistência• Agente• Exceção• Testes• Negócio• Relatórios• Carregador• Classes Básicas• Helpers• Actions

Page 6: Programação orientada a aspectos Marcação de Concerns Paulo Fagner Thiago Brayner Tiago Vinícius

Hierarquia de concerns

Page 7: Programação orientada a aspectos Marcação de Concerns Paulo Fagner Thiago Brayner Tiago Vinícius

Atividade de marcação de concerns•Linhas marcadas

▫Quantidade = 7.776▫18h para realização de marcação▫Apenas Requisitos funcionais

•Concerns não triviais:▫Agente, Relatório e Carregador

Page 8: Programação orientada a aspectos Marcação de Concerns Paulo Fagner Thiago Brayner Tiago Vinícius

Métricas

Page 9: Programação orientada a aspectos Marcação de Concerns Paulo Fagner Thiago Brayner Tiago Vinícius

Exemplo de concerns (1/3)• Exceção

Page 10: Programação orientada a aspectos Marcação de Concerns Paulo Fagner Thiago Brayner Tiago Vinícius

Exemplo de concerns (2/3)• Relátorio

Page 11: Programação orientada a aspectos Marcação de Concerns Paulo Fagner Thiago Brayner Tiago Vinícius

Exemplos de concerns (3/3)•Persistência, Action e tratamento de exceção.public void execute(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException

{

String numero = request.getParameter("numero");

String codigoLin = request.getParameter("linha");

try {

Linha lin = ControladorServlet.FACHADA.buscarLinhaPorCodigo(codigoLin);

Onibus bus = ControladorServlet.FACHADA.buscarOnibus(Long.parseLong(id));

if (lin != null) {

lin.inserirOnibus(bus);

}

bus.setNumero(numero);

ControladorServlet.FACHADA.atualizarOnibus(bus);

ControladorServlet.FACHADA.atualizarLinha(lin);

} catch (NumberFormatException e) {

retorno = "onibus2.jsp?msg=8&codigo=0&posTab=" + posTab;

} catch (FindException e) {

retorno = "onibus2.jsp?msg=2&codigo=0&posTab=" + posTab;

}

request.getRequestDispatcher(retorno).forward(request, response);

}

Page 12: Programação orientada a aspectos Marcação de Concerns Paulo Fagner Thiago Brayner Tiago Vinícius

Conclusão

•Dificuldades▫Para definir os concerns.▫Uso da ferramenta

•As métricas são úteis, mas não suficientes.

•Crosscutting Concerns encontrados:▫Código de persistência e de negocio na

geração de relatórios.

Page 13: Programação orientada a aspectos Marcação de Concerns Paulo Fagner Thiago Brayner Tiago Vinícius

2º PARTE

Identificação e Analise de Clones

Page 14: Programação orientada a aspectos Marcação de Concerns Paulo Fagner Thiago Brayner Tiago Vinícius

Gráfico de Clones (1)

Clones encontrados: 901

Page 15: Programação orientada a aspectos Marcação de Concerns Paulo Fagner Thiago Brayner Tiago Vinícius

Gráfico de Clones (2)

Clones encontrados: 1025

Page 16: Programação orientada a aspectos Marcação de Concerns Paulo Fagner Thiago Brayner Tiago Vinícius

Clones por concerns• Persistência = 283• Agente = 23• Testes = 241• Relatórios = 16• Carregador = 8• Classes Básicas = 18• Actions = 20• Helpers = 169

Page 17: Programação orientada a aspectos Marcação de Concerns Paulo Fagner Thiago Brayner Tiago Vinícius

Clones encontrados (1/2)

Page 18: Programação orientada a aspectos Marcação de Concerns Paulo Fagner Thiago Brayner Tiago Vinícius

Clones encontrados (2/2)

Page 19: Programação orientada a aspectos Marcação de Concerns Paulo Fagner Thiago Brayner Tiago Vinícius

Concerns encontrados no clone.

Page 20: Programação orientada a aspectos Marcação de Concerns Paulo Fagner Thiago Brayner Tiago Vinícius

3º PARTE

Page 21: Programação orientada a aspectos Marcação de Concerns Paulo Fagner Thiago Brayner Tiago Vinícius

Modificações Realizadas

•Refactoring OO

•Refactoring OA

•Remoção das classes de testes (Classes Básicas, Repositórios e Agent).

Page 22: Programação orientada a aspectos Marcação de Concerns Paulo Fagner Thiago Brayner Tiago Vinícius

Refactoring do Eclipse

•Extract Metodo ▫Metodos de Relatorio

•Extract Interface▫Interface dos repositórios

Page 23: Programação orientada a aspectos Marcação de Concerns Paulo Fagner Thiago Brayner Tiago Vinícius

Refactoring OO

•Criação das Classe de Negócio

•Generics (nos repositórios)

•Abstract Factory (construção dos repositórios)

•Remoção de Stubs e métodos main( )

•Criação da classe Helper

Page 24: Programação orientada a aspectos Marcação de Concerns Paulo Fagner Thiago Brayner Tiago Vinícius

Refactoring OA

•Inserção De Aspectos:▫Excecao – tratamento de exceções

pointcuts: tratamento das exceções RuntimeException, NumberFormatException, FindException*, CreateException*, FindExceptionParam*

▫Transacao – transações da persistência pointcuts: abrangem os métodos de inserção,

remoção e pesquisa das classes de repositório.

Page 25: Programação orientada a aspectos Marcação de Concerns Paulo Fagner Thiago Brayner Tiago Vinícius

Refactoring OA• Trecho do aspecto Excecao

Page 26: Programação orientada a aspectos Marcação de Concerns Paulo Fagner Thiago Brayner Tiago Vinícius

Refactoring OA• Trecho do aspecto Transacao

Page 27: Programação orientada a aspectos Marcação de Concerns Paulo Fagner Thiago Brayner Tiago Vinícius

Gráfico de Clones (Antigo/Novo)

Page 28: Programação orientada a aspectos Marcação de Concerns Paulo Fagner Thiago Brayner Tiago Vinícius

Análise do Gráfico de ClonesConcerns Clones

(antigo)Clones (refactoring)

Persistência 283 17

Agente 23 7

Testes 241 0

Stub 89 0

Relatórios 16 6

Povoadores 8 8

Classes Básicas 18 18

Actions 20 17

Helpers 169 41

Negócio 0 16

Total 901 130