Recommending API Function Calls and Code Snippets to Support Software Development

Software development activity has reached a high degree of complexity, guided by the heterogeneity of the components, data sources, and tasks. The proliferation of open-source software (OSS) repositories has stressed the need to reuse available software artifacts efficiently. To this aim, it is nece...

Ausführliche Beschreibung

Gespeichert in:
Bibliographische Detailangaben
Veröffentlicht in:IEEE transactions on software engineering 2022-07, Vol.48 (7), p.2417-2438
Hauptverfasser: Nguyen, Phuong T., Di Rocco, Juri, Di Sipio, Claudio, Di Ruscio, Davide, Di Penta, Massimiliano
Format: Artikel
Sprache:eng
Schlagworte:
Online-Zugang:Volltext bestellen
Tags: Tag hinzufügen
Keine Tags, Fügen Sie den ersten Tag hinzu!
container_end_page 2438
container_issue 7
container_start_page 2417
container_title IEEE transactions on software engineering
container_volume 48
creator Nguyen, Phuong T.
Di Rocco, Juri
Di Sipio, Claudio
Di Ruscio, Davide
Di Penta, Massimiliano
description Software development activity has reached a high degree of complexity, guided by the heterogeneity of the components, data sources, and tasks. The proliferation of open-source software (OSS) repositories has stressed the need to reuse available software artifacts efficiently. To this aim, it is necessary to explore approaches to mine data from software repositories and leverage it to produce helpful recommendations. We designed and implemented FOCUS as a novel approach to provide developers with API calls and source code while they are programming. The system works on the basis of a context-aware collaborative filtering technique to extract API usages from OSS projects. In this work, we show the suitability of FOCUS for Android programming by evaluating it on a dataset of 2,600 mobile apps. The empirical evaluation results show that our approach outperforms two state-of-the-art API recommenders, UP-Miner and PAM, in terms of prediction accuracy. We also point out that there is no significant relationship between the categories for apps defined in Google Play and their API usages. Finally, we show that participants of a user study positively perceive the API and source code recommended by FOCUS as relevant to the current development context.
doi_str_mv 10.1109/TSE.2021.3059907
format Article
fullrecord <record><control><sourceid>proquest_RIE</sourceid><recordid>TN_cdi_proquest_journals_2689808337</recordid><sourceformat>XML</sourceformat><sourcesystem>PC</sourcesystem><ieee_id>9359479</ieee_id><sourcerecordid>2689808337</sourcerecordid><originalsourceid>FETCH-LOGICAL-c291t-b9783e917bd658938ae967fabdc0e49084f8162f820f524e0177ffa6d1af1ad63</originalsourceid><addsrcrecordid>eNo9kN9LwzAUhYMoOKfvgi8BnztvkrZJHkfddDDwR-dzydob6eiamqaK_70dGz7dl--cc_kIuWUwYwz0wyZfzDhwNhOQaA3yjEyYFjoSCYdzMgHQKkoSpS_JVd_vACCRMpmQt3cs3X6PbVW3n3T-uqLLoS1D7VqamabpqWkrmrkKad7WXYehp8HRfOg65wPNnQ0_xiN9xG9sXDf2hGtyYU3T483pTsnHcrHJnqP1y9Mqm6-jkmsWoq2WSqBmclul41tCGdSptGZblYCxBhVbxVJuFQeb8BiBSWmtSStmLDNVKqbk_tjbefc1YB-KnRt8O04WPFVagRJCjhQcqdK7vvdoi87Xe-N_CwbFQVwxiisO4oqTuDFyd4zUiPiPa5HoWGrxB3aVaSQ</addsrcrecordid><sourcetype>Aggregation Database</sourcetype><iscdi>true</iscdi><recordtype>article</recordtype><pqid>2689808337</pqid></control><display><type>article</type><title>Recommending API Function Calls and Code Snippets to Support Software Development</title><source>IEEE Electronic Library (IEL)</source><creator>Nguyen, Phuong T. ; Di Rocco, Juri ; Di Sipio, Claudio ; Di Ruscio, Davide ; Di Penta, Massimiliano</creator><creatorcontrib>Nguyen, Phuong T. ; Di Rocco, Juri ; Di Sipio, Claudio ; Di Ruscio, Davide ; Di Penta, Massimiliano</creatorcontrib><description>Software development activity has reached a high degree of complexity, guided by the heterogeneity of the components, data sources, and tasks. The proliferation of open-source software (OSS) repositories has stressed the need to reuse available software artifacts efficiently. To this aim, it is necessary to explore approaches to mine data from software repositories and leverage it to produce helpful recommendations. We designed and implemented FOCUS as a novel approach to provide developers with API calls and source code while they are programming. The system works on the basis of a context-aware collaborative filtering technique to extract API usages from OSS projects. In this work, we show the suitability of FOCUS for Android programming by evaluating it on a dataset of 2,600 mobile apps. The empirical evaluation results show that our approach outperforms two state-of-the-art API recommenders, UP-Miner and PAM, in terms of prediction accuracy. We also point out that there is no significant relationship between the categories for apps defined in Google Play and their API usages. Finally, we show that participants of a user study positively perceive the API and source code recommended by FOCUS as relevant to the current development context.</description><identifier>ISSN: 0098-5589</identifier><identifier>EISSN: 1939-3520</identifier><identifier>DOI: 10.1109/TSE.2021.3059907</identifier><identifier>CODEN: IESEDJ</identifier><language>eng</language><publisher>New York: IEEE</publisher><subject>android programming ; API calls ; Application programming interface ; Applications programs ; Computer programming ; Context ; Data mining ; Documentation ; Heterogeneity ; Libraries ; Mobile computing ; Open source software ; Recommender systems ; Repositories ; Software development ; Software engineering ; Software reuse ; Source code ; source code recommendations ; Task analysis</subject><ispartof>IEEE transactions on software engineering, 2022-07, Vol.48 (7), p.2417-2438</ispartof><rights>Copyright IEEE Computer Society 2022</rights><lds50>peer_reviewed</lds50><woscitedreferencessubscribed>false</woscitedreferencessubscribed><citedby>FETCH-LOGICAL-c291t-b9783e917bd658938ae967fabdc0e49084f8162f820f524e0177ffa6d1af1ad63</citedby><cites>FETCH-LOGICAL-c291t-b9783e917bd658938ae967fabdc0e49084f8162f820f524e0177ffa6d1af1ad63</cites><orcidid>0000-0002-3666-4162 ; 0000-0002-0340-9747 ; 0000-0002-5077-6793 ; 0000-0002-7909-3902</orcidid></display><links><openurl>$$Topenurl_article</openurl><openurlfulltext>$$Topenurlfull_article</openurlfulltext><thumbnail>$$Tsyndetics_thumb_exl</thumbnail><linktohtml>$$Uhttps://ieeexplore.ieee.org/document/9359479$$EHTML$$P50$$Gieee$$H</linktohtml><link.rule.ids>314,776,780,792,27903,27904,54737</link.rule.ids><linktorsrc>$$Uhttps://ieeexplore.ieee.org/document/9359479$$EView_record_in_IEEE$$FView_record_in_$$GIEEE</linktorsrc></links><search><creatorcontrib>Nguyen, Phuong T.</creatorcontrib><creatorcontrib>Di Rocco, Juri</creatorcontrib><creatorcontrib>Di Sipio, Claudio</creatorcontrib><creatorcontrib>Di Ruscio, Davide</creatorcontrib><creatorcontrib>Di Penta, Massimiliano</creatorcontrib><title>Recommending API Function Calls and Code Snippets to Support Software Development</title><title>IEEE transactions on software engineering</title><addtitle>TSE</addtitle><description>Software development activity has reached a high degree of complexity, guided by the heterogeneity of the components, data sources, and tasks. The proliferation of open-source software (OSS) repositories has stressed the need to reuse available software artifacts efficiently. To this aim, it is necessary to explore approaches to mine data from software repositories and leverage it to produce helpful recommendations. We designed and implemented FOCUS as a novel approach to provide developers with API calls and source code while they are programming. The system works on the basis of a context-aware collaborative filtering technique to extract API usages from OSS projects. In this work, we show the suitability of FOCUS for Android programming by evaluating it on a dataset of 2,600 mobile apps. The empirical evaluation results show that our approach outperforms two state-of-the-art API recommenders, UP-Miner and PAM, in terms of prediction accuracy. We also point out that there is no significant relationship between the categories for apps defined in Google Play and their API usages. Finally, we show that participants of a user study positively perceive the API and source code recommended by FOCUS as relevant to the current development context.</description><subject>android programming</subject><subject>API calls</subject><subject>Application programming interface</subject><subject>Applications programs</subject><subject>Computer programming</subject><subject>Context</subject><subject>Data mining</subject><subject>Documentation</subject><subject>Heterogeneity</subject><subject>Libraries</subject><subject>Mobile computing</subject><subject>Open source software</subject><subject>Recommender systems</subject><subject>Repositories</subject><subject>Software development</subject><subject>Software engineering</subject><subject>Software reuse</subject><subject>Source code</subject><subject>source code recommendations</subject><subject>Task analysis</subject><issn>0098-5589</issn><issn>1939-3520</issn><fulltext>true</fulltext><rsrctype>article</rsrctype><creationdate>2022</creationdate><recordtype>article</recordtype><sourceid>RIE</sourceid><recordid>eNo9kN9LwzAUhYMoOKfvgi8BnztvkrZJHkfddDDwR-dzydob6eiamqaK_70dGz7dl--cc_kIuWUwYwz0wyZfzDhwNhOQaA3yjEyYFjoSCYdzMgHQKkoSpS_JVd_vACCRMpmQt3cs3X6PbVW3n3T-uqLLoS1D7VqamabpqWkrmrkKad7WXYehp8HRfOg65wPNnQ0_xiN9xG9sXDf2hGtyYU3T483pTsnHcrHJnqP1y9Mqm6-jkmsWoq2WSqBmclul41tCGdSptGZblYCxBhVbxVJuFQeb8BiBSWmtSStmLDNVKqbk_tjbefc1YB-KnRt8O04WPFVagRJCjhQcqdK7vvdoi87Xe-N_CwbFQVwxiisO4oqTuDFyd4zUiPiPa5HoWGrxB3aVaSQ</recordid><startdate>20220701</startdate><enddate>20220701</enddate><creator>Nguyen, Phuong T.</creator><creator>Di Rocco, Juri</creator><creator>Di Sipio, Claudio</creator><creator>Di Ruscio, Davide</creator><creator>Di Penta, Massimiliano</creator><general>IEEE</general><general>IEEE Computer Society</general><scope>97E</scope><scope>RIA</scope><scope>RIE</scope><scope>AAYXX</scope><scope>CITATION</scope><scope>JQ2</scope><scope>K9.</scope><orcidid>https://orcid.org/0000-0002-3666-4162</orcidid><orcidid>https://orcid.org/0000-0002-0340-9747</orcidid><orcidid>https://orcid.org/0000-0002-5077-6793</orcidid><orcidid>https://orcid.org/0000-0002-7909-3902</orcidid></search><sort><creationdate>20220701</creationdate><title>Recommending API Function Calls and Code Snippets to Support Software Development</title><author>Nguyen, Phuong T. ; Di Rocco, Juri ; Di Sipio, Claudio ; Di Ruscio, Davide ; Di Penta, Massimiliano</author></sort><facets><frbrtype>5</frbrtype><frbrgroupid>cdi_FETCH-LOGICAL-c291t-b9783e917bd658938ae967fabdc0e49084f8162f820f524e0177ffa6d1af1ad63</frbrgroupid><rsrctype>articles</rsrctype><prefilter>articles</prefilter><language>eng</language><creationdate>2022</creationdate><topic>android programming</topic><topic>API calls</topic><topic>Application programming interface</topic><topic>Applications programs</topic><topic>Computer programming</topic><topic>Context</topic><topic>Data mining</topic><topic>Documentation</topic><topic>Heterogeneity</topic><topic>Libraries</topic><topic>Mobile computing</topic><topic>Open source software</topic><topic>Recommender systems</topic><topic>Repositories</topic><topic>Software development</topic><topic>Software engineering</topic><topic>Software reuse</topic><topic>Source code</topic><topic>source code recommendations</topic><topic>Task analysis</topic><toplevel>peer_reviewed</toplevel><toplevel>online_resources</toplevel><creatorcontrib>Nguyen, Phuong T.</creatorcontrib><creatorcontrib>Di Rocco, Juri</creatorcontrib><creatorcontrib>Di Sipio, Claudio</creatorcontrib><creatorcontrib>Di Ruscio, Davide</creatorcontrib><creatorcontrib>Di Penta, Massimiliano</creatorcontrib><collection>IEEE All-Society Periodicals Package (ASPP) 2005-present</collection><collection>IEEE All-Society Periodicals Package (ASPP) 1998-Present</collection><collection>IEEE Electronic Library (IEL)</collection><collection>CrossRef</collection><collection>ProQuest Computer Science Collection</collection><collection>ProQuest Health &amp; Medical Complete (Alumni)</collection><jtitle>IEEE transactions on software engineering</jtitle></facets><delivery><delcategory>Remote Search Resource</delcategory><fulltext>fulltext_linktorsrc</fulltext></delivery><addata><au>Nguyen, Phuong T.</au><au>Di Rocco, Juri</au><au>Di Sipio, Claudio</au><au>Di Ruscio, Davide</au><au>Di Penta, Massimiliano</au><format>journal</format><genre>article</genre><ristype>JOUR</ristype><atitle>Recommending API Function Calls and Code Snippets to Support Software Development</atitle><jtitle>IEEE transactions on software engineering</jtitle><stitle>TSE</stitle><date>2022-07-01</date><risdate>2022</risdate><volume>48</volume><issue>7</issue><spage>2417</spage><epage>2438</epage><pages>2417-2438</pages><issn>0098-5589</issn><eissn>1939-3520</eissn><coden>IESEDJ</coden><abstract>Software development activity has reached a high degree of complexity, guided by the heterogeneity of the components, data sources, and tasks. The proliferation of open-source software (OSS) repositories has stressed the need to reuse available software artifacts efficiently. To this aim, it is necessary to explore approaches to mine data from software repositories and leverage it to produce helpful recommendations. We designed and implemented FOCUS as a novel approach to provide developers with API calls and source code while they are programming. The system works on the basis of a context-aware collaborative filtering technique to extract API usages from OSS projects. In this work, we show the suitability of FOCUS for Android programming by evaluating it on a dataset of 2,600 mobile apps. The empirical evaluation results show that our approach outperforms two state-of-the-art API recommenders, UP-Miner and PAM, in terms of prediction accuracy. We also point out that there is no significant relationship between the categories for apps defined in Google Play and their API usages. Finally, we show that participants of a user study positively perceive the API and source code recommended by FOCUS as relevant to the current development context.</abstract><cop>New York</cop><pub>IEEE</pub><doi>10.1109/TSE.2021.3059907</doi><tpages>22</tpages><orcidid>https://orcid.org/0000-0002-3666-4162</orcidid><orcidid>https://orcid.org/0000-0002-0340-9747</orcidid><orcidid>https://orcid.org/0000-0002-5077-6793</orcidid><orcidid>https://orcid.org/0000-0002-7909-3902</orcidid></addata></record>
fulltext fulltext_linktorsrc
identifier ISSN: 0098-5589
ispartof IEEE transactions on software engineering, 2022-07, Vol.48 (7), p.2417-2438
issn 0098-5589
1939-3520
language eng
recordid cdi_proquest_journals_2689808337
source IEEE Electronic Library (IEL)
subjects android programming
API calls
Application programming interface
Applications programs
Computer programming
Context
Data mining
Documentation
Heterogeneity
Libraries
Mobile computing
Open source software
Recommender systems
Repositories
Software development
Software engineering
Software reuse
Source code
source code recommendations
Task analysis
title Recommending API Function Calls and Code Snippets to Support Software Development
url https://sfx.bib-bvb.de/sfx_tum?ctx_ver=Z39.88-2004&ctx_enc=info:ofi/enc:UTF-8&ctx_tim=2025-01-21T15%3A11%3A38IST&url_ver=Z39.88-2004&url_ctx_fmt=infofi/fmt:kev:mtx:ctx&rfr_id=info:sid/primo.exlibrisgroup.com:primo3-Article-proquest_RIE&rft_val_fmt=info:ofi/fmt:kev:mtx:journal&rft.genre=article&rft.atitle=Recommending%20API%20Function%20Calls%20and%20Code%20Snippets%20to%20Support%20Software%20Development&rft.jtitle=IEEE%20transactions%20on%20software%20engineering&rft.au=Nguyen,%20Phuong%20T.&rft.date=2022-07-01&rft.volume=48&rft.issue=7&rft.spage=2417&rft.epage=2438&rft.pages=2417-2438&rft.issn=0098-5589&rft.eissn=1939-3520&rft.coden=IESEDJ&rft_id=info:doi/10.1109/TSE.2021.3059907&rft_dat=%3Cproquest_RIE%3E2689808337%3C/proquest_RIE%3E%3Curl%3E%3C/url%3E&disable_directlink=true&sfx.directlink=off&sfx.report_link=0&rft_id=info:oai/&rft_pqid=2689808337&rft_id=info:pmid/&rft_ieee_id=9359479&rfr_iscdi=true