I'm an associate professor in software engineering at the Delft University of Technology, The Netherlands. My research interests are in software evolution and software testing.
I received my MSc (2002) and PhD (2006) from the University of Antwerp, Belgium, where I worked in the "Lab On REengineering" (LORE) under the supervision of prof. dr. Serge Demeyer. In October 2006 I joined the Delft University of Technology as a post-doc to work together with prof. dr. Arie van Deursen. Later on I became an assistant/associate professor in the Software Engineering Research Group (SERG). For the academic year 2007-2008 I was associated with the University of Antwerp as a part-time lecturer and I've taught the System Reengineering course at the University of Leicester (UK) from 2008 till 2010. In 2013 I was the recepient of an NWO Vidi career grant for my TestRoots research proposal. I am teaching basic programming, software testing and software reengineering.
Follow me @...
[06/2017] I was elected "Best CS Teacher" 2017 at the faculty of Electrical Engineering, Mathematics and Computer Science (Delft University of Technology). Thank you all (TA, co-teacher, ...) who helped me!
[03/2017] Excited to join the editorial board of the Journal of Systems and Software!
[02/2017] The paper "UAV: Warnings From Multiple Automated Static Analysis Tools At A Glance" that Moritz Beller and I co-authored with 5 2nd year BSc students in CS won the best tool demo paper award at SANER 2017.
[04/2016] Our paper "Automatic Test Case Generation: What if Test Code Quality Matters?" has been accepted for ISSTA'16.
[01/2016] I gave a keynote at the Dutch Software Engineering Symposium entitled: "Software Analytics: The Dark Side and the Test Side". See the slides here.
[12/2015] Our paper "The Impact of Test Case Summaries on Bug Fixing Performance: An Empirical Investigation." has been accepted for ICSE'16.
[05/2015] Our paper "When, How and Why Developers (Do Not) Test in Their IDEs" has been accepted for ESEC/FSE'15.
[05/2015] Our paper "The Last Line Effect" wins the best ERA track paper award at ICPC'15.
[02/2015] I've presented "Making Testing Fun" at TEDxDelft on February 27th, 2015! Watch it here
[01/2015] Our paper "How (Much) Do Developers Test?" was accepted at ICSE NIER 2015.
[12/2014] Our paper "Work Practices and Challenges in Pull-Based Development: The Integrator's Perspective" was accepted at ICSE 2015.
[07/2014] Our paper "Test Code Quality and Its Relation to Issue Handling Performance" was accepted for the IEEE Transactions on Software Engineering.
[06/2014] I was appointed associate professor.
[15/05/2013] I was awarded a 800K euro NWO Vidi grant, one of the most prestigious Dutch individual research grants, for my TestRoots proposal.
I've had / am having the privilege of (co)supervising the following PhD students, post-docs & scientific programmers:
Qianqian Zhu, working on developer testing in the TestRoots project [homepage, DBLP]
Pouria Derakhshanfar, working on test amplification in the STAMP project [homepage, DBLP]
Georgios Gousios (post-doc, 2013-2014), working on developer testing and GitHub in the TestRoots project [homepage, DBLP]. Now assistant professor at Delft University of Technology.
Annibale Panichella (post-doc, 2015-2016), working on testing in the TestRoots project [homepage, DBLP]. Now post-doc at University of Luxembourg.
Fabio Palomba (post-doc, 2017-current), working on software quality and testing in the TestRoots project [homepage, DBLP].
Joseph Hejderup (scientific programmer, 2015-2016) in the Pourquoi project [LinkedIn].
Fabio Palomba, University of Salerno (Sept-Dec 2015).
Mauricio Aniche, University of São Paulo (Jan-Apr 2016).
Dario Di Nucci, University of Salerno (May-Jul 2016 + March-May 2017).
Gemma Catolino, University of Salerno (2017).
My research interests can be situated in the larger area of software evolution and software testing.
My primary aim is to better understand what difficulties software engineers face (1) when maintaining the software and (2) when testing the software. I often use empirical research methods to get to the bottom of these difficulties. In a subsequent design science step, I try to develop tools and techniques to alleviate these difficulties.
More specifically, I have worked on reverse engineering existing software to better understand how it works and to offer people new to a software project a head start when trying to understand a software system. Something which is especially important in the light of missing or outdated requirements.
I also have a keen interest in trying to understand how making changes to a software impacts its quality. In particular, how people test for the changes and what problems they face when testing in general.
In other research, I also investigate: code clone management, repository mining, performance optimization, multi-tenancy, web API stability, agile requirements engineering (Just-In-Time Requirements Engineering).