@InProceedings{GuerraLiChNaSiLaMe:2020:CoSt,
author = "Guerra, Eduardo and Lima, Phyllipe and Choma, Joelma and Nardes,
Marco Augusto Ribeiro and Silva, Tiago and Lanza, Michele and
Meirelles, Paulo",
affiliation = "{Free University of Bozen-Bolzano} and {Instituto Nacional de
Telecomunica{\c{c}}{\~o}es (INATEL)} and {Instituto Nacional de
Pesquisas Espaciais (INPE)} and {Instituto Nacional de Pesquisas
Espaciais (INPE)} and {Universidade Federal de S{\~a}o Paulo
(UNIFESP)} and {University of Lugano} and {Universidade Federal de
S{\~a}o Paulo (UNIFESP)}",
title = "A Metadata Handling API for Framework Development: A Comparative
Study",
booktitle = "Proceedings...",
year = "2020",
pages = "499--505",
organization = "Brazilian Symposium on Software Engineering, 34.",
publisher = "Association for Computing Machinery",
abstract = "Frameworks play an essential role in software development,
providing not only code reuse, but also design reuse. Several Java
frameworks and APIs such as Spring, JPA, and CDI rely on the use
of metadata, mainly defined by code annotations. These frameworks
usually use the Java Reflection API to consume code annotations,
which only returns the annotations in a given code element. This
strategy, however, is far from the needs of a real framework. The
goal of this paper is to propose a novel API, named Esfinge
Metadata, to assist in the development of frameworks based on
metadata and applications based on custom annotations. Being based
on annotations itself, this new API uses them to map metadata to
class members. We carried out an experiment to evaluate our API
and its impact on aspects such as code structure, complexity, and
coupling, while also performing a comparison with the direct use
of the Java Reflection API. The participants implemented a
metadata-based framework based on realistic requirements in a
sequence of 10 tasks that took an average of nine hours. As a
result, participants that used our API maintained a more stable
code evolution, regarding complexity and coupling as opposed to
participants using the Java Reflection API, where the code metrics
evolution and structure vary greatly.",
conference-location = "Online",
conference-year = "21-23 Oct.",
doi = "10.1145/3422392.3422428",
url = "http://dx.doi.org/10.1145/3422392.3422428",
isbn = "978-145038753-8",
language = "en",
targetfile = "guerra_metadata.pdf",
urlaccessdate = "28 mar. 2024"
}