Degree-of-knowledge: Modeling a developer's knowledge of code
ACM Transactions on Software Engineering and Methodology (TOSEM), 2014•dl.acm.org
As a software system evolves, the system's codebase constantly changes, making it difficult
for developers to answer such questions as who is knowledgeable about particular parts of
the code or who needs to know about changes made. In this article, we show that an
externalized model of a developer's individual knowledge of code can make it easier for
developers to answer such questions. We introduce a degree-of-knowledge model that
computes automatically, for each source-code element in a codebase, a real value that …
for developers to answer such questions as who is knowledgeable about particular parts of
the code or who needs to know about changes made. In this article, we show that an
externalized model of a developer's individual knowledge of code can make it easier for
developers to answer such questions. We introduce a degree-of-knowledge model that
computes automatically, for each source-code element in a codebase, a real value that …
As a software system evolves, the system's codebase constantly changes, making it difficult for developers to answer such questions as who is knowledgeable about particular parts of the code or who needs to know about changes made. In this article, we show that an externalized model of a developer's individual knowledge of code can make it easier for developers to answer such questions. We introduce a degree-of-knowledge model that computes automatically, for each source-code element in a codebase, a real value that represents a developer's knowledge of that element based on a developer's authorship and interaction data. We present evidence that shows that both authorship and interaction data of the code are important in characterizing a developer's knowledge of code. We report on the usage of our model in case studies on expert finding, knowledge transfer, and identifying changes of interest. We show that our model improves upon an existing expertise-finding approach and can accurately identify changes for which a developer should likely be aware. We discuss how our model may provide a starting point for knowledge transfer but that more refinement is needed. Finally, we discuss the robustness of the model across multiple development sites.
ACM Digital Library