Application programming interfaces (APIs), including libraries, frameworks, toolkits, software development kits and web services, are used throughout most programmers' code. Since programming is a human activity, the usability of the APIs has a big impact on the effectiveness of the programmer and the resulting code: poor usability of APIs has been shown to result in bugs and security holes in code, as well as to reduce the programmer's productivity. Further, today's programmers must be learning new APIs all the time, as they switch projects or start using new packages or web services. A longstanding, but often overlooked, complaint about the usability of APIs is in the documentation. To be effective, API documentation must inform programmers, who have varying levels of expertise, how to correctly and effectively use the API. This project will create and empirically evaluate a system that automatically estimates the knowledge needs to use an API, and the needs and learning style of the user, to create personalized documentation focused on what the user needs to know. The project has the potential to significantly improve API usability and API learning, which could improve programmer effectiveness and productivity, and reduce bugs and security flaws, which would have a significant impact on all computerized systems.

This project involves fundamental research to identify and represent the knowledge that a programmer has, and programmers' learning styles, as it relates to APIs, based on user-centered studies and computational techniques including mining software repositories and natural language processing. From these sources, the system will identify how to create personalized documentation, which presents the right information in an appropriate format, without requiring the documentation writer to do much more work. The research will also identify new ways to support process-oriented learning and tinkering so they are both more effective. The research includes validating all of these for effectiveness through appropriate user studies using real and large APIs in collaboration with the research team's industrial partners. The research also aims to support diverse learning styles that are often the styles favored by underrepresented populations that tend to be unsupported in software.

This award reflects NSF's statutory mission and has been deemed worthy of support through evaluation using the Foundation's intellectual merit and broader impacts review criteria.

Project Start
Project End
Budget Start
2020-07-01
Budget End
2023-06-30
Support Year
Fiscal Year
2020
Total Cost
$500,000
Indirect Cost
Name
Carnegie-Mellon University
Department
Type
DUNS #
City
Pittsburgh
State
PA
Country
United States
Zip Code
15213