Affiliation:
1. Indian Institute of Science
Abstract
Today's programming languages are supported by powerful third-party APIs. For a given application domain, it is common to have many competing APIs that provide similar functionality. Programmer productivity therefore depends heavily on the programmer's ability to discover suitable APIs both during an initial coding phase, as well as during software maintenance.
The aim of this work is to support the discovery and migration of math APIs. Math APIs are at the heart of many application domains ranging from machine learning to scientific computations. Our approach, called M
ath
F
inder
, combines executable specifications of mathematical computations with unit tests (operational specifications) of API methods. Given a math expression, M
ath
F
inder
synthesizes pseudo-code comprised of API methods to compute the expression by mining unit tests of the API methods. We present a sequential version of our unit test mining algorithm and also design a more scalable data-parallel version.
We perform extensive evaluation of M
ath
F
inder
(1) for
API discovery
, where math algorithms are to be implemented from scratch and (2) for
API migration
, where client programs utilizing a math API are to be migrated to
another
API. We evaluated the precision and recall of M
ath
F
inder
on a diverse collection of math expressions, culled from algorithms used in a wide range of application areas such as control systems and structural dynamics. In a user study to evaluate the productivity gains obtained by using M
ath
F
inder
for API discovery, the programmers who used M
ath
F
inder
finished their programming tasks twice as fast as their counterparts who used the usual techniques like web and code search, IDE code completion, and manual inspection of library documentation. For the problem of API migration, as a case study, we used M
ath
F
inder
to migrate Weka, a popular machine learning library. Overall, our evaluation shows that M
ath
F
inder
is easy to use, provides highly precise results across several math APIs and application domains even with a small number of unit tests per method, and scales to large collections of unit tests.
Funder
Indian Institute of Science
Publisher
Association for Computing Machinery (ACM)
Reference61 articles.
1. P. J. Acklam. 2003. MATLAB array manipulation tips and tricks. http://home.online.no/∼pjacklam/matlab/doc/mtt/doc/mtt.pdf. (Oct. 2003). P. J. Acklam. 2003. MATLAB array manipulation tips and tricks. http://home.online.no/∼pjacklam/matlab/doc/mtt/doc/mtt.pdf. (Oct. 2003).
2. Refactoring support for class library migration
3. Swing to SWT and back: Patterns for API migration by wrapping
Cited by
5 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献
1. Mining Software Information Sites to Recommend Cross-Language Analogical Libraries;2022 IEEE International Conference on Software Analysis, Evolution and Reengineering (SANER);2022-03
2. Mining Likely Analogical APIs Across Third-Party Libraries via Large-Scale Unsupervised API Semantics Embedding;IEEE Transactions on Software Engineering;2021-03-01
3. A Multi-Metric Ranking Approach for Library Migration Recommendations;2021 IEEE International Conference on Software Analysis, Evolution and Reengineering (SANER);2021-03
4. Monotone Precision and Recall Measures for Comparing Executions and Specifications of Dynamic Systems;ACM Transactions on Software Engineering and Methodology;2020-07-31
5. Discovering discrepancies in numerical libraries;Proceedings of the 29th ACM SIGSOFT International Symposium on Software Testing and Analysis;2020-07-13