Publication: On API usability: An analysis and an evaluation tool

Software systems are becoming increasingly complex. As code bases increase in size, there is a need to modularize the code into functional parts, which allows programmers to focus on only a small subset of the entire functionality at one time. This also means that no one programmer needs to know everything about every part of the code base. 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. This is the motivation for this project. APIs are a very useful organizational tool, but a tool is only useful if people use it. Creating an API which programmers enjoy to use but also allows the programmers to be productive while doing so is an important aspect of API design. I propose creating an automated API evaluation system, which rates APIs on a series of metrics that were created from informal (and formal) discussions from various sources. This system is unique, in that it evaluates an API quantitatively, in contrast to the usual qualitative evaluations currently employed. A first step in creating an evaluation system was developed, and a few analyses were conducted on the results. It is hoped that this project motivates the creation of a set of quantitative heuristics which can automatically rate an APIs usability.




Andre Doucette
Coconut Software


Doucette, A. 2008. On API usability: An analysis and an evaluation tool. In CMPT816 - Software Engineering, Saskatoon, Saskatchewan, Canada. University of Saskatchewan.


@techreport {195-2008-Doucette-API-Usability,
author= {Andre Doucette},
title= {On API usability: An analysis and an evaluation tool},
booktitle= {CMPT816 - Software Engineering},
year= {2008},
address= {Saskatoon, Saskatchewan, Canada},
school= {University of Saskatchewan}