A personalized user experience requires a reliable user models. A primary user role for us is the software developer – programmer. The methods for programmer model acquisition presented here, analyze the development environment usage logs and software artifacts produced in the development process. Based on that, methods estimate programmer’s level of expertise, satisfaction and other contexts (either long-term or short-term). According to this information, search and recommendation can be adjusted. Moreover, characteristics of the source code (such as quality), created by the individual user can be estimated (for example, according to user expertise).
Considering expertise, one of the most important programmer characteristics is the degree of knowledge of individual software API’s and libraries. For this, three of our methods are devoted. One analyzes source codes that programmer created or worked with and scans for library uses within them. Another method then uses existing facts to infer other information about programmer expertise. Another method aims to infer programmer’s karma (expertise) from his activity within IDE.
While expertise of the programmer is a rather long-term characteristic, short-termed information on user’s state and context may also be exploitable. Using methods that estimate programmer’s attention towards certain code fragments, goals, preferences or even emotional state caused by the surrounding environment, we may again estimate the quality of programmer’s work. We also devised method that achieves this by tracking typical behavioral patterns of the user (especially those that usually lead to mistakes and bugs).
Directly exploiting the created user models, a peer assignment for code reviews is handled by one of our methods. Several methods were also devoted to visualization of the user activity and gained metadata with the underlying project artifacts.