CMU-S3D-24-101
Software and Societal Systems Department
School of Computer Science, Carnegie Mellon University



CMU-S3D-24-101

User-Centered Intelligent Information
Support for Programmers

Daye Nam

May 2024

Ph.D. Thesis
Software Engineering

CMU-S3D-24-101.pdf


Keywords: Information Seeking, Program Understanding, API learning, Developer Tools, Human-Computer Interaction, Software Engineering

Software engineering is an information-intensive discipline. While building and maintaining software systems, programmers encounter a broad spectrum of questions ranging from implementation specifics to architectural concerns. However, satisfying their information needs is not easy, because the relevant information is often scattered across varying mediums in different formats. It becomes even more challenging when a programmer needs to work with unfamiliar code or libraries, without the necessary knowledge and experience to search for information effectively.

In this thesis, I aim to address the challenges programmers face in seeking information by designing, building, and evaluating intelligent information support tools using user-centered approaches. To provide user-centered intelligent support, this thesis investigates both the users (i.e., programmers), and the intelligent techniques. To motivate the need for user-centered information support, I first present an exploratory, mixed-methods empirical study on documentation page-view logs, revealing discernible documentation page visit patterns. The study shows that programmers use documentation differently, and their contextual factors correlate with their documentation usage, highlighting the need for information support tailored to diverse user contexts instead of "one size fits all" solutions. I then introduce four prototype intelligent information support tools designed to assist developers working with unfamiliar code, concepts, application domains, and APIs. Evaluations of these tools demonstrate the effectiveness of intelligent solutions, compared with traditional baseline approaches. Furthermore, user studies conducted with these prototypes illustrate the benefits of designing information support tools that account for users' current tasks and the broader context in which these tasks are situated. Motivated by these findings, this thesis finally explores the possibility of personalizing information support for programmers, by leveraging the programmers' contextual factors (e.g., familiarity with application domains) to enhance information support.

By investigating various intelligent techniques for different information-seeking scenarios, this thesis illustrates how a thorough understanding of the users not only yields valuable insights for designing more useful and usable tools but also improves the performance of intelligent techniques used in these tasks. The methodologies used for building user-centered information support tools, along with the insights gained from user studies in this thesis, will further our understanding of how developers with varying goals and backgrounds seek and use information. Taken together, the thesis will shed light on the design of future programming tools, especially those that will be built for a new programming paradigm that relies heavily on AI-based support.

207 pages

Thesis Committee:
Bogdan Vasilescu (Co-Chair)
Brad Myers (Co-Chair)
Vincent Hellendoorn (Co-Chair)
Baishakhi Ray (Columbia University)
Andrew Macvean (Google, Inc.)

James D. Herbsleb, Head, Software and Societal Systems Department
Martial Hebert, Dean, School of Computer Science


Return to: SCS Technical Report Collection
School of Computer Science

This page maintained by reports@cs.cmu.edu