I am inspired by technology and its impact on our everyday lives. We deeply rely on technology, whether it is by using phones, checking out groceries or even when driving cars. It is almost impossible not to have some interaction with technology. Software is in the core of that technology and remains one of the rare products that is still mostly human made. But humans are imperfect, which makes software imperfect too. This means that it can cause technology to fail, causing financial, reputational or even human loss. My engagement with the Software Engineering @ Lancaster (SE@L) group is to make technology reliable for everyone.
My work is driven by the industry needs for reliable and safe software. Software faults (often called bugs) are deficiencies in a work product where that work product does not work as expected. Companies try to minimise bugs impact by testing the code. Testing is, however, a very expensive activity and companies constantly seek for solutions that reduce their costs. My goal is to advance techniques and tools involved in the development process which increase developer's productivity and improve software reliability.
My main areas of research are software testing and fault prediction. In particular, I look at techniques by which developers can improve their ability to write more effective tests. In addition, I work on improving test efficency. Beyond software testing I build prediction models that have the ability to pinpoint places in source code which are likely to be buggy. I investigate a wide range of machine learning models to do this prediction.
I teach software engineering modules. I am or have been involved in teaching:
2018 - now: Lecturer in Software Engineering, Lancaster University
2017 - 2018: Lecturer in Computer Science, University of Hertfordshire
2016 - 2017: Research Fellow, Brunel University London