Close

@PhDThesis{Francisco:2021:AsCoAn,
               author = "Francisco, Phyllipe de Souza Lima",
                title = "Assessing code annotations usage in software projects",
               school = "Instituto Nacional de Pesquisas Espaciais (INPE)",
                 year = "2021",
              address = "S{\~a}o Jos{\'e} dos Campos",
                month = "2021-09-16",
             keywords = "code annotations, software metric, software visualization, 
                         polymetric view, metadata, anota{\c{c}}{\~o}es, metadados, 
                         m{\'e}tricas de software, visualiza{\c{c}}{\~a}o de software, 
                         vis{\~a}o polim{\'e}trica.",
             abstract = "Code annotation is a language feature that enables the 
                         introduction of custom metadata on programming elements. In Java, 
                         this feature was introduced on version 5, and it is widely used by 
                         the leading enterprise application frameworks and APIs. Although 
                         very popular to simplify metadata configuration, software 
                         engineering lack research and experiments about them. Also, its 
                         abuse and misuse can reduce source code readability, comprehension 
                         and complicate its maintenance. Our work proposes an approach to 
                         assess code annotations usage and distribution in a software 
                         project to overcome this. We begin defining a novel suite of 
                         software metrics dedicated to code annotations. We analyzed their 
                         distribution in open-source projects by extracting their values 
                         from 24,947 java classes and obtaining threshold values.We also 
                         provided a way to interpret these threshold values using a 
                         percentile rank analysis, revealing outliers. Afterward, we 
                         proposed a novel polymetric view tailored specifically to 
                         visualize code annotations distribution and usage using our 
                         metrics as input. We named it CADV - Code Annotations Distribution 
                         Visualization. To validate the CADV, we conducted two experiments. 
                         The first was an interview with six professional developers from 
                         EMBRACE, and the second was conducted asynchronously with 44 
                         students through a form. As a target software, we used the 
                         SpaceWeather system. Our results show that the proposed 
                         visualization approach can aid developers and students in 
                         comprehending the distribution of code annotations, packages 
                         responsibilities and potentially detect misplaced ones. 
                         Furthermore, CADV provides a much quicker approach to identify 
                         code annotations and schemas when compared with manual code 
                         inspection. RESUMO: Anota{\c{c}}{\~o}es de c{\'o}digo s{\~a}o 
                         uma caracter{\'{\i}}stica de linguagem que permitem a 
                         configura{\c{c}}{\~a}o de metadados em elementos de 
                         programa{\c{c}}{\~a}o. Na linguagem Java, essa 
                         caracter{\'{\i}}stica foi introduzida na vers{\~a}o 5 e {\'e} 
                         utilizada por desenvolvedores de frameworks e APIs corporativas 
                         amplamente utilizadas. Mesmo que as anota{\c{c}}{\~o}es sejam 
                         muito populares para simplificar a configura{\c{c}}{\~a}o de 
                         metadados, a comunidade de engenharia de software possui poucos 
                         trabalhos que as investigam. Adicionalmente, o seu uso inadequado 
                         pode reduzir a legibilidade, compreens{\~a}o e comprometer a 
                         manuten{\c{c}}{\~a}o do sistema. Com isso, esse trabalho 
                         apresenta uma abordagem para avaliar o uso e 
                         distribui{\c{c}}{\~a}o de anota{\c{c}}{\~o}es em projetos 
                         Java. O primeiro passo foi definir um novo conjunto de 
                         m{\'e}tricas de c{\'o}digo fonte capaz de extrair 
                         caracter{\'{\i}}sticas das anota{\c{c}}{\~o}es usadas. Para 
                         validar as m{\'e}tricas, fizemos uma coleta em 25 projetos de 
                         c{\'o}digo aberto e foi poss{\'{\i}}vel observar como elas se 
                         comportam. Em seguida, com as m{\'e}tricas dispon{\'{\i}}veis, 
                         fizemos uma proposta de visualiza{\c{c}}{\~a}o polim{\'e}trica 
                         projetada para visualizar anota{\c{c}}{\~o}es de c{\'o}digo e 
                         como est{\~a}o distribu{\'{\i}}das. Para validar a 
                         visualiza{\c{c}}{\~a}o conduzimos dois experimentos. O primeiro 
                         foi feito com seis desenvolvedores que participaram da 
                         cria{\c{c}}{\~a}o do sistema SpaceWeather do EMBRACE, e o 
                         segundo foi conduzido com 44 alunos de gradua{\c{c}}{\~a}o. Os 
                         resultados mostraram que a visualiza{\c{c}}{\~a}o permite 
                         compreender rapidamente a distribui{\c{c}}{\~a}o das 
                         anota{\c{c}}{\~o}es e identificar as responsabilidades dos 
                         pacotes.",
            committee = "Stephany, Stephan (presidente) and Guerra, Eduardo Martins 
                         (orientador) and Meirelles, Paulo Roberto Miranda (orientador) and 
                         Queiroz, Gilberto Ribeiro de and Shiguemori, Elcio Hideiti and 
                         Valente, Marco Tulio and Sant’Anna, Cl{\'a}udio Nogueira",
         englishtitle = "Avaliando o uso de anota{\c{c}}{\~o}es de c{\'o}digo em 
                         projetos de software",
             language = "en",
                pages = "171",
                  ibi = "8JMKD3MGP3W34T/45DA8DH",
                  url = "http://urlib.net/ibi/8JMKD3MGP3W34T/45DA8DH",
           targetfile = "publicacao.pdf",
        urlaccessdate = "2024, Apr. 27"
}


Close