Avoiding code pitfalls in Aspect-Oriented Programming

Documentos relacionados
Avoiding Code Pitfalls in Aspect-Oriented Programming

ENGENHARIA DE SOFTWARE MEDIÇÃO E QUALIDADE DE SW

AspectJ. AspectJ. Extensões de AspectJ. Pontos de Junção. Exemplos de Pontos de Junção. Modelo de Pontos de Junção

10/10/2012. Artigo: Autores:

Desenvolvimento de Aplicações Desktop

Levantamento, Análise e Gestão Requisitos. Aula 03

Programação Orientada a Aspectos

Agenda da Aula. Desenvolvimento de Software Orientado a Aspectos. Aspectos... Motivação. Um pouco de história. Programação Estruturada

UNIVERSIDADE FEDERAL DE P ERNAMBUCO

CLÁUDIO ROSSE PANDOLFI SUPORTE DE INTERESSES TRANSVERSAIS PARA FRAMEWORK CODEIGNITER

Extração de Aspectos. PUC Minas Instituto de Informática. Mestrado em Informática. Aluno: Marcelo Nassau Malta

Título PROCESSO LABES ESPECIALIZADO PARA DESENVOLVIMENTO SEGUNDO O PARADIGMA ESTRUTURADO. Projeto. Analista; Requisitos Funcionais Escopo; Cliente;

Modelagem Orientada a Objetos

Seminário de aspectos: conceitos, características e exemplos

UNIVERSIDADE LUSÍADA DE LISBOA. Programa da Unidade Curricular PROGRAMAÇÃO AVANÇADA Ano Lectivo 2017/2018

Aspect Oriented Programming (AOP) Uma visão geral da programação orientada a aspectos. Usando AspectJ

Nosso Primeiro Programa Java

Conceitos de Programação Orientada a Objetos

Refatoração: uma introdução. Prof. André Luiz Peron Martins Lanna

UNIVERSIDADE LUSÍADA DE LISBOA. Programa da Unidade Curricular PROGRAMAÇÃO AVANÇADA Ano Lectivo 2013/2014

Conceitos de Programação Orientada a Objetos

Conclusões. Baseado no Capítulo 9 de Programming Language Processors in Java, de Watt & Brown

Agenda da Aula. Programação Orientada a Características com AHEAD. Característica Modular. Programação Orientada a Características (FOP)

Reengenharia, Refatoração e Bad Smell

Prof. Luiz A. Nascimento

Aula 01: Apresentação. Revisão para Prova 1. Aula 02: Técnicas de Reuso. Panorama de Reuso. Aula 03: POO e Padrões. Bibliografia da Aula 02

Televisao tamanho tela emitirsom. conectarperifericos

ORGANIZAÇÃO CURRICULAR TÉCNICO NA ÁREA DE INFORMÁTICA: HABILITAÇÃO TÉCNICO EM INFORMÁTICA NA MODALIDADE A DISTÂNCIA /1

Programação Orientada a Objetos

Prof. Me. Sérgio Carlos Portari Júnior

Conceitos avançados de programação. Módulo 8 Programação e Sistemas de Informação Gestão e Programação de Sistemas Informáticos

9 Conclusão e trabalhos futuros

UNIVERSIDADE FEDERAL DO PARANÁ - UFPR Bacharelado em Ciência da Computação

DESCOMPLICANDO A PROGRAMAÇÃO EM LINGUAGEM C. UMA SOLUÇÃO PARA DEPURAÇÃO SIMPLES DE CÓDIGOS. GOMES, M. S. ¹, AMARAL, E. M H. ¹

IDENTIFICAÇÃO DE ASPECTOS EM NÍVEL DE ANÁLISE BASEADO EM ATRIBUTOS DE REQUISITOS NÃO FUNCIONAIS

Perguntas da Aula 2. Respostas da Pergunta 2. Respostas da Pergunta 1. Respostas da Pergunta 4. Respostas da Pergunta 3. Processos de Software

Programação Orientada a Aspectos

Técnicas para Reutilização de Software

Orientação a Objetos (OO) LPG II - Java. Orientação a Objetos (OO) Programação Orientada a Objetos. Programação Procedimental

Paradigmas de Linguagens de Programação

REFATORAÇÃO DE SISTEMAS ORIENTADOS

Módulo I Princípios e Padrões de Projeto de SW em Java

Medidas de Esforço de Desenvolvimento de Software

Medidas de Esforço de Desenvolvimento de Software

A figura abaixo representa uma classe denominada Carteira. Esta classe é composta dos métodos depositar(valor) e retirar(valor) e do atributo saldo.

Programação Orientada a Objetos

Daniel Wildt

Manutenção de Frameworks Orientados a Objetos Usando Orientação a Aspectos

Campus Capivari Análise e Desenvolvimento de Sistemas (ADS) Prof. André Luís Belini /

Linguagem de Programação I Apresentação da Disciplina

15/09/2014. Aula 01: Apresentação. Review to 1 st Exam. Aula 02: Técnicas de Reuso. Panorama de Reuso. Aula 03: POO e Padrões. Bibliografia da Aula 02

Gerência de Redes Visão Geral

8 Princípios e Diretrizes para o Design Orientado a Aspectos

Implementação de Padrões de Projeto em Java e AspectJ

Revisão de conceitos Tópicos Avançados em TI Prof. Rossano Pablo Pinto Fevereiro/ v0.1

TECNOLOGIAS DE CONSTRUÇÃO

Análise de Sistemas. Aula 5

Universidade Federal da Bahia Instituto de Matemática Departamento de Ciência da Computação

Aula 18 Métricas e Anomalias de Modularidade

Panorâmica da Programação Orientada a Objetos

Avaliação e Integração de Ferramentas de Análise Estática de Código

6 Workshop do Projeto ATIFS INPE

O PARADIGMA ORIENTADO POR OBJETOS

Projeto Integrador. <Projeto Integrador> Documento Visão. Versão <1.0>

As 10 Áreas da Engenharia de Software, Conforme o SWEBOK Prof. Elias Ferreira

Conceitos de Programação Orientada por Objectos. Rui Camacho Programação 2

Engenharia de Software

Sistemas de Informações Transacionais SIT Sistemas de Informações Gerenciais SIG. Ana Clara Araújo Gomes da Silva

Linguagem Técnica I. Prof. Jonatas Bastos

AULA 02. OBJETIVO: Características da Linguagem Orientada a Objetos.

27) Em relação aos Projetos de Sistemas de Software, assinale a sequência correta de desenvolvimento de um sistema:

PROTEÇÃO DE MÁQUINA DETECÇÃO DE COLISÃO

Professor Jefferson Chaves Jefferson de Oliveira Chaves

AD06: Studio 5000 e Logix Laboratório Avançado

ENSINO MÉDIO INTEGRADO INFORMÁTICA LINGUAGEM DE PROGRAMAÇÃO Trabalho Semestral

Programação Orientada a Objetos. Prof. MsC Sílvio Bacalá Júnior

UNIVERSIDADE DA BEIRA INTERIOR Faculdade de Engenharia Departamento de Informática

Plano de Trabalho Docente Ensino Técnico

Curso Online de Banco de Dados. Plano de Estudo

P R O C E SSO D E D E S E N VOLVIMENTO D E S O F T WAR E

Prof. Esp. Fabiano Taguchi

FATORES E MÉTRICAS DE QUALIDADE

Material de Apoio 3. Criando um novo projeto em BlueJ Lance a execução do BlueJ. A janela que deverá aparecer é a seguinte:

JAVA. Tópicos Especiais de Programação Orientada a Objetos. sexta-feira, 26 de outubro de 12

Desenvolvimento de uma Linha de Produto de Software para Módulos de Aprendizagem Interativa

Definição de Conjuntos de Junção Robustos usando Aspect-Aware Interfaces e Aspectos Anotadores

5 Trabalhos Relacionados

Introdução Diagrama de Classes Diagrama de Seqüência Diagrama de Atividades. Diagramas UML. Classe, Seqüência e Atividades. Marcio E. F.

PROGRAMAÇÃO E SISTEMAS DE INFORMAÇÃO (PSI) 11ºANO

Banco de Dados. SGBDs. Professor: Charles Leite

Tela Principal do ArgoUML. ArgoUML: Diagrama de Casos de Uso. Elementos do diagrama. Criar um novo diagrama. Elementos do diagrama

Refatorando

Curso online de Aplicações. Híbridas. Plano de Estudo

A c c e s s B á s i c o

VISEDU-CG: Aplicação Didática para Visualizar Material Educacional, Módulo de Computação Gráfica

Programação Orientada a Objetos. Vagner Luz do Carmo - Vluzrmos

Transcrição:

Avoiding code pitfalls in Aspect-Oriented Programming Adriano Santos, Péricles Alves, Eduardo Figueiredo, Fabiano Ferrari 18º Simpósio Brasileiro de Linguagens de Programação Maceió, 2014 Apresentação: Aline Brito

AOP - Programação Orientada a Aspecto Técnica que visa melhorar a modularidade do software. Aspecto: Unidade modular que encapsula interesses transversais. Interesse: Qualquer consideração que possa ter impacto na concepção e manutenção de módulos de programa. 2

Objetivo Investigar os tipos de erros cometidos por estudantes e profissionais iniciantes na Programação Orientada a Aspecto. 3

Questões de Pesquisa RQ1. Quais os tipos de erros cometidos por programadores júnior? RQ2. Quais são as armadilhas no código-fonte levam a esses erros? RQ3. Quais habilidades um programador deve ter para cometer menos erros na AOP? 4

Características do Experimento 5

6

7

8

9

98 Equipes (dupla / individual) 10

Background dos participantes (POO) 11

Background dos participantes (POO) 12

Aplicação ATM Simula funcionalidade de uma máquina de dinheiro (ver saldo, depositar, sacar). 19 LOC 4 módulos Interesse: Logging 13

Aplicação Chess Jogo de xadrez com interface gráfica. 36 LOC 8 classes Interesse: ErrorMessages 14

Aplicação Telecom Sistema de gerenciamento de conexões para chamadas telefônicas. Simula uma chamada entre dois ou mais clientes. 32 LOC 4 módulos Interesse: Timing 15

Aplicativo Task Manager Aplicativo para gerenciamento de tarefas. 22 LOC 3 módulos Interesse: Observer design pattern 16

Etapas Refatorações usando a linguagem de programação AspectJ. Treinamento: 2 horas Conceitos básicos sobre AOP e AspectJ. Cada participante foi convidado a refatorar para aspecto um interesse de uma aplicação, usando o plug-in Eclipse AJDT. Recebeu o aplicativo e a descrição do interesse. 17

Análise dos Resultados Etapa I - Classificação dos Erros Recorrentes 18

Lógica de Incorreta 19

Lógica de Incorreta Mensagens de log são exibidas sempre. 20

Tipo de Advice Incorreto 21

Tipo de Advice Incorreto Mensagem de log após credit() 22

Tipo de Advice Incorreto After Advice 23

Erros de Compilação e Warning?? 24

Refatorações em Excesso 25

Refatorações em Excesso Não pertence ao interesse 26

Análise dos Resultados Etapa II - Erros por Nível de Conhecimento e Aplicação 27

Erros por Aplicação 28

Erros por Aplicação 29

Erros por Nível de Experiência em POO 30

Erros por Nível de Experiência em POO 31

Erros por Nível de Experiência Profissional 32

Programação em Pares 33

Análise dos Resultados Etapa III - Armadilhas AOP 34

Constantes Primitivas 35

Constantes Primitivas Constante implementando um interesse 36

Atributos Non-Dedicated 37

Atributos Non-Dedicated Totalmente dedicado ao interesse. Tipo primitivo Sem erros. 38

Árvores de Herança Disjuntas 39

Árvores de Herança Disjuntas Duas ou mais árvores de herança. Propenso ao erro. 40

Localização Interesses espalhados do código. (Advice Type errado) 41

Variáveis Locais 42

Variáveis Locais Interesse dentro de um método que acessa variável local. Código mais difícil de refatorar. 43

Ferramenta ConcernReCS2 Plug-in Eclipse. Encontra falhas AOP. ConcernMapper, ferramenta para mapear métodos e atributos. Apresenta armadilhas de código. Interesse, linha, arquivo, percentual de erro. 44

Ameaças à Validade Uso da linguagem AOP (AspectJ). Existem outras técnicas capazes de realizar os mesmos conceitos. Interesses selecionados. Dimensão do estudo. 45

Considerações Finais Documentação dos erros recorrentes. Programação em pares pode ajudar os programadores a evitar alguns erros. Exemplo: Refatoração Incompleta. Resultados podem ajudar a aperfeiçoar novas ferramentas. Ferramenta ConcernReCS para detecção de armadilhas no código. Erros de compilação são mais comuns entre os programadores mais experientes. 46