API recommendation system in Software Engineering

Detalhes bibliográficos
Ano de defesa: 2016
Autor(a) principal: Ramírez, Luisa Fernanda Hernández lattes
Orientador(a): Costa, Heitor Augustus Xavier
Banca de defesa: Valente, Marco Túlio de Oliveira, Freire, André Pimenta, Parreira Júnior, Paulo Afonso
Tipo de documento: Dissertação
Tipo de acesso: Acesso aberto
Idioma: eng
Instituição de defesa: Universidade Federal de Lavras
Programa de Pós-Graduação: Programa de Pós-Graduação em Ciência da Computação
Departamento: Departamento de Ciência da Computação
País: brasil
Palavras-chave em Português:
Área do conhecimento CNPq:
Link de acesso: https://repositorio.ufla.br/handle/1/11145
Resumo: Desenvolvimento de software depende Interfaces de Programação de Aplicações (APIs - Aplication Programming Interfaces) para atingir seus objetivos. No entanto, a escolha correta dessas APIs permanece como uma tarefa difícil para Engenheiros de Software. Na Engenharia de Software, os sistemas de recomendação estão surgindo para apoiar aos Engenheiros de Software nas tarefas de tomadas de decisões. Portanto, neste trabalho foi proposta uma metodologia que considera categorias de sistemas de software e recomenda APIs para engenheiros de Software com sistemas na etapa inicial (sistemas que não usam APIs) ou na etapa avançada (sistemas que usam algumas APIs) de desenvolvimento de software. As técnicas de Filtragem Colaborativa (CF -Collaborative Filtering) e de Mineração de Itens mais Frequentes (FIS - Frequent Itemset mining) foram utilizadas para gerar as listas longas e curtas (top-N) das APIs recomendadas. Nas listas curtas (top-N), o objetivo foi encontrar um número N de APIs especificas que possivelmente seriam mais uteis para os Engenheiros de Software. Para automatizar essa metodologia proposta foi desenvolvido um plug-in para a plataforma Eclipse. Além disso, a metodologia foi testada considerando as categorias do repositório de código aberto SourceForge. Para cada categoria, foi avaliado o desempenho das listas longas e listas curtas (top-N) usando duas métricas de acurácia (precision e recall) e uma métrica de eficácia (recall rate), obtendo resultados prometedores. Esses resultados das métricas de avaliação mostraram que a metodologia conseguiu fazer recomendações de APIs uteis para os Engenheiros de Software com sistemas de software que usavam algumas APIs o que não utilizavam APIs. Do mesmo modo, a metodologia foi capaz de colocar APIs relevantes em posições altas das listas, inclusive nas listas curtas de APIs recomendadas.
id UFLA_05a5b1306ca5506efe92b046a9d00dbc
oai_identifier_str oai:repositorio.ufla.br:1/11145
network_acronym_str UFLA
network_name_str Repositório Institucional da UFLA
repository_id_str
spelling 2016-05-12T19:22:26Z2016-05-12T19:22:26Z2016-05-122016-03-21HERNÁNDEZ RAMÍREZ, L. F. API recommendation system in Software Engineering. 2016. 223 p. Dissertação (Mestrado em Ciência da Computação)-Universidade Federal de Lavras, Lavras, 2016.https://repositorio.ufla.br/handle/1/11145Desenvolvimento de software depende Interfaces de Programação de Aplicações (APIs - Aplication Programming Interfaces) para atingir seus objetivos. No entanto, a escolha correta dessas APIs permanece como uma tarefa difícil para Engenheiros de Software. Na Engenharia de Software, os sistemas de recomendação estão surgindo para apoiar aos Engenheiros de Software nas tarefas de tomadas de decisões. Portanto, neste trabalho foi proposta uma metodologia que considera categorias de sistemas de software e recomenda APIs para engenheiros de Software com sistemas na etapa inicial (sistemas que não usam APIs) ou na etapa avançada (sistemas que usam algumas APIs) de desenvolvimento de software. As técnicas de Filtragem Colaborativa (CF -Collaborative Filtering) e de Mineração de Itens mais Frequentes (FIS - Frequent Itemset mining) foram utilizadas para gerar as listas longas e curtas (top-N) das APIs recomendadas. Nas listas curtas (top-N), o objetivo foi encontrar um número N de APIs especificas que possivelmente seriam mais uteis para os Engenheiros de Software. Para automatizar essa metodologia proposta foi desenvolvido um plug-in para a plataforma Eclipse. Além disso, a metodologia foi testada considerando as categorias do repositório de código aberto SourceForge. Para cada categoria, foi avaliado o desempenho das listas longas e listas curtas (top-N) usando duas métricas de acurácia (precision e recall) e uma métrica de eficácia (recall rate), obtendo resultados prometedores. Esses resultados das métricas de avaliação mostraram que a metodologia conseguiu fazer recomendações de APIs uteis para os Engenheiros de Software com sistemas de software que usavam algumas APIs o que não utilizavam APIs. Do mesmo modo, a metodologia foi capaz de colocar APIs relevantes em posições altas das listas, inclusive nas listas curtas de APIs recomendadas.Software development depends on Application Programming Interfaces (APIs) to achieve their goals. However, choosing the right APIs remains as a difficult task for Software Engineers. In software engineering, recommendation systems are emerging to support Software Engineers in their decision-making tasks. Therefore, in this work, we proposed a methodology that considers software categories and recommends APIs to Software Engineers with software in initial (not using APIs) or advanced (using some APIs) stage of software development. We used collaborative filtering technique along with frequent Itemset mining technique for generating the corresponding large and top-N lists of APIs recommended. In the top-N lists, the goal was to find a few specific APIs that are supposed to be most useful to Software Engineers. In order to automate the methodology proposed, we developed a plug-in for the Eclipse IDE. In addition, we tested the methodology considering categories from the SourceForge open source repository. For every category, we evaluated large and top-N lists performance based on two classification accuracy metrics (precision and recall) and one efficacy metric (recall rate), obtaining promising outcomes. Thus, the results of evaluation metrics showed that our methodology could make useful API recommendations for Software Engineers with software that used a small number of APIs or did not use any API. Besides, our methodology was able to put relevant APIs even in high-ranking positions, even in small top-N lists of APIs recommended.Coordenação de Aperfeiçoamento de Pessoal de Nível Superior (CAPES)Universidade Federal de LavrasPrograma de Pós-Graduação em Ciência da ComputaçãoUFLAbrasilDepartamento de Ciência da ComputaçãoEngenharia de SoftwareAPI recommendationCollaborative filteringFrequent itemset miningEvaluation metricsRecommendation systemRecomendação de APIsFiltragem colaborativoMineração de itens mais frequentesMétricas de avaliaçãoSistema de recomendaçãoAPI recommendation system in Software EngineeringSistema de recomendação de API na engenharia de softwareinfo:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/masterThesisCosta, Heitor Augustus XavierValente, Marco Túlio de OliveiraFreire, André PimentaParreira Júnior, Paulo Afonsohttp://lattes.cnpq.br/6599600733639808Ramírez, Luisa Fernanda Hernándezinfo:eu-repo/semantics/openAccessengreponame:Repositório Institucional da UFLAinstname:Universidade Federal de Lavras (UFLA)instacron:UFLAORIGINALDISSERTAÇÃO_API recommendation system in Software Engineering.pdfDISSERTAÇÃO_API recommendation system in Software Engineering.pdfapplication/pdf2598133https://repositorio.ufla.br/bitstreams/4fea99d1-ceac-422c-9178-3d634e84d8db/downloadb68d199e6e718c998e663eab145c649bMD51trueAnonymousREADLICENSElicense.txtlicense.txttext/plain; charset=utf-8953https://repositorio.ufla.br/bitstreams/8a71087b-1d5b-469a-a278-644f2103ad92/download760884c1e72224de569e74f79eb87ce3MD52falseAnonymousREADTEXTDISSERTAÇÃO_API recommendation system in Software Engineering.pdf.txtDISSERTAÇÃO_API recommendation system in Software Engineering.pdf.txtExtracted texttext/plain100539https://repositorio.ufla.br/bitstreams/2db644d1-4305-4f23-8852-ec34b769c126/downloada7aeebe095bab93263d524fe012017b4MD53falseAnonymousREADTHUMBNAILDISSERTAÇÃO_API recommendation system in Software Engineering.pdf.jpgDISSERTAÇÃO_API recommendation system in Software Engineering.pdf.jpgGenerated Thumbnailimage/jpeg2837https://repositorio.ufla.br/bitstreams/fddd870d-a191-4223-a73d-f8b5f6ceea83/downloadb744fbe9f8f43fa1a6f60e9d0d3c4cfdMD54falseAnonymousREAD1/111452025-10-02 16:49:40.309open.accessoai:repositorio.ufla.br:1/11145https://repositorio.ufla.brRepositório InstitucionalPUBhttps://repositorio.ufla.br/server/oai/requestnivaldo@ufla.br || repositorio.biblioteca@ufla.bropendoar:2025-10-02T19:49:40Repositório Institucional da UFLA - Universidade Federal de Lavras (UFLA)falseREVDTEFSQcOHw4NPIERFIERJU1RSSUJVScOHw4NPIE7Dg08tRVhDTFVTSVZBCk8gcmVmZXJpZG8gYXV0b3I6CmEpIERlY2xhcmEgcXVlIG8gZG9jdW1lbnRvIGVudHJlZ3VlIMOpIHNldSB0cmFiYWxobyBvcmlnaW5hbCwgZSBxdWUKZGV0w6ltIG8gZGlyZWl0byBkZSBjb25jZWRlciBvcyBkaXJlaXRvcyBjb250aWRvcyBuZXN0YSBsaWNlbsOnYS4KRGVjbGFyYSB0YW1iw6ltIHF1ZSBhIGVudHJlZ2EgZG8gZG9jdW1lbnRvIG7Do28gaW5mcmluZ2UsIHRhbnRvIHF1YW50bwpsaGUgw6kgcG9zc8OtdmVsIHNhYmVyLCBvcyBkaXJlaXRvcyBkZSBxdWFscXVlciBvdXRyYSBwZXNzb2Egb3UKZW50aWRhZGUuCmIpIFNlIG8gZG9jdW1lbnRvIGVudHJlZ3VlIGNvbnTDqW0gbWF0ZXJpYWwgZG8gcXVhbCBuw6NvIGRldMOpbSBvcwpkaXJlaXRvcyBkZSBhdXRvciwgZGVjbGFyYSBxdWUgb2J0ZXZlIGF1dG9yaXphw6fDo28gZG8gZGV0ZW50b3IgZG9zCmRpcmVpdG9zIGRlIGF1dG9yIHBhcmEgY29uY2VkZXIgw6AgVW5pdmVyc2lkYWRlIEZlZGVyYWwgZGUgTGF2cmFzIG9zCmRpcmVpdG9zIHJlcXVlcmlkb3MgcG9yIGVzdGEgbGljZW7Dp2EsIGUgcXVlIGVzc2UgbWF0ZXJpYWwgY3Vqb3MKZGlyZWl0b3Mgc8OjbyBkZSB0ZXJjZWlyb3MgZXN0w6EgY2xhcmFtZW50ZSBpZGVudGlmaWNhZG8gZSByZWNvbmhlY2lkbwpubyB0ZXh0byBvdSBjb250ZcO6ZG8gZG8gZG9jdW1lbnRvIGVudHJlZ3VlLiBTZSBvIGRvY3VtZW50byBlbnRyZWd1ZSDDqQpiYXNlYWRvIGVtIHRyYWJhbGhvIGZpbmFuY2lhZG8gb3UgYXBvaWFkbyBwb3Igb3V0cmEgaW5zdGl0dWnDp8OjbyBxdWUKbsOjbyBhIFVuaXZlcnNpZGFkZSBGZWRlcmFsIGRlIExhdnJhcywgZGVjbGFyYSBxdWUgY3VtcHJpdSBxdWFpc3F1ZXIKb2JyaWdhw6fDtWVzIGV4aWdpZGFzIHBlbG8gcmVzcGVjdGl2byBjb250cmF0byBvdSBhY29yZG8uCgo=
dc.title.pt_BR.fl_str_mv API recommendation system in Software Engineering
dc.title.alternative.pt_BR.fl_str_mv Sistema de recomendação de API na engenharia de software
title API recommendation system in Software Engineering
spellingShingle API recommendation system in Software Engineering
Ramírez, Luisa Fernanda Hernández
Engenharia de Software
API recommendation
Collaborative filtering
Frequent itemset mining
Evaluation metrics
Recommendation system
Recomendação de APIs
Filtragem colaborativo
Mineração de itens mais frequentes
Métricas de avaliação
Sistema de recomendação
title_short API recommendation system in Software Engineering
title_full API recommendation system in Software Engineering
title_fullStr API recommendation system in Software Engineering
title_full_unstemmed API recommendation system in Software Engineering
title_sort API recommendation system in Software Engineering
author Ramírez, Luisa Fernanda Hernández
author_facet Ramírez, Luisa Fernanda Hernández
author_role author
dc.contributor.advisor1.fl_str_mv Costa, Heitor Augustus Xavier
dc.contributor.referee1.fl_str_mv Valente, Marco Túlio de Oliveira
dc.contributor.referee2.fl_str_mv Freire, André Pimenta
dc.contributor.referee3.fl_str_mv Parreira Júnior, Paulo Afonso
dc.contributor.authorLattes.fl_str_mv http://lattes.cnpq.br/6599600733639808
dc.contributor.author.fl_str_mv Ramírez, Luisa Fernanda Hernández
contributor_str_mv Costa, Heitor Augustus Xavier
Valente, Marco Túlio de Oliveira
Freire, André Pimenta
Parreira Júnior, Paulo Afonso
dc.subject.cnpq.fl_str_mv Engenharia de Software
topic Engenharia de Software
API recommendation
Collaborative filtering
Frequent itemset mining
Evaluation metrics
Recommendation system
Recomendação de APIs
Filtragem colaborativo
Mineração de itens mais frequentes
Métricas de avaliação
Sistema de recomendação
dc.subject.por.fl_str_mv API recommendation
Collaborative filtering
Frequent itemset mining
Evaluation metrics
Recommendation system
Recomendação de APIs
Filtragem colaborativo
Mineração de itens mais frequentes
Métricas de avaliação
Sistema de recomendação
description Desenvolvimento de software depende Interfaces de Programação de Aplicações (APIs - Aplication Programming Interfaces) para atingir seus objetivos. No entanto, a escolha correta dessas APIs permanece como uma tarefa difícil para Engenheiros de Software. Na Engenharia de Software, os sistemas de recomendação estão surgindo para apoiar aos Engenheiros de Software nas tarefas de tomadas de decisões. Portanto, neste trabalho foi proposta uma metodologia que considera categorias de sistemas de software e recomenda APIs para engenheiros de Software com sistemas na etapa inicial (sistemas que não usam APIs) ou na etapa avançada (sistemas que usam algumas APIs) de desenvolvimento de software. As técnicas de Filtragem Colaborativa (CF -Collaborative Filtering) e de Mineração de Itens mais Frequentes (FIS - Frequent Itemset mining) foram utilizadas para gerar as listas longas e curtas (top-N) das APIs recomendadas. Nas listas curtas (top-N), o objetivo foi encontrar um número N de APIs especificas que possivelmente seriam mais uteis para os Engenheiros de Software. Para automatizar essa metodologia proposta foi desenvolvido um plug-in para a plataforma Eclipse. Além disso, a metodologia foi testada considerando as categorias do repositório de código aberto SourceForge. Para cada categoria, foi avaliado o desempenho das listas longas e listas curtas (top-N) usando duas métricas de acurácia (precision e recall) e uma métrica de eficácia (recall rate), obtendo resultados prometedores. Esses resultados das métricas de avaliação mostraram que a metodologia conseguiu fazer recomendações de APIs uteis para os Engenheiros de Software com sistemas de software que usavam algumas APIs o que não utilizavam APIs. Do mesmo modo, a metodologia foi capaz de colocar APIs relevantes em posições altas das listas, inclusive nas listas curtas de APIs recomendadas.
publishDate 2016
dc.date.submitted.none.fl_str_mv 2016-03-21
dc.date.accessioned.fl_str_mv 2016-05-12T19:22:26Z
dc.date.available.fl_str_mv 2016-05-12T19:22:26Z
dc.date.issued.fl_str_mv 2016-05-12
dc.type.status.fl_str_mv info:eu-repo/semantics/publishedVersion
dc.type.driver.fl_str_mv info:eu-repo/semantics/masterThesis
format masterThesis
status_str publishedVersion
dc.identifier.citation.fl_str_mv HERNÁNDEZ RAMÍREZ, L. F. API recommendation system in Software Engineering. 2016. 223 p. Dissertação (Mestrado em Ciência da Computação)-Universidade Federal de Lavras, Lavras, 2016.
dc.identifier.uri.fl_str_mv https://repositorio.ufla.br/handle/1/11145
identifier_str_mv HERNÁNDEZ RAMÍREZ, L. F. API recommendation system in Software Engineering. 2016. 223 p. Dissertação (Mestrado em Ciência da Computação)-Universidade Federal de Lavras, Lavras, 2016.
url https://repositorio.ufla.br/handle/1/11145
dc.language.iso.fl_str_mv eng
language eng
dc.rights.driver.fl_str_mv info:eu-repo/semantics/openAccess
eu_rights_str_mv openAccess
dc.publisher.none.fl_str_mv Universidade Federal de Lavras
dc.publisher.program.fl_str_mv Programa de Pós-Graduação em Ciência da Computação
dc.publisher.initials.fl_str_mv UFLA
dc.publisher.country.fl_str_mv brasil
dc.publisher.department.fl_str_mv Departamento de Ciência da Computação
publisher.none.fl_str_mv Universidade Federal de Lavras
dc.source.none.fl_str_mv reponame:Repositório Institucional da UFLA
instname:Universidade Federal de Lavras (UFLA)
instacron:UFLA
instname_str Universidade Federal de Lavras (UFLA)
instacron_str UFLA
institution UFLA
reponame_str Repositório Institucional da UFLA
collection Repositório Institucional da UFLA
bitstream.url.fl_str_mv https://repositorio.ufla.br/bitstreams/4fea99d1-ceac-422c-9178-3d634e84d8db/download
https://repositorio.ufla.br/bitstreams/8a71087b-1d5b-469a-a278-644f2103ad92/download
https://repositorio.ufla.br/bitstreams/2db644d1-4305-4f23-8852-ec34b769c126/download
https://repositorio.ufla.br/bitstreams/fddd870d-a191-4223-a73d-f8b5f6ceea83/download
bitstream.checksum.fl_str_mv b68d199e6e718c998e663eab145c649b
760884c1e72224de569e74f79eb87ce3
a7aeebe095bab93263d524fe012017b4
b744fbe9f8f43fa1a6f60e9d0d3c4cfd
bitstream.checksumAlgorithm.fl_str_mv MD5
MD5
MD5
MD5
repository.name.fl_str_mv Repositório Institucional da UFLA - Universidade Federal de Lavras (UFLA)
repository.mail.fl_str_mv nivaldo@ufla.br || repositorio.biblioteca@ufla.br
_version_ 1854947676787834880