
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 news tools and documentation techniques that help with it is not possible to revise the API itself.
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.
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.
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.
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.
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.
(Note that each of these tools have their own pages: Calcite, Jadeite, Apatite, Mica).
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.
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.
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.
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.
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.
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.
Here is a nice letter from Dr. Klaus Weber, Executive Vice President, Business Suite Extensions, SAP AG, about our work with SAP (html).
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.
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.
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.
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.
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.