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

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

Apr 22, 2015

Download

Documents

Internet User
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
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