By Zachary M. Saul, Vladimir Filkov, Premkumar Devanbu, and Christian Bird

Published in ESEC-FSE ’07: Proceedings of the the Sixth joint meeting of the European Software Engineering Conference and the ACM SIGSOFT Symposium on The Foundations of Software Engineering

We improve on previous recommender systems by taking advantage of the layered structure of software. We use a random-walk approach, mimicking the more focused behavior of a developer, who browses the caller-callee links in the callgraph of a large program, seeking routines that are likely to be related to a function of interest. Inspired by Kleinberg’s work, we approximate the steady-state of an infinite random walk on a subset of a callgraph in order to rank the functions by their steady-state probabilities. Surprisingly, this purely structural approach works quite well. Our approach, like that of Robillard’s “Suade” algorithm, and earlier data mining approaches relies solely on the always available current state of the code, rather than other sources such as comments, documentation or revision information. Using the Apache API documentation as an oracle, we perform a quantitative evaluation of our method, finding that our algorithm dramatically improves upon Suade in this setting. We also find that the performance of traditional data mining approaches is complementary to ours; this leads naturally to an evidence-based combination of the two, which shows excellent performance on this task.


Download

@INPROCEEDINGS{saul2007rrw,
  author = {Zachary M. Saul and Vladimir Filkov and Premkumar Devanbu and Christian
	Bird},
  title = {{Recommending Random Walks} },
  booktitle = {ESEC-FSE '07: Proceedings of the the Sixth joint meeting of the European
	Software Engineering Conference and the ACM SIGSOFT Symposium on
	The Foundations of Software Engineering},
  year = {2007},
  publisher = {ACM},
  location = {Dubrovnik, Croatia}
}

Recommending Random Walks (FSE 07)