Current research topics:
- Understanding software engineers’ information needs
- Software evolution and change impact analysis
- Automating software engineering tasks
- Improving spreadsheet understanding and analysis
Also check our web-sites on current and past research projects.
Understanding software engineers’ information needs
In order to provide software engineers with adequate techniques and tools, we need to deepen our knowledge of their information needs. In particular the information needs to understand the changes done by software engineers and their impact within and across software systems is an open issue. Recent studies provide first results, however we argue that a much deeper understanding of the needs is necessary. For this, we are interested in interviewing and observing software engineers from industrial and open source software projects to come up with a well defined set of their information needs.
Software evolution and change impact analysis
The goal of this research is to improve existing change extraction techniques and study the various impacts of the changes within and across systems. Regarding the changes, we focus on source code and configuration changes and consider different programming paradigms and domains of software systems, such as spreadsheets, object-oriented, component-based, and service-oriented systems. Using this information, we investigate sophisticated techniques and tools that allow software engineers to monitor changes and assess their impacts, ideally before the changes are committed to the code repository.
Automating software engineering tasks
In this research, we plan to exploit the repetitiveness in source code and moreover code changes and investigate advanced statistical models trained with machine learning (i.e., traditional and deep learning methods) to develop new methods, techniques, and tools to automate various software engineering activities. Regarding the activities, we currently focus on: 1) automating the refactoring of programs to improve design and code quality; 2) auto-repairing bugs in programs, build and configuration files, and other artifacts that implement a software system; 3) automating the reconfiguration of complex software systems to react to changes in the environment; and 4) assisting in implementing change requests up to automating (large) parts of the implementation.
Improving spreadsheet understanding and analysis
Spreadsheets are widely used by end-user programmers. They often represent important/critical business assets. The goal of this research is to professionalize spreadsheet engineering by investigating means to ease the understanding, use, and evolution of spreadsheets. We do this by investigating various heuristics to abstract and visualize the mass of diverse information about spreadsheets and their usage.