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

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

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

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

10/10/2012. Artigo: Autores:

Paradigmas de Linguagens de Programação

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

Nosso Primeiro Programa Java

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

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

Programação Orientada a Aspectos

9 Conclusão e trabalhos futuros

UNIVERSIDADE FEDERAL DE P ERNAMBUCO

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

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

Requisitos de sistemas

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

SEMINÁRIOS INTEGRADOS EM ADS PROGRAMAÇÃO ESTRUTURADA E ORIENTADA A OBJETOS

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

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

CONCEITOS BÁSICOS E MODELO DE PROJETO

Desenvolvimento de Aplicações Desktop

Introdução. Conceitos Básicos. Conceitos Básicos. Conceitos Básicos

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

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

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

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

Daniel Wildt

Modelo do Mundo Real. Abstração. Interpretação

By Gian Ricardo Berkenbrock & Eduardo Dockhorn da Costa

Medidas de Esforço de Desenvolvimento de Software

Prof. Luiz A. Nascimento

Gestão de Segurança da Informação. Interpretação da norma NBR ISO/IEC 27001:2006. Curso e Learning Sistema de

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

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

Televisao tamanho tela emitirsom. conectarperifericos

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

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

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

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

Análise de Requisitos

Conceitos de Sistemas de Banco de Dados INE 5323

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

Aula 02 Conceitos e Princípios de Modularidade 1

A IMPORTÂNCIA DOS REQUISITOS NÃO FUNCIONAIS NO DESENVOLVIMENTO DE UM SISTEMA ORIENTADA A ASPECTO

TECNOLOGIAS DE CONSTRUÇÃO

Programação Orientada a Objetos

Sistemas Distribuídos Aspectos de Projeto de SD. Aspectos de Projeto em SD. Transparência 14/03/12. ! Transparência; ! Abertura; !

Grupo: Diogo Furtado Phellipe Perin Stephan Hebeda

Matéria Introdutória. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

5 Trabalhos Relacionados

2 Desenvolvimento de Software Orientado a Aspectos

Tarefas de Gerenciamento de Configuração

Verificação e Validação

Reengenharia, Refatoração e Bad Smell

Lista de Exercícios AV1

Introdução a Orientação a Objetos

Panorâmica da Programação Orientada a Objetos

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

Extreme Programming: Valores e Práticas

FATORES E MÉTRICAS DE QUALIDADE

15/04/2013. Pensar Orientado a Objetos. Projeto Orientado a Objetos. Características de Objetos. Classe de Objetos. Comunicação entre Objetos

Refatorando

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

Engenharia de Software

Introdução. Conceitos Básicos. Conceitos Básicos. Conceitos Básicos

Instituto Superior Técnico 2008/2009. Primeiro Exame 27/6/2009

Sistemas Distribuídos

2. Introdução à Programação e Análise. Orientada a Objetos

Introdução. Conceitos Básicos. Conceitos Básicos. Conceitos Básicos

Engenharia de Software

Linguagem Técnica I. Prof. Jonatas Bastos

Fundamentos de Programação

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

Técnicas para Reutilização de Software

Avaliação Quantitativa de Refatorações Orientadas a Aspectos

PONTIFÍCIA UNIVERSIDADE CATÓLICA DE GOIÁS PRÓ-REITORIA DE GRADUAÇÃO ESCOLA DE CIÊNCIAS EXATAS E DA COMPUTAÇÃO PLANO DE ENSINO

Programação Orientada a Aspectos

Encapsulamento e Modularização

Engenharia de Software Simulado para a 1ª Avaliação Bimestral Professor: Danilo Giacobo - RESPOSTAS. Nome:

INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS

Encapsulamento e Modularização

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

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

AVALIAÇÃO DE REFATORAÇÃO DE SOFTWARE COM PROGRAMAÇÃO ORIENTADA A ASPECTOS USANDO MÉTRICAS

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

Aula 02 Conceitos e Princípios de Modularidade 1

Academia Java IP JAVA: Introdução à Programação em Java (30 horas)

Banco de Dados e Aplicações em Negócios: Introdução.

Programação Orientada a Objetos

CAMILO LOPES DE MEDEIROS NETO. SIMONE P. CRUZ (Orientador Geral) ADONAI ESTRELA MEDRADO (Orientador Específico)

Uma Linha de Produto de Software para Módulos de Aprendizagem Interativa

Medidas de Esforço de Desenvolvimento de Software

RPC e RMI. Sistemas Distribuídos. Mauro Lopes Carvalho Silva. Professor EBTT DAI Departamento de Informática Campus Monte Castelo

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

Sistemas da Informação. Banco de Dados I. Edson Thizon

[Desenvolvimento OO com Java] Organizando suas classes

Gerência de Redes Visão Geral

Transcrição:

Avoiding Code Pitfalls in Aspect-Oriented Programming A. Santos, P. Alves, E. Figueiredo, and F. Ferrari Science of Computer Programming (SCP, 2015) Apresentação: Aline Brito

Programação Orientada a Aspecto (AOP) Técnica que visa melhorar a modularidade do software através da separação de interesses transversais em unidades modulares chamadas aspectos 2

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

Experimento 4

Etapas 5

Etapas Trabalho individual ou dupla 6

Etapas 4 aplicativos ATM, Chess, Telecom, Task Manager 7

Sistema ATM Terminal de autoatendimento 600 linhas de código, 12 módulos Interesse refatorado: Logging 8

Sistema ATM Interesse refatorado: Logging Registra todas as operações realizadas por um usuário de caixa eletrônico 19 linhas de código, 4 módulos 9

Sistema Chess Jogo de xadrez com uma interface gráfica 1.000 linhas de código, 13 módulos Interesse refatorado: ErrorMessages 10

Sistema Chess Interesse refatorado: ErrorMessages Mostra mensagens quando um jogador tenta violar uma regra do jogo de xadrez 36 linhas de código, 8 módulos 11

Sistema Telecom Gerenciamento de chamadas telefônicas 200 linhas de código, 8 módulos Interesse refatorado: Timing 12

Sistema Telecom Interesse refatorado: Timing Registra o tempo decorrido em uma determinada chamada 30 linhas de código, 4 módulos 13

Sistema Task Manager Gerenciamento de tarefas 209 linhas de código, 6 módulos Interesse refatorado: Observer 14

Sistema Task Manager Interesse refatorado: Observer Notifica todas as classes que estão observando as tarefas quando ocorre uma mudança 3 módulos 15

Perfil dos participantes Estudantes ou pessoas recém formadas Eles preencheram um questionário sobre seu nível de conhecimento em Programação Orientada a Objetos 16

Perfil dos participantes 17

Perfil dos participantes 18

Perfil dos participantes Poucos participantes não estão familiarizados com OOP 19

Tarefas Refatorações usando a linguagem de programação AspectJ Duas horas de treinamento sobre Programação Orientada a Aspecto e AspectJ 20

Tarefas Foi solicitado a cada participante refatorar um interesse usando a IDE Eclipse e o plugin AJDT Cada grupo recebeu o código fonte e a descrição do interesse transversal 21

Resultados 22

Erros Recorrentes 23

Erros recorrentes Lógica incorreta Uso incorreto do Advice Erros de compilação ou warning Interesse duplicado Excesso de refatorações Refatorações incompletas 24

Lógica Incorreta O código refatorado se comporta de maneira diferente do original 25

Lógica Incorreta Antes: Relatório de logs chamado dentro do da estrutura switch 26

Lógica Incorreta Depois: Relatório de logs sempre é exibido após o método performtransactions() 27

Uso incorreto do Advice Uso de tipo incorreto de Advice ao refatorar o interesse 28

Uso incorreto do Advice Antes: Uma operação de depósito é registrada ao final do método credit() 29

Uso incorreto do Advice Depois: Operação de depósito registrada no início da transação 30

Erros de Compilação e Warning Erros que levaram a uma falha sintática ou warning sinalizado pelo AspectJ 31

Erros de Compilação e Warning Ausência de parâmetros no método createtask() 32

Excesso de refatorações Parte do código que não pertence a um interesse é refatorado para aspecto 33

Excesso de refatorações 34

Excesso de refatorações Antes: Interesse para refatorar: timer.start() 35

Excesso de refatorações Depois: Mensagem refatorada junto com o interesse 36

Análise dos Resultados 37

Erros por sistema 38

Erros por sistema Refatoração incompleta é o erro mais comum Motivo: dificuldade para identificar ou separar o interesse 39

Erros por nível de conhecimento em POO 40

Erros por nível de conhecimento em POO Quanto mais experiente são os programadores OOP, mais erros relacionados a AOP são cometidos 41

Erros por nível de experiência profissional 42

Erros por nível de experiência profissional Os programadores mais experientes tiveram menos erros de compilação ou refatorações em excesso 43

Erros por grupo 44

Erros por grupo A programação em pares não é a melhor opção em alguns casos 45

Armadilhas na AOP 46

Constantes Constantes implementando interesses levaram a erros no experimento 47

Constantes A constante LOG implementa o interesse Logging no sistema ATM 48

Atributos Non-Dedicated Atributos com tipos primitivos ou tipos não dedicados ao interesse levaram a erros no experimento 49

Atributos Non-Dedicated Dedicado ao interesse (poucos erros) Tipo primitivo 50

Árvores de Herança Disjuntas A falta de relacionamento entre as árvores da herança pode levar a refatorações incompletas 51

Árvores de Herança Disjuntas 52

Árvores de Herança Disjuntas Duas ou mais árvores de herança (propenso ao erro) 53

Localização Partes do código fonte do interesse espalhadas no sistema podem levar a erros 54

Localização 55

Localização Interesses espalhados no código fonte (Advice Type errado) 56

Variáveis locais Interesse implementado em método que acessa uma variável local pode dificultar a refatoração 57

Variáveis Locais 58

Ferramenta ConcernReCS2 59

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

Limitações 61

Limitações Uso da linguagem AOP (AspectJ) Sistemas e interesses selecionados Dimensão do estudo 62

Considerações Finais 63

Considerações Finais Documentação dos erros recorrentes Programação em pares pode ajudar os programadores a evitar alguns erros (ex., refatoração incompleta) 64

Considerações Finais Resultados podem ajudar a aperfeiçoar novas ferramentas Ferramenta ConcernReCS para detecção de armadilhas no código 65

Considerações Finais Alguns erros são mais comuns entre os programadores mais experientes em POO 66