Developers today increasingly incorporate curated web services, accessed over a network via well-defined and published interfaces (APIs), as modules in their applications. Public versions of these web APIs emerge and change frequently, making it critical for software development, testing, and maintenance personnel to be able to estimate the workload associated with “porting” (or migrating) an application to a new API or API version. Unfortunately, today there is no simple automated mechanism for estimating and reasoning about the application porting effort that will be necessary when the web APIs that an application uses change.
To address this limitation, we describe an automated methodology for quantifying the porting effort associated with the use of web APIs. Our approach defines a simple language (based on Python) with which API developers specify the semantics of API operations, a tool set that consumes and extracts semantic similarity of API operations from anno- tations expressed in this language, and a metric that facilitates ranking of porting effort for API operation pairs. We evaluate our approach using both randomly generated and real-world APIs and show that our metric can correctly categorize the relative difficulty that developers associate with porting an application from one API to another.