Understanding the shape of feature code
Autor(a) principal: | |
---|---|
Data de Publicação: | 2015 |
Tipo de documento: | Dissertação |
Idioma: | por |
Título da fonte: | Repositório Institucional da UFMG |
Texto Completo: | http://hdl.handle.net/1843/ESBF-9ZPNCF |
Resumo: | Feature annotations (por exemplo, diretivas do preprocessador C, na forma de #ifdefs) são usadas para controlar extensões de código relacionadas a uma feature. Por muito tempo, tais anotações têm sido consideradas indesejáveis. Seu uso excessivo pode aumentar o risco de ripple effects, desorganizar o código e dificultar sua compreensão e manutenção. Para prevenir esses problemas, desenvolvedores devem monitorar o uso de feature annotations, por exemplo, estabelecendo thresholds (valores de referência). No entando, pouco se sabe sobre como extrair thresholds na prática, ou quais valores são representativos para métricas relacionadas a features. Para contribuir comuma solução para esse problema, nós analizamos a distribuição estatística de métricas relacionadas a feature annotations, extraídas de umcorpus de 20 sistemas baseados no preprocessador C, amplamente conhecidos, com longo histórico de evolução e que abrangem diferentes domínios de função. O estudo considera 3 métricas: scattering degree (espalhamento de feature constants), tangling degree (entrelaçamento de feature expressions) e nesting depth (profundidade das anotações). Os resultados mostram que feature scattering possui uma distribuição com elevada assimetria. Em 14 sistemas (70 %), a distribuição de scattering degree segue uma distribuição power-law, tornando medidas de média e desvio padrão não confiáveis para estabelecer limites. Em relação a tangling e nesting, os valores tendem a seguir uma distribuição uniforme. Embora existam outliers, eles pouco impactam a média, sugerindo que medidas de tendência central podem gerar thresholds confiáveis. Com base nestes resultados, nós propomos thresholds gerados a partir de nosso benchmark como base para trabalhos futuros. Adicionalmente, nós realizamos uma revisão sistemática da literatura para identificar descobertas e suposições reportadas na literatura sobre o uso de ifdefs. Os resultados mostram que os estudos disponíveis não realizam análise estatística de métricas relacionadas a features, e nem propõem thresholds. |
id |
UFMG_45367a534f5d0091c0f5a260db121061 |
---|---|
oai_identifier_str |
oai:repositorio.ufmg.br:1843/ESBF-9ZPNCF |
network_acronym_str |
UFMG |
network_name_str |
Repositório Institucional da UFMG |
repository_id_str |
|
spelling |
Marco Tulio de Oliveira ValenteAndre Cavalcante HoraEduardo Magno Lages FigueiredoMariza Andrade da Silva BigonhaRodrigo Barbosa de Queiroz2019-08-13T17:43:27Z2019-08-13T17:43:27Z2015-07-31http://hdl.handle.net/1843/ESBF-9ZPNCFFeature annotations (por exemplo, diretivas do preprocessador C, na forma de #ifdefs) são usadas para controlar extensões de código relacionadas a uma feature. Por muito tempo, tais anotações têm sido consideradas indesejáveis. Seu uso excessivo pode aumentar o risco de ripple effects, desorganizar o código e dificultar sua compreensão e manutenção. Para prevenir esses problemas, desenvolvedores devem monitorar o uso de feature annotations, por exemplo, estabelecendo thresholds (valores de referência). No entando, pouco se sabe sobre como extrair thresholds na prática, ou quais valores são representativos para métricas relacionadas a features. Para contribuir comuma solução para esse problema, nós analizamos a distribuição estatística de métricas relacionadas a feature annotations, extraídas de umcorpus de 20 sistemas baseados no preprocessador C, amplamente conhecidos, com longo histórico de evolução e que abrangem diferentes domínios de função. O estudo considera 3 métricas: scattering degree (espalhamento de feature constants), tangling degree (entrelaçamento de feature expressions) e nesting depth (profundidade das anotações). Os resultados mostram que feature scattering possui uma distribuição com elevada assimetria. Em 14 sistemas (70 %), a distribuição de scattering degree segue uma distribuição power-law, tornando medidas de média e desvio padrão não confiáveis para estabelecer limites. Em relação a tangling e nesting, os valores tendem a seguir uma distribuição uniforme. Embora existam outliers, eles pouco impactam a média, sugerindo que medidas de tendência central podem gerar thresholds confiáveis. Com base nestes resultados, nós propomos thresholds gerados a partir de nosso benchmark como base para trabalhos futuros. Adicionalmente, nós realizamos uma revisão sistemática da literatura para identificar descobertas e suposições reportadas na literatura sobre o uso de ifdefs. Os resultados mostram que os estudos disponíveis não realizam análise estatística de métricas relacionadas a features, e nem propõem thresholds.Feature annotations (e.g., code fragments guarded by ifdef C-preprocessor directives) are widely used to control code extensions related to features. Feature annotations have long been said to be undesirable. When maintaining features guarded by annotations, there is a high risk of ripple effects. Also, excessive use of feature annotations may lead to code clutter, hinder program comprehension and harden maintenance. To prevent such problems, developers should monitor the use of feature annotations, for example, by setting acceptable thresholds. Interestingly, little is known about how to extract thresholds in practice, and which values are representative for feature-related metrics. To address this issue, in this master dissertation we analyze the statistical distribution of three feature-related metrics collected from a corpus of 20 well-known and long-lived C-preprocessor-based systems from different domains. We consider three metrics: scattering degree of feature constants, tangling degree of feature expressions, and nesting depth of preprocessor annotations. Our findings show that feature scattering is highly skewed; in 14 systems (70%), the scattering distributions match a power law, making averages and standard deviations unreliable limits. Regarding tangling and nesting, the values tend to follow a uniform distribution; although outliers exist, they have little impact on the mean, suggesting that central statistics measures are reliable thresholds for tangling and nesting. Following our findings, we then propose thresholds from our benchmark data, as a basis for further investigations. We also report in this work the result of a systematic literature review, conducted to identify empirical findings and assumptions on the usage of ifdefs as reported in the literature. The inspection of the assumptions and findings shows that studies do not investigate the statistical distributions that better describe feature-related metric values, and also do not propose thresholds for such metrics.Universidade Federal de Minas GeraisUFMGComputaçãoSoftware ReutilizaçãoEngenharia de linha de produto de softwareLinhas de produto de softwareCppLfdefFeaturesVariabilidadeUnderstanding the shape of feature codeinfo:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/masterThesisinfo:eu-repo/semantics/openAccessporreponame:Repositório Institucional da UFMGinstname:Universidade Federal de Minas Gerais (UFMG)instacron:UFMGORIGINALrodrigobarbosaqueiroz.pdfapplication/pdf2429713https://repositorio.ufmg.br/bitstream/1843/ESBF-9ZPNCF/1/rodrigobarbosaqueiroz.pdf46941abf7c33375295cdd094529c476eMD51TEXTrodrigobarbosaqueiroz.pdf.txtrodrigobarbosaqueiroz.pdf.txtExtracted texttext/plain170872https://repositorio.ufmg.br/bitstream/1843/ESBF-9ZPNCF/2/rodrigobarbosaqueiroz.pdf.txt2674528ec7fe2041a0d9434a8fef81f3MD521843/ESBF-9ZPNCF2019-11-14 16:47:17.485oai:repositorio.ufmg.br:1843/ESBF-9ZPNCFRepositório de PublicaçõesPUBhttps://repositorio.ufmg.br/oaiopendoar:2019-11-14T19:47:17Repositório Institucional da UFMG - Universidade Federal de Minas Gerais (UFMG)false |
dc.title.pt_BR.fl_str_mv |
Understanding the shape of feature code |
title |
Understanding the shape of feature code |
spellingShingle |
Understanding the shape of feature code Rodrigo Barbosa de Queiroz Linhas de produto de software Cpp Lfdef Features Variabilidade Computação Software Reutilização Engenharia de linha de produto de software |
title_short |
Understanding the shape of feature code |
title_full |
Understanding the shape of feature code |
title_fullStr |
Understanding the shape of feature code |
title_full_unstemmed |
Understanding the shape of feature code |
title_sort |
Understanding the shape of feature code |
author |
Rodrigo Barbosa de Queiroz |
author_facet |
Rodrigo Barbosa de Queiroz |
author_role |
author |
dc.contributor.advisor1.fl_str_mv |
Marco Tulio de Oliveira Valente |
dc.contributor.referee1.fl_str_mv |
Andre Cavalcante Hora |
dc.contributor.referee2.fl_str_mv |
Eduardo Magno Lages Figueiredo |
dc.contributor.referee3.fl_str_mv |
Mariza Andrade da Silva Bigonha |
dc.contributor.author.fl_str_mv |
Rodrigo Barbosa de Queiroz |
contributor_str_mv |
Marco Tulio de Oliveira Valente Andre Cavalcante Hora Eduardo Magno Lages Figueiredo Mariza Andrade da Silva Bigonha |
dc.subject.por.fl_str_mv |
Linhas de produto de software Cpp Lfdef Features Variabilidade |
topic |
Linhas de produto de software Cpp Lfdef Features Variabilidade Computação Software Reutilização Engenharia de linha de produto de software |
dc.subject.other.pt_BR.fl_str_mv |
Computação Software Reutilização Engenharia de linha de produto de software |
description |
Feature annotations (por exemplo, diretivas do preprocessador C, na forma de #ifdefs) são usadas para controlar extensões de código relacionadas a uma feature. Por muito tempo, tais anotações têm sido consideradas indesejáveis. Seu uso excessivo pode aumentar o risco de ripple effects, desorganizar o código e dificultar sua compreensão e manutenção. Para prevenir esses problemas, desenvolvedores devem monitorar o uso de feature annotations, por exemplo, estabelecendo thresholds (valores de referência). No entando, pouco se sabe sobre como extrair thresholds na prática, ou quais valores são representativos para métricas relacionadas a features. Para contribuir comuma solução para esse problema, nós analizamos a distribuição estatística de métricas relacionadas a feature annotations, extraídas de umcorpus de 20 sistemas baseados no preprocessador C, amplamente conhecidos, com longo histórico de evolução e que abrangem diferentes domínios de função. O estudo considera 3 métricas: scattering degree (espalhamento de feature constants), tangling degree (entrelaçamento de feature expressions) e nesting depth (profundidade das anotações). Os resultados mostram que feature scattering possui uma distribuição com elevada assimetria. Em 14 sistemas (70 %), a distribuição de scattering degree segue uma distribuição power-law, tornando medidas de média e desvio padrão não confiáveis para estabelecer limites. Em relação a tangling e nesting, os valores tendem a seguir uma distribuição uniforme. Embora existam outliers, eles pouco impactam a média, sugerindo que medidas de tendência central podem gerar thresholds confiáveis. Com base nestes resultados, nós propomos thresholds gerados a partir de nosso benchmark como base para trabalhos futuros. Adicionalmente, nós realizamos uma revisão sistemática da literatura para identificar descobertas e suposições reportadas na literatura sobre o uso de ifdefs. Os resultados mostram que os estudos disponíveis não realizam análise estatística de métricas relacionadas a features, e nem propõem thresholds. |
publishDate |
2015 |
dc.date.issued.fl_str_mv |
2015-07-31 |
dc.date.accessioned.fl_str_mv |
2019-08-13T17:43:27Z |
dc.date.available.fl_str_mv |
2019-08-13T17:43:27Z |
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 |
http://hdl.handle.net/1843/ESBF-9ZPNCF |
url |
http://hdl.handle.net/1843/ESBF-9ZPNCF |
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.publisher.none.fl_str_mv |
Universidade Federal de Minas Gerais |
dc.publisher.initials.fl_str_mv |
UFMG |
publisher.none.fl_str_mv |
Universidade Federal de Minas Gerais |
dc.source.none.fl_str_mv |
reponame:Repositório Institucional da UFMG instname:Universidade Federal de Minas Gerais (UFMG) instacron:UFMG |
instname_str |
Universidade Federal de Minas Gerais (UFMG) |
instacron_str |
UFMG |
institution |
UFMG |
reponame_str |
Repositório Institucional da UFMG |
collection |
Repositório Institucional da UFMG |
bitstream.url.fl_str_mv |
https://repositorio.ufmg.br/bitstream/1843/ESBF-9ZPNCF/1/rodrigobarbosaqueiroz.pdf https://repositorio.ufmg.br/bitstream/1843/ESBF-9ZPNCF/2/rodrigobarbosaqueiroz.pdf.txt |
bitstream.checksum.fl_str_mv |
46941abf7c33375295cdd094529c476e 2674528ec7fe2041a0d9434a8fef81f3 |
bitstream.checksumAlgorithm.fl_str_mv |
MD5 MD5 |
repository.name.fl_str_mv |
Repositório Institucional da UFMG - Universidade Federal de Minas Gerais (UFMG) |
repository.mail.fl_str_mv |
|
_version_ |
1803589362789646336 |