dc.contributorMarco Tulio de Oliveira Valente
dc.contributorAndre Cavalcante Hora
dc.contributorAndre Cavalcante Hora
dc.contributorEduardo Magno Lages Figueiredo
dc.contributorMarcelo de Almeida Maia
dc.creatorTamara Márcia Mendes
dc.date.accessioned2019-08-11T14:48:10Z
dc.date.accessioned2022-10-03T22:13:15Z
dc.date.available2019-08-11T14:48:10Z
dc.date.available2022-10-03T22:13:15Z
dc.date.created2019-08-11T14:48:10Z
dc.date.issued2016-08-11
dc.identifierhttp://hdl.handle.net/1843/ESBF-AEDQVV
dc.identifier.urihttp://repositorioslatinoamericanos.uchile.cl/handle/2250/3796197
dc.description.abstractUtility functions are functions that offer generic services such as data conversions, manipulation of dates and structures, among others and which are useful in many parts of a system. Ideally, they should be implemented in appropriate modules, to facilitate reuse. However, developers often implement utility functions in modules designed to contain specific purpose functions. Thus, this practice decreases opportunities of reuse, causing rework and duplicating code. Moving the utility function to a suitable module is a solution for this problem. However, this type of refactoring is not trivial for large system developers, due to the lack of supporting tools to identify such functions. To address this shortcoming, we proposed a set of heuristics to identifyutility functions. Initially, we investigate the use of machine learning to solve the proposed research problem. We conducted evaluations by project (intra-project) and using many projects (cross-project) in training and testing phases. This last approach is closer to a practical application scenario. Despite the classifier has showed excellentresults in intra-project evaluation, they were much lower in the cross-project scenario. Therefore, we proposed heuristics to identify utility functions, which can be computed by static analysis of Java and JavaScript source code, with no training phase. We obtained an average precision of 68% evaluating the proposed heuristics in four proprietarysystems of a Brazilian software development company. Furthermore, in a survey performed with 33 developers, we obtained a precision of 66% and 67%, respectively, for Java and JavaScript, considering a sample of open source systems functions from GitHub and Qualitas Corpus.
dc.publisherUniversidade Federal de Minas Gerais
dc.publisherUFMG
dc.rightsAcesso Aberto
dc.subjectArquitetura de Software
dc.subjectAprendizado de Máquina
dc.subjectRefatoração
dc.subjectFunções utilitárias
dc.subjectModularização
dc.titleIdentificação de funções utilitárias em Java e Javascript
dc.typeDissertação de Mestrado


Este ítem pertenece a la siguiente institución