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), toolkits, 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. We are also developing new tools and documentation techniques that help when it is not possible to revise the API itself.

Thesis

Jeff Stylos's PhD dissertation includes much of this research that happened between 2006 and 2010.

local

Jeffrey Stylos. Making APIs More Usable with Improved API Designs, Documentation and Tools. PhD dissertation, May, 2009. Carnegie Mellon Computer Science Department Technical Report No. CMU-CS-09-130.

Studies of APIs

local

John M. Daughtry, Jeffrey Stylos, Umer Farooq, Brad A. Myers (2009). API Usability: CHI'2009 Special Interest Group Meeting, Extended Abstracts, CHI'2009, Boston, MA, April 4-9, 2009. pp. 2771-2774.

local

Stylos, J., Myers, B. (2008). The Implications of Method Placement on API Learnability. Sixteenth ACM SIGSOFT Symposium on Foundations of Software Engineering, FSE 2008. Atlanta, GA, November 9-14, 2008. pp. 105-112.

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, pp. 302-312.

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, pp. 529-539.

Tools to help with APIs

(Note that each of these tools have their own pages: Graphite, Calcite, Jadeite, Apatite, Mica, Euklas).

local movie

Cyrus Omar, YoungSeok Yoon, Thomas D. LaToza, Brad A. Myers, Active Code Completion. ICSE'2012: 34nd International Conference on Software Engineering, Zurich, Switzerland, 2-9 June 2012. pp. 859-869.

ieee
local

Mathew Mooty, Andrew Faulring, Jeffrey Stylos and Brad Myers. Calcite: Completing Code Completion for Constructors using Crowds, 2010 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC'10), Leganes-Madrid, Spain, 21-25 September 2010. pp. 15-22.

ieee
local

Daniel S. Eisenberg, Jeffrey Stylos, Andrew Faulring, Brad A. Myers. Using Association Metrics to Help Users Navigate API Documentation, 2010 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC'10), Leganes-Madrid, Spain, 21-25 September 2010. pp. 23-30.

local
movie

Daniel S. Eisenberg, Jeffrey Stylos, and Brad A. Myers, Apatite: A New Interface for Exploring APIs, Proceedings CHI'2010: Human Factors in Computing Systems. Atlanta, GA, April 10-15, 2010. pp. 1331-1334.

ieee
local

Jeffrey Stylos, Andrew Faulring, Zizhuang Yang, Brad A. Myers. Improving API Documentation Using API Usage Information. 2009 IEEE Symposium on Visual Languages and Human-Centric Computing, VL/HCC'09, Sept. 20-24, 2009. Corvallis, Oregon. pp. 119-126.

local

Jeffrey Stylos, Brad A. Myers, Zizhuang Yang. (2009) Jadeite: Improving API Documentation Using Usage Information. Extended Abstracts, CHI'2009, (Work in Progress Poster). Boston, MA, April 4-9, 2009. pp. 4429-4434.

local

Stylos, J. and Myers, B. A. (2006) Mica: A Web-Search Tool for Finding API Components and Examples. IEEE Symposium on Visual Languages and Human-Centric Computing, Brighton, UK, September 5-7, 195-202.

Usability of SAP's APIs

As a subproject, we are collaborating with SAP to improve the usability of various of their APIs, including their Enterprise Service Oriented Architecture (eSOA) APIs. SAP's eSOA usability effort faces interesting and novel challenges that may yield general solutions to other SOA API design efforts. By examining the APIs and tools that are part of the eSOA life cycle, we have begun to identify pain points, barriers and means of improvement relevant to eSOA APIs and other domains as well.

Here is a nice letter from 2009 from Dr. Klaus Weber, Executive Vice President, Business Suite Extensions, SAP AG, about our work with SAP (html).

local

Andrew Faulring, Brad A. Myers,Yaad Oren, Keren Rotenberg. A Case Study of Using HCI Methods to Improve Tools for Programmers. Cooperative and Human Aspects of Software Engineering (CHASE), An ICSE 2012 Workshop. Zurich, Switzerland, June 2, 2012. pp. 37-39.

igi

Brad A. Myers, Sae Young Jeong, Yingyu Xie, Jack Beaton, Jeff Stylos, Ralf Ehret, Jan Karstens, Arkin Efeoglu, Daniela K. Busse. Studying the Documentation of an API for Enterprise Service-Oriented Architecture. The Journal of Organizational and End User Computing, JOEUC, a publication of the Information Resources Management Association, IGI Publishing. Special Issue on End-User Development. vol. 22, no. 1, Jan-Mar, 2010. pp. 23-51. DOI: 10.4018/joeuc.2010101903.

local

Jeong, S., Xie, Y., Beaton, J., Myers, B., Stylos, J., Ehret, R., Karstens, J., Efeoglu, A., Busse, D. (2009). Improving Documentation for eSOA APIs Through User Studies. Second International Symposium on End User Development (IS-EUD'2009), March 2-4, 2009. Siegen, Germany. Springer-Verlag, LNCS 5435, pp. 86-105.

local

Stylos, J., Graf, B., Busse, D., Ziegler, C., Ehret, R., Karstens, J. (2008). A Case Study of API Redesign for Improved Usability. IEEE Symposium on Visual Languages and Human-Centric Computing, VL/HCC'08. Sept 15-19, 2008, Herrsching am Ammersee, German. pp. 189-192.

local

Beaton, J., Jeong, S., Xie, Y., Stylos, J., Myers, B. (2008). Usability challenges for enterprise service-oriented architecture APIs. IEEE Symposium on Visual Languages and Human-Centric Computing, VL/HCC'08. Sept 15-19, 2008, Herrsching am Ammersee, German. pp. 193-196.

local

Beaton, J., Myers, B., Stylos, J., Jeong, S., Xie, Y. (2008). Usability Evaluation for Enterprise SOA APIs. 2nd International Workshop on Systems Development in SOA Environments, SDSOA 2008, Co-located with ICSE 2008, Leipzig, Germany. May 12, 2008. pp. 29-34.


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