Surfnet logo

Measuring API Usability

This is a completed project.


As code bases increase in size, there is a need to modularize code into functional parts, which allows programmers to focus on only a small subset of the entire functionality at one time. One of the most common ways to achieve this goal is by providing an application programming interface, or API. The problem is that programmers can see only the documentation and the interface itself. Like all interfaces, it becomes difficult to convince others that this new interface is worth using if it is difficult to use, impossible to understand, or even if the programmers just don’t like it. In this project, we are developing a definition for API usability based on characteristics that are reported from expert programmers from their real-world experience with APIs, using methodology similar to the original techniques used to understand interface usability. We are also developing mechanisms for reporting characteristics of APIs that can be used to better understand and measure API usability. The goal is to develop an automated API evaluation system, which rates APIs on a series of automated metrics that reflect different aspects of API usability.

Our current work involves interviews with developers to determine the different aspects of APIs that are involved in overall API usability. We are assessing several factors that have been identified through other means (e.g., bug report databases), and are examining other issues such as the ways that tools in IDEs (e.g., IntelliSense) affect usability.


Images and Videos

Progression of Java Common Language API





NSERC – SurfNet