ENGENHARIA DE SOFTWARE MEDIÇÃO E QUALIDADE DE SW

Documentos relacionados
Avoiding code pitfalls in Aspect-Oriented Programming

Avoiding Code Pitfalls in Aspect-Oriented Programming

By Gian Ricardo Berkenbrock & Eduardo Dockhorn da Costa

DEFINING METRIC THRESHOLDS FOR SOFTWARE PRODUCT LINES: A COMPARATIVE STUDY

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

Aula 2: Planejamento da RS

DCC / ICEx / UFMG. O Jogo SimulES. Eduardo Figueiredo.

!!!!! " #!!!! $ +!!!!!! *!! * -! %!! - %.! % - "!! ) $ $ / - %!!0$ 1 - '& 2( - *! * *!0$ - '&.( - *! #

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

10/10/2012. Artigo: Autores:

Tipos para uma Linguagem de Transformação

Composição e Geração de Aplicações usando Aspectos

Uma Arquitetura de Tutor Inteligente que Provê Suporte ao Diálogo com o Aluno Iniciante em Linguagem de Programação

Teste de Programas Orientados a Aspectos: Uma Abordagem Estrutural para AspectJ

Teste Estrutural de Integração Nível 1 de Programas Orientados a Objetos e a Aspectos

Um Perfil UML para Frameworks Transversais

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

Uma ferramenta CASE para o Desenvolvimento de Software Orientado a Aspectos

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

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

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

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

Aspect-Oriented Programming AOP. Comentários Sérgio Crespo

Reuso de Software Aula Maio 2012

APRENDENDO PROGRAMAÇÃO COM BATALHAS DE ROBÔS. Instituto Federal Catarinense, Blumenau/SC

Um Jogo para o Ensino de Engenharia de Software Centrado na Perspectiva de Evolução

UNIVERSIDADE FEDERAL DE P ERNAMBUCO

ALM Aplicações em Linguagem de Montagem. Introdução. A produção de Software é uma atividade build and fix. build. fix

ANALISANDO TÉCNICAS DE DESENVOLVIMENTO EM REPOSITÓRIOS DE SOFTWARE ALUNO: BRENO GUSTAVO DE CARVALHO SIQUEIRA TORRES ORIENTADOR: MÁRCIO LOPES CORNÉLIO

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

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

9 Conclusão e trabalhos futuros

Apresentação do Curso de Gerência de Configuração

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

SSC 5764 Engenharia de Software. Profa. Paulo C. Masiero 1º. 2012

Introdução INTRODUÇÃO AO SWEBOK. Origens do corpo de conhecimentos da Engenharia de Software: Introdução a Computação e Engenharia de Software

UNIVERSIDADE FEDERAL DE P ERNAMBUCO

Visão Geral de Engenharia de Software

Programação Orientada a Aspectos

UNIVERSIDADE FEDERAL DE PERNAMBUCO CENTRO DE INFORMÁTICA GRADUAÇÃO EM ENGENHARIA DA COMPUTAÇÃO

MODELAGEM E OTIMIZAÇÃO DE SOFTWARE AUTOMOTIVOS PROPOSTA DE TRABALHO DE GRADUAÇÃO

Práticas de desenvolvimento aplicadas na automação de testes com Selenium Robson Bittencourt #gutsrs

Mineração de Aspectos: Conceitos, Métodos e Ferramentas

Uma Estratégia para Avaliação e Evolução de Especificações de Teste Funcional de Software

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

Uma Arquitetura de Injetor de Falhas Orientada a Aspectos para Validação de Sistemas de Comunicação de Grupo

EH-Meter Uma Ferramenta para Coleta de Métricas de Tratamento de Exceções

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

Utilização de técnicas de Process Mining em Sistemas de Middleware Adaptativos Proposta de Trabalho de Graduação

Agenda da Aula. Reuso de Software. Tipos de Reuso. Potenciais Problemas. Vantagens de Reuso. Introdução a Reuso de Software

CONCEITOS BÁSICOS E MODELO DE PROJETO

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

Requisitos para Ferramentas de Gestão de Projetos de Software

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

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

AspectJ - Programação Orientada a Aspectos em Java. Sérgio Soares Centro de Informática Universidade Federal de Pernambuco

UNIVERSIDADE FEDERAL DE PERNAMBUCO CENTRO DE INFORMÁTICA GRADUAÇÃO EM ENGENHARIA DA COMPUTAÇÃO

Metrics for Evaluation of Aspect-Oriented Middleware

Avaliação de desempenho de virtualizadores no envio e recebimento de pacotes em sistemas Linux

FATORES E MÉTRICAS DE QUALIDADE

15 Congresso de Iniciação Científica AVALIAÇÃO DA RELAÇÃO ENTRE EFICÁCIA E CUSTO NA ATIVIDADE DE TESTE DE SOFTWARE

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

um estudo exploratório sobre a identificação de aglomerações de interesses em alto nível

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

Qualidade de software. Prof. Emiliano Monteiro

Aspect Open-ORB: Um Middleware Reflexivo Orientado a Aspectos

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

Técnicas para Reutilização de Software

2 Estado da Arte e Trabalhos Relacionados

Critérios para Apoiar a Decisão Sobre o Momento de Parada dos Testes de Software

JUnit. Facilitando o desenvolvimento e execução de testes unitários em código java. Peterson Rodrigues

AN INTRODUCTION TO SOFTWARE ENGINEERING

Práticas Ágeis de Teste

Arquitetura de Referência para Projeto Detalhado de Frameworks Transversais de Persistência

Ferramentas, métodos e experiências no ensino de Engenharia de Software: um mapeamento sistemático

Modulo I Princípios e Padrões de Projeto de SW em Java

The Adaptive Pipeline Aspect Pattern

Critérios de Testabilidade para Avaliação do Modelo de Projeto de Software Orientado a Aspectos

Usando aprendizagem de máquina para identificar anomalias de design prejudiciais à manutenibilidade: um estudo preliminar

BibIme - Um Software Gerenciador de Bibliotecas Produzido de Forma Cooperativa

70% dos computadores no Brasil estão desprotegidos, diz pesquisa

Desenvolvimento Ágil de Software

Frameworks. Viviane Torres da Silva

MODELAGEM DE TRANSISTORES E DE CIRCUITOS ANALÓGICOS CMOS USANDO VERILOG-AMS

3 Uma Abordagem Orientada a Aspectos para o Desenvolvimento de Frameworks

BALANCEAMENTO DE CARGA EM SISTEMAS MULTIPROCESSADORES UTILIZANDO O MODELO DE PROGRAMAÇÃO CHARM++ 1

The Adaptive Pipeline Aspect Pattern

ERROS COMUNS EM TEST-DRIVEN DEVELOPMENT. Mauricio

Profs. Rosana Braga e Paulo C. Masiero ICMC-USP 1º. 2017

Captor-AO: Gerador de Aplicações apoiado pela Programação Orientada a Aspectos

TREINAMENTO PARA COMPETIÇÕES DE PROGRAMAÇÃO: Estudo de caso nas turmas do técnico em informática integrado do Câmpus Muzambinho RESUMO

Identificação de Pontos Perceptualmente Importantes (PIP) em séries temporais de tópicos extraídos de dados textuais

Estratégias de Testes Parte I

Introduction to Experimental Software Engineering

Reúso de Software: o cenário industrial brasileiro

Desenvolvimento de Software. Testes de Software. Tópicos da Aula. Onde estamos... Verificação x Validação. Testes de Software

Evidence-based Software Engineering

Transcrição:

ENGENHARIA DE SOFTWARE MEDIÇÃO E QUALIDADE DE SW How do Programmers learn AOP? Péricles Alves, Alcemir Santos, Eduardo Figueiredo e Fabiano Ferrari Aluno: Adriano Lages dos Santos

Toda descoberta da ciência é potencialmente subersiva; por vezes a ciência deve ser tratada como um inimigo possível. Aldous Huxley 1894 1963 Escritor Britânico

Agenda Introdução. Objetivos do estudo. Classificação de erros recorrentes em AOP. Dados coletados e Análises. Conclusões e trabalhos futuros.

Introdução Programação Orientada a Aspectos(AOP). Interesses transverais- > Aspectos. Técnica em amadurecimento. Requer experiência dos programadores. Vários estudos [1, 2, 6, 8, 19] são conduzidos para encontrar taxonomias de falhas e padrões de bug em AOP.

Introdução -AOP Join Points - Representam pontos bem definidos em uma execução de um programa. Joinpoints típicos em AspectJ podem ser por exemplo chamadas de métodos, acessos a membros de uma classe entre outras ações de execução. Join points podem conter outros Join points. Pointcut é uma construção de linguagem que junta um conjunto de Join Points baseando-se em um critério pré-definido.

Introdução -AOP Advice é o trecho de codigo que é executado antes before(), depois after() e simultaneamente around() a um Joinpoint.

Objetivos do Estudo Investigar tipos de erros cometidos em AOP. Objetivo principal é identificar e classificar as categorias mais recorrentes de erros cometidos pelos programadores que estão aprendendo esta técnica de programação.

Hipóteses de Pesquisa H0 = A experiência dos programadores que estão aprendendo AOP impacta nos erros que eles cometem. H1 = A experiência dos programadores que estão aprendendo AOP não impacta nos erros que eles cometem.

Avaliação das Hipóteses Categorias de Erros de AOP. Três critérios de experiência dos programadores: Experiência específica em OOP, experiência de trabalho e idade. 47 estudantes de graduação e profissionais juniores participaram do experimento. Estudo realizado em três rodadas.

Preparação para coleta dos dados Treinamento de 2 horas para os participantes sobre aspect J. Primeira rodada Os participantes participaram em pares(graduação e Juniores). Segunda rodada Os participantes (graduação e Juniores) trabalharam individualmente. Terceira rodada Os participantes trabalharam em pares(somente alunos de graduação).

Preparação para coleta dos dados Primeira e segunda rodada Aspectizar o interesse Logging na aplicação OO ATM. Terceira rodada Aspectizar o interesse ErrorMessages na aplicação Xadrez Chess. Interesse dos pesquisadores em observar a aspectização de interesses feitas por programadores trabalhando em pares.

Preparação para coleta dos dados Todos os participantes preencheram um questionário. Idade, experiência profissional e nível de conhecimento em tecnologia OOP. Quanto tempo trabalharam com desenvolvimento de software. (i)nunca trabalhou, (ii) trabalhou menos que seis meses, (iii) trabalhou entre seis meses e um ano, (iv) trabalhou entre um e três anos e (v) trabalhou mais que três anos.

Preparação para coleta dos dados Nível de conhecimento em tecnologia OOP. (i) Nunca programou em OOP, (ii) programou algumas vezes, (iii) programou várias vezes e (iv) muito familiarizado com OOP.

Aplicações Alvo

Aplicações Alvo As aplicações foram escolhidas para permitir que o experimento fosse completado em uma aula de uma horae30minutos. NOM Número de Módulos, LOC Linhas de código, CDC Espalhamento do interesse sobre os componentes, LOCC Linhas de código do interesse.

Classificação dos erros recorrentes em AOP Erros relacionados a Advices A.L Lógica de Implementação incorreta. A.I Tipo de Advice incorreto. Erros relacionados a compilação C.E Erro de Compilação ou warning. Outros erros R.D Código do interesse duplicado no aspecto e no código base. R.I Refatoração Incompleta.

Dados coletados e Análises Número geral de erros

Dados coletados e Análises Todos os participantes da segunda e terceira rodada cometeram erro de refatoração incompleta. Os alunos de graduação que trabalham em pares cometeram mais erros relacionados com advices e erros de compilação(ai, AL e CE) do que os participantes já graduados trabalhando individualmente. Este resultado sugere que graduandos não podem compreender facilmente como funciona um Advice em AspectJ. Os profissionais juniores tiveram um desempenho pior do que os participantes da graduação em relação a erros relacionados a refatoração. Possivelmente devido a primeira rodada em que juniores e alunos de graduação trabalharam em pares.

Dados coletados e Análises NíveldeexperiênciaemOOP. Indivíduos divididos em dois grupos: (i) (12) indivíduos com pouca ou nenhuma experiência e (ii) (24) indivíduos com moderada a alta experiência.

Dados coletados e Análises Como esperado, quanto mais experientes em OOP os indivíduos são, menos erros eles cometem. Isto é facilmente observado na Figura 4, uma vez que indivíduos experientes cometem menos erros do que os iniciantes em todas as categorias, exceto Refatoração Incompleta (RI). A explicação para este resultado pode ser o fato de que os experientes em OOP tendem a usar muito as abstrações OOP que eles estão confortáveis. Ou seja, eles tendem a não fatorar a aspectos vários pedaços de código emfavordousodeseumelhorconhecimentoemoop.

Dados coletados e Análises Tipos de erro por experiência profissional: (i) (21) Menos de um ano de experiência. (ii) (15) Mais de um ano de experiência.

Dados coletados e Análises Curiosamente, os resultados apresentados na Figura 5 não correspondem ao senso comum de que os desenvolvedores mais experientes cometem menos erros. Estes resultados sugerem que os desenvolvedores experientes cometem mais erros do que os iniciantes em pelo menos duas categorias: Incorrect Advice (AI) e Duplicated Crosscutting Code (RD). Para investigar mais este achado, verificamos que todos os indivíduos da terceira replicação foram classificados neste grupo (ou seja, menos de um ano de experiência). Além disso, esses indivíduos não têm a oportunidade de fazer esses dois tipos de erros(aierd),devidoànaturezadointeresseedaaplicação.

Dados coletados e Análises Tipos de erro por faixa etária:

Dados coletados e Análises Gráfico não conclusivo segundo os autores, pois somente 15 indivíduos do grupo 2 foram avaliados. Os dados deste gráfico indicam que os desenvolvedores mais jovens cometem mais erros do que os mais velhos nastrêsprimeirascategorias(al,ai,ece).noentanto,os desenvolvedores mais velhos cometem mais erros de (RD eri). Pelo fato de que esta observação é baseada apenas em 15 indivíduos, ela não é conclusiva. Outros estudos, como experimentos controlados, devem ser realizados para confirmar ou refutar nossos resultados preliminares.

Conclusões Com um corpo crescente de conhecimento com relação a erros comuns em AOP, pesquisadores e profissionais podem empregar esforços para desenvolver ferramentas que automaticamente verificar a ocorrência de refatoração imprecisa ou analisar partes específicas do código com o objetivo de localizar falhas. Quando os programadores iniciantes são levados em conta, entender como eles cometem erros também pode melhorar a qualidade do ensino de programação em geral [17, 18], especialmente em AOP.

Conclusões resultados indicam erros de AOP recorrentes feitos por programadores com experiências específicas e corroboram a nossa hipótese de investigação. Por exemplo, a programação em pares pode ajudar os programadores a evitar alguns erros, tais como refatoração incompleta, mas não ajuda a evitar os erros relacionados a Advices. Os resultados deste estudo podem ser utilizados para vários fins. Por exemplo, eles podem ajudar no desenvolvimento e aprimoramento de novas linguagens e ferramentas AOP.

Conclusões Pesquisas futuras podem contar com as nossas configurações de estudo para realizar novas repetições do experimento, a fim de ampliar nosso conjunto de dados. Além disso, com base nas categorias identificadas de erros, uma ferramenta de suporte pode ser desenvolvida para aconselhar aos programadores sobre erros típicos de AOP.

Referências Bibliográficas [1] R. T. Alexander, J. M. Bieman, and A. A. Andrews, Towards the systematic testing of aspectoriented programs, Dept. of Comp, Science, Colorado State Univ., Report CS-04-105, 2004. [2] J. Baekkenand R. Alexander. "A Candidate Fault Model for AspectJPointcuts". In proceedings of the 17th Int l Symposium on Software Reliability Engineering (ISSRE), pp. 169-178. Raleigh, USA, 2006. [6] R. Coelho, A. Rashid, A. Garcia, F. Ferrari, N. Cacho, U. Kulesza, A. Staaand C. Lucena. "Assessing the Impact of Aspects on Exception Flows: An Exploratory Study". In proceedings of the 22nd European conference on Object-Oriented Programming (ECOOP), pp. 207-234. Paphos, Cyprus, July 2008. [8] F. Ferrari, J. Maldonado and A. Rashid. "Mutation Testing for AspectOrientedPrograms". In proceedings of the 1st International Conference on Software Testing, Verification, and Validation (ICST), pp. 52-61. Lillehammer, Norway, April 2008. [17] E. Solowayand K. Ehrlich. Empirical Studies of Programming Knowledge. IEEE Trans. on Softw. Eng. (TSE), 5, pp. 595-609. 1984. [18] J. Spohrerand E. Soloway. Novice mistakes: are the folk wisdoms correct?. Communications of the ACM. vol. 29, issue 7. 1986. [19] S. Zhang and J. Zhao. "On Identifying Bug Patterns in Aspect-Oriented Programs". In proc. of the 31st Int l Computer Software and Applications Conference (COMPSAC), 431-438. Beijing, China, 2007.

Obrigado!