Comprehensibility of source code with feature dependency in configurable systems.
Autor(a) principal: | |
---|---|
Data de Publicação: | 2023 |
Tipo de documento: | Tese |
Idioma: | eng |
Título da fonte: | Repositório Institucional da UFBA |
Texto Completo: | https://repositorio.ufba.br/handle/ri/38694 |
Resumo: | A compilação condicional é frequentemente usada para implementar variabilidade em sistemas configuráveis. Essa técnica depende de #ifdefs para delimitar o código de recursos. Estudos anteriores mostraram que #ifdefs podem dificultar a compreensão do código. No entanto, esses estudos não levaram explicitamente em consideração as dependências de recursos. A dependência de recursos ocorre quando diferentes recursos se referem ao mesmo elemento do programa, como uma variável. A compreensibilidade pode ser ainda mais afetada na presença de dependência de recursos, pois o desenvolvedor deve raciocinar sobre diferentes cenários que afetam a mesma variável. Nosso objetivo é entender como a dependência de recursos afeta a compreensibilidade do código-fonte de sistemas configuráveis. Realizamos quatro estudos empíricos complementares. No Estudo 1, quarenta e seis desenvolvedores responderam a um experimento online. Eles realizaram tarefas nas quais precisavam analisar programas contendo #ifdefs com e sem dependência de recursos. No entanto, as dependências de recursos podem ser de tipos diferentes, dependendo do escopo da variável compartilhada. No Estudo 1, não estávamos preocupados com diferentes tipos de dependência. Portanto, no Estudo 2, realizamos um experimento no qual 30 desenvolvedores depuraram programas com diferentes tipos de dependência de recursos. Cada programa incluía um tipo diferente de dependência de recursos: global, intraprocedural ou interprocedural. Usamos um dispositivo de rastreamento ocular para gravar os movimentos do olhar dos desenvolvedores enquanto depuravam programas. No entanto, as dependências de recursos não diferem apenas em termos de tipos. Elas também podem apresentar diferenças em termos de número de variáveis dependentes e grau de variabilidade, entre outros. Para abordar essas características, complementamos os Estudos 1 e 2 por meio dos Estudos 3 e 4. No Estudo 3, realizamos um experimento controlado com 12 participantes que analisaram programas com diferentes números de variáveis dependentes e número de usos de variáveis dependentes. No Estudo 4, conduzimos um experimento no qual 12 desenvolvedores analisaram programas com diferentes graus de variabilidade. Nossos resultados mostram que: (i) analisar programas contendo #ifdefs e dependência de recursos exigiu mais tempo do que programas contendo #ifdefs, mas sem dependência de recursos, (ii) depurar programas com #ifdefs e dependência global ou interprocedural exigiu mais tempo e esforço visual do que programas com dependência intraprocedural, (iii) quanto maior o número de variáveis dependentes, mais difícil foi entender programas com dependência de recursos, e (iv) o grau de variabilidade não afetou a compreensibilidade de programas com dependência de recursos. Em resumo, nossos estudos mostraram que #ifdefs afetaram a compreensibilidade de sistemas configuráveis em diferentes graus, dependendo da presença ou não de dependência de recursos, do tipo de dependência de recursos e do número de variáveis dependentes. |
id |
UFBA-2_29a5fd3586e5938cbf6cfbe92941ff87 |
---|---|
oai_identifier_str |
oai:repositorio.ufba.br:ri/38694 |
network_acronym_str |
UFBA-2 |
network_name_str |
Repositório Institucional da UFBA |
repository_id_str |
1932 |
spelling |
2023-12-15T13:01:24Z2023-12-15T13:01:24Z2023-03-28SANTOS, Djan Almeida. Comprehensibility of source code with feature dependency in configurable systems. 2023. 136 f. Tese (Doutorado em Ciência da Computação) - Instituto de Computação, Universidade Federal da Bahia, Salvador (Bahia), 2023.https://repositorio.ufba.br/handle/ri/38694A compilação condicional é frequentemente usada para implementar variabilidade em sistemas configuráveis. Essa técnica depende de #ifdefs para delimitar o código de recursos. Estudos anteriores mostraram que #ifdefs podem dificultar a compreensão do código. No entanto, esses estudos não levaram explicitamente em consideração as dependências de recursos. A dependência de recursos ocorre quando diferentes recursos se referem ao mesmo elemento do programa, como uma variável. A compreensibilidade pode ser ainda mais afetada na presença de dependência de recursos, pois o desenvolvedor deve raciocinar sobre diferentes cenários que afetam a mesma variável. Nosso objetivo é entender como a dependência de recursos afeta a compreensibilidade do código-fonte de sistemas configuráveis. Realizamos quatro estudos empíricos complementares. No Estudo 1, quarenta e seis desenvolvedores responderam a um experimento online. Eles realizaram tarefas nas quais precisavam analisar programas contendo #ifdefs com e sem dependência de recursos. No entanto, as dependências de recursos podem ser de tipos diferentes, dependendo do escopo da variável compartilhada. No Estudo 1, não estávamos preocupados com diferentes tipos de dependência. Portanto, no Estudo 2, realizamos um experimento no qual 30 desenvolvedores depuraram programas com diferentes tipos de dependência de recursos. Cada programa incluía um tipo diferente de dependência de recursos: global, intraprocedural ou interprocedural. Usamos um dispositivo de rastreamento ocular para gravar os movimentos do olhar dos desenvolvedores enquanto depuravam programas. No entanto, as dependências de recursos não diferem apenas em termos de tipos. Elas também podem apresentar diferenças em termos de número de variáveis dependentes e grau de variabilidade, entre outros. Para abordar essas características, complementamos os Estudos 1 e 2 por meio dos Estudos 3 e 4. No Estudo 3, realizamos um experimento controlado com 12 participantes que analisaram programas com diferentes números de variáveis dependentes e número de usos de variáveis dependentes. No Estudo 4, conduzimos um experimento no qual 12 desenvolvedores analisaram programas com diferentes graus de variabilidade. Nossos resultados mostram que: (i) analisar programas contendo #ifdefs e dependência de recursos exigiu mais tempo do que programas contendo #ifdefs, mas sem dependência de recursos, (ii) depurar programas com #ifdefs e dependência global ou interprocedural exigiu mais tempo e esforço visual do que programas com dependência intraprocedural, (iii) quanto maior o número de variáveis dependentes, mais difícil foi entender programas com dependência de recursos, e (iv) o grau de variabilidade não afetou a compreensibilidade de programas com dependência de recursos. Em resumo, nossos estudos mostraram que #ifdefs afetaram a compreensibilidade de sistemas configuráveis em diferentes graus, dependendo da presença ou não de dependência de recursos, do tipo de dependência de recursos e do número de variáveis dependentes.Conditional compilation is often used to implement variability in configurable systems. This technique relies on #ifdefs to delimit feature code. Previous studies have shown that #ifdefs may hinder code comprehensibility. However, those studies did not explicitly take feature dependencies into account. Feature dependency occurs when different features refer to the same program element, such as a variable. Comprehensibility may be even more affected in the presence of feature dependency, as the developer must reason about different scenarios affecting the same variable. Our goal is to understand how feature dependency affects the comprehensibility of configurable system source code. We conducted four complementary empirical studies. In Study 1, forty-six developers responded to an online experiment. They executed tasks in which they had to analyze programs containing #ifdefs with and without feature dependency. However, feature dependencies may be of different types depending on the scope of the shared variable. In Study 1, we were not concerned with different types of dependency. Thus, in Study 2, we carried out an experiment in which 30 developers debugged programs with different types of feature dependency. Each program included a different type of feature dependency: global, intraprocedural, or interprocedural. We used an eye-tracking device to record developers’ gaze movements while they debugged programs. However, feature dependencies do not differ from each other only in terms of types. They can also present differences in terms of number of dependent variables and degree of variability, among others. To address those characteristics, we complemented Study 1 and 2 by means of Studies 3 and 4. In Study 3, we executed a controlled experiment with 12 participants who analyzed programs with different numbers of dependent variables and number of uses of dependent variables. In Study 4, we carried out an experiment in which 12 developers analyzed programs with different degrees of variability. Our results show that: (i) analyzing programs containing #ifdefs and feature dependency required more time than programs containing #ifdefs but without feature dependency, (ii) debugging programs with #ifdefs and global or interprocedural dependency required more time and higher visual effort than programs with intraprocedural dependency, (iii) the higher the number of dependent variables the more difficult it was to understand programs with feature dependency, and (iv) the degree of variability did not affect the comprehensibility of programs with feature dependency. In summary, our studies showed that #ifdefs affected comprehensibility of configurable systems in different degrees depending on the presence or not of feature dependency, on the type of feature dependency, and on the number of dependent variables.Submitted by Djan Santos (djan.info@gmail.com) on 2023-12-14T23:47:50Z No. of bitstreams: 2 license_rdf: 914 bytes, checksum: 4d2950bda3d176f570a9f8b328dfbbef (MD5) PGCOMP-2023-Tese_Doutorado-Djan-Santos.pdf: 18379932 bytes, checksum: 49a7db4022e9a1658008a085a5b8da20 (MD5)Approved for entry into archive by Cátia Silva dos Santos (catia.santos@ufba.br) on 2023-12-15T13:01:24Z (GMT) No. of bitstreams: 2 PGCOMP-2023-Tese_Doutorado-Djan-Santos.pdf: 18379932 bytes, checksum: 49a7db4022e9a1658008a085a5b8da20 (MD5) license_rdf: 914 bytes, checksum: 4d2950bda3d176f570a9f8b328dfbbef (MD5)Made available in DSpace on 2023-12-15T13:01:24Z (GMT). No. of bitstreams: 2 PGCOMP-2023-Tese_Doutorado-Djan-Santos.pdf: 18379932 bytes, checksum: 49a7db4022e9a1658008a085a5b8da20 (MD5) license_rdf: 914 bytes, checksum: 4d2950bda3d176f570a9f8b328dfbbef (MD5) Previous issue date: 2023-03-28engUniversidade Federal da BahiaPrograma de Pós-Graduação em Ciência da Computação (PGCOMP) UFBABrasilInstituto de Computação - ICAttribution 3.0 Brazilhttp://creativecommons.org/licenses/by/3.0/br/info:eu-repo/semantics/openAccessConfigurable systemsComprehensibilityFeature dependencyCNPQ::CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAO::SISTEMAS DE COMPUTACAO::SOFTWARE BASICOCNPQ::CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAO::METODOLOGIA E TECNICAS DA COMPUTACAO::ENGENHARIA DE SOFTWARESistemas configuráveisCompreensibilidadeDependência de funcionalidadesComprehensibility of source code with feature dependency in configurable systems.Compreensibilidade de código fonte com dependência de funcionalidades em sistemas configuráveis.Doutoradoinfo:eu-repo/semantics/doctoralThesisinfo:eu-repo/semantics/publishedVersionSant'Anna, Cláudio Nogueirahttps://orcid.org/0000-0002-6005-5463http://lattes.cnpq.br/3228159608138969Ribeiro, Márcio de Medeiroshttps://orcid.org/0000-0002-4293-4261http://lattes.cnpq.br/9300936571715992Sant`Anna , Cláudio Nogueirahttps://orcid.org/0000-0002-6005-5463http://lattes.cnpq.br/3228159608138969Medeiros, Flávio Motahttp://lattes.cnpq.br/1874496667181567Almeida, Eduardo Santana dehttps://orcid.org/0000-0002-9312-6715http://lattes.cnpq.br/8538761803577291Machado, Ivan do Carmohttps://orcid.org/0000-0001-9027-2293http://lattes.cnpq.br/4430958315746203Gheyi, Rohithttps://orcid.org/0000-0002-5562-4449http://lattes.cnpq.br/2931270888717344https://orcid.org/0000-0002-9845-4857http://lattes.cnpq.br/6217397439199222Santos, Djan Almeidareponame:Repositório Institucional da UFBAinstname:Universidade Federal da Bahia (UFBA)instacron:UFBAORIGINALPGCOMP-2023-Tese_Doutorado-Djan-Santos.pdfPGCOMP-2023-Tese_Doutorado-Djan-Santos.pdfTese Doutorado de Djan Almeida Santos.application/pdf18379932https://repositorio.ufba.br/bitstream/ri/38694/1/PGCOMP-2023-Tese_Doutorado-Djan-Santos.pdf49a7db4022e9a1658008a085a5b8da20MD51CC-LICENSElicense_rdflicense_rdfapplication/rdf+xml; charset=utf-8914https://repositorio.ufba.br/bitstream/ri/38694/2/license_rdf4d2950bda3d176f570a9f8b328dfbbefMD52LICENSElicense.txtlicense.txttext/plain1715https://repositorio.ufba.br/bitstream/ri/38694/3/license.txt67bf4f75790b0d8d38d8f112a48ad90bMD53TEXTPGCOMP-2023-Tese_Doutorado-Djan-Santos.pdf.txtPGCOMP-2023-Tese_Doutorado-Djan-Santos.pdf.txtExtracted texttext/plain259387https://repositorio.ufba.br/bitstream/ri/38694/4/PGCOMP-2023-Tese_Doutorado-Djan-Santos.pdf.txt7a17e0cb50f3fb4bbafb1e08bfafab92MD54ri/386942023-12-16 02:07:45.803oai:repositorio.ufba.br:ri/38694TElDRU7Dh0EgREUgRElTVFJJQlVJw4fDg08gTsODTy1FWENMVVNJVkEKCkNvbSBhIGFwcmVzZW50YcOnw6NvIGRlc3RhIGxpY2Vuw6dhLCBvIGF1dG9yIG91IHRpdHVsYXIgZG9zIGRpcmVpdG9zIGRlIGF1dG9yIGNvbmNlZGUgYW8gUmVwb3NpdMOzcmlvIEluc3RpdHVjaW9uYWwgbyBkaXJlaXRvIG7Do28tZXhjbHVzaXZvIGRlIHJlcHJvZHV6aXIsICB0cmFkdXppciAoY29uZm9ybWUgZGVmaW5pZG8gYWJhaXhvKSBlL291IGRpc3RyaWJ1aXIgYSBzdWEgcHVibGljYcOnw6NvIChpbmNsdWluZG8gbyByZXN1bW8pIG5vIGZvcm1hdG8gaW1wcmVzc28gZS9vdSBlbGV0csO0bmljbyBlIGVtIHF1YWxxdWVyIG1laW8sIGluY2x1aW5kbyBvcyAKZm9ybWF0b3Mgw6F1ZGlvIGUvb3UgdsOtZGVvLgoKTyBhdXRvciBvdSB0aXR1bGFyIGRvcyBkaXJlaXRvcyBkZSBhdXRvciBjb25jb3JkYSBxdWUgbyBSZXBvc2l0w7NyaW8gcG9kZSwgc2VtIGFsdGVyYXIgbyBjb250ZcO6ZG8sIHRyYW5zcG9yIGEgc3VhIHB1YmxpY2HDp8OjbyBwYXJhIHF1YWxxdWVyIG1laW8gZS9vdSBmb3JtYXRvIHBhcmEgZmlucyBkZSBwcmVzZXJ2YcOnw6NvLCBwb2RlbmRvIG1hbnRlciBtYWlzIGRlIHVtYSBjw7NwaWEgIHBhcmEgZmlucyBkZSBzZWd1cmFuw6dhLCBiYWNrdXAgZSBwcmVzZXJ2YcOnw6NvLgoKTyBhdXRvciBvdSB0aXR1bGFyIGRvcyBkaXJlaXRvcyBkZSBhdXRvciBkZWNsYXJhIHF1ZSBhIHN1YSBwdWJsaWNhw6fDo28gw6kgb3JpZ2luYWwgZSBxdWUgbsOjbywgcXVlIHNlamEgZGUgc2V1IGNvbmhlY2ltZW50bywgaW5mcmluZ2UgZGlyZWl0b3MgYXV0b3JhaXMgZGUgbmluZ3XDqW0uCgpDYXNvIGEgc3VhIHB1YmxpY2HDp8OjbyBjb250ZW5oYSBtYXRlcmlhbCBxdWUgbsOjbyBwb3NzdWkgYSB0aXR1bGFyaWRhZGUgZG9zIGRpcmVpdG9zIGF1dG9yYWlzLCB2b2PDqiBkZWNsYXJhIHF1ZSBvYnRldmUgYSBwZXJtaXNzw6NvIGlycmVzdHJpdGEgZG8gZGV0ZW50b3IgZG9zIGRpcmVpdG9zIGF1dG9yYWlzIHBhcmEgY29uY2VkZXIgYW8gUmVwb3NpdMOzcmlvIG9zIGRpcmVpdG9zIGFwcmVzZW50YWRvcyBuZXN0YSBsaWNlbsOnYSBlIHF1ZSBlc3NlIG1hdGVyaWFsIGRlIHByb3ByaWVkYWRlIGRlIHRlcmNlaXJvcyBlc3TDoSBjbGFyYW1lbnRlIGlkZW50aWZpY2FkbyBlIHJlY29uaGVjaWRvIG5vIHRleHRvIG91IG5vIGNvbnRlw7pkbyBkYSBwdWJsaWNhw6fDo28gb3JhIGRlcG9zaXRhZGEuCgpDQVNPIEEgUFVCTElDQcOHw4NPIE9SQSBERVBPU0lUQURBICBSRVNVTFRFIERFIFVNIFBBVFJPQ8ONTklPIE9VIEFQT0lPIERFIFVNQSAgQUfDik5DSUEgREUgRk9NRU5UTyBPVSBPVVRSTyAKT1JHQU5JU01PLCBWT0PDiiBERUNMQVJBIFFVRSBSRVNQRUlUT1UgVE9ET1MgRSBRVUFJU1FVRVIgRElSRUlUT1MgREUgUkVWSVPDg08sIENPTU8gVEFNQsOJTSBBUyBERU1BSVMgT0JSSUdBw4fDlUVTIApFWElHSURBUyBQT1IgQ09OVFJBVE8gT1UgQUNPUkRPLgoKTyBSZXBvc2l0w7NyaW8gc2UgY29tcHJvbWV0ZSBhIGlkZW50aWZpY2FyLCBjbGFyYW1lbnRlLCBvIHNldSBub21lIChzKSBvdSBvKHMpIG5vbWUocykgZG8ocykgZGV0ZW50b3IoZXMpIGRvcyBkaXJlaXRvcyBhdXRvcmFpcyBkYSBwdWJsaWNhw6fDo28gZSBuw6NvIGZhcsOhIHF1YWxxdWVyIGFsdGVyYcOnw6NvLCBhbMOpbSBkYXF1ZWxhcyBjb25jZWRpZGFzIHBvciBlc3RhIGxpY2Vuw6dhLgo=Repositório InstitucionalPUBhttp://192.188.11.11:8080/oai/requestopendoar:19322023-12-16T05:07:45Repositório Institucional da UFBA - Universidade Federal da Bahia (UFBA)false |
dc.title.pt_BR.fl_str_mv |
Comprehensibility of source code with feature dependency in configurable systems. |
dc.title.alternative.pt_BR.fl_str_mv |
Compreensibilidade de código fonte com dependência de funcionalidades em sistemas configuráveis. |
title |
Comprehensibility of source code with feature dependency in configurable systems. |
spellingShingle |
Comprehensibility of source code with feature dependency in configurable systems. Santos, Djan Almeida CNPQ::CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAO::SISTEMAS DE COMPUTACAO::SOFTWARE BASICO CNPQ::CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAO::METODOLOGIA E TECNICAS DA COMPUTACAO::ENGENHARIA DE SOFTWARE Sistemas configuráveis Compreensibilidade Dependência de funcionalidades Configurable systems Comprehensibility Feature dependency |
title_short |
Comprehensibility of source code with feature dependency in configurable systems. |
title_full |
Comprehensibility of source code with feature dependency in configurable systems. |
title_fullStr |
Comprehensibility of source code with feature dependency in configurable systems. |
title_full_unstemmed |
Comprehensibility of source code with feature dependency in configurable systems. |
title_sort |
Comprehensibility of source code with feature dependency in configurable systems. |
author |
Santos, Djan Almeida |
author_facet |
Santos, Djan Almeida |
author_role |
author |
dc.contributor.advisor1.fl_str_mv |
Sant'Anna, Cláudio Nogueira |
dc.contributor.advisor1ID.fl_str_mv |
https://orcid.org/0000-0002-6005-5463 |
dc.contributor.advisor1Lattes.fl_str_mv |
http://lattes.cnpq.br/3228159608138969 |
dc.contributor.advisor-co1.fl_str_mv |
Ribeiro, Márcio de Medeiros |
dc.contributor.advisor-co1ID.fl_str_mv |
https://orcid.org/0000-0002-4293-4261 |
dc.contributor.advisor-co1Lattes.fl_str_mv |
http://lattes.cnpq.br/9300936571715992 |
dc.contributor.referee1.fl_str_mv |
Sant`Anna , Cláudio Nogueira |
dc.contributor.referee1ID.fl_str_mv |
https://orcid.org/0000-0002-6005-5463 |
dc.contributor.referee1Lattes.fl_str_mv |
http://lattes.cnpq.br/3228159608138969 |
dc.contributor.referee2.fl_str_mv |
Medeiros, Flávio Mota |
dc.contributor.referee2Lattes.fl_str_mv |
http://lattes.cnpq.br/1874496667181567 |
dc.contributor.referee3.fl_str_mv |
Almeida, Eduardo Santana de |
dc.contributor.referee3ID.fl_str_mv |
https://orcid.org/0000-0002-9312-6715 |
dc.contributor.referee3Lattes.fl_str_mv |
http://lattes.cnpq.br/8538761803577291 |
dc.contributor.referee4.fl_str_mv |
Machado, Ivan do Carmo |
dc.contributor.referee4ID.fl_str_mv |
https://orcid.org/0000-0001-9027-2293 |
dc.contributor.referee4Lattes.fl_str_mv |
http://lattes.cnpq.br/4430958315746203 |
dc.contributor.referee5.fl_str_mv |
Gheyi, Rohit |
dc.contributor.referee5ID.fl_str_mv |
https://orcid.org/0000-0002-5562-4449 |
dc.contributor.referee5Lattes.fl_str_mv |
http://lattes.cnpq.br/2931270888717344 |
dc.contributor.authorID.fl_str_mv |
https://orcid.org/0000-0002-9845-4857 |
dc.contributor.authorLattes.fl_str_mv |
http://lattes.cnpq.br/6217397439199222 |
dc.contributor.author.fl_str_mv |
Santos, Djan Almeida |
contributor_str_mv |
Sant'Anna, Cláudio Nogueira Ribeiro, Márcio de Medeiros Sant`Anna , Cláudio Nogueira Medeiros, Flávio Mota Almeida, Eduardo Santana de Machado, Ivan do Carmo Gheyi, Rohit |
dc.subject.cnpq.fl_str_mv |
CNPQ::CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAO::SISTEMAS DE COMPUTACAO::SOFTWARE BASICO CNPQ::CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAO::METODOLOGIA E TECNICAS DA COMPUTACAO::ENGENHARIA DE SOFTWARE |
topic |
CNPQ::CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAO::SISTEMAS DE COMPUTACAO::SOFTWARE BASICO CNPQ::CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAO::METODOLOGIA E TECNICAS DA COMPUTACAO::ENGENHARIA DE SOFTWARE Sistemas configuráveis Compreensibilidade Dependência de funcionalidades Configurable systems Comprehensibility Feature dependency |
dc.subject.por.fl_str_mv |
Sistemas configuráveis Compreensibilidade Dependência de funcionalidades |
dc.subject.other.pt_BR.fl_str_mv |
Configurable systems Comprehensibility Feature dependency |
description |
A compilação condicional é frequentemente usada para implementar variabilidade em sistemas configuráveis. Essa técnica depende de #ifdefs para delimitar o código de recursos. Estudos anteriores mostraram que #ifdefs podem dificultar a compreensão do código. No entanto, esses estudos não levaram explicitamente em consideração as dependências de recursos. A dependência de recursos ocorre quando diferentes recursos se referem ao mesmo elemento do programa, como uma variável. A compreensibilidade pode ser ainda mais afetada na presença de dependência de recursos, pois o desenvolvedor deve raciocinar sobre diferentes cenários que afetam a mesma variável. Nosso objetivo é entender como a dependência de recursos afeta a compreensibilidade do código-fonte de sistemas configuráveis. Realizamos quatro estudos empíricos complementares. No Estudo 1, quarenta e seis desenvolvedores responderam a um experimento online. Eles realizaram tarefas nas quais precisavam analisar programas contendo #ifdefs com e sem dependência de recursos. No entanto, as dependências de recursos podem ser de tipos diferentes, dependendo do escopo da variável compartilhada. No Estudo 1, não estávamos preocupados com diferentes tipos de dependência. Portanto, no Estudo 2, realizamos um experimento no qual 30 desenvolvedores depuraram programas com diferentes tipos de dependência de recursos. Cada programa incluía um tipo diferente de dependência de recursos: global, intraprocedural ou interprocedural. Usamos um dispositivo de rastreamento ocular para gravar os movimentos do olhar dos desenvolvedores enquanto depuravam programas. No entanto, as dependências de recursos não diferem apenas em termos de tipos. Elas também podem apresentar diferenças em termos de número de variáveis dependentes e grau de variabilidade, entre outros. Para abordar essas características, complementamos os Estudos 1 e 2 por meio dos Estudos 3 e 4. No Estudo 3, realizamos um experimento controlado com 12 participantes que analisaram programas com diferentes números de variáveis dependentes e número de usos de variáveis dependentes. No Estudo 4, conduzimos um experimento no qual 12 desenvolvedores analisaram programas com diferentes graus de variabilidade. Nossos resultados mostram que: (i) analisar programas contendo #ifdefs e dependência de recursos exigiu mais tempo do que programas contendo #ifdefs, mas sem dependência de recursos, (ii) depurar programas com #ifdefs e dependência global ou interprocedural exigiu mais tempo e esforço visual do que programas com dependência intraprocedural, (iii) quanto maior o número de variáveis dependentes, mais difícil foi entender programas com dependência de recursos, e (iv) o grau de variabilidade não afetou a compreensibilidade de programas com dependência de recursos. Em resumo, nossos estudos mostraram que #ifdefs afetaram a compreensibilidade de sistemas configuráveis em diferentes graus, dependendo da presença ou não de dependência de recursos, do tipo de dependência de recursos e do número de variáveis dependentes. |
publishDate |
2023 |
dc.date.accessioned.fl_str_mv |
2023-12-15T13:01:24Z |
dc.date.available.fl_str_mv |
2023-12-15T13:01:24Z |
dc.date.issued.fl_str_mv |
2023-03-28 |
dc.type.driver.fl_str_mv |
Doutorado info:eu-repo/semantics/doctoralThesis |
dc.type.status.fl_str_mv |
info:eu-repo/semantics/publishedVersion |
format |
doctoralThesis |
status_str |
publishedVersion |
dc.identifier.citation.fl_str_mv |
SANTOS, Djan Almeida. Comprehensibility of source code with feature dependency in configurable systems. 2023. 136 f. Tese (Doutorado em Ciência da Computação) - Instituto de Computação, Universidade Federal da Bahia, Salvador (Bahia), 2023. |
dc.identifier.uri.fl_str_mv |
https://repositorio.ufba.br/handle/ri/38694 |
identifier_str_mv |
SANTOS, Djan Almeida. Comprehensibility of source code with feature dependency in configurable systems. 2023. 136 f. Tese (Doutorado em Ciência da Computação) - Instituto de Computação, Universidade Federal da Bahia, Salvador (Bahia), 2023. |
url |
https://repositorio.ufba.br/handle/ri/38694 |
dc.language.iso.fl_str_mv |
eng |
language |
eng |
dc.rights.driver.fl_str_mv |
Attribution 3.0 Brazil http://creativecommons.org/licenses/by/3.0/br/ info:eu-repo/semantics/openAccess |
rights_invalid_str_mv |
Attribution 3.0 Brazil http://creativecommons.org/licenses/by/3.0/br/ |
eu_rights_str_mv |
openAccess |
dc.publisher.none.fl_str_mv |
Universidade Federal da Bahia |
dc.publisher.program.fl_str_mv |
Programa de Pós-Graduação em Ciência da Computação (PGCOMP) |
dc.publisher.initials.fl_str_mv |
UFBA |
dc.publisher.country.fl_str_mv |
Brasil |
dc.publisher.department.fl_str_mv |
Instituto de Computação - IC |
publisher.none.fl_str_mv |
Universidade Federal da Bahia |
dc.source.none.fl_str_mv |
reponame:Repositório Institucional da UFBA instname:Universidade Federal da Bahia (UFBA) instacron:UFBA |
instname_str |
Universidade Federal da Bahia (UFBA) |
instacron_str |
UFBA |
institution |
UFBA |
reponame_str |
Repositório Institucional da UFBA |
collection |
Repositório Institucional da UFBA |
bitstream.url.fl_str_mv |
https://repositorio.ufba.br/bitstream/ri/38694/1/PGCOMP-2023-Tese_Doutorado-Djan-Santos.pdf https://repositorio.ufba.br/bitstream/ri/38694/2/license_rdf https://repositorio.ufba.br/bitstream/ri/38694/3/license.txt https://repositorio.ufba.br/bitstream/ri/38694/4/PGCOMP-2023-Tese_Doutorado-Djan-Santos.pdf.txt |
bitstream.checksum.fl_str_mv |
49a7db4022e9a1658008a085a5b8da20 4d2950bda3d176f570a9f8b328dfbbef 67bf4f75790b0d8d38d8f112a48ad90b 7a17e0cb50f3fb4bbafb1e08bfafab92 |
bitstream.checksumAlgorithm.fl_str_mv |
MD5 MD5 MD5 MD5 |
repository.name.fl_str_mv |
Repositório Institucional da UFBA - Universidade Federal da Bahia (UFBA) |
repository.mail.fl_str_mv |
|
_version_ |
1808459687550517248 |