A Preliminary Investigation Towards the Impact of Composition Properties on Code Anomalies

Documentos relacionados
10 Lições Aprendidas ao Desenvolver um Estudo na Indústria

DEFINING METRIC THRESHOLDS FOR SOFTWARE PRODUCT LINES: A COMPARATIVE STUDY

Um Método para Identificação de Bad Smells a partir de Diagramas de Classes

Reengenharia, Refatoração e Bad Smell

Aula 2: Planejamento da RS

Ciclo de vida: fases x atividades

15/03/2018. Professor Ariel da Silva Dias Modelos de Processo de Software

Instituto Federal da Bahia Análise e Desenvolvimento de Sistemas INF022 Tópicos Avançados. Medição de Sofware

3 Trabalhos Relacionados

Estratégias e Perfis de Programadores Iniciantes na Identificação de Anomalias de Modularidade de Software

5 Estratégias de Detecção Sensíveis à História

5 Processo de Reificação e de Desenvolvimento com ACCA

10/10/2012. Artigo: Autores:

3 Arquitetura para a Coordenação e a Composição de Artefatos de Software

Estudo de Visualizações da Evolução de Códigos Fonte de Software

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

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE CAMPUS JOÃO CÂMARA ENGENHARIA DE SOFTWARE

Identifying thresholds for object-oriented software metrics

BibIme - Um Software Gerenciador de Bibliotecas Produzido de Forma Cooperativa

- Engenharia Reversa - Evolução de Sofware. Desenvolvimento como. Requisitos o que. Sistema porque. Profa. Dra. Sandra Fabbri. operacional.

UNIVERSIDADE FEDERAL DE PERNAMBUCO GRADUAÇÃO EM SISTEMAS DE INFORMAÇÃO CENTRO DE INFORMÁTICA

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

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

Isela Macía Bertrán. Avaliação da Qualidade de Software com Base em Modelos UML. Dissertação de Mestrado

Adriano Medeiros dos Santos. Suporte a Componentes Compostos Para o Middleware SCS. Dissertação de Mestrado

Tipos para uma Linguagem de Transformação

INTRODUÇÃO A ENGENHARIA DE SOFTWARE

Engenharia de Software II

3.1 Reflexão Computacional

ENGENHARIA DE SOFTWARE

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

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

Ciência da Computação. Análise e Projeto Orientado a Objetos UML. Anderson Belgamo

Evolução de Software e Refatoração. Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 21 1

Evolução de Software. Agenda a Aula. Evolução de Software. Evolução de Software. Atividades Comuns. Atividades de Desenvolvimento

Tarefas de Gerenciamento de Configuração

Autor 1 Orientador: 1. dia de mês de ano

Aula 12: Princípios da Coesão de Pacotes

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

Objetivo do Curso. Introdução à Interação Humano-Computador. Professora: Raquel Oliveira Prates

CRI Minas Indústria 4.0. Case Vallourec: Golden Batch na produção de tubos

UFG - Instituto de Informática

Revisão Sistemática da Literatura sobre Métodos de Localização de Características

Contexto. Motivação. variabilidade. variabilidade

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

Engenharia de Software

UNIVERSIDADE FEDERAL DE PERNAMBUCO CENTRO DE INFORMÁTICA GRADUAÇÃO EM SISTEMAS DE INFORMAÇÃO PROPOSTA DE TRABALHO DE CONCLUSÃO DE CURSO

Refatoração de Software

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

FATORES E MÉTRICAS DE QUALIDADE

Bibliografia. Quais são os problemas? capacidade de construção. acompanha a demanda por novos programas. ameaçada por projetos ruins.

Uma Abordagem para a Evolução Transparente em Repositórios de Medição de Software

Diferença estrutural entre versões de um programa

Engenharia de Software

Processos de Software by Pearson Education Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 4 Slide 1

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

As Visões. Visões arquiteturais (revisão)

Verificação e Validação. Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 22 Slide 1

MANUAL PARA DESENVOLVIMENTO DE SOFTWARE TRABALHO DE CONCLUSAO DE CURSO EM SISTEMAS DE INFORMAÇÃO

Medidas de Esforço de Desenvolvimento de Software

Uma Proposta de Múltiplas Visões Coordenadas para Apoiar Análise de Impacto de Mudança

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

TEMPLATE PARA TCC IFFAR - SVS

Sobre a execução de workflows científicos sobre diferentes estrategias de dados de entrada - Uma Avaliação Experimental

10/09/2012. Preliminary Guidelines for Empirical Research in Software Engineering

Requisitos de sistemas

Processos de Software

Arquitetura de Software: Documentação

18/10/2013. Resumo. Os mecanismos. Introdução. Padrões de projeto (OO) Compilação condicional

ArchLint: Uma Ferramenta para Detecção de Violações Arquiteturais usando Histórico de Versões

Histórico: Linha de Produção

Arquitetura de Software: Introdução

Notas de Aula 03: Introdução a Orientação a Objetos e a UML

Visões Arquiteturais. Arquitetura de Software Thaís Batista

Introdução ao Catalysis

A Reengenharia de software com o propósito de criar uma Linha de Produto de Software

Uma Abordagem de Reengenharia de Software Orientado a Objetos para Componentes apoiada por Métricas

Agenda da Aula. Arquitetura de Software e Padrões Arquiteturais. Elementos de um Padrão. Arquitetura de Software. Arquitetura de Software

Referências bibliográficas

Programa Analítico de Disciplina INF323 Engenharia de Software II

O Efeito Coorte e o Desenvolvimento das Preferências por Moda Feminina

3 Uma Abordagem Orientada a Aspectos para o Desenvolvimento de Frameworks

Disciplina Medições e Qualidade de Software. Tópicos da Disciplina. Método de Avaliação. Qualidade de Software.

Engenharia de Software. Processos. Desenvolvimento de Software Tradicionais 2014/2. Prof. Luís Fernando Garcia

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

ENGENHARIA DE SOFTWARE

Arquiteturas de Computadores. Programa de Pós-Graduação em Ciência da Computação. Plano da aula

Requisitos para Integração de Ferramentas de Engenharia de Software

ISO/IEC Roteiro IEC ISO. Histórico ISO/IEC ISO

ICET CURSO: Ciência da Computação e Sistemas de Informação (Engenharia de Software) Campus: Data: / / Nome:

Engenharia de Software Processo de Desenvolvimento de Software

ENGENHARIA DE SOFTWARE. Introdução

Etc & Tal. Volume 1 - Número 1 - Dezembro 2008 SBC HORIZONTES 57

4 Caso de Uso no Ambiente Oracle

Geração semi-automática de massas de testes funcionais a partir da composição de casos de uso e tabelas de decisão

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

Transcrição:

A Preliminary Investigation Towards the Impact of Composition Properties on Code Anomalies F. Torres and F. Dantas Abstract Software systems evolve through the composition of their modules. However, the complexity associated with the composition properties emerges as an extremely favorable factor for unwanted code changes. In a parallel context, several studies indicate that the occurrence of code anomalies also generates unwanted changes in the source code. Code anomaly is associated with undesirable symptoms that affect negatively the program structure. Apparently, composition properties and code anomalies share similar characteristics. However, there are no studies that analyze if and how composition properties are related to code anomalies occurrence. This paper presents a preliminary investigation about the impact of composition properties on code anomalies. Our investigation was developed across versions of an evolving software system. Our preliminary findings indicate that variations on composition properties reflect directly on code anomalies occurrence. Keywords Code Anomalies, Composition Properties, Software Evolution. O I. INTRODUÇÃO CÓDIGO fonte de sistemas de software em evolução tendem a sofrer sucessivas e constantes modificações []. De acordo com Fowler [], programadores modificam o código sem possuir, na grande maioria dos casos, a compreensão completa do projeto. Esta falta de compreensão associada a um mau planejamento contribui para que tais modificações se tornem portas de entrada para problemas estruturais de código em evolução, promovendo a sua instabilidade []. Modificações não planejadas possuem um efeito acumulativo ao longo da evolução do código e emergem como uma consequência direta da falta de gerenciamento da complexidade associada à composição de seus elementos []. O termo composição refere-se à união de dois ou mais elementos de código, tais como atributos, métodos ou qualquer outra forma de declaração []. Na verdade, a complexidade das composições de código está associada, principalmente, às suas propriedades, as quais nem sempre estão explícitas ao programador []. O escopo e a volatilidade das composições são exemplos de tais propriedades. O escopo de uma composição delimita os elementos de código afetados pela mesma. Enquanto que a volatilidade de uma composição representa as dependências quebradas durante a preparação de código para que a composição funcione apropriadamente. Assim como as propriedades de composição, anomalias de F. Torres, Universidade do Estado do Rio Grande do Norte, Mossoró, Rio Grande do Norte, Brasil, felipetorres@uern.br. código, que nada mais são do que sintomas indesejados na estruturação do código, também têm sido responsáveis por mudanças não planejadas no código fonte das aplicações []. Neste contexto, vários trabalhos realizados propõem ou estudam estratégias de detecção de anomalias [], [], [] e []. Porém, nenhum desses estudos investiga se as propriedades estão relacionadas com a ocorrência de anomalias e como esta relação se concretiza. Por exemplo, o aumento das responsabilidades de um módulo aumenta o seu escopo e ao mesmo tempo evidencia a ocorrência de uma das anomalias mais conhecidas na literatura, chamada God Class []. No entanto, não há estudos que analisem se e como as propriedades da composição impactam sobre o surgimento de anomalias de código. Neste sentido, através da análise das propriedades de composição buscamos mapear a ocorrência de anomalias de código. Consideramos que um completo entendimento sobre a correlação existente entre as propriedades de composição e anomalias pode fornecer informações para que programadores possam evoluir sistemas de software de maneira mais estável (i.e, sem muitas modificações indesejadas), monitorando as propriedades da composição e, consequentemente, minimizando o surgimento de anomalias de código. Este artigo investiga de forma pioneira a relação existente entre propriedades de composição e anomalias de código. Para tanto, realizou-se uma investigação utilizando um sistema de software em evolução, denominado MobileMedia [] (Seção III). O trabalho foi desenvolvido tomando por base a literatura existente sobre o tema (Seção III) e um planejamento criterioso dos procedimentos (Seção III). Os nossos resultados indicaram a existência de uma relação direta entre as propriedades de composição e a ocorrência de anomalias (Seção IV). Os trabalhos relacionados, as ameaças à validação e as conclusões do estudo são apresentados nas Seções V, VI e VII. II. REVISÃO LITERÁRIA A. Propriedades de Composição Elementos de código podem se relacionar direta ou indiretamente entre si. Quando dois ou mais módulos de um programa estão ligados, eles formam uma composição de código []. Esta ligação ocorre através de dependências entre os seus elementos de código, nem sempre explícitas, e que envolve diferentes quantidades e tipos de elementos, tais como, classes, F. Dantas, Universidade do Estado do Rio Grande do Norte, Natal, Rio Grande do Norte, Brasil, franciscodantas@uern.br. Corresponding author: F. Torres

classes abstratas, interfaces e métodos [] (ver Fig. ). Neste cenário, à medida que o código é composto e evolui, surge a necessidade de monitorar as propriedades associadas às composições. Em nosso estudo, as propriedades de composição estudadas foram: o escopo e a volatilidade das composições []. De acordo com [], o escopo das composições refere-se ao mapeamento dos elementos envolvidos na composição. Já a volatilidade quantifica as dependências que foram quebradas como forma de preparação para receber uma nova composição de código. Figura. Cenário de Composição. Na Fig., o escopo da composição destacado pela área tracejada compreende as classes sombreadas. Isto significa que para tal composição acontecer, elementos de código das classes sombreadas foram afetados. Por outro lado, a volatilidade da mesma composição quantifica o número de alterações realizadas nas classes sombreadas para que a composição fosse realizada. O impacto das propriedades do código de composição sobre a estabilidade (i.e., número de mudanças) do código foi estudado de forma pioneira por []. De acordo com uma análise feita por [], alguns fatores de instabilidade tem uma forte correlação com o escopo e a alta volatilidade das composições. Isso acontece principalmente porque a propagação de mudanças nos elementos da composição é delimitada pela própria composição de código e é medida pelo escopo. Em outras palavras, temos o seguinte: modificações realizadas em um determinado módulo tendem a ser propagadas para toda a composição e, eventualmente, serão quantificadas pelo escopo. Por outro lado, a volatilidade também é extremamente significativa para se referir à estabilidade, uma vez que quantifica a necessidade de manipulação de código para que uma composição seja adicionada. Sendo assim, estas propriedades foram utilizadas para analisar a ocorrência de problemas estruturais quando são realizadas mudanças em composições de código. B. Anomalias de Código Sintomas que indicam possível aparecimento de problemas estruturais são chamados de bad smells [], ou anomalias de código []. Durante a evolução de um sistema de software, problemas estruturais criados em uma versão anterior poderão ser maiores e mais prejudiciais ao longo do processo evolutivo. De acordo com Fowler [], o efeito acumulativo causado pela ocorrência destes sintomas torna mais árdua a leitura do código fonte, o que dificulta a sua compreensão, preservação e o torna mais complexo de ser modificado. Por consequência disso, mais rapidamente ele irá apresentar problemas estruturais e isso poderá interferir na estabilidade do sistema, uma vez que quanto mais necessária for a realização de mudanças no código fonte, maior será a probabilidade de que o programa se torne instável []. Divergent Change (DC), God Class (GC) e Shotgun Surgery (SS) são exemplos de anomalias de código []. A anomalia conhecida por Divergent Change [] ocorre quando uma classe precisa ser modificada de diferentes formas para entrar em conformidade com alterações de naturezas distintas. Isto significa dizer que haverá muitas modificações em uma mesma classe e, portanto, tenderá a ser mais instável e mais propensa a erros, uma vez que estabilidade está associada à quantidade de mudanças []. Já a anomalia God Class tende a ser uma classe grande que centraliza muitas funcionalidades (responsabilidades) de um sistema ao mesmo tempo, o que leva a ser uma classe complexa []. Finalmente, a anomalia Shotgun Surgery [] corresponde a uma classe cuja modificação poderá implicar muitas pequenas modificações em muitas outras classes do sistema, em forma de cascata. Na Fig., a classe MediaAccessor possui indicadores das três anomalias citadas. Conforme a Fig., é possível notar que a classe MediaAccessor possui uma alta relevância para a composição de código apresentada. Sendo assim, possui uma alta interconexão de classes e qualquer alteração em seu código potencialmente afetará as outras classes com as quais está conectada. Logo, existe a possibilidade desta classe ter uma alta volatilidade também. Diante disto, resta saber se tais taxas de interconexão (escopo) e volatilidade são altas o suficiente para que a classe MediaAccessor apresente as anomalias dos tipos Divergent Change, God Class e Shotgun Surgery. III. CONFIGURAÇÕES DE ESTUDO A. Estudo de Caso: MobileMedia Para o nosso estudo pioneiro selecionamos as versões Java da aplicação de software denominada MobileMedia []. O MobileMedia é uma linha de produto de software que fornece suporte para gerenciar (criar, apagar, visualizar, reproduzir, enviar) diferentes mídias (foto, música e vídeo) em dispositivos móveis. Durante sua evolução, a arquitetura inicial do núcleo foi sistematicamente enriquecida com recursos obrigatórios, opcionais e alternativos. As características principais são: criar/excluir mídia (foto, música ou vídeo), visualizar/tocar mídia e rotular mídia. Alguns recursos opcionais, entre outros, são: transferência de foto via SMS, contar e ordenar mídia, copiar mídia e definir favoritos.

Por ser um software com vários estágios de evolução conhecido na literatura e amplamente utilizado como uma ferramenta para estudos envolvendo anomalias de código e propriedades da composição, como visto em [], [], [], [] e [], o MobileMedia foi escolhido como artefato de código para a análise de uma possível relação entre anomalias de código e propriedades da composição. B. Procedimentos O estudo foi dividido em três fases principais: () quantificação das propriedades de composição, () quantificação das anomalias e () análise da correlação existente entre elas. Na primeira fase, quantificamos as propriedades de composição (Seção II.A), através da aplicação das métricas propostas por [] e apresentadas na Seção III.C, sobre as versões do MobileMedia (Seção III.A), desenvolvidas em Java. A detecção de anomalias, sobre as mesmas versões, foi realizada através da ferramenta proposta por []. Para tanto, foram utilizadas as estratégias apresentadas na Seção III.C. Finalmente, analisamos a possível correlação existente entre as propriedades de composição e a ocorrência de anomalias (Seção IV). C. Quantificação Para iniciar a análise, foi necessária a construção de informações a partir de duas perspectivas: o mapeamento das propriedades de composições e das anomalias de código em todas as versões do MobileMedia (Seção III.A). Para o mapeamento das composições foram utilizadas quatro métricas para quantificar tais informações: LoI (Local Impact) [], GoI (Global Impact) [] e CoV (Composition Volatility) [], adaptadas para o contexto do paradigma orientado a objetos. As métricas LoI, GoI e CoV são descritas na Tabela I. O valor de LoI para a composição em destaque na Fig. é igual a %. Este valor equivale ao número de elementos afetados pela composição, que é igual a (MediaAcessor), sobre o total de elementos (módulos) do exemplo, que é igual a. O valor para GoI, neste exemplo, seria o mesmo valor de LoI, já que o GoI é igual ao somatório de LoI para cada composição e neste exemplo, temos apenas uma composição. A volatilidade associada à composição contabilizaria todas as dependências existentes entre os elementos que foram quebradas para promover a robustez da composição. TABELA I MÉTRICAS PARA PROPRIEDADES DE COMPOSIÇÃO Métrica LoI GoI Propriedade de Composição Escopo Escopo Definição da Métrica A relação existente entre o número de elementos de programa afetados por uma composição divididos pelo total de elementos de programas. Quantifica o escopo da composição através da relação existente entre o CoV Volatilidade número de todos os elementos afetados pelas composições existentes sobre o número total de elementos da composição. Quantifica o número de dependências quebradas em uma composição enquanto o código está sendo preparado para que a composição em questão funcione apropriadamente. Para o segundo mapeamento, foram utilizadas as estratégias propostas por Silva []. O objetivo dessas estratégias é realizar a detecção de elementos do código considerando o comportamento evolutivo do mesmo. A Tabela II apresenta as estratégias propostas por Silva []. TABELA II ESTRATÉGIAS DE DETECÇÃO DE ELEMENTOS DE CÓDIGO Anomalia Divergent Change God Class Shotgun Surgery Estratégia de Detecção Se a classe depende de muitas outras classes de muitos distintos pacotes, é grande e, ao longo da história, a dependência a outros pacotes foi crescente, então, é uma possível anomalia Divergent Change. Se a complexidade é grande ou tamanho e complexidade já eram grandes em passado recente e tais propriedades continuam crescendo, então, é uma possível anomalia God Class. Se alterações na classe potencialmente afetam muitos métodos e muitas outras classes e muitas são as classes que herdam direta ou indiretamente desta classe, então, é uma possível anomalia Shotgun Surgery. A partir das informações levantadas pela análise da quantificação das propriedades da composição (Tabela I) e da quantificação das anomalias (Tabela II), podemos avaliar a possibilidade de existência de uma correlação entre propriedades da composição e anomalias de código. IV. DISCUSSÃO A evolução de programas é guiada por atualizações regulares em seus módulos com o objetivo de atender a demanda por novos requisitos. Este processo é facilitado quando a evolução acontece de forma estável e livre de anomalias. Neste contexto, sendo o gerenciamento das propriedades de composição um fator determinante para o gerenciamento da estabilidade, a evolução do MobileMedia foi analisada e discutida sob a perspectiva da influência das propriedades de composição na

ocorrência de anomalias. A discussão é guiada pelas métricas definidas na Seção III.C. Escopo global vs. Anomalias. Como podemos observar na Fig., o escopo global das composições tende a se manter constante; enquanto que o número de ocorrências de anomalias tende a variar. Apenas as versões V e V apresentam o mesmo número de anomalias. Nas demais versões, há uma variação significativa. Enquanto GoI não variou de forma expressiva, o número de anomalias entre as versões cresceu em quase %. Esta falta de correlação se explica pelo fato do cálculo do escopo global considerar todas as composições existentes em cada uma das versões. Isto significa que os valores de GoI também consideram o escopo das composições dos módulos não infectados por anomalias. Total de Anomalias Figura. Escopo Global vs. Anomalias. Escopo dos módulos é um bom indicador da ocorrência de anomalias. Analisando isoladamente o escopo dos módulos anômalos, percebemos claramente a relação existente entre o escopo do módulo e a ocorrência de anomalias, através dos valores de LoI. A Fig. ilustra este comportamento. Em particular, o módulo MediaAccessor (V), apresenta-se infectado pelas anomalias do tipo Divergent Change, God Class e Shotgun Surgery, o que certamente explica o maior valor de escopo para V. Total de Anomalias Anomalias Escopo V V V V V V Figura. Escopo Local vs. Anomalias. Versões do MobileMedia Anomalias Escopo Local V V V V V V Versões do MobileMedia,,,,,,,,,,,,,,,,,, GoI LoI De forma complementar, a análise isolada dos módulos de V indica que o módulo MediaAccessor se encontra entre os módulos de maiores escopos da versão. Os módulos MediaController e MediaListController também aparecem entre os módulos com maiores escopos, sendo o primeiro também infectado pelas anomalias Divergent Change e God Class, e o segundo pela anomalia Divergent Change. Esta concentração dos módulos anômalos no maior nível do escopo é um indicador forte da relação existente entre as propriedades de composição e a ocorrência de anomalias. Módulos voláteis tendem a ser anômalos. A Fig. ilustra a variação da volatilidade dos módulos anômalos versão a versão. De acordo com os valores de CoV, os módulos com o maior número de anomalias instaladas foram também os que apresentaram o maior número de quebra de dependências ao longo do processo de evolução. Analisando os valores de CoV, podemos identificar que a volatilidade também se relaciona com a ocorrência de anomalias. Em particular, o módulo MediaAccessor foi ao mesmo tempo o módulo que sofreu mais quebras de dependências e o que possui as três anomalias da análise instaladas (DC, GC e SS). Total de Anomalias Anomalias Volatilidade V V V V V V Figura. Volatilidade vs. Anomalias. Versões do MobileMedia V. TRABALHOS RELACIONADOS Dantas et al. [], conduziu um estudo pioneiro sobre o impacto das propriedades de composição código na estabilidade de sistemas de software em evolução, usando técnicas de programação avançadas. Segundo os autores, a estabilidade de sistemas é afetada negativamente pelos efeitos das propriedades de composição. No campo das anomalias, Padilha [] identificou que ainda falta conhecimento empírico quanto à eficácia de métricas de interesse na identificação de anomalias de código, apesar de já terem sido utilizadas em estudos experimentais. Em [] foram investigadas se métricas de interesse podem fornecer indicadores úteis para a detecção de algumas anomalias de código, dentre elas, Divergent Change, God Class e Shotgun Surgery. O estudo feito em [] apresenta um sistema para detectar anomalias código arquitetonicamente relevantes e que ajuda os desenvolvedores a priorizarem a remoção de anomalias de acordo com uma classificação de anomalias. Já em [] foi apresentado um estudo empírico sobre a influência de anomalias de código sobre os sintomas de degradação arquiteturais, analisando a relação entre anomalias de código e problemas arquiteturais. Por fim, um estudo feito em [] estava incluído a detecção de anomalias nas versões em evolução do MobileMedia, onde a utilização de estratégias de detecção formadas por métricas que consideram características do histórico de evolução foi proposta CoV

e avaliada. Entretanto, a estratégia utilizada por Silva em [] não obteve um resultado com % de acerto para a detecção, deixando margem para melhorias. Neste contexto, muitos pesquisadores tem investigado o comportamento anômalo dos elementos de código [], [], [], [] e []. Em paralelo, trabalhos que analisam as propriedades da composição, como em [], [] e [], têm sido reportados. Contudo, nenhum trabalho relaciona as propriedades da composição de código com a ocorrência de anomalias de código. VI. AMEAÇAS À VALIDAÇÃO Uma das ameaças mais relevantes do nosso estudo diz respeito à validade externa. Ameaças à validação externas são condições que não permitem a generalização dos resultados. A fim de minimizar esta ameaça, escolhemos uma aplicação já utilizada em outros estudos empíricos []. Esta aplicação é representativa de projetos do mundo real e possui um tamanho significativo. Além disso, ela contém ocorrências de anomalias e também possui cenários ricos para analisar as propriedades de composição sobre diferentes aspectos em um cenário evolutivo. Desta forma, através dela foi possível observar as diferenças entre os resultados. No entanto, ainda é necessário realizar outras avaliações com outras aplicações similares de modo a fornecer maiores evidências sobre as nossas conclusões. VII. CONSIDERAÇÕES FINAIS Este trabalho relatou uma investigação exploratória sobre a relação existente entre as propriedades de composição e as anomalias de código. Através deste estudo preliminar, foi possível adquirir conhecimento sobre a relação existente entre as propriedades de composição e a ocorrência de anomalias de código. Torna-se evidente que os programadores devem ter ciência do impacto que as propriedades de composição geram sobre o código e como gerenciá-lo de modo a minimizar a ocorrência de anomalias. Neste contexto, as propriedades de composição, escopo local e volatilidade, mostraram-se mais relacionados com ocorrência de anomalias. O escopo global, por considerar todas as composições de uma versão do software, afasta-se muito no que diz respeito a indicar a ocorrência de anomalias. Como trabalho futuro, vislumbramos a inclusão de novas aplicações para validar os resultados aqui apresentados, bem como a sugestão de heurísticas expressem o relacionamento existente entre as propriedades de composição com a ocorrência de anomalias de código. AGRADECIMENTOS Agradecimento à Coordenação de Aperfeiçoamento de Pessoal de Nível Superior (CAPES) pelo financiamento de concessão de bolsa de estudos de pós-graduação, em nível de mestrado, ao autor correspondente Felipe Torres. REFERÊNCIAS [] M. Fowler, K. Beck, J. Brant, W. Opdyke and D. Roberts, Refactoring: Improving the Design of Existing Code.. ed. [S.l.]: Addison-Wesley Professional,. [] F. Dantas, A. Garcia and J. Whittle, On the role of composition code properties on evolving programs. In: ACM. Proceedings of the ACM- IEEE international symposium on Empirical software engineering and measurement. [S.l.], p... [] I. Macía, R. Arcoverde, A. Garcia, C. Chavez and A. v. Staa, On the relevance of code anomalies for identifying architecture degradation symptoms. In: th European Conference on Software Maintenance and Reengineering. [S.l.], p.. IEEE Computer Society Washington, DC, USA,. [] L. M. d. Silva, F. Dantas, G. Honorato, A. Garcia and C. Lucena, Detecting modularity flaws of evolving code: What the history can reveal?. Fourth Brazilian Symposium. In: IEEE. Software Components, Architectures and Reuse (SBCARS) [S.l.], p... [] R. Arcoverde, I. Macía, A. Garcia and A. v. Staa, Automatically detecting architecturally-relevant code anomalies. In: IEEE PRESS. Proceedings of the Third International Workshop on Recommendation Systems for Software Engineering. [S.l.], p... [] A. L. Silva, Reuso de Estratégias Sensíveis a Domínio para Detecção de Anomalias de Código - Um Estudo de Múltiplos Casos. Dissertação (Mestrado) - Pontifícia Universidade Católica do Rio de Janeiro (PUC- Rio). Disponível em: <http://www.dbd.pucrio.br/pergamum/tesesabertas/ completo.pdf>. Agosto,. [] J. Padilha, Detecção de Anomalias de Código Usando Métricas de Software. Dissertação (Mestrado) - UFMG,. [] E. Figueiredo, N. Cacho, C. Sant Anna, M. Monteiro, U. Kulesza, A. Garcia, S. Soares, F. Ferrari, S. Khan, F. Filho and F. Dantas, Evolving software product lines with aspects. In: IEEE. Software Engineering, p.. On th International Conference ACM/IEEE. ICSE. [S.l.],. [] D. Albuquerque, A. Garcia, R. Oliveira, and W. Oizumi, Detecção interativa de anomalias de código: Um estudo experimental. In: Proceedings of Workshop on Software Modularity, WMOD. [S.l.: s.n.],. [] D. Kelly, A study of design characteristics in evolving software using stability as a criterion. IEEE Transactions on Software Engineering, v., n., p... [] K. Sethi, Y. Cai, S. Wong, A. Garcia and C. Sant'Anna, From retrospect to prospect: Assessing modularity and stability from software architecture. In: WICSA/ECSA. Joint Working IEEE/IFIP Conference on Software Architecture, & European Conference on Software Architecture. [S.l.], p... [] F. Dantas and A. Garcia, Stability of product lines with composition filters: An exploratory study. AOSD/ESCOT, v., p. -. Disponível em: <http://citeseerx.ist.psu.edu/viewdoc/download?doi=...&re p=rep&type=pdf>.. [] D. d. L. Albuquerque, Automatic detection of architectural violations in evolutionary systems. Dissertação (Mestrado) - Universidade do Minho, Disponível em: <http://repositorium.sdum.uminho.pt/bitstream////eeum_di_di ssertacao_pg.pdf>. Maio,. [] M. Kaur and P. Kumar, Spotting the phenomenon of bad smells in mobilemedia product line architecture. In: IEEE. Seventh International Conference on Contemporary Computing (IC). [S.l.], p... [] W. N. Oizumi, A. F. Garcia, T. E. Colanzi, M. Ferreira and A. v. Staa, On the relationship of code-anomaly agglomerations and architectural problems. Journal of Software Engineering Research and Development, Springer, v., n., p... [] I. Macía, C. Sant'Anna and A. v. Staa, Detectando problemas de design em diagramas de classes: Um estudo experimental. In: V Experimental Software Engineering Latin American Workshop (ESELAW). [s.n.].. [] L. M. d. Silva, Uma Abordagem Sensível à História para Detecção de Anomalias de Código. Dissertação (Mestrado) - Pontifícia Universidade Católica do Rio de Janeiro (PUC-Rio). Disponível em: <http://www.maxwell.vrac.pucrio.br/busca_etds.php?strsecao=resultado&nrseq=@>. Agosto,.

[] F. Dantas, Reuse vs. maintainability: Revealing the impact of composition code properties. In: Proceedings of the rd International Conference on Software Engineering (ICSE), p.. Disponível em: <http://doi.acm.org/./.>. ACM. ISBN -- --. New York, NY, USA,. Felipe Torres, Mestre em Ciência da Computação pelo Programa de Pós-Graduação em Ciência da Computação (PPgCC) pela parceria entre Universidade do Estado do Rio Grande do Norte (UERN) e Universidade Federal Rural do Semi-Árido (UFERSA). Bacharel em Ciência da Computação pela UFERSA e ex-professor substituto da UFERSA. Atualmente é professor substituto da UERN. Suas pesquisas se concentram na grande Área de Engenharia de Software e desde trabalha com projetos de Startups de TI. Francisco Dantas, Doutor em Informática pela Pontifícia Universidade Católica do Rio de Janeiro, Rio de Janeiro/RJ, em colaboração com a Universidade de Lancaster, Lancaster/UK. É professor da Universidade do Estado do Rio Grande do Norte. Tem experiência na área de Ciência da Computação, com ênfase em Engenharia de Software, atuando principalmente nos seguintes temas: Técnicas Avançadas para Programação Modular, Linhas de Produto, Métricas de Software, Arquitetura de Software e Engenharia de Software Empírica.