Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
10.5555/2337223.2337318acmconferencesArticle/Chapter ViewAbstractPublication PagesicseConference Proceedingsconference-collections
Article

Temporal analysis of API usage concepts

Published: 02 June 2012 Publication History

Abstract

Software reuse through Application Programming Interfaces (APIs) is an integral part of software development. The functionality offered by an API is not always accessed uniformly throughout the lifetime of a client program. We propose Temporal API Usage Pattern Mining to detect API usage patterns in terms of their time of introduction into client programs. We detect concepts as distinct groups of API functionality from the change history of a client program. We locate those concepts in the client change history and detect temporal usage patterns, where a pattern contains a set of concepts that were added into the client program in a specific temporal order. We investigated the properties of temporal API usage patterns through a multiple-case study of three APIs and their use in up to 19 client software projects. Our technique was able to detect a number of valuable patterns in two out of three of the APIs investigated. Further investigation showed some patterns to be relatively consistent between clients, produced by multiple developers, and not trivially derivable from program structure or API documentation.

References

[1]
M. Acharya, T. Xie, J. Pei, and J. Xu. Mining API patterns as partial orders from source code: From usage scenarios to specifications. In Proc. 6th Joint Meeting of the European Software Engineering Conf. and ACM SIGSOFT Symp. on the Foundations of Software Eng., pages 25-34, 2010.
[2]
R. Agrawal and R. Srikant. Fast algorithms for mining association rules in large databases. In Proc. Conf. of the 20th Int. Conf. on Very Large Databases, pages 192-202, 1994.
[3]
O. Alam, B. Adams, and A. E. Hassan. A study of the time dependence of code changes. In Proc. 16th Working Conf. Reverse Eng., pages 21-30, 2009.
[4]
M. Bruch, M. Monperrus, and M. Mezini. Learning from examples to improve code completion systems. In Proc. 7th joint meeting of the European software engineering conference and the ACM SIGSOFT symposium on The foundations of software engineering, pages 213-222, 2009.
[5]
B. Dagenais and L. Hendren. Enabling static analysis for Java programs. In Proc. 23rd Conf. on Object-Oriented Prog. Systems, Languages and Applications, pages 313-328, 2008.
[6]
B. Dagenais and M. P. Robillard. Recommending adaptive changes for framework evolution. In Proc. 30th Intl. Conf. Soft. Eng., pages 481-490, 2008.
[7]
B. Dagenais and M. P. Robillard. Creating and evolving developer documentation: Understanding the decisions of open source contributors. In Proc. 18th Intl. Symp. Foundations of Soft. Eng., pages 127-136, 2010.
[8]
U. Dekel and J. D. Herbsleb. Improving API documentation usability with knowledge pushing. In Proc. 31st Intl. Conf. Soft. Eng., pages 320-330, 2009.
[9]
E. Duala-Ekoko and M. P. Robillard. Using structure-based recommendations to facilitate discoverability in APIs. In Proc. 25th European Conf. Object-Oriented Prog., pages 79-104, 2011.
[10]
R. Holmes, R. J. Walker, and G. C. Murphy. Approximate structural context matching: An approach to recommend relevant examples. IEEE Trans. Soft. Eng., 32(12):952-970, 2006.
[11]
I. Jolliffe. Principal Component Analysis. Springer Series in Statistics, 2nd edition, 2002.
[12]
Z. Li and Y. Zhou. PR-Miner: automatically extracting implicit programming rules and detecting violations in large software code. In Proc. 10th European Soft. Eng. Conf. and Intl. Symp. Foundations Soft. Eng., pages 306-315, 2005.
[13]
D. Lo, S.-C. Khoo, and C. Liu. Mining temporal rules for software maintenance. Journal of Software Maintenance and Evolution: Research and Practice, 20(4):227-247, 2008.
[14]
C. D. Manning, P. Raghavan, and H. Schütze. An Introduction to Information Retrieval. Cambridge University Press, 1st edition, April 2009.
[15]
A. Michail. Data mining library reuse patterns in user-selected applications. In Proc. 14th Intl. Conf. Automated Soft. Eng., pages 24-33, 1999.
[16]
Y. M. Mileva, V. Dallmeier, M. Burger, and A. Zeller. Mining trends of library usage. In Proc. Intl. ERCIM Workshop on Principles of Soft. Evolution and Software Evolution Workshop, pages 57-62, 2009.
[17]
Y. M. Mileva, V. Dallmeier, and A. Zeller. Mining API popularity. In Proc. Conf. of Testing: Academic & Industrial Conf. Practice and Research Techniques, pages 173-180, 2010.
[18]
M. P. Robillard and R. DeLine. A field study of API learning obstacles. Empirical Software Engineering, 2011.
[19]
G. Uddin, B. Dagenais, and M. P. Robillard. Analyzing temporal API usage patterns. In Proc. 26th IEEE/ACM Intl. Conf. on Automated Software Engineering, page 4, http://www.cs.mcgill.ca/~martin/ papers/ase2011.pdf, 2011. To appear.
[20]
R. K. Yin. Case study Research: Design and Methods. Sage, 4th edition, 2009.
[21]
A. T. Ying, G. C. Murphy, R. Ng, and M. C. Chu-Carroll. Predicting source code changes by mining change history. IEEE Trans. Soft. Eng., 30(9):574-586, 2004.
[22]
H. Zhong, T. Xie, L. Zhang, J. Pei, and H. Mei. MAPO: Mining and recommending API usage patterns. In Proc. 23rd European Conf. Object-Oriented Prog., pages 318-343, 2009.
[23]
T. Zimmermann and P. Weißgerber. Preprocessing CVS data for fine-grained analysis. In Proc. 1st Intl. Workshop on Mining Software Repositories, pages 2-6, 2004.
[24]
T. Zimmermann, P. Weißgerber, S. Diehl, and A. Zeller. Mining version histories to guide software changes. IEEE Transactions on Software Engineering, 31(6):429-445, 2005.

Cited By

View all
  • (2020)Repairing deep neural networksProceedings of the ACM/IEEE 42nd International Conference on Software Engineering10.1145/3377811.3380378(1135-1146)Online publication date: 27-Jun-2020
  • (2019)Generating commit messages from diffs using pointer-generator networkProceedings of the 16th International Conference on Mining Software Repositories10.1109/MSR.2019.00056(299-309)Online publication date: 26-May-2019
  • (2019)A vision for helping developers use APIs by leveraging temporal patternsProceedings of the 7th International Workshop on Formal Methods in Software Engineering10.1109/FormaliSE.2019.00019(95-98)Online publication date: 27-May-2019
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Conferences
ICSE '12: Proceedings of the 34th International Conference on Software Engineering
June 2012
1657 pages
ISBN:9781467310673

Sponsors

Publisher

IEEE Press

Publication History

Published: 02 June 2012

Check for updates

Qualifiers

  • Article

Conference

ICSE '12
Sponsor:

Acceptance Rates

Overall Acceptance Rate 276 of 1,856 submissions, 15%

Upcoming Conference

ICSE 2025

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)0
  • Downloads (Last 6 weeks)0
Reflects downloads up to 17 Feb 2025

Other Metrics

Citations

Cited By

View all
  • (2020)Repairing deep neural networksProceedings of the ACM/IEEE 42nd International Conference on Software Engineering10.1145/3377811.3380378(1135-1146)Online publication date: 27-Jun-2020
  • (2019)Generating commit messages from diffs using pointer-generator networkProceedings of the 16th International Conference on Mining Software Repositories10.1109/MSR.2019.00056(299-309)Online publication date: 26-May-2019
  • (2019)A vision for helping developers use APIs by leveraging temporal patternsProceedings of the 7th International Workshop on Formal Methods in Software Engineering10.1109/FormaliSE.2019.00019(95-98)Online publication date: 27-May-2019
  • (2018)API library-based identification and documentation of usage patternsInternational Journal of Computer Applications in Technology10.1504/IJCAT.2018.09406558:1(63-79)Online publication date: 1-Jan-2018
  • (2018)Towards the automated recovery of complex temporal API-usage patternsProceedings of the Genetic and Evolutionary Computation Conference10.1145/3205455.3205622(1435-1442)Online publication date: 2-Jul-2018
  • (2018)Identifying software components from object-oriented APIs based on dynamic analysisProceedings of the 26th Conference on Program Comprehension10.1145/3196321.3196349(189-199)Online publication date: 28-May-2018
  • (2017)Restructuring of Object-Oriented Software Through Cohesion Improvement Using Frequent Usage PatternsACM SIGSOFT Software Engineering Notes10.1145/3127360.312737042:3(1-8)Online publication date: 5-Sep-2017
  • (2017)Mining change histories for unknown systematic editsProceedings of the 14th International Conference on Mining Software Repositories10.1109/MSR.2017.12(248-256)Online publication date: 20-May-2017
  • (2017)Mining complex temporal API usage patternsProceedings of the 39th International Conference on Software Engineering Companion10.1109/ICSE-C.2017.147(274-276)Online publication date: 20-May-2017
  • (2016)Parameter-free probabilistic API mining across GitHubProceedings of the 2016 24th ACM SIGSOFT International Symposium on Foundations of Software Engineering10.1145/2950290.2950319(254-265)Online publication date: 1-Nov-2016
  • Show More Cited By

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Figures

Tables

Media

Share

Share

Share this Publication link

Share on social media