Nothing Special   »   [go: up one dir, main page]

skip to main content
research-article

APIUaaS: : a reference architecture for facilitating API usage from a data analytics perspective

Published: 01 October 2019 Publication History

Abstract

Source code examples are key resources for software developers to learn application programming interfaces (APIs) and to understand corresponding usage patterns. Developers usually have to utilise, evaluate and understand code examples from multiple sources, which involve heavy manually processing efforts. To reduce such efforts, there has been growing interest in developing source code mining and recommendation systems. This study proposes API usage as a service (APIUaaS), a reference architecture for facilitating API usage, which allows infrastructures to be built for recommending proper API code examples based on semi‐automatic data analytics. This reference architecture contains five logical layers and six global‐level architectural concerns. API queries are accepted from programmers, and corresponding code example candidates are extracted from the data sources layer. The detailed structural links between API elements and source codes are captured and stored in the data model & code assets layer. During the recommendation phase, API usages mining, clustering and ranking algorithms are enabled in the knowledge discover & intelligent model layer. Services such as code assist and bug detection are assembled in the API usage services layer. Finally, the authors evaluate APIUaaS from three perspectives: rationality, feasibility, and usability.

8 References

[1]
Ko, A.J., Myers, B., Aung, H.H.: ‘Six learning barriers in end-user programming systems’. IEEE Symp. on Visual Languages and Human Centric Computing, Rome, Italy, 2004, pp. 199–206
[2]
Robillard, M.P.: ‘What makes APIs hard to learn? Answers from developers’, IEEE Softw., 2009, 26, (6), pp. 27–34
[3]
Aeschlimann, M., Baumer, D., Lanneluc, J.: ‘Java tool Smithing – extending the eclipse java development tools’. Proc. 2nd EclipseCon, Burlingame, CA, USA, 2005
[4]
Mar, L.W., Wu, Y.C., Jiau, H.C.: ‘Recommending proper API code examples for documentation purpose’. 2011 18th Asia Pacific Software Engineering Conf. (APSEC), Ho Chi Minh, Vietnam, 2011, pp. 331–338
[5]
Wang, L., Fang, L., Wang, L., et al.: ‘APIExample: an effective web search based usage example recommendation system for Java APIs’. 2011 26th IEEE/ACM Int. Conf. on Automated Software Engineering (ASE), Oread, Lawrence, Kansas, USA, 2011, pp. 592–595
[6]
Moritz, E., Linares-Vasquez, M., Poshyvanyk, D., et al.: ‘Export: detecting and visualizing API usages in large source code repositories’. 2013 IEEE/ACM 28th Int. Conf. on Automated Software Engineering (ASE), Palo Alto, CA, USA, 2013, pp. 646–651
[7]
Sun, H., Zheng, Z., Chen, J., et al.: ‘Personalized open API recommendation in clouds via item-based collaborative filtering’. 2011 Fourth IEEE Int. Conf. on Utility and Cloud Computing (UCC), Melbourne, Australia, 2011, pp. 237–244
[8]
Zhong, H., Xie, T., Zhang, L., et al.: ‘MAPO: mining and recommending API usage patterns’. Proc. 23rd European Conf. on ECOOP 2009—Object-oriented Programming, Genoa, Italy, 2009, pp. 318–343
[9]
Bruch, M., Schäfer, T., Mezini, M.: ‘Fruit: IDE support for framework understanding’. Proc. 2006 OOPSLA Workshop on Eclipse Technology eXchange, Portland, Oregon, USA, 2006, pp. 55–59
[10]
Gergely, T., Hansen, S., Kolovos, D., et al.: ‘Developer-centric knowledge mining from large open-source software repositories (CROSSMINER)’. Software Technologies: Applications and Foundations: STAF 2017 Collocated Workshops, Marburg, Germany, 17–21 July 2017, Revised selected papers, vol. 10748 (Springer, 2018), p. 375
[11]
Saied, M.A., Abdeen, H., Benomar, O., et al.: ‘Could we infer unordered API usage patterns only using the library source code?’. 2015 IEEE 23rd Int. Conf. on Program Comprehension (ICPC), Florence, Italy, 2015, pp. 71–81
[12]
Saied, M.A., Benomar, O., Abdeen, H., et al.: ‘Mining multi-level API usage patterns’. 2015 IEEE 22nd Int. Conf. on Software Analysis, Evolution, and Reengineering (SANER), Montréal, Canada, 2015, pp. 23–32
[13]
Wang, J., Dang, Y., Zhang, H., et al.: ‘Mining succinct and high-coverage API usage patterns from source code’. 2013 10th IEEE Working Conf. on Mining Software Repositories (MSR), San Francisco, California, USA, 2013, pp. 319–328
[14]
Wu, Y.C., Mar, L.W., Jiau, H.C.: ‘Codocent: support API usage with code example and API documentation’. 2010 Fifth Int. Conf. on Software Engineering Advances (ICSEA), Nice, France, 2010, pp. 135–140
[15]
Beckwith, J., Doan, T., Joshi, V.R., et al.: ‘Multistep auto-completion model for software development environments’. US Patent 9,244,658, 26 January 2016
[16]
Stylos, J., Myers, B.A.: ‘Mica: a web-search tool for finding API components and examples’. Proc. Visual Languages and Human-Centric Computing, Brighton, UK, 2006, pp. 195–202
[17]
Zagalsky, A., Barzilay, O., Yehudai, A.: ‘Example overflow: using social media for code recommendation’. 2012 Third Int. Workshop on Recommendation Systems for Software Engineering (RSSE), Zurich, Switzerland, 2012, pp. 38–42
[18]
Rittinghouse, J.W., Ransome, J.F.: ‘Cloud computing: implementation, management, and security’ (CRC Press, Boca Raton, FL, USA, 2016)
[19]
Fahmy, S., Haslinda, N., Roslina, W., et al.: ‘Evaluating the quality of software in e-book using the ISO 9126 model’, Int. J. Control Autom., 2012, 5, (2), pp. 115–122
[20]
Bass, L.: ‘Software architecture in practice’ (Addison-Wesley Professional, Boston, MA, USA, 2003)
[21]
Garlan, D., Bachmann, F., Ivers, J., et al.: ‘Documenting software architectures: views and beyond’ (IEEE Computer Society, Los Alamitos, CA, USA 2010)
[22]
Chung, L., Nixon, B.A., Yu, E., et al.: ‘Non-functional requirements in software engineering’, vol. 5 (Springer Science & Business Media, Berlin, Germany, 2012)
[23]
Amann, S., Proksch, S., Mezini, M.: ‘Method-call recommendations from implicit developer feedback’. Proc. 1st Int. Workshop on Crowd-Sourcing in Software Engineering, Hyderabad, India, 2014, pp. 5–6
[24]
Pääkkönen, P., Pakkala, D.: ‘Reference architecture and classification of technologies, products and services for big data systems’, Big Data Res., 2015, 2, (4), pp. 166–186
[25]
Nguyen, A.T., Nguyen, T.T., Nguyen, H.A., et al.: ‘Graph-based pattern-oriented, context-sensitive source code completion’. Int. Conf. on Software Engineering, Zurich, Switzerland, 2012, pp. 69–79
[26]
Nguyen, T.T., Nguyen, H.A., Pham, N.H., et al.: ‘Graph-based mining of multiple object usage patterns’. Joint Meeting of the European Software Engineering Conf. & the ACM SIGSOFT Int. Symp. on Foundations of Software Engineering, Amsterdam, Netherlands, 2009
[27]
Ayres, J., Flannick, J., Gehrke, J., et al.: ‘Sequential pattern mining using a bitmap representation’. Proc. Eighth ACM SIGKDD Int. Conf. on Knowledge Discovery and Data Mining, Edmonton, Alberta, Canada, 2002, pp. 429–435
[28]
Thummalapenta, S., Xie, T.: ‘PARSEWeb: a programmer assistant for reusing open source code on the web’. Proc. Automated Software Engineering (ASE), Atlanta, Georgia, USA, 2007, pp. 204–213
[29]
Kazman, R., Klein, M., Clements, P.: ‘ATAM: method for architecture evaluation’. Tech. Rep., Carnegie-Mellon University, Software Engineering Institute, Pittsburgh, PA, 2000

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • 0
    Total Citations
  • 0
    Total Downloads
  • Downloads (Last 12 months)0
  • Downloads (Last 6 weeks)0
Reflects downloads up to 07 Mar 2025

Other Metrics

Citations

View Options

View options

Figures

Tables

Media

Share

Share

Share this Publication link

Share on social media