API Usability


Whether creating a piece of desktop software, writing applications for handheld devices, or scripting the Web, the use of application programming interfaces (APIs) in modern software development is ubiquitous. These APIs, also called software development kits (SDKs) or libraries, are often large, complex, and broad in scope, containing many hundreds or thousands of classes and interfaces. A typical developer may use only a small portion of the total functionality of an API, but learning even that subset can be a daunting task for new programmers.

API designers must consider many factors when creating an API, such as class granularity, level of abstraction, consistency with other APIs, etc. Research has also shown that designing APIs carefully for their intended audience improves usability. To date, usability studies of APIs have mostly considered the usability of the API as a whole, providing minimal guidance for future API designers. Little research has examined the usability of specific design patterns and programming paradigms as applied to API design.

We are investigating the implications of choosing particular API design patterns on programmer productivity and API learning. Our results have shown that programmers require significantly more time to construct an object with a factory than with a constructor while performing both context-sensitive and context-free tasks and that programmers strongly prefer and were more effective with APIs that did not require constructor parameters. We expect to explore similar design tradeoffs in future studies.

local

Stylos, J., Myers, B. (2007). Mapping the Space of API Design Decisions. IEEE Symposium on Visual Languages and Human-Centric Computing, VL/HCC'07. Sept 23-27, 2007, Coeur d'Alene, Idaho. pp. 50-57.

local

Ellis, B., Stylos J., Myers B. (2007). The Factory Pattern in API Design: A Usability Evaluation. International Conference on Software Engineering, Minneapolis, MN, USA, May 20-26, to appear.

local

Stylos J, Clarke S. (2007). Usability Implications of Requiring Parameters in Objects' Constructors. International Conference on Software Engineering, Minneapolis, MN, USA, May 20-26, to appear.


Copyright © 1996-2008 - Carnegie Mellon University - All Rights Reserved.