Research
The word cloud was generated from my PhD thesis and illustrates my main interests in software engineering research: I build development tools and recommender systems that support the daily workflow of programmers. I conduct empirical studies to learn about the information needs of developers, mostly by analyzing in-IDE interactions of developers. I create tools by extracting facts from source code through static analyses and by applying machine learning to find patterns in the big data found in public repositories.
Research Directions
I am currently following four main lines of research. Please do not hestitate to get in contact with me if you are interested in more details or if you want to collaborate with me.
-
Understanding Developers and Their Information Needs
To empower developers, it is necessary to understand how they work and the problems they face. To this end, I started the KaVE Project, in which we built the required infrastructure to monitor developer interactions in field studies. The project received substantial funding from the Software Campus and included an intensive collaboration with an industry partner. The original founding period ended, but I keep working on the project. I strongly believe that the collected data is invaluable to empirical research like the MSR Mining Challenge.
-
Awareness in Collaborative Software Engineering
Software developers do not work in isolation. Programming, especially in larger projects, is a highly collaborative endeavor. Several points for conflicts exist that can slow the team down, for example, merge conflicts, missed updates, or integration issues. We are investigating ways to improve the overall team performance through better, earlier, and personalized notifactions about relevant development events.
I am closely collaborating with Carmine Vassallo on this project.
-
Briding the Gap Between Build Servers and the IDE
Continuous integration and delivery are the pillars of modern software development processes. One of their major entrance barriers is that these builds break frequently and the main priority becomes deriving a fix. Several tools exist that support this activity, unfortunately, some failures are environment dependent and cannot be reproduced locally. We are investigating ways to reduce this gap between build server and local development environment. Better tool support should make it easier to derive a fix, which is particularly important in distributed builds, in which the debugging process is even more complex.
I am closely collaborating with Carmine Vassallo on this project.
-
Improving (Intelligent) Code Completion
I have created an intelligent method completion system for Java/Eclipse in my Master’s thesis and kept maintaining it since. I migrated the system to Visual Studio/C# and focused on deriving more realistic evaluation strategies of such systems. Seeing the recent rise of interest in approaches that treat source code as natural language, I am still strongly convinced that it is more promising to leverage the inherent structure of source code and the type system. Having established a general and realistic evaluation pipeline, I am now trying to further improve the performance of recommender systems for software engineering.
I am closely collaborating with Adelina Ciurumelea on this project.
Former Projects
-
Eclipse Code Recommenders
In my first year as a PhD student, I was committer of the Eclipse Code Recommenders Project. The focus of this project is to provide an intelligent code completion for Eclipse/Java. I learned a lot about build systems, clean code, and had some enlightening pair programming experiences at that time. I left the project as a committer when my research focus changed to other programming languages.
-
Matrix Factorization
I have explored new machine learning approaches jointly with Ervina Cergani to improve scalability of recommender engines through improved clustering techniques like matrix factorization. Ervina presented a novel approach for relation detection of categories in her master’s theses and we are currently analyzing if the approach can be adapted for RSSEs.
-
Snippet Mining
In a cross-workgroup cooperation with Prof. Ulf Brefeld and Ervina Cergani, we are exploring a new approach to create a snippet recommender. Our metaphor is to treat source code like a stream of statements and adapt mining approaches that work on event streams. A major advance compared to our former approaches is that we consider order relations in the mined snippets.