Application programming interfaces (APIs) inform application developers as to the functionality provided by a library and how to interact with it. APIs are a double-edged sword: if they do not permit the needed functionality to be accessed and adapted as needed, they are obstructing; if they permit all things to all people, they are complex, leading application developers to have difficulty understanding how to use them correctly. Thus, the developers of APIs have a delicate balance to strike between providing configurable functionality and simple interfaces. Inevitably, the wrong balance is sometimes chosen, as the actual usage is different from the expected usage; APIs need to evolve, or to be re-documented to account for this disparity. In this paper we propose a simple technique for quantitatively determining how existing APIs are used, and demonstrate its application to Eclipse. This technique would enable application developers to more easily understand how others have used the ...
Reid Holmes, Robert J. Walker