A few months ago, I wrote an introductory post about reactive programming and shortly discussed whether it can be seen as THE new programming paradigm. I wrote my master thesis about reactive programming and – more specifically – about debugging tool support for it. Unfortunately, there is currently no tool support for it at all. In my thesis, I developed a first system which provides a usable debugging tool for reactive programming. The system is further developed at TU Darmstadt and will probably be released at a subsequent date. If you follow my supervisor Guido Salvaneschi and especially his GitHub account, you should witness the release. If you are already interested, you can download my written thesis at the end of this article. But first of all, have a look at the official abstract of my thesis:
Over the last few years, reactive programming has gained more and more attention in academia and industry. Compared to traditional techniques, reactive programming has proved to be more effective to implement systems that are easier to understand and more maintainable. Unfortunately, there is no proper development tool support for the time being – especially in relation to the debugging process. The aim of this thesis is to enhance the debugging process of reactive systems.
We present a specialised debugger for reactive programming. The debugger is based on the dependency graph among reactive values and is inspired by advanced debugging tools, such as omniscient debuggers. In the system presented in this thesis, the dependency graph of a reactive software cannot only be visualised at a specific point in time, as the developer can navigate freely back and forth in time. A domain-specific query language provides direct access to the graph history, so that one can jump to interesting points in time. This language also helps in implementing reactive-programming-specific breakpoints. These are breakpoints, which interrupt the execution when the query provided by the developer matches.
A first evaluation based on various code examples shows that the developed debugger helps understanding reactive systems and finding bugs quickly. Especially, the solution presented in this thesis outperforms traditional debuggers as it directly supports reactive language abstractions.
Download the thesis: Tool Support for Reactive Programming (907 Downloads)