Software maintenance can be quite expensive in practice. Researchers actually estimate that 60% of the costs of a software is dedicated to its evolution, e.g., enhancements and bug fixes.

Can we help developers in maintain their software? To that aim, I focus my research on three topics:

  • Code quality: can we help developers in writing more maintainable and easy-to-evolve code? can we help developers in detecting problematic (i.e., hard to read, more prone to changes) pieces of code?
  • Software testing: can we help developers in testing their software? can we help developers in maintaining the large automated test suites they write?
  • Runtime monitoring: can we help developers in monitoring their systems?

TU Delft MSc students: Are you looking for thesis ideas on these topics? Message me.

Code quality

Lots of research have been focusing on high-level quality measurements, such as coupling and cohesion in object-oriented systems. My research focuses on understanding and detecting what constitutes hard-to-maintain pieces of code in specific architectures, such as web and mobile applications. A key characteristic of my research is that it takes the context of the system as a fundamental part of the model.

Key publications:

Software testing

In modern software development, testing is code. My research focuses on helping developers in understanding what are the characteristics of a maintainable test code suite.

Key publications:

Runtime monitoring

Testing might not be enough in large-scale complex systems. Thus, monitoring is fundamental to their maintenance. My research focuses on better understanding and providing tools for modern software monitoring. This research is done together with Adyen B.V., a large-scale payment company that provides services for more than 4,500 companies all around the world.

Key publications: