@InProceedings{PintoGuer:2016:SoReCo,
author = "Pinto, Gabriel Amboss and Guerra, Eduardo Martins",
affiliation = "{Instituto Tecnol{\'o}gico de Aeron{\'a}utica (ITA)} and
{Instituto Nacional de Pesquisas Espaciais (INPE)}",
title = "Solu{\c{c}}{\~a}o reutiliz{\'a}vel para consumo de
anota{\c{c}}{\~o}es de c{\'o}digo",
year = "2016",
organization = "Semin{\'a}rio de Inicia{\c{c}}{\~a}o Cient{\'{\i}}fica e
Inicia{\c{c}}{\~a}o em Desenvolvimento Tecnol{\'o}gico e
Inova{\c{c}}{\~a}o (SICINPE)",
publisher = "Instituto Nacional de Pesquisas Espaciais",
address = "S{\~a}o Jos{\'e} dos Campos, SP",
note = "{Bolsa PIBIC/INPE/CNPq}",
abstract = "Existem situa{\c{c}}{\~o}es em que se deseja modificar o
comportamento de um software durante runtime, seja para fazer algo
que orienta{\c{c}}{\~a}o {\`a} objeto n{\~a}o {\'e} capaz,
seja para simplesmente reduzir a quantidade de c{\'o}digo similar
que teria que ser replicado diversas vezes para atingir uma
funcionalidade espec{\'{\i}}fica. Nesses casos {\'e}
necess{\'a}rio o uso de reflex{\~a}o de c{\'o}digo, que
essencialmente {\'e} a capacidade de um software poder se
observar e modificar seu comportamento atrav{\'e}s de
introspec{\c{c}}{\~a}o. Utilizando anota{\c{c}}{\~o}es {\'e}
poss{\'{\i}}vel manipular inst{\^a}ncias de objetos e interagir
com classes que n{\~a}o possuem uma estrutura previamente
conhecida. Para utilizar reflex{\~a}o em JAVA, utiliza-se a API
Reflection, do pacote java.lang.reflect. No entanto, essa
biblioteca n{\~a}o possui ferramentas adequadas para consumo e
armazenamento de anota{\c{c}}{\~o}es, dificultando a
programa{\c{c}}{\~a}o reflexiva simples e eficiente. O objetivo
da Inicia{\c{c}}{\~a}o Cient{\'{\i}}fica {\'e}, ent{\~a}o,
construir um container de metadados para consumir, armazenar e
processar anota{\c{c}}{\~o}es feitas pelos programadores. Isso
facilitar{\'a} o uso customis{\'a}vel de uma framework (baseada
em metadados) feita especificamente para as necessidades
espec{\'{\i}}ficas do sistema sendo desenvolvido. Tal container
ser{\'a} capaz, em seu estado final, de analisar estruturas em um
c{\'o}digo dado (sejam elas metadados, como
anota{\c{c}}{\~o}es, ou conceitos mais tradicionais como
m{\'e}todos e par{\^a}metros) e tratar do funcionamento de
par{\^a}metros e m{\'e}todos anotados segundo a l{\'o}gica
especificada por quem est{\'a} utilizando essa API de
meta-framework. Resultados do projeto ser{\~a}o adicionados
{\`a} Framework Esfinge
(http://esfinge.sourceforge.net/Oprojeto.html) sob a categoria
Metadata. As ferramentas desenvolvidas ser{\~a}o ultimamente
utilizadas em outros grupos, como o Gamification, para o
desenvolvimento de dados como trof{\'e}us ou moedas que
ser{\~a}o concedidas {\`a} programadores por realizarem certas
tarefas como refatora{\c{c}}{\~a}o ou confec{\c{c}}{\~a}o de
testes. {\'E} importante o uso de metadados para essa atividade
para separar o c{\'o}digo do programa sendo feito e o c{\'o}digo
referente {\`a}s atividades de gamification, evitando assim
c{\'o}digo confuso e de baixa qualidade.",
conference-location = "S{\~a}o Jos{\'e} dos Campos, SP",
conference-year = "25-26 jul.",
language = "pt",
ibi = "8JMKD3MGP3W34P/3N5E6A2",
url = "http://urlib.net/ibi/8JMKD3MGP3W34P/3N5E6A2",
targetfile = "Pinto_solucao.pdf",
urlaccessdate = "25 abr. 2024"
}