00 CAMPUS ARISTÓTELES CALAZANS SIMÕES (CAMPUS A. C. SIMÕES) IC - INSTITUTO DE COMPUTAÇÃO Dissertações e Teses defendidas na UFAL - IC
Use este identificador para citar ou linkar para este item: http://www.repositorio.ufal.br/jspui/handle/riufal/2517
Registro completo de metadados
Campo DCValorIdioma
dc.contributor.advisor1Ribeiro, Márcio de Medeiros-
dc.contributor.advisor1Latteshttp://lattes.cnpq.br/9300936571715992pt_BR
dc.contributor.referee1Pinto, Ig Ibert Bitterncourt Santana-
dc.contributor.referee1Latteshttp://lattes.cnpq.br/4038730280834132pt_BR
dc.contributor.referee2Gheyi, Rohit-
dc.contributor.referee2Latteshttp://lattes.cnpq.br/2931270888717344pt_BR
dc.creatorMalaquias, Romero Bezerra de Souza-
dc.creator.Latteshttp://lattes.cnpq.br/6327252956498202pt_BR
dc.date.accessioned2018-02-20T02:27:34Z-
dc.date.available2018-02-19-
dc.date.available2018-02-20T02:27:34Z-
dc.date.issued2017-10-09-
dc.identifier.citationMALAQUIAS, Romero Bezerra de Souza. A disciplinaridade das anotações condicionais de pré-processamento # ifdef TAG Não #endif importa. 2017. 79 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ó, 2017.pt_BR
dc.identifier.urihttp://www.repositorio.ufal.br/handle/riufal/2517-
dc.description.abstractThe C preprocessor is a simple, effective, and language-independent tool. Developers use the preprocessor in practice to deal with portability and variability issues. Despite the widespread usage, the C preprocessor suffers from severe criticism, such as negative effects on code understandability and maintainability. In particular, these problems may get worse when using undisciplined annotations, i.e., when a preprocessor directive encompasses only parts of C syntactical units. Nevertheless, despite the criticism and guidelines found in systems like Linux to avoid undisciplined annotations, the results of a previous controlled experiment indicated that the discipline of annotations has no influence on program comprehension and maintenance. To better understand whether developers care about the discipline of preprocessor-based annotations and whether they can really influence on maintenance tasks, in this work we conduct a mixed-method research involving three studies. In the first one we identify undisciplined annotations in 110 open source C/C++ systems of different domains, sizes, and popularity GitHub metrics. We then refactor the identified undisciplined annotations to make them disciplined. Right away, we submit pull requests with our suggestions. The majority of our pull requests have been accepted and are now merged. We reach a total acceptance rate of 71%. In the second study, we mined opensource repositories to find commits where the developer transforms undisciplined codes into disciplined ones. In that context, we found 90 transformations. Those transformations were classified in refactoring or not, and we contacted the responsible to ask why he did that code change. In the third study, we conduct a controlled experiment. We have several differences with respect to the aforementioned one, such as blocking of cofounding effects and more replicas. We have evidences that maintaining undisciplined annotations is more time consuming and error prone, representing a different result when compared to the previous experiment. Overall, we conclude that undisciplined annotations should not be neglected.pt_BR
dc.description.sponsorshipCoordenação de Aperfeiçoamento de Pessoal de Nível Superiorpt_BR
dc.languageporpt_BR
dc.publisherUniversidade Federal de Alagoaspt_BR
dc.publisher.countryBrasilpt_BR
dc.publisher.programPrograma de Pós-Graduação em Informáticapt_BR
dc.publisher.initialsUFALpt_BR
dc.rightsAcesso Abertopt_BR
dc.subjectEngenharia de softwarept_BR
dc.subjectDisciplinaridade das anotaçõespt_BR
dc.subjectIfdefspt_BR
dc.subjectCondicionais de compilação de códigospt_BR
dc.subjectCompiladores (Programas de computador)pt_BR
dc.subjectDiscipline of annotationspt_BR
dc.subjectConditional compilationpt_BR
dc.subject.cnpqCNPQ::CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAOpt_BR
dc.titleA disciplinaridade das anotações condicionais de pré-processamento #ifdef TAG Não #endif importapt_BR
dc.title.alternativeThe discipline of prepocessor-based annotations does #ifdef TAG n't #endif matterpt_BR
dc.typeDissertaçãopt_BR
dc.description.resumoO pré-processador do C é uma ferramenta simples, efetiva e independente de linguagem. Na prática o pré-processador é visto como uma solução para problemas de portabilidade e variabilidade. Para utilizá-lo, basta anotar trechos do código com diretivas condicionais. Estas definem se aquele trecho de código será incluído ou excluído. Apesar de ser largamente utilizado, o pré-processador é amplamente criticado. Seu uso é relacionado a impactos negativos na manutenibilidade e legibilidade do código. Em particular, esses problemas podem ser piores quando se utiliza anotações não disciplinadas. Contudo, um experimento controlado realizado anteriormente indicou que a disciplinaridade não afeta a manutenibilidade e a legibilidade do código. Esse resultado contradiz as críticas recebidas e alguns guias para desenvolvimento de código (como por exemplo as do Linux, que explicitamente pedem para que os desenvolvedores evitem anotações não disciplinadas). Um exemplo de anotação não disciplinada ocorre quando são anotadas apenas partes de unidades sintáticas do C. Dado este cenário, onde há uma divergência entre a prática e a teoria, existe a necessidade de se compreender melhor a importância dada por desenvolvedores à disciplinaridade das anotações condicionais e se ela de fato causa algum impacto no desenvolvimento de sistemas. Nesse trabalho conduziremos um método misto de pesquisa que envolve três estudos. O primeiro consiste em sugerir transformações de código não disciplinado em disciplinado para sistemas open source. Nesse contexto, identificamos 110 anotações não disciplinadas em sistemas C/C++ de código aberto no GitHub. Estes sistemas têm diferentes domínios, tamanhos e popularidades em métricas do GitHub. A partir disso, nós refatoramos as anotações identificadas para que se tornassem disciplinadas. Por fim, submetemos nossas sugestões através de pull requests. A maioria das refatorações foram aceitas e agora integram o código do sistemas. Foi conseguida uma taxa de aceitação de 71%. O segundo estudo consiste em minerar repositórios open-source buscando commits que contenham transformações de anotações não disciplinadas em disciplinadas. Foram encontradas 90 transformações. Estas, foram classificadas em refatoração ou não. Adicionalmente, entramos em contato com o desenvolvedor a fim de entender o que o motivou a realizar tal alteração. No terceiro estudo, foi conduzido um experimento controlado. Este tem várias diferenças em relação ao executado anteriormente, como o bloqueio a algumas variáveis de confusão e mais réplicas. De acordo com os resultados, temos evidências de que realizar manutenção em código com anotações não disciplinadas é uma tarefa com um custo maior de tempo e é mais propensa a erros que as mesmas tarefas na forma disciplinada. Essas evidências se contrapõem ao resultado encontrado no experimento anterior. De forma geral, nesse trabalho, foi concluído que a disciplinaridade das anotações não deve ser negligenciada.pt_BR
Aparece nas coleções:Dissertações e Teses defendidas na UFAL - IC

Arquivos associados a este item:
Arquivo Descrição TamanhoFormato 
A disciplinaridade das anotações condicionais de pré-processamento #ifdef TAG Não #endif importa.pdf3.24 MBAdobe PDFVisualizar/Abrir


Os itens no repositório estão protegidos por copyright, com todos os direitos reservados, salvo quando é indicado o contrário.