Empirical studies on fine-grained feature dependencies

Detalhes bibliográficos
Ano de defesa: 2015
Autor(a) principal: Gonzaga Júnior, Iran Rodrigues
Orientador(a): Não Informado pela instituição
Banca de defesa: Não Informado pela instituição
Tipo de documento: Dissertação
Tipo de acesso: Acesso aberto
Idioma: por
Instituição de defesa: Universidade Federal de Alagoas
Brasil
Programa de Pós-Graduação em Informática
UFAL
Programa de Pós-Graduação: Não Informado pela instituição
Departamento: Não Informado pela instituição
País: Não Informado pela instituição
Palavras-chave em Português:
Link de acesso: http://www.repositorio.ufal.br/handle/riufal/1724
Resumo: Maintaining program families is not a trivial task. Developers commonly introduce bugs when they do not consider existing dependencies among features. When such implementations share program elements, such as variables and functions, inadvertently using these elements may result in bugs. In this context, previous work focuses only on the occurrence of intraprocedural dependencies, that is, when features share program elements within a function. But at the same time, we still lack studies investigating dependencies that transcend the boundaries of a function, since these cases might cause bugs as well. Indeed, in this work we bring evidence that variability bugs can also occur due to interprocedural dependencies and global variables. To assess to what extent these different types of feature dependencies exist in practice, we perform an empirical study covering 40 program families of different domains and sizes. Our results show that the intraprocedural and interprocedural feature dependencies are common in practice: 51:44% 17:77% of functions with preprocessor directives have intraprocedural dependencies, while 25:98% 19:99% of all functions have interprocedural dependencies. After studying the feature dependencies occurrence in practice, we perform another empirical study now focusing on finding actual bugs related to feature dependencies. Here we focus on undeclared variables, undeclared functions, unused variables, and unused functions. This study uses 15 systems to answer research questions related to how developers introduce these bugs and their frequency. We detect and confirm 32 variability bugs. The corpus of bugs we gather is a valuable source to ground research on this topic and to help tool developers, so they can provide means in their tools to avoid these problems.
id UFAL_6bc6cd41e4dade90154d32c61cd581ae
oai_identifier_str oai:www.repositorio.ufal.br:riufal/1724
network_acronym_str UFAL
network_name_str Repositório Institucional da Universidade Federal de Alagoas (UFAL)
repository_id_str
spelling Empirical studies on fine-grained feature dependenciesEstudos empíricos sobre dependência entre features de granularidade finaEngenharia de softwareComputadores e famíliaSoftware engineeringComputers and familyCNPQ::CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAOMaintaining program families is not a trivial task. Developers commonly introduce bugs when they do not consider existing dependencies among features. When such implementations share program elements, such as variables and functions, inadvertently using these elements may result in bugs. In this context, previous work focuses only on the occurrence of intraprocedural dependencies, that is, when features share program elements within a function. But at the same time, we still lack studies investigating dependencies that transcend the boundaries of a function, since these cases might cause bugs as well. Indeed, in this work we bring evidence that variability bugs can also occur due to interprocedural dependencies and global variables. To assess to what extent these different types of feature dependencies exist in practice, we perform an empirical study covering 40 program families of different domains and sizes. Our results show that the intraprocedural and interprocedural feature dependencies are common in practice: 51:44% 17:77% of functions with preprocessor directives have intraprocedural dependencies, while 25:98% 19:99% of all functions have interprocedural dependencies. After studying the feature dependencies occurrence in practice, we perform another empirical study now focusing on finding actual bugs related to feature dependencies. Here we focus on undeclared variables, undeclared functions, unused variables, and unused functions. This study uses 15 systems to answer research questions related to how developers introduce these bugs and their frequency. We detect and confirm 32 variability bugs. The corpus of bugs we gather is a valuable source to ground research on this topic and to help tool developers, so they can provide means in their tools to avoid these problems.Manter famílias de programas não é uma tarefa trivial. Desenvolvedores comumente introduzem erros quando não consideram dependências existentes entre features. Quando tais features compartilham elementos de programa, como variáveis e funções, utilizar estes elementos inadvertidamente pode resultar em erros de variabilidade. Neste contexto, trabalhos anteriores focaram apenas na ocorrência de dependências intraprocedurais, ou seja, quando features compartilham elementos de programa dentro de uma mesma função. Mas ao mesmo tempo, ainda não temos estudos investigando dependências que extrapolam os limites de uma função, já que esses casos também podem causar erros. De fato, neste trabalho nós trazemos evidências de que erros de variabilidade também podem ocorrer devido a dependências interprocedurais ou a variáveis globais. Para avaliar até que ponto esses diferentes tipos de dependências entre features existem na prática, nós realizamos um estudo empírico abrangendo 40 famílias de programas de diferentes domínios e tamanhos. Nossos resultados mostram que dependências intraprocedurais e interprocedurais são comuns na prática: 51; 44% 17; 77% das funções com diretivas de pré-processamento têm dependências intraprocedurais, enquanto 25; 98% 19; 99% de todas as funções possuem dependências interprocedurais. Após estudar a ocorrência de dependências entre features na prática, nós conduzimos outro estudo empírico, desta vez direcionado a encontrar erros de variabilidade relacionados a dependências entre features. Aqui nos concentramos em variáveis não declaradas, funções não declaradas, variáveis sem uso e funções sem uso. Este estudo utiliza 15 sistemas para responder a questões de pesquisa relacionadas a como os desenvolvedores introduzem esses erros e sua frequência. Nós detectamos e confirmamos a existência de 32 erros de variabilidade. O conjunto de erros que coletamos é uma fonte valiosa para fundamentar a pesquisa sobre esse tema e para auxiliar desenvolvedores de ferramentas, de forma que eles forneçam meios em suas ferramentas de evitar tais problemas.Universidade Federal de AlagoasBrasilPrograma de Pós-Graduação em InformáticaUFALRibeiro, Márcio de Medeiroshttp://lattes.cnpq.br/9300936571715992Santos Neto, Baldoino Fonseca doshttp://lattes.cnpq.br/0306751604362704Brito, Patrick Henrique da Silvahttp://lattes.cnpq.br/4155051332618408Borba, Paulo Henrique Monteirohttp://lattes.cnpq.br/9395715443254344Gonzaga Júnior, Iran Rodrigues2017-06-14T18:50:53Z2017-05-302017-06-14T18:50:53Z2015-08-10info:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/masterThesisapplication/pdfGONZAGA JÚNIOR, Iran Rodrigues. Empirical studies on fine-grained feature dependencies. 2015. 59 f. Dissertação (Mestrado em Informática) – Instituto de Computação, Programa de Pós Graduação em Informática, Universidade Federal de Alagoas, Maceió, 2015.http://www.repositorio.ufal.br/handle/riufal/1724porinfo:eu-repo/semantics/openAccessreponame:Repositório Institucional da Universidade Federal de Alagoas (UFAL)instname:Universidade Federal de Alagoas (UFAL)instacron:UFAL2019-01-09T21:23:26Zoai:www.repositorio.ufal.br:riufal/1724Repositório InstitucionalPUBhttp://www.repositorio.ufal.br/oai/requestri@sibi.ufal.bropendoar:46482019-01-09T21:23:26Repositório Institucional da Universidade Federal de Alagoas (UFAL) - Universidade Federal de Alagoas (UFAL)false
dc.title.none.fl_str_mv Empirical studies on fine-grained feature dependencies
Estudos empíricos sobre dependência entre features de granularidade fina
title Empirical studies on fine-grained feature dependencies
spellingShingle Empirical studies on fine-grained feature dependencies
Gonzaga Júnior, Iran Rodrigues
Engenharia de software
Computadores e família
Software engineering
Computers and family
CNPQ::CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAO
title_short Empirical studies on fine-grained feature dependencies
title_full Empirical studies on fine-grained feature dependencies
title_fullStr Empirical studies on fine-grained feature dependencies
title_full_unstemmed Empirical studies on fine-grained feature dependencies
title_sort Empirical studies on fine-grained feature dependencies
author Gonzaga Júnior, Iran Rodrigues
author_facet Gonzaga Júnior, Iran Rodrigues
author_role author
dc.contributor.none.fl_str_mv Ribeiro, Márcio de Medeiros
http://lattes.cnpq.br/9300936571715992
Santos Neto, Baldoino Fonseca dos
http://lattes.cnpq.br/0306751604362704
Brito, Patrick Henrique da Silva
http://lattes.cnpq.br/4155051332618408
Borba, Paulo Henrique Monteiro
http://lattes.cnpq.br/9395715443254344
dc.contributor.author.fl_str_mv Gonzaga Júnior, Iran Rodrigues
dc.subject.por.fl_str_mv Engenharia de software
Computadores e família
Software engineering
Computers and family
CNPQ::CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAO
topic Engenharia de software
Computadores e família
Software engineering
Computers and family
CNPQ::CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAO
description Maintaining program families is not a trivial task. Developers commonly introduce bugs when they do not consider existing dependencies among features. When such implementations share program elements, such as variables and functions, inadvertently using these elements may result in bugs. In this context, previous work focuses only on the occurrence of intraprocedural dependencies, that is, when features share program elements within a function. But at the same time, we still lack studies investigating dependencies that transcend the boundaries of a function, since these cases might cause bugs as well. Indeed, in this work we bring evidence that variability bugs can also occur due to interprocedural dependencies and global variables. To assess to what extent these different types of feature dependencies exist in practice, we perform an empirical study covering 40 program families of different domains and sizes. Our results show that the intraprocedural and interprocedural feature dependencies are common in practice: 51:44% 17:77% of functions with preprocessor directives have intraprocedural dependencies, while 25:98% 19:99% of all functions have interprocedural dependencies. After studying the feature dependencies occurrence in practice, we perform another empirical study now focusing on finding actual bugs related to feature dependencies. Here we focus on undeclared variables, undeclared functions, unused variables, and unused functions. This study uses 15 systems to answer research questions related to how developers introduce these bugs and their frequency. We detect and confirm 32 variability bugs. The corpus of bugs we gather is a valuable source to ground research on this topic and to help tool developers, so they can provide means in their tools to avoid these problems.
publishDate 2015
dc.date.none.fl_str_mv 2015-08-10
2017-06-14T18:50:53Z
2017-05-30
2017-06-14T18:50:53Z
dc.type.status.fl_str_mv info:eu-repo/semantics/publishedVersion
dc.type.driver.fl_str_mv info:eu-repo/semantics/masterThesis
format masterThesis
status_str publishedVersion
dc.identifier.uri.fl_str_mv GONZAGA JÚNIOR, Iran Rodrigues. Empirical studies on fine-grained feature dependencies. 2015. 59 f. Dissertação (Mestrado em Informática) – Instituto de Computação, Programa de Pós Graduação em Informática, Universidade Federal de Alagoas, Maceió, 2015.
http://www.repositorio.ufal.br/handle/riufal/1724
identifier_str_mv GONZAGA JÚNIOR, Iran Rodrigues. Empirical studies on fine-grained feature dependencies. 2015. 59 f. Dissertação (Mestrado em Informática) – Instituto de Computação, Programa de Pós Graduação em Informática, Universidade Federal de Alagoas, Maceió, 2015.
url http://www.repositorio.ufal.br/handle/riufal/1724
dc.language.iso.fl_str_mv por
language por
dc.rights.driver.fl_str_mv info:eu-repo/semantics/openAccess
eu_rights_str_mv openAccess
dc.format.none.fl_str_mv application/pdf
dc.publisher.none.fl_str_mv Universidade Federal de Alagoas
Brasil
Programa de Pós-Graduação em Informática
UFAL
publisher.none.fl_str_mv Universidade Federal de Alagoas
Brasil
Programa de Pós-Graduação em Informática
UFAL
dc.source.none.fl_str_mv reponame:Repositório Institucional da Universidade Federal de Alagoas (UFAL)
instname:Universidade Federal de Alagoas (UFAL)
instacron:UFAL
instname_str Universidade Federal de Alagoas (UFAL)
instacron_str UFAL
institution UFAL
reponame_str Repositório Institucional da Universidade Federal de Alagoas (UFAL)
collection Repositório Institucional da Universidade Federal de Alagoas (UFAL)
repository.name.fl_str_mv Repositório Institucional da Universidade Federal de Alagoas (UFAL) - Universidade Federal de Alagoas (UFAL)
repository.mail.fl_str_mv ri@sibi.ufal.br
_version_ 1817557433349832704