Academic
Publications
Developers ask reachability questions

Developers ask reachability questions,10.1145/1806799.1806829,Thomas D. LaToza,Brad A. Myers

Developers ask reachability questions   (Citations: 6)
BibTex | RIS | RefWorks Download
A reachability question is a search across feasible paths through a program for target statements matching search criteria. In three separate studies, we found that reachability questions are common and often time consuming to answer. In the first study, we observed 13 developers in the lab and found that half of the bugs developers inserted were associated with reachability questions. In the second study, 460 professional software developers reported asking questions that may be answered using reachability questions more than 9 times a day, and 82% rated one or more as at least somewhat hard to answer. In the third study, we observed 17 developers in the field and found that 9 of the 10 longest activities were associated with reachability questions. These findings suggest that answering reachability questions is an important source of difficulty understanding large, complex codebases.
Cumulative Annual
View Publication
The following links allow you to view full publications. These links are maintained by other sources not affiliated with Microsoft Academic Search.
    • ...Programmers rely on information about how functions in source code interact in order to understand the concepts implemented in those functions [5]...

    Collin McMillanet al. Finding relevant functions in millions of lines of code

    • ...Our technique is grounded in the idea that to reuse code, developers depend on information about how software is interconnected [15, 21], and how software uses external components such as Application Programming Interfaces (APIs) [19]...

    Collin McMillanet al. Searching, selecting, and synthesizing source code

    • ...A central part of developers’ work is answering questions about code [19][15][24]...
    • ...We conducted a survey of software developers at Microsoft as part of a larger study investigating reachability questions [19]...

    Thomas D. LaTozaet al. Hard-to-answer questions about code

    • ...Our studies indicate that many of the questions developers ask or should have asked are reachability questions containing both a specification of paths to search and search criteria describing statements for which to search [10]...
    • ...At the highest level, developers ask factual questions about design decisions, such as, which design should I choose [9]? Developers often decompose these questions into searches for statements describing the code’s behavior [10]...
    • ...We [10] and others [6][11] have looked at the questions developers ask during these activities...
    • ...An interesting finding is that developers spend much of these activities searching for statements across paths [10]...
    • ...Examples of debugging activities [10] suggest both that developers usually have search criteria in mind for the statements they are seeking, and that developers are trying to search over control flow paths from a particular starting location...
    • ...Before committing the time to implement a change, developers try to determine if it will work [6][9][10][11]...
    • ...For example, in our lab study [10], developers tried to determine if they could remove a call to a method...
    • ...In a lab study of coding tasks [10], half of the bugs were related to searches over paths developers attempted or should have attempted...
    • ...In observations of developers at work on their own tasks [10], 9 out of 10 of the longest debugging and implication investigations involved answering a question related to a single search that took tens of minutes to answer...

    Thomas D. LaTozaet al. Searching across paths

    • ...For example, we found that developers often debug or investigate the implications of changes by searching for target statements across control flow paths through a program [10]...
    • ...Developers engage in activities such as reproducing bugs, debugging, proposing changes, investigating the implications of changes, reusing code, implementing changes, compiling, and testing [12][10]...
    • ...In one of our lab studies, developers tried to determine if they could safely remove a call to a method [10]...
    • ...Before implementing a change, developers often wonder about its implications or what it might cause to break [16][9][10]...

    Thomas D. LaTozaet al. On the importance of understanding the strategies that developers use

Sort by: