An important and challenging programming activity is using application programming interfaces (APIs), frameworks, toolkits and libraries. Programmers implementing new functionality need to determine which APIs to use and how to combine them. Programmers reading or modifying code need to understand how existing code that calls APIs works, what assumptions the code makes, and how to change or add to the code without breaking these assumptions. These tasks are increasingly challenging for programmers with the growing size and complexity of APIs; the Java 1.5 JDK, for example, has more than 4,000 classes and more than 30,000 methods. API designers have a challenging task in creating and maintaining these APIs, and they must make many different API design decisions that may affect the usability of APIs in unexpected ways.
This thesis presents ways to improve the usability of the APIs and programming tools programmers use by examining the decisions that API designers make and performing studies comparing design alternatives. It provides evidence that more usable APIs and tools can make programmers faster and can more closely match programmers' mental models. The studies inform recommendations and highlight usability tradeoffs that provide API designers with an empirical basis for the design of usable APIs. The studies also provide insight into how programmers work and how programming tools should be designed.
I first mapped out the space of API design decisions. I examined three API design decisions relating to object creation using constructors and factories, and method placement. Based on the results of these studies, I also designed, implemented and evaluated new API documentation and programming tools.
Cited By
Recommendations
API Document Quality for Resolving Deprecated APIs
APSEC '14: Proceedings of the 2014 21st Asia-Pacific Software Engineering Conference - Volume 02Using deprecated APIs often results in security vulnerability or performance degradation. Thus, invocations to deprecated APIs should be immediately replaced by alternative APIs. To resolve deprecated APIs, most developers rely on API documents provided ...
Tool support for crosscutting concerns of API documentation
AOSD '10: Proceedings of the 9th International Conference on Aspect-Oriented Software DevelopmentWriting detailed API (Application Programming Interface) documentation is a significant task for developing a good class library or framework. However, existing documentation tools such as Javadoc provide only limited support and thus the description ...